mono_inst_set_src_registers (struct MonoInst * ins, int * regs)
{
  int D.28818;
  int D.28819;
  int D.28820;

  D.28818 = *regs;
  ins->sreg1 = D.28818;
  D.28819 = MEM[(int *)regs + 4B];
  ins->sreg2 = D.28819;
  D.28820 = MEM[(int *)regs + 8B];
  ins->sreg3 = D.28820;
}


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

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


alloc_ireg (struct MonoCompile * cfg)
{
  guint32 D.28823;
  unsigned int D.28824;
  unsigned int D.28825;
  unsigned int D.28826;

  D.28824 = cfg->next_vreg;
  D.28825 = D.28824;
  D.28826 = D.28825 + 1;
  cfg->next_vreg = D.28826;
  D.28823 = D.28825;
  return D.28823;
}


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

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


alloc_freg (struct MonoCompile * cfg)
{
  int D.28830;
  guint32 D.28833;
  unsigned int D.28834;
  unsigned int D.28835;
  unsigned int D.28836;

  D.28830 = mono_arch_is_soft_float ();
  if (D.28830 != 0) goto <D.28831>; else goto <D.28832>;
  <D.28831>:
  D.28833 = alloc_lreg (cfg);
  return D.28833;
  <D.28832>:
  D.28834 = cfg->next_vreg;
  D.28835 = D.28834;
  D.28836 = D.28835 + 1;
  cfg->next_vreg = D.28836;
  D.28833 = D.28835;
  return D.28833;
}


mono_arch_is_soft_float ()
{
  gboolean D.28838;

  D.28838 = 0;
  return D.28838;
}


alloc_lreg (struct MonoCompile * cfg)
{
  guint32 D.28840;
  unsigned int D.28841;
  unsigned int D.28842;
  unsigned int D.28843;

  D.28841 = cfg->next_vreg;
  D.28842 = D.28841;
  D.28843 = D.28842 + 1;
  cfg->next_vreg = D.28843;
  D.28840 = D.28842;
  return D.28840;
}


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

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


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

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


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

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


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

  switch (stack_type) <default: <D.24490>, case 1: <D.24483>, case 2: <D.24488>, case 3: <D.24484>, case 4: <D.24487>, case 5: <D.24485>, case 6: <D.24486>, case 7: <D.24489>>
  <D.24483>:
  <D.24484>:
  D.28851 = alloc_ireg (cfg);
  return D.28851;
  <D.24485>:
  D.28851 = alloc_ireg_mp (cfg);
  return D.28851;
  <D.24486>:
  D.28851 = alloc_ireg_ref (cfg);
  return D.28851;
  <D.24487>:
  D.28851 = alloc_freg (cfg);
  return D.28851;
  <D.24488>:
  D.28851 = alloc_lreg (cfg);
  return D.28851;
  <D.24489>:
  D.28851 = alloc_ireg (cfg);
  return D.28851;
  <D.24490>:
  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.28851 = 4294967295;
  return D.28851;
}


alloc_ireg_mp (struct MonoCompile * cfg)
{
  unsigned int D.28853;
  unsigned char D.28854;
  unsigned char D.28855;
  guint32 D.28858;
  int vreg;

  D.28853 = alloc_ireg (cfg);
  vreg = (int) D.28853;
  D.28854 = BIT_FIELD_REF <*cfg, 8, 5632>;
  D.28855 = D.28854 & 128;
  if (D.28855 != 0) goto <D.28856>; else goto <D.28857>;
  <D.28856>:
  mono_mark_vreg_as_mp (cfg, vreg);
  <D.28857>:
  D.28858 = (guint32) vreg;
  return D.28858;
}


alloc_ireg_ref (struct MonoCompile * cfg)
{
  unsigned int D.28860;
  unsigned char D.28861;
  unsigned char D.28862;
  guint32 D.28865;
  int vreg;

  D.28860 = alloc_ireg (cfg);
  vreg = (int) D.28860;
  D.28861 = BIT_FIELD_REF <*cfg, 8, 5632>;
  D.28862 = D.28861 & 128;
  if (D.28862 != 0) goto <D.28863>; else goto <D.28864>;
  <D.28863>:
  mono_mark_vreg_as_ref (cfg, vreg);
  <D.28864>:
  D.28865 = (guint32) vreg;
  return D.28865;
}


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

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


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

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


mono_alloc_ireg_copy (struct MonoCompile * cfg, guint32 vreg)
{
  unsigned int D.28872;
  gboolean * D.28874;
  long unsigned int D.28875;
  long unsigned int D.28876;
  gboolean * D.28877;
  int D.28878;
  guint32 D.28880;
  unsigned int D.28882;
  gboolean * D.28884;
  gboolean * D.28885;
  int D.28886;

  D.28872 = cfg->vreg_is_ref_len;
  if (D.28872 > vreg) goto <D.28873>; else goto <D.28871>;
  <D.28873>:
  D.28874 = cfg->vreg_is_ref;
  D.28875 = (long unsigned int) vreg;
  D.28876 = D.28875 * 4;
  D.28877 = D.28874 + D.28876;
  D.28878 = *D.28877;
  if (D.28878 != 0) goto <D.28879>; else goto <D.28871>;
  <D.28879>:
  D.28880 = alloc_ireg_ref (cfg);
  return D.28880;
  <D.28871>:
  D.28882 = cfg->vreg_is_mp_len;
  if (D.28882 > vreg) goto <D.28883>; else goto <D.28881>;
  <D.28883>:
  D.28884 = cfg->vreg_is_mp;
  D.28875 = (long unsigned int) vreg;
  D.28876 = D.28875 * 4;
  D.28885 = D.28884 + D.28876;
  D.28886 = *D.28885;
  if (D.28886 != 0) goto <D.28887>; else goto <D.28881>;
  <D.28887>:
  D.28880 = alloc_ireg_mp (cfg);
  return D.28880;
  <D.28881>:
  D.28880 = alloc_ireg (cfg);
  return D.28880;
}


mono_type_to_regmove (struct MonoCompile * cfg, struct MonoType * type)
{
  unsigned char D.28889;
  unsigned char D.28890;
  guint D.28893;
  unsigned char D.28894;
  int D.28895;
  struct MonoClass * D.28896;
  unsigned char D.28897;
  unsigned char D.28898;
  unsigned int D.28901;
  unsigned int D.28902;
  struct MonoClass * D.28905;
  unsigned char D.28906;
  unsigned char D.28907;
  struct MonoGenericClass * D.28910;
  struct MonoClass * D.28911;
  struct MonoGenericSharingContext * D.28912;
  _Bool D.28913;
  long int D.28914;
  long int D.28915;
  int D.28918;
  void handle_enum = <<< error >>>;

  D.28889 = BIT_FIELD_REF <*type, 8, 88>;
  D.28890 = D.28889 & 64;
  if (D.28890 != 0) goto <D.28891>; else goto <D.28892>;
  <D.28891>:
  D.28893 = 428;
  return D.28893;
  <D.28892>:
  type = mini_replace_type (type);
  handle_enum:
  D.28894 = type->type;
  D.28895 = (int) D.28894;
  switch (D.28895) <default: <D.24856>, 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.24830>:
  <D.24831>:
  <D.24832>:
  D.28893 = 428;
  return D.28893;
  <D.24833>:
  <D.24834>:
  <D.24835>:
  D.28893 = 428;
  return D.28893;
  <D.24836>:
  <D.24837>:
  D.28893 = 428;
  return D.28893;
  <D.24838>:
  <D.24839>:
  <D.24840>:
  <D.24841>:
  D.28893 = 428;
  return D.28893;
  <D.24842>:
  <D.24843>:
  <D.24844>:
  <D.24845>:
  <D.24846>:
  D.28893 = 428;
  return D.28893;
  <D.24847>:
  <D.24848>:
  D.28893 = 428;
  return D.28893;
  <D.24849>:
  D.28893 = 430;
  return D.28893;
  <D.24850>:
  D.28893 = 430;
  return D.28893;
  <D.24851>:
  D.28896 = type->data.klass;
  D.28897 = BIT_FIELD_REF <*D.28896, 8, 256>;
  D.28898 = D.28897 & 16;
  if (D.28898 != 0) goto <D.28899>; else goto <D.28900>;
  <D.28899>:
  D.28896 = type->data.klass;
  type = mono_class_enum_basetype (D.28896);
  goto handle_enum;
  <D.28900>:
  D.28901 = cfg->opt;
  D.28902 = D.28901 & 67108864;
  if (D.28902 != 0) goto <D.28903>; else goto <D.28904>;
  <D.28903>:
  D.28905 = mono_class_from_mono_type (type);
  D.28906 = BIT_FIELD_REF <*D.28905, 8, 288>;
  D.28907 = D.28906 & 2;
  if (D.28907 != 0) goto <D.28908>; else goto <D.28909>;
  <D.28908>:
  D.28893 = 962;
  return D.28893;
  <D.28909>:
  <D.28904>:
  D.28893 = 431;
  return D.28893;
  <D.24852>:
  D.28893 = 431;
  return D.28893;
  <D.24853>:
  D.28910 = type->data.generic_class;
  D.28911 = D.28910->container_class;
  type = &D.28911->byval_arg;
  goto handle_enum;
  <D.24854>:
  <D.24855>:
  D.28912 = cfg->generic_sharing_context;
  D.28913 = D.28912 == 0B;
  D.28914 = (long int) D.28913;
  D.28915 = __builtin_expect (D.28914, 0);
  if (D.28915 != 0) goto <D.28916>; else goto <D.28917>;
  <D.28916>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 324, "cfg->generic_sharing_context");
  <D.28917>:
  D.28918 = mini_type_var_is_vt (cfg, type);
  if (D.28918 != 0) goto <D.28919>; else goto <D.28920>;
  <D.28919>:
  D.28893 = 431;
  return D.28893;
  <D.28920>:
  D.28893 = 428;
  return D.28893;
  <D.24856>:
  D.28894 = type->type;
  D.28895 = (int) D.28894;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in type_to_regstore", D.28895);
  <D.24857>:
  goto <D.24857>;
  D.28893 = 4294967295;
  return D.28893;
}


mono_print_bb (struct MonoBasicBlock * bb, const char * msg)
{
  int D.28922;
  struct MonoBasicBlock * * D.28923;
  long unsigned int D.28924;
  long unsigned int D.28925;
  struct MonoBasicBlock * * D.28926;
  struct MonoBasicBlock * D.28927;
  int D.28928;
  int D.28929;
  short int D.28930;
  int D.28931;
  struct MonoBasicBlock * * D.28932;
  struct MonoBasicBlock * * D.28933;
  struct MonoBasicBlock * D.28934;
  int D.28935;
  int D.28936;
  short int D.28937;
  int D.28938;
  int i;
  struct MonoInst * tree;

  D.28922 = bb->block_num;
  printf ("\n%s %d: [IN: ", msg, D.28922);
  i = 0;
  goto <D.24865>;
  <D.24864>:
  D.28923 = bb->in_bb;
  D.28924 = (long unsigned int) i;
  D.28925 = D.28924 * 8;
  D.28926 = D.28923 + D.28925;
  D.28927 = *D.28926;
  D.28928 = D.28927->dfn;
  D.28923 = bb->in_bb;
  D.28924 = (long unsigned int) i;
  D.28925 = D.28924 * 8;
  D.28926 = D.28923 + D.28925;
  D.28927 = *D.28926;
  D.28929 = D.28927->block_num;
  printf (" BB%d(%d)", D.28929, D.28928);
  i = i + 1;
  <D.24865>:
  D.28930 = bb->in_count;
  D.28931 = (int) D.28930;
  if (D.28931 > i) goto <D.24864>; else goto <D.24866>;
  <D.24866>:
  printf (", OUT: ");
  i = 0;
  goto <D.24868>;
  <D.24867>:
  D.28932 = bb->out_bb;
  D.28924 = (long unsigned int) i;
  D.28925 = D.28924 * 8;
  D.28933 = D.28932 + D.28925;
  D.28934 = *D.28933;
  D.28935 = D.28934->dfn;
  D.28932 = bb->out_bb;
  D.28924 = (long unsigned int) i;
  D.28925 = D.28924 * 8;
  D.28933 = D.28932 + D.28925;
  D.28934 = *D.28933;
  D.28936 = D.28934->block_num;
  printf (" BB%d(%d)", D.28936, D.28935);
  i = i + 1;
  <D.24868>:
  D.28937 = bb->out_count;
  D.28938 = (int) D.28937;
  if (D.28938 > i) goto <D.24867>; else goto <D.24869>;
  <D.24869>:
  printf (" ]\n");
  tree = bb->code;
  goto <D.24871>;
  <D.24870>:
  mono_print_ins_index (-1, tree);
  tree = tree->next;
  <D.24871>:
  if (tree != 0B) goto <D.24870>; else goto <D.24872>;
  <D.24872>:
}


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

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


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

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


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.28948;
  long unsigned int D.28949;
  long unsigned int D.28950;
  struct MonoBasicBlock * * D.28951;
  struct MonoBasicBlock * D.28952;
  short int D.28955;
  int D.28956;
  int D.28959;
  long unsigned int D.28960;
  unsigned int D.28961;
  unsigned int D.28962;
  struct MonoMemPool * D.28963;
  struct MonoBasicBlock * * D.28964;
  short int D.28965;
  unsigned short D.28966;
  unsigned short D.28967;
  short int D.28968;
  struct MonoBasicBlock * * D.28969;
  struct MonoBasicBlock * * D.28970;
  struct MonoBasicBlock * D.28971;
  short int D.28974;
  int D.28975;
  int D.28978;
  long unsigned int D.28979;
  unsigned int D.28980;
  unsigned int D.28981;
  short int D.28982;
  unsigned short D.28983;
  unsigned short D.28984;
  short int D.28985;
  struct MonoBasicBlock * * newa;
  int i;
  int found;

  found = 0;
  i = 0;
  goto <D.24886>;
  <D.24885>:
  D.28948 = from->out_bb;
  D.28949 = (long unsigned int) i;
  D.28950 = D.28949 * 8;
  D.28951 = D.28948 + D.28950;
  D.28952 = *D.28951;
  if (D.28952 == to) goto <D.28953>; else goto <D.28954>;
  <D.28953>:
  found = 1;
  goto <D.24884>;
  <D.28954>:
  i = i + 1;
  <D.24886>:
  D.28955 = from->out_count;
  D.28956 = (int) D.28955;
  if (D.28956 > i) goto <D.24885>; else goto <D.24884>;
  <D.24884>:
  if (found == 0) goto <D.28957>; else goto <D.28958>;
  <D.28957>:
  D.28955 = from->out_count;
  D.28956 = (int) D.28955;
  D.28959 = D.28956 + 1;
  D.28960 = (long unsigned int) D.28959;
  D.28961 = (unsigned int) D.28960;
  D.28962 = D.28961 * 8;
  D.28963 = cfg->mempool;
  newa = mono_mempool_alloc (D.28963, D.28962);
  i = 0;
  goto <D.24888>;
  <D.24887>:
  D.28949 = (long unsigned int) i;
  D.28950 = D.28949 * 8;
  D.28964 = newa + D.28950;
  D.28948 = from->out_bb;
  D.28949 = (long unsigned int) i;
  D.28950 = D.28949 * 8;
  D.28951 = D.28948 + D.28950;
  D.28952 = *D.28951;
  *D.28964 = D.28952;
  i = i + 1;
  <D.24888>:
  D.28955 = from->out_count;
  D.28956 = (int) D.28955;
  if (D.28956 > i) goto <D.24887>; else goto <D.24889>;
  <D.24889>:
  D.28949 = (long unsigned int) i;
  D.28950 = D.28949 * 8;
  D.28964 = newa + D.28950;
  *D.28964 = to;
  D.28955 = from->out_count;
  D.28965 = D.28955;
  D.28966 = (unsigned short) D.28965;
  D.28967 = D.28966 + 1;
  D.28968 = (short int) D.28967;
  from->out_count = D.28968;
  from->out_bb = newa;
  <D.28958>:
  found = 0;
  i = 0;
  goto <D.24892>;
  <D.24891>:
  D.28969 = to->in_bb;
  D.28949 = (long unsigned int) i;
  D.28950 = D.28949 * 8;
  D.28970 = D.28969 + D.28950;
  D.28971 = *D.28970;
  if (D.28971 == from) goto <D.28972>; else goto <D.28973>;
  <D.28972>:
  found = 1;
  goto <D.24890>;
  <D.28973>:
  i = i + 1;
  <D.24892>:
  D.28974 = to->in_count;
  D.28975 = (int) D.28974;
  if (D.28975 > i) goto <D.24891>; else goto <D.24890>;
  <D.24890>:
  if (found == 0) goto <D.28976>; else goto <D.28977>;
  <D.28976>:
  D.28974 = to->in_count;
  D.28975 = (int) D.28974;
  D.28978 = D.28975 + 1;
  D.28979 = (long unsigned int) D.28978;
  D.28980 = (unsigned int) D.28979;
  D.28981 = D.28980 * 8;
  D.28963 = cfg->mempool;
  newa = mono_mempool_alloc (D.28963, D.28981);
  i = 0;
  goto <D.24894>;
  <D.24893>:
  D.28949 = (long unsigned int) i;
  D.28950 = D.28949 * 8;
  D.28964 = newa + D.28950;
  D.28969 = to->in_bb;
  D.28949 = (long unsigned int) i;
  D.28950 = D.28949 * 8;
  D.28970 = D.28969 + D.28950;
  D.28971 = *D.28970;
  *D.28964 = D.28971;
  i = i + 1;
  <D.24894>:
  D.28974 = to->in_count;
  D.28975 = (int) D.28974;
  if (D.28975 > i) goto <D.24893>; else goto <D.24895>;
  <D.24895>:
  D.28949 = (long unsigned int) i;
  D.28950 = D.28949 * 8;
  D.28964 = newa + D.28950;
  *D.28964 = from;
  D.28974 = to->in_count;
  D.28982 = D.28974;
  D.28983 = (unsigned short) D.28982;
  D.28984 = D.28983 + 1;
  D.28985 = (short int) D.28984;
  to->in_count = D.28985;
  to->in_bb = newa;
  <D.28977>:
}


mono_find_exvar_for_offset (struct MonoCompile * cfg, int offset)
{
  struct MonoInst * D.28986;
  long int D.28987;
  const void * D.28988;
  struct GHashTable * D.28989;

  D.28987 = (long int) offset;
  D.28988 = (const void *) D.28987;
  D.28989 = cfg->exvars;
  D.28986 = monoeg_g_hash_table_lookup (D.28989, D.28988);
  return D.28986;
}


type_to_eval_stack_type (struct MonoCompile * cfg, struct MonoType * type, struct MonoInst * inst)
{
  unsigned char D.28991;
  unsigned char D.28992;
  unsigned char D.28995;
  int D.28996;
  struct MonoClass * D.28997;
  unsigned char D.28998;
  unsigned char D.28999;
  struct MonoClass * D.29002;
  struct MonoGenericClass * D.29003;
  struct MonoClass * D.29004;
  struct MonoGenericSharingContext * D.29005;
  _Bool D.29006;
  long int D.29007;
  long int D.29008;
  int D.29011;
  int D.29014;
  _Bool D.29015;
  long int D.29016;
  long int D.29017;
  struct MonoClass * klass;
  void handle_enum = <<< error >>>;

  type = mini_replace_type (type);
  klass = mono_class_from_mono_type (type);
  inst->klass = klass;
  D.28991 = BIT_FIELD_REF <*type, 8, 88>;
  D.28992 = D.28991 & 64;
  if (D.28992 != 0) goto <D.28993>; else goto <D.28994>;
  <D.28993>:
  inst->type = 5;
  return;
  <D.28994>:
  handle_enum:
  D.28995 = type->type;
  D.28996 = (int) D.28995;
  switch (D.28996) <default: <D.24972>, case 1: <D.24945>, case 2: <D.24948>, case 3: <D.24951>, case 4: <D.24946>, case 5: <D.24947>, case 6: <D.24949>, case 7: <D.24950>, case 8: <D.24952>, case 9: <D.24953>, case 10: <D.24963>, case 11: <D.24964>, case 12: <D.24965>, case 13: <D.24966>, case 14: <D.24959>, case 15: <D.24956>, case 17: <D.24967>, case 18: <D.24958>, case 19: <D.24970>, case 20: <D.24962>, case 21: <D.24969>, case 22: <D.24968>, case 24: <D.24954>, case 25: <D.24955>, case 27: <D.24957>, case 28: <D.24960>, case 29: <D.24961>, case 30: <D.24971>>
  <D.24945>:
  inst->type = 0;
  return;
  <D.24946>:
  <D.24947>:
  <D.24948>:
  <D.24949>:
  <D.24950>:
  <D.24951>:
  <D.24952>:
  <D.24953>:
  inst->type = 1;
  return;
  <D.24954>:
  <D.24955>:
  <D.24956>:
  <D.24957>:
  inst->type = 3;
  return;
  <D.24958>:
  <D.24959>:
  <D.24960>:
  <D.24961>:
  <D.24962>:
  inst->type = 6;
  return;
  <D.24963>:
  <D.24964>:
  inst->type = 2;
  return;
  <D.24965>:
  <D.24966>:
  inst->type = 4;
  return;
  <D.24967>:
  D.28997 = type->data.klass;
  D.28998 = BIT_FIELD_REF <*D.28997, 8, 256>;
  D.28999 = D.28998 & 16;
  if (D.28999 != 0) goto <D.29000>; else goto <D.29001>;
  <D.29000>:
  D.28997 = type->data.klass;
  type = mono_class_enum_basetype (D.28997);
  goto handle_enum;
  <D.29001>:
  inst->klass = klass;
  inst->type = 7;
  return;
  <D.24968>:
  D.29002 = mono_defaults.typed_reference_class;
  inst->klass = D.29002;
  inst->type = 7;
  return;
  <D.24969>:
  D.29003 = type->data.generic_class;
  D.29004 = D.29003->container_class;
  type = &D.29004->byval_arg;
  goto handle_enum;
  <D.24970>:
  <D.24971>:
  D.29005 = cfg->generic_sharing_context;
  D.29006 = D.29005 == 0B;
  D.29007 = (long int) D.29006;
  D.29008 = __builtin_expect (D.29007, 0);
  if (D.29008 != 0) goto <D.29009>; else goto <D.29010>;
  <D.29009>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 717, "cfg->generic_sharing_context");
  <D.29010>:
  D.29011 = mini_is_gsharedvt_type (cfg, type);
  if (D.29011 != 0) goto <D.29012>; else goto <D.29013>;
  <D.29012>:
  D.29014 = cfg->gsharedvt;
  D.29015 = D.29014 == 0;
  D.29016 = (long int) D.29015;
  D.29017 = __builtin_expect (D.29016, 0);
  if (D.29017 != 0) goto <D.29018>; else goto <D.29019>;
  <D.29018>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 719, "cfg->gsharedvt");
  <D.29019>:
  inst->type = 7;
  goto <D.29020>;
  <D.29013>:
  inst->type = 6;
  <D.29020>:
  return;
  <D.24972>:
  D.28995 = type->type;
  D.28996 = (int) D.28995;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in eval stack type", D.28996);
  <D.24973>:
  goto <D.24973>;
}


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

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


mini_emit_memcpy (struct MonoCompile * cfg, int destreg, int doffset, int srcreg, int soffset, int size, int align)
{
  _Bool D.29026;
  long int D.29027;
  long int D.29028;
  unsigned int D.29033;
  struct MonoMemPool * D.29034;
  long int D.29035;
  struct MonoInst * D.29036;
  int D.29037;
  int D.29038;
  const unsigned char * D.29039;
  long int D.29040;
  struct MonoBasicBlock * D.29041;
  struct MonoInst * D.29042;
  long int D.29046;
  struct MonoInst * D.29047;
  int D.29048;
  int D.29049;
  long int D.29050;
  unsigned int D.29056;
  long int D.29057;
  struct MonoInst * D.29058;
  int D.29059;
  int D.29060;
  long int D.29064;
  struct MonoInst * D.29065;
  int D.29066;
  int D.29067;
  unsigned int D.29071;
  long int D.29072;
  struct MonoInst * D.29073;
  int D.29074;
  int D.29075;
  long int D.29079;
  struct MonoInst * D.29080;
  int D.29081;
  int D.29082;
  unsigned int D.29086;
  long int D.29087;
  struct MonoInst * D.29088;
  int D.29089;
  int D.29090;
  long int D.29094;
  struct MonoInst * D.29095;
  int D.29096;
  int D.29097;
  unsigned int D.29101;
  long int D.29102;
  struct MonoInst * D.29103;
  int D.29104;
  int D.29105;
  long int D.29109;
  struct MonoInst * D.29110;
  int D.29111;
  int D.29112;
  int cur_reg;

  if (align == 0) goto <D.29024>; else goto <D.29025>;
  <D.29024>:
  align = 4;
  <D.29025>:
  D.29026 = size > 9999;
  D.29027 = (long int) D.29026;
  D.29028 = __builtin_expect (D.29027, 0);
  if (D.29028 != 0) goto <D.29029>; else goto <D.29030>;
  <D.29029>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1826, "size < 10000");
  <D.29030>:
  if (align <= 3) goto <D.29031>; else goto <D.29032>;
  <D.29031>:
  goto <D.25477>;
  <D.25476>:
  D.29033 = alloc_preg (cfg);
  cur_reg = (int) D.29033;
  {
    struct MonoInst * inst;

    D.29034 = cfg->mempool;
    inst = mono_mempool_alloc (D.29034, 80);
    inst->data.op[1].const_val = 0;
    D.29035 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29035;
    inst->prev = 0B;
    D.29036 = inst->prev;
    inst->next = D.29036;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29037 = inst->sreg3;
    inst->sreg2 = D.29037;
    D.29038 = inst->sreg2;
    inst->sreg1 = D.29038;
    D.29039 = cfg->ip;
    inst->cil_code = D.29039;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    D.29040 = (long int) soffset;
    inst->data.op[0].const_val = D.29040;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    if (D.29042 != 0B) goto <D.29043>; else goto <D.29044>;
    <D.29043>:
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    D.29042->next = inst;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    inst->prev = D.29042;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    goto <D.29045>;
    <D.29044>:
    D.29041 = cfg->cbb;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    D.29042 = D.29041->last_ins;
    D.29041->code = D.29042;
    <D.29045>:
  }
  {
    struct MonoInst * inst;

    D.29034 = cfg->mempool;
    inst = mono_mempool_alloc (D.29034, 80);
    inst->data.op[1].const_val = 0;
    D.29046 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29046;
    inst->prev = 0B;
    D.29047 = inst->prev;
    inst->next = D.29047;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29048 = inst->sreg3;
    inst->sreg2 = D.29048;
    D.29049 = inst->sreg2;
    inst->sreg1 = D.29049;
    D.29039 = cfg->ip;
    inst->cil_code = D.29039;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    D.29050 = (long int) doffset;
    inst->data.op[0].const_val = D.29050;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    if (D.29042 != 0B) goto <D.29051>; else goto <D.29052>;
    <D.29051>:
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    D.29042->next = inst;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    inst->prev = D.29042;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    goto <D.29053>;
    <D.29052>:
    D.29041 = cfg->cbb;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    D.29042 = D.29041->last_ins;
    D.29041->code = D.29042;
    <D.29053>:
  }
  doffset = doffset + 1;
  soffset = soffset + 1;
  size = size + -1;
  <D.25477>:
  if (size > 0) goto <D.25476>; else goto <D.25478>;
  <D.25478>:
  <D.29032>:
  if (1 != 0) goto <D.29054>; else goto <D.29055>;
  <D.29054>:
  goto <D.25482>;
  <D.25481>:
  D.29056 = alloc_preg (cfg);
  cur_reg = (int) D.29056;
  {
    struct MonoInst * inst;

    D.29034 = cfg->mempool;
    inst = mono_mempool_alloc (D.29034, 80);
    inst->data.op[1].const_val = 0;
    D.29057 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29057;
    inst->prev = 0B;
    D.29058 = inst->prev;
    inst->next = D.29058;
    inst->opcode = 398;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29059 = inst->sreg3;
    inst->sreg2 = D.29059;
    D.29060 = inst->sreg2;
    inst->sreg1 = D.29060;
    D.29039 = cfg->ip;
    inst->cil_code = D.29039;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    D.29040 = (long int) soffset;
    inst->data.op[0].const_val = D.29040;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    if (D.29042 != 0B) goto <D.29061>; else goto <D.29062>;
    <D.29061>:
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    D.29042->next = inst;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    inst->prev = D.29042;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    goto <D.29063>;
    <D.29062>:
    D.29041 = cfg->cbb;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    D.29042 = D.29041->last_ins;
    D.29041->code = D.29042;
    <D.29063>:
  }
  {
    struct MonoInst * inst;

    D.29034 = cfg->mempool;
    inst = mono_mempool_alloc (D.29034, 80);
    inst->data.op[1].const_val = 0;
    D.29064 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29064;
    inst->prev = 0B;
    D.29065 = inst->prev;
    inst->next = D.29065;
    inst->opcode = 378;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29066 = inst->sreg3;
    inst->sreg2 = D.29066;
    D.29067 = inst->sreg2;
    inst->sreg1 = D.29067;
    D.29039 = cfg->ip;
    inst->cil_code = D.29039;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    D.29050 = (long int) doffset;
    inst->data.op[0].const_val = D.29050;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    if (D.29042 != 0B) goto <D.29068>; else goto <D.29069>;
    <D.29068>:
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    D.29042->next = inst;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    inst->prev = D.29042;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    goto <D.29070>;
    <D.29069>:
    D.29041 = cfg->cbb;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    D.29042 = D.29041->last_ins;
    D.29041->code = D.29042;
    <D.29070>:
  }
  doffset = doffset + 8;
  soffset = soffset + 8;
  size = size + -8;
  <D.25482>:
  if (size > 7) goto <D.25481>; else goto <D.25483>;
  <D.25483>:
  <D.29055>:
  goto <D.25487>;
  <D.25486>:
  D.29071 = alloc_preg (cfg);
  cur_reg = (int) D.29071;
  {
    struct MonoInst * inst;

    D.29034 = cfg->mempool;
    inst = mono_mempool_alloc (D.29034, 80);
    inst->data.op[1].const_val = 0;
    D.29072 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29072;
    inst->prev = 0B;
    D.29073 = inst->prev;
    inst->next = D.29073;
    inst->opcode = 396;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29074 = inst->sreg3;
    inst->sreg2 = D.29074;
    D.29075 = inst->sreg2;
    inst->sreg1 = D.29075;
    D.29039 = cfg->ip;
    inst->cil_code = D.29039;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    D.29040 = (long int) soffset;
    inst->data.op[0].const_val = D.29040;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    if (D.29042 != 0B) goto <D.29076>; else goto <D.29077>;
    <D.29076>:
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    D.29042->next = inst;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    inst->prev = D.29042;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    goto <D.29078>;
    <D.29077>:
    D.29041 = cfg->cbb;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    D.29042 = D.29041->last_ins;
    D.29041->code = D.29042;
    <D.29078>:
  }
  {
    struct MonoInst * inst;

    D.29034 = cfg->mempool;
    inst = mono_mempool_alloc (D.29034, 80);
    inst->data.op[1].const_val = 0;
    D.29079 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29079;
    inst->prev = 0B;
    D.29080 = inst->prev;
    inst->next = D.29080;
    inst->opcode = 377;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29081 = inst->sreg3;
    inst->sreg2 = D.29081;
    D.29082 = inst->sreg2;
    inst->sreg1 = D.29082;
    D.29039 = cfg->ip;
    inst->cil_code = D.29039;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    D.29050 = (long int) doffset;
    inst->data.op[0].const_val = D.29050;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    if (D.29042 != 0B) goto <D.29083>; else goto <D.29084>;
    <D.29083>:
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    D.29042->next = inst;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    inst->prev = D.29042;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    goto <D.29085>;
    <D.29084>:
    D.29041 = cfg->cbb;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    D.29042 = D.29041->last_ins;
    D.29041->code = D.29042;
    <D.29085>:
  }
  doffset = doffset + 4;
  soffset = soffset + 4;
  size = size + -4;
  <D.25487>:
  if (size > 3) goto <D.25486>; else goto <D.25488>;
  <D.25488>:
  goto <D.25492>;
  <D.25491>:
  D.29086 = alloc_preg (cfg);
  cur_reg = (int) D.29086;
  {
    struct MonoInst * inst;

    D.29034 = cfg->mempool;
    inst = mono_mempool_alloc (D.29034, 80);
    inst->data.op[1].const_val = 0;
    D.29087 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29087;
    inst->prev = 0B;
    D.29088 = inst->prev;
    inst->next = D.29088;
    inst->opcode = 394;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29089 = inst->sreg3;
    inst->sreg2 = D.29089;
    D.29090 = inst->sreg2;
    inst->sreg1 = D.29090;
    D.29039 = cfg->ip;
    inst->cil_code = D.29039;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    D.29040 = (long int) soffset;
    inst->data.op[0].const_val = D.29040;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    if (D.29042 != 0B) goto <D.29091>; else goto <D.29092>;
    <D.29091>:
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    D.29042->next = inst;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    inst->prev = D.29042;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    goto <D.29093>;
    <D.29092>:
    D.29041 = cfg->cbb;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    D.29042 = D.29041->last_ins;
    D.29041->code = D.29042;
    <D.29093>:
  }
  {
    struct MonoInst * inst;

    D.29034 = cfg->mempool;
    inst = mono_mempool_alloc (D.29034, 80);
    inst->data.op[1].const_val = 0;
    D.29094 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29094;
    inst->prev = 0B;
    D.29095 = inst->prev;
    inst->next = D.29095;
    inst->opcode = 376;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29096 = inst->sreg3;
    inst->sreg2 = D.29096;
    D.29097 = inst->sreg2;
    inst->sreg1 = D.29097;
    D.29039 = cfg->ip;
    inst->cil_code = D.29039;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    D.29050 = (long int) doffset;
    inst->data.op[0].const_val = D.29050;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    if (D.29042 != 0B) goto <D.29098>; else goto <D.29099>;
    <D.29098>:
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    D.29042->next = inst;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    inst->prev = D.29042;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    goto <D.29100>;
    <D.29099>:
    D.29041 = cfg->cbb;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    D.29042 = D.29041->last_ins;
    D.29041->code = D.29042;
    <D.29100>:
  }
  doffset = doffset + 2;
  soffset = soffset + 2;
  size = size + -2;
  <D.25492>:
  if (size > 1) goto <D.25491>; else goto <D.25493>;
  <D.25493>:
  goto <D.25497>;
  <D.25496>:
  D.29101 = alloc_preg (cfg);
  cur_reg = (int) D.29101;
  {
    struct MonoInst * inst;

    D.29034 = cfg->mempool;
    inst = mono_mempool_alloc (D.29034, 80);
    inst->data.op[1].const_val = 0;
    D.29102 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29102;
    inst->prev = 0B;
    D.29103 = inst->prev;
    inst->next = D.29103;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29104 = inst->sreg3;
    inst->sreg2 = D.29104;
    D.29105 = inst->sreg2;
    inst->sreg1 = D.29105;
    D.29039 = cfg->ip;
    inst->cil_code = D.29039;
    inst->dreg = cur_reg;
    inst->sreg1 = srcreg;
    D.29040 = (long int) soffset;
    inst->data.op[0].const_val = D.29040;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    if (D.29042 != 0B) goto <D.29106>; else goto <D.29107>;
    <D.29106>:
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    D.29042->next = inst;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    inst->prev = D.29042;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    goto <D.29108>;
    <D.29107>:
    D.29041 = cfg->cbb;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    D.29042 = D.29041->last_ins;
    D.29041->code = D.29042;
    <D.29108>:
  }
  {
    struct MonoInst * inst;

    D.29034 = cfg->mempool;
    inst = mono_mempool_alloc (D.29034, 80);
    inst->data.op[1].const_val = 0;
    D.29109 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29109;
    inst->prev = 0B;
    D.29110 = inst->prev;
    inst->next = D.29110;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29111 = inst->sreg3;
    inst->sreg2 = D.29111;
    D.29112 = inst->sreg2;
    inst->sreg1 = D.29112;
    D.29039 = cfg->ip;
    inst->cil_code = D.29039;
    inst->sreg1 = cur_reg;
    inst->dreg = destreg;
    D.29050 = (long int) doffset;
    inst->data.op[0].const_val = D.29050;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    if (D.29042 != 0B) goto <D.29113>; else goto <D.29114>;
    <D.29113>:
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    D.29042->next = inst;
    D.29041 = cfg->cbb;
    D.29042 = D.29041->last_ins;
    inst->prev = D.29042;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    goto <D.29115>;
    <D.29114>:
    D.29041 = cfg->cbb;
    D.29041 = cfg->cbb;
    D.29041->last_ins = inst;
    D.29042 = D.29041->last_ins;
    D.29041->code = D.29042;
    <D.29115>:
  }
  doffset = doffset + 1;
  soffset = soffset + 1;
  size = size + -1;
  <D.25497>:
  if (size > 0) goto <D.25496>; else goto <D.25498>;
  <D.25498>:
}


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

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


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.29119;
  unsigned int D.29124;
  struct MonoMemPool * D.29125;
  long int D.29126;
  struct MonoInst * D.29127;
  int D.29128;
  int D.29129;
  const unsigned char * D.29130;
  int D.29131;
  struct MonoBasicBlock * D.29132;
  struct MonoInst * D.29133;
  unsigned char D.29137;
  unsigned char D.29138;
  struct MonoClass * D.29141;
  struct MonoType * D.29142;
  int iftmp.7;
  unsigned char D.29149;
  unsigned char D.29150;
  struct MonoClass * D.29152;
  unsigned char D.29153;
  unsigned char D.29154;
  struct MonoClass * D.29156;
  short unsigned int D.29157;
  int D.29158;
  int D.29159;
  struct MonoMethod * D.29161;
  struct MonoMethodSignature * D.29162;
  unsigned char D.29163;
  unsigned char D.29164;
  short unsigned int D.29166;
  int D.29168;
  struct MonoInst * * D.29169;
  struct MonoInst * D.29170;
  int D.29171;
  _Bool D.29173;
  _Bool D.29174;
  _Bool D.29175;
  struct MonoGenericSharingContext * D.29178;
  _Bool D.29179;
  long int D.29180;
  long int D.29181;
  struct MonoInst * D.29184;
  int iftmp.8;
  unsigned int D.29190;
  unsigned int D.29191;
  _Bool D.29192;
  int D.29193;
  struct MonoMethod * D.29196;
  unsigned char D.29198;
  unsigned char D.29199;
  unsigned char D.29200;
  <unnamed-unsigned:1> D.29201;
  struct MonoClass * D.29204;
  struct MonoClass * D.29205;
  int D.25769;
  int iftmp.9;
  int D.25768;
  const char[7] * D.29211;
  unsigned char D.29212;
  int D.29213;
  unsigned char D.29214;
  int D.29215;
  _Bool D.29216;
  _Bool D.29217;
  _Bool D.29218;
  const unsigned char * D.29221;
  unsigned char D.29222;
  int D.29223;
  const unsigned char * D.29224;
  unsigned char D.29225;
  int D.29226;
  _Bool D.29227;
  _Bool D.29228;
  const unsigned char * D.29231;
  unsigned char D.29232;
  int D.29233;
  const unsigned char * D.29234;
  unsigned char D.29235;
  int D.29236;
  _Bool D.29237;
  _Bool D.29238;
  const unsigned char * D.29241;
  unsigned char D.29242;
  int D.29243;
  const unsigned char * D.29244;
  unsigned char D.29245;
  int D.29246;
  const char * D.29248;
  unsigned char D.29251;
  unsigned char D.29252;
  long int D.29255;
  struct MonoInst * D.29256;
  int D.29257;
  int D.29258;
  long int D.29262;
  struct MonoInst * D.29263;
  int D.29264;
  int D.29265;
  long int D.29273;
  struct MonoInst * D.29274;
  int D.29275;
  int D.29276;
  struct MonoInst * D.29277;
  int D.29278;
  unsigned char D.29288;
  unsigned char D.29289;
  int D.29292;
  unsigned int D.29295;
  unsigned char D.29296;
  struct MonoMethod * D.29301;
  unsigned int D.29304;
  unsigned int D.29305;
  long int D.29310;
  struct MonoInst * D.29311;
  int D.29312;
  int D.29313;
  long int D.29317;
  struct MonoInst * D.29318;
  int D.29319;
  int D.29320;
  long int D.29326;
  struct MonoInst * D.29327;
  int D.29328;
  int D.29329;
  long int D.29333;
  struct MonoInst * D.29334;
  int D.29335;
  int D.29336;
  short unsigned int D.29340;
  int D.29341;
  int D.29342;
  short unsigned int D.29343;
  long int D.29354;
  struct MonoInst * D.29355;
  int D.29356;
  int D.29357;
  long int D.29361;
  struct MonoInst * D.29362;
  int D.29363;
  int D.29364;
  long int D.29370;
  struct MonoInst * D.29371;
  int D.29372;
  int D.29373;
  long int D.29377;
  struct MonoInst * D.29378;
  int D.29379;
  int D.29380;
  int D.29384;
  short unsigned int D.29385;
  unsigned int D.29386;
  int D.29387;
  long int D.29392;
  struct MonoInst * D.29393;
  int D.29394;
  int D.29395;
  long int D.29399;
  struct MonoInst * D.29400;
  int D.29401;
  int D.29402;
  long int D.29407;
  struct MonoInst * D.29408;
  int D.29409;
  int D.29410;
  unsigned char D.29411;
  int mono_use_imt.10;
  struct MonoMethod * D.29420;
  int imt_slot.11;
  int D.29422;
  unsigned int D.29425;
  int D.29426;
  int D.29428;
  int D.29429;
  unsigned int D.29430;
  unsigned int D.29431;
  struct MonoMethodSignature * D.29434;
  short unsigned int D.29435;
  _Bool D.29436;
  long int D.29437;
  long int D.29438;
  long int D.29441;
  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.29119 = this != 0B;
  virtual = (gboolean) D.29119;
  enable_for_aot = 1;
  rgctx_reg = 0;
  if (sig == 0B) goto <D.29120>; else goto <D.29121>;
  <D.29120>:
  sig = mono_method_signature (method);
  <D.29121>:
  if (rgctx_arg != 0B) goto <D.29122>; else goto <D.29123>;
  <D.29122>:
  D.29124 = mono_alloc_preg (cfg);
  rgctx_reg = (int) D.29124;
  {
    struct MonoInst * inst;

    D.29125 = cfg->mempool;
    inst = mono_mempool_alloc (D.29125, 80);
    inst->data.op[1].const_val = 0;
    D.29126 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29126;
    inst->prev = 0B;
    D.29127 = inst->prev;
    inst->next = D.29127;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29128 = inst->sreg3;
    inst->sreg2 = D.29128;
    D.29129 = inst->sreg2;
    inst->sreg1 = D.29129;
    D.29130 = cfg->ip;
    inst->cil_code = D.29130;
    inst->dreg = rgctx_reg;
    D.29131 = rgctx_arg->dreg;
    inst->sreg1 = D.29131;
    D.29132 = cfg->cbb;
    D.29133 = D.29132->last_ins;
    if (D.29133 != 0B) goto <D.29134>; else goto <D.29135>;
    <D.29134>:
    D.29132 = cfg->cbb;
    D.29133 = D.29132->last_ins;
    D.29133->next = inst;
    D.29132 = cfg->cbb;
    D.29133 = D.29132->last_ins;
    inst->prev = D.29133;
    D.29132 = cfg->cbb;
    D.29132->last_ins = inst;
    goto <D.29136>;
    <D.29135>:
    D.29132 = cfg->cbb;
    D.29132 = cfg->cbb;
    D.29132->last_ins = inst;
    D.29133 = D.29132->last_ins;
    D.29132->code = D.29133;
    <D.29136>:
  }
  <D.29123>:
  D.29137 = BIT_FIELD_REF <*method, 8, 256>;
  D.29138 = D.29137 & 128;
  if (D.29138 != 0) goto <D.29139>; else goto <D.29140>;
  <D.29139>:
  {
    struct MonoMethodSignature * ctor_sig;

    D.29125 = cfg->mempool;
    ctor_sig = mono_metadata_signature_dup_mempool (D.29125, sig);
    D.29141 = mono_defaults.string_class;
    D.29142 = &D.29141->byval_arg;
    ctor_sig->ret = D.29142;
    sig = ctor_sig;
  }
  <D.29140>:
  context_used = mini_method_check_context_used (cfg, method);
  if (this != 0B) goto <D.29148>; else goto <D.29144>;
  <D.29148>:
  D.29149 = BIT_FIELD_REF <*sig, 8, 112>;
  D.29150 = D.29149 & 64;
  if (D.29150 != 0) goto <D.29151>; else goto <D.29144>;
  <D.29151>:
  D.29152 = method->klass;
  D.29153 = BIT_FIELD_REF <*D.29152, 8, 272>;
  D.29154 = D.29153 & 64;
  if (D.29154 != 0) goto <D.29145>; else goto <D.29155>;
  <D.29155>:
  D.29152 = method->klass;
  D.29156 = mono_defaults.object_class;
  if (D.29152 == D.29156) goto <D.29145>; else goto <D.29144>;
  <D.29145>:
  D.29157 = method->flags;
  D.29158 = (int) D.29157;
  D.29159 = D.29158 & 64;
  if (D.29159 == 0) goto <D.29160>; else goto <D.29144>;
  <D.29160>:
  D.29161 = cfg->method;
  D.29162 = mono_method_signature (D.29161);
  D.29163 = BIT_FIELD_REF <*D.29162, 8, 112>;
  D.29164 = D.29163 & 64;
  if (D.29164 == 0) goto <D.29146>; else goto <D.29165>;
  <D.29165>:
  D.29166 = this->opcode;
  if (D.29166 != 428) goto <D.29146>; else goto <D.29167>;
  <D.29167>:
  D.29168 = this->sreg1;
  D.29169 = cfg->args;
  D.29170 = *D.29169;
  D.29171 = D.29170->dreg;
  if (D.29168 != D.29171) goto <D.29146>; else goto <D.29172>;
  <D.29172>:
  if (context_used != 0) goto <D.29146>; else goto <D.29144>;
  <D.29146>:
  iftmp.7 = 1;
  goto <D.29147>;
  <D.29144>:
  iftmp.7 = 0;
  <D.29147>:
  might_be_remote = iftmp.7;
  D.29173 = might_be_remote != 0;
  D.29174 = context_used != 0;
  D.29175 = D.29173 & D.29174;
  if (D.29175 != 0) goto <D.29176>; else goto <D.29177>;
  <D.29176>:
  {
    struct MonoInst * addr;

    D.29178 = cfg->generic_sharing_context;
    D.29179 = D.29178 == 0B;
    D.29180 = (long int) D.29179;
    D.29181 = __builtin_expect (D.29180, 0);
    if (D.29181 != 0) goto <D.29182>; else goto <D.29183>;
    <D.29182>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2632, "cfg->generic_sharing_context");
    <D.29183>:
    addr = emit_get_rgctx_method (cfg, context_used, method, 10);
    D.29184 = mono_emit_calli (cfg, sig, args, addr, 0B, 0B);
    return D.29184;
  }
  <D.29177>:
  D.29152 = method->klass;
  D.29156 = mono_defaults.object_class;
  if (D.29152 == D.29156) goto <D.29186>; else goto <D.29189>;
  <D.29189>:
  D.29152 = method->klass;
  D.29190 = D.29152->flags;
  D.29191 = D.29190 & 32;
  if (D.29191 != 0) goto <D.29186>; else goto <D.29187>;
  <D.29186>:
  iftmp.8 = 1;
  goto <D.29188>;
  <D.29187>:
  iftmp.8 = 0;
  <D.29188>:
  need_unbox_trampoline = iftmp.8;
  D.29192 = rgctx_arg != 0B;
  D.29193 = (int) D.29192;
  call = mono_emit_call_args (cfg, sig, args, 0, virtual, tail, D.29193, need_unbox_trampoline);
  if (might_be_remote != 0) goto <D.29194>; else goto <D.29195>;
  <D.29194>:
  D.29196 = mono_marshal_get_remoting_invoke_with_check (method);
  call->method = D.29196;
  goto <D.29197>;
  <D.29195>:
  call->method = method;
  <D.29197>:
  D.29198 = call->inst.flags;
  D.29199 = D.29198 | 1;
  call->inst.flags = D.29199;
  call->inst.data.op[0].src = this;
  D.29200 = (unsigned char) tail;
  D.29201 = (<unnamed-unsigned:1>) D.29200;
  call->tail_call = D.29201;
  if (virtual != 0) goto <D.29202>; else goto <D.29203>;
  <D.29202>:
  {
    int vtable_reg;
    int slot_reg;
    int this_reg;
    int offset;

    this_reg = this->dreg;
    D.29152 = method->klass;
    D.29204 = D.29152->parent;
    D.29205 = mono_defaults.multicastdelegate_class;
    if (D.29204 == D.29205) goto <D.29206>; else goto <D.29207>;
    <D.29206>:
    {
      size_t __s1_len;
      size_t __s2_len;

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

        __s2 = method->name;
        D.29211 = "Invoke";
        D.29212 = MEM[(const unsigned char *)D.29211];
        D.29213 = (int) D.29212;
        D.29214 = *__s2;
        D.29215 = (int) D.29214;
        __result = D.29213 - D.29215;
        {
          D.29216 = __s2_len != 0;
          D.29217 = __result == 0;
          D.29218 = D.29216 & D.29217;
          if (D.29218 != 0) goto <D.29219>; else goto <D.29220>;
          <D.29219>:
          D.29221 = &MEM[(void *)"Invoke" + 1B];
          D.29222 = *D.29221;
          D.29223 = (int) D.29222;
          D.29224 = __s2 + 1;
          D.29225 = *D.29224;
          D.29226 = (int) D.29225;
          __result = D.29223 - D.29226;
          D.29227 = __s2_len > 1;
          D.29217 = __result == 0;
          D.29228 = D.29227 & D.29217;
          if (D.29228 != 0) goto <D.29229>; else goto <D.29230>;
          <D.29229>:
          D.29231 = &MEM[(void *)"Invoke" + 2B];
          D.29232 = *D.29231;
          D.29233 = (int) D.29232;
          D.29234 = __s2 + 2;
          D.29235 = *D.29234;
          D.29236 = (int) D.29235;
          __result = D.29233 - D.29236;
          D.29237 = __s2_len > 2;
          D.29217 = __result == 0;
          D.29238 = D.29237 & D.29217;
          if (D.29238 != 0) goto <D.29239>; else goto <D.29240>;
          <D.29239>:
          D.29241 = &MEM[(void *)"Invoke" + 3B];
          D.29242 = *D.29241;
          D.29243 = (int) D.29242;
          D.29244 = __s2 + 3;
          D.29245 = *D.29244;
          D.29246 = (int) D.29245;
          __result = D.29243 - D.29246;
          <D.29240>:
          <D.29230>:
          <D.29220>:
        }
        D.25768 = __result;
      }
      iftmp.9 = -D.25768;
      goto <D.29247>;
      <D.29210>:
      D.29248 = method->name;
      iftmp.9 = __builtin_strcmp (D.29248, "Invoke");
      <D.29247>:
      D.25769 = iftmp.9;
    }
    if (D.25769 == 0) goto <D.29249>; else goto <D.29250>;
    <D.29249>:
    {
      struct MonoInst * dummy_use;

      D.29251 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.29252 = D.29251 & 64;
      if (D.29252 != 0) goto <D.29253>; else goto <D.29254>;
      <D.29253>:
      {
        struct MonoInst * inst;

        D.29125 = cfg->mempool;
        inst = mono_mempool_alloc (D.29125, 80);
        inst->data.op[1].const_val = 0;
        D.29255 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29255;
        inst->prev = 0B;
        D.29256 = inst->prev;
        inst->next = D.29256;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29257 = inst->sreg3;
        inst->sreg2 = D.29257;
        D.29258 = inst->sreg2;
        inst->sreg1 = D.29258;
        D.29130 = cfg->ip;
        inst->cil_code = D.29130;
        inst->dreg = -1;
        inst->sreg1 = this_reg;
        inst->data.op[1].const_val = 0;
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        if (D.29133 != 0B) goto <D.29259>; else goto <D.29260>;
        <D.29259>:
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        D.29133->next = inst;
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        inst->prev = D.29133;
        D.29132 = cfg->cbb;
        D.29132->last_ins = inst;
        goto <D.29261>;
        <D.29260>:
        D.29132 = cfg->cbb;
        D.29132 = cfg->cbb;
        D.29132->last_ins = inst;
        D.29133 = D.29132->last_ins;
        D.29132->code = D.29133;
        <D.29261>:
      }
      {
        struct MonoInst * inst;

        D.29125 = cfg->mempool;
        inst = mono_mempool_alloc (D.29125, 80);
        inst->data.op[1].const_val = 0;
        D.29262 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29262;
        inst->prev = 0B;
        D.29263 = inst->prev;
        inst->next = D.29263;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29264 = inst->sreg3;
        inst->sreg2 = D.29264;
        D.29265 = inst->sreg2;
        inst->sreg1 = D.29265;
        D.29130 = cfg->ip;
        inst->cil_code = D.29130;
        inst->data.op[1].p = "NullReferenceException";
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        if (D.29133 != 0B) goto <D.29266>; else goto <D.29267>;
        <D.29266>:
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        D.29133->next = inst;
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        inst->prev = D.29133;
        D.29132 = cfg->cbb;
        D.29132->last_ins = inst;
        goto <D.29268>;
        <D.29267>:
        D.29132 = cfg->cbb;
        D.29132 = cfg->cbb;
        D.29132->last_ins = inst;
        D.29133 = D.29132->last_ins;
        D.29132->code = D.29133;
        <D.29268>:
      }
      goto <D.29269>;
      <D.29254>:
      <D.29269>:
      call->inst.sreg1 = this_reg;
      call->inst.data.op[0].const_val = 24;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      if (D.29133 != 0B) goto <D.29270>; else goto <D.29271>;
      <D.29270>:
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      D.29133->next = call;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      MEM[(struct MonoInst *)call].prev = D.29133;
      D.29132 = cfg->cbb;
      D.29132->last_ins = call;
      goto <D.29272>;
      <D.29271>:
      D.29132 = cfg->cbb;
      D.29132 = cfg->cbb;
      D.29132->last_ins = call;
      D.29133 = D.29132->last_ins;
      D.29132->code = D.29133;
      <D.29272>:
      D.29125 = cfg->mempool;
      dummy_use = mono_mempool_alloc (D.29125, 80);
      dummy_use->data.op[1].const_val = 0;
      D.29273 = dummy_use->data.op[1].const_val;
      dummy_use->data.op[0].const_val = D.29273;
      dummy_use->prev = 0B;
      D.29274 = dummy_use->prev;
      dummy_use->next = D.29274;
      dummy_use->opcode = 800;
      dummy_use->flags = 0;
      dummy_use->type = 0;
      dummy_use->dreg = -1;
      dummy_use->sreg3 = -1;
      D.29275 = dummy_use->sreg3;
      dummy_use->sreg2 = D.29275;
      D.29276 = dummy_use->sreg2;
      dummy_use->sreg1 = D.29276;
      D.29130 = cfg->ip;
      dummy_use->cil_code = D.29130;
      D.29277 = *args;
      D.29278 = D.29277->dreg;
      dummy_use->sreg1 = D.29278;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      if (D.29133 != 0B) goto <D.29279>; else goto <D.29280>;
      <D.29279>:
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      D.29133->next = dummy_use;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      dummy_use->prev = D.29133;
      D.29132 = cfg->cbb;
      D.29132->last_ins = dummy_use;
      goto <D.29281>;
      <D.29280>:
      D.29132 = cfg->cbb;
      D.29132 = cfg->cbb;
      D.29132->last_ins = dummy_use;
      D.29133 = D.29132->last_ins;
      D.29132->code = D.29133;
      <D.29281>:
      D.29184 = call;
      return D.29184;
    }
    <D.29250>:
    <D.29207>:
    D.29288 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.29289 = D.29288 & 64;
    if (D.29289 == 0) goto <D.29282>; else goto <D.29290>;
    <D.29290>:
    if (enable_for_aot != 0) goto <D.29282>; else goto <D.29283>;
    <D.29282>:
    D.29157 = method->flags;
    D.29158 = (int) D.29157;
    D.29159 = D.29158 & 64;
    if (D.29159 == 0) goto <D.29284>; else goto <D.29291>;
    <D.29291>:
    D.29157 = method->flags;
    D.29158 = (int) D.29157;
    D.29292 = D.29158 & 32;
    if (D.29292 != 0) goto <D.29285>; else goto <D.29293>;
    <D.29293>:
    D.29152 = method->klass;
    if (D.29152 != 0B) goto <D.29294>; else goto <D.29283>;
    <D.29294>:
    D.29152 = method->klass;
    D.29190 = D.29152->flags;
    D.29295 = D.29190 & 256;
    if (D.29295 != 0) goto <D.29285>; else goto <D.29283>;
    <D.29285>:
    D.29137 = BIT_FIELD_REF <*method, 8, 256>;
    D.29296 = D.29137 & 124;
    if (D.29296 != 36) goto <D.29284>; else goto <D.29283>;
    <D.29284>:
    D.29152 = method->klass;
    D.29153 = BIT_FIELD_REF <*D.29152, 8, 272>;
    D.29154 = D.29153 & 64;
    if (D.29154 == 0) goto <D.29286>; else goto <D.29297>;
    <D.29297>:
    if (context_used == 0) goto <D.29286>; else goto <D.29283>;
    <D.29286>:
    D.29152 = method->klass;
    D.29153 = BIT_FIELD_REF <*D.29152, 8, 272>;
    D.29154 = D.29153 & 64;
    if (D.29154 != 0) goto <D.29298>; else goto <D.29300>;
    <D.29300>:
    D.29152 = method->klass;
    D.29156 = mono_defaults.object_class;
    if (D.29152 == D.29156) goto <D.29298>; else goto <D.29299>;
    <D.29298>:
    D.29301 = mono_marshal_get_remoting_invoke_with_check (method);
    call->method = D.29301;
    method = call->method;
    <D.29299>:
    D.29137 = BIT_FIELD_REF <*method, 8, 256>;
    D.29138 = D.29137 & 128;
    if (D.29138 == 0) goto <D.29302>; else goto <D.29303>;
    <D.29302>:
    D.29304 = cfg->flags;
    D.29305 = D.29304 | 128;
    cfg->flags = D.29305;
    D.29251 = BIT_FIELD_REF <*cfg, 8, 5632>;
    D.29252 = D.29251 & 64;
    if (D.29252 != 0) goto <D.29306>; else goto <D.29307>;
    <D.29306>:
    D.29251 = BIT_FIELD_REF <*cfg, 8, 5632>;
    D.29252 = D.29251 & 64;
    if (D.29252 != 0) goto <D.29308>; else goto <D.29309>;
    <D.29308>:
    {
      struct MonoInst * inst;

      D.29125 = cfg->mempool;
      inst = mono_mempool_alloc (D.29125, 80);
      inst->data.op[1].const_val = 0;
      D.29310 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29310;
      inst->prev = 0B;
      D.29311 = inst->prev;
      inst->next = D.29311;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29312 = inst->sreg3;
      inst->sreg2 = D.29312;
      D.29313 = inst->sreg2;
      inst->sreg1 = D.29313;
      D.29130 = cfg->ip;
      inst->cil_code = D.29130;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      inst->data.op[1].const_val = 0;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      if (D.29133 != 0B) goto <D.29314>; else goto <D.29315>;
      <D.29314>:
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      D.29133->next = inst;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      inst->prev = D.29133;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      goto <D.29316>;
      <D.29315>:
      D.29132 = cfg->cbb;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      D.29133 = D.29132->last_ins;
      D.29132->code = D.29133;
      <D.29316>:
    }
    {
      struct MonoInst * inst;

      D.29125 = cfg->mempool;
      inst = mono_mempool_alloc (D.29125, 80);
      inst->data.op[1].const_val = 0;
      D.29317 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29317;
      inst->prev = 0B;
      D.29318 = inst->prev;
      inst->next = D.29318;
      inst->opcode = 455;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29319 = inst->sreg3;
      inst->sreg2 = D.29319;
      D.29320 = inst->sreg2;
      inst->sreg1 = D.29320;
      D.29130 = cfg->ip;
      inst->cil_code = D.29130;
      inst->data.op[1].p = "NullReferenceException";
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      if (D.29133 != 0B) goto <D.29321>; else goto <D.29322>;
      <D.29321>:
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      D.29133->next = inst;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      inst->prev = D.29133;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      goto <D.29323>;
      <D.29322>:
      D.29132 = cfg->cbb;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      D.29133 = D.29132->last_ins;
      D.29132->code = D.29133;
      <D.29323>:
    }
    goto <D.29324>;
    <D.29309>:
    <D.29324>:
    goto <D.29325>;
    <D.29307>:
    {
      struct MonoInst * inst;

      D.29125 = cfg->mempool;
      inst = mono_mempool_alloc (D.29125, 80);
      inst->data.op[1].const_val = 0;
      D.29326 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29326;
      inst->prev = 0B;
      D.29327 = inst->prev;
      inst->next = D.29327;
      inst->opcode = 340;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29328 = inst->sreg3;
      inst->sreg2 = D.29328;
      D.29329 = inst->sreg2;
      inst->sreg1 = D.29329;
      D.29130 = cfg->ip;
      inst->cil_code = D.29130;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      if (D.29133 != 0B) goto <D.29330>; else goto <D.29331>;
      <D.29330>:
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      D.29133->next = inst;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      inst->prev = D.29133;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      goto <D.29332>;
      <D.29331>:
      D.29132 = cfg->cbb;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      D.29133 = D.29132->last_ins;
      D.29132->code = D.29133;
      <D.29332>:
    }
    <D.29325>:
    {
      struct MonoInst * inst;

      D.29125 = cfg->mempool;
      inst = mono_mempool_alloc (D.29125, 80);
      inst->data.op[1].const_val = 0;
      D.29333 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29333;
      inst->prev = 0B;
      D.29334 = inst->prev;
      inst->next = D.29334;
      inst->opcode = 803;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29335 = inst->sreg3;
      inst->sreg2 = D.29335;
      D.29336 = inst->sreg2;
      inst->sreg1 = D.29336;
      D.29130 = cfg->ip;
      inst->cil_code = D.29130;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      if (D.29133 != 0B) goto <D.29337>; else goto <D.29338>;
      <D.29337>:
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      D.29133->next = inst;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      inst->prev = D.29133;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      goto <D.29339>;
      <D.29338>:
      D.29132 = cfg->cbb;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      D.29133 = D.29132->last_ins;
      D.29132->code = D.29133;
      <D.29339>:
    }
    <D.29303>:
    D.29340 = call->inst.opcode;
    D.29341 = (int) D.29340;
    D.29342 = callvirt_to_call (D.29341);
    D.29343 = (short unsigned int) D.29342;
    call->inst.opcode = D.29343;
    goto <D.29287>;
    <D.29283>:
    D.29157 = method->flags;
    D.29158 = (int) D.29157;
    D.29159 = D.29158 & 64;
    if (D.29159 != 0) goto <D.29347>; else goto <D.29344>;
    <D.29347>:
    D.29157 = method->flags;
    D.29158 = (int) D.29157;
    D.29292 = D.29158 & 32;
    if (D.29292 != 0) goto <D.29345>; else goto <D.29348>;
    <D.29348>:
    D.29152 = method->klass;
    if (D.29152 != 0B) goto <D.29349>; else goto <D.29344>;
    <D.29349>:
    D.29152 = method->klass;
    D.29190 = D.29152->flags;
    D.29295 = D.29190 & 256;
    if (D.29295 != 0) goto <D.29345>; else goto <D.29344>;
    <D.29345>:
    D.29304 = cfg->flags;
    D.29305 = D.29304 | 128;
    cfg->flags = D.29305;
    D.29251 = BIT_FIELD_REF <*cfg, 8, 5632>;
    D.29252 = D.29251 & 64;
    if (D.29252 != 0) goto <D.29350>; else goto <D.29351>;
    <D.29350>:
    D.29251 = BIT_FIELD_REF <*cfg, 8, 5632>;
    D.29252 = D.29251 & 64;
    if (D.29252 != 0) goto <D.29352>; else goto <D.29353>;
    <D.29352>:
    {
      struct MonoInst * inst;

      D.29125 = cfg->mempool;
      inst = mono_mempool_alloc (D.29125, 80);
      inst->data.op[1].const_val = 0;
      D.29354 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29354;
      inst->prev = 0B;
      D.29355 = inst->prev;
      inst->next = D.29355;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29356 = inst->sreg3;
      inst->sreg2 = D.29356;
      D.29357 = inst->sreg2;
      inst->sreg1 = D.29357;
      D.29130 = cfg->ip;
      inst->cil_code = D.29130;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      inst->data.op[1].const_val = 0;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      if (D.29133 != 0B) goto <D.29358>; else goto <D.29359>;
      <D.29358>:
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      D.29133->next = inst;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      inst->prev = D.29133;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      goto <D.29360>;
      <D.29359>:
      D.29132 = cfg->cbb;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      D.29133 = D.29132->last_ins;
      D.29132->code = D.29133;
      <D.29360>:
    }
    {
      struct MonoInst * inst;

      D.29125 = cfg->mempool;
      inst = mono_mempool_alloc (D.29125, 80);
      inst->data.op[1].const_val = 0;
      D.29361 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29361;
      inst->prev = 0B;
      D.29362 = inst->prev;
      inst->next = D.29362;
      inst->opcode = 455;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29363 = inst->sreg3;
      inst->sreg2 = D.29363;
      D.29364 = inst->sreg2;
      inst->sreg1 = D.29364;
      D.29130 = cfg->ip;
      inst->cil_code = D.29130;
      inst->data.op[1].p = "NullReferenceException";
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      if (D.29133 != 0B) goto <D.29365>; else goto <D.29366>;
      <D.29365>:
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      D.29133->next = inst;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      inst->prev = D.29133;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      goto <D.29367>;
      <D.29366>:
      D.29132 = cfg->cbb;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      D.29133 = D.29132->last_ins;
      D.29132->code = D.29133;
      <D.29367>:
    }
    goto <D.29368>;
    <D.29353>:
    <D.29368>:
    goto <D.29369>;
    <D.29351>:
    {
      struct MonoInst * inst;

      D.29125 = cfg->mempool;
      inst = mono_mempool_alloc (D.29125, 80);
      inst->data.op[1].const_val = 0;
      D.29370 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29370;
      inst->prev = 0B;
      D.29371 = inst->prev;
      inst->next = D.29371;
      inst->opcode = 340;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29372 = inst->sreg3;
      inst->sreg2 = D.29372;
      D.29373 = inst->sreg2;
      inst->sreg1 = D.29373;
      D.29130 = cfg->ip;
      inst->cil_code = D.29130;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      if (D.29133 != 0B) goto <D.29374>; else goto <D.29375>;
      <D.29374>:
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      D.29133->next = inst;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      inst->prev = D.29133;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      goto <D.29376>;
      <D.29375>:
      D.29132 = cfg->cbb;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      D.29133 = D.29132->last_ins;
      D.29132->code = D.29133;
      <D.29376>:
    }
    <D.29369>:
    {
      struct MonoInst * inst;

      D.29125 = cfg->mempool;
      inst = mono_mempool_alloc (D.29125, 80);
      inst->data.op[1].const_val = 0;
      D.29377 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29377;
      inst->prev = 0B;
      D.29378 = inst->prev;
      inst->next = D.29378;
      inst->opcode = 803;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29379 = inst->sreg3;
      inst->sreg2 = D.29379;
      D.29380 = inst->sreg2;
      inst->sreg1 = D.29380;
      D.29130 = cfg->ip;
      inst->cil_code = D.29130;
      inst->dreg = -1;
      inst->sreg1 = this_reg;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      if (D.29133 != 0B) goto <D.29381>; else goto <D.29382>;
      <D.29381>:
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      D.29133->next = inst;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      inst->prev = D.29133;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      goto <D.29383>;
      <D.29382>:
      D.29132 = cfg->cbb;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      D.29133 = D.29132->last_ins;
      D.29132->code = D.29133;
      <D.29383>:
    }
    D.29340 = call->inst.opcode;
    D.29341 = (int) D.29340;
    D.29384 = callvirt_to_call (D.29341);
    D.29385 = (short unsigned int) D.29384;
    call->inst.opcode = D.29385;
    goto <D.29346>;
    <D.29344>:
    D.29386 = alloc_preg (cfg);
    vtable_reg = (int) D.29386;
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 32;
      D.29387 = __ins_flags & 32;
      if (D.29387 != 0) goto <D.29388>; else goto <D.29389>;
      <D.29388>:
      D.29251 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.29252 = D.29251 & 64;
      if (D.29252 != 0) goto <D.29390>; else goto <D.29391>;
      <D.29390>:
      {
        struct MonoInst * inst;

        D.29125 = cfg->mempool;
        inst = mono_mempool_alloc (D.29125, 80);
        inst->data.op[1].const_val = 0;
        D.29392 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.29392;
        inst->prev = 0B;
        D.29393 = inst->prev;
        inst->next = D.29393;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.29394 = inst->sreg3;
        inst->sreg2 = D.29394;
        D.29395 = inst->sreg2;
        inst->sreg1 = D.29395;
        D.29130 = cfg->ip;
        inst->cil_code = D.29130;
        inst->dreg = -1;
        inst->sreg1 = this_reg;
        inst->data.op[1].const_val = 0;
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        if (D.29133 != 0B) goto <D.29396>; else goto <D.29397>;
        <D.29396>:
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        D.29133->next = inst;
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        inst->prev = D.29133;
        D.29132 = cfg->cbb;
        D.29132->last_ins = inst;
        goto <D.29398>;
        <D.29397>:
        D.29132 = cfg->cbb;
        D.29132 = cfg->cbb;
        D.29132->last_ins = inst;
        D.29133 = D.29132->last_ins;
        D.29132->code = D.29133;
        <D.29398>:
      }
      {
        struct MonoInst * inst;

        D.29125 = cfg->mempool;
        inst = mono_mempool_alloc (D.29125, 80);
        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 = 455;
        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.29130 = cfg->ip;
        inst->cil_code = D.29130;
        inst->data.op[1].p = "NullReferenceException";
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        if (D.29133 != 0B) goto <D.29403>; else goto <D.29404>;
        <D.29403>:
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        D.29133->next = inst;
        D.29132 = cfg->cbb;
        D.29133 = D.29132->last_ins;
        inst->prev = D.29133;
        D.29132 = cfg->cbb;
        D.29132->last_ins = inst;
        goto <D.29405>;
        <D.29404>:
        D.29132 = cfg->cbb;
        D.29132 = cfg->cbb;
        D.29132->last_ins = inst;
        D.29133 = D.29132->last_ins;
        D.29132->code = D.29133;
        <D.29405>:
      }
      goto <D.29406>;
      <D.29391>:
      <D.29406>:
      <D.29389>:
      D.29125 = cfg->mempool;
      inst = mono_mempool_alloc (D.29125, 80);
      inst->data.op[1].const_val = 0;
      D.29407 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29407;
      inst->prev = 0B;
      D.29408 = inst->prev;
      inst->next = D.29408;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29409 = inst->sreg3;
      inst->sreg2 = D.29409;
      D.29410 = inst->sreg2;
      inst->sreg1 = D.29410;
      D.29130 = cfg->ip;
      inst->cil_code = D.29130;
      inst->dreg = vtable_reg;
      inst->sreg1 = this_reg;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.29411 = (unsigned char) __ins_flags;
      inst->flags = D.29411;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      if (D.29133 != 0B) goto <D.29412>; else goto <D.29413>;
      <D.29412>:
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      D.29133->next = inst;
      D.29132 = cfg->cbb;
      D.29133 = D.29132->last_ins;
      inst->prev = D.29133;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      goto <D.29414>;
      <D.29413>:
      D.29132 = cfg->cbb;
      D.29132 = cfg->cbb;
      D.29132->last_ins = inst;
      D.29133 = D.29132->last_ins;
      D.29132->code = D.29133;
      <D.29414>:
    }
    D.29152 = method->klass;
    D.29190 = D.29152->flags;
    D.29191 = D.29190 & 32;
    if (D.29191 != 0) goto <D.29415>; else goto <D.29416>;
    <D.29415>:
    slot_reg = -1;
    mono_use_imt.10 = mono_use_imt;
    if (mono_use_imt.10 != 0) goto <D.29418>; else goto <D.29419>;
    <D.29418>:
    {
      guint32 imt_slot;

      imt_slot = mono_method_get_imt_slot (method);
      D.29420 = call->method;
      emit_imt_argument (cfg, call, D.29420, imt_arg);
      slot_reg = vtable_reg;
      imt_slot.11 = (int) imt_slot;
      D.29422 = imt_slot.11 + -19;
      offset = D.29422 * 8;
    }
    <D.29419>:
    if (slot_reg == -1) goto <D.29423>; else goto <D.29424>;
    <D.29423>:
    D.29425 = alloc_preg (cfg);
    slot_reg = (int) D.29425;
    D.29152 = method->klass;
    mini_emit_load_intf_reg_vtable (cfg, slot_reg, vtable_reg, D.29152);
    D.29426 = mono_method_get_vtable_index (method);
    offset = D.29426 * 8;
    <D.29424>:
    goto <D.29427>;
    <D.29416>:
    slot_reg = vtable_reg;
    D.29428 = mono_method_get_vtable_index (method);
    D.29429 = D.29428 * 8;
    D.29430 = (unsigned int) D.29429;
    D.29431 = D.29430 + 56;
    offset = (int) D.29431;
    if (imt_arg != 0B) goto <D.29432>; else goto <D.29433>;
    <D.29432>:
    D.29434 = mono_method_signature (method);
    D.29435 = D.29434->generic_param_count;
    D.29436 = D.29435 == 0;
    D.29437 = (long int) D.29436;
    D.29438 = __builtin_expect (D.29437, 0);
    if (D.29438 != 0) goto <D.29439>; else goto <D.29440>;
    <D.29439>:
    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.29440>:
    D.29420 = call->method;
    emit_imt_argument (cfg, call, D.29420, imt_arg);
    <D.29433>:
    <D.29427>:
    call->inst.sreg1 = slot_reg;
    D.29441 = (long int) offset;
    call->inst.data.op[0].const_val = D.29441;
    call->virtual = 1;
    <D.29346>:
    <D.29287>:
  }
  <D.29203>:
  D.29132 = cfg->cbb;
  D.29133 = D.29132->last_ins;
  if (D.29133 != 0B) goto <D.29442>; else goto <D.29443>;
  <D.29442>:
  D.29132 = cfg->cbb;
  D.29133 = D.29132->last_ins;
  D.29133->next = call;
  D.29132 = cfg->cbb;
  D.29133 = D.29132->last_ins;
  MEM[(struct MonoInst *)call].prev = D.29133;
  D.29132 = cfg->cbb;
  D.29132->last_ins = call;
  goto <D.29444>;
  <D.29443>:
  D.29132 = cfg->cbb;
  D.29132 = cfg->cbb;
  D.29132->last_ins = call;
  D.29133 = D.29132->last_ins;
  D.29132->code = D.29133;
  <D.29444>:
  if (rgctx_arg != 0B) goto <D.29445>; else goto <D.29446>;
  <D.29445>:
  set_rgctx_arg (cfg, call, rgctx_reg, rgctx_arg);
  <D.29446>:
  D.29184 = call;
  return D.29184;
}


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

  D.29448 = cfg->generic_sharing_context;
  if (D.29448 != 0B) goto <D.29449>; else goto <D.29450>;
  <D.29449>:
  D.29451 = mono_method_check_context_used (method);
  return D.29451;
  <D.29450>:
  D.29451 = 0;
  return D.29451;
}


emit_get_rgctx_method (struct MonoCompile * cfg, int context_used, struct MonoMethod * cmethod, MonoRgctxInfoType rgctx_type)
{
  struct MonoMemPool * D.29455;
  long int D.29456;
  struct MonoInst * D.29457;
  guint16 iftmp.12;
  unsigned char D.29459;
  unsigned char D.29460;
  int D.29464;
  int D.29465;
  const unsigned char * D.29466;
  unsigned int D.29467;
  int D.29468;
  struct MonoBasicBlock * D.29469;
  struct MonoInst * D.29470;
  struct MonoInst * D.29474;
  guint16 iftmp.13;
  unsigned int D.29481;
  int D.29482;
  struct MonoGenericContext * D.29484;
  struct MonoGenericInst * D.29485;
  struct MonoClass * D.29486;
  struct MonoDomain * D.29487;
  struct MonoVTable * D.29488;
  unsigned int D.29489;
  int D.29490;
  int D.29494;
  struct MonoMethod * D.29495;

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

    switch (rgctx_type) <default: <D.26007>, case 5: <D.26004>, case 8: <D.26005>>
    <D.26004>:
    D.29455 = cfg->mempool;
    ins = mono_mempool_alloc (D.29455, 80);
    ins->data.op[1].const_val = 0;
    D.29456 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.29456;
    ins->prev = 0B;
    D.29457 = ins->prev;
    ins->next = D.29457;
    D.29459 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.29460 = D.29459 & 64;
    if (D.29460 != 0) goto <D.29461>; else goto <D.29462>;
    <D.29461>:
    iftmp.12 = 736;
    goto <D.29463>;
    <D.29462>:
    iftmp.12 = 363;
    <D.29463>:
    ins->opcode = iftmp.12;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.29464 = ins->sreg3;
    ins->sreg2 = D.29464;
    D.29465 = ins->sreg2;
    ins->sreg1 = D.29465;
    D.29466 = cfg->ip;
    ins->cil_code = D.29466;
    ins->data.op[0].p = cmethod;
    ins->data.op[1].src = 6B;
    ins->type = 3;
    D.29467 = alloc_dreg (cfg, 3);
    D.29468 = (int) D.29467;
    ins->dreg = D.29468;
    D.29469 = cfg->cbb;
    D.29470 = D.29469->last_ins;
    if (D.29470 != 0B) goto <D.29471>; else goto <D.29472>;
    <D.29471>:
    D.29469 = cfg->cbb;
    D.29470 = D.29469->last_ins;
    D.29470->next = ins;
    D.29469 = cfg->cbb;
    D.29470 = D.29469->last_ins;
    ins->prev = D.29470;
    D.29469 = cfg->cbb;
    D.29469->last_ins = ins;
    goto <D.29473>;
    <D.29472>:
    D.29469 = cfg->cbb;
    D.29469 = cfg->cbb;
    D.29469->last_ins = ins;
    D.29470 = D.29469->last_ins;
    D.29469->code = D.29470;
    <D.29473>:
    D.29474 = ins;
    return D.29474;
    <D.26005>:
    D.29459 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.29460 = D.29459 & 64;
    if (D.29460 != 0) goto <D.29475>; else goto <D.29476>;
    <D.29475>:
    D.29455 = cfg->mempool;
    ins = mono_mempool_alloc (D.29455, 80);
    ins->data.op[1].const_val = 0;
    D.29456 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.29456;
    ins->prev = 0B;
    D.29457 = ins->prev;
    ins->next = D.29457;
    D.29459 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.29460 = D.29459 & 64;
    if (D.29460 != 0) goto <D.29478>; else goto <D.29479>;
    <D.29478>:
    iftmp.13 = 736;
    goto <D.29480>;
    <D.29479>:
    iftmp.13 = 363;
    <D.29480>:
    ins->opcode = iftmp.13;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.29464 = ins->sreg3;
    ins->sreg2 = D.29464;
    D.29465 = ins->sreg2;
    ins->sreg1 = D.29465;
    D.29466 = cfg->ip;
    ins->cil_code = D.29466;
    ins->data.op[0].p = cmethod;
    ins->data.op[1].src = 34B;
    ins->type = 3;
    D.29481 = alloc_dreg (cfg, 3);
    D.29482 = (int) D.29481;
    ins->dreg = D.29482;
    goto <D.29483>;
    <D.29476>:
    {
      struct MonoMethodRuntimeGenericContext * mrgctx;

      D.29484 = mini_method_get_context (cmethod);
      D.29485 = D.29484->method_inst;
      D.29486 = cmethod->klass;
      D.29487 = cfg->domain;
      D.29488 = mono_class_vtable (D.29487, D.29486);
      mrgctx = mono_method_lookup_rgctx (D.29488, D.29485);
      D.29455 = cfg->mempool;
      ins = mono_mempool_alloc (D.29455, 80);
      ins->data.op[1].const_val = 0;
      D.29456 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.29456;
      ins->prev = 0B;
      D.29457 = ins->prev;
      ins->next = D.29457;
      ins->opcode = 363;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.29464 = ins->sreg3;
      ins->sreg2 = D.29464;
      D.29465 = ins->sreg2;
      ins->sreg1 = D.29465;
      D.29466 = cfg->ip;
      ins->cil_code = D.29466;
      ins->data.op[0].p = mrgctx;
      ins->type = 3;
      D.29489 = alloc_dreg (cfg, 3);
      D.29490 = (int) D.29489;
      ins->dreg = D.29490;
    }
    <D.29483>:
    D.29469 = cfg->cbb;
    D.29470 = D.29469->last_ins;
    if (D.29470 != 0B) goto <D.29491>; else goto <D.29492>;
    <D.29491>:
    D.29469 = cfg->cbb;
    D.29470 = D.29469->last_ins;
    D.29470->next = ins;
    D.29469 = cfg->cbb;
    D.29470 = D.29469->last_ins;
    ins->prev = D.29470;
    D.29469 = cfg->cbb;
    D.29469->last_ins = ins;
    goto <D.29493>;
    <D.29492>:
    D.29469 = cfg->cbb;
    D.29469 = cfg->cbb;
    D.29469->last_ins = ins;
    D.29470 = D.29469->last_ins;
    D.29469->code = D.29470;
    <D.29493>:
    D.29474 = ins;
    return D.29474;
    <D.26007>:
    monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 3327);
  }
  <D.29454>:
  {
    struct MonoJumpInfoRgctxEntry * entry;
    struct MonoInst * rgctx;

    D.29494 = context_used & 2;
    D.29495 = cfg->current_method;
    D.29455 = cfg->mempool;
    entry = mono_patch_info_rgctx_entry_new (D.29455, D.29495, D.29494, 6, cmethod, rgctx_type);
    D.29495 = cfg->current_method;
    rgctx = emit_get_rgctx (cfg, D.29495, context_used);
    D.29474 = emit_rgctx_fetch (cfg, rgctx, entry);
    return D.29474;
  }
}


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.29497;
  struct MonoJumpInfo * D.29498;
  struct MonoJumpInfoRgctxEntry * D.29499;
  struct MonoJumpInfoRgctxEntry * res;

  res = mono_mempool_alloc0 (mp, 32);
  res->method = method;
  res->in_mrgctx = in_mrgctx;
  D.29497 = mono_mempool_alloc0 (mp, 40);
  res->data = D.29497;
  D.29498 = res->data;
  D.29498->type = patch_type;
  D.29498 = res->data;
  D.29498->data.target = patch_data;
  res->info_type = info_type;
  D.29499 = res;
  return D.29499;
}


emit_get_rgctx (struct MonoCompile * cfg, struct MonoMethod * method, int context_used)
{
  struct MonoGenericSharingContext * D.29501;
  _Bool D.29502;
  long int D.29503;
  long int D.29504;
  short unsigned int D.29507;
  int D.29508;
  int D.29509;
  int D.29512;
  struct MonoClass * D.29515;
  unsigned char D.29516;
  unsigned char D.29517;
  struct MonoMemPool * D.29520;
  long int D.29521;
  struct MonoInst * D.29522;
  int D.29523;
  int D.29524;
  const unsigned char * D.29525;
  struct MonoType * * D.29526;
  struct MonoType * D.29527;
  unsigned int D.29528;
  short unsigned int D.29529;
  struct MonoInst * * D.29530;
  struct MonoInst * D.29531;
  struct MonoClass * D.29532;
  int D.29533;
  unsigned char D.29534;
  <unnamed type> D.29535;
  unsigned int D.29536;
  int D.29537;
  short unsigned int D.29538;
  struct MonoClass * D.29541;
  struct MonoBasicBlock * D.29542;
  struct MonoInst * D.29543;
  _Bool D.29549;
  long int D.29550;
  long int D.29551;
  int iftmp.14;
  unsigned char D.29558;
  unsigned char D.29559;
  struct MonoGenericContext * D.29561;
  struct MonoGenericInst * D.29562;
  _Bool D.29563;
  long int D.29564;
  long int D.29565;
  long int D.29568;
  struct MonoInst * D.29569;
  int D.29570;
  int D.29571;
  struct MonoInst * * D.29572;
  long int D.29573;
  long unsigned int D.29574;
  long unsigned int D.29575;
  struct MonoInst * * D.29576;
  struct MonoInst * D.29577;
  struct MonoType * D.29578;
  unsigned int D.29579;
  short unsigned int D.29580;
  struct MonoClass * D.29581;
  int D.29582;
  unsigned char D.29583;
  <unnamed type> D.29584;
  unsigned int D.29585;
  int D.29586;
  short unsigned int D.29587;
  struct MonoClass * D.29590;
  struct MonoInst * D.29594;
  long int D.29600;
  struct MonoInst * D.29601;
  int D.29602;
  int D.29603;
  long int D.29604;
  long unsigned int D.29605;
  long unsigned int D.29606;
  struct MonoInst * * D.29607;
  struct MonoInst * D.29608;
  struct MonoType * D.29609;
  unsigned int D.29610;
  short unsigned int D.29611;
  struct MonoClass * D.29612;
  int D.29613;
  unsigned char D.29614;
  <unnamed type> D.29615;
  unsigned int D.29616;
  int D.29617;
  short unsigned int D.29618;
  struct MonoClass * D.29621;
  struct MonoGenericContext * D.29627;
  struct MonoGenericInst * D.29628;
  unsigned int D.29631;
  int D.29632;
  unsigned int D.29636;
  long int D.29637;
  struct MonoInst * D.29638;
  int D.29639;
  int D.29640;
  int D.29641;
  struct MonoInst * this;

  this = 0B;
  D.29501 = cfg->generic_sharing_context;
  D.29502 = D.29501 == 0B;
  D.29503 = (long int) D.29502;
  D.29504 = __builtin_expect (D.29503, 0);
  if (D.29504 != 0) goto <D.29505>; else goto <D.29506>;
  <D.29505>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3189, "cfg->generic_sharing_context");
  <D.29506>:
  D.29507 = method->flags;
  D.29508 = (int) D.29507;
  D.29509 = D.29508 & 16;
  if (D.29509 == 0) goto <D.29510>; else goto <D.29511>;
  <D.29510>:
  D.29512 = context_used & 2;
  if (D.29512 == 0) goto <D.29513>; else goto <D.29514>;
  <D.29513>:
  D.29515 = method->klass;
  D.29516 = BIT_FIELD_REF <*D.29515, 8, 256>;
  D.29517 = D.29516 & 8;
  if (D.29517 == 0) goto <D.29518>; else goto <D.29519>;
  <D.29518>:
  D.29520 = cfg->mempool;
  this = mono_mempool_alloc (D.29520, 80);
  this->data.op[1].const_val = 0;
  D.29521 = this->data.op[1].const_val;
  this->data.op[0].const_val = D.29521;
  this->prev = 0B;
  D.29522 = this->prev;
  this->next = D.29522;
  this->opcode = 428;
  this->flags = 0;
  this->type = 0;
  this->dreg = -1;
  this->sreg3 = -1;
  D.29523 = this->sreg3;
  this->sreg2 = D.29523;
  D.29524 = this->sreg2;
  this->sreg1 = D.29524;
  D.29525 = cfg->ip;
  this->cil_code = D.29525;
  D.29526 = cfg->arg_types;
  D.29527 = *D.29526;
  D.29528 = mono_type_to_regmove (cfg, D.29527);
  D.29529 = (short unsigned int) D.29528;
  this->opcode = D.29529;
  D.29526 = cfg->arg_types;
  D.29527 = *D.29526;
  type_to_eval_stack_type (cfg, D.29527, this);
  D.29530 = cfg->args;
  D.29531 = *D.29530;
  D.29532 = D.29531->klass;
  this->klass = D.29532;
  D.29530 = cfg->args;
  D.29531 = *D.29530;
  D.29533 = D.29531->dreg;
  this->sreg1 = D.29533;
  D.29534 = this->type;
  D.29535 = (<unnamed type>) D.29534;
  D.29536 = alloc_dreg (cfg, D.29535);
  D.29537 = (int) D.29536;
  this->dreg = D.29537;
  D.29538 = this->opcode;
  if (D.29538 == 431) goto <D.29539>; else goto <D.29540>;
  <D.29539>:
  D.29526 = cfg->arg_types;
  D.29527 = *D.29526;
  D.29541 = mono_class_from_mono_type (D.29527);
  this->klass = D.29541;
  <D.29540>:
  D.29542 = cfg->cbb;
  D.29543 = D.29542->last_ins;
  if (D.29543 != 0B) goto <D.29544>; else goto <D.29545>;
  <D.29544>:
  D.29542 = cfg->cbb;
  D.29543 = D.29542->last_ins;
  D.29543->next = this;
  D.29542 = cfg->cbb;
  D.29543 = D.29542->last_ins;
  this->prev = D.29543;
  D.29542 = cfg->cbb;
  D.29542->last_ins = this;
  goto <D.29546>;
  <D.29545>:
  D.29542 = cfg->cbb;
  D.29542 = cfg->cbb;
  D.29542->last_ins = this;
  D.29543 = D.29542->last_ins;
  D.29542->code = D.29543;
  <D.29546>:
  <D.29519>:
  <D.29514>:
  <D.29511>:
  D.29512 = context_used & 2;
  if (D.29512 != 0) goto <D.29547>; else goto <D.29548>;
  <D.29547>:
  {
    struct MonoInst * mrgctx_loc;
    struct MonoInst * mrgctx_var;

    D.29549 = this != 0B;
    D.29550 = (long int) D.29549;
    D.29551 = __builtin_expect (D.29550, 0);
    if (D.29551 != 0) goto <D.29552>; else goto <D.29553>;
    <D.29552>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3199, "!this");
    <D.29553>:
    D.29558 = BIT_FIELD_REF <*method, 8, 264>;
    D.29559 = D.29558 & 16;
    if (D.29559 == 0) goto <D.29555>; else goto <D.29560>;
    <D.29560>:
    D.29561 = mono_method_get_context (method);
    D.29562 = D.29561->method_inst;
    if (D.29562 == 0B) goto <D.29555>; else goto <D.29556>;
    <D.29555>:
    iftmp.14 = 1;
    goto <D.29557>;
    <D.29556>:
    iftmp.14 = 0;
    <D.29557>:
    D.29563 = iftmp.14 != 0;
    D.29564 = (long int) D.29563;
    D.29565 = __builtin_expect (D.29564, 0);
    if (D.29565 != 0) goto <D.29566>; else goto <D.29567>;
    <D.29566>:
    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.29567>:
    mrgctx_loc = mono_get_vtable_var (cfg);
    D.29520 = cfg->mempool;
    mrgctx_var = mono_mempool_alloc (D.29520, 80);
    mrgctx_var->data.op[1].const_val = 0;
    D.29568 = mrgctx_var->data.op[1].const_val;
    mrgctx_var->data.op[0].const_val = D.29568;
    mrgctx_var->prev = 0B;
    D.29569 = mrgctx_var->prev;
    mrgctx_var->next = D.29569;
    mrgctx_var->opcode = 428;
    mrgctx_var->flags = 0;
    mrgctx_var->type = 0;
    mrgctx_var->dreg = -1;
    mrgctx_var->sreg3 = -1;
    D.29570 = mrgctx_var->sreg3;
    mrgctx_var->sreg2 = D.29570;
    D.29571 = mrgctx_var->sreg2;
    mrgctx_var->sreg1 = D.29571;
    D.29525 = cfg->ip;
    mrgctx_var->cil_code = D.29525;
    D.29572 = cfg->varinfo;
    D.29573 = mrgctx_loc->data.op[0].const_val;
    D.29574 = (long unsigned int) D.29573;
    D.29575 = D.29574 * 8;
    D.29576 = D.29572 + D.29575;
    D.29577 = *D.29576;
    D.29578 = D.29577->data.op[1].vtype;
    D.29579 = mono_type_to_regmove (cfg, D.29578);
    D.29580 = (short unsigned int) D.29579;
    mrgctx_var->opcode = D.29580;
    D.29572 = cfg->varinfo;
    D.29573 = mrgctx_loc->data.op[0].const_val;
    D.29574 = (long unsigned int) D.29573;
    D.29575 = D.29574 * 8;
    D.29576 = D.29572 + D.29575;
    D.29577 = *D.29576;
    D.29578 = D.29577->data.op[1].vtype;
    type_to_eval_stack_type (cfg, D.29578, mrgctx_var);
    D.29572 = cfg->varinfo;
    D.29573 = mrgctx_loc->data.op[0].const_val;
    D.29574 = (long unsigned int) D.29573;
    D.29575 = D.29574 * 8;
    D.29576 = D.29572 + D.29575;
    D.29577 = *D.29576;
    D.29581 = D.29577->klass;
    mrgctx_var->klass = D.29581;
    D.29572 = cfg->varinfo;
    D.29573 = mrgctx_loc->data.op[0].const_val;
    D.29574 = (long unsigned int) D.29573;
    D.29575 = D.29574 * 8;
    D.29576 = D.29572 + D.29575;
    D.29577 = *D.29576;
    D.29582 = D.29577->dreg;
    mrgctx_var->sreg1 = D.29582;
    D.29583 = mrgctx_var->type;
    D.29584 = (<unnamed type>) D.29583;
    D.29585 = alloc_dreg (cfg, D.29584);
    D.29586 = (int) D.29585;
    mrgctx_var->dreg = D.29586;
    D.29587 = mrgctx_var->opcode;
    if (D.29587 == 431) goto <D.29588>; else goto <D.29589>;
    <D.29588>:
    D.29572 = cfg->varinfo;
    D.29573 = mrgctx_loc->data.op[0].const_val;
    D.29574 = (long unsigned int) D.29573;
    D.29575 = D.29574 * 8;
    D.29576 = D.29572 + D.29575;
    D.29577 = *D.29576;
    D.29578 = D.29577->data.op[1].vtype;
    D.29590 = mono_class_from_mono_type (D.29578);
    mrgctx_var->klass = D.29590;
    <D.29589>:
    D.29542 = cfg->cbb;
    D.29543 = D.29542->last_ins;
    if (D.29543 != 0B) goto <D.29591>; else goto <D.29592>;
    <D.29591>:
    D.29542 = cfg->cbb;
    D.29543 = D.29542->last_ins;
    D.29543->next = mrgctx_var;
    D.29542 = cfg->cbb;
    D.29543 = D.29542->last_ins;
    mrgctx_var->prev = D.29543;
    D.29542 = cfg->cbb;
    D.29542->last_ins = mrgctx_var;
    goto <D.29593>;
    <D.29592>:
    D.29542 = cfg->cbb;
    D.29542 = cfg->cbb;
    D.29542->last_ins = mrgctx_var;
    D.29543 = D.29542->last_ins;
    D.29542->code = D.29543;
    <D.29593>:
    D.29594 = mrgctx_var;
    return D.29594;
  }
  <D.29548>:
  D.29507 = method->flags;
  D.29508 = (int) D.29507;
  D.29509 = D.29508 & 16;
  if (D.29509 != 0) goto <D.29595>; else goto <D.29597>;
  <D.29597>:
  D.29515 = method->klass;
  D.29516 = BIT_FIELD_REF <*D.29515, 8, 256>;
  D.29517 = D.29516 & 8;
  if (D.29517 != 0) goto <D.29595>; else goto <D.29596>;
  <D.29595>:
  {
    struct MonoInst * vtable_loc;
    struct MonoInst * vtable_var;

    D.29549 = this != 0B;
    D.29550 = (long int) D.29549;
    D.29551 = __builtin_expect (D.29550, 0);
    if (D.29551 != 0) goto <D.29598>; else goto <D.29599>;
    <D.29598>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3209, "!this");
    <D.29599>:
    vtable_loc = mono_get_vtable_var (cfg);
    D.29520 = cfg->mempool;
    vtable_var = mono_mempool_alloc (D.29520, 80);
    vtable_var->data.op[1].const_val = 0;
    D.29600 = vtable_var->data.op[1].const_val;
    vtable_var->data.op[0].const_val = D.29600;
    vtable_var->prev = 0B;
    D.29601 = vtable_var->prev;
    vtable_var->next = D.29601;
    vtable_var->opcode = 428;
    vtable_var->flags = 0;
    vtable_var->type = 0;
    vtable_var->dreg = -1;
    vtable_var->sreg3 = -1;
    D.29602 = vtable_var->sreg3;
    vtable_var->sreg2 = D.29602;
    D.29603 = vtable_var->sreg2;
    vtable_var->sreg1 = D.29603;
    D.29525 = cfg->ip;
    vtable_var->cil_code = D.29525;
    D.29572 = cfg->varinfo;
    D.29604 = vtable_loc->data.op[0].const_val;
    D.29605 = (long unsigned int) D.29604;
    D.29606 = D.29605 * 8;
    D.29607 = D.29572 + D.29606;
    D.29608 = *D.29607;
    D.29609 = D.29608->data.op[1].vtype;
    D.29610 = mono_type_to_regmove (cfg, D.29609);
    D.29611 = (short unsigned int) D.29610;
    vtable_var->opcode = D.29611;
    D.29572 = cfg->varinfo;
    D.29604 = vtable_loc->data.op[0].const_val;
    D.29605 = (long unsigned int) D.29604;
    D.29606 = D.29605 * 8;
    D.29607 = D.29572 + D.29606;
    D.29608 = *D.29607;
    D.29609 = D.29608->data.op[1].vtype;
    type_to_eval_stack_type (cfg, D.29609, vtable_var);
    D.29572 = cfg->varinfo;
    D.29604 = vtable_loc->data.op[0].const_val;
    D.29605 = (long unsigned int) D.29604;
    D.29606 = D.29605 * 8;
    D.29607 = D.29572 + D.29606;
    D.29608 = *D.29607;
    D.29612 = D.29608->klass;
    vtable_var->klass = D.29612;
    D.29572 = cfg->varinfo;
    D.29604 = vtable_loc->data.op[0].const_val;
    D.29605 = (long unsigned int) D.29604;
    D.29606 = D.29605 * 8;
    D.29607 = D.29572 + D.29606;
    D.29608 = *D.29607;
    D.29613 = D.29608->dreg;
    vtable_var->sreg1 = D.29613;
    D.29614 = vtable_var->type;
    D.29615 = (<unnamed type>) D.29614;
    D.29616 = alloc_dreg (cfg, D.29615);
    D.29617 = (int) D.29616;
    vtable_var->dreg = D.29617;
    D.29618 = vtable_var->opcode;
    if (D.29618 == 431) goto <D.29619>; else goto <D.29620>;
    <D.29619>:
    D.29572 = cfg->varinfo;
    D.29604 = vtable_loc->data.op[0].const_val;
    D.29605 = (long unsigned int) D.29604;
    D.29606 = D.29605 * 8;
    D.29607 = D.29572 + D.29606;
    D.29608 = *D.29607;
    D.29609 = D.29608->data.op[1].vtype;
    D.29621 = mono_class_from_mono_type (D.29609);
    vtable_var->klass = D.29621;
    <D.29620>:
    D.29542 = cfg->cbb;
    D.29543 = D.29542->last_ins;
    if (D.29543 != 0B) goto <D.29622>; else goto <D.29623>;
    <D.29622>:
    D.29542 = cfg->cbb;
    D.29543 = D.29542->last_ins;
    D.29543->next = vtable_var;
    D.29542 = cfg->cbb;
    D.29543 = D.29542->last_ins;
    vtable_var->prev = D.29543;
    D.29542 = cfg->cbb;
    D.29542->last_ins = vtable_var;
    goto <D.29624>;
    <D.29623>:
    D.29542 = cfg->cbb;
    D.29542 = cfg->cbb;
    D.29542->last_ins = vtable_var;
    D.29543 = D.29542->last_ins;
    D.29542->code = D.29543;
    <D.29624>:
    D.29558 = BIT_FIELD_REF <*method, 8, 264>;
    D.29559 = D.29558 & 16;
    if (D.29559 != 0) goto <D.29625>; else goto <D.29626>;
    <D.29625>:
    D.29627 = mono_method_get_context (method);
    D.29628 = D.29627->method_inst;
    if (D.29628 != 0B) goto <D.29629>; else goto <D.29630>;
    <D.29629>:
    {
      struct MonoInst * mrgctx_var;
      int vtable_reg;

      mrgctx_var = vtable_var;
      D.29631 = alloc_preg (cfg);
      vtable_reg = (int) D.29631;
      D.29520 = cfg->mempool;
      vtable_var = mono_mempool_alloc (D.29520, 80);
      vtable_var->data.op[1].const_val = 0;
      D.29600 = vtable_var->data.op[1].const_val;
      vtable_var->data.op[0].const_val = D.29600;
      vtable_var->prev = 0B;
      D.29601 = vtable_var->prev;
      vtable_var->next = D.29601;
      vtable_var->opcode = 391;
      vtable_var->flags = 0;
      vtable_var->type = 0;
      vtable_var->dreg = -1;
      vtable_var->sreg3 = -1;
      D.29602 = vtable_var->sreg3;
      vtable_var->sreg2 = D.29602;
      D.29603 = vtable_var->sreg2;
      vtable_var->sreg1 = D.29603;
      D.29525 = cfg->ip;
      vtable_var->cil_code = D.29525;
      vtable_var->dreg = vtable_reg;
      D.29632 = mrgctx_var->dreg;
      vtable_var->sreg1 = D.29632;
      vtable_var->data.op[0].const_val = 0;
      vtable_var->type = 1;
      D.29542 = cfg->cbb;
      D.29543 = D.29542->last_ins;
      if (D.29543 != 0B) goto <D.29633>; else goto <D.29634>;
      <D.29633>:
      D.29542 = cfg->cbb;
      D.29543 = D.29542->last_ins;
      D.29543->next = vtable_var;
      D.29542 = cfg->cbb;
      D.29543 = D.29542->last_ins;
      vtable_var->prev = D.29543;
      D.29542 = cfg->cbb;
      D.29542->last_ins = vtable_var;
      goto <D.29635>;
      <D.29634>:
      D.29542 = cfg->cbb;
      D.29542 = cfg->cbb;
      D.29542->last_ins = vtable_var;
      D.29543 = D.29542->last_ins;
      D.29542->code = D.29543;
      <D.29635>:
      vtable_var->type = 3;
    }
    <D.29630>:
    <D.29626>:
    D.29594 = vtable_var;
    return D.29594;
  }
  <D.29596>:
  {
    struct MonoInst * ins;
    int vtable_reg;

    D.29636 = alloc_preg (cfg);
    vtable_reg = (int) D.29636;
    D.29520 = cfg->mempool;
    ins = mono_mempool_alloc (D.29520, 80);
    ins->data.op[1].const_val = 0;
    D.29637 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.29637;
    ins->prev = 0B;
    D.29638 = ins->prev;
    ins->next = D.29638;
    ins->opcode = 391;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.29639 = ins->sreg3;
    ins->sreg2 = D.29639;
    D.29640 = ins->sreg2;
    ins->sreg1 = D.29640;
    D.29525 = cfg->ip;
    ins->cil_code = D.29525;
    ins->dreg = vtable_reg;
    D.29641 = this->dreg;
    ins->sreg1 = D.29641;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.29542 = cfg->cbb;
    D.29543 = D.29542->last_ins;
    if (D.29543 != 0B) goto <D.29642>; else goto <D.29643>;
    <D.29642>:
    D.29542 = cfg->cbb;
    D.29543 = D.29542->last_ins;
    D.29543->next = ins;
    D.29542 = cfg->cbb;
    D.29543 = D.29542->last_ins;
    ins->prev = D.29543;
    D.29542 = cfg->cbb;
    D.29542->last_ins = ins;
    goto <D.29644>;
    <D.29643>:
    D.29542 = cfg->cbb;
    D.29542 = cfg->cbb;
    D.29542->last_ins = ins;
    D.29543 = D.29542->last_ins;
    D.29542->code = D.29543;
    <D.29644>:
    D.29594 = ins;
    return D.29594;
  }
}


mono_get_vtable_var (struct MonoCompile * cfg)
{
  struct MonoGenericSharingContext * D.29646;
  _Bool D.29647;
  long int D.29648;
  long int D.29649;
  struct MonoInst * D.29652;
  struct MonoClass * D.29655;
  struct MonoType * D.29656;
  struct MonoInst * D.29657;
  unsigned char D.29658;
  unsigned char D.29659;
  struct MonoInst * D.29660;

  D.29646 = cfg->generic_sharing_context;
  D.29647 = D.29646 == 0B;
  D.29648 = (long int) D.29647;
  D.29649 = __builtin_expect (D.29648, 0);
  if (D.29649 != 0) goto <D.29650>; else goto <D.29651>;
  <D.29650>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1161, "cfg->generic_sharing_context");
  <D.29651>:
  D.29652 = cfg->rgctx_var;
  if (D.29652 == 0B) goto <D.29653>; else goto <D.29654>;
  <D.29653>:
  D.29655 = mono_defaults.int_class;
  D.29656 = &D.29655->byval_arg;
  D.29657 = mono_compile_create_var (cfg, D.29656, 329);
  cfg->rgctx_var = D.29657;
  D.29652 = cfg->rgctx_var;
  D.29652 = cfg->rgctx_var;
  D.29658 = D.29652->flags;
  D.29659 = D.29658 | 4;
  D.29652->flags = D.29659;
  <D.29654>:
  D.29660 = cfg->rgctx_var;
  return D.29660;
}


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

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


mono_emit_abs_call (struct MonoCompile * cfg, MonoJumpInfoType patch_type, const void * data, struct MonoMethodSignature * sig, struct MonoInst * * args)
{
  struct MonoMemPool * D.29665;
  struct GHashTable * D.29666;
  struct GHashTable * D.29669;
  struct MonoInst * D.29670;
  struct MonoJumpInfo * ji;
  struct MonoInst * ins;

  D.29665 = cfg->mempool;
  ji = mono_patch_info_new (D.29665, 0, patch_type, data);
  D.29666 = cfg->abs_patches;
  if (D.29666 == 0B) goto <D.29667>; else goto <D.29668>;
  <D.29667>:
  D.29669 = monoeg_g_hash_table_new (0B, 0B);
  cfg->abs_patches = D.29669;
  <D.29668>:
  D.29666 = cfg->abs_patches;
  monoeg_g_hash_table_insert_replace (D.29666, ji, ji, 0);
  ins = mono_emit_native_call (cfg, ji, sig, args);
  MEM[(struct MonoCallInst *)ins].fptr_is_patch = 1;
  D.29670 = ins;
  return D.29670;
}


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

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


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.29676;
  struct MonoMemPool * D.29677;
  long int D.29678;
  struct MonoInst * D.29679;
  int D.29680;
  int D.29681;
  const unsigned char * D.29682;
  int D.29683;
  struct MonoBasicBlock * D.29684;
  struct MonoInst * D.29685;
  _Bool D.29689;
  int D.29690;
  int D.29691;
  struct MonoInst * D.29699;
  struct MonoCallInst * call;
  int rgctx_reg;

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

    D.29677 = cfg->mempool;
    inst = mono_mempool_alloc (D.29677, 80);
    inst->data.op[1].const_val = 0;
    D.29678 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29678;
    inst->prev = 0B;
    D.29679 = inst->prev;
    inst->next = D.29679;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29680 = inst->sreg3;
    inst->sreg2 = D.29680;
    D.29681 = inst->sreg2;
    inst->sreg1 = D.29681;
    D.29682 = cfg->ip;
    inst->cil_code = D.29682;
    inst->dreg = rgctx_reg;
    D.29683 = rgctx_arg->dreg;
    inst->sreg1 = D.29683;
    D.29684 = cfg->cbb;
    D.29685 = D.29684->last_ins;
    if (D.29685 != 0B) goto <D.29686>; else goto <D.29687>;
    <D.29686>:
    D.29684 = cfg->cbb;
    D.29685 = D.29684->last_ins;
    D.29685->next = inst;
    D.29684 = cfg->cbb;
    D.29685 = D.29684->last_ins;
    inst->prev = D.29685;
    D.29684 = cfg->cbb;
    D.29684->last_ins = inst;
    goto <D.29688>;
    <D.29687>:
    D.29684 = cfg->cbb;
    D.29684 = cfg->cbb;
    D.29684->last_ins = inst;
    D.29685 = D.29684->last_ins;
    D.29684->code = D.29685;
    <D.29688>:
  }
  <D.29675>:
  D.29689 = rgctx_arg != 0B;
  D.29690 = (int) D.29689;
  call = mono_emit_call_args (cfg, sig, args, 1, 0, 0, D.29690, 0);
  D.29691 = addr->dreg;
  call->inst.sreg1 = D.29691;
  if (imt_arg != 0B) goto <D.29692>; else goto <D.29693>;
  <D.29692>:
  emit_imt_argument (cfg, call, 0B, imt_arg);
  <D.29693>:
  D.29684 = cfg->cbb;
  D.29685 = D.29684->last_ins;
  if (D.29685 != 0B) goto <D.29694>; else goto <D.29695>;
  <D.29694>:
  D.29684 = cfg->cbb;
  D.29685 = D.29684->last_ins;
  D.29685->next = call;
  D.29684 = cfg->cbb;
  D.29685 = D.29684->last_ins;
  MEM[(struct MonoInst *)call].prev = D.29685;
  D.29684 = cfg->cbb;
  D.29684->last_ins = call;
  goto <D.29696>;
  <D.29695>:
  D.29684 = cfg->cbb;
  D.29684 = cfg->cbb;
  D.29684->last_ins = call;
  D.29685 = D.29684->last_ins;
  D.29684->code = D.29685;
  <D.29696>:
  if (rgctx_arg != 0B) goto <D.29697>; else goto <D.29698>;
  <D.29697>:
  set_rgctx_arg (cfg, call, rgctx_reg, rgctx_arg);
  <D.29698>:
  D.29699 = call;
  return D.29699;
}


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.29703;
  int D.29704;
  int D.29705;
  const unsigned char * D.29706;
  struct MonoGenericSharingContext * D.29708;
  struct MonoType * D.29709;
  int D.29710;
  short unsigned int D.29711;
  unsigned char D.29712;
  <unnamed-unsigned:1> D.29713;
  struct MonoInst * D.29714;
  int D.29717;
  struct MonoInst * D.29720;
  int D.29722;
  <unnamed-unsigned:1> D.29725;
  int D.29726;
  long int D.29727;
  struct MonoInst * D.29728;
  int D.29729;
  int D.29730;
  unsigned int D.29731;
  int D.29732;
  struct MonoBasicBlock * D.29733;
  struct MonoInst * D.29734;
  int D.29738;
  int D.29740;
  unsigned char D.29743;
  <unnamed type> D.29744;
  unsigned int D.29745;
  int D.29746;
  unsigned char D.29747;
  <unnamed-unsigned:1> D.29748;
  unsigned int D.29749;
  unsigned int D.29750;
  unsigned int D.29751;
  unsigned int D.29752;
  unsigned int D.29753;
  struct MonoCallInst * D.29754;
  struct MonoType * sig_ret;
  struct MonoCallInst * call;

  if (tail != 0) goto <D.29701>; else goto <D.29702>;
  <D.29701>:
  D.29703 = cfg->mempool;
  call = mono_mempool_alloc0 (D.29703, 192);
  call->inst.opcode = 448;
  call->inst.dreg = -1;
  call->inst.sreg3 = -1;
  D.29704 = call->inst.sreg3;
  call->inst.sreg2 = D.29704;
  D.29705 = call->inst.sreg2;
  call->inst.sreg1 = D.29705;
  D.29706 = cfg->ip;
  call->inst.cil_code = D.29706;
  goto <D.29707>;
  <D.29702>:
  D.29703 = cfg->mempool;
  call = mono_mempool_alloc0 (D.29703, 192);
  D.29708 = cfg->generic_sharing_context;
  D.29709 = sig->ret;
  D.29710 = ret_type_to_call_opcode (D.29709, calli, virtual, D.29708);
  D.29711 = (short unsigned int) D.29710;
  call->inst.opcode = D.29711;
  call->inst.dreg = -1;
  call->inst.sreg3 = -1;
  D.29704 = call->inst.sreg3;
  call->inst.sreg2 = D.29704;
  D.29705 = call->inst.sreg2;
  call->inst.sreg1 = D.29705;
  D.29706 = cfg->ip;
  call->inst.cil_code = D.29706;
  <D.29707>:
  call->args = args;
  call->signature = sig;
  D.29712 = (unsigned char) rgctx;
  D.29713 = (<unnamed-unsigned:1>) D.29712;
  call->rgctx_reg = D.29713;
  D.29709 = sig->ret;
  sig_ret = mini_replace_type (D.29709);
  D.29714 = &call->inst;
  type_to_eval_stack_type (cfg, sig_ret, D.29714);
  if (tail != 0) goto <D.29715>; else goto <D.29716>;
  <D.29715>:
  D.29717 = mini_type_is_vtype (cfg, sig_ret);
  if (D.29717 != 0) goto <D.29718>; else goto <D.29719>;
  <D.29718>:
  D.29720 = cfg->vret_addr;
  call->vret_var = D.29720;
  <D.29719>:
  goto <D.29721>;
  <D.29716>:
  D.29722 = mini_type_is_vtype (cfg, sig_ret);
  if (D.29722 != 0) goto <D.29723>; else goto <D.29724>;
  <D.29723>:
  {
    struct MonoInst * temp;
    struct MonoInst * loada;

    temp = mono_compile_create_var (cfg, sig_ret, 329);
    D.29725 = sig->pinvoke;
    D.29726 = (int) D.29725;
    temp->backend.is_pinvoke = D.29726;
    D.29703 = cfg->mempool;
    loada = mono_mempool_alloc (D.29703, 80);
    loada->data.op[1].const_val = 0;
    D.29727 = loada->data.op[1].const_val;
    loada->data.op[0].const_val = D.29727;
    loada->prev = 0B;
    D.29728 = loada->prev;
    loada->next = D.29728;
    loada->opcode = 334;
    loada->flags = 0;
    loada->type = 0;
    loada->dreg = -1;
    loada->sreg3 = -1;
    D.29729 = loada->sreg3;
    loada->sreg2 = D.29729;
    D.29730 = loada->sreg2;
    loada->sreg1 = D.29730;
    D.29706 = cfg->ip;
    loada->cil_code = D.29706;
    D.29731 = alloc_preg (cfg);
    D.29732 = (int) D.29731;
    loada->dreg = D.29732;
    loada->data.op[0].p = temp;
    loada->data.op[1].p = call;
    D.29733 = cfg->cbb;
    D.29734 = D.29733->last_ins;
    if (D.29734 != 0B) goto <D.29735>; else goto <D.29736>;
    <D.29735>:
    D.29733 = cfg->cbb;
    D.29734 = D.29733->last_ins;
    D.29734->next = loada;
    D.29733 = cfg->cbb;
    D.29734 = D.29733->last_ins;
    loada->prev = D.29734;
    D.29733 = cfg->cbb;
    D.29733->last_ins = loada;
    goto <D.29737>;
    <D.29736>:
    D.29733 = cfg->cbb;
    D.29733 = cfg->cbb;
    D.29733->last_ins = loada;
    D.29734 = D.29733->last_ins;
    D.29733->code = D.29734;
    <D.29737>:
    D.29738 = temp->dreg;
    call->inst.dreg = D.29738;
    call->vret_var = loada;
  }
  goto <D.29739>;
  <D.29724>:
  D.29740 = mono_type_is_void (sig_ret);
  if (D.29740 == 0) goto <D.29741>; else goto <D.29742>;
  <D.29741>:
  D.29743 = call->inst.type;
  D.29744 = (<unnamed type>) D.29743;
  D.29745 = alloc_dreg (cfg, D.29744);
  D.29746 = (int) D.29745;
  call->inst.dreg = D.29746;
  <D.29742>:
  <D.29739>:
  <D.29721>:
  D.29747 = (unsigned char) unbox_trampoline;
  D.29748 = (<unnamed-unsigned:1>) D.29747;
  call->need_unbox_trampoline = D.29748;
  mono_arch_emit_call (cfg, call);
  D.29749 = call->stack_usage;
  D.29750 = cfg->param_area;
  D.29751 = MAX_EXPR <D.29749, D.29750>;
  cfg->param_area = D.29751;
  D.29752 = cfg->flags;
  D.29753 = D.29752 | 2;
  cfg->flags = D.29753;
  D.29754 = call;
  return D.29754;
}


ret_type_to_call_opcode (struct MonoType * type, int calli, int virt, struct MonoGenericSharingContext * gsctx)
{
  unsigned char D.29756;
  unsigned char D.29757;
  int D.29760;
  int iftmp.16;
  int iftmp.17;
  unsigned char D.29769;
  int D.29770;
  int iftmp.18;
  int iftmp.19;
  int iftmp.20;
  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;
  struct MonoClass * D.29819;
  unsigned char D.29820;
  unsigned char D.29821;
  int iftmp.30;
  int iftmp.31;
  int iftmp.32;
  int iftmp.33;
  struct MonoGenericClass * D.29840;
  struct MonoClass * D.29841;
  int iftmp.34;
  int iftmp.35;
  void handle_enum = <<< error >>>;

  D.29756 = BIT_FIELD_REF <*type, 8, 88>;
  D.29757 = D.29756 & 64;
  if (D.29757 != 0) goto <D.29758>; else goto <D.29759>;
  <D.29758>:
  if (calli == 0) goto <D.29762>; else goto <D.29763>;
  <D.29762>:
  if (virt != 0) goto <D.29765>; else goto <D.29766>;
  <D.29765>:
  iftmp.17 = 348;
  goto <D.29767>;
  <D.29766>:
  iftmp.17 = 346;
  <D.29767>:
  iftmp.16 = iftmp.17;
  goto <D.29768>;
  <D.29763>:
  iftmp.16 = 347;
  <D.29768>:
  D.29760 = iftmp.16;
  return D.29760;
  <D.29759>:
  handle_enum:
  type = mini_get_basic_type_from_generic (gsctx, type);
  type = mini_replace_type (type);
  D.29769 = type->type;
  D.29770 = (int) D.29769;
  switch (D.29770) <default: <D.25561>, case 1: <D.25534>, case 2: <D.25537>, case 3: <D.25540>, case 4: <D.25535>, case 5: <D.25536>, case 6: <D.25538>, case 7: <D.25539>, case 8: <D.25541>, case 9: <D.25542>, case 10: <D.25552>, case 11: <D.25553>, case 12: <D.25554>, case 13: <D.25555>, case 14: <D.25548>, case 15: <D.25545>, case 17: <D.25556>, case 18: <D.25547>, case 19: <D.25559>, case 20: <D.25551>, case 21: <D.25558>, case 22: <D.25557>, case 24: <D.25543>, case 25: <D.25544>, case 27: <D.25546>, case 28: <D.25549>, case 29: <D.25550>, case 30: <D.25560>>
  <D.25534>:
  if (calli == 0) goto <D.29772>; else goto <D.29773>;
  <D.29772>:
  if (virt != 0) goto <D.29775>; else goto <D.29776>;
  <D.29775>:
  iftmp.19 = 345;
  goto <D.29777>;
  <D.29776>:
  iftmp.19 = 343;
  <D.29777>:
  iftmp.18 = iftmp.19;
  goto <D.29778>;
  <D.29773>:
  iftmp.18 = 344;
  <D.29778>:
  D.29760 = iftmp.18;
  return D.29760;
  <D.25535>:
  <D.25536>:
  <D.25537>:
  <D.25538>:
  <D.25539>:
  <D.25540>:
  <D.25541>:
  <D.25542>:
  if (calli == 0) goto <D.29780>; else goto <D.29781>;
  <D.29780>:
  if (virt != 0) goto <D.29783>; else goto <D.29784>;
  <D.29783>:
  iftmp.21 = 348;
  goto <D.29785>;
  <D.29784>:
  iftmp.21 = 346;
  <D.29785>:
  iftmp.20 = iftmp.21;
  goto <D.29786>;
  <D.29781>:
  iftmp.20 = 347;
  <D.29786>:
  D.29760 = iftmp.20;
  return D.29760;
  <D.25543>:
  <D.25544>:
  <D.25545>:
  <D.25546>:
  if (calli == 0) goto <D.29788>; else goto <D.29789>;
  <D.29788>:
  if (virt != 0) goto <D.29791>; else goto <D.29792>;
  <D.29791>:
  iftmp.23 = 348;
  goto <D.29793>;
  <D.29792>:
  iftmp.23 = 346;
  <D.29793>:
  iftmp.22 = iftmp.23;
  goto <D.29794>;
  <D.29789>:
  iftmp.22 = 347;
  <D.29794>:
  D.29760 = iftmp.22;
  return D.29760;
  <D.25547>:
  <D.25548>:
  <D.25549>:
  <D.25550>:
  <D.25551>:
  if (calli == 0) goto <D.29796>; else goto <D.29797>;
  <D.29796>:
  if (virt != 0) goto <D.29799>; else goto <D.29800>;
  <D.29799>:
  iftmp.25 = 348;
  goto <D.29801>;
  <D.29800>:
  iftmp.25 = 346;
  <D.29801>:
  iftmp.24 = iftmp.25;
  goto <D.29802>;
  <D.29797>:
  iftmp.24 = 347;
  <D.29802>:
  D.29760 = iftmp.24;
  return D.29760;
  <D.25552>:
  <D.25553>:
  if (calli == 0) goto <D.29804>; else goto <D.29805>;
  <D.29804>:
  if (virt != 0) goto <D.29807>; else goto <D.29808>;
  <D.29807>:
  iftmp.27 = 354;
  goto <D.29809>;
  <D.29808>:
  iftmp.27 = 352;
  <D.29809>:
  iftmp.26 = iftmp.27;
  goto <D.29810>;
  <D.29805>:
  iftmp.26 = 353;
  <D.29810>:
  D.29760 = iftmp.26;
  return D.29760;
  <D.25554>:
  <D.25555>:
  if (calli == 0) goto <D.29812>; else goto <D.29813>;
  <D.29812>:
  if (virt != 0) goto <D.29815>; else goto <D.29816>;
  <D.29815>:
  iftmp.29 = 351;
  goto <D.29817>;
  <D.29816>:
  iftmp.29 = 349;
  <D.29817>:
  iftmp.28 = iftmp.29;
  goto <D.29818>;
  <D.29813>:
  iftmp.28 = 350;
  <D.29818>:
  D.29760 = iftmp.28;
  return D.29760;
  <D.25556>:
  D.29819 = type->data.klass;
  D.29820 = BIT_FIELD_REF <*D.29819, 8, 256>;
  D.29821 = D.29820 & 16;
  if (D.29821 != 0) goto <D.29822>; else goto <D.29823>;
  <D.29822>:
  D.29819 = type->data.klass;
  type = mono_class_enum_basetype (D.29819);
  goto handle_enum;
  <D.29823>:
  if (calli == 0) goto <D.29825>; else goto <D.29826>;
  <D.29825>:
  if (virt != 0) goto <D.29828>; else goto <D.29829>;
  <D.29828>:
  iftmp.31 = 357;
  goto <D.29830>;
  <D.29829>:
  iftmp.31 = 355;
  <D.29830>:
  iftmp.30 = iftmp.31;
  goto <D.29831>;
  <D.29826>:
  iftmp.30 = 356;
  <D.29831>:
  D.29760 = iftmp.30;
  return D.29760;
  <D.25557>:
  if (calli == 0) goto <D.29833>; else goto <D.29834>;
  <D.29833>:
  if (virt != 0) goto <D.29836>; else goto <D.29837>;
  <D.29836>:
  iftmp.33 = 357;
  goto <D.29838>;
  <D.29837>:
  iftmp.33 = 355;
  <D.29838>:
  iftmp.32 = iftmp.33;
  goto <D.29839>;
  <D.29834>:
  iftmp.32 = 356;
  <D.29839>:
  D.29760 = iftmp.32;
  return D.29760;
  <D.25558>:
  D.29840 = type->data.generic_class;
  D.29841 = D.29840->container_class;
  type = &D.29841->byval_arg;
  goto handle_enum;
  <D.25559>:
  <D.25560>:
  if (calli == 0) goto <D.29843>; else goto <D.29844>;
  <D.29843>:
  if (virt != 0) goto <D.29846>; else goto <D.29847>;
  <D.29846>:
  iftmp.35 = 357;
  goto <D.29848>;
  <D.29847>:
  iftmp.35 = 355;
  <D.29848>:
  iftmp.34 = iftmp.35;
  goto <D.29849>;
  <D.29844>:
  iftmp.34 = 356;
  <D.29849>:
  D.29760 = iftmp.34;
  return D.29760;
  <D.25561>:
  D.29769 = type->type;
  D.29770 = (int) D.29769;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in ret_type_to_call_opcode", D.29770);
  <D.25562>:
  goto <D.25562>;
  D.29760 = -1;
  return D.29760;
}


callvirt_to_call (int opcode)
{
  int D.29851;

  switch (opcode) <default: <D.25648>, case 345: <D.25644>, case 348: <D.25643>, case 351: <D.25645>, case 354: <D.25647>, case 357: <D.25646>>
  <D.25643>:
  D.29851 = 346;
  return D.29851;
  <D.25644>:
  D.29851 = 343;
  return D.29851;
  <D.25645>:
  D.29851 = 349;
  return D.29851;
  <D.25646>:
  D.29851 = 355;
  return D.29851;
  <D.25647>:
  D.29851 = 352;
  return D.29851;
  <D.25648>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 2288);
  D.29851 = -1;
  return D.29851;
}


mini_emit_load_intf_reg_vtable (struct MonoCompile * cfg, int intf_reg, int vtable_reg, struct MonoClass * klass)
{
  unsigned char D.29853;
  unsigned char D.29854;
  unsigned int D.29857;
  unsigned int D.29858;
  struct MonoMemPool * D.29859;
  long int D.29860;
  struct MonoInst * D.29861;
  guint16 iftmp.36;
  int D.29866;
  int D.29867;
  const unsigned char * D.29868;
  struct MonoBasicBlock * D.29869;
  struct MonoInst * D.29870;
  long int D.29874;
  struct MonoInst * D.29875;
  int D.29876;
  int D.29877;
  long int D.29881;
  struct MonoInst * D.29882;
  int D.29883;
  int D.29884;
  long int D.29889;
  struct MonoInst * D.29890;
  int D.29891;
  int D.29892;
  short unsigned int D.29893;
  int D.29894;
  int D.29895;
  int D.29896;
  long int D.29897;

  D.29853 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.29854 = D.29853 & 64;
  if (D.29854 != 0) goto <D.29855>; else goto <D.29856>;
  <D.29855>:
  {
    int ioffset_reg;
    int iid_reg;

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

      D.29859 = cfg->mempool;
      inst = mono_mempool_alloc (D.29859, 80);
      inst->data.op[1].const_val = 0;
      D.29860 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29860;
      inst->prev = 0B;
      D.29861 = inst->prev;
      inst->next = D.29861;
      D.29853 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.29854 = D.29853 & 64;
      if (D.29854 != 0) goto <D.29863>; else goto <D.29864>;
      <D.29863>:
      iftmp.36 = 736;
      goto <D.29865>;
      <D.29864>:
      iftmp.36 = 363;
      <D.29865>:
      inst->opcode = iftmp.36;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29866 = inst->sreg3;
      inst->sreg2 = D.29866;
      D.29867 = inst->sreg2;
      inst->sreg1 = D.29867;
      D.29868 = cfg->ip;
      inst->cil_code = D.29868;
      inst->dreg = iid_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 24;
      D.29869 = cfg->cbb;
      D.29870 = D.29869->last_ins;
      if (D.29870 != 0B) goto <D.29871>; else goto <D.29872>;
      <D.29871>:
      D.29869 = cfg->cbb;
      D.29870 = D.29869->last_ins;
      D.29870->next = inst;
      D.29869 = cfg->cbb;
      D.29870 = D.29869->last_ins;
      inst->prev = D.29870;
      D.29869 = cfg->cbb;
      D.29869->last_ins = inst;
      goto <D.29873>;
      <D.29872>:
      D.29869 = cfg->cbb;
      D.29869 = cfg->cbb;
      D.29869->last_ins = inst;
      D.29870 = D.29869->last_ins;
      D.29869->code = D.29870;
      <D.29873>:
    }
    {
      struct MonoInst * inst;

      D.29859 = cfg->mempool;
      inst = mono_mempool_alloc (D.29859, 80);
      inst->data.op[1].const_val = 0;
      D.29874 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29874;
      inst->prev = 0B;
      D.29875 = inst->prev;
      inst->next = D.29875;
      inst->opcode = 483;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29876 = inst->sreg3;
      inst->sreg2 = D.29876;
      D.29877 = inst->sreg2;
      inst->sreg1 = D.29877;
      D.29868 = cfg->ip;
      inst->cil_code = D.29868;
      inst->dreg = ioffset_reg;
      inst->sreg1 = iid_reg;
      inst->sreg2 = vtable_reg;
      D.29869 = cfg->cbb;
      D.29870 = D.29869->last_ins;
      if (D.29870 != 0B) goto <D.29878>; else goto <D.29879>;
      <D.29878>:
      D.29869 = cfg->cbb;
      D.29870 = D.29869->last_ins;
      D.29870->next = inst;
      D.29869 = cfg->cbb;
      D.29870 = D.29869->last_ins;
      inst->prev = D.29870;
      D.29869 = cfg->cbb;
      D.29869->last_ins = inst;
      goto <D.29880>;
      <D.29879>:
      D.29869 = cfg->cbb;
      D.29869 = cfg->cbb;
      D.29869->last_ins = inst;
      D.29870 = D.29869->last_ins;
      D.29869->code = D.29870;
      <D.29880>:
    }
    {
      struct MonoInst * inst;

      D.29859 = cfg->mempool;
      inst = mono_mempool_alloc (D.29859, 80);
      inst->data.op[1].const_val = 0;
      D.29881 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.29881;
      inst->prev = 0B;
      D.29882 = inst->prev;
      inst->next = D.29882;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.29883 = inst->sreg3;
      inst->sreg2 = D.29883;
      D.29884 = inst->sreg2;
      inst->sreg1 = D.29884;
      D.29868 = cfg->ip;
      inst->cil_code = D.29868;
      inst->dreg = intf_reg;
      inst->sreg1 = ioffset_reg;
      inst->data.op[0].const_val = 0;
      D.29869 = cfg->cbb;
      D.29870 = D.29869->last_ins;
      if (D.29870 != 0B) goto <D.29885>; else goto <D.29886>;
      <D.29885>:
      D.29869 = cfg->cbb;
      D.29870 = D.29869->last_ins;
      D.29870->next = inst;
      D.29869 = cfg->cbb;
      D.29870 = D.29869->last_ins;
      inst->prev = D.29870;
      D.29869 = cfg->cbb;
      D.29869->last_ins = inst;
      goto <D.29887>;
      <D.29886>:
      D.29869 = cfg->cbb;
      D.29869 = cfg->cbb;
      D.29869->last_ins = inst;
      D.29870 = D.29869->last_ins;
      D.29869->code = D.29870;
      <D.29887>:
    }
  }
  goto <D.29888>;
  <D.29856>:
  {
    struct MonoInst * inst;

    D.29859 = cfg->mempool;
    inst = mono_mempool_alloc (D.29859, 80);
    inst->data.op[1].const_val = 0;
    D.29889 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29889;
    inst->prev = 0B;
    D.29890 = inst->prev;
    inst->next = D.29890;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29891 = inst->sreg3;
    inst->sreg2 = D.29891;
    D.29892 = inst->sreg2;
    inst->sreg1 = D.29892;
    D.29868 = cfg->ip;
    inst->cil_code = D.29868;
    inst->dreg = intf_reg;
    inst->sreg1 = vtable_reg;
    D.29893 = klass->interface_id;
    D.29894 = (int) D.29893;
    D.29895 = ~D.29894;
    D.29896 = D.29895 * 8;
    D.29897 = (long int) D.29896;
    inst->data.op[0].const_val = D.29897;
    D.29869 = cfg->cbb;
    D.29870 = D.29869->last_ins;
    if (D.29870 != 0B) goto <D.29898>; else goto <D.29899>;
    <D.29898>:
    D.29869 = cfg->cbb;
    D.29870 = D.29869->last_ins;
    D.29870->next = inst;
    D.29869 = cfg->cbb;
    D.29870 = D.29869->last_ins;
    inst->prev = D.29870;
    D.29869 = cfg->cbb;
    D.29869->last_ins = inst;
    goto <D.29900>;
    <D.29899>:
    D.29869 = cfg->cbb;
    D.29869 = cfg->cbb;
    D.29869->last_ins = inst;
    D.29870 = D.29869->last_ins;
    D.29869->code = D.29870;
    <D.29900>:
  }
  <D.29888>:
}


emit_imt_argument (struct MonoCompile * cfg, struct MonoCallInst * call, struct MonoMethod * method, struct MonoInst * imt_arg)
{
  unsigned int D.29903;
  struct MonoMemPool * D.29906;
  long int D.29907;
  struct MonoInst * D.29908;
  int D.29909;
  int D.29910;
  const unsigned char * D.29911;
  int D.29912;
  struct MonoBasicBlock * D.29913;
  struct MonoInst * D.29914;
  unsigned char D.29919;
  unsigned char D.29920;
  long int D.29923;
  struct MonoInst * D.29924;
  guint16 iftmp.37;
  int D.29929;
  int D.29930;
  long int D.29935;
  struct MonoInst * D.29936;
  int D.29937;
  int D.29938;
  unsigned int D.29942;
  long int D.29945;
  struct MonoInst * D.29946;
  int D.29947;
  int D.29948;
  long int D.29955;
  struct MonoInst * D.29956;
  guint16 iftmp.38;
  int D.29961;
  int D.29962;
  long int D.29967;
  struct MonoInst * D.29968;
  int D.29969;
  int D.29970;
  int method_reg;

  if (0 != 0) goto <D.29901>; else goto <D.29902>;
  <D.29901>:
  D.29903 = alloc_preg (cfg);
  method_reg = (int) D.29903;
  if (imt_arg != 0B) goto <D.29904>; else goto <D.29905>;
  <D.29904>:
  {
    struct MonoInst * inst;

    D.29906 = cfg->mempool;
    inst = mono_mempool_alloc (D.29906, 80);
    inst->data.op[1].const_val = 0;
    D.29907 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29907;
    inst->prev = 0B;
    D.29908 = inst->prev;
    inst->next = D.29908;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29909 = inst->sreg3;
    inst->sreg2 = D.29909;
    D.29910 = inst->sreg2;
    inst->sreg1 = D.29910;
    D.29911 = cfg->ip;
    inst->cil_code = D.29911;
    inst->dreg = method_reg;
    D.29912 = imt_arg->dreg;
    inst->sreg1 = D.29912;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    if (D.29914 != 0B) goto <D.29915>; else goto <D.29916>;
    <D.29915>:
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    D.29914->next = inst;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    inst->prev = D.29914;
    D.29913 = cfg->cbb;
    D.29913->last_ins = inst;
    goto <D.29917>;
    <D.29916>:
    D.29913 = cfg->cbb;
    D.29913 = cfg->cbb;
    D.29913->last_ins = inst;
    D.29914 = D.29913->last_ins;
    D.29913->code = D.29914;
    <D.29917>:
  }
  goto <D.29918>;
  <D.29905>:
  D.29919 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.29920 = D.29919 & 64;
  if (D.29920 != 0) goto <D.29921>; else goto <D.29922>;
  <D.29921>:
  {
    struct MonoInst * inst;

    D.29906 = cfg->mempool;
    inst = mono_mempool_alloc (D.29906, 80);
    inst->data.op[1].const_val = 0;
    D.29923 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29923;
    inst->prev = 0B;
    D.29924 = inst->prev;
    inst->next = D.29924;
    D.29919 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.29920 = D.29919 & 64;
    if (D.29920 != 0) goto <D.29926>; else goto <D.29927>;
    <D.29926>:
    iftmp.37 = 736;
    goto <D.29928>;
    <D.29927>:
    iftmp.37 = 363;
    <D.29928>:
    inst->opcode = iftmp.37;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29929 = inst->sreg3;
    inst->sreg2 = D.29929;
    D.29930 = inst->sreg2;
    inst->sreg1 = D.29930;
    D.29911 = cfg->ip;
    inst->cil_code = D.29911;
    inst->dreg = method_reg;
    inst->data.op[0].p = method;
    inst->data.op[1].const_val = 6;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    if (D.29914 != 0B) goto <D.29931>; else goto <D.29932>;
    <D.29931>:
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    D.29914->next = inst;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    inst->prev = D.29914;
    D.29913 = cfg->cbb;
    D.29913->last_ins = inst;
    goto <D.29933>;
    <D.29932>:
    D.29913 = cfg->cbb;
    D.29913 = cfg->cbb;
    D.29913->last_ins = inst;
    D.29914 = D.29913->last_ins;
    D.29913->code = D.29914;
    <D.29933>:
  }
  goto <D.29934>;
  <D.29922>:
  {
    struct MonoInst * ins;

    D.29906 = cfg->mempool;
    ins = mono_mempool_alloc (D.29906, 80);
    ins->data.op[1].const_val = 0;
    D.29935 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.29935;
    ins->prev = 0B;
    D.29936 = ins->prev;
    ins->next = D.29936;
    ins->opcode = 363;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.29937 = ins->sreg3;
    ins->sreg2 = D.29937;
    D.29938 = ins->sreg2;
    ins->sreg1 = D.29938;
    D.29911 = cfg->ip;
    ins->cil_code = D.29911;
    ins->data.op[0].p = method;
    ins->dreg = method_reg;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    if (D.29914 != 0B) goto <D.29939>; else goto <D.29940>;
    <D.29939>:
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    D.29914->next = ins;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    ins->prev = D.29914;
    D.29913 = cfg->cbb;
    D.29913->last_ins = ins;
    goto <D.29941>;
    <D.29940>:
    D.29913 = cfg->cbb;
    D.29913 = cfg->cbb;
    D.29913->last_ins = ins;
    D.29914 = D.29913->last_ins;
    D.29913->code = D.29914;
    <D.29941>:
  }
  <D.29934>:
  <D.29918>:
  mono_call_inst_add_outarg_reg (cfg, call, method_reg, 10, 0);
  return;
  <D.29902>:
  D.29942 = alloc_preg (cfg);
  method_reg = (int) D.29942;
  if (imt_arg != 0B) goto <D.29943>; else goto <D.29944>;
  <D.29943>:
  {
    struct MonoInst * inst;

    D.29906 = cfg->mempool;
    inst = mono_mempool_alloc (D.29906, 80);
    inst->data.op[1].const_val = 0;
    D.29945 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29945;
    inst->prev = 0B;
    D.29946 = inst->prev;
    inst->next = D.29946;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29947 = inst->sreg3;
    inst->sreg2 = D.29947;
    D.29948 = inst->sreg2;
    inst->sreg1 = D.29948;
    D.29911 = cfg->ip;
    inst->cil_code = D.29911;
    inst->dreg = method_reg;
    D.29912 = imt_arg->dreg;
    inst->sreg1 = D.29912;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    if (D.29914 != 0B) goto <D.29949>; else goto <D.29950>;
    <D.29949>:
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    D.29914->next = inst;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    inst->prev = D.29914;
    D.29913 = cfg->cbb;
    D.29913->last_ins = inst;
    goto <D.29951>;
    <D.29950>:
    D.29913 = cfg->cbb;
    D.29913 = cfg->cbb;
    D.29913->last_ins = inst;
    D.29914 = D.29913->last_ins;
    D.29913->code = D.29914;
    <D.29951>:
  }
  goto <D.29952>;
  <D.29944>:
  D.29919 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.29920 = D.29919 & 64;
  if (D.29920 != 0) goto <D.29953>; else goto <D.29954>;
  <D.29953>:
  {
    struct MonoInst * inst;

    D.29906 = cfg->mempool;
    inst = mono_mempool_alloc (D.29906, 80);
    inst->data.op[1].const_val = 0;
    D.29955 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.29955;
    inst->prev = 0B;
    D.29956 = inst->prev;
    inst->next = D.29956;
    D.29919 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.29920 = D.29919 & 64;
    if (D.29920 != 0) goto <D.29958>; else goto <D.29959>;
    <D.29958>:
    iftmp.38 = 736;
    goto <D.29960>;
    <D.29959>:
    iftmp.38 = 363;
    <D.29960>:
    inst->opcode = iftmp.38;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.29961 = inst->sreg3;
    inst->sreg2 = D.29961;
    D.29962 = inst->sreg2;
    inst->sreg1 = D.29962;
    D.29911 = cfg->ip;
    inst->cil_code = D.29911;
    inst->dreg = method_reg;
    inst->data.op[0].p = method;
    inst->data.op[1].const_val = 6;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    if (D.29914 != 0B) goto <D.29963>; else goto <D.29964>;
    <D.29963>:
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    D.29914->next = inst;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    inst->prev = D.29914;
    D.29913 = cfg->cbb;
    D.29913->last_ins = inst;
    goto <D.29965>;
    <D.29964>:
    D.29913 = cfg->cbb;
    D.29913 = cfg->cbb;
    D.29913->last_ins = inst;
    D.29914 = D.29913->last_ins;
    D.29913->code = D.29914;
    <D.29965>:
  }
  goto <D.29966>;
  <D.29954>:
  {
    struct MonoInst * ins;

    D.29906 = cfg->mempool;
    ins = mono_mempool_alloc (D.29906, 80);
    ins->data.op[1].const_val = 0;
    D.29967 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.29967;
    ins->prev = 0B;
    D.29968 = ins->prev;
    ins->next = D.29968;
    ins->opcode = 363;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.29969 = ins->sreg3;
    ins->sreg2 = D.29969;
    D.29970 = ins->sreg2;
    ins->sreg1 = D.29970;
    D.29911 = cfg->ip;
    ins->cil_code = D.29911;
    ins->data.op[0].p = method;
    ins->dreg = method_reg;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    if (D.29914 != 0B) goto <D.29971>; else goto <D.29972>;
    <D.29971>:
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    D.29914->next = ins;
    D.29913 = cfg->cbb;
    D.29914 = D.29913->last_ins;
    ins->prev = D.29914;
    D.29913 = cfg->cbb;
    D.29913->last_ins = ins;
    goto <D.29973>;
    <D.29972>:
    D.29913 = cfg->cbb;
    D.29913 = cfg->cbb;
    D.29913->last_ins = ins;
    D.29914 = D.29913->last_ins;
    D.29913->code = D.29914;
    <D.29973>:
  }
  <D.29966>:
  <D.29952>:
  mono_call_inst_add_outarg_reg (cfg, call, method_reg, 10, 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, 10, 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.29975;
  long int D.29976;
  long int D.29977;
  struct MonoBasicBlock * D.29980;
  struct MonoInst * D.29981;
  struct MonoInst * D.29985;
  struct MonoCallInst * call;

  D.29975 = sig == 0B;
  D.29976 = (long int) D.29975;
  D.29977 = __builtin_expect (D.29976, 0);
  if (D.29977 != 0) goto <D.29978>; else goto <D.29979>;
  <D.29978>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2775, "sig");
  <D.29979>:
  call = mono_emit_call_args (cfg, sig, args, 0, 0, 0, 0, 0);
  call->fptr = func;
  D.29980 = cfg->cbb;
  D.29981 = D.29980->last_ins;
  if (D.29981 != 0B) goto <D.29982>; else goto <D.29983>;
  <D.29982>:
  D.29980 = cfg->cbb;
  D.29981 = D.29980->last_ins;
  D.29981->next = call;
  D.29980 = cfg->cbb;
  D.29981 = D.29980->last_ins;
  MEM[(struct MonoInst *)call].prev = D.29981;
  D.29980 = cfg->cbb;
  D.29980->last_ins = call;
  goto <D.29984>;
  <D.29983>:
  D.29980 = cfg->cbb;
  D.29980 = cfg->cbb;
  D.29980->last_ins = call;
  D.29981 = D.29980->last_ins;
  D.29980->code = D.29981;
  <D.29984>:
  D.29985 = call;
  return D.29985;
}


mono_emit_jit_icall (struct MonoCompile * cfg, const void * func, struct MonoInst * * args)
{
  _Bool D.29987;
  long int D.29988;
  long int D.29989;
  struct MonoInst * D.29992;
  struct MonoMethodSignature * D.29993;
  const void * D.29994;
  struct MonoJitICallInfo * info;

  info = mono_find_jit_icall_by_addr (func);
  D.29987 = info == 0B;
  D.29988 = (long int) D.29987;
  D.29989 = __builtin_expect (D.29988, 0);
  if (D.29989 != 0) goto <D.29990>; else goto <D.29991>;
  <D.29990>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2790, "info");
  <D.29991>:
  D.29993 = info->sig;
  D.29994 = mono_icall_get_wrapper (info);
  D.29992 = mono_emit_native_call (cfg, D.29994, D.29993, args);
  return D.29992;
}


mini_emit_stobj (struct MonoCompile * cfg, struct MonoInst * dest, struct MonoInst * src, struct MonoClass * klass, gboolean native)
{
  _Bool D.29996;
  long int D.29997;
  long int D.29998;
  int D.30001;
  _Bool D.30004;
  long int D.30005;
  long int D.30006;
  unsigned char D.30014;
  unsigned char D.30015;
  unsigned char D.30018;
  unsigned char D.30019;
  short unsigned int D.30025;
  int D.30027;
  unsigned int D.30028;
  unsigned int D.30029;
  unsigned int D.30034;
  unsigned int D.30035;
  unsigned int align.39;
  int align.40;
  int D.30039;
  struct MonoInst * D.30043;
  unsigned char D.30045;
  unsigned char D.30046;
  struct MonoMemPool * D.30049;
  void * D.30050;
  struct MonoInst * D.30051;
  long int D.30052;
  struct MonoInst * D.30053;
  guint16 iftmp.41;
  int D.30058;
  int D.30059;
  const unsigned char * D.30060;
  unsigned int D.30061;
  int D.30062;
  struct MonoBasicBlock * D.30063;
  struct MonoInst * D.30064;
  void * D.30069;
  unsigned int D.30070;
  int D.30071;
  unsigned int n.42;
  int D.30084;
  int D.30085;
  void * D.30089;
  long int D.30090;
  unsigned int D.30091;
  int D.30092;
  struct MonoMethodSignature * D.30098;
  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.29996 = klass == 0B;
      D.29997 = (long int) D.29996;
      D.29998 = __builtin_expect (D.29997, 0);
      if (D.29998 != 0) goto <D.29999>; else goto <D.30000>;
      <D.29999>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3060, "klass");
      <D.30000>:
      D.30001 = mini_is_gsharedvt_klass (cfg, klass);
      if (D.30001 != 0) goto <D.30002>; else goto <D.30003>;
      <D.30002>:
      D.30004 = native != 0;
      D.30005 = (long int) D.30004;
      D.30006 = __builtin_expect (D.30005, 0);
      if (D.30006 != 0) goto <D.30007>; else goto <D.30008>;
      <D.30007>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3067, "!native");
      <D.30008>:
      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.30003>:
      if (native != 0) goto <D.30009>; else goto <D.30010>;
      <D.30009>:
      n = mono_class_native_size (klass, &align);
      goto <D.30011>;
      <D.30010>:
      n = mono_class_value_size (klass, &align);
      <D.30011>:
      D.30014 = BIT_FIELD_REF <*cfg, 8, 5624>;
      D.30015 = D.30014 & 16;
      if (D.30015 != 0) goto <D.30016>; else goto <D.30017>;
      <D.30016>:
      D.30018 = BIT_FIELD_REF <*klass, 8, 280>;
      D.30019 = D.30018 & 8;
      if (D.30019 != 0) goto <D.30012>; else goto <D.30020>;
      <D.30020>:
      if (size_ins != 0B) goto <D.30012>; else goto <D.30013>;
      <D.30012>:
      if (native == 0) goto <D.30021>; else goto <D.30022>;
      <D.30021>:
      D.30025 = dest->opcode;
      if (D.30025 != 433) goto <D.30023>; else goto <D.30026>;
      <D.30026>:
      D.30027 = dest->sreg1;
      D.30028 = (unsigned int) D.30027;
      D.30029 = cfg->frame_reg;
      if (D.30028 != D.30029) goto <D.30023>; else goto <D.30024>;
      <D.30023>:
      D.30025 = dest->opcode;
      if (D.30025 != 314) goto <D.30030>; else goto <D.30031>;
      <D.30030>:
      {
        int context_used;

        iargs[0] = dest;
        iargs[1] = src;
        context_used = mini_class_check_context_used (cfg, klass);
        if (size_ins == 0B) goto <D.30033>; else goto <D.30032>;
        <D.30033>:
        D.30034 = cfg->opt;
        D.30035 = D.30034 & 2048;
        if (D.30035 != 0) goto <D.30036>; else goto <D.30032>;
        <D.30036>:
        align.39 = align;
        align.40 = (int) align.39;
        D.30039 = mono_emit_wb_aware_memcpy (cfg, klass, &iargs, n, align.40);
        if (D.30039 != 0) goto <D.30040>; else goto <D.30032>;
        <D.30040>:
        return;
        <D.30032>:
        if (context_used != 0) goto <D.30041>; else goto <D.30042>;
        <D.30041>:
        D.30043 = emit_get_rgctx_klass (cfg, context_used, klass, 1);
        iargs[2] = D.30043;
        goto <D.30044>;
        <D.30042>:
        D.30045 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.30046 = D.30045 & 64;
        if (D.30046 != 0) goto <D.30047>; else goto <D.30048>;
        <D.30047>:
        D.30049 = cfg->mempool;
        D.30050 = mono_mempool_alloc (D.30049, 80);
        iargs[2] = D.30050;
        D.30051 = iargs[2];
        D.30051 = iargs[2];
        D.30051->data.op[1].const_val = 0;
        D.30052 = D.30051->data.op[1].const_val;
        D.30051->data.op[0].const_val = D.30052;
        D.30051 = iargs[2];
        D.30051 = iargs[2];
        D.30051->prev = 0B;
        D.30053 = D.30051->prev;
        D.30051->next = D.30053;
        D.30051 = iargs[2];
        D.30045 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.30046 = D.30045 & 64;
        if (D.30046 != 0) goto <D.30055>; else goto <D.30056>;
        <D.30055>:
        iftmp.41 = 736;
        goto <D.30057>;
        <D.30056>:
        iftmp.41 = 363;
        <D.30057>:
        D.30051->opcode = iftmp.41;
        D.30051 = iargs[2];
        D.30051->flags = 0;
        D.30051 = iargs[2];
        D.30051->type = 0;
        D.30051 = iargs[2];
        D.30051->dreg = -1;
        D.30051 = iargs[2];
        D.30051 = iargs[2];
        D.30051 = iargs[2];
        D.30051->sreg3 = -1;
        D.30058 = D.30051->sreg3;
        D.30051->sreg2 = D.30058;
        D.30059 = D.30051->sreg2;
        D.30051->sreg1 = D.30059;
        D.30051 = iargs[2];
        D.30060 = cfg->ip;
        D.30051->cil_code = D.30060;
        D.30051 = iargs[2];
        D.30051->data.op[0].p = klass;
        D.30051 = iargs[2];
        D.30051->data.op[1].src = 11B;
        D.30051 = iargs[2];
        D.30051->type = 3;
        D.30051 = iargs[2];
        D.30061 = alloc_dreg (cfg, 3);
        D.30062 = (int) D.30061;
        D.30051->dreg = D.30062;
        D.30063 = cfg->cbb;
        D.30064 = D.30063->last_ins;
        if (D.30064 != 0B) goto <D.30065>; else goto <D.30066>;
        <D.30065>:
        D.30063 = cfg->cbb;
        D.30064 = D.30063->last_ins;
        D.30051 = iargs[2];
        D.30064->next = D.30051;
        D.30051 = iargs[2];
        D.30063 = cfg->cbb;
        D.30064 = D.30063->last_ins;
        D.30051->prev = D.30064;
        D.30063 = cfg->cbb;
        D.30051 = iargs[2];
        D.30063->last_ins = D.30051;
        goto <D.30067>;
        <D.30066>:
        D.30063 = cfg->cbb;
        D.30063 = cfg->cbb;
        D.30051 = iargs[2];
        D.30063->last_ins = D.30051;
        D.30064 = D.30063->last_ins;
        D.30063->code = D.30064;
        <D.30067>:
        goto <D.30068>;
        <D.30048>:
        D.30049 = cfg->mempool;
        D.30069 = mono_mempool_alloc (D.30049, 80);
        iargs[2] = D.30069;
        D.30051 = iargs[2];
        D.30051 = iargs[2];
        D.30051->data.op[1].const_val = 0;
        D.30052 = D.30051->data.op[1].const_val;
        D.30051->data.op[0].const_val = D.30052;
        D.30051 = iargs[2];
        D.30051 = iargs[2];
        D.30051->prev = 0B;
        D.30053 = D.30051->prev;
        D.30051->next = D.30053;
        D.30051 = iargs[2];
        D.30051->opcode = 363;
        D.30051 = iargs[2];
        D.30051->flags = 0;
        D.30051 = iargs[2];
        D.30051->type = 0;
        D.30051 = iargs[2];
        D.30051->dreg = -1;
        D.30051 = iargs[2];
        D.30051 = iargs[2];
        D.30051 = iargs[2];
        D.30051->sreg3 = -1;
        D.30058 = D.30051->sreg3;
        D.30051->sreg2 = D.30058;
        D.30059 = D.30051->sreg2;
        D.30051->sreg1 = D.30059;
        D.30051 = iargs[2];
        D.30060 = cfg->ip;
        D.30051->cil_code = D.30060;
        D.30051 = iargs[2];
        D.30051->data.op[0].p = klass;
        D.30051 = iargs[2];
        D.30051->type = 3;
        D.30051 = iargs[2];
        D.30070 = alloc_dreg (cfg, 3);
        D.30071 = (int) D.30070;
        D.30051->dreg = D.30071;
        D.30063 = cfg->cbb;
        D.30064 = D.30063->last_ins;
        if (D.30064 != 0B) goto <D.30072>; else goto <D.30073>;
        <D.30072>:
        D.30063 = cfg->cbb;
        D.30064 = D.30063->last_ins;
        D.30051 = iargs[2];
        D.30064->next = D.30051;
        D.30051 = iargs[2];
        D.30063 = cfg->cbb;
        D.30064 = D.30063->last_ins;
        D.30051->prev = D.30064;
        D.30063 = cfg->cbb;
        D.30051 = iargs[2];
        D.30063->last_ins = D.30051;
        goto <D.30074>;
        <D.30073>:
        D.30063 = cfg->cbb;
        D.30063 = cfg->cbb;
        D.30051 = iargs[2];
        D.30063->last_ins = D.30051;
        D.30064 = D.30063->last_ins;
        D.30063->code = D.30064;
        <D.30074>:
        mono_class_compute_gc_descriptor (klass);
        <D.30068>:
        <D.30044>:
        if (size_ins != 0B) goto <D.30075>; else goto <D.30076>;
        <D.30075>:
        mono_emit_jit_icall (cfg, mono_gsharedvt_value_copy, &iargs);
        goto <D.30077>;
        <D.30076>:
        mono_emit_jit_icall (cfg, mono_value_copy, &iargs);
        <D.30077>:
        return;
      }
      <D.30031>:
      <D.30024>:
      <D.30022>:
      <D.30013>:
      <D.30017>:
      if (size_ins == 0B) goto <D.30080>; else goto <D.30078>;
      <D.30080>:
      D.30034 = cfg->opt;
      D.30035 = D.30034 & 2048;
      if (D.30035 != 0) goto <D.30081>; else goto <D.30078>;
      <D.30081>:
      n.42 = (unsigned int) n;
      if (n.42 <= 40) goto <D.30083>; else goto <D.30078>;
      <D.30083>:
      align.39 = align;
      align.40 = (int) align.39;
      D.30084 = src->dreg;
      D.30085 = dest->dreg;
      mini_emit_memcpy (cfg, D.30085, 0, D.30084, 0, n, align.40);
      goto <D.30079>;
      <D.30078>:
      iargs[0] = dest;
      iargs[1] = src;
      if (size_ins != 0B) goto <D.30086>; else goto <D.30087>;
      <D.30086>:
      iargs[2] = size_ins;
      goto <D.30088>;
      <D.30087>:
      D.30049 = cfg->mempool;
      D.30089 = mono_mempool_alloc (D.30049, 80);
      iargs[2] = D.30089;
      D.30051 = iargs[2];
      D.30051 = iargs[2];
      D.30051->data.op[1].const_val = 0;
      D.30052 = D.30051->data.op[1].const_val;
      D.30051->data.op[0].const_val = D.30052;
      D.30051 = iargs[2];
      D.30051 = iargs[2];
      D.30051->prev = 0B;
      D.30053 = D.30051->prev;
      D.30051->next = D.30053;
      D.30051 = iargs[2];
      D.30051->opcode = 362;
      D.30051 = iargs[2];
      D.30051->flags = 0;
      D.30051 = iargs[2];
      D.30051->type = 0;
      D.30051 = iargs[2];
      D.30051->dreg = -1;
      D.30051 = iargs[2];
      D.30051 = iargs[2];
      D.30051 = iargs[2];
      D.30051->sreg3 = -1;
      D.30058 = D.30051->sreg3;
      D.30051->sreg2 = D.30058;
      D.30059 = D.30051->sreg2;
      D.30051->sreg1 = D.30059;
      D.30051 = iargs[2];
      D.30060 = cfg->ip;
      D.30051->cil_code = D.30060;
      D.30051 = iargs[2];
      D.30090 = (long int) n;
      D.30051->data.op[0].const_val = D.30090;
      D.30051 = iargs[2];
      D.30051->type = 1;
      D.30051 = iargs[2];
      D.30091 = alloc_dreg (cfg, 1);
      D.30092 = (int) D.30091;
      D.30051->dreg = D.30092;
      D.30063 = cfg->cbb;
      D.30064 = D.30063->last_ins;
      if (D.30064 != 0B) goto <D.30093>; else goto <D.30094>;
      <D.30093>:
      D.30063 = cfg->cbb;
      D.30064 = D.30063->last_ins;
      D.30051 = iargs[2];
      D.30064->next = D.30051;
      D.30051 = iargs[2];
      D.30063 = cfg->cbb;
      D.30064 = D.30063->last_ins;
      D.30051->prev = D.30064;
      D.30063 = cfg->cbb;
      D.30051 = iargs[2];
      D.30063->last_ins = D.30051;
      goto <D.30095>;
      <D.30094>:
      D.30063 = cfg->cbb;
      D.30063 = cfg->cbb;
      D.30051 = iargs[2];
      D.30063->last_ins = D.30051;
      D.30064 = D.30063->last_ins;
      D.30063->code = D.30064;
      <D.30095>:
      <D.30088>:
      memcpy_method = get_memcpy_method ();
      if (memcpy_ins != 0B) goto <D.30096>; else goto <D.30097>;
      <D.30096>:
      D.30098 = mono_method_signature (memcpy_method);
      mono_emit_calli (cfg, D.30098, &iargs, memcpy_ins, 0B, 0B);
      goto <D.30099>;
      <D.30097>:
      mono_emit_method_call (cfg, memcpy_method, &iargs, 0B);
      <D.30099>:
      <D.30079>:
    }
  finally
    {
      iargs = {CLOBBER};
      align = {CLOBBER};
    }
}


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

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


emit_get_gsharedvt_info (struct MonoCompile * cfg, void * data, MonoRgctxInfoType rgctx_type)
{
  unsigned int D.30106;
  struct MonoMemPool * D.30107;
  long int D.30108;
  struct MonoInst * D.30109;
  int D.30110;
  int D.30111;
  const unsigned char * D.30112;
  struct MonoInst * D.30113;
  int D.30114;
  long unsigned int D.30115;
  long unsigned int D.30116;
  long unsigned int D.30117;
  long int D.30118;
  struct MonoBasicBlock * D.30119;
  struct MonoInst * D.30120;
  struct MonoInst * D.30124;
  struct MonoInst * ins;
  int idx;
  int dreg;

  idx = get_gsharedvt_info_slot (cfg, data, rgctx_type);
  D.30106 = alloc_preg (cfg);
  dreg = (int) D.30106;
  D.30107 = cfg->mempool;
  ins = mono_mempool_alloc (D.30107, 80);
  ins->data.op[1].const_val = 0;
  D.30108 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.30108;
  ins->prev = 0B;
  D.30109 = ins->prev;
  ins->next = D.30109;
  ins->opcode = 391;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.30110 = ins->sreg3;
  ins->sreg2 = D.30110;
  D.30111 = ins->sreg2;
  ins->sreg1 = D.30111;
  D.30112 = cfg->ip;
  ins->cil_code = D.30112;
  ins->dreg = dreg;
  D.30113 = cfg->gsharedvt_info_var;
  D.30114 = D.30113->dreg;
  ins->sreg1 = D.30114;
  D.30115 = (long unsigned int) idx;
  D.30116 = D.30115 + 1;
  D.30117 = D.30116 * 8;
  D.30118 = (long int) D.30117;
  ins->data.op[0].const_val = D.30118;
  ins->type = 1;
  D.30119 = cfg->cbb;
  D.30120 = D.30119->last_ins;
  if (D.30120 != 0B) goto <D.30121>; else goto <D.30122>;
  <D.30121>:
  D.30119 = cfg->cbb;
  D.30120 = D.30119->last_ins;
  D.30120->next = ins;
  D.30119 = cfg->cbb;
  D.30120 = D.30119->last_ins;
  ins->prev = D.30120;
  D.30119 = cfg->cbb;
  D.30119->last_ins = ins;
  goto <D.30123>;
  <D.30122>:
  D.30119 = cfg->cbb;
  D.30119 = cfg->cbb;
  D.30119->last_ins = ins;
  D.30120 = D.30119->last_ins;
  D.30119->code = D.30120;
  <D.30123>:
  D.30124 = ins;
  return D.30124;
}


get_gsharedvt_info_slot (struct MonoCompile * cfg, void * data, MonoRgctxInfoType rgctx_type)
{
  _Bool D.30126;
  long int D.30127;
  long int D.30128;
  struct GPtrArray * D.30131;
  void * * D.30132;
  long unsigned int D.30133;
  long unsigned int D.30134;
  void * * D.30135;
  <unnamed type> D.30136;
  void * D.30139;
  int D.30144;
  unsigned int i.43;
  unsigned int D.30146;
  struct MonoMemPool * D.30147;
  struct MonoGSharedVtMethodInfo * info;
  struct MonoRuntimeGenericContextInfoTemplate * template;
  int i;
  int idx;

  info = cfg->gsharedvt_info;
  D.30126 = info == 0B;
  D.30127 = (long int) D.30126;
  D.30128 = __builtin_expect (D.30127, 0);
  if (D.30128 != 0) goto <D.30129>; else goto <D.30130>;
  <D.30129>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3354, "info");
  <D.30130>:
  i = 0;
  goto <D.26029>;
  <D.26028>:
  {
    struct MonoRuntimeGenericContextInfoTemplate * otemplate;

    D.30131 = info->entries;
    D.30132 = D.30131->pdata;
    D.30133 = (long unsigned int) i;
    D.30134 = D.30133 * 8;
    D.30135 = D.30132 + D.30134;
    otemplate = *D.30135;
    D.30136 = otemplate->info_type;
    if (D.30136 == rgctx_type) goto <D.30137>; else goto <D.30138>;
    <D.30137>:
    D.30139 = otemplate->data;
    if (D.30139 == data) goto <D.30140>; else goto <D.30141>;
    <D.30140>:
    if (rgctx_type != 21) goto <D.30142>; else goto <D.30143>;
    <D.30142>:
    D.30144 = i;
    return D.30144;
    <D.30143>:
    <D.30141>:
    <D.30138>:
  }
  i = i + 1;
  <D.26029>:
  i.43 = (unsigned int) i;
  D.30131 = info->entries;
  D.30146 = D.30131->len;
  if (i.43 < D.30146) goto <D.26028>; else goto <D.26030>;
  <D.26030>:
  D.30147 = cfg->mempool;
  template = mono_mempool_alloc0 (D.30147, 24);
  template->info_type = rgctx_type;
  template->data = data;
  D.30131 = info->entries;
  D.30146 = D.30131->len;
  idx = (int) D.30146;
  D.30131 = info->entries;
  monoeg_g_ptr_array_add (D.30131, template);
  D.30144 = idx;
  return D.30144;
}


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

  D.30149 = cfg->generic_sharing_context;
  if (D.30149 != 0B) goto <D.30150>; else goto <D.30151>;
  <D.30150>:
  D.30152 = mono_class_check_context_used (klass);
  return D.30152;
  <D.30151>:
  D.30152 = 0;
  return D.30152;
}


mono_emit_wb_aware_memcpy (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * iargs, int size, int align)
{
  gboolean D.30158;
  struct MonoInst * * D.30163;
  struct MonoMemPool * D.30164;
  void * D.30165;
  struct MonoInst * D.30166;
  long int D.30167;
  struct MonoInst * D.30168;
  int D.30169;
  int D.30170;
  const unsigned char * D.30171;
  long int D.30172;
  unsigned int D.30173;
  int D.30174;
  struct MonoBasicBlock * D.30175;
  struct MonoInst * D.30176;
  struct MonoInst * D.30179;
  struct MonoInst * * D.30181;
  void * D.30182;
  struct MonoInst * D.30183;
  long int D.30184;
  struct MonoInst * D.30185;
  int D.30186;
  int D.30187;
  unsigned int need_wb.44;
  long int D.30189;
  unsigned int D.30190;
  int D.30191;
  struct MonoInst * D.30194;
  struct MonoInst * D.30196;
  struct MonoInst * * D.30197;
  struct MonoInst * D.30198;
  unsigned int D.30199;
  unsigned int D.30200;
  void * D.30201;
  long int D.30202;
  struct MonoInst * D.30203;
  int D.30204;
  int D.30205;
  long int D.30209;
  struct MonoInst * D.30210;
  int D.30211;
  int D.30212;
  long int D.30213;
  long int D.30217;
  struct MonoInst * D.30218;
  int D.30219;
  int D.30220;
  unsigned int D.30224;
  unsigned int need_wb.45;
  void * D.30230;
  long int D.30234;
  struct MonoInst * D.30235;
  int D.30236;
  int D.30237;
  long int D.30241;
  struct MonoInst * D.30242;
  int D.30243;
  int D.30244;
  long int D.30248;
  struct MonoInst * D.30249;
  int D.30250;
  int D.30251;
  long int D.30255;
  struct MonoInst * D.30256;
  int D.30257;
  int D.30258;
  long int D.30262;
  struct MonoInst * D.30263;
  int D.30264;
  int D.30265;
  long int D.30269;
  struct MonoInst * D.30270;
  int D.30271;
  int D.30272;
  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.30154>; else goto <D.30155>;
      <D.30154>:
      align = 4;
      <D.30155>:
      if (align <= 7) goto <D.30156>; else goto <D.30157>;
      <D.30156>:
      D.30158 = 0;
      return D.30158;
      <D.30157>:
      if (size > 256) goto <D.30159>; else goto <D.30160>;
      <D.30159>:
      D.30158 = 0;
      return D.30158;
      <D.30160>:
      create_write_barrier_bitmap (cfg, klass, &need_wb, 0);
      if (size > 40) goto <D.30161>; else goto <D.30162>;
      <D.30161>:
      size = size + 7;
      size = size & -8;
      D.30163 = iargs + 16;
      D.30164 = cfg->mempool;
      D.30165 = mono_mempool_alloc (D.30164, 80);
      *D.30163 = D.30165;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30166->data.op[1].const_val = 0;
      D.30167 = D.30166->data.op[1].const_val;
      D.30166->data.op[0].const_val = D.30167;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30166->prev = 0B;
      D.30168 = D.30166->prev;
      D.30166->next = D.30168;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30166->opcode = 362;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30166->flags = 0;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30166->type = 0;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30166->dreg = -1;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30166->sreg3 = -1;
      D.30169 = D.30166->sreg3;
      D.30166->sreg2 = D.30169;
      D.30170 = D.30166->sreg2;
      D.30166->sreg1 = D.30170;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30171 = cfg->ip;
      D.30166->cil_code = D.30171;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30172 = (long int) size;
      D.30166->data.op[0].const_val = D.30172;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30166->type = 1;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30173 = alloc_dreg (cfg, 1);
      D.30174 = (int) D.30173;
      D.30166->dreg = D.30174;
      D.30175 = cfg->cbb;
      D.30176 = D.30175->last_ins;
      if (D.30176 != 0B) goto <D.30177>; else goto <D.30178>;
      <D.30177>:
      D.30175 = cfg->cbb;
      D.30176 = D.30175->last_ins;
      D.30179 = MEM[(struct MonoInst * *)iargs + 16B];
      D.30176->next = D.30179;
      D.30163 = iargs + 16;
      D.30166 = *D.30163;
      D.30175 = cfg->cbb;
      D.30176 = D.30175->last_ins;
      D.30166->prev = D.30176;
      D.30175 = cfg->cbb;
      D.30179 = MEM[(struct MonoInst * *)iargs + 16B];
      D.30175->last_ins = D.30179;
      goto <D.30180>;
      <D.30178>:
      D.30175 = cfg->cbb;
      D.30175 = cfg->cbb;
      D.30179 = MEM[(struct MonoInst * *)iargs + 16B];
      D.30175->last_ins = D.30179;
      D.30176 = D.30175->last_ins;
      D.30175->code = D.30176;
      <D.30180>:
      D.30181 = iargs + 24;
      D.30164 = cfg->mempool;
      D.30182 = mono_mempool_alloc (D.30164, 80);
      *D.30181 = D.30182;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30183->data.op[1].const_val = 0;
      D.30184 = D.30183->data.op[1].const_val;
      D.30183->data.op[0].const_val = D.30184;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30183->prev = 0B;
      D.30185 = D.30183->prev;
      D.30183->next = D.30185;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30183->opcode = 362;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30183->flags = 0;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30183->type = 0;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30183->dreg = -1;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30183->sreg3 = -1;
      D.30186 = D.30183->sreg3;
      D.30183->sreg2 = D.30186;
      D.30187 = D.30183->sreg2;
      D.30183->sreg1 = D.30187;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30171 = cfg->ip;
      D.30183->cil_code = D.30171;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      need_wb.44 = need_wb;
      D.30189 = (long int) need_wb.44;
      D.30183->data.op[0].const_val = D.30189;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30183->type = 1;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30190 = alloc_dreg (cfg, 1);
      D.30191 = (int) D.30190;
      D.30183->dreg = D.30191;
      D.30175 = cfg->cbb;
      D.30176 = D.30175->last_ins;
      if (D.30176 != 0B) goto <D.30192>; else goto <D.30193>;
      <D.30192>:
      D.30175 = cfg->cbb;
      D.30176 = D.30175->last_ins;
      D.30194 = MEM[(struct MonoInst * *)iargs + 24B];
      D.30176->next = D.30194;
      D.30181 = iargs + 24;
      D.30183 = *D.30181;
      D.30175 = cfg->cbb;
      D.30176 = D.30175->last_ins;
      D.30183->prev = D.30176;
      D.30175 = cfg->cbb;
      D.30194 = MEM[(struct MonoInst * *)iargs + 24B];
      D.30175->last_ins = D.30194;
      goto <D.30195>;
      <D.30193>:
      D.30175 = cfg->cbb;
      D.30175 = cfg->cbb;
      D.30194 = MEM[(struct MonoInst * *)iargs + 24B];
      D.30175->last_ins = D.30194;
      D.30176 = D.30175->last_ins;
      D.30175->code = D.30176;
      <D.30195>:
      mono_emit_jit_icall (cfg, mono_gc_wbarrier_value_copy_bitmap, iargs);
      D.30158 = 1;
      return D.30158;
      <D.30162>:
      D.30196 = *iargs;
      destreg = D.30196->dreg;
      D.30197 = iargs + 8;
      D.30198 = *D.30197;
      srcreg = D.30198->dreg;
      offset = 0;
      D.30199 = alloc_preg (cfg);
      dest_ptr_reg = (int) D.30199;
      D.30200 = alloc_preg (cfg);
      tmp_reg = (int) D.30200;
      D.30164 = cfg->mempool;
      D.30201 = mono_mempool_alloc (D.30164, 80);
      *iargs = D.30201;
      D.30196 = *iargs;
      D.30196 = *iargs;
      D.30196->data.op[1].const_val = 0;
      D.30202 = D.30196->data.op[1].const_val;
      D.30196->data.op[0].const_val = D.30202;
      D.30196 = *iargs;
      D.30196 = *iargs;
      D.30196->prev = 0B;
      D.30203 = D.30196->prev;
      D.30196->next = D.30203;
      D.30196 = *iargs;
      D.30196->opcode = 428;
      D.30196 = *iargs;
      D.30196->flags = 0;
      D.30196 = *iargs;
      D.30196->type = 0;
      D.30196 = *iargs;
      D.30196->dreg = -1;
      D.30196 = *iargs;
      D.30196 = *iargs;
      D.30196 = *iargs;
      D.30196->sreg3 = -1;
      D.30204 = D.30196->sreg3;
      D.30196->sreg2 = D.30204;
      D.30205 = D.30196->sreg2;
      D.30196->sreg1 = D.30205;
      D.30196 = *iargs;
      D.30171 = cfg->ip;
      D.30196->cil_code = D.30171;
      D.30196 = *iargs;
      D.30196->dreg = dest_ptr_reg;
      D.30196 = *iargs;
      D.30196->sreg1 = destreg;
      D.30175 = cfg->cbb;
      D.30176 = D.30175->last_ins;
      if (D.30176 != 0B) goto <D.30206>; else goto <D.30207>;
      <D.30206>:
      D.30175 = cfg->cbb;
      D.30176 = D.30175->last_ins;
      D.30196 = *iargs;
      D.30176->next = D.30196;
      D.30196 = *iargs;
      D.30175 = cfg->cbb;
      D.30176 = D.30175->last_ins;
      D.30196->prev = D.30176;
      D.30175 = cfg->cbb;
      D.30196 = *iargs;
      D.30175->last_ins = D.30196;
      goto <D.30208>;
      <D.30207>:
      D.30175 = cfg->cbb;
      D.30175 = cfg->cbb;
      D.30196 = *iargs;
      D.30175->last_ins = D.30196;
      D.30176 = D.30175->last_ins;
      D.30175->code = D.30176;
      <D.30208>:
      goto <D.25884>;
      <D.25883>:
      {
        struct MonoInst * load_inst;

        D.30164 = cfg->mempool;
        load_inst = mono_mempool_alloc (D.30164, 80);
        load_inst->data.op[1].const_val = 0;
        D.30209 = load_inst->data.op[1].const_val;
        load_inst->data.op[0].const_val = D.30209;
        load_inst->prev = 0B;
        D.30210 = load_inst->prev;
        load_inst->next = D.30210;
        load_inst->opcode = 391;
        load_inst->flags = 0;
        load_inst->type = 0;
        load_inst->dreg = -1;
        load_inst->sreg3 = -1;
        D.30211 = load_inst->sreg3;
        load_inst->sreg2 = D.30211;
        D.30212 = load_inst->sreg2;
        load_inst->sreg1 = D.30212;
        D.30171 = cfg->ip;
        load_inst->cil_code = D.30171;
        load_inst->dreg = tmp_reg;
        load_inst->sreg1 = srcreg;
        D.30213 = (long int) offset;
        load_inst->data.op[0].const_val = D.30213;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        if (D.30176 != 0B) goto <D.30214>; else goto <D.30215>;
        <D.30214>:
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        D.30176->next = load_inst;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        load_inst->prev = D.30176;
        D.30175 = cfg->cbb;
        D.30175->last_ins = load_inst;
        goto <D.30216>;
        <D.30215>:
        D.30175 = cfg->cbb;
        D.30175 = cfg->cbb;
        D.30175->last_ins = load_inst;
        D.30176 = D.30175->last_ins;
        D.30175->code = D.30176;
        <D.30216>:
        {
          struct MonoInst * inst;

          D.30164 = cfg->mempool;
          inst = mono_mempool_alloc (D.30164, 80);
          inst->data.op[1].const_val = 0;
          D.30217 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30217;
          inst->prev = 0B;
          D.30218 = inst->prev;
          inst->next = D.30218;
          inst->opcode = 378;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30219 = inst->sreg3;
          inst->sreg2 = D.30219;
          D.30220 = inst->sreg2;
          inst->sreg1 = D.30220;
          D.30171 = cfg->ip;
          inst->cil_code = D.30171;
          inst->sreg1 = tmp_reg;
          inst->dreg = dest_ptr_reg;
          inst->data.op[0].const_val = 0;
          D.30175 = cfg->cbb;
          D.30176 = D.30175->last_ins;
          if (D.30176 != 0B) goto <D.30221>; else goto <D.30222>;
          <D.30221>:
          D.30175 = cfg->cbb;
          D.30176 = D.30175->last_ins;
          D.30176->next = inst;
          D.30175 = cfg->cbb;
          D.30176 = D.30175->last_ins;
          inst->prev = D.30176;
          D.30175 = cfg->cbb;
          D.30175->last_ins = inst;
          goto <D.30223>;
          <D.30222>:
          D.30175 = cfg->cbb;
          D.30175 = cfg->cbb;
          D.30175->last_ins = inst;
          D.30176 = D.30175->last_ins;
          D.30175->code = D.30176;
          <D.30223>:
        }
        need_wb.44 = need_wb;
        D.30224 = need_wb.44 & 1;
        if (D.30224 != 0) goto <D.30225>; else goto <D.30226>;
        <D.30225>:
        D.30196 = *iargs;
        emit_write_barrier (cfg, D.30196, load_inst);
        <D.30226>:
        offset = offset + 8;
        size = size + -8;
        need_wb.44 = need_wb;
        need_wb.45 = need_wb.44 >> 1;
        need_wb = need_wb.45;
        if (size > 7) goto <D.30228>; else goto <D.30229>;
        <D.30228>:
        D.30164 = cfg->mempool;
        D.30230 = mono_mempool_alloc (D.30164, 80);
        *iargs = D.30230;
        D.30196 = *iargs;
        D.30196 = *iargs;
        D.30196->data.op[1].const_val = 0;
        D.30202 = D.30196->data.op[1].const_val;
        D.30196->data.op[0].const_val = D.30202;
        D.30196 = *iargs;
        D.30196 = *iargs;
        D.30196->prev = 0B;
        D.30203 = D.30196->prev;
        D.30196->next = D.30203;
        D.30196 = *iargs;
        D.30196->opcode = 542;
        D.30196 = *iargs;
        D.30196->flags = 0;
        D.30196 = *iargs;
        D.30196->type = 0;
        D.30196 = *iargs;
        D.30196->dreg = -1;
        D.30196 = *iargs;
        D.30196 = *iargs;
        D.30196 = *iargs;
        D.30196->sreg3 = -1;
        D.30204 = D.30196->sreg3;
        D.30196->sreg2 = D.30204;
        D.30205 = D.30196->sreg2;
        D.30196->sreg1 = D.30205;
        D.30196 = *iargs;
        D.30171 = cfg->ip;
        D.30196->cil_code = D.30171;
        D.30196 = *iargs;
        D.30196->dreg = dest_ptr_reg;
        D.30196 = *iargs;
        D.30196->sreg1 = dest_ptr_reg;
        D.30196 = *iargs;
        D.30196->data.op[1].const_val = 8;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        if (D.30176 != 0B) goto <D.30231>; else goto <D.30232>;
        <D.30231>:
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        D.30196 = *iargs;
        D.30176->next = D.30196;
        D.30196 = *iargs;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        D.30196->prev = D.30176;
        D.30175 = cfg->cbb;
        D.30196 = *iargs;
        D.30175->last_ins = D.30196;
        goto <D.30233>;
        <D.30232>:
        D.30175 = cfg->cbb;
        D.30175 = cfg->cbb;
        D.30196 = *iargs;
        D.30175->last_ins = D.30196;
        D.30176 = D.30175->last_ins;
        D.30175->code = D.30176;
        <D.30233>:
        <D.30229>:
      }
      <D.25884>:
      if (size > 7) goto <D.25883>; else goto <D.25885>;
      <D.25885>:
      goto <D.25889>;
      <D.25888>:
      {
        struct MonoInst * inst;

        D.30164 = cfg->mempool;
        inst = mono_mempool_alloc (D.30164, 80);
        inst->data.op[1].const_val = 0;
        D.30234 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30234;
        inst->prev = 0B;
        D.30235 = inst->prev;
        inst->next = D.30235;
        inst->opcode = 396;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30236 = inst->sreg3;
        inst->sreg2 = D.30236;
        D.30237 = inst->sreg2;
        inst->sreg1 = D.30237;
        D.30171 = cfg->ip;
        inst->cil_code = D.30171;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        D.30213 = (long int) offset;
        inst->data.op[0].const_val = D.30213;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        if (D.30176 != 0B) goto <D.30238>; else goto <D.30239>;
        <D.30238>:
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        D.30176->next = inst;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        inst->prev = D.30176;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        goto <D.30240>;
        <D.30239>:
        D.30175 = cfg->cbb;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        D.30176 = D.30175->last_ins;
        D.30175->code = D.30176;
        <D.30240>:
      }
      {
        struct MonoInst * inst;

        D.30164 = cfg->mempool;
        inst = mono_mempool_alloc (D.30164, 80);
        inst->data.op[1].const_val = 0;
        D.30241 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30241;
        inst->prev = 0B;
        D.30242 = inst->prev;
        inst->next = D.30242;
        inst->opcode = 377;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30243 = inst->sreg3;
        inst->sreg2 = D.30243;
        D.30244 = inst->sreg2;
        inst->sreg1 = D.30244;
        D.30171 = cfg->ip;
        inst->cil_code = D.30171;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        D.30213 = (long int) offset;
        inst->data.op[0].const_val = D.30213;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        if (D.30176 != 0B) goto <D.30245>; else goto <D.30246>;
        <D.30245>:
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        D.30176->next = inst;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        inst->prev = D.30176;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        goto <D.30247>;
        <D.30246>:
        D.30175 = cfg->cbb;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        D.30176 = D.30175->last_ins;
        D.30175->code = D.30176;
        <D.30247>:
      }
      offset = offset + 4;
      size = size + -4;
      <D.25889>:
      if (size > 3) goto <D.25888>; else goto <D.25890>;
      <D.25890>:
      goto <D.25894>;
      <D.25893>:
      {
        struct MonoInst * inst;

        D.30164 = cfg->mempool;
        inst = mono_mempool_alloc (D.30164, 80);
        inst->data.op[1].const_val = 0;
        D.30248 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30248;
        inst->prev = 0B;
        D.30249 = inst->prev;
        inst->next = D.30249;
        inst->opcode = 394;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30250 = inst->sreg3;
        inst->sreg2 = D.30250;
        D.30251 = inst->sreg2;
        inst->sreg1 = D.30251;
        D.30171 = cfg->ip;
        inst->cil_code = D.30171;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        D.30213 = (long int) offset;
        inst->data.op[0].const_val = D.30213;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        if (D.30176 != 0B) goto <D.30252>; else goto <D.30253>;
        <D.30252>:
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        D.30176->next = inst;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        inst->prev = D.30176;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        goto <D.30254>;
        <D.30253>:
        D.30175 = cfg->cbb;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        D.30176 = D.30175->last_ins;
        D.30175->code = D.30176;
        <D.30254>:
      }
      {
        struct MonoInst * inst;

        D.30164 = cfg->mempool;
        inst = mono_mempool_alloc (D.30164, 80);
        inst->data.op[1].const_val = 0;
        D.30255 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30255;
        inst->prev = 0B;
        D.30256 = inst->prev;
        inst->next = D.30256;
        inst->opcode = 376;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30257 = inst->sreg3;
        inst->sreg2 = D.30257;
        D.30258 = inst->sreg2;
        inst->sreg1 = D.30258;
        D.30171 = cfg->ip;
        inst->cil_code = D.30171;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        D.30213 = (long int) offset;
        inst->data.op[0].const_val = D.30213;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        if (D.30176 != 0B) goto <D.30259>; else goto <D.30260>;
        <D.30259>:
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        D.30176->next = inst;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        inst->prev = D.30176;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        goto <D.30261>;
        <D.30260>:
        D.30175 = cfg->cbb;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        D.30176 = D.30175->last_ins;
        D.30175->code = D.30176;
        <D.30261>:
      }
      offset = offset + 2;
      size = size + -2;
      <D.25894>:
      if (size > 1) goto <D.25893>; else goto <D.25895>;
      <D.25895>:
      goto <D.25899>;
      <D.25898>:
      {
        struct MonoInst * inst;

        D.30164 = cfg->mempool;
        inst = mono_mempool_alloc (D.30164, 80);
        inst->data.op[1].const_val = 0;
        D.30262 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30262;
        inst->prev = 0B;
        D.30263 = inst->prev;
        inst->next = D.30263;
        inst->opcode = 392;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30264 = inst->sreg3;
        inst->sreg2 = D.30264;
        D.30265 = inst->sreg2;
        inst->sreg1 = D.30265;
        D.30171 = cfg->ip;
        inst->cil_code = D.30171;
        inst->dreg = tmp_reg;
        inst->sreg1 = srcreg;
        D.30213 = (long int) offset;
        inst->data.op[0].const_val = D.30213;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        if (D.30176 != 0B) goto <D.30266>; else goto <D.30267>;
        <D.30266>:
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        D.30176->next = inst;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        inst->prev = D.30176;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        goto <D.30268>;
        <D.30267>:
        D.30175 = cfg->cbb;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        D.30176 = D.30175->last_ins;
        D.30175->code = D.30176;
        <D.30268>:
      }
      {
        struct MonoInst * inst;

        D.30164 = cfg->mempool;
        inst = mono_mempool_alloc (D.30164, 80);
        inst->data.op[1].const_val = 0;
        D.30269 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.30269;
        inst->prev = 0B;
        D.30270 = inst->prev;
        inst->next = D.30270;
        inst->opcode = 375;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.30271 = inst->sreg3;
        inst->sreg2 = D.30271;
        D.30272 = inst->sreg2;
        inst->sreg1 = D.30272;
        D.30171 = cfg->ip;
        inst->cil_code = D.30171;
        inst->sreg1 = tmp_reg;
        inst->dreg = destreg;
        D.30213 = (long int) offset;
        inst->data.op[0].const_val = D.30213;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        if (D.30176 != 0B) goto <D.30273>; else goto <D.30274>;
        <D.30273>:
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        D.30176->next = inst;
        D.30175 = cfg->cbb;
        D.30176 = D.30175->last_ins;
        inst->prev = D.30176;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        goto <D.30275>;
        <D.30274>:
        D.30175 = cfg->cbb;
        D.30175 = cfg->cbb;
        D.30175->last_ins = inst;
        D.30176 = D.30175->last_ins;
        D.30175->code = D.30176;
        <D.30275>:
      }
      offset = offset + 1;
      size = size + -1;
      <D.25899>:
      if (size > 0) goto <D.25898>; else goto <D.25900>;
      <D.25900>:
      D.30158 = 1;
      return D.30158;
    }
  finally
    {
      need_wb = {CLOBBER};
    }
}


create_write_barrier_bitmap (struct MonoCompile * cfg, struct MonoClass * klass, unsigned int * wb_bitmap, int offset)
{
  struct MonoType * D.30278;
  short unsigned int D.30279;
  int D.30280;
  int D.30281;
  int iftmp.46;
  unsigned char D.30285;
  unsigned char D.30286;
  int D.30289;
  unsigned int D.30290;
  unsigned int D.30291;
  struct MonoType * D.30293;
  int D.30294;
  unsigned int foffset.47;
  unsigned int D.30298;
  _Bool D.30299;
  long int D.30300;
  long int D.30301;
  unsigned int D.30304;
  int D.30305;
  int D.30306;
  int D.30307;
  unsigned int D.30308;
  unsigned int D.30309;
  unsigned char D.30311;
  unsigned char D.30312;
  struct MonoClassField * field;
  void * iter;

  try
    {
      iter = 0B;
      goto <D.25842>;
      <D.25844>:
      {
        int foffset;

        D.30278 = field->type;
        D.30279 = D.30278->attrs;
        D.30280 = (int) D.30279;
        D.30281 = D.30280 & 16;
        if (D.30281 != 0) goto <D.30282>; else goto <D.30283>;
        <D.30282>:
        // predicted unlikely by continue predictor.
        goto <D.25842>;
        <D.30283>:
        D.30285 = BIT_FIELD_REF <*klass, 8, 256>;
        D.30286 = D.30285 & 8;
        if (D.30286 != 0) goto <D.30287>; else goto <D.30288>;
        <D.30287>:
        D.30289 = field->offset;
        D.30290 = (unsigned int) D.30289;
        D.30291 = D.30290 + 4294967280;
        iftmp.46 = (int) D.30291;
        goto <D.30292>;
        <D.30288>:
        iftmp.46 = field->offset;
        <D.30292>:
        foffset = iftmp.46;
        D.30293 = mono_field_get_type (field);
        D.30294 = mini_type_is_reference (cfg, D.30293);
        if (D.30294 != 0) goto <D.30295>; else goto <D.30296>;
        <D.30295>:
        foffset.47 = (unsigned int) foffset;
        D.30298 = foffset.47 & 7;
        D.30299 = D.30298 != 0;
        D.30300 = (long int) D.30299;
        D.30301 = __builtin_expect (D.30300, 0);
        if (D.30301 != 0) goto <D.30302>; else goto <D.30303>;
        <D.30302>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2886, "(foffset % SIZEOF_VOID_P) == 0");
        <D.30303>:
        D.30304 = *wb_bitmap;
        D.30305 = offset + foffset;
        D.30306 = D.30305 / 8;
        D.30307 = 1 << D.30306;
        D.30308 = (unsigned int) D.30307;
        D.30309 = D.30304 | D.30308;
        *wb_bitmap = D.30309;
        goto <D.30310>;
        <D.30296>:
        {
          struct MonoClass * field_class;

          D.30278 = field->type;
          field_class = mono_class_from_mono_type (D.30278);
          D.30311 = BIT_FIELD_REF <*field_class, 8, 280>;
          D.30312 = D.30311 & 8;
          if (D.30312 != 0) goto <D.30313>; else goto <D.30314>;
          <D.30313>:
          D.30305 = offset + foffset;
          create_write_barrier_bitmap (cfg, field_class, wb_bitmap, D.30305);
          <D.30314>:
        }
        <D.30310>:
      }
      <D.25842>:
      field = mono_class_get_fields (klass, &iter);
      if (field != 0B) goto <D.25844>; else goto <D.25845>;
      <D.25845>:
    }
  finally
    {
      iter = {CLOBBER};
    }
}


emit_write_barrier (struct MonoCompile * cfg, struct MonoInst * ptr, struct MonoInst * value)
{
  unsigned char D.30315;
  unsigned char D.30316;
  unsigned char D.30322;
  unsigned char D.30323;
  int nursery_shift_bits.48;
  struct MonoMemPool * D.30328;
  long int D.30329;
  struct MonoInst * D.30330;
  int D.30331;
  int D.30332;
  const unsigned char * D.30333;
  struct MonoInst * ptr.49;
  int D.30335;
  int D.30336;
  struct MonoBasicBlock * D.30337;
  struct MonoInst * D.30338;
  unsigned int D.30344;
  unsigned int D.30345;
  long int D.30346;
  struct MonoInst * D.30347;
  int D.30348;
  int D.30349;
  int card_table_shift_bits.50;
  long int D.30351;
  void * card_table_mask.51;
  long int D.30358;
  struct MonoInst * D.30359;
  int D.30360;
  int D.30361;
  long int card_table_mask.52;
  long int D.30368;
  struct MonoInst * D.30369;
  guint16 iftmp.53;
  int D.30374;
  int D.30375;
  long int D.30380;
  struct MonoInst * D.30381;
  int D.30382;
  int D.30383;
  long int D.30387;
  struct MonoInst * D.30388;
  int D.30389;
  int D.30390;
  long int D.30394;
  struct MonoInst * D.30395;
  int D.30396;
  int D.30397;
  long int D.30402;
  struct MonoInst * D.30403;
  int D.30404;
  int D.30405;
  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.30315 = BIT_FIELD_REF <*cfg, 8, 5624>;
      D.30316 = D.30315 & 16;
      if (D.30316 == 0) goto <D.30317>; else goto <D.30318>;
      <D.30317>:
      return;
      <D.30318>:
      card_table = mono_gc_get_card_table (&card_table_shift_bits, &card_table_mask);
      mono_gc_get_nursery (&nursery_shift_bits, &nursery_size);
      has_card_table_wb = 1;
      if (has_card_table_wb != 0) goto <D.30321>; else goto <D.30319>;
      <D.30321>:
      D.30322 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.30323 = D.30322 & 64;
      if (D.30323 == 0) goto <D.30324>; else goto <D.30319>;
      <D.30324>:
      if (card_table != 0B) goto <D.30325>; else goto <D.30319>;
      <D.30325>:
      nursery_shift_bits.48 = nursery_shift_bits;
      if (nursery_shift_bits.48 > 0) goto <D.30327>; else goto <D.30319>;
      <D.30327>:
      {
        struct MonoInst * wbarrier;

        D.30328 = cfg->mempool;
        wbarrier = mono_mempool_alloc (D.30328, 80);
        wbarrier->data.op[1].const_val = 0;
        D.30329 = wbarrier->data.op[1].const_val;
        wbarrier->data.op[0].const_val = D.30329;
        wbarrier->prev = 0B;
        D.30330 = wbarrier->prev;
        wbarrier->next = D.30330;
        wbarrier->opcode = 794;
        wbarrier->flags = 0;
        wbarrier->type = 0;
        wbarrier->dreg = -1;
        wbarrier->sreg3 = -1;
        D.30331 = wbarrier->sreg3;
        wbarrier->sreg2 = D.30331;
        D.30332 = wbarrier->sreg2;
        wbarrier->sreg1 = D.30332;
        D.30333 = cfg->ip;
        wbarrier->cil_code = D.30333;
        ptr.49 = ptr;
        D.30335 = ptr.49->dreg;
        wbarrier->sreg1 = D.30335;
        D.30336 = value->dreg;
        wbarrier->sreg2 = D.30336;
        D.30337 = cfg->cbb;
        D.30338 = D.30337->last_ins;
        if (D.30338 != 0B) goto <D.30339>; else goto <D.30340>;
        <D.30339>:
        D.30337 = cfg->cbb;
        D.30338 = D.30337->last_ins;
        D.30338->next = wbarrier;
        D.30337 = cfg->cbb;
        D.30338 = D.30337->last_ins;
        wbarrier->prev = D.30338;
        D.30337 = cfg->cbb;
        D.30337->last_ins = wbarrier;
        goto <D.30341>;
        <D.30340>:
        D.30337 = cfg->cbb;
        D.30337 = cfg->cbb;
        D.30337->last_ins = wbarrier;
        D.30338 = D.30337->last_ins;
        D.30337->code = D.30338;
        <D.30341>:
      }
      goto <D.30320>;
      <D.30319>:
      if (card_table != 0B) goto <D.30342>; else goto <D.30343>;
      <D.30342>:
      {
        int offset_reg;
        int card_reg;
        struct MonoInst * ins;

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

          D.30328 = cfg->mempool;
          inst = mono_mempool_alloc (D.30328, 80);
          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 = 445;
          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.30333 = cfg->ip;
          inst->cil_code = D.30333;
          inst->dreg = offset_reg;
          ptr.49 = ptr;
          D.30335 = ptr.49->dreg;
          inst->sreg1 = D.30335;
          card_table_shift_bits.50 = card_table_shift_bits;
          D.30351 = (long int) card_table_shift_bits.50;
          inst->data.op[1].const_val = D.30351;
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          if (D.30338 != 0B) goto <D.30352>; else goto <D.30353>;
          <D.30352>:
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          D.30338->next = inst;
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          inst->prev = D.30338;
          D.30337 = cfg->cbb;
          D.30337->last_ins = inst;
          goto <D.30354>;
          <D.30353>:
          D.30337 = cfg->cbb;
          D.30337 = cfg->cbb;
          D.30337->last_ins = inst;
          D.30338 = D.30337->last_ins;
          D.30337->code = D.30338;
          <D.30354>:
        }
        card_table_mask.51 = card_table_mask;
        if (card_table_mask.51 != 0B) goto <D.30356>; else goto <D.30357>;
        <D.30356>:
        {
          struct MonoInst * inst;

          D.30328 = cfg->mempool;
          inst = mono_mempool_alloc (D.30328, 80);
          inst->data.op[1].const_val = 0;
          D.30358 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30358;
          inst->prev = 0B;
          D.30359 = inst->prev;
          inst->next = D.30359;
          inst->opcode = 545;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30360 = inst->sreg3;
          inst->sreg2 = D.30360;
          D.30361 = inst->sreg2;
          inst->sreg1 = D.30361;
          D.30333 = cfg->ip;
          inst->cil_code = D.30333;
          inst->dreg = offset_reg;
          inst->sreg1 = offset_reg;
          card_table_mask.51 = card_table_mask;
          card_table_mask.52 = (long int) card_table_mask.51;
          inst->data.op[1].const_val = card_table_mask.52;
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          if (D.30338 != 0B) goto <D.30363>; else goto <D.30364>;
          <D.30363>:
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          D.30338->next = inst;
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          inst->prev = D.30338;
          D.30337 = cfg->cbb;
          D.30337->last_ins = inst;
          goto <D.30365>;
          <D.30364>:
          D.30337 = cfg->cbb;
          D.30337 = cfg->cbb;
          D.30337->last_ins = inst;
          D.30338 = D.30337->last_ins;
          D.30337->code = D.30338;
          <D.30365>:
        }
        <D.30357>:
        D.30322 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.30323 = D.30322 & 64;
        if (D.30323 != 0) goto <D.30366>; else goto <D.30367>;
        <D.30366>:
        {
          struct MonoInst * inst;

          D.30328 = cfg->mempool;
          inst = mono_mempool_alloc (D.30328, 80);
          inst->data.op[1].const_val = 0;
          D.30368 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30368;
          inst->prev = 0B;
          D.30369 = inst->prev;
          inst->next = D.30369;
          D.30322 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.30323 = D.30322 & 64;
          if (D.30323 != 0) goto <D.30371>; else goto <D.30372>;
          <D.30371>:
          iftmp.53 = 736;
          goto <D.30373>;
          <D.30372>:
          iftmp.53 = 363;
          <D.30373>:
          inst->opcode = iftmp.53;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30374 = inst->sreg3;
          inst->sreg2 = D.30374;
          D.30375 = inst->sreg2;
          inst->sreg1 = D.30375;
          D.30333 = cfg->ip;
          inst->cil_code = D.30333;
          inst->dreg = card_reg;
          inst->data.op[0].p = 0B;
          inst->data.op[1].const_val = 42;
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          if (D.30338 != 0B) goto <D.30376>; else goto <D.30377>;
          <D.30376>:
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          D.30338->next = inst;
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          inst->prev = D.30338;
          D.30337 = cfg->cbb;
          D.30337->last_ins = inst;
          goto <D.30378>;
          <D.30377>:
          D.30337 = cfg->cbb;
          D.30337 = cfg->cbb;
          D.30337->last_ins = inst;
          D.30338 = D.30337->last_ins;
          D.30337->code = D.30338;
          <D.30378>:
        }
        goto <D.30379>;
        <D.30367>:
        D.30328 = cfg->mempool;
        ins = mono_mempool_alloc (D.30328, 80);
        ins->data.op[1].const_val = 0;
        D.30380 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30380;
        ins->prev = 0B;
        D.30381 = ins->prev;
        ins->next = D.30381;
        ins->opcode = 363;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30382 = ins->sreg3;
        ins->sreg2 = D.30382;
        D.30383 = ins->sreg2;
        ins->sreg1 = D.30383;
        D.30333 = cfg->ip;
        ins->cil_code = D.30333;
        ins->data.op[0].p = card_table;
        ins->dreg = card_reg;
        D.30337 = cfg->cbb;
        D.30338 = D.30337->last_ins;
        if (D.30338 != 0B) goto <D.30384>; else goto <D.30385>;
        <D.30384>:
        D.30337 = cfg->cbb;
        D.30338 = D.30337->last_ins;
        D.30338->next = ins;
        D.30337 = cfg->cbb;
        D.30338 = D.30337->last_ins;
        ins->prev = D.30338;
        D.30337 = cfg->cbb;
        D.30337->last_ins = ins;
        goto <D.30386>;
        <D.30385>:
        D.30337 = cfg->cbb;
        D.30337 = cfg->cbb;
        D.30337->last_ins = ins;
        D.30338 = D.30337->last_ins;
        D.30337->code = D.30338;
        <D.30386>:
        <D.30379>:
        {
          struct MonoInst * inst;

          D.30328 = cfg->mempool;
          inst = mono_mempool_alloc (D.30328, 80);
          inst->data.op[1].const_val = 0;
          D.30387 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30387;
          inst->prev = 0B;
          D.30388 = inst->prev;
          inst->next = D.30388;
          inst->opcode = 483;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30389 = inst->sreg3;
          inst->sreg2 = D.30389;
          D.30390 = inst->sreg2;
          inst->sreg1 = D.30390;
          D.30333 = cfg->ip;
          inst->cil_code = D.30333;
          inst->dreg = offset_reg;
          inst->sreg1 = offset_reg;
          inst->sreg2 = card_reg;
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          if (D.30338 != 0B) goto <D.30391>; else goto <D.30392>;
          <D.30391>:
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          D.30338->next = inst;
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          inst->prev = D.30338;
          D.30337 = cfg->cbb;
          D.30337->last_ins = inst;
          goto <D.30393>;
          <D.30392>:
          D.30337 = cfg->cbb;
          D.30337 = cfg->cbb;
          D.30337->last_ins = inst;
          D.30338 = D.30337->last_ins;
          D.30337->code = D.30338;
          <D.30393>:
        }
        {
          struct MonoInst * inst;

          D.30328 = cfg->mempool;
          inst = mono_mempool_alloc (D.30328, 80);
          inst->data.op[1].const_val = 0;
          D.30394 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.30394;
          inst->prev = 0B;
          D.30395 = inst->prev;
          inst->next = D.30395;
          inst->opcode = 385;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.30396 = inst->sreg3;
          inst->sreg2 = D.30396;
          D.30397 = inst->sreg2;
          inst->sreg1 = D.30397;
          D.30333 = cfg->ip;
          inst->cil_code = D.30333;
          inst->dreg = offset_reg;
          inst->data.op[0].const_val = 0;
          inst->data.op[1].const_val = 1;
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          if (D.30338 != 0B) goto <D.30398>; else goto <D.30399>;
          <D.30398>:
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          D.30338->next = inst;
          D.30337 = cfg->cbb;
          D.30338 = D.30337->last_ins;
          inst->prev = D.30338;
          D.30337 = cfg->cbb;
          D.30337->last_ins = inst;
          goto <D.30400>;
          <D.30399>:
          D.30337 = cfg->cbb;
          D.30337 = cfg->cbb;
          D.30337->last_ins = inst;
          D.30338 = D.30337->last_ins;
          D.30337->code = D.30338;
          <D.30400>:
        }
      }
      goto <D.30401>;
      <D.30343>:
      {
        struct MonoMethod * write_barrier;

        write_barrier = mono_gc_get_write_barrier ();
        mono_emit_method_call (cfg, write_barrier, &ptr, 0B);
      }
      <D.30401>:
      <D.30320>:
      D.30328 = cfg->mempool;
      dummy_use = mono_mempool_alloc (D.30328, 80);
      dummy_use->data.op[1].const_val = 0;
      D.30402 = dummy_use->data.op[1].const_val;
      dummy_use->data.op[0].const_val = D.30402;
      dummy_use->prev = 0B;
      D.30403 = dummy_use->prev;
      dummy_use->next = D.30403;
      dummy_use->opcode = 800;
      dummy_use->flags = 0;
      dummy_use->type = 0;
      dummy_use->dreg = -1;
      dummy_use->sreg3 = -1;
      D.30404 = dummy_use->sreg3;
      dummy_use->sreg2 = D.30404;
      D.30405 = dummy_use->sreg2;
      dummy_use->sreg1 = D.30405;
      D.30333 = cfg->ip;
      dummy_use->cil_code = D.30333;
      D.30336 = value->dreg;
      dummy_use->sreg1 = D.30336;
      D.30337 = cfg->cbb;
      D.30338 = D.30337->last_ins;
      if (D.30338 != 0B) goto <D.30406>; else goto <D.30407>;
      <D.30406>:
      D.30337 = cfg->cbb;
      D.30338 = D.30337->last_ins;
      D.30338->next = dummy_use;
      D.30337 = cfg->cbb;
      D.30338 = D.30337->last_ins;
      dummy_use->prev = D.30338;
      D.30337 = cfg->cbb;
      D.30337->last_ins = dummy_use;
      goto <D.30408>;
      <D.30407>:
      D.30337 = cfg->cbb;
      D.30337 = cfg->cbb;
      D.30337->last_ins = dummy_use;
      D.30338 = D.30337->last_ins;
      D.30337->code = D.30338;
      <D.30408>:
    }
  finally
    {
      card_table_shift_bits = {CLOBBER};
      card_table_mask = {CLOBBER};
      nursery_shift_bits = {CLOBBER};
      nursery_size = {CLOBBER};
    }
}


emit_get_rgctx_klass (struct MonoCompile * cfg, int context_used, struct MonoClass * klass, MonoRgctxInfoType rgctx_type)
{
  int D.30412;
  struct MonoMethod * D.30413;
  struct MonoMemPool * D.30414;
  struct MonoInst * D.30415;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.30412 = context_used & 2;
  D.30413 = cfg->current_method;
  D.30414 = cfg->mempool;
  entry = mono_patch_info_rgctx_entry_new (D.30414, D.30413, D.30412, 11, klass, rgctx_type);
  D.30413 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.30413, context_used);
  D.30415 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.30415;
}


get_memcpy_method ()
{
  struct MonoMethod * memcpy_method.54;
  struct MonoClass * D.30420;
  struct MonoMethod * memcpy_method.55;
  struct MonoMethod * D.30424;
  static struct MonoMethod * memcpy_method = 0B;

  memcpy_method.54 = memcpy_method;
  if (memcpy_method.54 == 0B) goto <D.30418>; else goto <D.30419>;
  <D.30418>:
  D.30420 = mono_defaults.string_class;
  memcpy_method.55 = mono_class_get_method_from_name (D.30420, "memcpy", 3);
  memcpy_method = memcpy_method.55;
  memcpy_method.54 = memcpy_method;
  if (memcpy_method.54 == 0B) goto <D.30422>; else goto <D.30423>;
  <D.30422>:
  monoeg_g_log (0B, 4, "Old corlib found. Install a new one");
  <D.25832>:
  goto <D.25832>;
  <D.30423>:
  <D.30419>:
  D.30424 = memcpy_method;
  return D.30424;
}


mini_emit_initobj (struct MonoCompile * cfg, struct MonoInst * dest, const guchar * ip, struct MonoClass * klass)
{
  int D.30426;
  struct MonoMethod * bzero_method.56;
  struct MonoClass * D.30432;
  struct MonoMethod * bzero_method.57;
  _Bool D.30434;
  long int D.30435;
  long int D.30436;
  struct MonoMethodSignature * D.30439;
  unsigned int n.58;
  unsigned int align.59;
  int align.60;
  int D.30445;
  struct MonoMemPool * D.30447;
  void * D.30448;
  struct MonoInst * D.30449;
  long int D.30450;
  struct MonoInst * D.30451;
  int D.30452;
  int D.30453;
  const unsigned char * D.30454;
  unsigned int D.30455;
  int D.30456;
  struct MonoBasicBlock * D.30457;
  struct MonoInst * D.30458;
  void * D.30462;
  struct MonoInst * D.30463;
  long int D.30464;
  struct MonoInst * D.30465;
  int D.30466;
  int D.30467;
  long int D.30468;
  unsigned int D.30469;
  int D.30470;
  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.30426 = mini_is_gsharedvt_klass (cfg, klass);
      if (D.30426 != 0) goto <D.30427>; else goto <D.30428>;
      <D.30427>:
      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.56 = bzero_method;
      if (bzero_method.56 == 0B) goto <D.30430>; else goto <D.30431>;
      <D.30430>:
      D.30432 = mono_defaults.string_class;
      bzero_method.57 = mono_class_get_method_from_name (D.30432, "bzero_aligned_1", 2);
      bzero_method = bzero_method.57;
      <D.30431>:
      bzero_method.56 = bzero_method;
      D.30434 = bzero_method.56 == 0B;
      D.30435 = (long int) D.30434;
      D.30436 = __builtin_expect (D.30435, 0);
      if (D.30436 != 0) goto <D.30437>; else goto <D.30438>;
      <D.30437>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3163, "bzero_method");
      <D.30438>:
      iargs[0] = dest;
      iargs[1] = size_ins;
      bzero_method.56 = bzero_method;
      D.30439 = mono_method_signature (bzero_method.56);
      mono_emit_calli (cfg, D.30439, &iargs, bzero_ins, 0B, 0B);
      return;
      <D.30428>:
      n = mono_class_value_size (klass, &align);
      n.58 = (unsigned int) n;
      if (n.58 <= 40) goto <D.30441>; else goto <D.30442>;
      <D.30441>:
      align.59 = align;
      align.60 = (int) align.59;
      D.30445 = dest->dreg;
      mini_emit_memset (cfg, D.30445, 0, n, 0, align.60);
      goto <D.30446>;
      <D.30442>:
      memset_method = get_memset_method ();
      iargs[0] = dest;
      D.30447 = cfg->mempool;
      D.30448 = mono_mempool_alloc (D.30447, 80);
      iargs[1] = D.30448;
      D.30449 = iargs[1];
      D.30449 = iargs[1];
      D.30449->data.op[1].const_val = 0;
      D.30450 = D.30449->data.op[1].const_val;
      D.30449->data.op[0].const_val = D.30450;
      D.30449 = iargs[1];
      D.30449 = iargs[1];
      D.30449->prev = 0B;
      D.30451 = D.30449->prev;
      D.30449->next = D.30451;
      D.30449 = iargs[1];
      D.30449->opcode = 362;
      D.30449 = iargs[1];
      D.30449->flags = 0;
      D.30449 = iargs[1];
      D.30449->type = 0;
      D.30449 = iargs[1];
      D.30449->dreg = -1;
      D.30449 = iargs[1];
      D.30449 = iargs[1];
      D.30449 = iargs[1];
      D.30449->sreg3 = -1;
      D.30452 = D.30449->sreg3;
      D.30449->sreg2 = D.30452;
      D.30453 = D.30449->sreg2;
      D.30449->sreg1 = D.30453;
      D.30449 = iargs[1];
      D.30454 = cfg->ip;
      D.30449->cil_code = D.30454;
      D.30449 = iargs[1];
      D.30449->data.op[0].const_val = 0;
      D.30449 = iargs[1];
      D.30449->type = 1;
      D.30449 = iargs[1];
      D.30455 = alloc_dreg (cfg, 1);
      D.30456 = (int) D.30455;
      D.30449->dreg = D.30456;
      D.30457 = cfg->cbb;
      D.30458 = D.30457->last_ins;
      if (D.30458 != 0B) goto <D.30459>; else goto <D.30460>;
      <D.30459>:
      D.30457 = cfg->cbb;
      D.30458 = D.30457->last_ins;
      D.30449 = iargs[1];
      D.30458->next = D.30449;
      D.30449 = iargs[1];
      D.30457 = cfg->cbb;
      D.30458 = D.30457->last_ins;
      D.30449->prev = D.30458;
      D.30457 = cfg->cbb;
      D.30449 = iargs[1];
      D.30457->last_ins = D.30449;
      goto <D.30461>;
      <D.30460>:
      D.30457 = cfg->cbb;
      D.30457 = cfg->cbb;
      D.30449 = iargs[1];
      D.30457->last_ins = D.30449;
      D.30458 = D.30457->last_ins;
      D.30457->code = D.30458;
      <D.30461>:
      D.30447 = cfg->mempool;
      D.30462 = mono_mempool_alloc (D.30447, 80);
      iargs[2] = D.30462;
      D.30463 = iargs[2];
      D.30463 = iargs[2];
      D.30463->data.op[1].const_val = 0;
      D.30464 = D.30463->data.op[1].const_val;
      D.30463->data.op[0].const_val = D.30464;
      D.30463 = iargs[2];
      D.30463 = iargs[2];
      D.30463->prev = 0B;
      D.30465 = D.30463->prev;
      D.30463->next = D.30465;
      D.30463 = iargs[2];
      D.30463->opcode = 362;
      D.30463 = iargs[2];
      D.30463->flags = 0;
      D.30463 = iargs[2];
      D.30463->type = 0;
      D.30463 = iargs[2];
      D.30463->dreg = -1;
      D.30463 = iargs[2];
      D.30463 = iargs[2];
      D.30463 = iargs[2];
      D.30463->sreg3 = -1;
      D.30466 = D.30463->sreg3;
      D.30463->sreg2 = D.30466;
      D.30467 = D.30463->sreg2;
      D.30463->sreg1 = D.30467;
      D.30463 = iargs[2];
      D.30454 = cfg->ip;
      D.30463->cil_code = D.30454;
      D.30463 = iargs[2];
      D.30468 = (long int) n;
      D.30463->data.op[0].const_val = D.30468;
      D.30463 = iargs[2];
      D.30463->type = 1;
      D.30463 = iargs[2];
      D.30469 = alloc_dreg (cfg, 1);
      D.30470 = (int) D.30469;
      D.30463->dreg = D.30470;
      D.30457 = cfg->cbb;
      D.30458 = D.30457->last_ins;
      if (D.30458 != 0B) goto <D.30471>; else goto <D.30472>;
      <D.30471>:
      D.30457 = cfg->cbb;
      D.30458 = D.30457->last_ins;
      D.30463 = iargs[2];
      D.30458->next = D.30463;
      D.30463 = iargs[2];
      D.30457 = cfg->cbb;
      D.30458 = D.30457->last_ins;
      D.30463->prev = D.30458;
      D.30457 = cfg->cbb;
      D.30463 = iargs[2];
      D.30457->last_ins = D.30463;
      goto <D.30473>;
      <D.30472>:
      D.30457 = cfg->cbb;
      D.30457 = cfg->cbb;
      D.30463 = iargs[2];
      D.30457->last_ins = D.30463;
      D.30458 = D.30457->last_ins;
      D.30457->code = D.30458;
      <D.30473>:
      mono_emit_method_call (cfg, memset_method, &iargs, 0B);
      <D.30446>:
    }
  finally
    {
      iargs = {CLOBBER};
      align = {CLOBBER};
    }
}


mini_emit_memset (struct MonoCompile * cfg, int destreg, int offset, int size, int val, int align)
{
  _Bool D.30477;
  long int D.30478;
  long int D.30479;
  _Bool D.30484;
  _Bool D.30485;
  _Bool D.30486;
  struct MonoMemPool * D.30489;
  long int D.30490;
  struct MonoInst * D.30491;
  int D.30492;
  int D.30493;
  const unsigned char * D.30494;
  long int D.30495;
  long int D.30496;
  struct MonoBasicBlock * D.30497;
  struct MonoInst * D.30498;
  long int D.30502;
  struct MonoInst * D.30503;
  int D.30504;
  int D.30505;
  long int D.30509;
  struct MonoInst * D.30510;
  int D.30511;
  int D.30512;
  long int D.30516;
  struct MonoInst * D.30517;
  int D.30518;
  int D.30519;
  unsigned int D.30524;
  long int D.30527;
  struct MonoInst * D.30528;
  int D.30529;
  int D.30530;
  long int D.30531;
  long int D.30536;
  struct MonoInst * D.30537;
  int D.30538;
  int D.30539;
  long int D.30540;
  long int D.30546;
  struct MonoInst * D.30547;
  int D.30548;
  int D.30549;
  unsigned int offset.61;
  unsigned int D.30556;
  long int D.30559;
  struct MonoInst * D.30560;
  int D.30561;
  int D.30562;
  long int D.30566;
  struct MonoInst * D.30567;
  int D.30568;
  int D.30569;
  long int D.30573;
  struct MonoInst * D.30574;
  int D.30575;
  int D.30576;
  long int D.30580;
  struct MonoInst * D.30581;
  int D.30582;
  int D.30583;
  long int D.30587;
  struct MonoInst * D.30588;
  int D.30589;
  int D.30590;
  int val_reg;

  D.30477 = val != 0;
  D.30478 = (long int) D.30477;
  D.30479 = __builtin_expect (D.30478, 0);
  if (D.30479 != 0) goto <D.30480>; else goto <D.30481>;
  <D.30480>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1744, "val == 0");
  <D.30481>:
  if (align == 0) goto <D.30482>; else goto <D.30483>;
  <D.30482>:
  align = 4;
  <D.30483>:
  D.30484 = size <= 4;
  D.30485 = size <= align;
  D.30486 = D.30484 & D.30485;
  if (D.30486 != 0) goto <D.30487>; else goto <D.30488>;
  <D.30487>:
  switch (size) <default: <D.30523>, case 1: <D.25433>, case 2: <D.25435>, case 4: <D.25437>, case 8: <D.25439>>
  <D.25433>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30490 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30490;
    inst->prev = 0B;
    D.30491 = inst->prev;
    inst->next = D.30491;
    inst->opcode = 385;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30492 = inst->sreg3;
    inst->sreg2 = D.30492;
    D.30493 = inst->sreg2;
    inst->sreg1 = D.30493;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->dreg = destreg;
    D.30495 = (long int) offset;
    inst->data.op[0].const_val = D.30495;
    D.30496 = (long int) val;
    inst->data.op[1].const_val = D.30496;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30499>; else goto <D.30500>;
    <D.30499>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30501>;
    <D.30500>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30501>:
  }
  return;
  <D.25435>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30502 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30502;
    inst->prev = 0B;
    D.30503 = inst->prev;
    inst->next = D.30503;
    inst->opcode = 386;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30504 = inst->sreg3;
    inst->sreg2 = D.30504;
    D.30505 = inst->sreg2;
    inst->sreg1 = D.30505;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->dreg = destreg;
    D.30495 = (long int) offset;
    inst->data.op[0].const_val = D.30495;
    D.30496 = (long int) val;
    inst->data.op[1].const_val = D.30496;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30506>; else goto <D.30507>;
    <D.30506>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30508>;
    <D.30507>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30508>:
  }
  return;
  <D.25437>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30509 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30509;
    inst->prev = 0B;
    D.30510 = inst->prev;
    inst->next = D.30510;
    inst->opcode = 387;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30511 = inst->sreg3;
    inst->sreg2 = D.30511;
    D.30512 = inst->sreg2;
    inst->sreg1 = D.30512;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->dreg = destreg;
    D.30495 = (long int) offset;
    inst->data.op[0].const_val = D.30495;
    D.30496 = (long int) val;
    inst->data.op[1].const_val = D.30496;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30513>; else goto <D.30514>;
    <D.30513>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30515>;
    <D.30514>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30515>:
  }
  return;
  <D.25439>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30516 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30516;
    inst->prev = 0B;
    D.30517 = inst->prev;
    inst->next = D.30517;
    inst->opcode = 388;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30518 = inst->sreg3;
    inst->sreg2 = D.30518;
    D.30519 = inst->sreg2;
    inst->sreg1 = D.30519;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->dreg = destreg;
    D.30495 = (long int) offset;
    inst->data.op[0].const_val = D.30495;
    D.30496 = (long int) val;
    inst->data.op[1].const_val = D.30496;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30520>; else goto <D.30521>;
    <D.30520>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30522>;
    <D.30521>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30522>:
  }
  return;
  <D.30523>:
  <D.30488>:
  D.30524 = alloc_preg (cfg);
  val_reg = (int) D.30524;
  if (1 != 0) goto <D.30525>; else goto <D.30526>;
  <D.30525>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30527 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30527;
    inst->prev = 0B;
    D.30528 = inst->prev;
    inst->next = D.30528;
    inst->opcode = 363;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30529 = inst->sreg3;
    inst->sreg2 = D.30529;
    D.30530 = inst->sreg2;
    inst->sreg1 = D.30530;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->dreg = val_reg;
    D.30531 = (long int) val;
    inst->data.i8const = D.30531;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30532>; else goto <D.30533>;
    <D.30532>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30534>;
    <D.30533>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30534>:
  }
  goto <D.30535>;
  <D.30526>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30536 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30536;
    inst->prev = 0B;
    D.30537 = inst->prev;
    inst->next = D.30537;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30538 = inst->sreg3;
    inst->sreg2 = D.30538;
    D.30539 = inst->sreg2;
    inst->sreg1 = D.30539;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->dreg = val_reg;
    D.30540 = (long int) val;
    inst->data.op[0].const_val = D.30540;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30541>; else goto <D.30542>;
    <D.30541>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30543>;
    <D.30542>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30543>:
  }
  <D.30535>:
  if (align <= 3) goto <D.30544>; else goto <D.30545>;
  <D.30544>:
  goto <D.25445>;
  <D.25444>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30546 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30546;
    inst->prev = 0B;
    D.30547 = inst->prev;
    inst->next = D.30547;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30548 = inst->sreg3;
    inst->sreg2 = D.30548;
    D.30549 = inst->sreg2;
    inst->sreg1 = D.30549;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    D.30495 = (long int) offset;
    inst->data.op[0].const_val = D.30495;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30550>; else goto <D.30551>;
    <D.30550>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30552>;
    <D.30551>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30552>:
  }
  offset = offset + 1;
  size = size + -1;
  <D.25445>:
  if (size > 0) goto <D.25444>; else goto <D.25446>;
  <D.25446>:
  return;
  <D.30545>:
  if (1 != 0) goto <D.30553>; else goto <D.30554>;
  <D.30553>:
  offset.61 = (unsigned int) offset;
  D.30556 = offset.61 & 7;
  if (D.30556 != 0) goto <D.30557>; else goto <D.30558>;
  <D.30557>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30559 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30559;
    inst->prev = 0B;
    D.30560 = inst->prev;
    inst->next = D.30560;
    inst->opcode = 377;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30561 = inst->sreg3;
    inst->sreg2 = D.30561;
    D.30562 = inst->sreg2;
    inst->sreg1 = D.30562;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    D.30495 = (long int) offset;
    inst->data.op[0].const_val = D.30495;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30563>; else goto <D.30564>;
    <D.30563>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30565>;
    <D.30564>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30565>:
  }
  offset = offset + 4;
  size = size + -4;
  <D.30558>:
  goto <D.25450>;
  <D.25449>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30566 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30566;
    inst->prev = 0B;
    D.30567 = inst->prev;
    inst->next = D.30567;
    inst->opcode = 378;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30568 = inst->sreg3;
    inst->sreg2 = D.30568;
    D.30569 = inst->sreg2;
    inst->sreg1 = D.30569;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    D.30495 = (long int) offset;
    inst->data.op[0].const_val = D.30495;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30570>; else goto <D.30571>;
    <D.30570>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30572>;
    <D.30571>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30572>:
  }
  offset = offset + 8;
  size = size + -8;
  <D.25450>:
  if (size > 7) goto <D.25449>; else goto <D.25451>;
  <D.25451>:
  <D.30554>:
  goto <D.25454>;
  <D.25453>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30573 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30573;
    inst->prev = 0B;
    D.30574 = inst->prev;
    inst->next = D.30574;
    inst->opcode = 377;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30575 = inst->sreg3;
    inst->sreg2 = D.30575;
    D.30576 = inst->sreg2;
    inst->sreg1 = D.30576;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    D.30495 = (long int) offset;
    inst->data.op[0].const_val = D.30495;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30577>; else goto <D.30578>;
    <D.30577>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30579>;
    <D.30578>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30579>:
  }
  offset = offset + 4;
  size = size + -4;
  <D.25454>:
  if (size > 3) goto <D.25453>; else goto <D.25455>;
  <D.25455>:
  goto <D.25458>;
  <D.25457>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30580 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30580;
    inst->prev = 0B;
    D.30581 = inst->prev;
    inst->next = D.30581;
    inst->opcode = 376;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30582 = inst->sreg3;
    inst->sreg2 = D.30582;
    D.30583 = inst->sreg2;
    inst->sreg1 = D.30583;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    D.30495 = (long int) offset;
    inst->data.op[0].const_val = D.30495;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30584>; else goto <D.30585>;
    <D.30584>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30586>;
    <D.30585>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30586>:
  }
  offset = offset + 2;
  size = size + -2;
  <D.25458>:
  if (size > 1) goto <D.25457>; else goto <D.25459>;
  <D.25459>:
  goto <D.25462>;
  <D.25461>:
  {
    struct MonoInst * inst;

    D.30489 = cfg->mempool;
    inst = mono_mempool_alloc (D.30489, 80);
    inst->data.op[1].const_val = 0;
    D.30587 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.30587;
    inst->prev = 0B;
    D.30588 = inst->prev;
    inst->next = D.30588;
    inst->opcode = 375;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.30589 = inst->sreg3;
    inst->sreg2 = D.30589;
    D.30590 = inst->sreg2;
    inst->sreg1 = D.30590;
    D.30494 = cfg->ip;
    inst->cil_code = D.30494;
    inst->sreg1 = val_reg;
    inst->dreg = destreg;
    D.30495 = (long int) offset;
    inst->data.op[0].const_val = D.30495;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    if (D.30498 != 0B) goto <D.30591>; else goto <D.30592>;
    <D.30591>:
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    D.30498->next = inst;
    D.30497 = cfg->cbb;
    D.30498 = D.30497->last_ins;
    inst->prev = D.30498;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    goto <D.30593>;
    <D.30592>:
    D.30497 = cfg->cbb;
    D.30497 = cfg->cbb;
    D.30497->last_ins = inst;
    D.30498 = D.30497->last_ins;
    D.30497->code = D.30498;
    <D.30593>:
  }
  offset = offset + 1;
  size = size + -1;
  <D.25462>:
  if (size > 0) goto <D.25461>; else goto <D.25463>;
  <D.25463>:
}


get_memset_method ()
{
  struct MonoMethod * memset_method.62;
  struct MonoClass * D.30598;
  struct MonoMethod * memset_method.63;
  struct MonoMethod * D.30602;
  static struct MonoMethod * memset_method = 0B;

  memset_method.62 = memset_method;
  if (memset_method.62 == 0B) goto <D.30596>; else goto <D.30597>;
  <D.30596>:
  D.30598 = mono_defaults.string_class;
  memset_method.63 = mono_class_get_method_from_name (D.30598, "memset", 3);
  memset_method = memset_method.63;
  memset_method.62 = memset_method;
  if (memset_method.62 == 0B) goto <D.30600>; else goto <D.30601>;
  <D.30600>:
  monoeg_g_log (0B, 4, "Old corlib found. Install a new one");
  <D.25920>:
  goto <D.25920>;
  <D.30601>:
  <D.30597>:
  D.30602 = memset_method;
  return D.30602;
}


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


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

  D.30607 = 0;
  return D.30607;
}


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.30609;
  struct MonoImage * D.30610;
  struct MonoAssembly * D.30611;
  unsigned char D.30612;
  _Bool D.30613;
  unsigned char D.30614;
  unsigned char D.30615;
  _Bool D.30616;
  int D.30617;
  _Bool D.30618;
  int D.30619;
  _Bool D.30620;
  int D.30621;
  _Bool D.30622;
  int D.30623;
  _Bool D.30624;
  int D.30625;
  <unnamed type> D.30626;
  _Bool D.30627;
  int D.30628;
  _Bool D.30629;
  int D.30630;
  _Bool D.30631;
  int D.30632;
  _Bool D.30633;
  int D.30634;
  unsigned char D.30639;
  int D.30640;
  struct MonoMethod * D.30642;
  const char * D.30643;
  gchar * D.30644;
  <unnamed-unsigned:1> D.30645;
  int D.30646;
  short unsigned int D.30647;
  int D.30648;
  int D.30649;
  unsigned int D.30650;
  sizetype D.30651;
  int D.30652;
  unsigned int D.30653;
  unsigned int D.30654;
  int D.30655;
  <unnamed-unsigned:1> D.30656;
  int iftmp.64;
  unsigned char D.30660;
  unsigned char D.30661;
  unsigned int D.30672;
  struct MonoMemPool * D.30673;
  void * D.30674;
  unsigned int D.30675;
  void * D.30676;
  int * il_offsets.65;
  long unsigned int D.30678;
  long unsigned int D.30679;
  int * D.30680;
  int D.30681;
  unsigned int D.30682;
  long unsigned int D.30685;
  long unsigned int D.30686;
  long unsigned int D.30687;
  int D.30688;
  long unsigned int D.30689;
  long unsigned int D.30690;
  int n_il_offsets.66;
  int * line_numbers.67;
  unsigned char D.30693;
  unsigned char D.30694;
  struct MonoDomain * D.30697;
  int D.30698;
  unsigned char D.30701;
  unsigned char D.30702;
  struct MonoGenericSharingContext * D.30708;
  unsigned char D.30711;
  _Bool D.30712;
  long int D.30713;
  long int D.30714;
  short unsigned int D.30717;
  unsigned char D.30722;
  unsigned char D.30723;
  _Bool D.30724;
  long int D.30725;
  long int D.30726;
  struct MonoGenericContext * D.30729;
  struct MonoGenericInst * D.30730;
  _Bool D.30731;
  long int D.30732;
  long int D.30733;
  struct MonoGenericContext * D.30738;
  struct MonoGenericInst * D.30739;
  _Bool D.30742;
  long int D.30743;
  long int D.30744;
  unsigned int D.30750;
  void * D.30751;
  int D.30752;
  unsigned int D.30753;
  char * D.30756;
  unsigned int D.30757;
  unsigned char D.30758;
  unsigned char D.30759;
  struct MonoType * iftmp.68;
  unsigned char D.30763;
  unsigned char D.30764;
  int D.30768;
  long unsigned int D.30769;
  long unsigned int D.30770;
  struct MonoType * * D.30771;
  struct MonoType * D.30772;
  unsigned int D.30775;
  unsigned int D.30776;
  int D.30779;
  struct MonoProfileCoverageInfo * D.30780;
  unsigned int D.30781;
  unsigned int D.30782;
  unsigned int D.30783;
  int D.30784;
  unsigned int D.30785;
  unsigned int D.30786;
  int D.30787;
  unsigned int D.30788;
  unsigned int D.30789;
  _Bool D.30790;
  long int D.30791;
  long int D.30792;
  short unsigned int D.30795;
  short unsigned int D.30796;
  struct GHashTable * D.30799;
  struct GHashTable * D.30800;
  struct MonoExceptionClause * D.30801;
  long unsigned int D.30802;
  long unsigned int D.30803;
  struct MonoBasicBlock * * D.30804;
  unsigned int D.30805;
  sizetype D.30806;
  unsigned char * D.30807;
  long int D.30808;
  unsigned char * D.30809;
  long int D.30810;
  long int D.30811;
  long unsigned int D.30812;
  long unsigned int D.30813;
  struct MonoBasicBlock * * D.30814;
  const unsigned char * D.30820;
  const unsigned char * D.30821;
  int D.30822;
  struct MonoDebugOptions * D.30827;
  int D.30828;
  unsigned int D.30830;
  unsigned int D.30831;
  int D.30832;
  unsigned char * D.30833;
  long int D.30836;
  long int D.30837;
  long unsigned int D.30838;
  long unsigned int D.30839;
  struct MonoBasicBlock * * D.30840;
  unsigned int D.30841;
  int D.30842;
  int D.30843;
  unsigned int D.30844;
  unsigned int D.30845;
  unsigned int D.30846;
  unsigned int D.30847;
  sizetype D.30848;
  unsigned char * D.30849;
  long int D.30850;
  long int D.30851;
  long unsigned int D.30852;
  long unsigned int D.30853;
  struct MonoBasicBlock * * D.30854;
  const unsigned char * D.30860;
  struct MonoDebugOptions * D.30865;
  int D.30866;
  unsigned int D.30868;
  unsigned int D.30869;
  int D.30870;
  unsigned char * D.30871;
  long int D.30874;
  long int D.30875;
  long unsigned int D.30876;
  long unsigned int D.30877;
  struct MonoBasicBlock * * D.30878;
  unsigned int D.30879;
  unsigned int D.30880;
  unsigned char D.30883;
  unsigned int D.30886;
  unsigned int D.30887;
  unsigned int D.30888;
  _Bool D.30889;
  _Bool D.30890;
  _Bool D.30891;
  long int D.30894;
  struct MonoInst * D.30895;
  int D.30896;
  int D.30897;
  const unsigned char * D.30898;
  struct MonoInst * D.30899;
  long int D.30907;
  unsigned int D.30913;
  void * D.30916;
  struct MonoInst * * D.30917;
  int D.30918;
  struct MonoInst * D.30919;
  long int D.30920;
  struct MonoInst * D.30921;
  int D.30922;
  int D.30923;
  struct MonoInst * D.30924;
  int D.30925;
  struct MonoBasicBlock * bblock.113;
  struct MonoInst * D.30927;
  unsigned int D.30933;
  sizetype D.30934;
  unsigned char * D.30935;
  long int D.30936;
  long int D.30937;
  long unsigned int D.30938;
  long unsigned int D.30939;
  struct MonoBasicBlock * * D.30940;
  const unsigned char * D.30946;
  struct MonoDebugOptions * D.30951;
  int D.30952;
  unsigned int D.30954;
  unsigned int D.30955;
  int D.30956;
  void * D.30959;
  struct MonoInst * D.30960;
  struct MonoClass * D.30966;
  int D.30971;
  short unsigned int D.30977;
  int D.30978;
  int D.30979;
  struct MonoGenericContext * D.30981;
  struct MonoGenericInst * D.30982;
  long int D.30984;
  struct MonoInst * D.30985;
  int D.30986;
  int D.30987;
  struct MonoInst * D.30988;
  int D.30989;
  <unnamed-unsigned:15> D.30993;
  int D.30994;
  long unsigned int D.30996;
  long unsigned int D.30997;
  void * bblock.69;
  struct MonoBasicBlock * bblock.70;
  unsigned int D.31000;
  unsigned int D.31001;
  int D.31002;
  unsigned char * D.31003;
  long int D.31006;
  long int D.31007;
  long unsigned int D.31008;
  long unsigned int D.31009;
  struct MonoBasicBlock * * D.31010;
  struct MonoInst * D.31015;
  <unnamed type> D.31019;
  int iftmp.71;
  unsigned char D.31026;
  int iftmp.72;
  short unsigned int D.31042;
  int D.31043;
  int D.31044;
  struct MonoClass * D.31048;
  int D.31049;
  struct MonoClass * D.31056;
  int D.31059;
  unsigned int D.31070;
  unsigned int D.31071;
  unsigned char D.31072;
  unsigned char D.31073;
  unsigned char D.31074;
  unsigned char D.31075;
  unsigned int D.31076;
  unsigned int D.31077;
  int D.31078;
  struct GPtrArray * D.31083;
  struct MonoClass * D.31084;
  struct MonoType * D.31085;
  int D.31086;
  long int D.31087;
  struct MonoInst * D.31088;
  int D.31089;
  int D.31090;
  int D.31091;
  int D.31092;
  unsigned int D.31096;
  long int D.31097;
  struct MonoInst * D.31098;
  int D.31099;
  int D.31100;
  int D.31104;
  unsigned int D.31108;
  unsigned int D.31109;
  int D.31114;
  int D.31115;
  char * D.31116;
  void * D.31121;
  struct MonoInst * D.31122;
  long int D.31123;
  struct MonoInst * D.31124;
  int D.31125;
  int D.31126;
  unsigned int D.31127;
  struct MonoJumpInfoToken * D.31128;
  unsigned int D.31129;
  int D.31130;
  void * D.31132;
  unsigned int D.31133;
  int D.31134;
  void * D.31138;
  struct MonoInst * D.31139;
  long int D.31140;
  struct MonoInst * D.31141;
  int D.31142;
  int D.31143;
  unsigned int D.31144;
  long int D.31145;
  unsigned int D.31146;
  int D.31147;
  struct MonoMethod * D.31151;
  char * D.31152;
  void * D.31157;
  unsigned int D.31158;
  struct MonoJumpInfoToken * D.31159;
  unsigned int D.31160;
  int D.31161;
  void * D.31163;
  unsigned int D.31164;
  int D.31165;
  void * D.31169;
  unsigned int D.31170;
  long int D.31171;
  unsigned int D.31172;
  int D.31173;
  char * D.31177;
  void * D.31182;
  unsigned int D.31183;
  struct MonoJumpInfoToken * D.31184;
  unsigned int D.31185;
  int D.31186;
  void * D.31188;
  unsigned int D.31189;
  int D.31190;
  void * D.31194;
  unsigned int D.31195;
  long int D.31196;
  unsigned int D.31197;
  int D.31198;
  struct MonoMethod * D.31202;
  struct MonoMethod * D.31205;
  <unnamed type> D.31206;
  short unsigned int D.31213;
  int D.31214;
  short unsigned int D.31215;
  int D.31216;
  int D.31217;
  int D.31224;
  struct MonoException * iftmp.73;
  unsigned int D.31231;
  struct MonoDebugOptions * D.31239;
  int D.31240;
  int D.31242;
  struct MonoDebugOptions * D.31249;
  int D.31250;
  unsigned int breakpoint_id.74;
  struct MonoType * D.31255;
  short unsigned int D.31256;
  short unsigned int D.31257;
  struct MonoDebugOptions * D.31264;
  int D.31265;
  short unsigned int D.31267;
  int D.31268;
  struct MonoGenericContext * D.31277;
  struct MonoGenericInst * D.31278;
  struct MonoInst * * D.31280;
  struct MonoInst * D.31281;
  unsigned char D.31282;
  unsigned char D.31283;
  long int D.31286;
  struct MonoInst * D.31287;
  int D.31288;
  int D.31289;
  struct MonoType * * D.31290;
  struct MonoType * D.31291;
  unsigned int D.31292;
  short unsigned int D.31293;
  struct MonoClass * D.31294;
  int D.31295;
  unsigned char D.31296;
  <unnamed type> D.31297;
  unsigned int D.31298;
  int D.31299;
  short unsigned int D.31300;
  struct MonoClass * D.31303;
  unsigned int D.31307;
  unsigned char D.31308;
  long int D.31313;
  struct MonoInst * D.31314;
  int D.31315;
  int D.31316;
  int D.31317;
  long int D.31321;
  struct MonoInst * D.31322;
  int D.31323;
  int D.31324;
  long int D.31330;
  struct MonoInst * D.31331;
  int D.31332;
  int D.31333;
  long int D.31337;
  struct MonoInst * D.31338;
  int D.31339;
  int D.31340;
  _Bool D.31344;
  int D.31347;
  struct MonoDebugOptions * D.31354;
  int D.31355;
  _Bool D.31357;
  long int D.31358;
  long int D.31359;
  <unnamed-unsigned:15> D.31362;
  int D.31363;
  int D.31364;
  long unsigned int D.31365;
  unsigned int D.31366;
  unsigned int D.31367;
  long int ip.75;
  long int D.31371;
  long int D.31372;
  unsigned int D.31373;
  long int D.31377;
  int D.31378;
  _Bool D.31381;
  long int D.31382;
  long int D.31383;
  long int D.31387;
  long unsigned int D.31388;
  long unsigned int D.31389;
  struct MonoBasicBlock * * D.31390;
  struct MonoDebugOptions * D.31400;
  int D.31401;
  unsigned int D.31403;
  unsigned int D.31404;
  int D.31405;
  struct MonoInst * * D.31410;
  long unsigned int D.31411;
  struct MonoInst * * D.31412;
  struct MonoInst * D.31413;
  long int D.31414;
  int D.31415;
  struct MonoInst * * D.31416;
  long unsigned int D.31417;
  long unsigned int D.31418;
  struct MonoInst * * D.31419;
  struct MonoInst * D.31420;
  struct MonoType * D.31421;
  unsigned int D.31422;
  short unsigned int D.31423;
  struct MonoClass * D.31424;
  int D.31425;
  unsigned char D.31426;
  <unnamed type> D.31427;
  unsigned int D.31428;
  int D.31429;
  short unsigned int D.31430;
  struct MonoClass * D.31433;
  struct MonoInst * * sp.76;
  short unsigned int D.31438;
  int D.31439;
  long int sp.77;
  long int stack_start.78;
  long int D.31451;
  long int D.31452;
  int D.31453;
  unsigned char D.31454;
  unsigned char D.31455;
  struct MonoDebugOptions * D.31462;
  int D.31463;
  unsigned int D.31467;
  short unsigned int D.31468;
  unsigned int D.31469;
  int D.31470;
  struct MonoClass * D.31473;
  struct MonoInst * * sp.79;
  int D.31480;
  unsigned char D.31483;
  unsigned char D.31484;
  _Bool D.31487;
  long int D.31488;
  long int D.31489;
  int D.31494;
  sizetype D.31500;
  long unsigned int D.31507;
  long unsigned int D.31508;
  long unsigned int D.31509;
  int D.31510;
  int D.31511;
  long unsigned int D.31512;
  long unsigned int D.31513;
  int iftmp.80;
  struct MonoMethodHeader * D.31520;
  short unsigned int D.31521;
  short unsigned int D.31522;
  _Bool D.31523;
  unsigned char D.31524;
  unsigned char D.31527;
  unsigned char D.31528;
  long unsigned int D.31534;
  long unsigned int D.31535;
  long unsigned int D.31536;
  long unsigned int D.31537;
  struct MonoProfileCoverageInfo * D.31540;
  int * D.31543;
  unsigned int D.31544;
  int D.31545;
  long int D.31549;
  struct MonoInst * D.31550;
  int D.31551;
  int D.31552;
  char * D.31558;
  int D.31559;
  unsigned char D.31560;
  int D.31561;
  _Bool D.31562;
  _Bool D.31563;
  _Bool D.31564;
  unsigned char D.31572;
  int D.31579;
  long int D.31586;
  struct MonoDebugOptions * D.31593;
  int D.31594;
  unsigned int n.81;
  struct MonoDebugOptions * D.31603;
  int D.31604;
  long unsigned int D.31606;
  long unsigned int D.31607;
  struct MonoType * * D.31608;
  struct MonoType * D.31609;
  unsigned int D.31610;
  short unsigned int D.31611;
  struct MonoInst * * D.31612;
  struct MonoInst * D.31613;
  struct MonoClass * D.31614;
  int D.31615;
  unsigned int D.31616;
  int D.31617;
  struct MonoClass * D.31620;
  struct MonoInst * * sp.82;
  struct MonoDebugOptions * D.31631;
  int D.31632;
  unsigned int D.31634;
  struct MonoDebugOptions * D.31641;
  int D.31642;
  unsigned int D.31644;
  short unsigned int D.31645;
  struct MonoInst * * D.31646;
  struct MonoInst * * D.31647;
  struct MonoInst * D.31648;
  struct MonoClass * D.31649;
  int D.31650;
  unsigned int D.31651;
  int D.31652;
  struct MonoClass * D.31655;
  struct MonoInst * * sp.83;
  struct MonoDebugOptions * D.31666;
  int D.31667;
  struct MonoDebugOptions * D.31675;
  int D.31676;
  struct MonoInst * D.31680;
  int D.31681;
  struct MonoDebugOptions * D.31688;
  int D.31689;
  unsigned char * D.31691;
  struct MonoDebugOptions * D.31698;
  int D.31699;
  struct MonoDebugOptions * D.31707;
  int D.31708;
  unsigned char * D.31710;
  unsigned char D.31711;
  struct MonoDebugOptions * D.31718;
  int D.31719;
  unsigned int D.31721;
  short unsigned int D.31722;
  unsigned int D.31723;
  int D.31724;
  struct MonoClass * D.31727;
  struct MonoInst * * sp.84;
  struct MonoDebugOptions * D.31738;
  int D.31739;
  struct MonoDebugOptions * D.31747;
  int D.31748;
  struct MonoDebugOptions * D.31756;
  int D.31757;
  struct MonoInst * * D.31759;
  struct MonoInst * D.31760;
  unsigned char D.31761;
  unsigned char D.31762;
  struct MonoClass * D.31763;
  unsigned int D.31764;
  int D.31765;
  _Bool D.31766;
  long int D.31767;
  long int D.31768;
  struct MonoType * D.31771;
  int D.31772;
  struct MonoInst * iftmp.85;
  int D.31778;
  int D.31779;
  unsigned int D.31780;
  unsigned int D.31781;
  struct MonoInst * * D.31784;
  sizetype D.31785;
  sizetype D.31786;
  sizetype D.31787;
  struct MonoInst * * D.31788;
  struct MonoInst * iftmp.86;
  int D.31791;
  unsigned int D.31792;
  sizetype D.31795;
  sizetype D.31796;
  struct MonoInst * * D.31797;
  _Bool D.31799;
  long int D.31800;
  long int D.31801;
  _Bool D.31804;
  long int D.31805;
  long int D.31806;
  unsigned char D.31809;
  unsigned char D.31810;
  unsigned char D.31811;
  unsigned char D.31812;
  struct MonoInst * * sp.87;
  struct MonoDebugOptions * D.31823;
  int D.31824;
  struct MonoDebugOptions * D.31832;
  int D.31833;
  struct MonoDebugOptions * D.31841;
  int D.31842;
  long unsigned int D.31846;
  long unsigned int D.31847;
  struct MonoType * * D.31848;
  struct MonoType * D.31849;
  int D.31850;
  struct MonoDebugOptions * D.31857;
  int D.31858;
  unsigned int D.31860;
  short unsigned int D.31861;
  int D.31862;
  struct MonoClass * D.31865;
  struct MonoDebugOptions * D.31875;
  int D.31876;
  struct MonoDebugOptions * D.31884;
  int D.31885;
  struct MonoDebugOptions * D.31893;
  int D.31894;
  unsigned int D.31896;
  short unsigned int D.31897;
  unsigned int D.31898;
  int D.31899;
  struct MonoClass * D.31902;
  struct MonoInst * * sp.88;
  struct MonoDebugOptions * D.31913;
  int D.31914;
  struct MonoDebugOptions * D.31922;
  int D.31923;
  short unsigned int D.31925;
  struct MonoDebugOptions * D.31932;
  int D.31933;
  struct MonoInst * * D.31937;
  struct MonoInst * D.31938;
  unsigned char D.31939;
  unsigned char D.31940;
  struct MonoClass * D.31941;
  unsigned int D.31942;
  int D.31943;
  struct MonoType * D.31946;
  int D.31947;
  struct MonoInst * iftmp.89;
  int D.31953;
  int D.31954;
  unsigned int D.31955;
  sizetype D.31958;
  sizetype D.31959;
  sizetype D.31960;
  struct MonoInst * * D.31961;
  struct MonoInst * iftmp.90;
  int D.31964;
  unsigned int D.31965;
  sizetype D.31968;
  sizetype D.31969;
  struct MonoInst * * D.31970;
  _Bool D.31972;
  long int D.31973;
  long int D.31974;
  _Bool D.31977;
  long int D.31978;
  long int D.31979;
  unsigned char D.31982;
  unsigned char D.31983;
  unsigned char D.31984;
  unsigned char D.31985;
  struct MonoInst * * sp.91;
  struct MonoDebugOptions * D.31996;
  int D.31997;
  struct MonoDebugOptions * D.32005;
  int D.32006;
  struct MonoDebugOptions * D.32014;
  int D.32015;
  int D.32019;
  struct MonoType * D.32020;
  int D.32021;
  struct MonoDebugOptions * D.32028;
  int D.32029;
  struct MonoDebugOptions * D.32037;
  int D.32038;
  unsigned int D.32040;
  int D.32041;
  struct MonoInst * * sp.92;
  struct MonoDebugOptions * D.32052;
  int D.32053;
  unsigned int D.32055;
  int D.32056;
  struct MonoInst * * sp.93;
  struct MonoDebugOptions * D.32067;
  int D.32068;
  int D.32070;
  long int D.32071;
  unsigned int D.32072;
  int D.32073;
  struct MonoInst * * sp.94;
  struct MonoDebugOptions * D.32084;
  int D.32085;
  struct MonoDebugOptions * D.32093;
  int D.32094;
  signed char D.32096;
  long int D.32097;
  unsigned int D.32098;
  int D.32099;
  struct MonoInst * * sp.95;
  unsigned char * D.32104;
  struct MonoDebugOptions * D.32111;
  int D.32112;
  struct MonoDebugOptions * D.32120;
  int D.32121;
  const guint32 * D.32123;
  unsigned int D.32124;
  int D.32125;
  long int D.32126;
  unsigned int D.32127;
  int D.32128;
  struct MonoInst * * sp.96;
  unsigned char * D.32133;
  struct MonoDebugOptions * D.32140;
  int D.32141;
  struct MonoDebugOptions * D.32149;
  int D.32150;
  unsigned int D.32152;
  int D.32153;
  long unsigned int D.32154;
  long int D.32155;
  struct MonoInst * * sp.97;
  struct MonoDebugOptions * D.32166;
  int D.32167;
  struct MonoDebugOptions * D.32175;
  int D.32176;
  long int D.32180;
  struct MonoInst * D.32181;
  guint16 iftmp.98;
  int D.32186;
  int D.32187;
  unsigned int D.32188;
  int D.32189;
  unsigned int D.32193;
  int D.32194;
  unsigned int D.32199;
  int D.32200;
  unsigned int D.32204;
  float D.32205;
  struct MonoInst * * sp.99;
  struct MonoDebugOptions * D.32213;
  int D.32214;
  struct MonoDebugOptions * D.32222;
  int D.32223;
  long int D.32227;
  struct MonoInst * D.32228;
  guint16 iftmp.100;
  int D.32233;
  int D.32234;
  unsigned int D.32235;
  int D.32236;
  unsigned int D.32240;
  int D.32241;
  unsigned int D.32246;
  int D.32247;
  double D.32251;
  struct MonoInst * * sp.101;
  struct MonoDebugOptions * D.32259;
  int D.32260;
  struct MonoDebugOptions * D.32268;
  int D.32269;
  struct MonoType * D.32271;
  long int D.32272;
  struct MonoInst * D.32273;
  int D.32274;
  int D.32275;
  long int D.32276;
  long unsigned int D.32277;
  long unsigned int D.32278;
  struct MonoInst * * D.32279;
  struct MonoInst * D.32280;
  struct MonoType * D.32281;
  unsigned int D.32282;
  short unsigned int D.32283;
  struct MonoClass * D.32284;
  int D.32285;
  short unsigned int D.32286;
  struct MonoClass * D.32289;
  unsigned int D.32293;
  short unsigned int D.32294;
  unsigned int D.32295;
  int D.32296;
  struct MonoClass * D.32299;
  struct MonoInst * * sp.102;
  unsigned int D.32304;
  short unsigned int D.32305;
  unsigned int D.32306;
  int D.32307;
  struct MonoClass * D.32310;
  struct MonoInst * * sp.103;
  struct MonoDebugOptions * D.32321;
  int D.32322;
  const char * D.32332;
  struct MonoMethodSignature * D.32333;
  short unsigned int D.32334;
  int D.32335;
  const char * D.32336;
  const char * D.32337;
  const char * D.32338;
  gchar * D.32339;
  char * D.32342;
  struct MonoDebugOptions * D.32349;
  int D.32350;
  struct MonoDebugOptions * D.32358;
  int D.32359;
  struct MonoLoaderError * D.32364;
  struct MonoDebugOptions * D.32365;
  int D.32366;
  int D.32370;
  const char * D.32377;
  <unnamed type> D.32378;
  short unsigned int D.32384;
  int D.32385;
  <unnamed-unsigned:1> D.32386;
  int D.32387;
  int D.32390;
  int D.32391;
  struct MonoMethodSignature * D.32392;
  long unsigned int D.32393;
  unsigned int D.32394;
  unsigned int D.32395;
  void * D.32396;
  struct MonoInst * * D.32397;
  long unsigned int D.32398;
  long unsigned int D.32399;
  struct MonoInst * * D.32400;
  void * D.32401;
  struct MonoInst * D.32402;
  long int D.32403;
  struct MonoInst * D.32404;
  int D.32405;
  int D.32406;
  struct MonoType * * D.32407;
  struct MonoType * D.32408;
  unsigned int D.32409;
  short unsigned int D.32410;
  struct MonoInst * * D.32411;
  struct MonoInst * D.32412;
  struct MonoClass * D.32413;
  int D.32414;
  unsigned char D.32415;
  <unnamed type> D.32416;
  unsigned int D.32417;
  int D.32418;
  short unsigned int D.32419;
  struct MonoClass * D.32422;
  struct MonoInst * * D.32430;
  struct MonoInst * D.32431;
  unsigned char D.32432;
  unsigned char D.32433;
  unsigned int i.104;
  _Bool D.32438;
  _Bool D.32439;
  struct MonoDebugOptions * D.32446;
  int D.32447;
  struct MonoDebugOptions * D.32457;
  int D.32458;
  short unsigned int D.32460;
  int D.32461;
  <unnamed-unsigned:1> D.32462;
  int D.32463;
  unsigned char D.32464;
  unsigned char D.32467;
  unsigned char D.32468;
  void * D.32471;
  struct MonoInst * D.32472;
  long int D.32473;
  struct MonoInst * D.32474;
  guint16 iftmp.105;
  int D.32479;
  int D.32480;
  unsigned int D.32481;
  int D.32482;
  void * D.32486;
  struct MonoInst * D.32487;
  long int D.32488;
  struct MonoInst * D.32489;
  int D.32490;
  int D.32491;
  unsigned int D.32492;
  int D.32493;
  char * D.32504;
  unsigned char D.32507;
  _Bool D.32508;
  _Bool D.32509;
  _Bool D.32510;
  struct MonoMethod * cil_method.106;
  char * D.32516;
  unsigned char D.32519;
  _Bool D.32520;
  _Bool D.32521;
  _Bool D.32522;
  int D.32525;
  struct MonoClass * D.32528;
  unsigned char D.32529;
  unsigned char D.32530;
  _Bool D.32531;
  long int D.32532;
  long int D.32533;
  struct MonoLoaderError * D.32539;
  struct MonoDebugOptions * D.32540;
  int D.32541;
  unsigned char D.32545;
  struct MonoGenericContainer * D.32550;
  struct MonoGenericContext * D.32551;
  int D.32552;
  int D.32555;
  gchar * D.32558;
  <unnamed type> D.32559;
  short unsigned int D.32564;
  int D.32565;
  int D.32566;
  unsigned char D.32571;
  unsigned char D.32572;
  int D.32575;
  unsigned char D.32578;
  unsigned char D.32579;
  unsigned char D.32582;
  int D.32585;
  struct MonoDebugOptions * D.32588;
  int D.32589;
  short unsigned int D.32595;
  int D.32596;
  int D.32597;
  int D.32599;
  unsigned char D.32601;
  struct MonoDebugOptions * D.32604;
  int D.32605;
  <unnamed-unsigned:1> D.32609;
  int D.32610;
  int check_for_pending_exc.107;
  struct MonoType * D.32616;
  int D.32617;
  unsigned char D.32624;
  _Bool D.32625;
  _Bool D.32626;
  _Bool D.32627;
  long int D.32629;
  long int D.32630;
  long unsigned int D.32631;
  long unsigned int D.32632;
  long unsigned int D.32633;
  int D.32634;
  int D.32635;
  long unsigned int D.32636;
  long unsigned int D.32637;
  <unnamed type> D.32638;
  int D.32641;
  unsigned char D.32651;
  unsigned char D.32652;
  struct MonoGenericContainer * D.32661;
  struct MonoDebugOptions * D.32668;
  int D.32669;
  int D.32675;
  _Bool D.32676;
  long int D.32677;
  long int D.32678;
  long int D.32681;
  struct MonoDebugOptions * D.32688;
  int D.32689;
  sizetype D.32691;
  int D.32694;
  struct MonoClass * D.32699;
  unsigned char D.32701;
  unsigned char D.32702;
  struct MonoImage * D.32707;
  struct MonoImage * D.32708;
  unsigned int D.32710;
  unsigned int D.32711;
  int D.32722;
  unsigned char D.32724;
  unsigned char D.32725;
  unsigned char D.32727;
  unsigned char D.32728;
  _Bool D.32729;
  unsigned char D.32730;
  _Bool D.32731;
  _Bool D.32732;
  int D.32733;
  int D.32735;
  long unsigned int D.32737;
  long unsigned int D.32738;
  struct MonoType * D.32741;
  int D.32742;
  int D.32744;
  int D.32745;
  int D.32748;
  struct MonoInst * D.32749;
  void * D.32751;
  struct MonoInst * D.32752;
  long int D.32753;
  struct MonoInst * D.32754;
  guint16 iftmp.108;
  int D.32759;
  int D.32760;
  unsigned int D.32761;
  int D.32762;
  int D.32766;
  struct MonoInst * D.32767;
  unsigned char D.32770;
  unsigned char D.32771;
  unsigned int D.32774;
  int D.32775;
  long unsigned int D.32776;
  long unsigned int D.32777;
  long int D.32778;
  int D.32782;
  struct MonoClass * D.32785;
  struct MonoInst * D.32786;
  struct MonoInst * iftmp.109;
  struct MonoInst * * D.32788;
  struct MonoInst * D.32789;
  int D.32790;
  unsigned int D.32791;
  long unsigned int D.32794;
  long unsigned int D.32795;
  struct MonoInst * * D.32796;
  unsigned char D.32800;
  unsigned char D.32801;
  struct MonoClass * D.32802;
  unsigned int D.32803;
  int D.32804;
  struct MonoType * D.32807;
  int D.32808;
  struct MonoInst * iftmp.110;
  int D.32814;
  int D.32815;
  unsigned int D.32816;
  sizetype D.32819;
  sizetype D.32820;
  sizetype D.32821;
  struct MonoInst * * D.32822;
  struct MonoInst * iftmp.111;
  int D.32825;
  unsigned int D.32826;
  sizetype D.32829;
  sizetype D.32830;
  struct MonoInst * * D.32831;
  _Bool D.32833;
  long int D.32834;
  long int D.32835;
  _Bool D.32838;
  long int D.32839;
  long int D.32840;
  unsigned char D.32843;
  unsigned char D.32844;
  unsigned char D.32845;
  unsigned char D.32846;
  struct MonoInst * D.32850;
  int D.32851;
  void * D.32856;
  struct MonoInst * D.32857;
  long int D.32858;
  struct MonoInst * D.32859;
  int D.32860;
  int D.32861;
  unsigned int D.32862;
  int D.32863;
  void * D.32870;
  unsigned int D.32871;
  int D.32872;
  void * D.32876;
  long int D.32877;
  struct MonoInst * D.32878;
  int D.32879;
  int D.32880;
  unsigned int D.32881;
  int D.32882;
  int D.32886;
  struct MonoClass * D.32889;
  unsigned char D.32893;
  unsigned char D.32894;
  _Bool D.32895;
  unsigned char D.32896;
  _Bool D.32897;
  _Bool D.32898;
  long int D.32901;
  struct MonoInst * D.32902;
  int D.32903;
  int D.32904;
  unsigned int D.32905;
  int D.32906;
  unsigned int D.32910;
  short unsigned int D.32911;
  int D.32912;
  unsigned int D.32913;
  int D.32914;
  const char * D.32920;
  gchar * D.32921;
  struct MonoClass * D.32929;
  struct MonoClass * D.32930;
  struct MonoType * D.32932;
  unsigned int D.32933;
  short unsigned int D.32934;
  unsigned int D.32935;
  int D.32936;
  int D.32940;
  struct MonoInst * D.32941;
  unsigned int D.32945;
  unsigned char D.32956;
  struct MonoDebugOptions * D.32957;
  int D.32958;
  struct MonoDebugOptions * D.32962;
  int D.32963;
  struct MonoDebugOptions * D.32969;
  int D.32970;
  struct MonoMethod * * D.32974;
  int D.32975;
  long unsigned int D.32976;
  long unsigned int D.32977;
  struct MonoMethod * * D.32978;
  unsigned int D.32981;
  short unsigned int D.32982;
  unsigned int D.32983;
  int D.32984;
  int D.32988;
  struct MonoInst * D.32989;
  int D.32993;
  struct MonoDebugOptions * D.33000;
  int D.33001;
  struct MonoClass * D.33005;
  struct MonoClass * D.33006;
  int D.27787;
  int iftmp.112;
  int D.27786;
  const char[7] * D.33012;
  unsigned char D.33013;
  int D.33014;
  unsigned char D.33015;
  int D.33016;
  _Bool D.33017;
  _Bool D.33018;
  _Bool D.33019;
  const unsigned char * D.33022;
  unsigned char D.33023;
  int D.33024;
  const unsigned char * D.33025;
  unsigned char D.33026;
  int D.33027;
  _Bool D.33028;
  _Bool D.33029;
  const unsigned char * D.33032;
  unsigned char D.33033;
  int D.33034;
  const unsigned char * D.33035;
  unsigned char D.33036;
  int D.33037;
  _Bool D.33038;
  _Bool D.33039;
  const unsigned char * D.33042;
  unsigned char D.33043;
  int D.33044;
  const unsigned char * D.33045;
  unsigned char D.33046;
  int D.33047;
  const char * D.33049;
  unsigned int D.33054;
  int D.33059;
  struct MonoGenericClass * D.33068;
  int D.33071;
  int D.33074;
  unsigned char D.33080;
  struct MonoDebugOptions * D.33081;
  int D.33082;
  struct MonoGenericInst * D.33097;
  int pass_vtable.114;
  struct MonoDebugOptions * D.33112;
  int D.33113;
  long int D.33115;
  struct MonoInst * D.33116;
  guint16 iftmp.115;
  int D.33121;
  int D.33122;
  void * iftmp.116;
  unsigned int D.33127;
  int D.33128;
  int pass_mrgctx.117;
  _Bool D.33135;
  long int D.33136;
  long int D.33137;
  struct MonoDebugOptions * D.33145;
  int D.33146;
  int D.33150;
  int D.33152;
  unsigned int D.33155;
  _Bool D.33162;
  long int D.33163;
  long int D.33164;
  _Bool D.33167;
  long int D.33168;
  long int D.33169;
  long int D.33178;
  struct MonoInst * D.33179;
  int D.33180;
  int D.33181;
  long int D.33185;
  struct MonoInst * D.33186;
  int D.33187;
  int D.33188;
  long int D.33194;
  struct MonoInst * D.33195;
  int D.33196;
  int D.33197;
  long int D.33201;
  struct MonoInst * D.33202;
  int D.33203;
  int D.33204;
  _Bool D.33213;
  _Bool D.33214;
  _Bool D.33215;
  unsigned char D.33222;
  short unsigned int D.33223;
  int D.33227;
  unsigned char D.33228;
  _Bool D.33229;
  long int D.33230;
  long int D.33231;
  int D.33242;
  const char * D.33247;
  gchar * D.33248;
  int mono_use_imt.118;
  _Bool D.33258;
  long int D.33259;
  long int D.33260;
  unsigned char D.33265;
  unsigned char D.33266;
  _Bool D.33267;
  long int D.33268;
  long int D.33269;
  struct MonoType * D.33273;
  long int D.33274;
  struct MonoInst * D.33275;
  int D.33276;
  int D.33277;
  long int D.33278;
  long unsigned int D.33279;
  long unsigned int D.33280;
  struct MonoInst * * D.33281;
  struct MonoInst * D.33282;
  struct MonoType * D.33283;
  unsigned int D.33284;
  short unsigned int D.33285;
  struct MonoClass * D.33286;
  int D.33287;
  short unsigned int D.33288;
  struct MonoClass * D.33291;
  void * D.33295;
  struct MonoInst * D.33296;
  long int D.33297;
  struct MonoInst * D.33298;
  int D.33299;
  int D.33300;
  unsigned int D.33301;
  short unsigned int D.33302;
  unsigned char D.33303;
  <unnamed type> D.33304;
  unsigned int D.33305;
  int D.33306;
  short unsigned int D.33307;
  struct MonoClass * D.33310;
  struct MonoInst * D.33314;
  void * D.33315;
  struct MonoInst * D.33316;
  long int D.33317;
  struct MonoInst * D.33318;
  int D.33319;
  int D.33320;
  long int D.33321;
  long unsigned int D.33322;
  long unsigned int D.33323;
  struct MonoInst * * D.33324;
  struct MonoInst * D.33325;
  unsigned char D.33326;
  unsigned char D.33327;
  struct MonoClass * D.33328;
  unsigned int D.33329;
  int D.33330;
  struct MonoType * D.33333;
  int D.33334;
  struct MonoInst * iftmp.119;
  int D.33340;
  int D.33341;
  unsigned int D.33342;
  sizetype D.33345;
  sizetype D.33346;
  sizetype D.33347;
  struct MonoInst * * D.33348;
  struct MonoInst * iftmp.120;
  int D.33351;
  unsigned int D.33352;
  sizetype D.33355;
  sizetype D.33356;
  struct MonoInst * * D.33357;
  _Bool D.33359;
  long int D.33360;
  long int D.33361;
  _Bool D.33364;
  long int D.33365;
  long int D.33366;
  unsigned char D.33369;
  unsigned char D.33370;
  unsigned char D.33371;
  unsigned char D.33372;
  void * D.33376;
  long int D.33377;
  struct MonoInst * D.33378;
  int D.33379;
  int D.33380;
  unsigned int D.33381;
  short unsigned int D.33382;
  unsigned char D.33383;
  <unnamed type> D.33384;
  unsigned int D.33385;
  int D.33386;
  short unsigned int D.33387;
  struct MonoClass * D.33390;
  struct MonoClass * D.33396;
  int D.27809;
  int iftmp.121;
  int D.27808;
  const char[6] * D.33402;
  unsigned char D.33403;
  int D.33404;
  unsigned char D.33405;
  int D.33406;
  _Bool D.33407;
  _Bool D.33408;
  _Bool D.33409;
  const unsigned char * D.33412;
  unsigned char D.33413;
  int D.33414;
  const unsigned char * D.33415;
  unsigned char D.33416;
  int D.33417;
  _Bool D.33418;
  _Bool D.33419;
  const unsigned char * D.33422;
  unsigned char D.33423;
  int D.33424;
  const unsigned char * D.33425;
  unsigned char D.33426;
  int D.33427;
  _Bool D.33428;
  _Bool D.33429;
  const unsigned char * D.33432;
  unsigned char D.33433;
  int D.33434;
  const unsigned char * D.33435;
  unsigned char D.33436;
  int D.33437;
  struct MonoMethodSignature * D.33441;
  short unsigned int D.33442;
  long int D.33445;
  long unsigned int D.33446;
  long unsigned int D.33447;
  struct MonoBasicBlock * * D.33448;
  const unsigned char * D.33454;
  struct MonoDebugOptions * D.33459;
  int D.33460;
  unsigned int D.33462;
  unsigned int D.33463;
  int D.33464;
  unsigned char * D.33465;
  long int D.33468;
  long int D.33469;
  long unsigned int D.33470;
  long unsigned int D.33471;
  struct MonoBasicBlock * * D.33472;
  unsigned char D.33473;
  unsigned char D.33474;
  unsigned int D.33477;
  unsigned int D.33478;
  int D.33487;
  unsigned int D.33494;
  int D.33503;
  struct GList * D.33506;
  int D.33512;
  unsigned int D.33521;
  int D.33522;
  unsigned int D.33525;
  _Bool D.33528;
  _Bool D.33529;
  _Bool D.33530;
  unsigned char D.33533;
  struct MonoMethodSignature * D.33544;
  struct MonoType * D.33545;
  int D.33546;
  long unsigned int D.33551;
  long unsigned int D.33552;
  struct MonoType * * D.33553;
  struct MonoType * D.33554;
  unsigned int D.33555;
  short unsigned int D.33556;
  struct MonoInst * * D.33557;
  struct MonoInst * D.33558;
  struct MonoClass * D.33559;
  struct MonoInst * * D.33560;
  struct MonoInst * D.33561;
  int D.33562;
  int D.33563;
  struct MonoClass * D.33566;
  struct MonoBasicBlock * * D.33573;
  const guint8 * D.33574;
  int D.33575;
  int num_calls.122;
  int D.33579;
  int D.33583;
  unsigned char D.33591;
  unsigned char D.33592;
  const char * D.33596;
  gchar * D.33597;
  _Bool D.33602;
  long int D.33603;
  long int D.33604;
  unsigned char D.33611;
  const char * D.33616;
  gchar * D.33617;
  int D.27830;
  int iftmp.123;
  int D.27829;
  unsigned char D.33625;
  int D.33626;
  _Bool D.33627;
  _Bool D.33628;
  _Bool D.33629;
  const unsigned char * D.33632;
  unsigned char D.33633;
  int D.33634;
  _Bool D.33635;
  _Bool D.33636;
  const unsigned char * D.33639;
  unsigned char D.33640;
  int D.33641;
  _Bool D.33642;
  _Bool D.33643;
  const unsigned char * D.33646;
  unsigned char D.33647;
  int D.33648;
  int D.33660;
  const char * D.33667;
  gchar * D.33668;
  _Bool D.33675;
  _Bool D.33676;
  _Bool D.33677;
  int D.33680;
  int D.33683;
  int D.33685;
  int iftmp.124;
  _Bool D.33700;
  long int D.33701;
  long int D.33702;
  _Bool D.33705;
  long int D.33706;
  long int D.33707;
  long int D.33716;
  struct MonoInst * D.33717;
  int D.33718;
  int D.33719;
  long int D.33723;
  struct MonoInst * D.33724;
  int D.33725;
  int D.33726;
  long int D.33732;
  struct MonoInst * D.33733;
  int D.33734;
  int D.33735;
  long int D.33739;
  struct MonoInst * D.33740;
  int D.33741;
  int D.33742;
  _Bool D.33750;
  long int D.33751;
  long int D.33752;
  short unsigned int D.33771;
  _Bool D.33772;
  _Bool D.33773;
  _Bool D.33774;
  short unsigned int D.33776;
  short unsigned int D.33777;
  _Bool D.33778;
  _Bool D.33779;
  _Bool D.33780;
  long int D.33783;
  struct MonoInst * D.33785;
  long int D.33786;
  unsigned int info_type.125;
  unsigned int D.33788;
  <unnamed type> info_type.126;
  int D.33792;
  int D.33793;
  int D.27847;
  int iftmp.127;
  int D.27846;
  const char[4] * D.33799;
  unsigned char D.33800;
  int D.33801;
  unsigned char D.33802;
  int D.33803;
  _Bool D.33804;
  _Bool D.33805;
  _Bool D.33806;
  const unsigned char * D.33809;
  unsigned char D.33810;
  int D.33811;
  const unsigned char * D.33812;
  unsigned char D.33813;
  int D.33814;
  _Bool D.33815;
  _Bool D.33816;
  const unsigned char * D.33819;
  unsigned char D.33820;
  int D.33821;
  const unsigned char * D.33822;
  unsigned char D.33823;
  int D.33824;
  _Bool D.33825;
  _Bool D.33826;
  const unsigned char * D.33829;
  unsigned char D.33830;
  int D.33831;
  const unsigned char * D.33832;
  unsigned char D.33833;
  int D.33834;
  struct MonoInst * * D.33838;
  unsigned char D.33839;
  int D.33842;
  struct MonoType * D.33843;
  unsigned int D.33844;
  short unsigned int D.33845;
  int D.33846;
  int D.33847;
  struct MonoClass * D.33848;
  unsigned char D.33854;
  unsigned char D.33855;
  short unsigned int D.33860;
  long int D.33862;
  int D.27858;
  int iftmp.128;
  int D.27857;
  const char[4] * D.33867;
  unsigned char D.33868;
  int D.33869;
  unsigned char D.33870;
  int D.33871;
  _Bool D.33872;
  _Bool D.33873;
  _Bool D.33874;
  const unsigned char * D.33877;
  unsigned char D.33878;
  int D.33879;
  const unsigned char * D.33880;
  unsigned char D.33881;
  int D.33882;
  _Bool D.33883;
  _Bool D.33884;
  const unsigned char * D.33887;
  unsigned char D.33888;
  int D.33889;
  const unsigned char * D.33890;
  unsigned char D.33891;
  int D.33892;
  _Bool D.33893;
  _Bool D.33894;
  const unsigned char * D.33897;
  unsigned char D.33898;
  int D.33899;
  const unsigned char * D.33900;
  unsigned char D.33901;
  int D.33902;
  unsigned int D.33906;
  short unsigned int D.33907;
  unsigned int D.33908;
  int D.33909;
  int D.27867;
  int iftmp.129;
  int D.27866;
  const char[8] * D.33917;
  unsigned char D.33918;
  int D.33919;
  unsigned char D.33920;
  int D.33921;
  _Bool D.33922;
  _Bool D.33923;
  _Bool D.33924;
  const unsigned char * D.33927;
  unsigned char D.33928;
  int D.33929;
  const unsigned char * D.33930;
  unsigned char D.33931;
  int D.33932;
  _Bool D.33933;
  _Bool D.33934;
  const unsigned char * D.33937;
  unsigned char D.33938;
  int D.33939;
  const unsigned char * D.33940;
  unsigned char D.33941;
  int D.33942;
  _Bool D.33943;
  _Bool D.33944;
  const unsigned char * D.33947;
  unsigned char D.33948;
  int D.33949;
  const unsigned char * D.33950;
  unsigned char D.33951;
  int D.33952;
  struct MonoClass * D.33956;
  unsigned char D.33957;
  unsigned char D.33958;
  struct MonoDebugOptions * D.33966;
  int D.33967;
  struct MonoInst * iftmp.130;
  unsigned int D.33977;
  int call_opcode.131;
  int D.33985;
  int D.33999;
  int D.34000;
  struct MonoMethodSignature * D.34001;
  struct MonoType * * D.34002;
  struct MonoType * D.34003;
  unsigned int D.34004;
  short unsigned int D.34005;
  struct MonoInst * * D.34006;
  struct MonoInst * D.34007;
  struct MonoClass * D.34008;
  struct MonoInst * * D.34009;
  struct MonoInst * D.34010;
  int D.34011;
  int D.34012;
  struct MonoClass * D.34015;
  struct MonoDebugOptions * D.34031;
  int D.34032;
  unsigned int D.34034;
  unsigned int D.34035;
  int D.34036;
  short int D.34042;
  struct MonoMethod * D.34049;
  struct MonoInst * iftmp.132;
  struct MonoDebugOptions * D.34071;
  int D.34072;
  unsigned int D.34074;
  unsigned int D.34075;
  int D.34076;
  int D.34084;
  _Bool D.34087;
  long int D.34088;
  long int D.34089;
  struct MonoInst * * sp.133;
  struct MonoInst * D.34095;
  struct MonoInst * * sp.134;
  long int D.34100;
  struct MonoInst * D.34101;
  int D.34102;
  int D.34103;
  int D.34104;
  _Bool D.34111;
  long int D.34112;
  long int D.34113;
  short int D.34122;
  struct MonoMethodSignature * D.34125;
  struct MonoDebugOptions * D.34132;
  int D.34133;
  unsigned char D.34135;
  _Bool D.34136;
  _Bool D.34137;
  _Bool D.34138;
  int D.34141;
  struct MonoDebugOptions * D.34148;
  int D.34149;
  long int D.34151;
  struct MonoInst * D.34152;
  int D.34153;
  int D.34154;
  long int D.34155;
  long unsigned int D.34156;
  long unsigned int D.34157;
  struct MonoInst * * D.34158;
  struct MonoInst * D.34159;
  struct MonoType * D.34160;
  unsigned int D.34161;
  short unsigned int D.34162;
  struct MonoClass * D.34163;
  int D.34164;
  short unsigned int D.34165;
  struct MonoClass * D.34168;
  struct MonoInst * D.34173;
  struct MonoInst * D.34178;
  struct MonoMethodSignature * D.34181;
  struct MonoType * D.34182;
  _Bool D.34188;
  long int D.34189;
  long int D.34190;
  struct MonoDebugOptions * D.34199;
  int D.34200;
  unsigned char D.34202;
  _Bool D.34203;
  _Bool D.34204;
  _Bool D.34205;
  int D.34208;
  struct MonoDebugOptions * D.34215;
  int D.34216;
  unsigned int D.34218;
  struct MonoInst * D.34221;
  long int D.34224;
  struct MonoInst * D.34225;
  int D.34226;
  int D.34227;
  unsigned int D.34228;
  short unsigned int D.34229;
  struct MonoClass * D.34230;
  int D.34231;
  short unsigned int D.34232;
  struct MonoClass * D.34235;
  long int D.34240;
  struct MonoInst * D.34241;
  int D.34242;
  int D.34243;
  int D.34244;
  unsigned char D.34245;
  <unnamed type> D.34246;
  unsigned int D.34247;
  int D.34248;
  int D.34252;
  struct MonoClass * D.34256;
  struct MonoDebugOptions * D.34264;
  int D.34265;
  struct MonoDebugOptions * D.34276;
  int D.34277;
  signed char D.34279;
  sizetype D.34280;
  sizetype D.34281;
  long int target.135;
  long int D.34283;
  long unsigned int D.34284;
  long unsigned int D.34285;
  struct MonoBasicBlock * * D.34286;
  struct MonoDebugOptions * D.34296;
  int D.34297;
  unsigned int D.34299;
  unsigned int D.34300;
  int D.34301;
  struct MonoDebugOptions * D.34312;
  int D.34313;
  struct MonoDebugOptions * D.34324;
  int D.34325;
  struct MonoDebugOptions * D.34333;
  int D.34334;
  short unsigned int D.34336;
  short unsigned int D.34337;
  sizetype D.34338;
  sizetype D.34339;
  long int D.34340;
  struct MonoInst * D.34341;
  int D.34342;
  int D.34343;
  unsigned char D.34344;
  struct MonoDebugOptions * D.34351;
  int D.34352;
  void * D.34354;
  struct MonoDebugOptions * D.34364;
  int D.34365;
  unsigned int D.34367;
  unsigned int D.34368;
  int D.34369;
  struct MonoBasicBlock * * D.34372;
  struct MonoBasicBlock * * D.34375;
  struct MonoDebugOptions * D.34386;
  int D.34387;
  unsigned int D.34389;
  unsigned int D.34390;
  int D.34391;
  struct MonoDebugOptions * D.34402;
  int D.34403;
  struct MonoDebugOptions * D.34417;
  int D.34418;
  int D.34420;
  sizetype D.34421;
  sizetype D.34422;
  struct MonoDebugOptions * D.34432;
  int D.34433;
  unsigned int D.34435;
  unsigned int D.34436;
  int D.34437;
  struct MonoDebugOptions * D.34448;
  int D.34449;
  unsigned char D.34454;
  _Bool D.34455;
  unsigned char D.34456;
  _Bool D.34457;
  _Bool D.34458;
  _Bool D.34459;
  guint32 iftmp.136;
  sizetype D.34464;
  unsigned char * D.34465;
  struct MonoDebugOptions * D.34472;
  int D.34473;
  struct MonoDebugOptions * D.34481;
  int D.34482;
  struct MonoInst * * D.34484;
  struct MonoInst * D.34485;
  unsigned char D.34486;
  _Bool D.34487;
  _Bool D.34488;
  _Bool D.34489;
  struct MonoDebugOptions * D.34496;
  int D.34497;
  sizetype iftmp.137;
  sizetype D.34503;
  struct MonoDebugOptions * D.34513;
  int D.34514;
  unsigned int D.34516;
  unsigned int D.34517;
  int D.34518;
  struct MonoDebugOptions * D.34530;
  int D.34531;
  unsigned int D.34533;
  unsigned int D.34534;
  int D.34535;
  struct MonoDebugOptions * D.34546;
  int D.34547;
  long int D.34549;
  struct MonoInst * D.34550;
  int D.34551;
  int D.34552;
  unsigned char D.34553;
  struct MonoDebugOptions * D.34560;
  int D.34561;
  guint16 iftmp.138;
  void * D.34573;
  struct MonoDebugOptions * D.34583;
  int D.34584;
  unsigned int D.34586;
  unsigned int D.34587;
  int D.34588;
  struct MonoDebugOptions * D.34600;
  int D.34601;
  unsigned int D.34603;
  unsigned int D.34604;
  int D.34605;
  struct MonoDebugOptions * D.34614;
  int D.34615;
  struct MonoDebugOptions * D.34623;
  int D.34624;
  long int D.34626;
  struct MonoInst * D.34627;
  int D.34628;
  int D.34629;
  unsigned char D.34630;
  struct MonoDebugOptions * D.34637;
  int D.34638;
  void * D.34640;
  struct MonoDebugOptions * D.34650;
  int D.34651;
  unsigned int D.34653;
  unsigned int D.34654;
  int D.34655;
  struct MonoDebugOptions * D.34670;
  int D.34671;
  unsigned int D.34673;
  unsigned int D.34674;
  int D.34675;
  struct MonoDebugOptions * D.34686;
  int D.34687;
  unsigned int D.34695;
  unsigned int D.34696;
  unsigned int D.34697;
  unsigned int D.34698;
  struct MonoDebugOptions * D.34705;
  int D.34706;
  struct MonoDebugOptions * D.34714;
  int D.34715;
  unsigned char D.34717;
  _Bool D.34718;
  _Bool D.34719;
  _Bool D.34720;
  struct MonoDebugOptions * D.34727;
  int D.34728;
  long unsigned int D.34730;
  unsigned char * D.34731;
  struct MonoDebugOptions * D.34738;
  int D.34739;
  struct MonoDebugOptions * D.34750;
  int D.34751;
  unsigned int D.34753;
  unsigned int D.34754;
  int D.34755;
  unsigned char * D.34756;
  long int D.34759;
  long int D.34760;
  long unsigned int D.34761;
  long unsigned int D.34762;
  struct MonoBasicBlock * * D.34763;
  unsigned int D.34764;
  unsigned int D.34765;
  unsigned int D.34766;
  unsigned int D.34767;
  unsigned char * D.34768;
  long int D.34769;
  long int D.34770;
  long unsigned int D.34771;
  long unsigned int D.34772;
  struct MonoBasicBlock * * D.34773;
  const unsigned char * D.34779;
  struct MonoDebugOptions * D.34784;
  int D.34785;
  unsigned int D.34787;
  unsigned int D.34788;
  int D.34789;
  struct MonoBasicBlock * * D.34792;
  struct MonoBasicBlock * D.34793;
  unsigned int D.34794;
  unsigned int D.34795;
  struct MonoDebugOptions * D.34804;
  int D.34805;
  long int D.34807;
  struct MonoInst * D.34808;
  int D.34809;
  int D.34810;
  int D.34811;
  long int D.34815;
  struct MonoInst * D.34816;
  int D.34817;
  int D.34818;
  unsigned int D.34821;
  unsigned int D.34822;
  int D.34823;
  unsigned char * D.34827;
  long int D.34830;
  long int D.34831;
  long unsigned int D.34832;
  long unsigned int D.34833;
  struct MonoBasicBlock * * D.34834;
  short unsigned int D.34839;
  short unsigned int D.34840;
  _Bool D.34841;
  short unsigned int D.34842;
  _Bool D.34843;
  _Bool D.34844;
  short unsigned int D.34846;
  short unsigned int D.34847;
  struct MonoBasicBlock * * D.34848;
  struct MonoBasicBlock * * D.34849;
  struct MonoBasicBlock * D.34850;
  short unsigned int D.34855;
  _Bool D.34856;
  _Bool D.34857;
  _Bool D.34858;
  short unsigned int D.34860;
  short unsigned int D.34861;
  _Bool D.34862;
  short unsigned int D.34863;
  _Bool D.34864;
  _Bool D.34865;
  void * D.34868;
  struct MonoBasicBlock * * D.34869;
  struct MonoBasicBlock * * D.34870;
  unsigned char D.34874;
  unsigned int D.34877;
  unsigned int D.34878;
  int D.34879;
  short unsigned int D.34886;
  short unsigned int D.34887;
  _Bool D.34888;
  short unsigned int D.34889;
  _Bool D.34890;
  _Bool D.34891;
  short unsigned int D.34897;
  _Bool D.34898;
  _Bool D.34899;
  _Bool D.34900;
  short unsigned int D.34902;
  short unsigned int D.34903;
  _Bool D.34904;
  short unsigned int D.34905;
  _Bool D.34906;
  _Bool D.34907;
  struct MonoClass * D.34914;
  long int D.34921;
  struct MonoInst * D.34922;
  int D.34923;
  int D.34924;
  long int D.34929;
  struct MonoInst * D.34930;
  int D.34931;
  int D.34932;
  long int D.34936;
  struct MonoInst * D.34937;
  int D.34938;
  int D.34939;
  long int D.34945;
  struct MonoInst * D.34946;
  guint16 iftmp.139;
  int D.34951;
  int D.34952;
  long int D.34960;
  struct MonoInst * D.34961;
  int D.34962;
  int D.34963;
  long int D.34967;
  struct MonoInst * D.34968;
  int D.34969;
  int D.34970;
  long int D.34974;
  struct MonoInst * D.34975;
  int D.34976;
  int D.34977;
  struct MonoDebugOptions * D.34987;
  int D.34988;
  unsigned int D.34990;
  unsigned int D.34991;
  unsigned int D.34992;
  unsigned int D.34993;
  int D.34994;
  short unsigned int D.34995;
  int D.34996;
  char D.34997;
  unsigned char D.34998;
  unsigned char D.34999;
  unsigned char D.35000;
  struct MonoInst * * sp.140;
  int D.35005;
  int D.35006;
  struct MonoDebugOptions * D.35015;
  int D.35016;
  int D.35018;
  short unsigned int D.35019;
  short unsigned int D.35033;
  void * D.35035;
  struct MonoDebugOptions * D.35042;
  int D.35043;
  struct MonoDebugOptions * D.35051;
  int D.35052;
  unsigned int D.35054;
  int D.35055;
  long int D.35058;
  int D.35059;
  int D.35062;
  short unsigned int D.35065;
  void * D.35066;
  struct MonoInst * * sp.141;
  struct MonoInst * D.35071;
  struct MonoDebugOptions * D.35078;
  int D.35079;
  struct MonoDebugOptions * D.35087;
  int D.35088;
  unsigned char D.35092;
  unsigned int D.35095;
  long int D.35096;
  struct MonoInst * D.35097;
  int D.35098;
  int D.35099;
  int D.35103;
  unsigned int D.35104;
  int D.35105;
  short unsigned int D.35106;
  long int iftmp.142;
  int D.35113;
  short unsigned int D.35118;
  long int D.35121;
  struct MonoInst * D.35123;
  struct MonoInst * * sp.143;
  struct MonoInst * D.35130;
  struct MonoDebugOptions * D.35137;
  int D.35138;
  unsigned char D.35142;
  _Bool D.35143;
  _Bool D.35144;
  _Bool D.35145;
  short unsigned int D.35147;
  long int D.35149;
  unsigned int data.144;
  long int D.35153;
  long int D.35155;
  unsigned int D.35156;
  int D.35157;
  struct MonoDebugOptions * D.35164;
  int D.35165;
  unsigned int D.35167;
  int D.35168;
  struct MonoInst * * sp.145;
  struct MonoInst * D.35173;
  struct MonoDebugOptions * D.35180;
  int D.35181;
  unsigned char D.35183;
  struct MonoDebugOptions * D.35192;
  int D.35193;
  unsigned int D.35195;
  int D.35196;
  struct MonoInst * * sp.146;
  struct MonoInst * D.35201;
  struct MonoDebugOptions * D.35208;
  int D.35209;
  unsigned int D.35211;
  int D.35212;
  struct MonoInst * * sp.147;
  struct MonoInst * D.35217;
  struct MonoDebugOptions * D.35225;
  int D.35226;
  unsigned int D.35228;
  int D.35229;
  struct MonoInst * * sp.148;
  struct MonoInst * D.35234;
  struct MonoDebugOptions * D.35241;
  int D.35242;
  struct MonoDebugOptions * D.35252;
  int D.35253;
  unsigned int D.35255;
  int D.35256;
  struct MonoInst * * sp.149;
  struct MonoInst * D.35261;
  struct MonoDebugOptions * D.35268;
  int D.35269;
  unsigned int D.35271;
  int D.35272;
  struct MonoInst * * sp.150;
  struct MonoInst * D.35277;
  struct MonoDebugOptions * D.35285;
  int D.35286;
  unsigned int D.35288;
  int D.35289;
  struct MonoInst * * sp.151;
  struct MonoInst * D.35294;
  struct MonoDebugOptions * D.35301;
  int D.35302;
  struct MonoDebugOptions * D.35310;
  int D.35311;
  unsigned int D.35313;
  int D.35314;
  struct MonoInst * * sp.152;
  struct MonoInst * D.35319;
  struct MonoDebugOptions * D.35327;
  int D.35328;
  struct MonoDebugOptions * D.35336;
  int D.35337;
  unsigned int D.35343;
  long int D.35344;
  struct MonoInst * D.35345;
  int D.35346;
  int D.35347;
  int D.35351;
  unsigned int D.35352;
  int D.35353;
  struct MonoInst * * sp.153;
  struct MonoInst * D.35358;
  const char * D.35361;
  gchar * D.35362;
  struct MonoDebugOptions * D.35371;
  int D.35372;
  struct MonoDebugOptions * D.35380;
  int D.35381;
  struct MonoClass * klass.154;
  struct MonoClass * klass.155;
  unsigned char D.35388;
  struct MonoDebugOptions * D.35389;
  int D.35390;
  int D.35392;
  unsigned int D.35395;
  long int D.35396;
  struct MonoInst * D.35397;
  int D.35398;
  int D.35399;
  unsigned char D.35400;
  unsigned char D.35401;
  long int D.35405;
  struct MonoInst * D.35406;
  int D.35407;
  int D.35408;
  unsigned char D.35409;
  unsigned char D.35410;
  struct MonoDebugOptions * D.35425;
  int D.35426;
  struct MonoDebugOptions * D.35434;
  int D.35435;
  struct MonoClass * klass.156;
  struct MonoDebugOptions * D.35441;
  int D.35442;
  int D.35444;
  unsigned char * D.35445;
  unsigned char D.35446;
  int D.35449;
  unsigned int loc_index.157;
  struct MonoDebugOptions * D.35459;
  int D.35460;
  struct MonoType * D.35462;
  unsigned int D.35463;
  short unsigned int D.35464;
  unsigned int D.35465;
  int D.35466;
  long unsigned int D.35470;
  long unsigned int D.35471;
  struct MonoInst * * D.35472;
  struct MonoInst * D.35473;
  int D.35474;
  sizetype D.35475;
  int D.35478;
  const guint32 * D.35481;
  unsigned int D.35482;
  int D.35485;
  struct MonoDebugOptions * D.35494;
  int D.35495;
  unsigned int D.35497;
  short unsigned int D.35498;
  unsigned int D.35499;
  int D.35500;
  struct MonoInst * * sp.158;
  struct MonoDebugOptions * D.35511;
  int D.35512;
  struct MonoDebugOptions * D.35520;
  int D.35521;
  unsigned int n.159;
  void * D.35526;
  unsigned int D.35527;
  int D.35528;
  void * D.35535;
  struct MonoInst * D.35536;
  long int D.35537;
  struct MonoInst * D.35538;
  int D.35539;
  int D.35540;
  void * D.35541;
  unsigned int D.35542;
  int D.35543;
  struct MonoInst * D.35547;
  void * D.35553;
  struct GList * D.35554;
  struct GList * D.35555;
  void * D.35560;
  struct MonoInst * D.35561;
  long int D.35562;
  struct MonoInst * D.35563;
  int D.35564;
  int D.35565;
  long int D.35566;
  long unsigned int D.35567;
  long unsigned int D.35568;
  struct MonoInst * * D.35569;
  struct MonoInst * D.35570;
  struct MonoType * D.35571;
  unsigned int D.35572;
  short unsigned int D.35573;
  struct MonoClass * D.35574;
  int D.35575;
  unsigned char D.35576;
  <unnamed type> D.35577;
  unsigned int D.35578;
  int D.35579;
  short unsigned int D.35580;
  struct MonoClass * D.35583;
  void * D.35584;
  unsigned int D.35585;
  int D.35586;
  void * D.35590;
  struct MonoInst * D.35591;
  long int D.35592;
  struct MonoInst * D.35593;
  guint16 iftmp.160;
  int D.35598;
  int D.35599;
  unsigned int D.35600;
  int D.35601;
  void * D.35605;
  struct MonoInst * D.35606;
  long int D.35607;
  struct MonoInst * D.35608;
  int D.35609;
  int D.35610;
  long int D.35611;
  long int D.35612;
  unsigned int D.35613;
  int D.35614;
  struct MonoInst * D.35618;
  unsigned int n.161;
  unsigned int D.35620;
  unsigned char D.35622;
  unsigned char D.35623;
  void * D.35628;
  struct MonoInst * D.35629;
  long int D.35630;
  struct MonoInst * D.35631;
  int D.35632;
  int D.35633;
  unsigned int D.35634;
  int D.35635;
  struct MonoInst * D.35639;
  void * D.35641;
  guint16 iftmp.162;
  unsigned int D.35646;
  int D.35647;
  void * D.35651;
  struct MonoInst * D.35652;
  long int D.35653;
  struct MonoInst * D.35654;
  int D.35655;
  int D.35656;
  unsigned int D.35657;
  int D.35658;
  struct MonoInst * D.35662;
  struct MonoJumpInfoToken * D.35666;
  struct MonoClass * D.35667;
  unsigned int D.35668;
  int D.35669;
  unsigned int D.35674;
  int D.35675;
  struct MonoString * D.35676;
  void * D.35677;
  struct MonoDebugOptions * D.35689;
  int D.35690;
  struct MonoLoaderError * D.35695;
  struct MonoDebugOptions * D.35696;
  int D.35697;
  struct MonoDebugOptions * D.35701;
  int D.35702;
  int D.35704;
  struct MonoDebugOptions * D.35707;
  int D.35708;
  <unnamed type> D.35712;
  int D.35715;
  <unnamed type> D.35726;
  int D.35737;
  int D.35740;
  struct MonoDebugOptions * D.35746;
  int D.35747;
  int D.35751;
  int D.35754;
  struct MonoGenericContext * D.35760;
  struct MonoGenericInst * D.35761;
  struct MonoDebugOptions * D.35766;
  int D.35767;
  struct MonoDebugOptions * D.35775;
  int D.35776;
  long int D.35778;
  struct MonoInst * D.35779;
  guint16 iftmp.163;
  int D.35784;
  int D.35785;
  void * iftmp.164;
  unsigned int D.35790;
  int D.35791;
  short unsigned int D.35795;
  struct MonoDebugOptions * D.35802;
  int D.35803;
  int D.35812;
  struct MonoType * D.35818;
  short unsigned int D.35819;
  short unsigned int D.35820;
  struct MonoType * D.35822;
  short unsigned int D.35823;
  short unsigned int D.35824;
  _Bool D.35825;
  long int D.35826;
  long int D.35827;
  void * D.35830;
  struct MonoInst * D.35831;
  long int D.35832;
  struct MonoInst * D.35833;
  int D.35834;
  int D.35835;
  unsigned int D.35836;
  long int D.35837;
  unsigned int D.35838;
  int D.35839;
  struct MonoInst * * sp.165;
  struct MonoInst * D.35844;
  struct MonoInst * * sp.166;
  struct MonoInst * D.35846;
  struct MonoInst * D.35847;
  struct MonoInst * * sp.167;
  struct MonoInst * D.35849;
  int n.168;
  int D.35851;
  struct MonoDebugOptions * D.35858;
  int D.35859;
  int D.35861;
  struct MonoInst * D.35866;
  int D.35879;
  long int D.35883;
  long int D.35884;
  void * D.35889;
  unsigned int D.35890;
  int D.35891;
  struct MonoType * D.35898;
  struct MonoInst * D.35899;
  struct MonoInst * D.35900;
  int D.35901;
  void * D.35902;
  long int D.35903;
  long unsigned int D.35904;
  long unsigned int D.35905;
  struct MonoInst * * D.35906;
  struct MonoInst * D.35907;
  unsigned char D.35908;
  unsigned char D.35909;
  struct MonoClass * D.35910;
  unsigned int D.35911;
  int D.35912;
  struct MonoType * D.35915;
  int D.35916;
  struct MonoInst * iftmp.169;
  int D.35922;
  int D.35923;
  unsigned int D.35924;
  sizetype D.35927;
  sizetype D.35928;
  sizetype D.35929;
  struct MonoInst * * D.35930;
  struct MonoInst * iftmp.170;
  int D.35933;
  unsigned int D.35934;
  sizetype D.35937;
  sizetype D.35938;
  struct MonoInst * * D.35939;
  _Bool D.35941;
  long int D.35942;
  long int D.35943;
  _Bool D.35946;
  long int D.35947;
  long int D.35948;
  unsigned char D.35951;
  unsigned char D.35952;
  unsigned char D.35953;
  unsigned char D.35954;
  struct MonoDebugOptions * D.35967;
  int D.35968;
  int D.35970;
  struct GSList * D.35973;
  struct MonoMethodSignature * helper_sig_class_init_trampoline.171;
  const char * D.35979;
  const char * D.35980;
  long int D.35984;
  struct MonoInst * D.35985;
  int D.35986;
  int D.35987;
  int D.35988;
  struct MonoType * D.35999;
  int D.36000;
  _Bool D.36007;
  _Bool D.36009;
  _Bool D.36010;
  _Bool D.36011;
  int D.36013;
  struct MonoClass * D.36015;
  int D.36016;
  struct GList * D.36018;
  int D.36022;
  int D.36032;
  const char * D.36037;
  gchar * D.36038;
  int D.36044;
  int D.36050;
  int D.36052;
  unsigned int D.36061;
  short unsigned int D.36062;
  unsigned int D.36063;
  int D.36064;
  struct MonoClass * D.36067;
  struct MonoClass * D.36071;
  struct MonoType * D.36072;
  struct MonoInst * * sp.172;
  struct MonoInst * * sp.173;
  struct MonoDebugOptions * D.36082;
  int D.36083;
  struct MonoDebugOptions * D.36091;
  int D.36092;
  struct MonoClass * klass.174;
  struct MonoDebugOptions * D.36098;
  int D.36099;
  struct MonoDebugOptions * D.36107;
  int D.36108;
  int D.36113;
  void * D.36115;
  struct MonoInst * D.36116;
  long int D.36117;
  struct MonoInst * D.36118;
  guint16 iftmp.175;
  int D.36123;
  int D.36124;
  unsigned int D.36125;
  int D.36126;
  void * D.36132;
  struct MonoInst * D.36133;
  long int D.36134;
  struct MonoInst * D.36135;
  guint16 iftmp.176;
  int D.36140;
  int D.36141;
  unsigned int D.36142;
  int D.36143;
  void * D.36148;
  void * D.36149;
  unsigned int D.36150;
  int D.36151;
  struct MonoInst * * sp.177;
  struct MonoInst * D.36156;
  unsigned char D.36161;
  unsigned char D.36162;
  unsigned int D.36164;
  unsigned int D.36165;
  struct MonoMethodSignature * D.36166;
  _Bool D.36168;
  long int D.36169;
  long int D.36170;
  struct MonoInst * * sp.178;
  struct MonoInst * D.36174;
  struct MonoInst * * sp.179;
  struct MonoDebugOptions * D.36183;
  int D.36184;
  struct MonoDebugOptions * D.36192;
  int D.36193;
  struct MonoClass * klass.180;
  struct MonoDebugOptions * D.36199;
  int D.36200;
  struct MonoDebugOptions * D.36208;
  int D.36209;
  int D.36214;
  void * D.36216;
  struct MonoInst * D.36217;
  long int D.36218;
  struct MonoInst * D.36219;
  guint16 iftmp.181;
  int D.36224;
  int D.36225;
  unsigned int D.36226;
  int D.36227;
  void * D.36233;
  struct MonoInst * D.36234;
  long int D.36235;
  struct MonoInst * D.36236;
  guint16 iftmp.182;
  int D.36241;
  int D.36242;
  unsigned int D.36243;
  int D.36244;
  void * D.36249;
  void * D.36250;
  unsigned int D.36251;
  int D.36252;
  struct MonoInst * * sp.183;
  struct MonoInst * D.36257;
  struct MonoMethodSignature * D.36263;
  _Bool D.36265;
  long int D.36266;
  long int D.36267;
  struct MonoInst * * sp.184;
  struct MonoInst * D.36271;
  struct MonoInst * * sp.185;
  struct MonoDebugOptions * D.36280;
  int D.36281;
  struct MonoDebugOptions * D.36289;
  int D.36290;
  struct MonoClass * klass.186;
  struct MonoDebugOptions * D.36296;
  int D.36297;
  int D.36299;
  struct MonoInst * D.36302;
  int D.36303;
  int D.36309;
  void * D.36311;
  struct MonoInst * D.36312;
  long int D.36313;
  struct MonoInst * D.36314;
  guint16 iftmp.187;
  int D.36319;
  int D.36320;
  unsigned int D.36321;
  int D.36322;
  void * D.36328;
  struct MonoInst * D.36329;
  long int D.36330;
  struct MonoInst * D.36331;
  guint16 iftmp.188;
  int D.36336;
  int D.36337;
  unsigned int D.36338;
  int D.36339;
  void * D.36344;
  void * D.36345;
  unsigned int D.36346;
  int D.36347;
  struct MonoInst * * sp.189;
  struct MonoInst * D.36352;
  struct MonoMethodSignature * D.36358;
  _Bool D.36360;
  long int D.36361;
  long int D.36362;
  struct MonoInst * * sp.190;
  struct MonoInst * D.36366;
  struct MonoInst * * sp.191;
  int D.36369;
  struct MonoInst * * sp.192;
  unsigned int D.36373;
  short unsigned int D.36374;
  unsigned int D.36375;
  int D.36376;
  struct MonoInst * * sp.193;
  struct MonoDebugOptions * D.36387;
  int D.36388;
  struct MonoDebugOptions * D.36396;
  int D.36397;
  struct MonoClass * klass.194;
  struct MonoDebugOptions * D.36403;
  int D.36404;
  int D.36406;
  struct MonoInst * * sp.195;
  struct MonoClass * D.36410;
  struct MonoDebugOptions * D.36417;
  int D.36418;
  int D.36420;
  struct MonoDebugOptions * D.36427;
  int D.36428;
  int D.36432;
  int D.36437;
  unsigned char D.36440;
  _Bool D.36441;
  _Bool D.36442;
  _Bool D.36443;
  unsigned char D.36446;
  _Bool D.36447;
  _Bool D.36448;
  _Bool D.36449;
  char * D.36452;
  struct MonoDebugOptions * D.36459;
  int D.36460;
  struct MonoDebugOptions * D.36468;
  int D.36469;
  struct MonoDebugOptions * D.36480;
  int D.36481;
  unsigned int D.36483;
  unsigned int D.36484;
  int D.36485;
  unsigned char * D.36486;
  long int D.36489;
  long int D.36490;
  long unsigned int D.36491;
  long unsigned int D.36492;
  struct MonoBasicBlock * * D.36493;
  struct MonoDebugOptions * D.36503;
  int D.36504;
  unsigned int D.36506;
  unsigned int D.36507;
  int D.36508;
  unsigned char * D.36509;
  long int D.36512;
  long int D.36513;
  long unsigned int D.36514;
  long unsigned int D.36515;
  struct MonoBasicBlock * * D.36516;
  struct MonoDebugOptions * D.36525;
  int D.36526;
  unsigned int D.36530;
  long int D.36531;
  struct MonoInst * D.36532;
  int D.36533;
  int D.36534;
  long int D.36538;
  struct MonoInst * D.36539;
  int D.36540;
  int D.36541;
  _Bool D.36542;
  int D.36543;
  long int D.36544;
  long int D.36548;
  struct MonoInst * D.36549;
  int D.36550;
  int D.36551;
  void * D.36552;
  struct MonoBasicBlock * * D.36553;
  struct MonoBasicBlock * * D.36554;
  struct MonoBasicBlock * iftmp.196;
  struct MonoInst * * sp.197;
  struct MonoInst * D.36567;
  struct MonoDebugOptions * D.36575;
  int D.36576;
  struct MonoDebugOptions * D.36584;
  int D.36585;
  struct MonoClass * klass.198;
  struct MonoDebugOptions * D.36591;
  int D.36592;
  int D.36594;
  void * iftmp.199;
  int D.36598;
  unsigned int D.36599;
  long unsigned int D.36602;
  long unsigned int D.36603;
  struct MonoInst * * D.36604;
  struct MonoInst * iftmp.200;
  struct MonoInst * iftmp.201;
  unsigned char D.36614;
  unsigned char D.36615;
  struct MonoInst * iftmp.202;
  struct MonoClass * D.36620;
  unsigned int D.36621;
  int D.36622;
  struct MonoInst * iftmp.203;
  struct MonoType * D.36629;
  int D.36630;
  struct MonoInst * iftmp.204;
  struct MonoInst * iftmp.205;
  int D.36640;
  int D.36641;
  unsigned int D.36642;
  struct MonoInst * iftmp.206;
  int D.36649;
  sizetype D.36650;
  sizetype D.36651;
  sizetype D.36652;
  struct MonoInst * * D.36653;
  struct MonoInst * iftmp.207;
  struct MonoInst * iftmp.208;
  int D.36660;
  int D.36661;
  unsigned int D.36662;
  struct MonoInst * iftmp.209;
  int D.36669;
  sizetype D.36670;
  sizetype D.36671;
  sizetype D.36672;
  struct MonoInst * * D.36673;
  _Bool D.36675;
  long int D.36676;
  long int D.36677;
  _Bool D.36680;
  long int D.36681;
  long int D.36682;
  unsigned char D.36685;
  unsigned char D.36686;
  unsigned char D.36687;
  unsigned char D.36688;
  struct MonoInst * * sp.210;
  struct MonoInst * * sp.211;
  unsigned int op.212;
  unsigned int D.36696;
  _Bool D.36697;
  struct MonoDebugOptions * D.36708;
  int D.36709;
  struct MonoDebugOptions * D.36718;
  int D.36719;
  unsigned char D.36721;
  unsigned char D.36722;
  _Bool D.36723;
  _Bool D.36724;
  _Bool D.36725;
  struct MonoDebugOptions * D.36732;
  int D.36733;
  struct MonoDebugOptions * D.36743;
  int D.36744;
  struct MonoDebugOptions * D.36755;
  int D.36756;
  struct MonoDebugOptions * D.36764;
  int D.36765;
  struct MonoClass * klass.213;
  struct MonoDebugOptions * D.36773;
  int D.36774;
  int D.36780;
  gchar * D.36783;
  int D.36788;
  struct MonoDebugOptions * D.36795;
  int D.36796;
  <unnamed type> D.36800;
  struct MonoType * D.36805;
  short unsigned int D.36806;
  int D.36807;
  int D.36808;
  guint iftmp.214;
  unsigned char D.36812;
  unsigned char D.36813;
  int D.36816;
  unsigned int D.36817;
  int D.36821;
  struct MonoDebugOptions * D.36828;
  int D.36829;
  struct MonoMethodSignature * D.36836;
  unsigned char D.36837;
  unsigned char D.36838;
  int D.36841;
  unsigned char D.36842;
  struct MonoClass * D.36844;
  const char * D.36847;
  gchar * D.36848;
  void * D.36851;
  struct MonoInst * D.36852;
  long int D.36853;
  struct MonoInst * D.36854;
  guint16 iftmp.215;
  int D.36859;
  int D.36860;
  unsigned int D.36861;
  int D.36862;
  void * D.36866;
  struct MonoInst * D.36867;
  long int D.36868;
  struct MonoInst * D.36869;
  guint16 iftmp.216;
  int D.36874;
  int D.36875;
  unsigned int D.36876;
  int D.36877;
  void * D.36881;
  struct MonoInst * D.36882;
  long int D.36883;
  struct MonoInst * D.36884;
  int D.36885;
  int D.36886;
  mgreg_t iftmp.217;
  long unsigned int D.36890;
  long unsigned int D.36891;
  unsigned int D.36893;
  int D.36894;
  struct MonoMethodSignature * D.36902;
  _Bool D.36904;
  long int D.36905;
  long int D.36906;
  long int D.36911;
  struct MonoInst * D.36912;
  int D.36913;
  int D.36914;
  long int D.36918;
  struct MonoInst * D.36919;
  int D.36920;
  int D.36921;
  int D.36926;
  unsigned int D.36929;
  int D.36930;
  long int D.36934;
  struct MonoInst * D.36935;
  unsigned int D.36936;
  short unsigned int D.36937;
  int D.36938;
  int D.36939;
  struct MonoClass * D.36940;
  unsigned int D.36945;
  short unsigned int D.36946;
  long int D.36947;
  struct MonoClass * D.36948;
  unsigned char D.36954;
  unsigned char D.36955;
  unsigned int D.36960;
  unsigned int D.36964;
  long int D.36965;
  struct MonoInst * D.36966;
  int D.36967;
  int D.36968;
  unsigned char D.36972;
  struct MonoMethodSignature * D.36979;
  unsigned char D.36980;
  unsigned char D.36981;
  struct MonoMethod * iftmp.218;
  const char * D.36991;
  gchar * D.36992;
  void * D.36995;
  struct MonoInst * D.36996;
  long int D.36997;
  struct MonoInst * D.36998;
  guint16 iftmp.219;
  int D.37003;
  int D.37004;
  unsigned int D.37005;
  int D.37006;
  void * D.37010;
  struct MonoInst * D.37011;
  long int D.37012;
  struct MonoInst * D.37013;
  guint16 iftmp.220;
  int D.37018;
  int D.37019;
  unsigned int D.37020;
  int D.37021;
  void * D.37025;
  struct MonoInst * D.37026;
  long int D.37027;
  struct MonoInst * D.37028;
  int D.37029;
  int D.37030;
  mgreg_t iftmp.221;
  unsigned int D.37035;
  int D.37036;
  struct MonoMethodSignature * D.37044;
  struct MonoInst * * sp.222;
  struct MonoInst * D.37049;
  struct MonoInst * * sp.223;
  struct MonoInst * iftmp.224;
  unsigned int D.37056;
  long unsigned int D.37059;
  long unsigned int D.37060;
  struct MonoInst * * D.37061;
  struct MonoClass * D.37066;
  _Bool D.37067;
  long int D.37068;
  long int D.37069;
  unsigned char D.37072;
  unsigned char D.37073;
  unsigned int D.37074;
  int D.37075;
  struct MonoType * D.37078;
  int D.37079;
  struct MonoInst * iftmp.225;
  int D.37085;
  int D.37086;
  unsigned int D.37087;
  sizetype D.37090;
  sizetype D.37091;
  sizetype D.37092;
  struct MonoInst * * D.37093;
  struct MonoInst * iftmp.226;
  int D.37096;
  unsigned int D.37097;
  sizetype D.37100;
  sizetype D.37101;
  struct MonoInst * * D.37102;
  _Bool D.37104;
  long int D.37105;
  long int D.37106;
  _Bool D.37109;
  long int D.37110;
  long int D.37111;
  unsigned char D.37114;
  unsigned char D.37115;
  unsigned char D.37116;
  unsigned char D.37117;
  int D.37123;
  const char * D.37128;
  gchar * D.37129;
  struct MonoInst * * sp.227;
  struct MonoInst * D.37133;
  long int D.37137;
  struct MonoInst * D.37138;
  int D.37139;
  int D.37140;
  long int D.37144;
  struct MonoInst * D.37145;
  int D.37146;
  int D.37147;
  unsigned int D.37151;
  int D.37152;
  int D.37155;
  struct MonoClass * D.37163;
  struct MonoInst * * sp.228;
  long int D.37168;
  struct MonoInst * D.37169;
  int D.37170;
  int D.37171;
  long int D.37175;
  struct MonoInst * D.37176;
  int D.37177;
  int D.37178;
  int D.37183;
  unsigned int D.37186;
  int D.37187;
  long int D.37191;
  struct MonoInst * D.37192;
  unsigned int D.37193;
  short unsigned int D.37194;
  int D.37195;
  int D.37196;
  unsigned char D.37197;
  <unnamed type> D.37198;
  unsigned int D.37199;
  int D.37200;
  unsigned int D.37205;
  short unsigned int D.37206;
  unsigned int D.37207;
  int D.37208;
  unsigned char D.37212;
  unsigned char D.37213;
  unsigned char D.37216;
  struct MonoInst * * sp.229;
  short unsigned int D.37220;
  int D.37221;
  int D.37222;
  struct MonoDebugOptions * D.37229;
  int D.37230;
  struct MonoDebugOptions * D.37239;
  int D.37240;
  union mono_mutex_t * D.37242;
  _Bool D.37245;
  long int D.37246;
  long int D.37247;
  struct GHashTable * D.37250;
  _Bool D.37255;
  long int D.37256;
  long int D.37257;
  long unsigned int addr.230;
  long unsigned int D.37264;
  const char * D.37275;
  gchar * D.37276;
  unsigned int D.37282;
  long int D.37283;
  struct MonoInst * D.37284;
  int D.37285;
  int D.37286;
  int D.37287;
  guint16 iftmp.231;
  unsigned int D.37297;
  int D.37298;
  long int D.37302;
  struct MonoInst * D.37303;
  int D.37304;
  int D.37305;
  unsigned int D.37309;
  long int D.37310;
  struct MonoInst * D.37311;
  int D.37312;
  int D.37313;
  long int D.37317;
  struct MonoInst * D.37318;
  int D.37319;
  int D.37320;
  long int D.37324;
  struct MonoInst * D.37325;
  int D.37326;
  int D.37327;
  long int D.37331;
  struct MonoInst * D.37332;
  int D.37333;
  int D.37334;
  unsigned int D.37338;
  long int D.37339;
  struct MonoInst * D.37340;
  int D.37341;
  int D.37342;
  unsigned int D.37346;
  long int D.37347;
  struct MonoInst * D.37348;
  int D.37349;
  int D.37350;
  unsigned int D.37354;
  long int addr.232;
  unsigned int D.37360;
  unsigned int D.37361;
  unsigned int D.37362;
  unsigned int D.37363;
  long int D.37364;
  struct MonoInst * D.37365;
  int D.37366;
  int D.37367;
  long unsigned int D.37368;
  long unsigned int D.37369;
  long int D.37370;
  unsigned int D.37374;
  long int D.37375;
  long int D.37376;
  _Bool D.37386;
  _Bool D.37387;
  _Bool D.37388;
  long int D.37389;
  long int D.37390;
  void * D.37397;
  struct MonoInst * D.37398;
  long int D.37399;
  struct MonoInst * D.37400;
  int D.37401;
  int D.37402;
  long int D.37403;
  long unsigned int D.37404;
  long unsigned int D.37405;
  struct MonoInst * * D.37406;
  struct MonoInst * D.37407;
  struct MonoType * D.37408;
  unsigned int D.37409;
  short unsigned int D.37410;
  struct MonoClass * D.37411;
  int D.37412;
  unsigned char D.37413;
  <unnamed type> D.37414;
  unsigned int D.37415;
  int D.37416;
  short unsigned int D.37417;
  struct MonoClass * D.37420;
  void * D.37421;
  unsigned int D.37422;
  int D.37423;
  struct MonoInst * D.37429;
  void * D.37431;
  struct MonoInst * D.37432;
  long int D.37433;
  struct MonoInst * D.37434;
  guint16 iftmp.233;
  int D.37439;
  int D.37440;
  unsigned int D.37441;
  int D.37442;
  int D.37448;
  int D.37451;
  unsigned int D.37454;
  int D.37455;
  int D.37456;
  unsigned int D.37464;
  long int D.37465;
  void * D.37481;
  struct MonoInst * D.37482;
  long int D.37483;
  struct MonoInst * D.37484;
  int D.37485;
  int D.37486;
  long int D.37487;
  long unsigned int D.37488;
  long unsigned int D.37489;
  struct MonoInst * * D.37490;
  struct MonoInst * D.37491;
  struct MonoType * D.37492;
  unsigned int D.37493;
  short unsigned int D.37494;
  struct MonoClass * D.37495;
  int D.37496;
  unsigned char D.37497;
  <unnamed type> D.37498;
  unsigned int D.37499;
  int D.37500;
  short unsigned int D.37501;
  struct MonoClass * D.37504;
  void * D.37505;
  unsigned int D.37506;
  int D.37507;
  void * D.37511;
  struct MonoInst * D.37512;
  long int D.37513;
  struct MonoInst * D.37514;
  guint16 iftmp.234;
  int D.37519;
  int D.37520;
  unsigned int D.37521;
  int D.37522;
  struct MonoDebugOptions * D.37531;
  int D.37532;
  int D.37536;
  struct GSList * D.37539;
  const char * D.37544;
  const char * D.37545;
  const char * D.37546;
  unsigned char D.37548;
  _Bool D.37551;
  long int D.37552;
  long int D.37553;
  unsigned char D.37556;
  unsigned char D.37557;
  guint16 iftmp.235;
  unsigned int D.37574;
  int D.37575;
  void * D.37582;
  sizetype D.37583;
  _Bool D.37584;
  long int D.37585;
  long int D.37586;
  unsigned int D.37589;
  int D.37590;
  void * D.37595;
  struct MonoInst * D.37596;
  long int D.37597;
  struct MonoInst * D.37598;
  int D.37599;
  int D.37600;
  unsigned int D.37601;
  long int D.37602;
  unsigned int D.37603;
  int D.37604;
  struct MonoClass * D.37610;
  struct MonoInst * * sp.236;
  long int D.37615;
  struct MonoInst * D.37616;
  unsigned int D.37617;
  short unsigned int D.37618;
  int D.37619;
  int D.37620;
  int D.37621;
  struct MonoClass * D.37622;
  unsigned char D.37626;
  unsigned char D.37627;
  struct MonoDebugOptions * D.37634;
  int D.37635;
  int D.37639;
  unsigned char D.37646;
  unsigned char D.37647;
  unsigned char D.37648;
  void * D.37651;
  struct MonoClass * D.37654;
  unsigned char D.37655;
  unsigned char D.37656;
  struct MonoType * D.37659;
  unsigned char D.37660;
  const char * D.37663;
  gchar * D.37664;
  void * D.37667;
  unsigned char D.37668;
  long int D.37669;
  unsigned int D.37670;
  int D.37671;
  void * D.37675;
  signed char D.37676;
  long int D.37677;
  unsigned int D.37678;
  int D.37679;
  void * D.37683;
  short unsigned int D.37684;
  long int D.37685;
  unsigned int D.37686;
  int D.37687;
  void * D.37691;
  short int D.37692;
  long int D.37693;
  unsigned int D.37694;
  int D.37695;
  void * D.37699;
  int D.37700;
  long int D.37701;
  unsigned int D.37702;
  int D.37703;
  void * D.37707;
  unsigned int D.37708;
  long int D.37709;
  unsigned int D.37710;
  int D.37711;
  void * D.37715;
  void * D.37716;
  unsigned int D.37717;
  int D.37718;
  int D.37722;
  void * D.37725;
  unsigned int D.37726;
  int D.37727;
  void * D.37732;
  unsigned int D.37733;
  int D.37734;
  long int D.37735;
  struct MonoDebugOptions * D.37747;
  int D.37748;
  long int D.37750;
  struct MonoInst * D.37751;
  unsigned int D.37752;
  short unsigned int D.37753;
  int D.37754;
  int D.37755;
  unsigned char D.37756;
  <unnamed type> D.37757;
  unsigned int D.37758;
  int D.37759;
  unsigned char D.37763;
  unsigned char D.37764;
  struct MonoInst * * sp.237;
  struct MonoDebugOptions * D.37772;
  int D.37773;
  struct MonoDebugOptions * D.37781;
  int D.37782;
  struct MonoClass * klass.238;
  struct MonoDebugOptions * D.37788;
  int D.37789;
  unsigned int D.37791;
  short unsigned int D.37792;
  struct MonoClass * D.37793;
  int D.37801;
  struct MonoDebugOptions * D.37810;
  int D.37811;
  struct MonoDebugOptions * D.37819;
  int D.37820;
  struct MonoClass * klass.239;
  struct MonoDebugOptions * D.37826;
  int D.37827;
  unsigned char D.37829;
  unsigned int D.37832;
  int D.37833;
  struct MonoInst * D.37837;
  struct MonoInst * D.37840;
  void * D.37851;
  struct MonoInst * D.37852;
  long int D.37853;
  struct MonoInst * D.37854;
  int D.37855;
  int D.37856;
  long int D.37857;
  long unsigned int D.37858;
  long unsigned int D.37859;
  struct MonoInst * * D.37860;
  struct MonoInst * D.37861;
  struct MonoType * D.37862;
  unsigned int D.37863;
  short unsigned int D.37864;
  struct MonoClass * D.37865;
  int D.37866;
  unsigned char D.37867;
  <unnamed type> D.37868;
  unsigned int D.37869;
  int D.37870;
  short unsigned int D.37871;
  struct MonoClass * D.37874;
  void * D.37875;
  unsigned int D.37876;
  int D.37877;
  void * D.37881;
  struct MonoInst * D.37882;
  long int D.37883;
  struct MonoInst * D.37884;
  guint16 iftmp.240;
  int D.37889;
  int D.37890;
  unsigned int D.37891;
  int D.37892;
  unsigned char D.37900;
  struct MonoDebugOptions * D.37901;
  int D.37902;
  unsigned int D.37904;
  int D.37905;
  unsigned int D.37909;
  struct MonoInst * * sp.241;
  const guint8 * D.37915;
  int D.37916;
  short unsigned int D.37919;
  long int D.37922;
  unsigned int D.37923;
  unsigned int D.37926;
  void * D.37927;
  struct MonoInst * D.37928;
  long int D.37929;
  struct MonoInst * D.37930;
  int D.37931;
  int D.37932;
  void * D.37938;
  struct MonoInst * D.37939;
  long int D.37940;
  struct MonoInst * D.37941;
  int D.37942;
  int D.37943;
  unsigned int field_token.242;
  struct MonoJumpInfoToken * D.37945;
  unsigned int D.37946;
  int D.37947;
  void * D.37952;
  unsigned int D.37953;
  int D.37954;
  void * D.37958;
  struct MonoInst * D.37959;
  long int D.37960;
  struct MonoInst * D.37961;
  int D.37962;
  int D.37963;
  int data_size.243;
  long int D.37965;
  unsigned int D.37966;
  int D.37967;
  struct MonoDebugOptions * D.37977;
  int D.37978;
  struct MonoDebugOptions * D.37986;
  int D.37987;
  unsigned int D.37989;
  int D.37990;
  unsigned char D.37991;
  struct MonoInst * * sp.244;
  struct MonoDebugOptions * D.38002;
  int D.38003;
  struct MonoDebugOptions * D.38011;
  int D.38012;
  struct MonoDebugOptions * D.38020;
  int D.38021;
  unsigned int D.38023;
  struct MonoClass * klass.245;
  struct MonoDebugOptions * D.38028;
  int D.38029;
  unsigned char D.38040;
  struct MonoDebugOptions * D.38041;
  int D.38042;
  struct MonoInst * * sp.246;
  struct MonoDebugOptions * D.38051;
  int D.38052;
  struct MonoDebugOptions * D.38062;
  int D.38063;
  struct MonoClass * klass.247;
  struct MonoDebugOptions * D.38069;
  int D.38070;
  struct MonoClass * klass.248;
  struct MonoDebugOptions * D.38080;
  int D.38081;
  int D.38083;
  unsigned int D.38086;
  short unsigned int D.38087;
  int D.38088;
  unsigned int D.38089;
  int D.38090;
  int D.38097;
  unsigned int D.38098;
  unsigned int D.38099;
  unsigned int D.38100;
  unsigned int D.38101;
  unsigned int D.38102;
  unsigned int D.38105;
  long int D.38110;
  struct MonoInst * D.38111;
  int D.38112;
  int D.38113;
  long int D.38117;
  struct MonoInst * D.38118;
  int D.38119;
  int D.38120;
  unsigned int D.38127;
  int D.38130;
  long int D.38135;
  struct MonoInst * D.38136;
  int D.38137;
  int D.38138;
  long int D.38142;
  struct MonoInst * D.38143;
  int D.38144;
  int D.38145;
  long int D.38150;
  struct MonoInst * D.38151;
  int D.38152;
  int D.38153;
  unsigned char D.38154;
  int D.38159;
  long int D.38164;
  struct MonoInst * D.38165;
  int D.38166;
  int D.38167;
  long int D.38171;
  struct MonoInst * D.38172;
  int D.38173;
  int D.38174;
  long int D.38179;
  struct MonoInst * D.38180;
  int D.38181;
  int D.38182;
  unsigned char D.38183;
  long int D.38187;
  struct MonoInst * D.38188;
  int D.38189;
  int D.38190;
  long int D.38194;
  struct MonoInst * D.38195;
  int D.38196;
  int D.38197;
  long int D.38202;
  struct MonoInst * D.38203;
  int D.38204;
  int D.38205;
  long int D.38209;
  struct MonoInst * D.38210;
  int D.38211;
  int D.38212;
  long int D.38217;
  struct MonoInst * D.38218;
  int D.38219;
  int D.38220;
  unsigned char D.38221;
  unsigned char D.38222;
  unsigned int D.38226;
  short unsigned int D.38227;
  long int D.38228;
  unsigned int D.38229;
  int D.38230;
  unsigned int D.38235;
  short unsigned int D.38236;
  unsigned int D.38237;
  int D.38238;
  struct MonoInst * * sp.249;
  struct MonoDebugOptions * D.38252;
  int D.38253;
  struct MonoDebugOptions * D.38263;
  int D.38264;
  struct MonoClass * klass.250;
  struct MonoDebugOptions * D.38270;
  int D.38271;
  struct MonoClass * klass.251;
  struct MonoDebugOptions * D.38281;
  int D.38282;
  struct MonoDebugOptions * D.38293;
  int D.38294;
  unsigned int D.38296;
  int D.38297;
  struct MonoInst * * sp.252;
  struct MonoInst * D.38302;
  unsigned int D.38303;
  unsigned int D.38304;
  const char * D.38307;
  gchar * D.38308;
  struct MonoDebugOptions * D.38317;
  int D.38318;
  struct MonoDebugOptions * D.38326;
  int D.38327;
  struct MonoClass * klass.253;
  struct MonoDebugOptions * D.38333;
  int D.38334;
  struct MonoInst * iftmp.254;
  struct MonoClass * D.38342;
  struct MonoType * D.38343;
  long int D.38344;
  struct MonoInst * D.38345;
  int D.38346;
  int D.38347;
  unsigned char D.38348;
  unsigned char D.38349;
  struct MonoClass * D.38350;
  unsigned int D.38351;
  int D.38352;
  struct MonoType * D.38355;
  int D.38356;
  struct MonoInst * iftmp.255;
  int D.38362;
  int D.38363;
  unsigned int D.38364;
  sizetype D.38367;
  sizetype D.38368;
  sizetype D.38369;
  struct MonoInst * * D.38370;
  struct MonoInst * iftmp.256;
  int D.38373;
  unsigned int D.38374;
  sizetype D.38377;
  sizetype D.38378;
  struct MonoInst * * D.38379;
  _Bool D.38381;
  long int D.38382;
  long int D.38383;
  _Bool D.38386;
  long int D.38387;
  long int D.38388;
  unsigned char D.38391;
  unsigned char D.38392;
  unsigned char D.38393;
  unsigned char D.38394;
  long int D.38398;
  struct MonoInst * D.38399;
  int D.38400;
  int D.38401;
  int D.38402;
  long int D.38408;
  struct MonoInst * D.38409;
  int D.38410;
  int D.38411;
  int D.38412;
  long int D.38416;
  struct MonoInst * D.38417;
  int D.38418;
  int D.38419;
  struct MonoInst * * sp.257;
  const char * D.38430;
  gchar * D.38431;
  struct MonoDebugOptions * D.38440;
  int D.38441;
  struct MonoDebugOptions * D.38449;
  int D.38450;
  struct MonoClass * klass.258;
  struct MonoDebugOptions * D.38456;
  int D.38457;
  long int D.38459;
  struct MonoInst * D.38460;
  int D.38461;
  int D.38462;
  long int D.38463;
  long unsigned int D.38464;
  long unsigned int D.38465;
  struct MonoInst * * D.38466;
  struct MonoInst * D.38467;
  unsigned char D.38468;
  unsigned char D.38469;
  struct MonoClass * D.38470;
  unsigned int D.38471;
  int D.38472;
  struct MonoType * D.38475;
  int D.38476;
  struct MonoInst * iftmp.259;
  int D.38482;
  int D.38483;
  unsigned int D.38484;
  sizetype D.38487;
  sizetype D.38488;
  sizetype D.38489;
  struct MonoInst * * D.38490;
  struct MonoInst * iftmp.260;
  int D.38493;
  unsigned int D.38494;
  sizetype D.38497;
  sizetype D.38498;
  struct MonoInst * * D.38499;
  _Bool D.38501;
  long int D.38502;
  long int D.38503;
  _Bool D.38506;
  long int D.38507;
  long int D.38508;
  unsigned char D.38511;
  unsigned char D.38512;
  unsigned char D.38513;
  unsigned char D.38514;
  unsigned int D.38520;
  long int D.38521;
  struct MonoInst * D.38522;
  int D.38523;
  int D.38524;
  int D.38525;
  int D.38526;
  long int D.38530;
  struct MonoInst * D.38531;
  int D.38532;
  int D.38533;
  long int D.38537;
  struct MonoInst * D.38538;
  int D.38539;
  int D.38540;
  unsigned int D.38547;
  unsigned int D.38548;
  long int D.38549;
  struct MonoInst * D.38550;
  guint16 iftmp.261;
  int D.38555;
  int D.38556;
  long int D.38560;
  struct MonoInst * D.38561;
  int D.38562;
  int D.38563;
  long int D.38567;
  struct MonoInst * D.38568;
  int D.38569;
  int D.38570;
  long int D.38574;
  struct MonoInst * D.38575;
  int D.38576;
  int D.38577;
  long int D.38582;
  struct MonoInst * D.38583;
  int D.38584;
  int D.38585;
  long int D.38586;
  long int D.38590;
  struct MonoInst * D.38591;
  int D.38592;
  int D.38593;
  long int klass.262;
  long int D.38598;
  struct MonoInst * D.38599;
  int D.38600;
  int D.38601;
  unsigned int D.38605;
  short unsigned int D.38606;
  unsigned int D.38607;
  int D.38608;
  struct MonoClass * D.38611;
  struct MonoInst * * sp.263;
  struct MonoDebugOptions * D.38622;
  int D.38623;
  struct MonoDebugOptions * D.38631;
  int D.38632;
  unsigned char D.38634;
  _Bool D.38635;
  _Bool D.38636;
  _Bool D.38637;
  int D.38640;
  unsigned int D.38641;
  void * handle_class.264;
  struct MonoClass * D.38643;
  struct MonoClass * handle_class.265;
  struct MonoDebugOptions * D.38650;
  int D.38651;
  int D.38655;
  unsigned int D.38656;
  unsigned int D.38657;
  int D.38663;
  struct MonoClass * D.38667;
  struct MonoClass * D.38669;
  struct MonoClass * D.38672;
  struct MonoClass * D.38674;
  struct MonoType * D.38683;
  void * D.38684;
  struct MonoInst * D.38685;
  long int D.38686;
  struct MonoInst * D.38687;
  guint16 iftmp.266;
  int D.38692;
  int D.38693;
  unsigned int D.38694;
  int D.38695;
  void * D.38699;
  struct MonoInst * D.38700;
  long int D.38701;
  struct MonoInst * D.38702;
  int D.38703;
  int D.38704;
  unsigned int D.38705;
  int D.38706;
  struct MonoInst * D.38712;
  void * D.38714;
  struct MonoInst * D.38715;
  long int D.38716;
  struct MonoInst * D.38717;
  int D.38718;
  int D.38719;
  unsigned int D.38720;
  int D.38721;
  long int D.38725;
  struct MonoInst * D.38726;
  int D.38727;
  int D.38728;
  long int D.38729;
  long unsigned int D.38730;
  long unsigned int D.38731;
  struct MonoInst * * D.38732;
  struct MonoInst * D.38733;
  unsigned char D.38734;
  unsigned char D.38735;
  struct MonoClass * D.38736;
  unsigned int D.38737;
  int D.38738;
  struct MonoType * D.38741;
  int D.38742;
  struct MonoInst * iftmp.267;
  int D.38748;
  int D.38749;
  unsigned int D.38750;
  sizetype D.38753;
  sizetype D.38754;
  sizetype D.38755;
  struct MonoInst * * D.38756;
  struct MonoInst * iftmp.268;
  int D.38759;
  unsigned int D.38760;
  sizetype D.38763;
  sizetype D.38764;
  struct MonoInst * * D.38765;
  _Bool D.38767;
  long int D.38768;
  long int D.38769;
  _Bool D.38772;
  long int D.38773;
  long int D.38774;
  unsigned char D.38777;
  unsigned char D.38778;
  unsigned char D.38779;
  unsigned char D.38780;
  long int D.38784;
  struct MonoInst * D.38785;
  int D.38786;
  int D.38787;
  int D.38788;
  unsigned int D.38792;
  short unsigned int D.38793;
  unsigned int D.38794;
  int D.38795;
  struct MonoClass * D.38798;
  int D.38805;
  unsigned char D.38807;
  _Bool D.38808;
  _Bool D.38809;
  _Bool D.38810;
  struct MonoClass * D.38813;
  int D.28317;
  int iftmp.269;
  int D.28316;
  const char[18] * D.38818;
  unsigned char D.38819;
  int D.38820;
  unsigned char D.38821;
  int D.38822;
  _Bool D.38823;
  _Bool D.38824;
  _Bool D.38825;
  const unsigned char * D.38828;
  unsigned char D.38829;
  int D.38830;
  const unsigned char * D.38831;
  unsigned char D.38832;
  int D.38833;
  _Bool D.38834;
  _Bool D.38835;
  const unsigned char * D.38838;
  unsigned char D.38839;
  int D.38840;
  const unsigned char * D.38841;
  unsigned char D.38842;
  int D.38843;
  _Bool D.38844;
  _Bool D.38845;
  const unsigned char * D.38848;
  unsigned char D.38849;
  int D.38850;
  const unsigned char * D.38851;
  unsigned char D.38852;
  int D.38853;
  unsigned int D.38865;
  struct MonoImage * D.38866;
  struct MonoClass * D.38867;
  struct MonoJumpInfoToken * D.38870;
  struct MonoClass * D.38871;
  unsigned int D.38872;
  int D.38873;
  unsigned int D.38879;
  int D.38880;
  struct MonoJumpInfoToken * D.38885;
  unsigned int D.38886;
  int D.38887;
  struct MonoReflectionType * D.38892;
  unsigned int D.38893;
  int D.38894;
  struct MonoClass * D.38902;
  struct MonoJumpInfoToken * D.38913;
  unsigned int D.38914;
  int D.38915;
  unsigned int D.38920;
  int D.38921;
  long int D.38925;
  struct MonoInst * D.38926;
  int D.38927;
  int D.38928;
  long int D.38929;
  long unsigned int D.38930;
  long unsigned int D.38931;
  struct MonoInst * * D.38932;
  struct MonoInst * D.38933;
  unsigned char D.38934;
  unsigned char D.38935;
  struct MonoClass * D.38936;
  unsigned int D.38937;
  int D.38938;
  struct MonoType * D.38941;
  int D.38942;
  struct MonoInst * iftmp.270;
  int D.38948;
  int D.38949;
  unsigned int D.38950;
  sizetype D.38953;
  sizetype D.38954;
  sizetype D.38955;
  struct MonoInst * * D.38956;
  struct MonoInst * iftmp.271;
  int D.38959;
  unsigned int D.38960;
  sizetype D.38963;
  sizetype D.38964;
  struct MonoInst * * D.38965;
  _Bool D.38967;
  long int D.38968;
  long int D.38969;
  _Bool D.38972;
  long int D.38973;
  long int D.38974;
  unsigned char D.38977;
  unsigned char D.38978;
  unsigned char D.38979;
  unsigned char D.38980;
  long int D.38984;
  struct MonoInst * D.38985;
  int D.38986;
  int D.38987;
  int D.38988;
  unsigned int D.38992;
  short unsigned int D.38993;
  unsigned int D.38994;
  int D.38995;
  struct MonoClass * D.38998;
  struct MonoInst * * sp.272;
  struct MonoDebugOptions * D.39009;
  int D.39010;
  struct MonoDebugOptions * D.39031;
  int D.39032;
  sizetype D.39034;
  sizetype D.39035;
  struct MonoDebugOptions * D.39043;
  int D.39044;
  signed char D.39046;
  sizetype D.39047;
  sizetype D.39048;
  unsigned int D.39049;
  long int D.39050;
  unsigned int D.39053;
  unsigned int D.39054;
  long int D.39055;
  unsigned int D.39058;
  long int iftmp.273;
  long int D.39065;
  unsigned int D.39070;
  unsigned int D.39071;
  int D.39072;
  long int D.39073;
  struct MonoInst * D.39074;
  int D.39075;
  int D.39076;
  int D.39077;
  long int D.39081;
  struct MonoInst * D.39082;
  int D.39083;
  int D.39084;
  unsigned int D.39087;
  unsigned int D.39088;
  int D.39089;
  unsigned char * D.39093;
  long int D.39096;
  long int D.39097;
  long unsigned int D.39098;
  long unsigned int D.39099;
  struct MonoBasicBlock * * D.39100;
  short unsigned int D.39105;
  short unsigned int D.39106;
  _Bool D.39107;
  short unsigned int D.39108;
  _Bool D.39109;
  _Bool D.39110;
  short unsigned int D.39116;
  _Bool D.39117;
  _Bool D.39118;
  _Bool D.39119;
  short unsigned int D.39121;
  short unsigned int D.39122;
  _Bool D.39123;
  short unsigned int D.39124;
  _Bool D.39125;
  _Bool D.39126;
  void * D.39129;
  struct MonoBasicBlock * * D.39130;
  struct MonoBasicBlock * * D.39131;
  unsigned int D.39137;
  unsigned int D.39138;
  int D.39139;
  short unsigned int D.39146;
  short unsigned int D.39147;
  _Bool D.39148;
  short unsigned int D.39149;
  _Bool D.39150;
  _Bool D.39151;
  short unsigned int D.39157;
  _Bool D.39158;
  _Bool D.39159;
  _Bool D.39160;
  short unsigned int D.39162;
  short unsigned int D.39163;
  _Bool D.39164;
  short unsigned int D.39165;
  _Bool D.39166;
  _Bool D.39167;
  long int D.39170;
  struct MonoInst * D.39171;
  int D.39172;
  int D.39173;
  unsigned char * D.39177;
  long int D.39180;
  long int D.39181;
  long unsigned int D.39182;
  long unsigned int D.39183;
  struct MonoBasicBlock * * D.39184;
  short unsigned int D.39189;
  short unsigned int D.39190;
  _Bool D.39191;
  short unsigned int D.39192;
  _Bool D.39193;
  _Bool D.39194;
  short unsigned int D.39200;
  _Bool D.39201;
  _Bool D.39202;
  _Bool D.39203;
  short unsigned int D.39205;
  short unsigned int D.39206;
  _Bool D.39207;
  short unsigned int D.39208;
  _Bool D.39209;
  _Bool D.39210;
  unsigned int D.39214;
  long unsigned int D.39215;
  long unsigned int D.39216;
  struct MonoBasicBlock * * D.39217;
  _Bool D.39218;
  long int D.39219;
  long int D.39220;
  struct MonoDebugOptions * D.39237;
  int D.39238;
  unsigned int D.39240;
  unsigned int D.39241;
  int D.39242;
  unsigned char * D.39243;
  long int D.39246;
  long int D.39247;
  long unsigned int D.39248;
  long unsigned int D.39249;
  struct MonoBasicBlock * * D.39250;
  struct MonoDebugOptions * D.39263;
  int D.39264;
  unsigned int D.39266;
  unsigned int D.39267;
  int D.39268;
  _Bool D.39274;
  long int D.39275;
  long int D.39276;
  struct MonoDebugOptions * D.39285;
  int D.39286;
  char * D.39290;
  _Bool D.39291;
  long int D.39292;
  long int D.39293;
  struct MonoMethodSignature * D.39296;
  short unsigned int D.39297;
  long int D.39298;
  struct MonoDebugOptions * D.39305;
  int D.39306;
  long unsigned int D.39308;
  long unsigned int D.39309;
  sizetype D.39310;
  const void * D.39311;
  struct MonoType * D.39312;
  int D.39313;
  struct MonoInst * * sp.274;
  int num_calls.275;
  int D.39318;
  struct MonoDebugOptions * D.39325;
  int D.39326;
  struct MonoDebugOptions * D.39334;
  int D.39335;
  gint32 * D.39339;
  guint16 iftmp.276;
  unsigned int D.39346;
  int D.39347;
  struct MonoInst * * sp.277;
  unsigned int D.39352;
  int D.39353;
  struct MonoInst * * sp.278;
  int num_calls.279;
  int D.39359;
  struct MonoDebugOptions * D.39368;
  int D.39369;
  struct MonoDebugOptions * D.39377;
  int D.39378;
  _Bool D.39380;
  long int D.39381;
  long int D.39382;
  guint16 iftmp.280;
  const char * D.39389;
  unsigned int D.39390;
  int D.39391;
  struct MonoInst * * sp.281;
  int num_calls.282;
  int D.39397;
  struct MonoDebugOptions * D.39404;
  int D.39405;
  struct MonoDebugOptions * D.39413;
  int D.39414;
  guint16 iftmp.283;
  unsigned int D.39422;
  int D.39423;
  _Bool D.39428;
  long int D.39429;
  long int D.39430;
  unsigned int D.39433;
  int D.39434;
  struct MonoInst * * sp.284;
  struct MonoDebugOptions * D.39445;
  int D.39446;
  struct MonoInst * iftmp.285;
  long int D.39452;
  struct MonoInst * D.39453;
  int D.39454;
  int D.39455;
  unsigned char D.39456;
  unsigned char D.39457;
  struct MonoClass * D.39458;
  unsigned int D.39459;
  int D.39460;
  struct MonoType * D.39463;
  int D.39464;
  struct MonoInst * iftmp.286;
  int D.39470;
  int D.39471;
  unsigned int D.39472;
  sizetype D.39475;
  sizetype D.39476;
  sizetype D.39477;
  struct MonoInst * * D.39478;
  struct MonoInst * iftmp.287;
  int D.39481;
  unsigned int D.39482;
  sizetype D.39485;
  sizetype D.39486;
  struct MonoInst * * D.39487;
  _Bool D.39489;
  long int D.39490;
  long int D.39491;
  _Bool D.39494;
  long int D.39495;
  long int D.39496;
  unsigned char D.39499;
  unsigned char D.39500;
  unsigned char D.39501;
  unsigned char D.39502;
  struct MonoInst * * sp.288;
  struct MonoDebugOptions * D.39513;
  int D.39514;
  struct MonoDebugOptions * D.39522;
  int D.39523;
  void * klass.289;
  void * D.39530;
  struct MonoInst * D.39531;
  long int D.39532;
  struct MonoInst * D.39533;
  int D.39534;
  int D.39535;
  long int D.39536;
  long unsigned int D.39537;
  long unsigned int D.39538;
  struct MonoInst * * D.39539;
  struct MonoInst * D.39540;
  struct MonoType * D.39541;
  unsigned int D.39542;
  short unsigned int D.39543;
  struct MonoClass * D.39544;
  int D.39545;
  unsigned char D.39546;
  <unnamed type> D.39547;
  unsigned int D.39548;
  int D.39549;
  short unsigned int D.39550;
  struct MonoClass * D.39553;
  void * D.39554;
  unsigned int D.39555;
  int D.39556;
  void * D.39560;
  struct MonoInst * D.39561;
  long int D.39562;
  struct MonoInst * D.39563;
  guint16 iftmp.290;
  int D.39568;
  int D.39569;
  unsigned int D.39570;
  int D.39571;
  struct MonoInst * * sp.291;
  struct MonoInst * D.39576;
  int num_calls.292;
  int D.39578;
  struct MonoDebugOptions * D.39585;
  int D.39586;
  unsigned int D.39588;
  int D.39589;
  struct MonoInst * * sp.293;
  struct MonoDebugOptions * D.39600;
  int D.39601;
  struct MonoDebugOptions * D.39609;
  int D.39610;
  void * klass.294;
  _Bool D.39613;
  long int D.39614;
  long int D.39615;
  long int D.39618;
  struct MonoInst * D.39619;
  int D.39620;
  int D.39621;
  long int D.39622;
  long unsigned int D.39623;
  long unsigned int D.39624;
  struct MonoInst * * D.39625;
  struct MonoInst * D.39626;
  unsigned char D.39627;
  unsigned char D.39628;
  struct MonoClass * D.39629;
  unsigned int D.39630;
  int D.39631;
  struct MonoType * D.39634;
  int D.39635;
  struct MonoInst * iftmp.295;
  int D.39641;
  int D.39642;
  unsigned int D.39643;
  sizetype D.39646;
  sizetype D.39647;
  sizetype D.39648;
  struct MonoInst * * D.39649;
  struct MonoInst * iftmp.296;
  int D.39652;
  unsigned int D.39653;
  sizetype D.39656;
  sizetype D.39657;
  struct MonoInst * * D.39658;
  _Bool D.39660;
  long int D.39661;
  long int D.39662;
  _Bool D.39665;
  long int D.39666;
  long int D.39667;
  unsigned char D.39670;
  unsigned char D.39671;
  unsigned char D.39672;
  unsigned char D.39673;
  unsigned int D.39677;
  short unsigned int D.39678;
  unsigned char D.39679;
  <unnamed type> D.39680;
  unsigned int D.39681;
  int D.39682;
  short unsigned int D.39683;
  struct MonoClass * D.39686;
  struct MonoInst * * sp.297;
  _Bool D.39691;
  long int D.39692;
  long int D.39693;
  struct MonoMethodSignature * D.39696;
  unsigned char D.39697;
  unsigned char D.39698;
  _Bool D.39699;
  long int D.39700;
  long int D.39701;
  struct MonoDebugOptions * D.39710;
  int D.39711;
  struct MonoDebugOptions * D.39719;
  int D.39720;
  void * klass.298;
  unsigned char D.39725;
  _Bool D.39726;
  long int D.39727;
  long int D.39728;
  unsigned char D.39731;
  unsigned char D.39732;
  unsigned int D.39733;
  int D.39734;
  struct MonoType * D.39737;
  int D.39738;
  struct MonoInst * iftmp.299;
  int D.39744;
  unsigned int D.39745;
  sizetype D.39748;
  sizetype D.39749;
  sizetype D.39750;
  struct MonoInst * * D.39751;
  struct MonoInst * iftmp.300;
  int D.39754;
  unsigned int D.39755;
  sizetype D.39758;
  sizetype D.39759;
  struct MonoInst * * D.39760;
  _Bool D.39762;
  long int D.39763;
  long int D.39764;
  _Bool D.39767;
  long int D.39768;
  long int D.39769;
  unsigned char D.39772;
  unsigned char D.39773;
  unsigned char D.39774;
  unsigned char D.39775;
  unsigned int D.39780;
  int D.39781;
  struct MonoDebugOptions * D.39791;
  int D.39792;
  struct MonoDebugOptions * D.39803;
  int D.39804;
  struct MonoDebugOptions * D.39812;
  int D.39813;
  const guint32 * D.39815;
  unsigned int D.39816;
  unsigned int token.301;
  void * klass.302;
  struct MonoInst * * sp.303;
  struct MonoDebugOptions * D.39829;
  int D.39830;
  struct MonoDebugOptions * D.39838;
  int D.39839;
  guint16 iftmp.304;
  void * D.39845;
  unsigned int D.39846;
  int D.39847;
  struct MonoInst * * sp.305;
  int num_calls.306;
  int D.39853;
  struct MonoDebugOptions * D.39860;
  int D.39861;
  struct MonoDebugOptions * D.39869;
  int D.39870;
  _Bool D.39872;
  long int D.39873;
  long int D.39874;
  <unnamed type> key.307;
  unsigned int D.39884;
  int D.39885;
  struct MonoInst * * sp.308;
  struct MonoInst * D.39891;
  struct MonoInst * D.39894;
  unsigned char D.39895;
  unsigned char D.39896;
  int D.39897;
  int D.39898;
  unsigned int D.39902;
  int num_calls.309;
  int D.39904;
  struct MonoDebugOptions * D.39911;
  int D.39912;
  struct MonoInst * D.39914;
  unsigned int D.39915;
  int D.39916;
  long int D.39920;
  struct MonoInst * D.39921;
  int D.39922;
  int D.39923;
  struct MonoInst * D.39924;
  int D.39925;
  int D.39929;
  _Bool D.39932;
  _Bool D.39933;
  _Bool D.39934;
  unsigned int D.39937;
  unsigned int D.39938;
  int D.39939;
  long int D.39943;
  struct MonoInst * D.39944;
  int D.39945;
  int D.39946;
  int D.39947;
  long int D.39951;
  struct MonoInst * D.39952;
  int D.39953;
  int D.39954;
  unsigned int D.39957;
  unsigned int D.39958;
  int D.39959;
  unsigned char * D.39963;
  long int D.39966;
  long int D.39967;
  long unsigned int D.39968;
  long unsigned int D.39969;
  struct MonoBasicBlock * * D.39970;
  short unsigned int D.39975;
  short unsigned int D.39976;
  _Bool D.39977;
  short unsigned int D.39978;
  _Bool D.39979;
  _Bool D.39980;
  short unsigned int D.39986;
  _Bool D.39987;
  _Bool D.39988;
  _Bool D.39989;
  short unsigned int D.39991;
  short unsigned int D.39992;
  _Bool D.39993;
  short unsigned int D.39994;
  _Bool D.39995;
  _Bool D.39996;
  void * D.39999;
  struct MonoBasicBlock * * D.40000;
  struct MonoBasicBlock * * D.40001;
  unsigned int D.40007;
  unsigned int D.40008;
  int D.40009;
  short unsigned int D.40016;
  short unsigned int D.40017;
  _Bool D.40018;
  short unsigned int D.40019;
  _Bool D.40020;
  _Bool D.40021;
  short unsigned int D.40027;
  _Bool D.40028;
  _Bool D.40029;
  _Bool D.40030;
  short unsigned int D.40032;
  short unsigned int D.40033;
  _Bool D.40034;
  short unsigned int D.40035;
  _Bool D.40036;
  _Bool D.40037;
  long int D.40043;
  struct MonoInst * D.40044;
  int D.40045;
  int D.40046;
  int D.40047;
  long int D.40051;
  struct MonoInst * D.40052;
  int D.40053;
  int D.40054;
  unsigned int D.40057;
  unsigned int D.40058;
  int D.40059;
  unsigned char * D.40063;
  long int D.40066;
  long int D.40067;
  long unsigned int D.40068;
  long unsigned int D.40069;
  struct MonoBasicBlock * * D.40070;
  short unsigned int D.40075;
  short unsigned int D.40076;
  _Bool D.40077;
  short unsigned int D.40078;
  _Bool D.40079;
  _Bool D.40080;
  short unsigned int D.40086;
  _Bool D.40087;
  _Bool D.40088;
  _Bool D.40089;
  short unsigned int D.40091;
  short unsigned int D.40092;
  _Bool D.40093;
  short unsigned int D.40094;
  _Bool D.40095;
  _Bool D.40096;
  void * D.40099;
  struct MonoBasicBlock * * D.40100;
  struct MonoBasicBlock * * D.40101;
  unsigned int D.40107;
  unsigned int D.40108;
  int D.40109;
  short unsigned int D.40116;
  short unsigned int D.40117;
  _Bool D.40118;
  short unsigned int D.40119;
  _Bool D.40120;
  _Bool D.40121;
  short unsigned int D.40127;
  _Bool D.40128;
  _Bool D.40129;
  _Bool D.40130;
  short unsigned int D.40132;
  short unsigned int D.40133;
  _Bool D.40134;
  short unsigned int D.40135;
  _Bool D.40136;
  _Bool D.40137;
  void * D.40142;
  struct MonoInst * D.40143;
  long int D.40144;
  struct MonoInst * D.40145;
  int D.40146;
  int D.40147;
  unsigned int D.40148;
  int D.40149;
  void * D.40154;
  unsigned int D.40155;
  int D.40156;
  long int D.40160;
  struct MonoInst * D.40161;
  int D.40162;
  int D.40163;
  unsigned char * D.40169;
  long int D.40172;
  long int D.40173;
  long unsigned int D.40174;
  long unsigned int D.40175;
  struct MonoBasicBlock * * D.40176;
  short unsigned int D.40181;
  short unsigned int D.40182;
  _Bool D.40183;
  short unsigned int D.40184;
  _Bool D.40185;
  _Bool D.40186;
  short unsigned int D.40192;
  _Bool D.40193;
  _Bool D.40194;
  _Bool D.40195;
  short unsigned int D.40197;
  short unsigned int D.40198;
  _Bool D.40199;
  short unsigned int D.40200;
  _Bool D.40201;
  _Bool D.40202;
  unsigned int D.40204;
  void * D.40205;
  struct MonoInst * D.40206;
  long int D.40207;
  struct MonoInst * D.40208;
  int D.40209;
  int D.40210;
  struct MonoDebugOptions * D.40220;
  int D.40221;
  struct MonoDebugOptions * D.40229;
  int D.40230;
  struct MonoClass * D.40232;
  struct MonoType * D.40233;
  long int D.40234;
  struct MonoInst * D.40235;
  int D.40236;
  int D.40237;
  long int D.40238;
  long unsigned int D.40239;
  long unsigned int D.40240;
  struct MonoInst * * D.40241;
  struct MonoInst * D.40242;
  unsigned char D.40243;
  unsigned char D.40244;
  struct MonoClass * D.40245;
  unsigned int D.40246;
  int D.40247;
  struct MonoType * D.40250;
  int D.40251;
  struct MonoInst * iftmp.310;
  int D.40257;
  int D.40258;
  unsigned int D.40259;
  sizetype D.40262;
  sizetype D.40263;
  sizetype D.40264;
  struct MonoInst * * D.40265;
  struct MonoInst * iftmp.311;
  int D.40268;
  unsigned int D.40269;
  sizetype D.40272;
  sizetype D.40273;
  struct MonoInst * * D.40274;
  _Bool D.40276;
  long int D.40277;
  long int D.40278;
  _Bool D.40281;
  long int D.40282;
  long int D.40283;
  unsigned char D.40286;
  unsigned char D.40287;
  unsigned char D.40288;
  unsigned char D.40289;
  int D.40293;
  unsigned int D.40297;
  short unsigned int D.40298;
  unsigned int D.40299;
  int D.40300;
  struct MonoClass * D.40303;
  struct MonoInst * * sp.312;
  struct MonoDebugOptions * D.40314;
  int D.40315;
  long int D.40317;
  struct MonoInst * D.40318;
  short unsigned int D.40319;
  short unsigned int D.40320;
  int D.40321;
  int D.40322;
  short unsigned int D.40323;
  unsigned char D.40324;
  struct MonoDebugOptions * D.40331;
  int D.40332;
  unsigned char D.40338;
  _Bool D.40339;
  _Bool D.40340;
  _Bool D.40341;
  unsigned int D.40349;
  int D.40350;
  int D.40353;
  struct MonoInst * * sp.313;
  struct MonoDebugOptions * D.40364;
  int D.40365;
  struct MonoDebugOptions * D.40373;
  int D.40374;
  struct MonoLoaderError * D.40379;
  struct MonoDebugOptions * D.40380;
  int D.40381;
  int D.40387;
  gchar * D.40390;
  <unnamed type> D.40391;
  int D.40394;
  <unnamed type> D.40405;
  unsigned char * D.40410;
  int D.40413;
  const guint32 * D.40418;
  unsigned int D.40419;
  struct MonoClass * D.40422;
  struct MonoClass * D.40423;
  struct MonoMethodSignature * D.40429;
  struct MonoDebugOptions * D.40430;
  int D.40431;
  <unnamed type> D.40433;
  int D.40436;
  struct MonoMethodSignature * D.40439;
  short unsigned int D.40440;
  struct MonoMethodSignature * D.40441;
  short unsigned int D.40442;
  long int D.40445;
  struct MonoInst * D.40446;
  int D.40447;
  int D.40448;
  int D.40449;
  long int D.40453;
  struct MonoInst * D.40454;
  int D.40455;
  int D.40456;
  char * D.40464;
  struct MonoInst * D.40465;
  struct MonoInst * argconst.314;
  struct MonoInst * * sp.315;
  int num_calls.316;
  int D.40470;
  struct MonoDebugOptions * D.40477;
  int D.40478;
  struct MonoDebugOptions * D.40486;
  int D.40487;
  struct MonoLoaderError * D.40492;
  struct MonoDebugOptions * D.40493;
  int D.40494;
  <unnamed type> D.40496;
  int D.40499;
  <unnamed type> D.40510;
  struct MonoInst * D.40513;
  struct MonoInst * * sp.317;
  struct MonoInst * D.40517;
  struct MonoInst * * sp.318;
  struct MonoInst * D.40520;
  int num_calls.319;
  int D.40522;
  struct MonoDebugOptions * D.40529;
  int D.40530;
  unsigned char * D.40532;
  struct MonoDebugOptions * D.40539;
  int D.40540;
  const guint16 * D.40542;
  short unsigned int D.40543;
  struct MonoDebugOptions * D.40550;
  int D.40551;
  unsigned int D.40553;
  short unsigned int D.40554;
  unsigned int D.40555;
  int D.40556;
  struct MonoClass * D.40559;
  struct MonoInst * * sp.320;
  struct MonoDebugOptions * D.40570;
  int D.40571;
  struct MonoDebugOptions * D.40579;
  int D.40580;
  struct MonoDebugOptions * D.40588;
  int D.40589;
  unsigned int D.40591;
  int D.40592;
  int D.40595;
  struct MonoInst * iftmp.321;
  struct MonoInst * iftmp.322;
  _Bool D.40608;
  long int D.40609;
  long int D.40610;
  _Bool D.40613;
  long int D.40614;
  long int D.40615;
  unsigned char D.40618;
  unsigned char D.40619;
  unsigned char D.40620;
  unsigned char D.40621;
  struct MonoInst * * sp.323;
  struct MonoDebugOptions * D.40632;
  int D.40633;
  struct MonoDebugOptions * D.40641;
  int D.40642;
  struct MonoDebugOptions * D.40650;
  int D.40651;
  struct MonoType * * D.40655;
  struct MonoType * D.40656;
  int D.40657;
  struct MonoDebugOptions * D.40664;
  int D.40665;
  unsigned int D.40667;
  short unsigned int D.40668;
  struct MonoClass * D.40671;
  struct MonoDebugOptions * D.40681;
  int D.40682;
  struct MonoDebugOptions * D.40690;
  int D.40691;
  struct MonoDebugOptions * D.40699;
  int D.40700;
  unsigned int D.40702;
  short unsigned int D.40703;
  unsigned int D.40704;
  int D.40705;
  struct MonoClass * D.40708;
  struct MonoInst * * sp.324;
  struct MonoDebugOptions * D.40719;
  int D.40720;
  struct MonoDebugOptions * D.40728;
  int D.40729;
  struct MonoDebugOptions * D.40737;
  int D.40738;
  unsigned char D.40742;
  unsigned char D.40743;
  unsigned int D.40744;
  int D.40745;
  struct MonoType * D.40748;
  int D.40749;
  struct MonoInst * iftmp.325;
  int D.40755;
  unsigned int D.40756;
  sizetype D.40759;
  sizetype D.40760;
  sizetype D.40761;
  struct MonoInst * * D.40762;
  struct MonoInst * iftmp.326;
  int D.40765;
  unsigned int D.40766;
  sizetype D.40769;
  sizetype D.40770;
  struct MonoInst * * D.40771;
  _Bool D.40773;
  long int D.40774;
  long int D.40775;
  _Bool D.40778;
  long int D.40779;
  long int D.40780;
  unsigned char D.40783;
  unsigned char D.40784;
  unsigned char D.40785;
  unsigned char D.40786;
  struct MonoInst * * sp.327;
  struct MonoDebugOptions * D.40797;
  int D.40798;
  struct MonoDebugOptions * D.40806;
  int D.40807;
  struct MonoDebugOptions * D.40815;
  int D.40816;
  int D.40820;
  struct MonoDebugOptions * D.40827;
  int D.40828;
  struct MonoDebugOptions * D.40836;
  int D.40837;
  struct MonoDebugOptions * D.40845;
  int D.40846;
  unsigned int D.40849;
  int D.40850;
  unsigned char D.40856;
  struct MonoInst * * sp.328;
  struct MonoDebugOptions * D.40864;
  int D.40865;
  struct MonoDebugOptions * D.40874;
  int D.40875;
  long unsigned int D.40880;
  long unsigned int D.40881;
  unsigned int D.40884;
  unsigned int D.40885;
  unsigned int D.40888;
  long int D.40889;
  unsigned int D.40892;
  long int D.40893;
  unsigned int D.40897;
  _Bool D.40898;
  long int D.40899;
  long int D.40900;
  unsigned int D.40903;
  long int D.40904;
  struct MonoDebugOptions * D.40911;
  int D.40912;
  unsigned char * D.40914;
  struct MonoDebugOptions * D.40921;
  int D.40922;
  unsigned int D.40924;
  struct MonoDebugOptions * D.40931;
  int D.40932;
  struct MonoDebugOptions * D.40940;
  int D.40941;
  struct MonoClass * klass.329;
  struct MonoDebugOptions * D.40947;
  int D.40948;
  int D.40950;
  long int D.40953;
  struct MonoInst * D.40954;
  int D.40955;
  int D.40956;
  struct MonoDebugOptions * D.40967;
  int D.40968;
  struct MonoDebugOptions * D.40973;
  int D.40974;
  struct MonoDebugOptions * D.40982;
  int D.40983;
  struct MonoInst * * D.40989;
  struct MonoInst * D.40990;
  short unsigned int D.40991;
  long int D.40993;
  int D.40995;
  int D.41004;
  struct MonoInst * D.41005;
  struct MonoDebugOptions * D.41015;
  int D.41016;
  unsigned char D.41018;
  int D.41019;
  int D.41020;
  int D.41023;
  unsigned int D.41026;
  long int D.41027;
  unsigned int D.41030;
  unsigned int D.41031;
  long int D.41032;
  unsigned int D.41035;
  unsigned int D.41036;
  unsigned int D.41039;
  unsigned int D.41040;
  _Bool D.41041;
  long int D.41042;
  long int D.41043;
  long int D.41046;
  struct MonoInst * D.41047;
  int D.41048;
  int D.41049;
  struct MonoInst * D.41050;
  long int D.41051;
  long unsigned int D.41052;
  long unsigned int D.41053;
  struct MonoInst * * D.41054;
  struct MonoInst * D.41055;
  struct MonoType * D.41056;
  unsigned int D.41057;
  short unsigned int D.41058;
  struct MonoInst * D.41059;
  long int D.41060;
  long unsigned int D.41061;
  long unsigned int D.41062;
  struct MonoInst * * D.41063;
  struct MonoInst * D.41064;
  struct MonoType * D.41065;
  struct MonoInst * D.41066;
  long int D.41067;
  long unsigned int D.41068;
  long unsigned int D.41069;
  struct MonoInst * * D.41070;
  struct MonoInst * D.41071;
  struct MonoClass * D.41072;
  struct MonoInst * D.41073;
  long int D.41074;
  long unsigned int D.41075;
  long unsigned int D.41076;
  struct MonoInst * * D.41077;
  struct MonoInst * D.41078;
  int D.41079;
  unsigned char D.41080;
  <unnamed type> D.41081;
  unsigned int D.41082;
  int D.41083;
  short unsigned int D.41084;
  struct MonoInst * D.41087;
  long int D.41088;
  long unsigned int D.41089;
  long unsigned int D.41090;
  struct MonoInst * * D.41091;
  struct MonoInst * D.41092;
  struct MonoType * D.41093;
  struct MonoClass * D.41094;
  int D.41098;
  const char * D.41107;
  gchar * D.41108;
  struct MonoDebugOptions * D.41117;
  int D.41118;
  struct MonoDebugOptions * D.41126;
  int D.41127;
  unsigned int D.41131;
  unsigned char D.41133;
  unsigned char D.41134;
  int D.41137;
  unsigned char D.41141;
  struct MonoDebugOptions * D.41142;
  int D.41143;
  struct MonoType * D.41145;
  int D.41146;
  long int D.41147;
  unsigned int D.41148;
  int D.41149;
  struct MonoInst * * sp.330;
  const char * D.41156;
  gchar * D.41157;
  struct MonoDebugOptions * D.41166;
  int D.41167;
  struct MonoInst * iftmp.331;
  long int D.41175;
  struct MonoInst * D.41176;
  int D.41177;
  int D.41178;
  unsigned char D.41179;
  unsigned char D.41180;
  struct MonoClass * D.41181;
  unsigned int D.41182;
  int D.41183;
  struct MonoType * D.41186;
  int D.41187;
  struct MonoInst * iftmp.332;
  int D.41193;
  int D.41194;
  unsigned int D.41195;
  sizetype D.41198;
  sizetype D.41199;
  sizetype D.41200;
  struct MonoInst * * D.41201;
  struct MonoInst * iftmp.333;
  int D.41204;
  unsigned int D.41205;
  sizetype D.41208;
  sizetype D.41209;
  struct MonoInst * * D.41210;
  _Bool D.41212;
  long int D.41213;
  long int D.41214;
  _Bool D.41217;
  long int D.41218;
  long int D.41219;
  unsigned char D.41222;
  unsigned char D.41223;
  unsigned char D.41224;
  unsigned char D.41225;
  struct MonoType * D.41229;
  unsigned int D.41230;
  short unsigned int D.41231;
  int D.41232;
  unsigned int D.41233;
  int D.41234;
  struct MonoInst * * sp.334;
  struct MonoDebugOptions * D.41243;
  int D.41244;
  struct MonoDebugOptions * D.41250;
  int D.41251;
  struct MonoDebugOptions * D.41257;
  int D.41258;
  struct MonoDebugOptions * D.41264;
  int D.41265;
  struct MonoDebugOptions * D.41273;
  int D.41274;
  struct MonoBasicBlock * D.41276;
  struct MonoBasicBlock * D.41279;
  struct MonoInst * D.41283;
  long int D.41292;
  struct MonoInst * D.41293;
  int D.41294;
  int D.41295;
  long int D.41296;
  long unsigned int D.41297;
  long unsigned int D.41298;
  struct MonoInst * * D.41299;
  struct MonoInst * D.41300;
  struct MonoType * D.41301;
  unsigned int D.41302;
  short unsigned int D.41303;
  struct MonoClass * D.41304;
  int D.41305;
  int D.41306;
  short unsigned int D.41307;
  struct MonoClass * D.41310;
  struct MonoInst * D.41316;
  struct MonoType * D.41321;
  unsigned char D.41322;
  struct MonoInst * * D.41327;
  unsigned int D.41328;
  unsigned int D.41329;
  long int D.41332;
  struct MonoInst * D.41333;
  int D.41334;
  int D.41335;
  int D.41336;
  unsigned int D.41340;
  struct MonoInst * D.41347;
  short int D.41350;
  short unsigned int D.41353;
  unsigned char D.41356;
  unsigned char D.41357;
  struct MonoInst * D.41360;
  struct MonoBasicBlock * D.41364;
  struct MonoInst * D.41365;
  long unsigned int D.41371;
  long unsigned int D.41372;
  int D.41373;
  long unsigned int D.41374;
  long unsigned int D.41375;
  long unsigned int D.41378;
  long unsigned int D.41379;
  long unsigned int D.41380;
  long int D.41383;
  struct MonoInst * D.41384;
  int D.41385;
  int D.41386;
  long int D.41387;
  unsigned int i.335;
  unsigned int D.41391;
  int D.41392;
  int D.41393;
  unsigned int D.41394;
  struct GHashTable * D.41395;
  unsigned int D.41398;
  int D.41399;
  int D.41402;
  gchar * D.41405;
  struct GSList * D.41406;
  struct GSList * D.41407;
  int D.41408;
  struct GSList * D.41413;
  _Bool D.41414;
  long int D.41415;
  long int D.41416;
  struct GSList * D.41419;
  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.30609 = method->klass;
      D.30610 = D.30609->image;
      D.30611 = D.30610->assembly;
      D.30612 = D.30611->corlib_internal;
      D.30613 = D.30612 != 0;
      dont_verify = (gboolean) D.30613;
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      D.30616 = D.30615 == 40;
      D.30617 = (int) D.30616;
      dont_verify = D.30617 | dont_verify;
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      D.30618 = D.30615 == 44;
      D.30619 = (int) D.30618;
      dont_verify = D.30619 | dont_verify;
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      D.30620 = D.30615 == 24;
      D.30621 = (int) D.30620;
      dont_verify = D.30621 | dont_verify;
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      D.30622 = D.30615 == 108;
      D.30623 = (int) D.30622;
      dont_verify = D.30623 | dont_verify;
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      D.30624 = D.30615 == 104;
      D.30625 = (int) D.30624;
      dont_verify = D.30625 | dont_verify;
      D.30626 = mono_security_get_mode ();
      D.30627 = D.30626 == 3;
      D.30628 = (int) D.30627;
      dont_verify = D.30628 | dont_verify;
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      D.30620 = D.30615 == 24;
      dont_verify_stloc = (gboolean) D.30620;
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      D.30629 = D.30615 == 100;
      D.30630 = (int) D.30629;
      dont_verify_stloc = D.30630 | dont_verify_stloc;
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      D.30631 = D.30615 == 20;
      D.30632 = (int) D.30631;
      dont_verify_stloc = D.30632 | dont_verify_stloc;
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      D.30633 = D.30615 == 84;
      D.30634 = (int) D.30633;
      dont_verify_stloc = D.30634 | dont_verify_stloc;
      D.30609 = method->klass;
      image = D.30609->image;
      header = mono_method_get_header (method);
      if (header == 0B) goto <D.30635>; else goto <D.30636>;
      <D.30635>:
      {
        struct MonoLoaderError * error;

        error = mono_loader_get_last_error ();
        if (error != 0B) goto <D.30637>; else goto <D.30638>;
        <D.30637>:
        D.30639 = error->exception_type;
        D.30640 = (int) D.30639;
        mono_cfg_set_exception (cfg, D.30640);
        goto <D.30641>;
        <D.30638>:
        mono_cfg_set_exception (cfg, 3);
        D.30642 = cfg->method;
        D.30643 = D.30642->name;
        D.30644 = monoeg_g_strdup_printf ("Missing or incorrect header for method %s", D.30643);
        cfg->exception_message = D.30644;
        <D.30641>:
        goto exception_exit;
      }
      <D.30636>:
      generic_container = mono_method_get_generic_container (method);
      sig = mono_method_signature (method);
      D.30645 = sig->hasthis;
      D.30646 = (int) D.30645;
      D.30647 = sig->param_count;
      D.30648 = (int) D.30647;
      D.30649 = D.30646 + D.30648;
      num_args = (guint) D.30649;
      ip = header->code;
      cfg->cil_start = ip;
      D.30650 = header->code_size;
      D.30651 = (sizetype) D.30650;
      end = ip + D.30651;
      D.30652 = cfg->stat_cil_code_size;
      D.30653 = (unsigned int) D.30652;
      D.30650 = header->code_size;
      D.30654 = D.30653 + D.30650;
      D.30655 = (int) D.30654;
      cfg->stat_cil_code_size = D.30655;
      D.30656 = header->init_locals;
      init_locals = (gboolean) D.30656;
      D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.30661 = D.30660 & 32;
      if (D.30661 != 0) goto <D.30662>; else goto <D.30658>;
      <D.30662>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.30663>; else goto <D.30658>;
      <D.30663>:
      iftmp.64 = 1;
      goto <D.30659>;
      <D.30658>:
      iftmp.64 = 0;
      <D.30659>:
      seq_points = iftmp.64;
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      if (D.30615 == 20) goto <D.30664>; else goto <D.30665>;
      <D.30664>:
      seq_points = 0;
      <D.30665>:
      D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.30661 = D.30660 & 32;
      if (D.30661 != 0) goto <D.30666>; else goto <D.30667>;
      <D.30666>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.30668>; else goto <D.30669>;
      <D.30668>:
      minfo = mono_debug_lookup_method (method);
      if (minfo != 0B) goto <D.30670>; else goto <D.30671>;
      <D.30670>:
      {
        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.30650 = header->code_size;
            D.30650 = header->code_size;
            D.30672 = mono_bitset_alloc_size (D.30650, 0);
            D.30673 = cfg->mempool;
            D.30674 = mono_mempool_alloc0 (D.30673, D.30672);
            seq_point_locs = mono_bitset_mem_new (D.30674, D.30650, 0);
            D.30650 = header->code_size;
            D.30650 = header->code_size;
            D.30675 = mono_bitset_alloc_size (D.30650, 0);
            D.30673 = cfg->mempool;
            D.30676 = mono_mempool_alloc0 (D.30673, D.30675);
            seq_point_set_locs = mono_bitset_mem_new (D.30676, D.30650, 0);
            sym_seq_points = 1;
            i = 0;
            goto <D.27619>;
            <D.27618>:
            il_offsets.65 = il_offsets;
            D.30678 = (long unsigned int) i;
            D.30679 = D.30678 * 4;
            D.30680 = il_offsets.65 + D.30679;
            D.30681 = *D.30680;
            D.30682 = (unsigned int) D.30681;
            D.30650 = header->code_size;
            if (D.30682 < D.30650) goto <D.30683>; else goto <D.30684>;
            <D.30683>:
            il_offsets.65 = il_offsets;
            D.30678 = (long unsigned int) i;
            D.30679 = D.30678 * 4;
            D.30680 = il_offsets.65 + D.30679;
            D.30681 = *D.30680;
            D.30685 = (long unsigned int) D.30681;
            D.30686 = D.30685 / 64;
            D.30687 = seq_point_locs->data[D.30686];
            il_offsets.65 = il_offsets;
            D.30678 = (long unsigned int) i;
            D.30679 = D.30678 * 4;
            D.30680 = il_offsets.65 + D.30679;
            D.30681 = *D.30680;
            D.30688 = D.30681 & 63;
            D.30689 = 1 << D.30688;
            D.30690 = D.30687 | D.30689;
            seq_point_locs->data[D.30686] = D.30690;
            <D.30684>:
            i = i + 1;
            <D.27619>:
            n_il_offsets.66 = n_il_offsets;
            if (i < n_il_offsets.66) goto <D.27618>; else goto <D.27620>;
            <D.27620>:
            il_offsets.65 = il_offsets;
            monoeg_g_free (il_offsets.65);
            line_numbers.67 = line_numbers;
            monoeg_g_free (line_numbers.67);
          }
        finally
          {
            n_il_offsets = {CLOBBER};
            il_offsets = {CLOBBER};
            line_numbers = {CLOBBER};
          }
      }
      <D.30671>:
      <D.30669>:
      <D.30667>:
      init_locals = 1;
      method_definition = method;
      goto <D.27623>;
      <D.27622>:
      {
        struct MonoMethodInflated * imethod;

        imethod = method_definition;
        method_definition = imethod->declaring;
      }
      <D.27623>:
      D.30693 = BIT_FIELD_REF <*method_definition, 8, 264>;
      D.30694 = D.30693 & 16;
      if (D.30694 != 0) goto <D.27622>; else goto <D.27624>;
      <D.27624>:
      if (dont_verify == 0) goto <D.30695>; else goto <D.30696>;
      <D.30695>:
      D.30697 = cfg->domain;
      D.30698 = mini_assembly_can_skip_verification (D.30697, method);
      if (D.30698 != 0) goto <D.30699>; else goto <D.30700>;
      <D.30699>:
      dont_verify = 1;
      dont_verify_stloc = 1;
      <D.30700>:
      <D.30696>:
      D.30701 = BIT_FIELD_REF <*sig, 8, 120>;
      D.30702 = D.30701 & 2;
      if (D.30702 != 0) goto <D.30703>; else goto <D.30704>;
      <D.30703>:
      generic_context = mono_method_get_context (method);
      goto <D.30705>;
      <D.30704>:
      if (generic_container != 0B) goto <D.30706>; else goto <D.30707>;
      <D.30706>:
      generic_context = &generic_container->context;
      <D.30707>:
      <D.30705>:
      cfg->generic_context = generic_context;
      D.30708 = cfg->generic_sharing_context;
      if (D.30708 == 0B) goto <D.30709>; else goto <D.30710>;
      <D.30709>:
      D.30701 = BIT_FIELD_REF <*sig, 8, 120>;
      D.30711 = D.30701 & 4;
      D.30712 = D.30711 != 0;
      D.30713 = (long int) D.30712;
      D.30714 = __builtin_expect (D.30713, 0);
      if (D.30714 != 0) goto <D.30715>; else goto <D.30716>;
      <D.30715>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6727, "!sig->has_type_parameters");
      <D.30716>:
      <D.30710>:
      D.30717 = sig->generic_param_count;
      if (D.30717 != 0) goto <D.30718>; else goto <D.30719>;
      <D.30718>:
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      if (D.30615 == 0) goto <D.30720>; else goto <D.30721>;
      <D.30720>:
      D.30722 = BIT_FIELD_REF <*method, 8, 264>;
      D.30723 = D.30722 & 16;
      D.30724 = D.30723 == 0;
      D.30725 = (long int) D.30724;
      D.30726 = __builtin_expect (D.30725, 0);
      if (D.30726 != 0) goto <D.30727>; else goto <D.30728>;
      <D.30727>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6730, "method->is_inflated");
      <D.30728>:
      D.30729 = mono_method_get_context (method);
      D.30730 = D.30729->method_inst;
      D.30731 = D.30730 == 0B;
      D.30732 = (long int) D.30731;
      D.30733 = __builtin_expect (D.30732, 0);
      if (D.30733 != 0) goto <D.30734>; else goto <D.30735>;
      <D.30734>:
      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.30735>:
      <D.30721>:
      <D.30719>:
      D.30722 = BIT_FIELD_REF <*method, 8, 264>;
      D.30723 = D.30722 & 16;
      if (D.30723 != 0) goto <D.30736>; else goto <D.30737>;
      <D.30736>:
      D.30738 = mono_method_get_context (method);
      D.30739 = D.30738->method_inst;
      if (D.30739 != 0B) goto <D.30740>; else goto <D.30741>;
      <D.30740>:
      D.30717 = sig->generic_param_count;
      D.30742 = D.30717 == 0;
      D.30743 = (long int) D.30742;
      D.30744 = __builtin_expect (D.30743, 0);
      if (D.30744 != 0) goto <D.30745>; else goto <D.30746>;
      <D.30745>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6734, "sig->generic_param_count");
      <D.30746>:
      <D.30741>:
      <D.30737>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.30747>; else goto <D.30748>;
      <D.30747>:
      cfg->real_offset = 0;
      goto <D.30749>;
      <D.30748>:
      cfg->real_offset = inline_offset;
      <D.30749>:
      D.30650 = header->code_size;
      D.30750 = D.30650 * 8;
      D.30673 = cfg->mempool;
      D.30751 = mono_mempool_alloc0 (D.30673, D.30750);
      cfg->cil_offset_to_bb = D.30751;
      D.30650 = header->code_size;
      D.30752 = (int) D.30650;
      cfg->cil_offset_to_bb_len = D.30752;
      cfg->current_method = method;
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.30754>; else goto <D.30755>;
      <D.30754>:
      D.30756 = mono_method_full_name (method, 1);
      printf ("method to IR %s\n", D.30756);
      <D.30755>:
      D.30757 = num_args * 8;
      D.30673 = cfg->mempool;
      param_types = mono_mempool_alloc (D.30673, D.30757);
      D.30758 = BIT_FIELD_REF <*sig, 8, 112>;
      D.30759 = D.30758 & 64;
      if (D.30759 != 0) goto <D.30760>; else goto <D.30761>;
      <D.30760>:
      D.30609 = method->klass;
      D.30763 = BIT_FIELD_REF <*D.30609, 8, 256>;
      D.30764 = D.30763 & 8;
      if (D.30764 != 0) goto <D.30765>; else goto <D.30766>;
      <D.30765>:
      D.30609 = method->klass;
      iftmp.68 = &D.30609->this_arg;
      goto <D.30767>;
      <D.30766>:
      D.30609 = method->klass;
      iftmp.68 = &D.30609->byval_arg;
      <D.30767>:
      *param_types = iftmp.68;
      <D.30761>:
      n = 0;
      goto <D.27626>;
      <D.27625>:
      D.30645 = sig->hasthis;
      D.30646 = (int) D.30645;
      D.30768 = D.30646 + n;
      D.30769 = (long unsigned int) D.30768;
      D.30770 = D.30769 * 8;
      D.30771 = param_types + D.30770;
      D.30772 = sig->params[n];
      *D.30771 = D.30772;
      n = n + 1;
      <D.27626>:
      D.30647 = sig->param_count;
      D.30648 = (int) D.30647;
      if (D.30648 > n) goto <D.27625>; else goto <D.27627>;
      <D.27627>:
      cfg->arg_types = param_types;
      dont_inline = monoeg_g_list_prepend (dont_inline, method);
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.30773>; else goto <D.30774>;
      <D.30773>:
      D.30775 = cfg->prof_options;
      D.30776 = D.30775 & 16384;
      if (D.30776 != 0) goto <D.30777>; else goto <D.30778>;
      <D.30777>:
      D.30650 = header->code_size;
      D.30779 = (int) D.30650;
      D.30642 = cfg->method;
      D.30780 = mono_profiler_coverage_alloc (D.30642, D.30779);
      cfg->coverage_info = D.30780;
      <D.30778>:
      D.30673 = cfg->mempool;
      start_bblock = mono_mempool_alloc0 (D.30673, 296);
      D.30781 = cfg->num_bblocks;
      D.30782 = D.30781;
      D.30783 = D.30782 + 1;
      cfg->num_bblocks = D.30783;
      D.30784 = (int) D.30782;
      start_bblock->block_num = D.30784;
      cfg->bb_entry = start_bblock;
      start_bblock->cil_code = 0B;
      start_bblock->cil_length = 0;
      D.30673 = cfg->mempool;
      end_bblock = mono_mempool_alloc0 (D.30673, 296);
      D.30781 = cfg->num_bblocks;
      D.30785 = D.30781;
      D.30786 = D.30785 + 1;
      cfg->num_bblocks = D.30786;
      D.30787 = (int) D.30785;
      end_bblock->block_num = D.30787;
      cfg->bb_exit = end_bblock;
      end_bblock->cil_code = 0B;
      end_bblock->cil_length = 0;
      D.30788 = end_bblock->flags;
      D.30789 = D.30788 | 32;
      end_bblock->flags = D.30789;
      D.30781 = cfg->num_bblocks;
      D.30790 = D.30781 != 2;
      D.30791 = (long int) D.30790;
      D.30792 = __builtin_expect (D.30791, 0);
      if (D.30792 != 0) goto <D.30793>; else goto <D.30794>;
      <D.30793>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6780, "cfg->num_bblocks == 2");
      <D.30794>:
      arg_array = cfg->args;
      D.30795 = BIT_FIELD_REF <*header, 16, 112>;
      D.30796 = D.30795 & 32767;
      if (D.30796 != 0) goto <D.30797>; else goto <D.30798>;
      <D.30797>:
      D.30799 = monoeg_g_hash_table_new (0B, 0B);
      cfg->spvars = D.30799;
      D.30800 = monoeg_g_hash_table_new (0B, 0B);
      cfg->exvars = D.30800;
      <D.30798>:
      i = 0;
      goto <D.27634>;
      <D.27633>:
      {
        struct MonoBasicBlock * try_bb;
        struct MonoExceptionClause * clause;

        D.30801 = header->clauses;
        D.30802 = (long unsigned int) i;
        D.30803 = D.30802 * 32;
        clause = D.30801 + D.30803;
        D.30804 = cfg->cil_offset_to_bb;
        D.30805 = clause->try_offset;
        D.30806 = (sizetype) D.30805;
        D.30807 = ip + D.30806;
        D.30808 = (long int) D.30807;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30811 = D.30808 - D.30810;
        D.30812 = (long unsigned int) D.30811;
        D.30813 = D.30812 * 8;
        D.30814 = D.30804 + D.30813;
        try_bb = *D.30814;
        if (try_bb == 0B) goto <D.30815>; else goto <D.30816>;
        <D.30815>:
        D.30805 = clause->try_offset;
        D.30806 = (sizetype) D.30805;
        D.30807 = ip + D.30806;
        if (D.30807 >= end) goto <D.30817>; else goto <D.30819>;
        <D.30819>:
        D.30805 = clause->try_offset;
        D.30806 = (sizetype) D.30805;
        D.30820 = ip + D.30806;
        D.30821 = header->code;
        if (D.30820 < D.30821) goto <D.30817>; else goto <D.30818>;
        <D.30817>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.30823>; else goto <D.30824>;
        <D.30823>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.30825>; else goto <D.30826>;
        <D.30825>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.30826>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.30824>:
        D.30827 = mini_get_debug_options ();
        D.30828 = D.30827->break_on_unverified;
        if (D.30828 != 0) goto <D.30829>; else goto unverified;
        <D.30829>:
        __asm__ __volatile__("int $03");
        <D.30818>:
        D.30673 = cfg->mempool;
        try_bb = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.30830 = D.30781;
        D.30831 = D.30830 + 1;
        cfg->num_bblocks = D.30831;
        D.30832 = (int) D.30830;
        try_bb->block_num = D.30832;
        D.30805 = clause->try_offset;
        D.30806 = (sizetype) D.30805;
        D.30807 = ip + D.30806;
        try_bb->cil_code = D.30807;
        D.30833 = try_bb->cil_code;
        if (D.30833 != 0B) goto <D.30834>; else goto <D.30835>;
        <D.30834>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30833 = try_bb->cil_code;
        D.30836 = (long int) D.30833;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30837 = D.30836 - D.30810;
        D.30838 = (long unsigned int) D.30837;
        D.30839 = D.30838 * 8;
        D.30840 = D.30804 + D.30839;
        *D.30840 = try_bb;
        <D.30835>:
        D.30841 = cfg->real_offset;
        try_bb->real_offset = D.30841;
        <D.30816>:
        D.30805 = clause->try_offset;
        try_bb->real_offset = D.30805;
        try_bb->try_start = 1;
        D.30842 = i + 1;
        D.30843 = D.30842 << 8;
        D.30844 = (unsigned int) D.30843;
        D.30845 = clause->flags;
        D.30846 = D.30844 | D.30845;
        try_bb->region = D.30846;
        D.30804 = cfg->cil_offset_to_bb;
        D.30847 = clause->handler_offset;
        D.30848 = (sizetype) D.30847;
        D.30849 = ip + D.30848;
        D.30850 = (long int) D.30849;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30851 = D.30850 - D.30810;
        D.30852 = (long unsigned int) D.30851;
        D.30853 = D.30852 * 8;
        D.30854 = D.30804 + D.30853;
        tblock = *D.30854;
        if (tblock == 0B) goto <D.30855>; else goto <D.30856>;
        <D.30855>:
        D.30847 = clause->handler_offset;
        D.30848 = (sizetype) D.30847;
        D.30849 = ip + D.30848;
        if (D.30849 >= end) goto <D.30857>; else goto <D.30859>;
        <D.30859>:
        D.30847 = clause->handler_offset;
        D.30848 = (sizetype) D.30847;
        D.30860 = ip + D.30848;
        D.30821 = header->code;
        if (D.30860 < D.30821) goto <D.30857>; else goto <D.30858>;
        <D.30857>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.30861>; else goto <D.30862>;
        <D.30861>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.30863>; else goto <D.30864>;
        <D.30863>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.30864>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.30862>:
        D.30865 = mini_get_debug_options ();
        D.30866 = D.30865->break_on_unverified;
        if (D.30866 != 0) goto <D.30867>; else goto unverified;
        <D.30867>:
        __asm__ __volatile__("int $03");
        <D.30858>:
        D.30673 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.30868 = D.30781;
        D.30869 = D.30868 + 1;
        cfg->num_bblocks = D.30869;
        D.30870 = (int) D.30868;
        tblock->block_num = D.30870;
        D.30847 = clause->handler_offset;
        D.30848 = (sizetype) D.30847;
        D.30849 = ip + D.30848;
        tblock->cil_code = D.30849;
        D.30871 = tblock->cil_code;
        if (D.30871 != 0B) goto <D.30872>; else goto <D.30873>;
        <D.30872>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30871 = tblock->cil_code;
        D.30874 = (long int) D.30871;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30875 = D.30874 - D.30810;
        D.30876 = (long unsigned int) D.30875;
        D.30877 = D.30876 * 8;
        D.30878 = D.30804 + D.30877;
        *D.30878 = tblock;
        <D.30873>:
        D.30841 = cfg->real_offset;
        tblock->real_offset = D.30841;
        <D.30856>:
        D.30847 = clause->handler_offset;
        tblock->real_offset = D.30847;
        D.30879 = tblock->flags;
        D.30880 = D.30879 | 16;
        tblock->flags = D.30880;
        if (0 != 0) goto <D.30881>; else goto <D.30882>;
        <D.30881>:
        link_bblock (cfg, try_bb, tblock);
        <D.30882>:
        D.30847 = clause->handler_offset;
        D.30848 = (sizetype) D.30847;
        D.30849 = ip + D.30848;
        D.30883 = *D.30849;
        if (D.30883 == 38) goto <D.30884>; else goto <D.30885>;
        <D.30884>:
        D.30879 = tblock->flags;
        D.30886 = D.30879 | 4;
        tblock->flags = D.30886;
        <D.30885>:
        D.30887 = clause->flags;
        D.30888 = D.30887 + 4294967295;
        D.30889 = D.30888 <= 1;
        D.30890 = D.30887 == 4;
        D.30891 = D.30889 | D.30890;
        if (D.30891 != 0) goto <D.30892>; else goto <D.30893>;
        <D.30892>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 740;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.30899 = tblock->last_ins;
        if (D.30899 != 0B) goto <D.30900>; else goto <D.30901>;
        <D.30900>:
        D.30899 = tblock->last_ins;
        D.30899->next = ins;
        D.30899 = tblock->last_ins;
        ins->prev = D.30899;
        tblock->last_ins = ins;
        goto <D.30902>;
        <D.30901>:
        tblock->last_ins = ins;
        D.30899 = tblock->last_ins;
        tblock->code = D.30899;
        <D.30902>:
        if (seq_points != 0) goto <D.30903>; else goto <D.30904>;
        <D.30903>:
        D.30845 = clause->flags;
        if (D.30845 != 2) goto <D.30905>; else goto <D.30906>;
        <D.30905>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.30847 = clause->handler_offset;
        D.30907 = (long int) D.30847;
        ins->data.op[1].const_val = D.30907;
        ins->flags = 1;
        D.30899 = tblock->last_ins;
        if (D.30899 != 0B) goto <D.30908>; else goto <D.30909>;
        <D.30908>:
        D.30899 = tblock->last_ins;
        D.30899->next = ins;
        D.30899 = tblock->last_ins;
        ins->prev = D.30899;
        tblock->last_ins = ins;
        goto <D.30910>;
        <D.30909>:
        tblock->last_ins = ins;
        D.30899 = tblock->last_ins;
        tblock->code = D.30899;
        <D.30910>:
        <D.30906>:
        <D.30904>:
        D.30845 = clause->flags;
        if (D.30845 == 4) goto <D.30911>; else goto <D.30912>;
        <D.30911>:
        D.30879 = tblock->flags;
        D.30913 = D.30879 | 8;
        tblock->flags = D.30913;
        <D.30912>:
        <D.30893>:
        D.30845 = clause->flags;
        if (D.30845 <= 1) goto <D.30914>; else goto <D.30915>;
        <D.30914>:
        {
          struct MonoInst * dummy_use;

          tblock->in_scount = 1;
          D.30673 = cfg->mempool;
          D.30916 = mono_mempool_alloc (D.30673, 8);
          tblock->in_stack = D.30916;
          D.30917 = tblock->in_stack;
          D.30847 = clause->handler_offset;
          D.30918 = (int) D.30847;
          D.30919 = mono_create_exvar_for_offset (cfg, D.30918);
          *D.30917 = D.30919;
          cfg->cbb = tblock;
          D.30673 = cfg->mempool;
          dummy_use = mono_mempool_alloc (D.30673, 80);
          dummy_use->data.op[1].const_val = 0;
          D.30920 = dummy_use->data.op[1].const_val;
          dummy_use->data.op[0].const_val = D.30920;
          dummy_use->prev = 0B;
          D.30921 = dummy_use->prev;
          dummy_use->next = D.30921;
          dummy_use->opcode = 800;
          dummy_use->flags = 0;
          dummy_use->type = 0;
          dummy_use->dreg = -1;
          dummy_use->sreg3 = -1;
          D.30922 = dummy_use->sreg3;
          dummy_use->sreg2 = D.30922;
          D.30923 = dummy_use->sreg2;
          dummy_use->sreg1 = D.30923;
          D.30898 = cfg->ip;
          dummy_use->cil_code = D.30898;
          D.30917 = tblock->in_stack;
          D.30924 = *D.30917;
          D.30925 = D.30924->dreg;
          dummy_use->sreg1 = D.30925;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.30928>; else goto <D.30929>;
          <D.30928>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = dummy_use;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          dummy_use->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = dummy_use;
          goto <D.30930>;
          <D.30929>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = dummy_use;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.30930>:
          D.30845 = clause->flags;
          if (D.30845 == 1) goto <D.30931>; else goto <D.30932>;
          <D.30931>:
          D.30804 = cfg->cil_offset_to_bb;
          D.30933 = clause->data.filter_offset;
          D.30934 = (sizetype) D.30933;
          D.30935 = ip + D.30934;
          D.30936 = (long int) D.30935;
          D.30809 = cfg->cil_start;
          D.30810 = (long int) D.30809;
          D.30937 = D.30936 - D.30810;
          D.30938 = (long unsigned int) D.30937;
          D.30939 = D.30938 * 8;
          D.30940 = D.30804 + D.30939;
          tblock = *D.30940;
          if (tblock == 0B) goto <D.30941>; else goto <D.30942>;
          <D.30941>:
          D.30933 = clause->data.filter_offset;
          D.30934 = (sizetype) D.30933;
          D.30935 = ip + D.30934;
          if (D.30935 >= end) goto <D.30943>; else goto <D.30945>;
          <D.30945>:
          D.30933 = clause->data.filter_offset;
          D.30934 = (sizetype) D.30933;
          D.30946 = ip + D.30934;
          D.30821 = header->code;
          if (D.30946 < D.30821) goto <D.30943>; else goto <D.30944>;
          <D.30943>:
          D.30822 = cfg->gsharedvt;
          if (D.30822 != 0) goto <D.30947>; else goto <D.30948>;
          <D.30947>:
          D.30753 = cfg->verbose_level;
          if (D.30753 > 2) goto <D.30949>; else goto <D.30950>;
          <D.30949>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.30950>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.30948>:
          D.30951 = mini_get_debug_options ();
          D.30952 = D.30951->break_on_unverified;
          if (D.30952 != 0) goto <D.30953>; else goto unverified;
          <D.30953>:
          __asm__ __volatile__("int $03");
          <D.30944>:
          D.30673 = cfg->mempool;
          tblock = mono_mempool_alloc0 (D.30673, 296);
          D.30781 = cfg->num_bblocks;
          D.30954 = D.30781;
          D.30955 = D.30954 + 1;
          cfg->num_bblocks = D.30955;
          D.30956 = (int) D.30954;
          tblock->block_num = D.30956;
          D.30933 = clause->data.filter_offset;
          D.30934 = (sizetype) D.30933;
          D.30935 = ip + D.30934;
          tblock->cil_code = D.30935;
          D.30871 = tblock->cil_code;
          if (D.30871 != 0B) goto <D.30957>; else goto <D.30958>;
          <D.30957>:
          D.30804 = cfg->cil_offset_to_bb;
          D.30871 = tblock->cil_code;
          D.30874 = (long int) D.30871;
          D.30809 = cfg->cil_start;
          D.30810 = (long int) D.30809;
          D.30875 = D.30874 - D.30810;
          D.30876 = (long unsigned int) D.30875;
          D.30877 = D.30876 * 8;
          D.30878 = D.30804 + D.30877;
          *D.30878 = tblock;
          <D.30958>:
          D.30841 = cfg->real_offset;
          tblock->real_offset = D.30841;
          <D.30942>:
          D.30879 = tblock->flags;
          D.30880 = D.30879 | 16;
          tblock->flags = D.30880;
          D.30933 = clause->data.filter_offset;
          tblock->real_offset = D.30933;
          tblock->in_scount = 1;
          D.30673 = cfg->mempool;
          D.30959 = mono_mempool_alloc (D.30673, 8);
          tblock->in_stack = D.30959;
          D.30917 = tblock->in_stack;
          D.30847 = clause->handler_offset;
          D.30918 = (int) D.30847;
          D.30960 = mono_create_exvar_for_offset (cfg, D.30918);
          *D.30917 = D.30960;
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          ins->opcode = 740;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          D.30899 = tblock->last_ins;
          if (D.30899 != 0B) goto <D.30961>; else goto <D.30962>;
          <D.30961>:
          D.30899 = tblock->last_ins;
          D.30899->next = ins;
          D.30899 = tblock->last_ins;
          ins->prev = D.30899;
          tblock->last_ins = ins;
          goto <D.30963>;
          <D.30962>:
          tblock->last_ins = ins;
          D.30899 = tblock->last_ins;
          tblock->code = D.30899;
          <D.30963>:
          <D.30932>:
        }
        <D.30915>:
        D.30845 = clause->flags;
        if (D.30845 != 1) goto <D.30964>; else goto <D.30965>;
        <D.30964>:
        D.30966 = clause->data.catch_class;
        if (D.30966 != 0B) goto <D.30967>; else goto <D.30968>;
        <D.30967>:
        D.30708 = cfg->generic_sharing_context;
        if (D.30708 != 0B) goto <D.30969>; else goto <D.30970>;
        <D.30969>:
        D.30966 = clause->data.catch_class;
        D.30971 = mono_class_check_context_used (D.30966);
        if (D.30971 != 0) goto <D.30972>; else goto <D.30973>;
        <D.30972>:
        D.30977 = method->flags;
        D.30978 = (int) D.30977;
        D.30979 = D.30978 & 16;
        if (D.30979 != 0) goto <D.30974>; else goto <D.30980>;
        <D.30980>:
        D.30981 = mini_method_get_context (method);
        D.30982 = D.30981->method_inst;
        if (D.30982 != 0B) goto <D.30974>; else goto <D.30983>;
        <D.30983>:
        D.30609 = method->klass;
        D.30763 = BIT_FIELD_REF <*D.30609, 8, 256>;
        D.30764 = D.30763 & 8;
        if (D.30764 != 0) goto <D.30974>; else goto <D.30975>;
        <D.30974>:
        mono_get_vtable_var (cfg);
        goto <D.30976>;
        <D.30975>:
        {
          struct MonoInst * dummy_use;

          D.30673 = cfg->mempool;
          dummy_use = mono_mempool_alloc (D.30673, 80);
          dummy_use->data.op[1].const_val = 0;
          D.30984 = dummy_use->data.op[1].const_val;
          dummy_use->data.op[0].const_val = D.30984;
          dummy_use->prev = 0B;
          D.30985 = dummy_use->prev;
          dummy_use->next = D.30985;
          dummy_use->opcode = 800;
          dummy_use->flags = 0;
          dummy_use->type = 0;
          dummy_use->dreg = -1;
          dummy_use->sreg3 = -1;
          D.30986 = dummy_use->sreg3;
          dummy_use->sreg2 = D.30986;
          D.30987 = dummy_use->sreg2;
          dummy_use->sreg1 = D.30987;
          D.30898 = cfg->ip;
          dummy_use->cil_code = D.30898;
          D.30988 = *arg_array;
          D.30989 = D.30988->dreg;
          dummy_use->sreg1 = D.30989;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.30990>; else goto <D.30991>;
          <D.30990>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = dummy_use;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          dummy_use->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = dummy_use;
          goto <D.30992>;
          <D.30991>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = dummy_use;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.30992>:
        }
        <D.30976>:
        <D.30973>:
        <D.30970>:
        <D.30968>:
        <D.30965>:
      }
      i = i + 1;
      <D.27634>:
      D.30993 = header->num_clauses;
      D.30994 = (int) D.30993;
      if (D.30994 > i) goto <D.27633>; else goto <D.27635>;
      <D.27635>:
      goto <D.30995>;
      <D.30774>:
      D.30996 = (long unsigned int) num_args;
      D.30997 = D.30996 * 8;
      arg_array = __builtin_alloca (D.30997);
      cfg->cbb = start_bblock;
      cfg->args = arg_array;
      mono_save_args (cfg, sig, inline_args);
      <D.30995>:
      D.30673 = cfg->mempool;
      bblock.69 = mono_mempool_alloc0 (D.30673, 296);
      bblock = bblock.69;
      bblock.70 = bblock;
      D.30781 = cfg->num_bblocks;
      D.31000 = D.30781;
      D.31001 = D.31000 + 1;
      cfg->num_bblocks = D.31001;
      D.31002 = (int) D.31000;
      bblock.70->block_num = D.31002;
      bblock.70 = bblock;
      bblock.70->cil_code = ip;
      bblock.70 = bblock;
      cfg->cbb = bblock.70;
      cfg->ip = ip;
      bblock.70 = bblock;
      D.31003 = bblock.70->cil_code;
      if (D.31003 != 0B) goto <D.31004>; else goto <D.31005>;
      <D.31004>:
      D.30804 = cfg->cil_offset_to_bb;
      bblock.70 = bblock;
      D.31003 = bblock.70->cil_code;
      D.31006 = (long int) D.31003;
      D.30809 = cfg->cil_start;
      D.30810 = (long int) D.30809;
      D.31007 = D.31006 - D.30810;
      D.31008 = (long unsigned int) D.31007;
      D.31009 = D.31008 * 8;
      D.31010 = D.30804 + D.31009;
      bblock.70 = bblock;
      *D.31010 = bblock.70;
      <D.31005>:
      bblock.70 = bblock;
      D.30841 = cfg->real_offset;
      bblock.70->real_offset = D.30841;
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.31011>; else goto <D.31012>;
      <D.31011>:
      breakpoint_id = mono_debugger_method_has_breakpoint (method);
      if (breakpoint_id != 0) goto <D.31013>; else goto <D.31014>;
      <D.31013>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 449;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.31016>; else goto <D.31017>;
      <D.31016>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.31018>;
      <D.31017>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.31018>:
      <D.31014>:
      <D.31012>:
      D.31019 = mono_security_get_mode ();
      if (D.31019 == 2) goto <D.31020>; else goto <D.31021>;
      <D.31020>:
      secman = mono_security_manager_get_methods ();
      <D.31021>:
      if (secman != 0B) goto <D.31025>; else goto <D.31023>;
      <D.31025>:
      D.31026 = mono_method_has_declsec (method);
      if (D.31026 != 0) goto <D.31027>; else goto <D.31023>;
      <D.31027>:
      iftmp.71 = 1;
      goto <D.31024>;
      <D.31023>:
      iftmp.71 = 0;
      <D.31024>:
      security = (MonoBoolean) iftmp.71;
      if (security != 0) goto <D.31028>; else goto <D.31029>;
      <D.31028>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.31030>; else goto <D.31031>;
      <D.31030>:
      security = mono_declsec_get_demands (method, &actions);
      <D.31031>:
      <D.31029>:
      if (secman != 0B) goto <D.31035>; else goto <D.31033>;
      <D.31035>:
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      if (D.30615 == 24) goto <D.31036>; else goto <D.31033>;
      <D.31036>:
      iftmp.72 = 1;
      goto <D.31034>;
      <D.31033>:
      iftmp.72 = 0;
      <D.31034>:
      pinvoke = (MonoBoolean) iftmp.72;
      if (pinvoke != 0) goto <D.31037>; else goto <D.31038>;
      <D.31037>:
      {
        struct MonoMethod * wrapped;

        wrapped = mono_marshal_method_from_wrapper (method);
        if (wrapped != 0B) goto <D.31041>; else goto <D.31039>;
        <D.31041>:
        D.31042 = wrapped->flags;
        D.31043 = (int) D.31042;
        D.31044 = D.31043 & 8192;
        if (D.31044 != 0) goto <D.31045>; else goto <D.31039>;
        <D.31045>:
        {
          struct MonoCustomAttrInfo * custom;

          custom = mono_custom_attrs_from_method (wrapped);
          if (custom != 0B) goto <D.31046>; else goto <D.31047>;
          <D.31046>:
          D.31048 = secman->suppressunmanagedcodesecurity;
          D.31049 = mono_custom_attrs_has_attr (custom, D.31048);
          if (D.31049 != 0) goto <D.31050>; else goto <D.31051>;
          <D.31050>:
          pinvoke = 0;
          <D.31051>:
          <D.31047>:
          if (custom != 0B) goto <D.31052>; else goto <D.31053>;
          <D.31052>:
          mono_custom_attrs_free (custom);
          <D.31053>:
          if (pinvoke != 0) goto <D.31054>; else goto <D.31055>;
          <D.31054>:
          D.31056 = wrapped->klass;
          custom = mono_custom_attrs_from_class (D.31056);
          if (custom != 0B) goto <D.31057>; else goto <D.31058>;
          <D.31057>:
          D.31048 = secman->suppressunmanagedcodesecurity;
          D.31059 = mono_custom_attrs_has_attr (custom, D.31048);
          if (D.31059 != 0) goto <D.31060>; else goto <D.31061>;
          <D.31060>:
          pinvoke = 0;
          <D.31061>:
          <D.31058>:
          if (custom != 0B) goto <D.31062>; else goto <D.31063>;
          <D.31062>:
          mono_custom_attrs_free (custom);
          <D.31063>:
          <D.31055>:
        }
        goto <D.31040>;
        <D.31039>:
        pinvoke = 0;
        <D.31040>:
      }
      <D.31038>:
      if (init_locals != 0) goto <D.31064>; else goto <D.31068>;
      <D.31068>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.31069>; else goto <D.31065>;
      <D.31069>:
      D.31070 = cfg->opt;
      D.31071 = D.31070 & 512;
      if (D.31071 != 0) goto <D.31064>; else goto <D.31065>;
      <D.31065>:
      D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.31073 = D.31072 & 64;
      D.31074 = D.31073 | security;
      D.31075 = D.31074 | pinvoke;
      if (D.31075 != 0) goto <D.31064>; else goto <D.31066>;
      <D.31064>:
      D.30673 = cfg->mempool;
      init_localsbb = mono_mempool_alloc0 (D.30673, 296);
      D.30781 = cfg->num_bblocks;
      D.31076 = D.30781;
      D.31077 = D.31076 + 1;
      cfg->num_bblocks = D.31077;
      D.31078 = (int) D.31076;
      init_localsbb->block_num = D.31078;
      cfg->bb_init = init_localsbb;
      D.30841 = cfg->real_offset;
      init_localsbb->real_offset = D.30841;
      start_bblock->next_bb = init_localsbb;
      bblock.70 = bblock;
      init_localsbb->next_bb = bblock.70;
      link_bblock (cfg, start_bblock, init_localsbb);
      bblock.70 = bblock;
      link_bblock (cfg, init_localsbb, bblock.70);
      cfg->cbb = init_localsbb;
      goto <D.31067>;
      <D.31066>:
      bblock.70 = bblock;
      start_bblock->next_bb = bblock.70;
      bblock.70 = bblock;
      link_bblock (cfg, start_bblock, bblock.70);
      <D.31067>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31079>; else goto <D.31080>;
      <D.31079>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.31081>; else goto <D.31082>;
      <D.31081>:
      {
        struct MonoGSharedVtMethodInfo * info;
        struct MonoInst * var;
        struct MonoInst * locals_var;
        int dreg;

        D.30673 = cfg->mempool;
        info = mono_mempool_alloc0 (D.30673, 16);
        D.30642 = cfg->method;
        info->method = D.30642;
        D.31083 = monoeg_g_ptr_array_new ();
        info->entries = D.31083;
        cfg->gsharedvt_info = info;
        D.31084 = mono_defaults.int_class;
        D.31085 = &D.31084->byval_arg;
        var = mono_compile_create_var (cfg, D.31085, 329);
        cfg->gsharedvt_info_var = var;
        D.31086 = mini_method_check_context_used (cfg, method);
        ins = emit_get_rgctx_gsharedvt_method (cfg, D.31086, method, info);
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.31087 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.31087;
          inst->prev = 0B;
          D.31088 = inst->prev;
          inst->next = D.31088;
          inst->opcode = 428;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.31089 = inst->sreg3;
          inst->sreg2 = D.31089;
          D.31090 = inst->sreg2;
          inst->sreg1 = D.31090;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          D.31091 = var->dreg;
          inst->dreg = D.31091;
          D.31092 = ins->dreg;
          inst->sreg1 = D.31092;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.31093>; else goto <D.31094>;
          <D.31093>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.31095>;
          <D.31094>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.31095>:
        }
        D.31084 = mono_defaults.int_class;
        D.31085 = &D.31084->byval_arg;
        locals_var = mono_compile_create_var (cfg, D.31085, 329);
        cfg->gsharedvt_locals_var = locals_var;
        D.31096 = alloc_ireg (cfg);
        dreg = (int) D.31096;
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.31097 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.31097;
          inst->prev = 0B;
          D.31098 = inst->prev;
          inst->next = D.31098;
          inst->opcode = 396;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.31099 = inst->sreg3;
          inst->sreg2 = D.31099;
          D.31100 = inst->sreg2;
          inst->sreg1 = D.31100;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = dreg;
          D.31091 = var->dreg;
          inst->sreg1 = D.31091;
          inst->data.op[0].const_val = 0;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.31101>; else goto <D.31102>;
          <D.31101>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.31103>;
          <D.31102>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.31103>:
        }
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 338;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.31104 = locals_var->dreg;
        ins->dreg = D.31104;
        ins->sreg1 = dreg;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.31105>; else goto <D.31106>;
        <D.31105>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.31107>;
        <D.31106>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.31107>:
        cfg->gsharedvt_locals_var_ins = ins;
        D.31108 = cfg->flags;
        D.31109 = D.31108 | 1;
        cfg->flags = D.31109;
      }
      <D.31082>:
      <D.31080>:
      if (security != 0) goto <D.31110>; else goto <D.31111>;
      <D.31110>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.31112>; else goto <D.31113>;
      <D.31112>:
      {
        struct MonoInst * args[2];

        try
          {
            D.31114 = cfg->stat_cas_demand_generation;
            D.31115 = D.31114 + 1;
            cfg->stat_cas_demand_generation = D.31115;
            D.31116 = actions.demand.blob;
            if (D.31116 != 0B) goto <D.31117>; else goto <D.31118>;
            <D.31117>:
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.31119>; else goto <D.31120>;
            <D.31119>:
            D.30673 = cfg->mempool;
            D.31121 = mono_mempool_alloc (D.30673, 80);
            args[0] = D.31121;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->data.op[1].const_val = 0;
            D.31123 = D.31122->data.op[1].const_val;
            D.31122->data.op[0].const_val = D.31123;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->prev = 0B;
            D.31124 = D.31122->prev;
            D.31122->next = D.31124;
            D.31122 = args[0];
            D.31122->opcode = 736;
            D.31122 = args[0];
            D.31122->flags = 0;
            D.31122 = args[0];
            D.31122->type = 0;
            D.31122 = args[0];
            D.31122->dreg = -1;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->sreg3 = -1;
            D.31125 = D.31122->sreg3;
            D.31122->sreg2 = D.31125;
            D.31126 = D.31122->sreg2;
            D.31122->sreg1 = D.31126;
            D.31122 = args[0];
            D.30898 = cfg->ip;
            D.31122->cil_code = D.30898;
            D.31122 = args[0];
            D.31127 = actions.demand.index;
            D.30673 = cfg->mempool;
            D.31128 = mono_jump_info_token_new2 (D.30673, image, D.31127, 0B);
            D.31122->data.op[0].p = D.31128;
            D.31122 = args[0];
            D.31122->data.op[1].p = 28B;
            D.31122 = args[0];
            D.31122->type = 6;
            D.31122 = args[0];
            D.31122->klass = 0B;
            D.31122 = args[0];
            D.31129 = alloc_dreg (cfg, 6);
            D.31130 = (int) D.31129;
            D.31122->dreg = D.31130;
            goto <D.31131>;
            <D.31120>:
            D.30673 = cfg->mempool;
            D.31132 = mono_mempool_alloc (D.30673, 80);
            args[0] = D.31132;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->data.op[1].const_val = 0;
            D.31123 = D.31122->data.op[1].const_val;
            D.31122->data.op[0].const_val = D.31123;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->prev = 0B;
            D.31124 = D.31122->prev;
            D.31122->next = D.31124;
            D.31122 = args[0];
            D.31122->opcode = 363;
            D.31122 = args[0];
            D.31122->flags = 0;
            D.31122 = args[0];
            D.31122->type = 0;
            D.31122 = args[0];
            D.31122->dreg = -1;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->sreg3 = -1;
            D.31125 = D.31122->sreg3;
            D.31122->sreg2 = D.31125;
            D.31126 = D.31122->sreg2;
            D.31122->sreg1 = D.31126;
            D.31122 = args[0];
            D.30898 = cfg->ip;
            D.31122->cil_code = D.30898;
            D.31122 = args[0];
            D.31116 = actions.demand.blob;
            D.31122->data.op[0].p = D.31116;
            D.31122 = args[0];
            D.31122->type = 3;
            D.31122 = args[0];
            D.31133 = alloc_dreg (cfg, 3);
            D.31134 = (int) D.31133;
            D.31122->dreg = D.31134;
            <D.31131>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.31135>; else goto <D.31136>;
            <D.31135>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31122 = args[0];
            D.30927->next = D.31122;
            D.31122 = args[0];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31122->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31122 = args[0];
            bblock.113->last_ins = D.31122;
            goto <D.31137>;
            <D.31136>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31122 = args[0];
            bblock.113->last_ins = D.31122;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.31137>:
            D.30673 = cfg->mempool;
            D.31138 = mono_mempool_alloc (D.30673, 80);
            args[1] = D.31138;
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139->data.op[1].const_val = 0;
            D.31140 = D.31139->data.op[1].const_val;
            D.31139->data.op[0].const_val = D.31140;
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139->prev = 0B;
            D.31141 = D.31139->prev;
            D.31139->next = D.31141;
            D.31139 = args[1];
            D.31139->opcode = 362;
            D.31139 = args[1];
            D.31139->flags = 0;
            D.31139 = args[1];
            D.31139->type = 0;
            D.31139 = args[1];
            D.31139->dreg = -1;
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139->sreg3 = -1;
            D.31142 = D.31139->sreg3;
            D.31139->sreg2 = D.31142;
            D.31143 = D.31139->sreg2;
            D.31139->sreg1 = D.31143;
            D.31139 = args[1];
            D.30898 = cfg->ip;
            D.31139->cil_code = D.30898;
            D.31139 = args[1];
            D.31144 = actions.demand.size;
            D.31145 = (long int) D.31144;
            D.31139->data.op[0].const_val = D.31145;
            D.31139 = args[1];
            D.31139->type = 1;
            D.31139 = args[1];
            D.31146 = alloc_dreg (cfg, 1);
            D.31147 = (int) D.31146;
            D.31139->dreg = D.31147;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.31148>; else goto <D.31149>;
            <D.31148>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31139 = args[1];
            D.30927->next = D.31139;
            D.31139 = args[1];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31139->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31139 = args[1];
            bblock.113->last_ins = D.31139;
            goto <D.31150>;
            <D.31149>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31139 = args[1];
            bblock.113->last_ins = D.31139;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.31150>:
            D.31151 = secman->demand;
            mono_emit_method_call (cfg, D.31151, &args, 0B);
            <D.31118>:
            D.31152 = actions.noncasdemand.blob;
            if (D.31152 != 0B) goto <D.31153>; else goto <D.31154>;
            <D.31153>:
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.31155>; else goto <D.31156>;
            <D.31155>:
            D.30673 = cfg->mempool;
            D.31157 = mono_mempool_alloc (D.30673, 80);
            args[0] = D.31157;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->data.op[1].const_val = 0;
            D.31123 = D.31122->data.op[1].const_val;
            D.31122->data.op[0].const_val = D.31123;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->prev = 0B;
            D.31124 = D.31122->prev;
            D.31122->next = D.31124;
            D.31122 = args[0];
            D.31122->opcode = 736;
            D.31122 = args[0];
            D.31122->flags = 0;
            D.31122 = args[0];
            D.31122->type = 0;
            D.31122 = args[0];
            D.31122->dreg = -1;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->sreg3 = -1;
            D.31125 = D.31122->sreg3;
            D.31122->sreg2 = D.31125;
            D.31126 = D.31122->sreg2;
            D.31122->sreg1 = D.31126;
            D.31122 = args[0];
            D.30898 = cfg->ip;
            D.31122->cil_code = D.30898;
            D.31122 = args[0];
            D.31158 = actions.noncasdemand.index;
            D.30673 = cfg->mempool;
            D.31159 = mono_jump_info_token_new2 (D.30673, image, D.31158, 0B);
            D.31122->data.op[0].p = D.31159;
            D.31122 = args[0];
            D.31122->data.op[1].p = 28B;
            D.31122 = args[0];
            D.31122->type = 6;
            D.31122 = args[0];
            D.31122->klass = 0B;
            D.31122 = args[0];
            D.31160 = alloc_dreg (cfg, 6);
            D.31161 = (int) D.31160;
            D.31122->dreg = D.31161;
            goto <D.31162>;
            <D.31156>:
            D.30673 = cfg->mempool;
            D.31163 = mono_mempool_alloc (D.30673, 80);
            args[0] = D.31163;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->data.op[1].const_val = 0;
            D.31123 = D.31122->data.op[1].const_val;
            D.31122->data.op[0].const_val = D.31123;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->prev = 0B;
            D.31124 = D.31122->prev;
            D.31122->next = D.31124;
            D.31122 = args[0];
            D.31122->opcode = 363;
            D.31122 = args[0];
            D.31122->flags = 0;
            D.31122 = args[0];
            D.31122->type = 0;
            D.31122 = args[0];
            D.31122->dreg = -1;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->sreg3 = -1;
            D.31125 = D.31122->sreg3;
            D.31122->sreg2 = D.31125;
            D.31126 = D.31122->sreg2;
            D.31122->sreg1 = D.31126;
            D.31122 = args[0];
            D.30898 = cfg->ip;
            D.31122->cil_code = D.30898;
            D.31122 = args[0];
            D.31152 = actions.noncasdemand.blob;
            D.31122->data.op[0].p = D.31152;
            D.31122 = args[0];
            D.31122->type = 3;
            D.31122 = args[0];
            D.31164 = alloc_dreg (cfg, 3);
            D.31165 = (int) D.31164;
            D.31122->dreg = D.31165;
            <D.31162>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.31166>; else goto <D.31167>;
            <D.31166>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31122 = args[0];
            D.30927->next = D.31122;
            D.31122 = args[0];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31122->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31122 = args[0];
            bblock.113->last_ins = D.31122;
            goto <D.31168>;
            <D.31167>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31122 = args[0];
            bblock.113->last_ins = D.31122;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.31168>:
            D.30673 = cfg->mempool;
            D.31169 = mono_mempool_alloc (D.30673, 80);
            args[1] = D.31169;
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139->data.op[1].const_val = 0;
            D.31140 = D.31139->data.op[1].const_val;
            D.31139->data.op[0].const_val = D.31140;
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139->prev = 0B;
            D.31141 = D.31139->prev;
            D.31139->next = D.31141;
            D.31139 = args[1];
            D.31139->opcode = 362;
            D.31139 = args[1];
            D.31139->flags = 0;
            D.31139 = args[1];
            D.31139->type = 0;
            D.31139 = args[1];
            D.31139->dreg = -1;
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139->sreg3 = -1;
            D.31142 = D.31139->sreg3;
            D.31139->sreg2 = D.31142;
            D.31143 = D.31139->sreg2;
            D.31139->sreg1 = D.31143;
            D.31139 = args[1];
            D.30898 = cfg->ip;
            D.31139->cil_code = D.30898;
            D.31139 = args[1];
            D.31170 = actions.noncasdemand.size;
            D.31171 = (long int) D.31170;
            D.31139->data.op[0].const_val = D.31171;
            D.31139 = args[1];
            D.31139->type = 1;
            D.31139 = args[1];
            D.31172 = alloc_dreg (cfg, 1);
            D.31173 = (int) D.31172;
            D.31139->dreg = D.31173;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.31174>; else goto <D.31175>;
            <D.31174>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31139 = args[1];
            D.30927->next = D.31139;
            D.31139 = args[1];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31139->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31139 = args[1];
            bblock.113->last_ins = D.31139;
            goto <D.31176>;
            <D.31175>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31139 = args[1];
            bblock.113->last_ins = D.31139;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.31176>:
            D.31151 = secman->demand;
            mono_emit_method_call (cfg, D.31151, &args, 0B);
            <D.31154>:
            D.31177 = actions.demandchoice.blob;
            if (D.31177 != 0B) goto <D.31178>; else goto <D.31179>;
            <D.31178>:
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.31180>; else goto <D.31181>;
            <D.31180>:
            D.30673 = cfg->mempool;
            D.31182 = mono_mempool_alloc (D.30673, 80);
            args[0] = D.31182;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->data.op[1].const_val = 0;
            D.31123 = D.31122->data.op[1].const_val;
            D.31122->data.op[0].const_val = D.31123;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->prev = 0B;
            D.31124 = D.31122->prev;
            D.31122->next = D.31124;
            D.31122 = args[0];
            D.31122->opcode = 736;
            D.31122 = args[0];
            D.31122->flags = 0;
            D.31122 = args[0];
            D.31122->type = 0;
            D.31122 = args[0];
            D.31122->dreg = -1;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->sreg3 = -1;
            D.31125 = D.31122->sreg3;
            D.31122->sreg2 = D.31125;
            D.31126 = D.31122->sreg2;
            D.31122->sreg1 = D.31126;
            D.31122 = args[0];
            D.30898 = cfg->ip;
            D.31122->cil_code = D.30898;
            D.31122 = args[0];
            D.31183 = actions.demandchoice.index;
            D.30673 = cfg->mempool;
            D.31184 = mono_jump_info_token_new2 (D.30673, image, D.31183, 0B);
            D.31122->data.op[0].p = D.31184;
            D.31122 = args[0];
            D.31122->data.op[1].p = 28B;
            D.31122 = args[0];
            D.31122->type = 6;
            D.31122 = args[0];
            D.31122->klass = 0B;
            D.31122 = args[0];
            D.31185 = alloc_dreg (cfg, 6);
            D.31186 = (int) D.31185;
            D.31122->dreg = D.31186;
            goto <D.31187>;
            <D.31181>:
            D.30673 = cfg->mempool;
            D.31188 = mono_mempool_alloc (D.30673, 80);
            args[0] = D.31188;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->data.op[1].const_val = 0;
            D.31123 = D.31122->data.op[1].const_val;
            D.31122->data.op[0].const_val = D.31123;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->prev = 0B;
            D.31124 = D.31122->prev;
            D.31122->next = D.31124;
            D.31122 = args[0];
            D.31122->opcode = 363;
            D.31122 = args[0];
            D.31122->flags = 0;
            D.31122 = args[0];
            D.31122->type = 0;
            D.31122 = args[0];
            D.31122->dreg = -1;
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122 = args[0];
            D.31122->sreg3 = -1;
            D.31125 = D.31122->sreg3;
            D.31122->sreg2 = D.31125;
            D.31126 = D.31122->sreg2;
            D.31122->sreg1 = D.31126;
            D.31122 = args[0];
            D.30898 = cfg->ip;
            D.31122->cil_code = D.30898;
            D.31122 = args[0];
            D.31177 = actions.demandchoice.blob;
            D.31122->data.op[0].p = D.31177;
            D.31122 = args[0];
            D.31122->type = 3;
            D.31122 = args[0];
            D.31189 = alloc_dreg (cfg, 3);
            D.31190 = (int) D.31189;
            D.31122->dreg = D.31190;
            <D.31187>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.31191>; else goto <D.31192>;
            <D.31191>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31122 = args[0];
            D.30927->next = D.31122;
            D.31122 = args[0];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31122->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31122 = args[0];
            bblock.113->last_ins = D.31122;
            goto <D.31193>;
            <D.31192>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31122 = args[0];
            bblock.113->last_ins = D.31122;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.31193>:
            D.30673 = cfg->mempool;
            D.31194 = mono_mempool_alloc (D.30673, 80);
            args[1] = D.31194;
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139->data.op[1].const_val = 0;
            D.31140 = D.31139->data.op[1].const_val;
            D.31139->data.op[0].const_val = D.31140;
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139->prev = 0B;
            D.31141 = D.31139->prev;
            D.31139->next = D.31141;
            D.31139 = args[1];
            D.31139->opcode = 362;
            D.31139 = args[1];
            D.31139->flags = 0;
            D.31139 = args[1];
            D.31139->type = 0;
            D.31139 = args[1];
            D.31139->dreg = -1;
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139 = args[1];
            D.31139->sreg3 = -1;
            D.31142 = D.31139->sreg3;
            D.31139->sreg2 = D.31142;
            D.31143 = D.31139->sreg2;
            D.31139->sreg1 = D.31143;
            D.31139 = args[1];
            D.30898 = cfg->ip;
            D.31139->cil_code = D.30898;
            D.31139 = args[1];
            D.31195 = actions.demandchoice.size;
            D.31196 = (long int) D.31195;
            D.31139->data.op[0].const_val = D.31196;
            D.31139 = args[1];
            D.31139->type = 1;
            D.31139 = args[1];
            D.31197 = alloc_dreg (cfg, 1);
            D.31198 = (int) D.31197;
            D.31139->dreg = D.31198;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.31199>; else goto <D.31200>;
            <D.31199>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31139 = args[1];
            D.30927->next = D.31139;
            D.31139 = args[1];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31139->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31139 = args[1];
            bblock.113->last_ins = D.31139;
            goto <D.31201>;
            <D.31200>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31139 = args[1];
            bblock.113->last_ins = D.31139;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.31201>:
            D.31202 = secman->demandchoice;
            mono_emit_method_call (cfg, D.31202, &args, 0B);
            <D.31179>:
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.31113>:
      <D.31111>:
      if (pinvoke != 0) goto <D.31203>; else goto <D.31204>;
      <D.31203>:
      D.31205 = secman->demandunmanaged;
      mono_emit_method_call (cfg, D.31205, 0B, 0B);
      <D.31204>:
      D.31206 = mono_security_get_mode ();
      if (D.31206 == 1) goto <D.31207>; else goto <D.31208>;
      <D.31207>:
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      if (D.30615 == 24) goto <D.31209>; else goto <D.31210>;
      <D.31209>:
      {
        struct MonoMethod * wrapped;

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

          D.31213 = wrapped->flags;
          D.31214 = (int) D.31213;
          pinvk = D.31214 & 8192;
          D.31215 = wrapped->iflags;
          D.31216 = (int) D.31215;
          icall = D.31216 & 4096;
          D.31217 = icall | pinvk;
          if (D.31217 != 0) goto <D.31218>; else goto <D.31219>;
          <D.31218>:
          D.30609 = method->klass;
          if (D.30609 != 0B) goto <D.31220>; else goto <D.31221>;
          <D.31220>:
          D.30609 = method->klass;
          D.30610 = D.30609->image;
          if (D.30610 != 0B) goto <D.31222>; else goto <D.31223>;
          <D.31222>:
          D.30609 = method->klass;
          D.30610 = D.30609->image;
          D.31224 = mono_security_core_clr_is_platform_image (D.30610);
          if (D.31224 == 0) goto <D.31225>; else goto <D.31226>;
          <D.31225>:
          {
            struct MonoException * ex;

            if (icall != 0) goto <D.31228>; else goto <D.31229>;
            <D.31228>:
            iftmp.73 = mono_get_exception_security ();
            goto <D.31230>;
            <D.31229>:
            iftmp.73 = mono_get_exception_method_access ();
            <D.31230>:
            ex = iftmp.73;
            emit_throw_exception (cfg, ex);
          }
          <D.31226>:
          <D.31223>:
          <D.31221>:
          <D.31219>:
        }
        <D.31212>:
      }
      <D.31210>:
      <D.31208>:
      D.31231 = cfg->exception_type;
      if (D.31231 != 0) goto exception_exit; else goto <D.31232>;
      <D.31232>:
      D.30650 = header->code_size;
      if (D.30650 == 0) goto <D.31233>; else goto <D.31234>;
      <D.31233>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31235>; else goto <D.31236>;
      <D.31235>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31237>; else goto <D.31238>;
      <D.31237>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31238>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31236>:
      D.31239 = mini_get_debug_options ();
      D.31240 = D.31239->break_on_unverified;
      if (D.31240 != 0) goto <D.31241>; else goto unverified;
      <D.31241>:
      __asm__ __volatile__("int $03");
      <D.31234>:
      D.30841 = cfg->real_offset;
      D.31242 = get_basic_blocks (cfg, header, D.30841, ip, end, &err_pos);
      if (D.31242 != 0) goto <D.31243>; else goto <D.31244>;
      <D.31243>:
      ip = err_pos;
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31245>; else goto <D.31246>;
      <D.31245>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31247>; else goto <D.31248>;
      <D.31247>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31248>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31246>:
      D.31249 = mini_get_debug_options ();
      D.31250 = D.31249->break_on_unverified;
      if (D.31250 != 0) goto <D.31251>; else goto unverified;
      <D.31251>:
      __asm__ __volatile__("int $03");
      <D.31244>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.31252>; else goto <D.31253>;
      <D.31252>:
      breakpoint_id.74 = (unsigned int) breakpoint_id;
      bblock.70 = bblock;
      mono_debug_init_method (cfg, bblock.70, breakpoint_id.74);
      <D.31253>:
      n = 0;
      goto <D.27650>;
      <D.27649>:
      D.31255 = header->locals[n];
      D.31256 = BIT_FIELD_REF <*D.31255, 16, 80>;
      D.31257 = D.31256 & 16639;
      if (D.31257 == 1) goto <D.31258>; else goto <D.31259>;
      <D.31258>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31260>; else goto <D.31261>;
      <D.31260>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31262>; else goto <D.31263>;
      <D.31262>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31263>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31261>:
      D.31264 = mini_get_debug_options ();
      D.31265 = D.31264->break_on_unverified;
      if (D.31265 != 0) goto <D.31266>; else goto unverified;
      <D.31266>:
      __asm__ __volatile__("int $03");
      <D.31259>:
      n = n + 1;
      <D.27650>:
      D.31267 = header->num_locals;
      D.31268 = (int) D.31267;
      if (D.31268 > n) goto <D.27649>; else goto <D.27651>;
      <D.27651>:
      class_inits = 0B;
      D.30708 = cfg->generic_sharing_context;
      if (D.30708 != 0B) goto <D.31269>; else goto <D.31270>;
      <D.31269>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.31271>; else goto <D.31272>;
      <D.31271>:
      D.30977 = method->flags;
      D.30978 = (int) D.30977;
      D.30979 = D.30978 & 16;
      if (D.30979 != 0) goto <D.31273>; else goto <D.31276>;
      <D.31276>:
      D.31277 = mini_method_get_context (method);
      D.31278 = D.31277->method_inst;
      if (D.31278 != 0B) goto <D.31273>; else goto <D.31279>;
      <D.31279>:
      D.30609 = method->klass;
      D.30763 = BIT_FIELD_REF <*D.30609, 8, 256>;
      D.30764 = D.30763 & 8;
      if (D.30764 != 0) goto <D.31273>; else goto <D.31274>;
      <D.31273>:
      mono_get_vtable_var (cfg);
      goto <D.31275>;
      <D.31274>:
      D.31280 = cfg->args;
      D.31281 = *D.31280;
      D.31280 = cfg->args;
      D.31281 = *D.31280;
      D.31282 = D.31281->flags;
      D.31283 = D.31282 | 4;
      D.31281->flags = D.31283;
      <D.31275>:
      <D.31272>:
      <D.31270>:
      if (is_virtual_call != 0) goto <D.31284>; else goto <D.31285>;
      <D.31284>:
      {
        struct MonoInst * arg_ins;

        D.30673 = cfg->mempool;
        arg_ins = mono_mempool_alloc (D.30673, 80);
        arg_ins->data.op[1].const_val = 0;
        D.31286 = arg_ins->data.op[1].const_val;
        arg_ins->data.op[0].const_val = D.31286;
        arg_ins->prev = 0B;
        D.31287 = arg_ins->prev;
        arg_ins->next = D.31287;
        arg_ins->opcode = 428;
        arg_ins->flags = 0;
        arg_ins->type = 0;
        arg_ins->dreg = -1;
        arg_ins->sreg3 = -1;
        D.31288 = arg_ins->sreg3;
        arg_ins->sreg2 = D.31288;
        D.31289 = arg_ins->sreg2;
        arg_ins->sreg1 = D.31289;
        D.30898 = cfg->ip;
        arg_ins->cil_code = D.30898;
        D.31290 = cfg->arg_types;
        D.31291 = *D.31290;
        D.31292 = mono_type_to_regmove (cfg, D.31291);
        D.31293 = (short unsigned int) D.31292;
        arg_ins->opcode = D.31293;
        D.31290 = cfg->arg_types;
        D.31291 = *D.31290;
        type_to_eval_stack_type (cfg, D.31291, arg_ins);
        D.31280 = cfg->args;
        D.31281 = *D.31280;
        D.31294 = D.31281->klass;
        arg_ins->klass = D.31294;
        D.31280 = cfg->args;
        D.31281 = *D.31280;
        D.31295 = D.31281->dreg;
        arg_ins->sreg1 = D.31295;
        D.31296 = arg_ins->type;
        D.31297 = (<unnamed type>) D.31296;
        D.31298 = alloc_dreg (cfg, D.31297);
        D.31299 = (int) D.31298;
        arg_ins->dreg = D.31299;
        D.31300 = arg_ins->opcode;
        if (D.31300 == 431) goto <D.31301>; else goto <D.31302>;
        <D.31301>:
        D.31290 = cfg->arg_types;
        D.31291 = *D.31290;
        D.31303 = mono_class_from_mono_type (D.31291);
        arg_ins->klass = D.31303;
        <D.31302>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.31304>; else goto <D.31305>;
        <D.31304>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = arg_ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        arg_ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = arg_ins;
        goto <D.31306>;
        <D.31305>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = arg_ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.31306>:
        D.31108 = cfg->flags;
        D.31307 = D.31108 | 128;
        cfg->flags = D.31307;
        D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
        D.31308 = D.30660 & 64;
        if (D.31308 != 0) goto <D.31309>; else goto <D.31310>;
        <D.31309>:
        D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
        D.31308 = D.30660 & 64;
        if (D.31308 != 0) goto <D.31311>; else goto <D.31312>;
        <D.31311>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.31313 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.31313;
          inst->prev = 0B;
          D.31314 = inst->prev;
          inst->next = D.31314;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.31315 = inst->sreg3;
          inst->sreg2 = D.31315;
          D.31316 = inst->sreg2;
          inst->sreg1 = D.31316;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = -1;
          D.31317 = arg_ins->dreg;
          inst->sreg1 = D.31317;
          inst->data.op[1].const_val = 0;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.31318>; else goto <D.31319>;
          <D.31318>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.31320>;
          <D.31319>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.31320>:
        }
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.31321 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.31321;
          inst->prev = 0B;
          D.31322 = inst->prev;
          inst->next = D.31322;
          inst->opcode = 455;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.31323 = inst->sreg3;
          inst->sreg2 = D.31323;
          D.31324 = inst->sreg2;
          inst->sreg1 = D.31324;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->data.op[1].p = "NullReferenceException";
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.31325>; else goto <D.31326>;
          <D.31325>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.31327>;
          <D.31326>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.31327>:
        }
        goto <D.31328>;
        <D.31312>:
        <D.31328>:
        goto <D.31329>;
        <D.31310>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.31330 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.31330;
          inst->prev = 0B;
          D.31331 = inst->prev;
          inst->next = D.31331;
          inst->opcode = 340;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.31332 = inst->sreg3;
          inst->sreg2 = D.31332;
          D.31333 = inst->sreg2;
          inst->sreg1 = D.31333;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = -1;
          D.31317 = arg_ins->dreg;
          inst->sreg1 = D.31317;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.31334>; else goto <D.31335>;
          <D.31334>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.31336>;
          <D.31335>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.31336>:
        }
        <D.31329>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.31337 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.31337;
          inst->prev = 0B;
          D.31338 = inst->prev;
          inst->next = D.31338;
          inst->opcode = 803;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.31339 = inst->sreg3;
          inst->sreg2 = D.31339;
          D.31340 = inst->sreg2;
          inst->sreg1 = D.31340;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = -1;
          D.31317 = arg_ins->dreg;
          inst->sreg1 = D.31317;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.31341>; else goto <D.31342>;
          <D.31341>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.31343>;
          <D.31342>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.31343>:
        }
      }
      <D.31285>:
      D.31344 = dont_verify == 0;
      skip_dead_blocks = (gboolean) D.31344;
      if (skip_dead_blocks != 0) goto <D.31345>; else goto <D.31346>;
      <D.31345>:
      bb = mono_basic_block_split (method, &error);
      original_bb = bb;
      D.31347 = mono_error_ok (&error);
      if (D.31347 == 0) goto <D.31348>; else goto <D.31349>;
      <D.31348>:
      mono_error_cleanup (&error);
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31350>; else goto <D.31351>;
      <D.31350>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31352>; else goto <D.31353>;
      <D.31352>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31353>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31351>:
      D.31354 = mini_get_debug_options ();
      D.31355 = D.31354->break_on_unverified;
      if (D.31355 != 0) goto <D.31356>; else goto unverified;
      <D.31356>:
      __asm__ __volatile__("int $03");
      <D.31349>:
      D.31357 = bb == 0B;
      D.31358 = (long int) D.31357;
      D.31359 = __builtin_expect (D.31358, 0);
      if (D.31359 != 0) goto <D.31360>; else goto <D.31361>;
      <D.31360>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7115, "bb");
      <D.31361>:
      <D.31346>:
      D.31362 = header->max_stack;
      D.31363 = (int) D.31362;
      D.31364 = D.31363 + 1;
      D.31365 = (long unsigned int) D.31364;
      D.31366 = (unsigned int) D.31365;
      D.31367 = D.31366 * 8;
      D.30673 = cfg->mempool;
      sp = mono_mempool_alloc0 (D.30673, D.31367);
      stack_start = sp;
      ins_flag = 0;
      start_new_bblock = 0;
      bblock.70 = bblock;
      cfg->cbb = bblock.70;
      goto <D.27665>;
      <D.28497>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.31368>; else goto <D.31369>;
      <D.31368>:
      ip.75 = (long int) ip;
      D.30821 = header->code;
      D.31371 = (long int) D.30821;
      D.31372 = ip.75 - D.31371;
      D.31373 = (unsigned int) D.31372;
      cfg->real_offset = D.31373;
      goto <D.31374>;
      <D.31369>:
      cfg->real_offset = inline_offset;
      <D.31374>:
      cfg->ip = ip;
      context_used = 0;
      if (start_new_bblock != 0) goto <D.31375>; else goto <D.31376>;
      <D.31375>:
      bblock.70 = bblock;
      ip.75 = (long int) ip;
      bblock.70 = bblock;
      D.31003 = bblock.70->cil_code;
      D.31006 = (long int) D.31003;
      D.31377 = ip.75 - D.31006;
      D.31378 = (int) D.31377;
      bblock.70->cil_length = D.31378;
      if (start_new_bblock == 2) goto <D.31379>; else goto <D.31380>;
      <D.31379>:
      D.30871 = tblock->cil_code;
      D.31381 = D.30871 != ip;
      D.31382 = (long int) D.31381;
      D.31383 = __builtin_expect (D.31382, 0);
      if (D.31383 != 0) goto <D.31384>; else goto <D.31385>;
      <D.31384>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7136, "ip == tblock->cil_code");
      <D.31385>:
      goto <D.31386>;
      <D.31380>:
      D.30804 = cfg->cil_offset_to_bb;
      ip.75 = (long int) ip;
      D.30809 = cfg->cil_start;
      D.30810 = (long int) D.30809;
      D.31387 = ip.75 - D.30810;
      D.31388 = (long unsigned int) D.31387;
      D.31389 = D.31388 * 8;
      D.31390 = D.30804 + D.31389;
      tblock = *D.31390;
      if (tblock == 0B) goto <D.31391>; else goto <D.31392>;
      <D.31391>:
      if (ip >= end) goto <D.31393>; else goto <D.31395>;
      <D.31395>:
      D.30821 = header->code;
      if (D.30821 > ip) goto <D.31393>; else goto <D.31394>;
      <D.31393>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31396>; else goto <D.31397>;
      <D.31396>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31398>; else goto <D.31399>;
      <D.31398>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31399>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31397>:
      D.31400 = mini_get_debug_options ();
      D.31401 = D.31400->break_on_unverified;
      if (D.31401 != 0) goto <D.31402>; else goto unverified;
      <D.31402>:
      __asm__ __volatile__("int $03");
      <D.31394>:
      D.30673 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.30673, 296);
      D.30781 = cfg->num_bblocks;
      D.31403 = D.30781;
      D.31404 = D.31403 + 1;
      cfg->num_bblocks = D.31404;
      D.31405 = (int) D.31403;
      tblock->block_num = D.31405;
      tblock->cil_code = ip;
      D.30871 = tblock->cil_code;
      if (D.30871 != 0B) goto <D.31406>; else goto <D.31407>;
      <D.31406>:
      D.30804 = cfg->cil_offset_to_bb;
      D.30871 = tblock->cil_code;
      D.30874 = (long int) D.30871;
      D.30809 = cfg->cil_start;
      D.30810 = (long int) D.30809;
      D.30875 = D.30874 - D.30810;
      D.30876 = (long unsigned int) D.30875;
      D.30877 = D.30876 * 8;
      D.30878 = D.30804 + D.30877;
      *D.30878 = tblock;
      <D.31407>:
      D.30841 = cfg->real_offset;
      tblock->real_offset = D.30841;
      <D.31392>:
      <D.31386>:
      bblock.70 = bblock;
      bblock.70->next_bb = tblock;
      bblock = tblock;
      bblock.70 = bblock;
      cfg->cbb = bblock.70;
      start_new_bblock = 0;
      i = 0;
      goto <D.27658>;
      <D.27657>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 3) goto <D.31408>; else goto <D.31409>;
      <D.31408>:
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31415 = (int) D.31414;
      printf ("loading %d from temp %d\n", i, D.31415);
      <D.31409>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31416 = cfg->varinfo;
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31417 = (long unsigned int) D.31414;
      D.31418 = D.31417 * 8;
      D.31419 = D.31416 + D.31418;
      D.31420 = *D.31419;
      D.31421 = D.31420->data.op[1].vtype;
      D.31422 = mono_type_to_regmove (cfg, D.31421);
      D.31423 = (short unsigned int) D.31422;
      ins->opcode = D.31423;
      D.31416 = cfg->varinfo;
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31417 = (long unsigned int) D.31414;
      D.31418 = D.31417 * 8;
      D.31419 = D.31416 + D.31418;
      D.31420 = *D.31419;
      D.31421 = D.31420->data.op[1].vtype;
      type_to_eval_stack_type (cfg, D.31421, ins);
      D.31416 = cfg->varinfo;
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31417 = (long unsigned int) D.31414;
      D.31418 = D.31417 * 8;
      D.31419 = D.31416 + D.31418;
      D.31420 = *D.31419;
      D.31424 = D.31420->klass;
      ins->klass = D.31424;
      D.31416 = cfg->varinfo;
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31417 = (long unsigned int) D.31414;
      D.31418 = D.31417 * 8;
      D.31419 = D.31416 + D.31418;
      D.31420 = *D.31419;
      D.31425 = D.31420->dreg;
      ins->sreg1 = D.31425;
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.31428 = alloc_dreg (cfg, D.31427);
      D.31429 = (int) D.31428;
      ins->dreg = D.31429;
      D.31430 = ins->opcode;
      if (D.31430 == 431) goto <D.31431>; else goto <D.31432>;
      <D.31431>:
      D.31416 = cfg->varinfo;
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31417 = (long unsigned int) D.31414;
      D.31418 = D.31417 * 8;
      D.31419 = D.31416 + D.31418;
      D.31420 = *D.31419;
      D.31421 = D.31420->data.op[1].vtype;
      D.31433 = mono_class_from_mono_type (D.31421);
      ins->klass = D.31433;
      <D.31432>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.31434>; else goto <D.31435>;
      <D.31434>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.31436>;
      <D.31435>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.31436>:
      sp.76 = sp;
      sp = sp.76 + 8;
      *sp.76 = ins;
      i = i + 1;
      <D.27658>:
      bblock.70 = bblock;
      D.31438 = bblock.70->in_scount;
      D.31439 = (int) D.31438;
      if (D.31439 > i) goto <D.27657>; else goto <D.27659>;
      <D.27659>:
      if (class_inits != 0B) goto <D.31440>; else goto <D.31441>;
      <D.31440>:
      monoeg_g_slist_free (class_inits);
      <D.31441>:
      class_inits = 0B;
      goto <D.31442>;
      <D.31376>:
      D.30804 = cfg->cil_offset_to_bb;
      ip.75 = (long int) ip;
      D.30809 = cfg->cil_start;
      D.30810 = (long int) D.30809;
      D.31387 = ip.75 - D.30810;
      D.31388 = (long unsigned int) D.31387;
      D.31389 = D.31388 * 8;
      D.31390 = D.30804 + D.31389;
      tblock = *D.31390;
      if (tblock != 0B) goto <D.31443>; else goto <D.31444>;
      <D.31443>:
      bblock.70 = bblock;
      if (tblock != bblock.70) goto <D.31445>; else goto <D.31446>;
      <D.31445>:
      bblock.70 = bblock;
      link_bblock (cfg, bblock.70, tblock);
      if (sp != stack_start) goto <D.31447>; else goto <D.31448>;
      <D.31447>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31453 = (int) D.31452;
      handle_stack_args (cfg, stack_start, D.31453);
      sp = stack_start;
      D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
      D.31455 = D.31454 & 32;
      if (D.31455 != 0) goto <D.31456>; else goto <D.31457>;
      <D.31456>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31458>; else goto <D.31459>;
      <D.31458>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31460>; else goto <D.31461>;
      <D.31460>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31461>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31459>:
      D.31462 = mini_get_debug_options ();
      D.31463 = D.31462->break_on_unverified;
      if (D.31463 != 0) goto <D.31464>; else goto unverified;
      <D.31464>:
      __asm__ __volatile__("int $03");
      <D.31457>:
      <D.31448>:
      bblock.70 = bblock;
      bblock.70->next_bb = tblock;
      bblock = tblock;
      bblock.70 = bblock;
      cfg->cbb = bblock.70;
      i = 0;
      goto <D.27661>;
      <D.27660>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 3) goto <D.31465>; else goto <D.31466>;
      <D.31465>:
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31415 = (int) D.31414;
      printf ("loading %d from temp %d\n", i, D.31415);
      <D.31466>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31416 = cfg->varinfo;
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31417 = (long unsigned int) D.31414;
      D.31418 = D.31417 * 8;
      D.31419 = D.31416 + D.31418;
      D.31420 = *D.31419;
      D.31421 = D.31420->data.op[1].vtype;
      D.31467 = mono_type_to_regmove (cfg, D.31421);
      D.31468 = (short unsigned int) D.31467;
      ins->opcode = D.31468;
      D.31416 = cfg->varinfo;
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31417 = (long unsigned int) D.31414;
      D.31418 = D.31417 * 8;
      D.31419 = D.31416 + D.31418;
      D.31420 = *D.31419;
      D.31421 = D.31420->data.op[1].vtype;
      type_to_eval_stack_type (cfg, D.31421, ins);
      D.31416 = cfg->varinfo;
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31417 = (long unsigned int) D.31414;
      D.31418 = D.31417 * 8;
      D.31419 = D.31416 + D.31418;
      D.31420 = *D.31419;
      D.31424 = D.31420->klass;
      ins->klass = D.31424;
      D.31416 = cfg->varinfo;
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31417 = (long unsigned int) D.31414;
      D.31418 = D.31417 * 8;
      D.31419 = D.31416 + D.31418;
      D.31420 = *D.31419;
      D.31425 = D.31420->dreg;
      ins->sreg1 = D.31425;
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.31469 = alloc_dreg (cfg, D.31427);
      D.31470 = (int) D.31469;
      ins->dreg = D.31470;
      D.31430 = ins->opcode;
      if (D.31430 == 431) goto <D.31471>; else goto <D.31472>;
      <D.31471>:
      D.31416 = cfg->varinfo;
      bblock.70 = bblock;
      D.31410 = bblock.70->in_stack;
      D.30802 = (long unsigned int) i;
      D.31411 = D.30802 * 8;
      D.31412 = D.31410 + D.31411;
      D.31413 = *D.31412;
      D.31414 = D.31413->data.op[0].const_val;
      D.31417 = (long unsigned int) D.31414;
      D.31418 = D.31417 * 8;
      D.31419 = D.31416 + D.31418;
      D.31420 = *D.31419;
      D.31421 = D.31420->data.op[1].vtype;
      D.31473 = mono_class_from_mono_type (D.31421);
      ins->klass = D.31473;
      <D.31472>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.31474>; else goto <D.31475>;
      <D.31474>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.31476>;
      <D.31475>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.31476>:
      sp.79 = sp;
      sp = sp.79 + 8;
      *sp.79 = ins;
      i = i + 1;
      <D.27661>:
      bblock.70 = bblock;
      D.31438 = bblock.70->in_scount;
      D.31439 = (int) D.31438;
      if (D.31439 > i) goto <D.27660>; else goto <D.27662>;
      <D.27662>:
      monoeg_g_slist_free (class_inits);
      class_inits = 0B;
      <D.31446>:
      <D.31444>:
      <D.31442>:
      if (skip_dead_blocks != 0) goto <D.31478>; else goto <D.31479>;
      <D.31478>:
      {
        int ip_offset;

        ip.75 = (long int) ip;
        D.30821 = header->code;
        D.31371 = (long int) D.30821;
        D.31372 = ip.75 - D.31371;
        ip_offset = (int) D.31372;
        D.31480 = bb->end;
        if (D.31480 == ip_offset) goto <D.31481>; else goto <D.31482>;
        <D.31481>:
        bb = bb->next;
        <D.31482>:
        D.31483 = BIT_FIELD_REF <*bb, 8, 384>;
        D.31484 = D.31483 & 2;
        if (D.31484 != 0) goto <D.31485>; else goto <D.31486>;
        <D.31485>:
        {
          int op_size;

          op_size = mono_opcode_size (ip, end);
          D.31487 = op_size <= 0;
          D.31488 = (long int) D.31487;
          D.31489 = __builtin_expect (D.31488, 0);
          if (D.31489 != 0) goto <D.31490>; else goto <D.31491>;
          <D.31490>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7183, "op_size > 0");
          <D.31491>:
          D.30753 = cfg->verbose_level;
          if (D.30753 > 3) goto <D.31492>; else goto <D.31493>;
          <D.31492>:
          printf ("SKIPPING DEAD OP at %x\n", ip_offset);
          <D.31493>:
          D.31494 = ip_offset + op_size;
          D.31480 = bb->end;
          if (D.31494 == D.31480) goto <D.31495>; else goto <D.31496>;
          <D.31495>:
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          ins->opcode = 316;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          bblock.70 = bblock;
          D.31015 = bblock.70->last_ins;
          if (D.31015 != 0B) goto <D.31497>; else goto <D.31498>;
          <D.31497>:
          bblock.70 = bblock;
          D.31015 = bblock.70->last_ins;
          D.31015->next = ins;
          bblock.70 = bblock;
          D.31015 = bblock.70->last_ins;
          ins->prev = D.31015;
          bblock.70 = bblock;
          bblock.70->last_ins = ins;
          goto <D.31499>;
          <D.31498>:
          bblock.70 = bblock;
          bblock.70 = bblock;
          bblock.70->last_ins = ins;
          D.31015 = bblock.70->last_ins;
          bblock.70->code = D.31015;
          <D.31499>:
          start_new_bblock = 1;
          <D.31496>:
          D.31500 = (sizetype) op_size;
          ip = ip + D.31500;
          // predicted unlikely by continue predictor.
          goto <D.27665>;
        }
        <D.31486>:
      }
      <D.31479>:
      if (seq_points != 0) goto <D.31503>; else goto <D.31504>;
      <D.31503>:
      if (sp == stack_start) goto <D.31501>; else goto <D.31505>;
      <D.31505>:
      if (sym_seq_points != 0) goto <D.31506>; else goto <D.31502>;
      <D.31506>:
      ip.75 = (long int) ip;
      D.30821 = header->code;
      D.31371 = (long int) D.30821;
      D.31372 = ip.75 - D.31371;
      D.31507 = (long unsigned int) D.31372;
      D.31508 = D.31507 / 64;
      D.31509 = seq_point_locs->data[D.31508];
      ip.75 = (long int) ip;
      D.30821 = header->code;
      D.31371 = (long int) D.30821;
      D.31372 = ip.75 - D.31371;
      D.31510 = (int) D.31372;
      D.31511 = D.31510 & 63;
      D.31512 = D.31509 >> D.31511;
      D.31513 = D.31512 & 1;
      if (D.31513 != 0) goto <D.31501>; else goto <D.31502>;
      <D.31501>:
      {
        gboolean intr_loc;

        D.30821 = header->code;
        if (D.30821 == ip) goto <D.31515>; else goto <D.31518>;
        <D.31518>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 == 0B) goto <D.31519>; else goto <D.31516>;
        <D.31519>:
        D.31520 = cfg->header;
        D.31521 = BIT_FIELD_REF <*D.31520, 16, 112>;
        D.31522 = D.31521 & 32767;
        if (D.31522 != 0) goto <D.31515>; else goto <D.31516>;
        <D.31515>:
        iftmp.80 = 1;
        goto <D.31517>;
        <D.31516>:
        iftmp.80 = 0;
        <D.31517>:
        intr_loc = iftmp.80;
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ip.75 = (long int) ip;
        D.30821 = header->code;
        D.31371 = (long int) D.30821;
        D.31372 = ip.75 - D.31371;
        ins->data.op[1].const_val = D.31372;
        D.31523 = intr_loc != 0;
        D.31524 = (unsigned char) D.31523;
        ins->flags = D.31524;
        if (sp != stack_start) goto <D.31525>; else goto <D.31526>;
        <D.31525>:
        D.31527 = ins->flags;
        D.31528 = D.31527 | 4;
        ins->flags = D.31528;
        <D.31526>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.31529>; else goto <D.31530>;
        <D.31529>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.31531>;
        <D.31530>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.31531>:
        if (sym_seq_points != 0) goto <D.31532>; else goto <D.31533>;
        <D.31532>:
        ip.75 = (long int) ip;
        D.30821 = header->code;
        D.31371 = (long int) D.30821;
        D.31372 = ip.75 - D.31371;
        D.31507 = (long unsigned int) D.31372;
        D.31534 = D.31507 / 64;
        D.31535 = seq_point_set_locs->data[D.31534];
        ip.75 = (long int) ip;
        D.30821 = header->code;
        D.31371 = (long int) D.30821;
        D.31372 = ip.75 - D.31371;
        D.31510 = (int) D.31372;
        D.31511 = D.31510 & 63;
        D.31536 = 1 << D.31511;
        D.31537 = D.31535 | D.31536;
        seq_point_set_locs->data[D.31534] = D.31537;
        <D.31533>:
      }
      <D.31502>:
      <D.31504>:
      bblock.70 = bblock;
      D.30841 = cfg->real_offset;
      bblock.70->real_offset = D.30841;
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.31538>; else goto <D.31539>;
      <D.31538>:
      D.31540 = cfg->coverage_info;
      if (D.31540 != 0B) goto <D.31541>; else goto <D.31542>;
      <D.31541>:
      {
        guint32 cil_offset;

        ip.75 = (long int) ip;
        D.30821 = header->code;
        D.31371 = (long int) D.30821;
        D.31372 = ip.75 - D.31371;
        cil_offset = (guint32) D.31372;
        D.31540 = cfg->coverage_info;
        D.31540->data[cil_offset].cil_code = ip;
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 363;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.31540 = cfg->coverage_info;
        D.31543 = &D.31540->data[cil_offset].count;
        ins->data.op[0].p = D.31543;
        ins->type = 3;
        D.31544 = alloc_dreg (cfg, 3);
        D.31545 = (int) D.31544;
        ins->dreg = D.31545;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.31546>; else goto <D.31547>;
        <D.31546>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.31548>;
        <D.31547>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.31548>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.31549 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.31549;
          inst->prev = 0B;
          D.31550 = inst->prev;
          inst->next = D.31550;
          inst->opcode = 384;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.31551 = inst->sreg3;
          inst->sreg2 = D.31551;
          D.31552 = inst->sreg2;
          inst->sreg1 = D.31552;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          D.31092 = ins->dreg;
          inst->dreg = D.31092;
          inst->data.op[0].const_val = 0;
          inst->data.op[1].const_val = 1;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.31553>; else goto <D.31554>;
          <D.31553>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.31555>;
          <D.31554>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.31555>:
        }
      }
      <D.31542>:
      <D.31539>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 3) goto <D.31556>; else goto <D.31557>;
      <D.31556>:
      D.31558 = mono_disasm_code_one (0B, method, ip, 0B);
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31453 = (int) D.31452;
      bblock.70 = bblock;
      D.31559 = bblock.70->block_num;
      printf ("converting (in B%d: stack: %d) %s", D.31559, D.31453, D.31558);
      <D.31557>:
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      switch (D.31561) <default: <D.28496>, case 0: <D.27669>, case 1: <D.27671>, case 2: <D.27672>, case 3: <D.27673>, case 4: <D.27674>, case 5: <D.27675>, case 6: <D.27676>, case 7: <D.27677>, case 8: <D.27678>, case 9: <D.27679>, case 10: <D.27680>, case 11: <D.27681>, case 12: <D.27682>, case 13: <D.27683>, case 14: <D.27684>, case 15: <D.27685>, case 16: <D.27688>, case 17: <D.27689>, case 18: <D.27690>, case 19: <D.27694>, case 20: <D.27695>, case 21: <D.27696>, case 22: <D.27697>, case 23: <D.27698>, case 24: <D.27699>, case 25: <D.27700>, case 26: <D.27701>, case 27: <D.27702>, case 28: <D.27703>, case 29: <D.27704>, case 30: <D.27705>, case 31: <D.27706>, case 32: <D.27707>, case 33: <D.27708>, case 34: <D.27709>, case 35: <D.27715>, case 37: <D.27721>, case 38: <D.27724>, case 39: <D.27725>, case 40: <D.27739>, case 41: <D.27738>, case 42: <D.27874>, case 43: <D.27880>, case 44: <D.27893>, case 45: <D.27894>, case 46: <D.27881>, case 47: <D.27882>, case 48: <D.27883>, case 49: <D.27884>, case 50: <D.27885>, case 51: <D.27886>, case 52: <D.27887>, case 53: <D.27888>, case 54: <D.27889>, case 55: <D.27890>, case 56: <D.27892>, case 57: <D.27895>, case 58: <D.27896>, case 59: <D.27901>, case 60: <D.27902>, case 61: <D.27903>, case 62: <D.27904>, case 63: <D.27905>, case 64: <D.27906>, case 65: <D.27907>, case 66: <D.27908>, case 67: <D.27909>, case 68: <D.27910>, case 69: <D.27912>, case 70: <D.27941>, case 71: <D.27942>, case 72: <D.27943>, case 73: <D.27944>, case 74: <D.27945>, case 75: <D.27946>, case 76: <D.27947>, case 77: <D.27948>, case 78: <D.27949>, case 79: <D.27950>, case 80: <D.27951>, case 81: <D.27958>, case 82: <D.27959>, case 83: <D.27960>, case 84: <D.27961>, case 85: <D.27962>, case 86: <D.27963>, case 87: <D.27964>, case 88: <D.27968>, case 89: <D.27969>, case 90: <D.27966>, case 91: <D.27970>, case 92: <D.27971>, case 93: <D.27972>, case 94: <D.27973>, case 95: <D.27974>, case 96: <D.27975>, case 97: <D.27976>, case 98: <D.27977>, case 99: <D.27978>, case 100: <D.27979>, case 101: <D.27983>, case 102: <D.27984>, case 103: <D.27985>, case 104: <D.27986>, case 105: <D.27987>, case 106: <D.27991>, case 107: <D.27988>, case 108: <D.27989>, case 109: <D.27990>, case 110: <D.27992>, case 111: <D.27740>, case 112: <D.28027>, case 113: <D.28031>, case 114: <D.28041>, case 115: <D.28046>, case 116: <D.28070>, case 117: <D.28076>, case 118: <D.27995>, case 119: <D.28494>, case 120: <D.28495>, case 121: <D.28103>, case 122: <D.28324>, case 123: <D.28107>, case 124: <D.28108>, case 125: <D.28109>, case 126: <D.28110>, case 127: <D.28111>, case 128: <D.28112>, case 129: <D.28209>, case 130: <D.28005>, case 131: <D.28006>, case 132: <D.28007>, case 133: <D.28008>, case 134: <D.28009>, case 135: <D.28010>, case 136: <D.28011>, case 137: <D.28012>, case 138: <D.28013>, case 139: <D.28014>, case 140: <D.28088>, case 141: <D.28210>, case 142: <D.28224>, case 143: <D.28225>, case 144: <D.28228>, case 145: <D.28229>, case 146: <D.28230>, case 147: <D.28231>, case 148: <D.28232>, case 149: <D.28233>, case 150: <D.28234>, case 151: <D.28235>, case 152: <D.28236>, case 153: <D.28237>, case 154: <D.28238>, case 155: <D.28259>, case 156: <D.28260>, case 157: <D.28261>, case 158: <D.28262>, case 159: <D.28263>, case 160: <D.28264>, case 161: <D.28265>, case 162: <D.28266>, case 163: <D.28227>, case 164: <D.28267>, case 165: <D.28082>, case 179: <D.27998>, case 180: <D.28002>, case 181: <D.27999>, case 182: <D.28003>, case 183: <D.27997>, case 184: <D.28004>, case 185: <D.27993>, case 186: <D.27994>, case 194: <D.28269>, case 195: <D.28268>, case 198: <D.28280>, case 208: <D.28299>, case 209: <D.28015>, case 210: <D.28016>, case 211: <D.28017>, case 212: <D.28000>, case 213: <D.28001>, case 214: <D.28019>, case 215: <D.28020>, case 216: <D.28021>, case 217: <D.28022>, case 218: <D.28023>, case 219: <D.28024>, case 220: <D.28325>, case 221: <D.28329>, case 222: <D.28330>, case 223: <D.27965>, case 224: <D.28018>, case 240: <D.28351>, case 254: <D.28412>>
      <D.27669>:
      D.31562 = seq_points != 0;
      D.31563 = sym_seq_points == 0;
      D.31564 = D.31562 & D.31563;
      if (D.31564 != 0) goto <D.31565>; else goto <D.31566>;
      <D.31565>:
      if (sp != stack_start) goto <D.31567>; else goto <D.31568>;
      <D.31567>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ip.75 = (long int) ip;
      D.30821 = header->code;
      D.31371 = (long int) D.30821;
      D.31372 = ip.75 - D.31371;
      ins->data.op[1].const_val = D.31372;
      ins->flags = 0;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.31569>; else goto <D.31570>;
      <D.31569>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.31571>;
      <D.31570>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.31571>:
      <D.31568>:
      <D.31566>:
      D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.31572 = D.30660 & 16;
      if (D.31572 != 0) goto <D.31573>; else goto <D.31574>;
      <D.31573>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 317;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      goto <D.31575>;
      <D.31574>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 316;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      <D.31575>:
      ip = ip + 1;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.31576>; else goto <D.31577>;
      <D.31576>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.31578>;
      <D.31577>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.31578>:
      goto <D.27670>;
      <D.27671>:
      D.30642 = cfg->method;
      D.31579 = should_insert_brekpoint (D.30642);
      if (D.31579 != 0) goto <D.31580>; else goto <D.31581>;
      <D.31580>:
      ins = mono_emit_jit_icall (cfg, mono_debugger_agent_user_break, 0B);
      goto <D.31582>;
      <D.31581>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 316;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      <D.31582>:
      ip = ip + 1;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.31583>; else goto <D.31584>;
      <D.31583>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.31585>;
      <D.31584>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.31585>:
      goto <D.27670>;
      <D.27672>:
      <D.27673>:
      <D.27674>:
      <D.27675>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.31587>; else goto <D.31588>;
      <D.31587>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31589>; else goto <D.31590>;
      <D.31589>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31591>; else goto <D.31592>;
      <D.31591>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31592>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31590>:
      D.31593 = mini_get_debug_options ();
      D.31594 = D.31593->break_on_unverified;
      if (D.31594 != 0) goto <D.31595>; else goto unverified;
      <D.31595>:
      __asm__ __volatile__("int $03");
      <D.31588>:
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      n = D.31561 + -2;
      n.81 = (unsigned int) n;
      if (n.81 >= num_args) goto <D.31597>; else goto <D.31598>;
      <D.31597>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31599>; else goto <D.31600>;
      <D.31599>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31601>; else goto <D.31602>;
      <D.31601>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31602>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31600>:
      D.31603 = mini_get_debug_options ();
      D.31604 = D.31603->break_on_unverified;
      if (D.31604 != 0) goto <D.31605>; else goto unverified;
      <D.31605>:
      __asm__ __volatile__("int $03");
      <D.31598>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      D.31610 = mono_type_to_regmove (cfg, D.31609);
      D.31611 = (short unsigned int) D.31610;
      ins->opcode = D.31611;
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      type_to_eval_stack_type (cfg, D.31609, ins);
      D.31280 = cfg->args;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31612 = D.31280 + D.31607;
      D.31613 = *D.31612;
      D.31614 = D.31613->klass;
      ins->klass = D.31614;
      D.31280 = cfg->args;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31612 = D.31280 + D.31607;
      D.31613 = *D.31612;
      D.31615 = D.31613->dreg;
      ins->sreg1 = D.31615;
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.31616 = alloc_dreg (cfg, D.31427);
      D.31617 = (int) D.31616;
      ins->dreg = D.31617;
      D.31430 = ins->opcode;
      if (D.31430 == 431) goto <D.31618>; else goto <D.31619>;
      <D.31618>:
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      D.31620 = mono_class_from_mono_type (D.31609);
      ins->klass = D.31620;
      <D.31619>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.31621>; else goto <D.31622>;
      <D.31621>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.31623>;
      <D.31622>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.31623>:
      ip = ip + 1;
      sp.82 = sp;
      sp = sp.82 + 8;
      *sp.82 = ins;
      goto <D.27670>;
      <D.27676>:
      <D.27677>:
      <D.27678>:
      <D.27679>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.31625>; else goto <D.31626>;
      <D.31625>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31627>; else goto <D.31628>;
      <D.31627>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31629>; else goto <D.31630>;
      <D.31629>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31630>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31628>:
      D.31631 = mini_get_debug_options ();
      D.31632 = D.31631->break_on_unverified;
      if (D.31632 != 0) goto <D.31633>; else goto unverified;
      <D.31633>:
      __asm__ __volatile__("int $03");
      <D.31626>:
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      n = D.31561 + -6;
      n.81 = (unsigned int) n;
      D.31267 = header->num_locals;
      D.31634 = (unsigned int) D.31267;
      if (n.81 >= D.31634) goto <D.31635>; else goto <D.31636>;
      <D.31635>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31637>; else goto <D.31638>;
      <D.31637>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31639>; else goto <D.31640>;
      <D.31639>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31640>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31638>:
      D.31641 = mini_get_debug_options ();
      D.31642 = D.31641->break_on_unverified;
      if (D.31642 != 0) goto <D.31643>; else goto unverified;
      <D.31643>:
      __asm__ __volatile__("int $03");
      <D.31636>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31255 = header->locals[n];
      D.31644 = mono_type_to_regmove (cfg, D.31255);
      D.31645 = (short unsigned int) D.31644;
      ins->opcode = D.31645;
      D.31255 = header->locals[n];
      type_to_eval_stack_type (cfg, D.31255, ins);
      D.31646 = cfg->locals;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31647 = D.31646 + D.31607;
      D.31648 = *D.31647;
      D.31649 = D.31648->klass;
      ins->klass = D.31649;
      D.31646 = cfg->locals;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31647 = D.31646 + D.31607;
      D.31648 = *D.31647;
      D.31650 = D.31648->dreg;
      ins->sreg1 = D.31650;
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.31651 = alloc_dreg (cfg, D.31427);
      D.31652 = (int) D.31651;
      ins->dreg = D.31652;
      D.31430 = ins->opcode;
      if (D.31430 == 431) goto <D.31653>; else goto <D.31654>;
      <D.31653>:
      D.31255 = header->locals[n];
      D.31655 = mono_class_from_mono_type (D.31255);
      ins->klass = D.31655;
      <D.31654>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.31656>; else goto <D.31657>;
      <D.31656>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.31658>;
      <D.31657>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.31658>:
      ip = ip + 1;
      sp.83 = sp;
      sp = sp.83 + 8;
      *sp.83 = ins;
      goto <D.27670>;
      <D.27680>:
      <D.27681>:
      <D.27682>:
      <D.27683>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.31660>; else goto <D.31661>;
      <D.31660>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31662>; else goto <D.31663>;
      <D.31662>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31664>; else goto <D.31665>;
      <D.31664>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31665>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31663>:
      D.31666 = mini_get_debug_options ();
      D.31667 = D.31666->break_on_unverified;
      if (D.31667 != 0) goto <D.31668>; else goto unverified;
      <D.31668>:
      __asm__ __volatile__("int $03");
      <D.31661>:
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      n = D.31561 + -10;
      n.81 = (unsigned int) n;
      D.31267 = header->num_locals;
      D.31634 = (unsigned int) D.31267;
      if (n.81 >= D.31634) goto <D.31669>; else goto <D.31670>;
      <D.31669>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31671>; else goto <D.31672>;
      <D.31671>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31673>; else goto <D.31674>;
      <D.31673>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31674>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31672>:
      D.31675 = mini_get_debug_options ();
      D.31676 = D.31675->break_on_unverified;
      if (D.31676 != 0) goto <D.31677>; else goto unverified;
      <D.31677>:
      __asm__ __volatile__("int $03");
      <D.31670>:
      sp = sp + 18446744073709551608;
      if (dont_verify_stloc == 0) goto <D.31678>; else goto <D.31679>;
      <D.31678>:
      D.31680 = *sp;
      D.31255 = header->locals[n];
      D.31681 = target_type_is_incompatible (cfg, D.31255, D.31680);
      if (D.31681 != 0) goto <D.31682>; else goto <D.31683>;
      <D.31682>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31684>; else goto <D.31685>;
      <D.31684>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31686>; else goto <D.31687>;
      <D.31686>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31687>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31685>:
      D.31688 = mini_get_debug_options ();
      D.31689 = D.31688->break_on_unverified;
      if (D.31689 != 0) goto <D.31690>; else goto unverified;
      <D.31690>:
      __asm__ __volatile__("int $03");
      <D.31683>:
      <D.31679>:
      emit_stloc_ir (cfg, sp, header, n);
      ip = ip + 1;
      inline_costs = inline_costs + 1;
      goto <D.27670>;
      <D.27684>:
      D.31691 = ip + 2;
      if (D.31691 > end) goto <D.31692>; else goto <D.31693>;
      <D.31692>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31694>; else goto <D.31695>;
      <D.31694>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31696>; else goto <D.31697>;
      <D.31696>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31697>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31695>:
      D.31698 = mini_get_debug_options ();
      D.31699 = D.31698->break_on_unverified;
      if (D.31699 != 0) goto <D.31700>; else goto unverified;
      <D.31700>:
      __asm__ __volatile__("int $03");
      <D.31693>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.31701>; else goto <D.31702>;
      <D.31701>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31703>; else goto <D.31704>;
      <D.31703>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31705>; else goto <D.31706>;
      <D.31705>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31706>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31704>:
      D.31707 = mini_get_debug_options ();
      D.31708 = D.31707->break_on_unverified;
      if (D.31708 != 0) goto <D.31709>; else goto unverified;
      <D.31709>:
      __asm__ __volatile__("int $03");
      <D.31702>:
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      n = (int) D.31711;
      n.81 = (unsigned int) n;
      if (n.81 >= num_args) goto <D.31712>; else goto <D.31713>;
      <D.31712>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31714>; else goto <D.31715>;
      <D.31714>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31716>; else goto <D.31717>;
      <D.31716>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31717>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31715>:
      D.31718 = mini_get_debug_options ();
      D.31719 = D.31718->break_on_unverified;
      if (D.31719 != 0) goto <D.31720>; else goto unverified;
      <D.31720>:
      __asm__ __volatile__("int $03");
      <D.31713>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      D.31721 = mono_type_to_regmove (cfg, D.31609);
      D.31722 = (short unsigned int) D.31721;
      ins->opcode = D.31722;
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      type_to_eval_stack_type (cfg, D.31609, ins);
      D.31280 = cfg->args;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31612 = D.31280 + D.31607;
      D.31613 = *D.31612;
      D.31614 = D.31613->klass;
      ins->klass = D.31614;
      D.31280 = cfg->args;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31612 = D.31280 + D.31607;
      D.31613 = *D.31612;
      D.31615 = D.31613->dreg;
      ins->sreg1 = D.31615;
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.31723 = alloc_dreg (cfg, D.31427);
      D.31724 = (int) D.31723;
      ins->dreg = D.31724;
      D.31430 = ins->opcode;
      if (D.31430 == 431) goto <D.31725>; else goto <D.31726>;
      <D.31725>:
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      D.31727 = mono_class_from_mono_type (D.31609);
      ins->klass = D.31727;
      <D.31726>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.31728>; else goto <D.31729>;
      <D.31728>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.31730>;
      <D.31729>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.31730>:
      sp.84 = sp;
      sp = sp.84 + 8;
      *sp.84 = ins;
      ip = ip + 2;
      goto <D.27670>;
      <D.27685>:
      D.31691 = ip + 2;
      if (D.31691 > end) goto <D.31732>; else goto <D.31733>;
      <D.31732>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31734>; else goto <D.31735>;
      <D.31734>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31736>; else goto <D.31737>;
      <D.31736>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31737>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31735>:
      D.31738 = mini_get_debug_options ();
      D.31739 = D.31738->break_on_unverified;
      if (D.31739 != 0) goto <D.31740>; else goto unverified;
      <D.31740>:
      __asm__ __volatile__("int $03");
      <D.31733>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.31741>; else goto <D.31742>;
      <D.31741>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31743>; else goto <D.31744>;
      <D.31743>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31745>; else goto <D.31746>;
      <D.31745>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31746>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31744>:
      D.31747 = mini_get_debug_options ();
      D.31748 = D.31747->break_on_unverified;
      if (D.31748 != 0) goto <D.31749>; else goto unverified;
      <D.31749>:
      __asm__ __volatile__("int $03");
      <D.31742>:
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      n = (int) D.31711;
      n.81 = (unsigned int) n;
      if (n.81 >= num_args) goto <D.31750>; else goto <D.31751>;
      <D.31750>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31752>; else goto <D.31753>;
      <D.31752>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31754>; else goto <D.31755>;
      <D.31754>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31755>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31753>:
      D.31756 = mini_get_debug_options ();
      D.31757 = D.31756->break_on_unverified;
      if (D.31757 != 0) goto <D.31758>; else goto unverified;
      <D.31758>:
      __asm__ __volatile__("int $03");
      <D.31751>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31759 = arg_array + D.31607;
      D.31760 = *D.31759;
      ins->data.op[0].p = D.31760;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31759 = arg_array + D.31607;
      D.31760 = *D.31759;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31759 = arg_array + D.31607;
      D.31760 = *D.31759;
      D.31761 = D.31760->flags;
      D.31762 = D.31761 | 16;
      D.31760->flags = D.31762;
      ins->type = 5;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31759 = arg_array + D.31607;
      D.31760 = *D.31759;
      D.31763 = D.31760->klass;
      ins->klass = D.31763;
      D.31764 = alloc_dreg (cfg, 5);
      D.31765 = (int) D.31764;
      ins->dreg = D.31765;
      cfg->has_indirection = 1;
      D.30822 = cfg->gsharedvt;
      D.31766 = D.30822 != 0;
      D.31767 = (long int) D.31766;
      D.31768 = __builtin_expect (D.31767, 0);
      if (D.31768 != 0) goto <D.31769>; else goto <D.31770>;
      <D.31769>:
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31759 = arg_array + D.31607;
      D.31760 = *D.31759;
      D.31771 = D.31760->data.op[1].vtype;
      D.31772 = mini_is_gsharedvt_variable_type (cfg, D.31771);
      if (D.31772 != 0) goto <D.31773>; else goto <D.31774>;
      <D.31773>:
      handle_gsharedvt_ldaddr (cfg);
      <D.31774>:
      <D.31770>:
      if (0 != 0) goto <D.31775>; else goto <D.31776>;
      <D.31775>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31759 = arg_array + D.31607;
        D.31760 = *D.31759;
        D.31778 = D.31760->dreg;
        D.31779 = D.31778 + 1;
        D.31780 = (unsigned int) D.31779;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.31780 < D.31781) goto <D.31782>; else goto <D.31783>;
        <D.31782>:
        D.31784 = cfg->vreg_to_inst;
        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31759 = arg_array + D.31607;
        D.31760 = *D.31759;
        D.31778 = D.31760->dreg;
        D.31785 = (sizetype) D.31778;
        D.31786 = D.31785 + 1;
        D.31787 = D.31786 * 8;
        D.31788 = D.31784 + D.31787;
        iftmp.85 = *D.31788;
        goto <D.31789>;
        <D.31783>:
        iftmp.85 = 0B;
        <D.31789>:
        var1 = iftmp.85;
        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31759 = arg_array + D.31607;
        D.31760 = *D.31759;
        D.31778 = D.31760->dreg;
        D.31791 = D.31778 + 2;
        D.31792 = (unsigned int) D.31791;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.31792 < D.31781) goto <D.31793>; else goto <D.31794>;
        <D.31793>:
        D.31784 = cfg->vreg_to_inst;
        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31759 = arg_array + D.31607;
        D.31760 = *D.31759;
        D.31778 = D.31760->dreg;
        D.31785 = (sizetype) D.31778;
        D.31795 = D.31785 + 2;
        D.31796 = D.31795 * 8;
        D.31797 = D.31784 + D.31796;
        iftmp.86 = *D.31797;
        goto <D.31798>;
        <D.31794>:
        iftmp.86 = 0B;
        <D.31798>:
        var2 = iftmp.86;
        D.31799 = var1 == 0B;
        D.31800 = (long int) D.31799;
        D.31801 = __builtin_expect (D.31800, 0);
        if (D.31801 != 0) goto <D.31802>; else goto <D.31803>;
        <D.31802>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7323, "var1");
        <D.31803>:
        D.31804 = var2 == 0B;
        D.31805 = (long int) D.31804;
        D.31806 = __builtin_expect (D.31805, 0);
        if (D.31806 != 0) goto <D.31807>; else goto <D.31808>;
        <D.31807>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7323, "var2");
        <D.31808>:
        D.31809 = var1->flags;
        D.31810 = D.31809 | 16;
        var1->flags = D.31810;
        D.31811 = var2->flags;
        D.31812 = D.31811 | 16;
        var2->flags = D.31812;
      }
      <D.31776>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.31813>; else goto <D.31814>;
      <D.31813>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.31815>;
      <D.31814>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.31815>:
      sp.87 = sp;
      sp = sp.87 + 8;
      *sp.87 = ins;
      ip = ip + 2;
      goto <D.27670>;
      <D.27688>:
      D.31691 = ip + 2;
      if (D.31691 > end) goto <D.31817>; else goto <D.31818>;
      <D.31817>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31819>; else goto <D.31820>;
      <D.31819>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31821>; else goto <D.31822>;
      <D.31821>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31822>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31820>:
      D.31823 = mini_get_debug_options ();
      D.31824 = D.31823->break_on_unverified;
      if (D.31824 != 0) goto <D.31825>; else goto unverified;
      <D.31825>:
      __asm__ __volatile__("int $03");
      <D.31818>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.31826>; else goto <D.31827>;
      <D.31826>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31828>; else goto <D.31829>;
      <D.31828>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31830>; else goto <D.31831>;
      <D.31830>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31831>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31829>:
      D.31832 = mini_get_debug_options ();
      D.31833 = D.31832->break_on_unverified;
      if (D.31833 != 0) goto <D.31834>; else goto unverified;
      <D.31834>:
      __asm__ __volatile__("int $03");
      <D.31827>:
      sp = sp + 18446744073709551608;
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      n = (int) D.31711;
      n.81 = (unsigned int) n;
      if (n.81 >= num_args) goto <D.31835>; else goto <D.31836>;
      <D.31835>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31837>; else goto <D.31838>;
      <D.31837>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31839>; else goto <D.31840>;
      <D.31839>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31840>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31838>:
      D.31841 = mini_get_debug_options ();
      D.31842 = D.31841->break_on_unverified;
      if (D.31842 != 0) goto <D.31843>; else goto unverified;
      <D.31843>:
      __asm__ __volatile__("int $03");
      <D.31836>:
      if (dont_verify_stloc == 0) goto <D.31844>; else goto <D.31845>;
      <D.31844>:
      D.31680 = *sp;
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      D.31846 = (long unsigned int) D.31711;
      D.31847 = D.31846 * 8;
      D.31848 = param_types + D.31847;
      D.31849 = *D.31848;
      D.31850 = target_type_is_incompatible (cfg, D.31849, D.31680);
      if (D.31850 != 0) goto <D.31851>; else goto <D.31852>;
      <D.31851>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31853>; else goto <D.31854>;
      <D.31853>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31855>; else goto <D.31856>;
      <D.31855>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31856>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31854>:
      D.31857 = mini_get_debug_options ();
      D.31858 = D.31857->break_on_unverified;
      if (D.31858 != 0) goto <D.31859>; else goto unverified;
      <D.31859>:
      __asm__ __volatile__("int $03");
      <D.31852>:
      <D.31845>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      D.31860 = mono_type_to_regmove (cfg, D.31609);
      D.31861 = (short unsigned int) D.31860;
      ins->opcode = D.31861;
      D.31280 = cfg->args;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31612 = D.31280 + D.31607;
      D.31613 = *D.31612;
      D.31614 = D.31613->klass;
      ins->klass = D.31614;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.31280 = cfg->args;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31612 = D.31280 + D.31607;
      D.31613 = *D.31612;
      D.31615 = D.31613->dreg;
      ins->dreg = D.31615;
      D.31430 = ins->opcode;
      if (D.31430 == 431) goto <D.31863>; else goto <D.31864>;
      <D.31863>:
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      D.31865 = mono_class_from_mono_type (D.31609);
      ins->klass = D.31865;
      <D.31864>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.31866>; else goto <D.31867>;
      <D.31866>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.31868>;
      <D.31867>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.31868>:
      ip = ip + 2;
      goto <D.27670>;
      <D.27689>:
      D.31691 = ip + 2;
      if (D.31691 > end) goto <D.31869>; else goto <D.31870>;
      <D.31869>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31871>; else goto <D.31872>;
      <D.31871>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31873>; else goto <D.31874>;
      <D.31873>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31874>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31872>:
      D.31875 = mini_get_debug_options ();
      D.31876 = D.31875->break_on_unverified;
      if (D.31876 != 0) goto <D.31877>; else goto unverified;
      <D.31877>:
      __asm__ __volatile__("int $03");
      <D.31870>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.31878>; else goto <D.31879>;
      <D.31878>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31880>; else goto <D.31881>;
      <D.31880>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31882>; else goto <D.31883>;
      <D.31882>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31883>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31881>:
      D.31884 = mini_get_debug_options ();
      D.31885 = D.31884->break_on_unverified;
      if (D.31885 != 0) goto <D.31886>; else goto unverified;
      <D.31886>:
      __asm__ __volatile__("int $03");
      <D.31879>:
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      n = (int) D.31711;
      n.81 = (unsigned int) n;
      D.31267 = header->num_locals;
      D.31634 = (unsigned int) D.31267;
      if (n.81 >= D.31634) goto <D.31887>; else goto <D.31888>;
      <D.31887>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31889>; else goto <D.31890>;
      <D.31889>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31891>; else goto <D.31892>;
      <D.31891>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31892>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31890>:
      D.31893 = mini_get_debug_options ();
      D.31894 = D.31893->break_on_unverified;
      if (D.31894 != 0) goto <D.31895>; else goto unverified;
      <D.31895>:
      __asm__ __volatile__("int $03");
      <D.31888>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31255 = header->locals[n];
      D.31896 = mono_type_to_regmove (cfg, D.31255);
      D.31897 = (short unsigned int) D.31896;
      ins->opcode = D.31897;
      D.31255 = header->locals[n];
      type_to_eval_stack_type (cfg, D.31255, ins);
      D.31646 = cfg->locals;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31647 = D.31646 + D.31607;
      D.31648 = *D.31647;
      D.31649 = D.31648->klass;
      ins->klass = D.31649;
      D.31646 = cfg->locals;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31647 = D.31646 + D.31607;
      D.31648 = *D.31647;
      D.31650 = D.31648->dreg;
      ins->sreg1 = D.31650;
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.31898 = alloc_dreg (cfg, D.31427);
      D.31899 = (int) D.31898;
      ins->dreg = D.31899;
      D.31430 = ins->opcode;
      if (D.31430 == 431) goto <D.31900>; else goto <D.31901>;
      <D.31900>:
      D.31255 = header->locals[n];
      D.31902 = mono_class_from_mono_type (D.31255);
      ins->klass = D.31902;
      <D.31901>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.31903>; else goto <D.31904>;
      <D.31903>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.31905>;
      <D.31904>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.31905>:
      sp.88 = sp;
      sp = sp.88 + 8;
      *sp.88 = ins;
      ip = ip + 2;
      goto <D.27670>;
      <D.27690>:
      {
        unsigned char * tmp_ip;

        D.31691 = ip + 2;
        if (D.31691 > end) goto <D.31907>; else goto <D.31908>;
        <D.31907>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.31909>; else goto <D.31910>;
        <D.31909>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.31911>; else goto <D.31912>;
        <D.31911>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31912>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31910>:
        D.31913 = mini_get_debug_options ();
        D.31914 = D.31913->break_on_unverified;
        if (D.31914 != 0) goto <D.31915>; else goto unverified;
        <D.31915>:
        __asm__ __volatile__("int $03");
        <D.31908>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31362 = header->max_stack;
        D.31586 = (long int) D.31362;
        if (D.31452 >= D.31586) goto <D.31916>; else goto <D.31917>;
        <D.31916>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.31918>; else goto <D.31919>;
        <D.31918>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.31920>; else goto <D.31921>;
        <D.31920>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31921>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31919>:
        D.31922 = mini_get_debug_options ();
        D.31923 = D.31922->break_on_unverified;
        if (D.31923 != 0) goto <D.31924>; else goto unverified;
        <D.31924>:
        __asm__ __volatile__("int $03");
        <D.31917>:
        D.31710 = ip + 1;
        D.31711 = *D.31710;
        D.31925 = (short unsigned int) D.31711;
        D.31267 = header->num_locals;
        if (D.31925 >= D.31267) goto <D.31926>; else goto <D.31927>;
        <D.31926>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.31928>; else goto <D.31929>;
        <D.31928>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.31930>; else goto <D.31931>;
        <D.31930>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.31931>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.31929>:
        D.31932 = mini_get_debug_options ();
        D.31933 = D.31932->break_on_unverified;
        if (D.31933 != 0) goto <D.31934>; else goto unverified;
        <D.31934>:
        __asm__ __volatile__("int $03");
        <D.31927>:
        tmp_ip = emit_optimized_ldloca_ir (cfg, ip, end, 1);
        if (tmp_ip != 0B) goto <D.31935>; else goto <D.31936>;
        <D.31935>:
        ip = tmp_ip;
        inline_costs = inline_costs + 1;
        goto <D.27670>;
        <D.31936>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.31646 = cfg->locals;
        D.31710 = ip + 1;
        D.31711 = *D.31710;
        D.31846 = (long unsigned int) D.31711;
        D.31847 = D.31846 * 8;
        D.31937 = D.31646 + D.31847;
        D.31938 = *D.31937;
        ins->data.op[0].p = D.31938;
        D.31646 = cfg->locals;
        D.31710 = ip + 1;
        D.31711 = *D.31710;
        D.31846 = (long unsigned int) D.31711;
        D.31847 = D.31846 * 8;
        D.31937 = D.31646 + D.31847;
        D.31938 = *D.31937;
        D.31646 = cfg->locals;
        D.31710 = ip + 1;
        D.31711 = *D.31710;
        D.31846 = (long unsigned int) D.31711;
        D.31847 = D.31846 * 8;
        D.31937 = D.31646 + D.31847;
        D.31938 = *D.31937;
        D.31939 = D.31938->flags;
        D.31940 = D.31939 | 16;
        D.31938->flags = D.31940;
        ins->type = 5;
        D.31646 = cfg->locals;
        D.31710 = ip + 1;
        D.31711 = *D.31710;
        D.31846 = (long unsigned int) D.31711;
        D.31847 = D.31846 * 8;
        D.31937 = D.31646 + D.31847;
        D.31938 = *D.31937;
        D.31941 = D.31938->klass;
        ins->klass = D.31941;
        D.31942 = alloc_dreg (cfg, 5);
        D.31943 = (int) D.31942;
        ins->dreg = D.31943;
        cfg->has_indirection = 1;
        D.30822 = cfg->gsharedvt;
        D.31766 = D.30822 != 0;
        D.31767 = (long int) D.31766;
        D.31768 = __builtin_expect (D.31767, 0);
        if (D.31768 != 0) goto <D.31944>; else goto <D.31945>;
        <D.31944>:
        D.31646 = cfg->locals;
        D.31710 = ip + 1;
        D.31711 = *D.31710;
        D.31846 = (long unsigned int) D.31711;
        D.31847 = D.31846 * 8;
        D.31937 = D.31646 + D.31847;
        D.31938 = *D.31937;
        D.31946 = D.31938->data.op[1].vtype;
        D.31947 = mini_is_gsharedvt_variable_type (cfg, D.31946);
        if (D.31947 != 0) goto <D.31948>; else goto <D.31949>;
        <D.31948>:
        handle_gsharedvt_ldaddr (cfg);
        <D.31949>:
        <D.31945>:
        if (0 != 0) goto <D.31950>; else goto <D.31951>;
        <D.31950>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.31646 = cfg->locals;
          D.31710 = ip + 1;
          D.31711 = *D.31710;
          D.31846 = (long unsigned int) D.31711;
          D.31847 = D.31846 * 8;
          D.31937 = D.31646 + D.31847;
          D.31938 = *D.31937;
          D.31953 = D.31938->dreg;
          D.31954 = D.31953 + 1;
          D.31955 = (unsigned int) D.31954;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.31955 < D.31781) goto <D.31956>; else goto <D.31957>;
          <D.31956>:
          D.31784 = cfg->vreg_to_inst;
          D.31646 = cfg->locals;
          D.31710 = ip + 1;
          D.31711 = *D.31710;
          D.31846 = (long unsigned int) D.31711;
          D.31847 = D.31846 * 8;
          D.31937 = D.31646 + D.31847;
          D.31938 = *D.31937;
          D.31953 = D.31938->dreg;
          D.31958 = (sizetype) D.31953;
          D.31959 = D.31958 + 1;
          D.31960 = D.31959 * 8;
          D.31961 = D.31784 + D.31960;
          iftmp.89 = *D.31961;
          goto <D.31962>;
          <D.31957>:
          iftmp.89 = 0B;
          <D.31962>:
          var1 = iftmp.89;
          D.31646 = cfg->locals;
          D.31710 = ip + 1;
          D.31711 = *D.31710;
          D.31846 = (long unsigned int) D.31711;
          D.31847 = D.31846 * 8;
          D.31937 = D.31646 + D.31847;
          D.31938 = *D.31937;
          D.31953 = D.31938->dreg;
          D.31964 = D.31953 + 2;
          D.31965 = (unsigned int) D.31964;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.31965 < D.31781) goto <D.31966>; else goto <D.31967>;
          <D.31966>:
          D.31784 = cfg->vreg_to_inst;
          D.31646 = cfg->locals;
          D.31710 = ip + 1;
          D.31711 = *D.31710;
          D.31846 = (long unsigned int) D.31711;
          D.31847 = D.31846 * 8;
          D.31937 = D.31646 + D.31847;
          D.31938 = *D.31937;
          D.31953 = D.31938->dreg;
          D.31958 = (sizetype) D.31953;
          D.31968 = D.31958 + 2;
          D.31969 = D.31968 * 8;
          D.31970 = D.31784 + D.31969;
          iftmp.90 = *D.31970;
          goto <D.31971>;
          <D.31967>:
          iftmp.90 = 0B;
          <D.31971>:
          var2 = iftmp.90;
          D.31972 = var1 == 0B;
          D.31973 = (long int) D.31972;
          D.31974 = __builtin_expect (D.31973, 0);
          if (D.31974 != 0) goto <D.31975>; else goto <D.31976>;
          <D.31975>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7360, "var1");
          <D.31976>:
          D.31977 = var2 == 0B;
          D.31978 = (long int) D.31977;
          D.31979 = __builtin_expect (D.31978, 0);
          if (D.31979 != 0) goto <D.31980>; else goto <D.31981>;
          <D.31980>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7360, "var2");
          <D.31981>:
          D.31982 = var1->flags;
          D.31983 = D.31982 | 16;
          var1->flags = D.31983;
          D.31984 = var2->flags;
          D.31985 = D.31984 | 16;
          var2->flags = D.31985;
        }
        <D.31951>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.31986>; else goto <D.31987>;
        <D.31986>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.31988>;
        <D.31987>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.31988>:
        sp.91 = sp;
        sp = sp.91 + 8;
        *sp.91 = ins;
        ip = ip + 2;
        goto <D.27670>;
      }
      <D.27694>:
      D.31691 = ip + 2;
      if (D.31691 > end) goto <D.31990>; else goto <D.31991>;
      <D.31990>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.31992>; else goto <D.31993>;
      <D.31992>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.31994>; else goto <D.31995>;
      <D.31994>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.31995>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.31993>:
      D.31996 = mini_get_debug_options ();
      D.31997 = D.31996->break_on_unverified;
      if (D.31997 != 0) goto <D.31998>; else goto unverified;
      <D.31998>:
      __asm__ __volatile__("int $03");
      <D.31991>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.31999>; else goto <D.32000>;
      <D.31999>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32001>; else goto <D.32002>;
      <D.32001>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32003>; else goto <D.32004>;
      <D.32003>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32004>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32002>:
      D.32005 = mini_get_debug_options ();
      D.32006 = D.32005->break_on_unverified;
      if (D.32006 != 0) goto <D.32007>; else goto unverified;
      <D.32007>:
      __asm__ __volatile__("int $03");
      <D.32000>:
      sp = sp + 18446744073709551608;
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      D.31925 = (short unsigned int) D.31711;
      D.31267 = header->num_locals;
      if (D.31925 >= D.31267) goto <D.32008>; else goto <D.32009>;
      <D.32008>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32010>; else goto <D.32011>;
      <D.32010>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32012>; else goto <D.32013>;
      <D.32012>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32013>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32011>:
      D.32014 = mini_get_debug_options ();
      D.32015 = D.32014->break_on_unverified;
      if (D.32015 != 0) goto <D.32016>; else goto unverified;
      <D.32016>:
      __asm__ __volatile__("int $03");
      <D.32009>:
      if (dont_verify_stloc == 0) goto <D.32017>; else goto <D.32018>;
      <D.32017>:
      D.31680 = *sp;
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      D.32019 = (int) D.31711;
      D.32020 = header->locals[D.32019];
      D.32021 = target_type_is_incompatible (cfg, D.32020, D.31680);
      if (D.32021 != 0) goto <D.32022>; else goto <D.32023>;
      <D.32022>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32024>; else goto <D.32025>;
      <D.32024>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32026>; else goto <D.32027>;
      <D.32026>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32027>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32025>:
      D.32028 = mini_get_debug_options ();
      D.32029 = D.32028->break_on_unverified;
      if (D.32029 != 0) goto <D.32030>; else goto unverified;
      <D.32030>:
      __asm__ __volatile__("int $03");
      <D.32023>:
      <D.32018>:
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      D.32019 = (int) D.31711;
      emit_stloc_ir (cfg, sp, header, D.32019);
      ip = ip + 2;
      inline_costs = inline_costs + 1;
      goto <D.27670>;
      <D.27695>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.32031>; else goto <D.32032>;
      <D.32031>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32033>; else goto <D.32034>;
      <D.32033>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32035>; else goto <D.32036>;
      <D.32035>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32036>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32034>:
      D.32037 = mini_get_debug_options ();
      D.32038 = D.32037->break_on_unverified;
      if (D.32038 != 0) goto <D.32039>; else goto unverified;
      <D.32039>:
      __asm__ __volatile__("int $03");
      <D.32032>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 363;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ins->data.op[0].p = 0B;
      ins->type = 3;
      D.32040 = alloc_dreg (cfg, 3);
      D.32041 = (int) D.32040;
      ins->dreg = D.32041;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.32042>; else goto <D.32043>;
      <D.32042>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.32044>;
      <D.32043>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.32044>:
      ins->type = 6;
      ip = ip + 1;
      sp.92 = sp;
      sp = sp.92 + 8;
      *sp.92 = ins;
      goto <D.27670>;
      <D.27696>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.32046>; else goto <D.32047>;
      <D.32046>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32048>; else goto <D.32049>;
      <D.32048>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32050>; else goto <D.32051>;
      <D.32050>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32051>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32049>:
      D.32052 = mini_get_debug_options ();
      D.32053 = D.32052->break_on_unverified;
      if (D.32053 != 0) goto <D.32054>; else goto unverified;
      <D.32054>:
      __asm__ __volatile__("int $03");
      <D.32047>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ins->data.op[0].const_val = -1;
      ins->type = 1;
      D.32055 = alloc_dreg (cfg, 1);
      D.32056 = (int) D.32055;
      ins->dreg = D.32056;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.32057>; else goto <D.32058>;
      <D.32057>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.32059>;
      <D.32058>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.32059>:
      ip = ip + 1;
      sp.93 = sp;
      sp = sp.93 + 8;
      *sp.93 = ins;
      goto <D.27670>;
      <D.27697>:
      <D.27698>:
      <D.27699>:
      <D.27700>:
      <D.27701>:
      <D.27702>:
      <D.27703>:
      <D.27704>:
      <D.27705>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.32061>; else goto <D.32062>;
      <D.32061>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32063>; else goto <D.32064>;
      <D.32063>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32065>; else goto <D.32066>;
      <D.32065>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32066>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32064>:
      D.32067 = mini_get_debug_options ();
      D.32068 = D.32067->break_on_unverified;
      if (D.32068 != 0) goto <D.32069>; else goto unverified;
      <D.32069>:
      __asm__ __volatile__("int $03");
      <D.32062>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      D.32070 = D.31561 + -22;
      D.32071 = (long int) D.32070;
      ins->data.op[0].const_val = D.32071;
      ins->type = 1;
      D.32072 = alloc_dreg (cfg, 1);
      D.32073 = (int) D.32072;
      ins->dreg = D.32073;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.32074>; else goto <D.32075>;
      <D.32074>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.32076>;
      <D.32075>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.32076>:
      ip = ip + 1;
      sp.94 = sp;
      sp = sp.94 + 8;
      *sp.94 = ins;
      goto <D.27670>;
      <D.27706>:
      D.31691 = ip + 2;
      if (D.31691 > end) goto <D.32078>; else goto <D.32079>;
      <D.32078>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32080>; else goto <D.32081>;
      <D.32080>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32082>; else goto <D.32083>;
      <D.32082>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32083>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32081>:
      D.32084 = mini_get_debug_options ();
      D.32085 = D.32084->break_on_unverified;
      if (D.32085 != 0) goto <D.32086>; else goto unverified;
      <D.32086>:
      __asm__ __volatile__("int $03");
      <D.32079>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.32087>; else goto <D.32088>;
      <D.32087>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32089>; else goto <D.32090>;
      <D.32089>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32091>; else goto <D.32092>;
      <D.32091>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32092>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32090>:
      D.32093 = mini_get_debug_options ();
      D.32094 = D.32093->break_on_unverified;
      if (D.32094 != 0) goto <D.32095>; else goto unverified;
      <D.32095>:
      __asm__ __volatile__("int $03");
      <D.32088>:
      ip = ip + 1;
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.32096 = MEM[(signed char *)ip];
      D.32097 = (long int) D.32096;
      ins->data.op[0].const_val = D.32097;
      ins->type = 1;
      D.32098 = alloc_dreg (cfg, 1);
      D.32099 = (int) D.32098;
      ins->dreg = D.32099;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.32100>; else goto <D.32101>;
      <D.32100>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.32102>;
      <D.32101>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.32102>:
      ip = ip + 1;
      sp.95 = sp;
      sp = sp.95 + 8;
      *sp.95 = ins;
      goto <D.27670>;
      <D.27707>:
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.32105>; else goto <D.32106>;
      <D.32105>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32107>; else goto <D.32108>;
      <D.32107>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32109>; else goto <D.32110>;
      <D.32109>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32110>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32108>:
      D.32111 = mini_get_debug_options ();
      D.32112 = D.32111->break_on_unverified;
      if (D.32112 != 0) goto <D.32113>; else goto unverified;
      <D.32113>:
      __asm__ __volatile__("int $03");
      <D.32106>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.32114>; else goto <D.32115>;
      <D.32114>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32116>; else goto <D.32117>;
      <D.32116>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32118>; else goto <D.32119>;
      <D.32118>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32119>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32117>:
      D.32120 = mini_get_debug_options ();
      D.32121 = D.32120->break_on_unverified;
      if (D.32121 != 0) goto <D.32122>; else goto unverified;
      <D.32122>:
      __asm__ __volatile__("int $03");
      <D.32115>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 362;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.32123 = ip + 1;
      D.32124 = *D.32123;
      D.32125 = (int) D.32124;
      D.32126 = (long int) D.32125;
      ins->data.op[0].const_val = D.32126;
      ins->type = 1;
      D.32127 = alloc_dreg (cfg, 1);
      D.32128 = (int) D.32127;
      ins->dreg = D.32128;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.32129>; else goto <D.32130>;
      <D.32129>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.32131>;
      <D.32130>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.32131>:
      ip = ip + 5;
      sp.96 = sp;
      sp = sp.96 + 8;
      *sp.96 = ins;
      goto <D.27670>;
      <D.27708>:
      D.32133 = ip + 9;
      if (D.32133 > end) goto <D.32134>; else goto <D.32135>;
      <D.32134>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32136>; else goto <D.32137>;
      <D.32136>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32138>; else goto <D.32139>;
      <D.32138>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32139>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32137>:
      D.32140 = mini_get_debug_options ();
      D.32141 = D.32140->break_on_unverified;
      if (D.32141 != 0) goto <D.32142>; else goto unverified;
      <D.32142>:
      __asm__ __volatile__("int $03");
      <D.32135>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.32143>; else goto <D.32144>;
      <D.32143>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32145>; else goto <D.32146>;
      <D.32145>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32147>; else goto <D.32148>;
      <D.32147>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32148>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32146>:
      D.32149 = mini_get_debug_options ();
      D.32150 = D.32149->break_on_unverified;
      if (D.32150 != 0) goto <D.32151>; else goto unverified;
      <D.32151>:
      __asm__ __volatile__("int $03");
      <D.32144>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 363;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ins->type = 2;
      D.32152 = alloc_dreg (cfg, 2);
      D.32153 = (int) D.32152;
      ins->dreg = D.32153;
      ip = ip + 1;
      D.32154 = MEM[(const guint64 *)ip];
      D.32155 = (long int) D.32154;
      ins->data.i8const = D.32155;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.32156>; else goto <D.32157>;
      <D.32156>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.32158>;
      <D.32157>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.32158>:
      ip = ip + 8;
      sp.97 = sp;
      sp = sp.97 + 8;
      *sp.97 = ins;
      goto <D.27670>;
      <D.27709>:
      {
        float * f;
        gboolean use_aotconst;

        use_aotconst = 0;
        D.30697 = cfg->domain;
        f = mono_domain_alloc (D.30697, 4);
        D.32104 = ip + 5;
        if (D.32104 > end) goto <D.32160>; else goto <D.32161>;
        <D.32160>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.32162>; else goto <D.32163>;
        <D.32162>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.32164>; else goto <D.32165>;
        <D.32164>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32165>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32163>:
        D.32166 = mini_get_debug_options ();
        D.32167 = D.32166->break_on_unverified;
        if (D.32167 != 0) goto <D.32168>; else goto unverified;
        <D.32168>:
        __asm__ __volatile__("int $03");
        <D.32161>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31362 = header->max_stack;
        D.31586 = (long int) D.31362;
        if (D.31452 >= D.31586) goto <D.32169>; else goto <D.32170>;
        <D.32169>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.32171>; else goto <D.32172>;
        <D.32171>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.32173>; else goto <D.32174>;
        <D.32173>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32174>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32172>:
        D.32175 = mini_get_debug_options ();
        D.32176 = D.32175->break_on_unverified;
        if (D.32176 != 0) goto <D.32177>; else goto unverified;
        <D.32177>:
        __asm__ __volatile__("int $03");
        <D.32170>:
        if (use_aotconst != 0) goto <D.32178>; else goto <D.32179>;
        <D.32178>:
        {
          struct MonoInst * cons;
          int dreg;

          D.30673 = cfg->mempool;
          cons = mono_mempool_alloc (D.30673, 80);
          cons->data.op[1].const_val = 0;
          D.32180 = cons->data.op[1].const_val;
          cons->data.op[0].const_val = D.32180;
          cons->prev = 0B;
          D.32181 = cons->prev;
          cons->next = D.32181;
          D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.31073 = D.31072 & 64;
          if (D.31073 != 0) goto <D.32183>; else goto <D.32184>;
          <D.32183>:
          iftmp.98 = 736;
          goto <D.32185>;
          <D.32184>:
          iftmp.98 = 363;
          <D.32185>:
          cons->opcode = iftmp.98;
          cons->flags = 0;
          cons->type = 0;
          cons->dreg = -1;
          cons->sreg3 = -1;
          D.32186 = cons->sreg3;
          cons->sreg2 = D.32186;
          D.32187 = cons->sreg2;
          cons->sreg1 = D.32187;
          D.30898 = cfg->ip;
          cons->cil_code = D.30898;
          cons->data.op[0].p = f;
          cons->data.op[1].src = 20B;
          cons->type = 3;
          D.32188 = alloc_dreg (cfg, 3);
          D.32189 = (int) D.32188;
          cons->dreg = D.32189;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.32190>; else goto <D.32191>;
          <D.32190>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = cons;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          cons->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = cons;
          goto <D.32192>;
          <D.32191>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = cons;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.32192>:
          D.32193 = alloc_freg (cfg);
          dreg = (int) D.32193;
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          ins->opcode = 399;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          ins->dreg = dreg;
          D.32194 = cons->dreg;
          ins->sreg1 = D.32194;
          ins->data.op[0].const_val = 0;
          ins->type = 1;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.32195>; else goto <D.32196>;
          <D.32195>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.32197>;
          <D.32196>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.32197>:
          ins->type = 4;
        }
        goto <D.32198>;
        <D.32179>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 364;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->type = 4;
        D.32199 = alloc_dreg (cfg, 4);
        D.32200 = (int) D.32199;
        ins->dreg = D.32200;
        ins->data.op[0].p = f;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.32201>; else goto <D.32202>;
        <D.32201>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.32203>;
        <D.32202>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.32203>:
        <D.32198>:
        ip = ip + 1;
        {
          union mono_rfloat mf;

          try
            {
              D.32204 = MEM[(const guint32 *)ip];
              mf.ival = D.32204;
              D.32205 = mf.fval;
              *f = D.32205;
            }
          finally
            {
              mf = {CLOBBER};
            }
        }
        ip = ip + 4;
        sp.99 = sp;
        sp = sp.99 + 8;
        *sp.99 = ins;
        goto <D.27670>;
      }
      <D.27715>:
      {
        double * d;
        gboolean use_aotconst;

        use_aotconst = 0;
        D.30697 = cfg->domain;
        d = mono_domain_alloc (D.30697, 8);
        D.32133 = ip + 9;
        if (D.32133 > end) goto <D.32207>; else goto <D.32208>;
        <D.32207>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.32209>; else goto <D.32210>;
        <D.32209>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.32211>; else goto <D.32212>;
        <D.32211>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32212>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32210>:
        D.32213 = mini_get_debug_options ();
        D.32214 = D.32213->break_on_unverified;
        if (D.32214 != 0) goto <D.32215>; else goto unverified;
        <D.32215>:
        __asm__ __volatile__("int $03");
        <D.32208>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31362 = header->max_stack;
        D.31586 = (long int) D.31362;
        if (D.31452 >= D.31586) goto <D.32216>; else goto <D.32217>;
        <D.32216>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.32218>; else goto <D.32219>;
        <D.32218>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.32220>; else goto <D.32221>;
        <D.32220>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32221>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32219>:
        D.32222 = mini_get_debug_options ();
        D.32223 = D.32222->break_on_unverified;
        if (D.32223 != 0) goto <D.32224>; else goto unverified;
        <D.32224>:
        __asm__ __volatile__("int $03");
        <D.32217>:
        if (use_aotconst != 0) goto <D.32225>; else goto <D.32226>;
        <D.32225>:
        {
          struct MonoInst * cons;
          int dreg;

          D.30673 = cfg->mempool;
          cons = mono_mempool_alloc (D.30673, 80);
          cons->data.op[1].const_val = 0;
          D.32227 = cons->data.op[1].const_val;
          cons->data.op[0].const_val = D.32227;
          cons->prev = 0B;
          D.32228 = cons->prev;
          cons->next = D.32228;
          D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.31073 = D.31072 & 64;
          if (D.31073 != 0) goto <D.32230>; else goto <D.32231>;
          <D.32230>:
          iftmp.100 = 736;
          goto <D.32232>;
          <D.32231>:
          iftmp.100 = 363;
          <D.32232>:
          cons->opcode = iftmp.100;
          cons->flags = 0;
          cons->type = 0;
          cons->dreg = -1;
          cons->sreg3 = -1;
          D.32233 = cons->sreg3;
          cons->sreg2 = D.32233;
          D.32234 = cons->sreg2;
          cons->sreg1 = D.32234;
          D.30898 = cfg->ip;
          cons->cil_code = D.30898;
          cons->data.op[0].p = d;
          cons->data.op[1].src = 21B;
          cons->type = 3;
          D.32235 = alloc_dreg (cfg, 3);
          D.32236 = (int) D.32235;
          cons->dreg = D.32236;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.32237>; else goto <D.32238>;
          <D.32237>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = cons;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          cons->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = cons;
          goto <D.32239>;
          <D.32238>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = cons;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.32239>:
          D.32240 = alloc_freg (cfg);
          dreg = (int) D.32240;
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          ins->opcode = 400;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          ins->dreg = dreg;
          D.32241 = cons->dreg;
          ins->sreg1 = D.32241;
          ins->data.op[0].const_val = 0;
          ins->type = 1;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.32242>; else goto <D.32243>;
          <D.32242>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.32244>;
          <D.32243>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.32244>:
          ins->type = 4;
        }
        goto <D.32245>;
        <D.32226>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 365;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->type = 4;
        D.32246 = alloc_dreg (cfg, 4);
        D.32247 = (int) D.32246;
        ins->dreg = D.32247;
        ins->data.op[0].p = d;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.32248>; else goto <D.32249>;
        <D.32248>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.32250>;
        <D.32249>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.32250>:
        <D.32245>:
        ip = ip + 1;
        {
          union mono_rdouble mf;

          try
            {
              D.32154 = MEM[(const guint64 *)ip];
              mf.ival = D.32154;
              D.32251 = mf.fval;
              *d = D.32251;
            }
          finally
            {
              mf = {CLOBBER};
            }
        }
        ip = ip + 8;
        sp.101 = sp;
        sp = sp.101 + 8;
        *sp.101 = ins;
        goto <D.27670>;
      }
      <D.27721>:
      {
        struct MonoInst * temp;
        struct MonoInst * store;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.32253>; else goto <D.32254>;
        <D.32253>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.32255>; else goto <D.32256>;
        <D.32255>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.32257>; else goto <D.32258>;
        <D.32257>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32258>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32256>:
        D.32259 = mini_get_debug_options ();
        D.32260 = D.32259->break_on_unverified;
        if (D.32260 != 0) goto <D.32261>; else goto unverified;
        <D.32261>:
        __asm__ __volatile__("int $03");
        <D.32254>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31362 = header->max_stack;
        D.31586 = (long int) D.31362;
        if (D.31452 >= D.31586) goto <D.32262>; else goto <D.32263>;
        <D.32262>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.32264>; else goto <D.32265>;
        <D.32264>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.32266>; else goto <D.32267>;
        <D.32266>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32267>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32265>:
        D.32268 = mini_get_debug_options ();
        D.32269 = D.32268->break_on_unverified;
        if (D.32269 != 0) goto <D.32270>; else goto unverified;
        <D.32270>:
        __asm__ __volatile__("int $03");
        <D.32263>:
        sp = sp + 18446744073709551608;
        ins = *sp;
        D.32271 = type_from_stack_type (ins);
        temp = mono_compile_create_var (cfg, D.32271, 329);
        D.30673 = cfg->mempool;
        store = mono_mempool_alloc (D.30673, 80);
        store->data.op[1].const_val = 0;
        D.32272 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.32272;
        store->prev = 0B;
        D.32273 = store->prev;
        store->next = D.32273;
        store->opcode = 428;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.32274 = store->sreg3;
        store->sreg2 = D.32274;
        D.32275 = store->sreg2;
        store->sreg1 = D.32275;
        D.30898 = cfg->ip;
        store->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32281 = D.32280->data.op[1].vtype;
        D.32282 = mono_type_to_regmove (cfg, D.32281);
        D.32283 = (short unsigned int) D.32282;
        store->opcode = D.32283;
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32284 = D.32280->klass;
        store->klass = D.32284;
        D.31092 = ins->dreg;
        store->sreg1 = D.31092;
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32285 = D.32280->dreg;
        store->dreg = D.32285;
        D.32286 = store->opcode;
        if (D.32286 == 431) goto <D.32287>; else goto <D.32288>;
        <D.32287>:
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32281 = D.32280->data.op[1].vtype;
        D.32289 = mono_class_from_mono_type (D.32281);
        store->klass = D.32289;
        <D.32288>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.32290>; else goto <D.32291>;
        <D.32290>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = store;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        store->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = store;
        goto <D.32292>;
        <D.32291>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = store;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.32292>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 428;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32281 = D.32280->data.op[1].vtype;
        D.32293 = mono_type_to_regmove (cfg, D.32281);
        D.32294 = (short unsigned int) D.32293;
        ins->opcode = D.32294;
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32281 = D.32280->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.32281, ins);
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32284 = D.32280->klass;
        ins->klass = D.32284;
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32285 = D.32280->dreg;
        ins->sreg1 = D.32285;
        D.31426 = ins->type;
        D.31427 = (<unnamed type>) D.31426;
        D.32295 = alloc_dreg (cfg, D.31427);
        D.32296 = (int) D.32295;
        ins->dreg = D.32296;
        D.31430 = ins->opcode;
        if (D.31430 == 431) goto <D.32297>; else goto <D.32298>;
        <D.32297>:
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32281 = D.32280->data.op[1].vtype;
        D.32299 = mono_class_from_mono_type (D.32281);
        ins->klass = D.32299;
        <D.32298>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.32300>; else goto <D.32301>;
        <D.32300>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.32302>;
        <D.32301>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.32302>:
        sp.102 = sp;
        sp = sp.102 + 8;
        *sp.102 = ins;
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 428;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32281 = D.32280->data.op[1].vtype;
        D.32304 = mono_type_to_regmove (cfg, D.32281);
        D.32305 = (short unsigned int) D.32304;
        ins->opcode = D.32305;
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32281 = D.32280->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.32281, ins);
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32284 = D.32280->klass;
        ins->klass = D.32284;
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32285 = D.32280->dreg;
        ins->sreg1 = D.32285;
        D.31426 = ins->type;
        D.31427 = (<unnamed type>) D.31426;
        D.32306 = alloc_dreg (cfg, D.31427);
        D.32307 = (int) D.32306;
        ins->dreg = D.32307;
        D.31430 = ins->opcode;
        if (D.31430 == 431) goto <D.32308>; else goto <D.32309>;
        <D.32308>:
        D.31416 = cfg->varinfo;
        D.32276 = temp->data.op[0].const_val;
        D.32277 = (long unsigned int) D.32276;
        D.32278 = D.32277 * 8;
        D.32279 = D.31416 + D.32278;
        D.32280 = *D.32279;
        D.32281 = D.32280->data.op[1].vtype;
        D.32310 = mono_class_from_mono_type (D.32281);
        ins->klass = D.32310;
        <D.32309>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.32311>; else goto <D.32312>;
        <D.32311>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.32313>;
        <D.32312>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.32313>:
        sp.103 = sp;
        sp = sp.103 + 8;
        *sp.103 = ins;
        ip = ip + 1;
        inline_costs = inline_costs + 2;
        goto <D.27670>;
      }
      <D.27724>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.32315>; else goto <D.32316>;
      <D.32315>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.32317>; else goto <D.32318>;
      <D.32317>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.32319>; else goto <D.32320>;
      <D.32319>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.32320>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.32318>:
      D.32321 = mini_get_debug_options ();
      D.32322 = D.32321->break_on_unverified;
      if (D.32322 != 0) goto <D.32323>; else goto unverified;
      <D.32323>:
      __asm__ __volatile__("int $03");
      <D.32316>:
      ip = ip + 1;
      sp = sp + 18446744073709551608;
      goto <D.27670>;
      <D.27725>:
      {
        struct MonoCallInst * call;

        D.30642 = cfg->method;
        if (D.30642 != method) goto <D.32324>; else goto <D.32325>;
        <D.32324>:
        D.30614 = BIT_FIELD_REF <*method, 8, 256>;
        D.30615 = D.30614 & 124;
        if (D.30615 == 0) goto <D.32326>; else goto <D.32327>;
        <D.32326>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 1) goto <D.32328>; else goto <D.32329>;
        <D.32328>:
        printf ("inline failed: %s\n", "jmp");
        <D.32329>:
        goto inline_failure;
        <D.32327>:
        <D.32325>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.32330>; else goto <D.32331>;
        <D.32330>:
        D.31560 = *ip;
        D.31561 = (int) D.31560;
        D.32332 = mono_opcode_name (D.31561);
        D.32333 = method->signature;
        D.32334 = D.32333->param_count;
        D.32335 = (int) D.32334;
        D.32336 = method->name;
        D.30609 = method->klass;
        D.32337 = D.30609->name;
        D.30609 = method->klass;
        D.32338 = D.30609->name_space;
        D.32339 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.32332, "method-to-ir.c", 7539);
        cfg->exception_message = D.32339;
        D.30753 = cfg->verbose_level;
        if (D.30753 > 1) goto <D.32340>; else goto <D.32341>;
        <D.32340>:
        D.32342 = cfg->exception_message;
        printf ("%s\n", D.32342);
        <D.32341>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32331>:
        D.32104 = ip + 5;
        if (D.32104 > end) goto <D.32343>; else goto <D.32344>;
        <D.32343>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.32345>; else goto <D.32346>;
        <D.32345>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.32347>; else goto <D.32348>;
        <D.32347>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32348>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32346>:
        D.32349 = mini_get_debug_options ();
        D.32350 = D.32349->break_on_unverified;
        if (D.32350 != 0) goto <D.32351>; else goto unverified;
        <D.32351>:
        __asm__ __volatile__("int $03");
        <D.32344>:
        if (stack_start != sp) goto <D.32352>; else goto <D.32353>;
        <D.32352>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.32354>; else goto <D.32355>;
        <D.32354>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.32356>; else goto <D.32357>;
        <D.32356>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.32357>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32355>:
        D.32358 = mini_get_debug_options ();
        D.32359 = D.32358->break_on_unverified;
        if (D.32359 != 0) goto <D.32360>; else goto unverified;
        <D.32360>:
        __asm__ __volatile__("int $03");
        <D.32353>:
        token = MEM[(const guint32 *)ip + 1B];
        cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
        if (cmethod == 0B) goto <D.32361>; else goto <D.32363>;
        <D.32363>:
        D.32364 = mono_loader_get_last_error ();
        if (D.32364 != 0B) goto <D.32361>; else goto <D.32362>;
        <D.32361>:
        D.32365 = mini_get_debug_options ();
        D.32366 = D.32365->break_on_unverified;
        if (D.32366 != 0) goto <D.32367>; else goto load_error;
        <D.32367>:
        __asm__ __volatile__("int $03");
        <D.32362>:
        D.30708 = cfg->generic_sharing_context;
        if (D.30708 != 0B) goto <D.32368>; else goto <D.32369>;
        <D.32368>:
        D.32370 = mono_method_check_context_used (cmethod);
        if (D.32370 != 0) goto <D.32371>; else goto <D.32372>;
        <D.32371>:
        D.30708 = cfg->generic_sharing_context;
        if (D.30708 != 0B) goto <D.32373>; else goto <D.32374>;
        <D.32373>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.32375>; else goto <D.32376>;
        <D.32375>:
        D.32377 = mono_opcode_name (39);
        D.32333 = method->signature;
        D.32334 = D.32333->param_count;
        D.32335 = (int) D.32334;
        D.32336 = method->name;
        D.30609 = method->klass;
        D.32337 = D.30609->name;
        D.30609 = method->klass;
        D.32338 = D.30609->name_space;
        printf ("sharing failed for method %s.%s.%s/%d opcode %s line %d\n", D.32338, D.32337, D.32336, D.32335, D.32377, 7552);
        <D.32376>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.32374>:
        <D.32372>:
        <D.32369>:
        D.32378 = mono_security_get_mode ();
        if (D.32378 == 2) goto <D.32379>; else goto <D.32380>;
        <D.32379>:
        D.31231 = cfg->exception_type;
        if (D.31231 != 0) goto exception_exit; else goto <D.32381>;
        <D.32381>:
        <D.32380>:
        if (1 != 0) goto <D.32382>; else goto <D.32383>;
        <D.32382>:
        {
          struct MonoMethodSignature * fsig;
          int i;
          int n;

          fsig = mono_method_signature (cmethod);
          D.32384 = fsig->param_count;
          D.32385 = (int) D.32384;
          D.32386 = fsig->hasthis;
          D.32387 = (int) D.32386;
          n = D.32385 + D.32387;
          D.30753 = cfg->verbose_level;
          if (D.30753 > 1) goto <D.32388>; else goto <D.32389>;
          <D.32388>:
          printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 7564);
          <D.32389>:
          cfg->disable_aot = 1;
          D.30673 = cfg->mempool;
          call = mono_mempool_alloc0 (D.30673, 192);
          call->inst.opcode = 448;
          call->inst.dreg = -1;
          call->inst.sreg3 = -1;
          D.32390 = call->inst.sreg3;
          call->inst.sreg2 = D.32390;
          D.32391 = call->inst.sreg2;
          call->inst.sreg1 = D.32391;
          D.30898 = cfg->ip;
          call->inst.cil_code = D.30898;
          call->method = cmethod;
          call->tail_call = 1;
          D.32392 = mono_method_signature (cmethod);
          call->signature = D.32392;
          D.32393 = (long unsigned int) n;
          D.32394 = (unsigned int) D.32393;
          D.32395 = D.32394 * 8;
          D.30673 = cfg->mempool;
          D.32396 = mono_mempool_alloc (D.30673, D.32395);
          call->args = D.32396;
          call->inst.data.op[0].p = cmethod;
          i = 0;
          goto <D.27733>;
          <D.27732>:
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.30673 = cfg->mempool;
          D.32401 = mono_mempool_alloc (D.30673, 80);
          *D.32400 = D.32401;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32402->data.op[1].const_val = 0;
          D.32403 = D.32402->data.op[1].const_val;
          D.32402->data.op[0].const_val = D.32403;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32402->prev = 0B;
          D.32404 = D.32402->prev;
          D.32402->next = D.32404;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32402->opcode = 428;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32402->flags = 0;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32402->type = 0;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32402->dreg = -1;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32402->sreg3 = -1;
          D.32405 = D.32402->sreg3;
          D.32402->sreg2 = D.32405;
          D.32406 = D.32402->sreg2;
          D.32402->sreg1 = D.32406;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.30898 = cfg->ip;
          D.32402->cil_code = D.30898;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.31290 = cfg->arg_types;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32407 = D.31290 + D.32399;
          D.32408 = *D.32407;
          D.32409 = mono_type_to_regmove (cfg, D.32408);
          D.32410 = (short unsigned int) D.32409;
          D.32402->opcode = D.32410;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.31290 = cfg->arg_types;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32407 = D.31290 + D.32399;
          D.32408 = *D.32407;
          type_to_eval_stack_type (cfg, D.32408, D.32402);
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.31280 = cfg->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32411 = D.31280 + D.32399;
          D.32412 = *D.32411;
          D.32413 = D.32412->klass;
          D.32402->klass = D.32413;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.31280 = cfg->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32411 = D.31280 + D.32399;
          D.32412 = *D.32411;
          D.32414 = D.32412->dreg;
          D.32402->sreg1 = D.32414;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32415 = D.32402->type;
          D.32416 = (<unnamed type>) D.32415;
          D.32417 = alloc_dreg (cfg, D.32416);
          D.32418 = (int) D.32417;
          D.32402->dreg = D.32418;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.32419 = D.32402->opcode;
          if (D.32419 == 431) goto <D.32420>; else goto <D.32421>;
          <D.32420>:
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.31290 = cfg->arg_types;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32407 = D.31290 + D.32399;
          D.32408 = *D.32407;
          D.32422 = mono_class_from_mono_type (D.32408);
          D.32402->klass = D.32422;
          <D.32421>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.32423>; else goto <D.32424>;
          <D.32423>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          D.30927->next = D.32402;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.32402->prev = D.30927;
          bblock.113 = cfg->cbb;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          bblock.113->last_ins = D.32402;
          goto <D.32425>;
          <D.32424>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          D.32397 = call->args;
          D.32398 = (long unsigned int) i;
          D.32399 = D.32398 * 8;
          D.32400 = D.32397 + D.32399;
          D.32402 = *D.32400;
          bblock.113->last_ins = D.32402;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.32425>:
          i = i + 1;
          <D.27733>:
          if (i < n) goto <D.27732>; else goto <D.27734>;
          <D.27734>:
          mono_arch_emit_call (cfg, call);
          bblock.70 = bblock;
          D.31015 = bblock.70->last_ins;
          if (D.31015 != 0B) goto <D.32426>; else goto <D.32427>;
          <D.32426>:
          bblock.70 = bblock;
          D.31015 = bblock.70->last_ins;
          D.31015->next = call;
          bblock.70 = bblock;
          D.31015 = bblock.70->last_ins;
          MEM[(struct MonoInst *)call].prev = D.31015;
          bblock.70 = bblock;
          bblock.70->last_ins = call;
          goto <D.32428>;
          <D.32427>:
          bblock.70 = bblock;
          bblock.70 = bblock;
          bblock.70->last_ins = call;
          D.31015 = bblock.70->last_ins;
          bblock.70->code = D.31015;
          <D.32428>:
        }
        goto <D.32429>;
        <D.32383>:
        i = 0;
        goto <D.27736>;
        <D.27735>:
        D.30802 = (long unsigned int) i;
        D.31411 = D.30802 * 8;
        D.32430 = arg_array + D.31411;
        D.32431 = *D.32430;
        D.30802 = (long unsigned int) i;
        D.31411 = D.30802 * 8;
        D.32430 = arg_array + D.31411;
        D.32431 = *D.32430;
        D.32432 = D.32431->flags;
        D.32433 = D.32432 | 4;
        D.32431->flags = D.32433;
        i = i + 1;
        <D.27736>:
        i.104 = (unsigned int) i;
        if (i.104 < num_args) goto <D.27735>; else goto <D.27737>;
        <D.27737>:
        D.30673 = cfg->mempool;
        call = mono_mempool_alloc0 (D.30673, 192);
        call->inst.opcode = 447;
        call->inst.dreg = -1;
        call->inst.sreg3 = -1;
        D.32390 = call->inst.sreg3;
        call->inst.sreg2 = D.32390;
        D.32391 = call->inst.sreg2;
        call->inst.sreg1 = D.32391;
        D.30898 = cfg->ip;
        call->inst.cil_code = D.30898;
        ins = call;
        ins->data.op[0].p = cmethod;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.32435>; else goto <D.32436>;
        <D.32435>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.32437>;
        <D.32436>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.32437>:
        <D.32429>:
        ip = ip + 5;
        start_new_bblock = 1;
        goto <D.27670>;
      }
      <D.27738>:
      <D.27739>:
      <D.27740>:
      {
        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.31560 = *ip;
            D.32438 = D.31560 == 111;
            virtual = (int) D.32438;
            D.31560 = *ip;
            D.32439 = D.31560 == 41;
            calli = (int) D.32439;
            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.31560 = *ip;
            call_opcode = (guint32) D.31560;
            emit_widen = 1;
            push_res = 1;
            skip_ret = 0;
            delegate_invoke = 0;
            D.32104 = ip + 5;
            if (D.32104 > end) goto <D.32440>; else goto <D.32441>;
            <D.32440>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.32442>; else goto <D.32443>;
            <D.32442>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.32444>; else goto <D.32445>;
            <D.32444>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.32445>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32443>:
            D.32446 = mini_get_debug_options ();
            D.32447 = D.32446->break_on_unverified;
            if (D.32447 != 0) goto <D.32448>; else goto unverified;
            <D.32448>:
            __asm__ __volatile__("int $03");
            <D.32441>:
            token = MEM[(const guint32 *)ip + 1B];
            ins = 0B;
            if (calli != 0) goto <D.32449>; else goto <D.32450>;
            <D.32449>:
            cmethod = 0B;
            sp.77 = (long int) sp;
            stack_start.78 = (long int) stack_start;
            D.31451 = sp.77 - stack_start.78;
            if (D.31451 <= 7) goto <D.32451>; else goto <D.32452>;
            <D.32451>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.32453>; else goto <D.32454>;
            <D.32453>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.32455>; else goto <D.32456>;
            <D.32455>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.32456>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32454>:
            D.32457 = mini_get_debug_options ();
            D.32458 = D.32457->break_on_unverified;
            if (D.32458 != 0) goto <D.32459>; else goto unverified;
            <D.32459>:
            __asm__ __volatile__("int $03");
            <D.32452>:
            sp = sp + 18446744073709551608;
            addr = *sp;
            fsig = mini_get_signature (method, token, generic_context);
            D.32460 = fsig->param_count;
            D.32461 = (int) D.32460;
            D.32462 = fsig->hasthis;
            D.32463 = (int) D.32462;
            n = D.32461 + D.32463;
            D.30722 = BIT_FIELD_REF <*method, 8, 264>;
            D.32464 = D.30722 & 2;
            if (D.32464 != 0) goto <D.32465>; else goto <D.32466>;
            <D.32465>:
            D.32467 = BIT_FIELD_REF <*fsig, 8, 120>;
            D.32468 = D.32467 & 1;
            if (D.32468 != 0) goto <D.32469>; else goto <D.32470>;
            <D.32469>:
            {
              struct MonoInst * args[3];

              try
                {
                  D.30673 = cfg->mempool;
                  D.32471 = mono_mempool_alloc (D.30673, 80);
                  args[0] = D.32471;
                  D.32472 = args[0];
                  D.32472 = args[0];
                  D.32472->data.op[1].const_val = 0;
                  D.32473 = D.32472->data.op[1].const_val;
                  D.32472->data.op[0].const_val = D.32473;
                  D.32472 = args[0];
                  D.32472 = args[0];
                  D.32472->prev = 0B;
                  D.32474 = D.32472->prev;
                  D.32472->next = D.32474;
                  D.32472 = args[0];
                  D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
                  D.31073 = D.31072 & 64;
                  if (D.31073 != 0) goto <D.32476>; else goto <D.32477>;
                  <D.32476>:
                  iftmp.105 = 736;
                  goto <D.32478>;
                  <D.32477>:
                  iftmp.105 = 363;
                  <D.32478>:
                  D.32472->opcode = iftmp.105;
                  D.32472 = args[0];
                  D.32472->flags = 0;
                  D.32472 = args[0];
                  D.32472->type = 0;
                  D.32472 = args[0];
                  D.32472->dreg = -1;
                  D.32472 = args[0];
                  D.32472 = args[0];
                  D.32472 = args[0];
                  D.32472->sreg3 = -1;
                  D.32479 = D.32472->sreg3;
                  D.32472->sreg2 = D.32479;
                  D.32480 = D.32472->sreg2;
                  D.32472->sreg1 = D.32480;
                  D.32472 = args[0];
                  D.30898 = cfg->ip;
                  D.32472->cil_code = D.30898;
                  D.32472 = args[0];
                  D.30609 = method->klass;
                  D.30610 = D.30609->image;
                  D.32472->data.op[0].p = D.30610;
                  D.32472 = args[0];
                  D.32472->data.op[1].src = 12B;
                  D.32472 = args[0];
                  D.32472->type = 3;
                  D.32472 = args[0];
                  D.32481 = alloc_dreg (cfg, 3);
                  D.32482 = (int) D.32481;
                  D.32472->dreg = D.32482;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.32483>; else goto <D.32484>;
                  <D.32483>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32472 = args[0];
                  D.30927->next = D.32472;
                  D.32472 = args[0];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32472->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.32472 = args[0];
                  bblock.113->last_ins = D.32472;
                  goto <D.32485>;
                  <D.32484>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.32472 = args[0];
                  bblock.113->last_ins = D.32472;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.32485>:
                  D.30673 = cfg->mempool;
                  D.32486 = mono_mempool_alloc (D.30673, 80);
                  args[1] = D.32486;
                  D.32487 = args[1];
                  D.32487 = args[1];
                  D.32487->data.op[1].const_val = 0;
                  D.32488 = D.32487->data.op[1].const_val;
                  D.32487->data.op[0].const_val = D.32488;
                  D.32487 = args[1];
                  D.32487 = args[1];
                  D.32487->prev = 0B;
                  D.32489 = D.32487->prev;
                  D.32487->next = D.32489;
                  D.32487 = args[1];
                  D.32487->opcode = 363;
                  D.32487 = args[1];
                  D.32487->flags = 0;
                  D.32487 = args[1];
                  D.32487->type = 0;
                  D.32487 = args[1];
                  D.32487->dreg = -1;
                  D.32487 = args[1];
                  D.32487 = args[1];
                  D.32487 = args[1];
                  D.32487->sreg3 = -1;
                  D.32490 = D.32487->sreg3;
                  D.32487->sreg2 = D.32490;
                  D.32491 = D.32487->sreg2;
                  D.32487->sreg1 = D.32491;
                  D.32487 = args[1];
                  D.30898 = cfg->ip;
                  D.32487->cil_code = D.30898;
                  D.32487 = args[1];
                  D.32487->data.op[0].p = fsig;
                  D.32487 = args[1];
                  D.32487->type = 3;
                  D.32487 = args[1];
                  D.32492 = alloc_dreg (cfg, 3);
                  D.32493 = (int) D.32492;
                  D.32487->dreg = D.32493;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.32494>; else goto <D.32495>;
                  <D.32494>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32487 = args[1];
                  D.30927->next = D.32487;
                  D.32487 = args[1];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32487->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.32487 = args[1];
                  bblock.113->last_ins = D.32487;
                  goto <D.32496>;
                  <D.32495>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.32487 = args[1];
                  bblock.113->last_ins = D.32487;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.32496>:
                  args[2] = addr;
                  addr = mono_emit_jit_icall (cfg, mono_get_native_calli_wrapper, &args);
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            <D.32470>:
            <D.32466>:
            goto <D.32497>;
            <D.32450>:
            {
              struct MonoMethod * cil_method;

              try
                {
                  cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
                  cil_method = cmethod;
                  if (constrained_call != 0B) goto <D.32498>; else goto <D.32499>;
                  <D.32498>:
                  D.30614 = BIT_FIELD_REF <*method, 8, 256>;
                  D.30615 = D.30614 & 124;
                  if (D.30615 != 0) goto <D.32500>; else goto <D.32501>;
                  <D.32500>:
                  D.30753 = cfg->verbose_level;
                  if (D.30753 > 2) goto <D.32502>; else goto <D.32503>;
                  <D.32502>:
                  D.32504 = mono_type_get_full_name (constrained_call);
                  printf ("DM Constrained call to %s\n", D.32504);
                  <D.32503>:
                  D.32507 = constrained_call->byval_arg.type;
                  D.32508 = D.32507 != 19;
                  D.32509 = D.32507 != 30;
                  D.32510 = D.32508 & D.32509;
                  if (D.32510 != 0) goto <D.32505>; else goto <D.32511>;
                  <D.32511>:
                  D.30708 = cfg->generic_sharing_context;
                  if (D.30708 == 0B) goto <D.32505>; else goto <D.32506>;
                  <D.32505>:
                  cil_method.106 = cil_method;
                  cmethod = mono_get_method_constrained_with_method (image, cil_method.106, constrained_call, generic_context);
                  <D.32506>:
                  goto <D.32513>;
                  <D.32501>:
                  D.30753 = cfg->verbose_level;
                  if (D.30753 > 2) goto <D.32514>; else goto <D.32515>;
                  <D.32514>:
                  D.32516 = mono_type_get_full_name (constrained_call);
                  printf ("Constrained call to %s\n", D.32516);
                  <D.32515>:
                  D.32519 = constrained_call->byval_arg.type;
                  D.32520 = D.32519 == 19;
                  D.32521 = D.32519 == 30;
                  D.32522 = D.32520 | D.32521;
                  if (D.32522 != 0) goto <D.32523>; else goto <D.32517>;
                  <D.32523>:
                  D.30708 = cfg->generic_sharing_context;
                  if (D.30708 != 0B) goto <D.32524>; else goto <D.32517>;
                  <D.32524>:
                  D.32525 = mini_is_gsharedvt_klass (cfg, constrained_call);
                  if (D.32525 == 0) goto <D.32526>; else goto <D.32527>;
                  <D.32526>:
                  D.32528 = cmethod->klass;
                  D.32529 = BIT_FIELD_REF <*D.32528, 8, 256>;
                  D.32530 = D.32529 & 8;
                  D.32531 = D.32530 != 0;
                  D.32532 = (long int) D.32531;
                  D.32533 = __builtin_expect (D.32532, 0);
                  if (D.32533 != 0) goto <D.32534>; else goto <D.32535>;
                  <D.32534>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7671, "!cmethod->klass->valuetype");
                  <D.32535>:
                  <D.32527>:
                  goto <D.32518>;
                  <D.32517>:
                  cmethod = mono_get_method_constrained (image, token, constrained_call, generic_context, &cil_method);
                  <D.32518>:
                  <D.32513>:
                  <D.32499>:
                  if (cmethod == 0B) goto <D.32536>; else goto <D.32538>;
                  <D.32538>:
                  D.32539 = mono_loader_get_last_error ();
                  if (D.32539 != 0B) goto <D.32536>; else goto <D.32537>;
                  <D.32536>:
                  D.32540 = mini_get_debug_options ();
                  D.32541 = D.32540->break_on_unverified;
                  if (D.32541 != 0) goto <D.32542>; else goto load_error;
                  <D.32542>:
                  __asm__ __volatile__("int $03");
                  <D.32537>:
                  if (dont_verify == 0) goto <D.32543>; else goto <D.32544>;
                  <D.32543>:
                  D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
                  D.32545 = D.31454 & 64;
                  if (D.32545 == 0) goto <D.32546>; else goto <D.32547>;
                  <D.32546>:
                  {
                    struct MonoMethod * target_method;

                    target_method = cil_method;
                    D.30722 = BIT_FIELD_REF <*method, 8, 264>;
                    D.30723 = D.30722 & 16;
                    if (D.30723 != 0) goto <D.32548>; else goto <D.32549>;
                    <D.32548>:
                    D.32550 = mono_method_get_generic_container (method_definition);
                    D.32551 = &D.32550->context;
                    target_method = mini_get_method_allow_open (method, token, 0B, D.32551);
                    <D.32549>:
                    D.32552 = mono_method_can_access_method (method_definition, target_method);
                    if (D.32552 == 0) goto <D.32553>; else goto <D.32554>;
                    <D.32553>:
                    cil_method.106 = cil_method;
                    D.32555 = mono_method_can_access_method (method, cil_method.106);
                    if (D.32555 == 0) goto <D.32556>; else goto <D.32557>;
                    <D.32556>:
                    {
                      char * method_fname;
                      char * cil_method_fname;

                      method_fname = mono_method_full_name (method, 1);
                      cil_method.106 = cil_method;
                      cil_method_fname = mono_method_full_name (cil_method.106, 1);
                      mono_cfg_set_exception (cfg, 9);
                      D.32558 = monoeg_g_strdup_printf ("Method `%s\' is inaccessible from method `%s\'\n", cil_method_fname, method_fname);
                      cfg->exception_message = D.32558;
                      monoeg_g_free (method_fname);
                      monoeg_g_free (cil_method_fname);
                      goto exception_exit;
                    }
                    <D.32557>:
                    <D.32554>:
                  }
                  <D.32547>:
                  <D.32544>:
                  D.32559 = mono_security_get_mode ();
                  if (D.32559 == 1) goto <D.32560>; else goto <D.32561>;
                  <D.32560>:
                  bblock.70 = bblock;
                  cil_method.106 = cil_method;
                  ensure_method_is_allowed_to_call_method (cfg, method, cil_method.106, bblock.70, ip);
                  <D.32561>:
                  if (virtual == 0) goto <D.32562>; else goto <D.32563>;
                  <D.32562>:
                  D.32564 = cmethod->flags;
                  D.32565 = (int) D.32564;
                  D.32566 = D.32565 & 1024;
                  if (D.32566 != 0) goto <D.32567>; else goto <D.32568>;
                  <D.32567>:
                  virtual = 1;
                  <D.32568>:
                  <D.32563>:
                  {
                    const int test_flags;
                    const int expected_flags;

                    test_flags = 112;
                    expected_flags = 96;
                    if (virtual == 0) goto <D.32569>; else goto <D.32570>;
                    <D.32569>:
                    D.32528 = cmethod->klass;
                    D.32571 = BIT_FIELD_REF <*D.32528, 8, 272>;
                    D.32572 = D.32571 & 64;
                    if (D.32572 != 0) goto <D.32573>; else goto <D.32574>;
                    <D.32573>:
                    D.32564 = cmethod->flags;
                    D.32565 = (int) D.32564;
                    D.32575 = D.32565 & 112;
                    if (D.32575 == 96) goto <D.32576>; else goto <D.32577>;
                    <D.32576>:
                    D.30642 = cfg->method;
                    D.32578 = BIT_FIELD_REF <*D.30642, 8, 256>;
                    D.32579 = D.32578 & 124;
                    if (D.32579 == 0) goto <D.32580>; else goto <D.32581>;
                    <D.32580>:
                    virtual = 1;
                    <D.32581>:
                    <D.32577>:
                    <D.32574>:
                    <D.32570>:
                  }
                  D.32528 = cmethod->klass;
                  D.32529 = BIT_FIELD_REF <*D.32528, 8, 256>;
                  D.32582 = D.32529 & 1;
                  if (D.32582 == 0) goto <D.32583>; else goto <D.32584>;
                  <D.32583>:
                  D.32528 = cmethod->klass;
                  D.32585 = mono_class_init (D.32528);
                  if (D.32585 == 0) goto <D.32586>; else goto <D.32587>;
                  <D.32586>:
                  D.32588 = mini_get_debug_options ();
                  D.32589 = D.32588->break_on_unverified;
                  if (D.32589 != 0) goto <D.32590>; else goto <D.32591>;
                  <D.32590>:
                  __asm__ __volatile__("int $03");
                  goto <D.32592>;
                  <D.32591>:
                  D.32528 = cmethod->klass;
                  cfg->exception_ptr = D.32528;
                  goto load_error;
                  <D.32592>:
                  <D.32587>:
                  <D.32584>:
                  D.32595 = cmethod->iflags;
                  D.32596 = (int) D.32595;
                  D.32597 = D.32596 & 4096;
                  if (D.32597 != 0) goto <D.32598>; else goto <D.32593>;
                  <D.32598>:
                  D.32528 = cmethod->klass;
                  D.32599 = mini_class_is_system_array (D.32528);
                  if (D.32599 != 0) goto <D.32600>; else goto <D.32593>;
                  <D.32600>:
                  D.32528 = cmethod->klass;
                  D.32601 = D.32528->rank;
                  array_rank = (int) D.32601;
                  fsig = mono_method_signature (cmethod);
                  goto <D.32594>;
                  <D.32593>:
                  fsig = mono_method_signature (cmethod);
                  if (fsig == 0B) goto <D.32602>; else goto <D.32603>;
                  <D.32602>:
                  D.32604 = mini_get_debug_options ();
                  D.32605 = D.32604->break_on_unverified;
                  if (D.32605 != 0) goto <D.32606>; else goto load_error;
                  <D.32606>:
                  __asm__ __volatile__("int $03");
                  <D.32603>:
                  D.32467 = BIT_FIELD_REF <*fsig, 8, 120>;
                  D.32468 = D.32467 & 1;
                  if (D.32468 != 0) goto <D.32607>; else goto <D.32608>;
                  <D.32607>:
                  {
                    struct MonoMethod * wrapper;

                    D.32609 = cfg->compile_aot;
                    D.32610 = (int) D.32609;
                    check_for_pending_exc.107 = check_for_pending_exc;
                    wrapper = mono_marshal_get_native_wrapper (cmethod, check_for_pending_exc.107, D.32610);
                    fsig = mono_method_signature (wrapper);
                  }
                  goto <D.32612>;
                  <D.32608>:
                  if (constrained_call != 0B) goto <D.32613>; else goto <D.32614>;
                  <D.32613>:
                  fsig = mono_method_signature (cmethod);
                  goto <D.32615>;
                  <D.32614>:
                  fsig = mono_method_get_signature_full (cmethod, image, token, generic_context);
                  <D.32615>:
                  <D.32612>:
                  <D.32594>:
                  cil_method.106 = cil_method;
                  mono_save_token_info (cfg, image, token, cil_method.106);
                  D.32616 = fsig->ret;
                  D.32617 = mono_type_is_void (D.32616);
                  if (D.32617 == 0) goto <D.32618>; else goto <D.32619>;
                  <D.32618>:
                  D.32104 = ip + 5;
                  if (D.32104 >= end) goto <D.32622>; else goto <D.32623>;
                  <D.32623>:
                  D.32104 = ip + 5;
                  D.32624 = *D.32104;
                  D.32625 = D.32624 != 38;
                  D.32626 = D.32624 != 0;
                  D.32627 = D.32625 & D.32626;
                  if (D.32627 != 0) goto <D.32622>; else goto <D.32621>;
                  <D.32622>:
                  if (seq_point_locs == 0B) goto <D.32620>; else goto <D.32628>;
                  <D.32628>:
                  D.32104 = ip + 5;
                  D.32629 = (long int) D.32104;
                  D.30821 = header->code;
                  D.31371 = (long int) D.30821;
                  D.32630 = D.32629 - D.31371;
                  D.32631 = (long unsigned int) D.32630;
                  D.32632 = D.32631 / 64;
                  D.32633 = seq_point_locs->data[D.32632];
                  D.32104 = ip + 5;
                  D.32629 = (long int) D.32104;
                  D.30821 = header->code;
                  D.31371 = (long int) D.30821;
                  D.32630 = D.32629 - D.31371;
                  D.32634 = (int) D.32630;
                  D.32635 = D.32634 & 63;
                  D.32636 = D.32633 >> D.32635;
                  D.32637 = D.32636 & 1;
                  if (D.32637 == 0) goto <D.32620>; else goto <D.32621>;
                  <D.32620>:
                  need_seq_point = 1;
                  <D.32621>:
                  <D.32619>:
                  D.32460 = fsig->param_count;
                  D.32461 = (int) D.32460;
                  D.32462 = fsig->hasthis;
                  D.32463 = (int) D.32462;
                  n = D.32461 + D.32463;
                  D.32638 = mono_security_get_mode ();
                  if (D.32638 == 2) goto <D.32639>; else goto <D.32640>;
                  <D.32639>:
                  D.32641 = check_linkdemand (cfg, method, cmethod);
                  if (D.32641 != 0) goto <D.32642>; else goto <D.32643>;
                  <D.32642>:
                  D.30642 = cfg->method;
                  if (D.30642 != method) goto <D.32644>; else goto <D.32645>;
                  <D.32644>:
                  D.30614 = BIT_FIELD_REF <*method, 8, 256>;
                  D.30615 = D.30614 & 124;
                  if (D.30615 == 0) goto <D.32646>; else goto <D.32647>;
                  <D.32646>:
                  D.30753 = cfg->verbose_level;
                  if (D.30753 > 1) goto <D.32648>; else goto <D.32649>;
                  <D.32648>:
                  printf ("inline failed: %s\n", "linkdemand");
                  <D.32649>:
                  goto inline_failure;
                  <D.32647>:
                  <D.32645>:
                  <D.32643>:
                  D.31231 = cfg->exception_type;
                  if (D.31231 != 0) goto exception_exit; else goto <D.32650>;
                  <D.32650>:
                  <D.32640>:
                  D.32651 = BIT_FIELD_REF <*cmethod, 8, 256>;
                  D.32652 = D.32651 & 128;
                  if (D.32652 != 0) goto <D.32653>; else goto <D.32654>;
                  <D.32653>:
                  D.30614 = BIT_FIELD_REF <*method, 8, 256>;
                  D.30615 = D.30614 & 124;
                  if (D.30615 != 16) goto <D.32655>; else goto <D.32656>;
                  <D.32655>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 7769);
                  <D.32656>:
                  <D.32654>:
                }
              finally
                {
                  cil_method = {CLOBBER};
                }
            }
            <D.32497>:
            D.30708 = cfg->generic_sharing_context;
            if (D.30708 == 0B) goto <D.32657>; else goto <D.32658>;
            <D.32657>:
            if (cmethod != 0B) goto <D.32659>; else goto <D.32660>;
            <D.32659>:
            D.32528 = cmethod->klass;
            D.32661 = D.32528->generic_container;
            if (D.32661 != 0B) goto <D.32662>; else goto <D.32663>;
            <D.32662>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.32664>; else goto <D.32665>;
            <D.32664>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.32666>; else goto <D.32667>;
            <D.32666>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.32667>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32665>:
            D.32668 = mini_get_debug_options ();
            D.32669 = D.32668->break_on_unverified;
            if (D.32669 != 0) goto <D.32670>; else goto unverified;
            <D.32670>:
            __asm__ __volatile__("int $03");
            <D.32663>:
            <D.32660>:
            <D.32658>:
            D.30708 = cfg->generic_sharing_context;
            if (D.30708 == 0B) goto <D.32671>; else goto <D.32672>;
            <D.32671>:
            if (cmethod != 0B) goto <D.32673>; else goto <D.32674>;
            <D.32673>:
            D.32675 = mono_method_check_context_used (cmethod);
            D.32676 = D.32675 != 0;
            D.32677 = (long int) D.32676;
            D.32678 = __builtin_expect (D.32677, 0);
            if (D.32678 != 0) goto <D.32679>; else goto <D.32680>;
            <D.32679>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7776, "!mono_method_check_context_used (cmethod)");
            <D.32680>:
            <D.32674>:
            <D.32672>:
            sp.77 = (long int) sp;
            stack_start.78 = (long int) stack_start;
            D.31451 = sp.77 - stack_start.78;
            D.31452 = D.31451 /[ex] 8;
            D.32681 = (long int) n;
            if (D.31452 < D.32681) goto <D.32682>; else goto <D.32683>;
            <D.32682>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.32684>; else goto <D.32685>;
            <D.32684>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.32686>; else goto <D.32687>;
            <D.32686>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.32687>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32685>:
            D.32688 = mini_get_debug_options ();
            D.32689 = D.32688->break_on_unverified;
            if (D.32689 != 0) goto <D.32690>; else goto unverified;
            <D.32690>:
            __asm__ __volatile__("int $03");
            <D.32683>:
            D.31606 = (long unsigned int) n;
            D.31607 = D.31606 * 8;
            D.32691 = -D.31607;
            sp = sp + D.32691;
            if (constrained_call != 0B) goto <D.32692>; else goto <D.32693>;
            <D.32692>:
            D.32694 = mini_is_gsharedvt_klass (cfg, constrained_call);
            if (D.32694 != 0) goto <D.32695>; else goto <D.32696>;
            <D.32695>:
            D.32528 = cmethod->klass;
            D.32699 = mono_defaults.object_class;
            if (D.32528 != D.32699) goto <D.32700>; else goto <D.32697>;
            <D.32700>:
            D.32701 = BIT_FIELD_REF <*constrained_call, 8, 256>;
            D.32702 = D.32701 & 8;
            if (D.32702 != 0) goto <D.32703>; else goto <D.32697>;
            <D.32703>:
            D.32528 = cmethod->klass;
            D.32529 = BIT_FIELD_REF <*D.32528, 8, 256>;
            D.32530 = D.32529 & 8;
            if (D.32530 != 0) goto <D.32704>; else goto <D.32697>;
            <D.32704>:
            goto <D.32698>;
            <D.32697>:
            D.32528 = cmethod->klass;
            D.32707 = D.32528->image;
            D.32708 = mono_defaults.corlib;
            if (D.32707 != D.32708) goto <D.32709>; else goto <D.32705>;
            <D.32709>:
            D.32528 = cmethod->klass;
            D.32710 = D.32528->flags;
            D.32711 = D.32710 & 32;
            if (D.32711 == 0) goto <D.32712>; else goto <D.32705>;
            <D.32712>:
            D.32528 = cmethod->klass;
            D.32529 = BIT_FIELD_REF <*D.32528, 8, 256>;
            D.32530 = D.32529 & 8;
            if (D.32530 == 0) goto <D.32713>; else goto <D.32705>;
            <D.32713>:
            goto <D.32706>;
            <D.32705>:
            D.32528 = cmethod->klass;
            D.32699 = mono_defaults.object_class;
            if (D.32528 == D.32699) goto <D.32714>; else goto <D.32719>;
            <D.32719>:
            D.32528 = cmethod->klass;
            D.32710 = D.32528->flags;
            D.32711 = D.32710 & 32;
            if (D.32711 != 0) goto <D.32714>; else goto <D.32720>;
            <D.32720>:
            D.32528 = cmethod->klass;
            D.32529 = BIT_FIELD_REF <*D.32528, 8, 256>;
            D.32530 = D.32529 & 8;
            if (D.32530 == 0) goto <D.32721>; else goto <D.32715>;
            <D.32721>:
            D.32528 = cmethod->klass;
            D.32707 = D.32528->image;
            D.32708 = mono_defaults.corlib;
            if (D.32707 != D.32708) goto <D.32714>; else goto <D.32715>;
            <D.32714>:
            D.32616 = fsig->ret;
            D.32722 = mono_type_is_void (D.32616);
            if (D.32722 != 0) goto <D.32716>; else goto <D.32723>;
            <D.32723>:
            D.32616 = fsig->ret;
            D.32724 = BIT_FIELD_REF <*D.32616, 8, 88>;
            D.32725 = D.32724 & 64;
            if (D.32725 == 0) goto <D.32726>; else goto <D.32717>;
            <D.32726>:
            D.32616 = fsig->ret;
            D.32727 = D.32616->type;
            D.32728 = D.32727 + 254;
            D.32729 = D.32728 <= 11;
            D.32730 = D.32727 + 232;
            D.32731 = D.32730 <= 1;
            D.32732 = D.32729 | D.32731;
            if (D.32732 != 0) goto <D.32716>; else goto <D.32717>;
            <D.32717>:
            D.32616 = fsig->ret;
            D.32733 = mono_type_is_reference (D.32616);
            if (D.32733 != 0) goto <D.32716>; else goto <D.32734>;
            <D.32734>:
            D.32616 = fsig->ret;
            D.32735 = mini_is_gsharedvt_type (cfg, D.32616);
            if (D.32735 != 0) goto <D.32716>; else goto <D.32715>;
            <D.32716>:
            D.32460 = fsig->param_count;
            if (D.32460 == 0) goto <D.32718>; else goto <D.32736>;
            <D.32736>:
            D.32737 = BIT_FIELD_REF <*fsig, 64, 64>;
            D.32738 = D.32737 & 18014398509547519;
            if (D.32738 == 1) goto <D.32718>; else goto <D.32739>;
            <D.32739>:
            D.32460 = fsig->param_count;
            if (D.32460 == 1) goto <D.32740>; else goto <D.32715>;
            <D.32740>:
            D.32741 = fsig->params[0];
            D.32742 = mono_type_is_reference (D.32741);
            if (D.32742 != 0) goto <D.32718>; else goto <D.32743>;
            <D.32743>:
            D.32741 = fsig->params[0];
            D.32744 = mini_is_gsharedvt_type (cfg, D.32741);
            if (D.32744 != 0) goto <D.32718>; else goto <D.32715>;
            <D.32718>:
            {
              struct MonoInst * args[16];

              try
                {
                  D.31680 = *sp;
                  args[0] = D.31680;
                  D.32745 = mono_method_check_context_used (cmethod);
                  if (D.32745 != 0) goto <D.32746>; else goto <D.32747>;
                  <D.32746>:
                  D.32748 = mono_method_check_context_used (cmethod);
                  D.32749 = emit_get_rgctx_method (cfg, D.32748, cmethod, 5);
                  args[1] = D.32749;
                  goto <D.32750>;
                  <D.32747>:
                  D.30673 = cfg->mempool;
                  D.32751 = mono_mempool_alloc (D.30673, 80);
                  args[1] = D.32751;
                  D.32752 = args[1];
                  D.32752 = args[1];
                  D.32752->data.op[1].const_val = 0;
                  D.32753 = D.32752->data.op[1].const_val;
                  D.32752->data.op[0].const_val = D.32753;
                  D.32752 = args[1];
                  D.32752 = args[1];
                  D.32752->prev = 0B;
                  D.32754 = D.32752->prev;
                  D.32752->next = D.32754;
                  D.32752 = args[1];
                  D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
                  D.31073 = D.31072 & 64;
                  if (D.31073 != 0) goto <D.32756>; else goto <D.32757>;
                  <D.32756>:
                  iftmp.108 = 736;
                  goto <D.32758>;
                  <D.32757>:
                  iftmp.108 = 363;
                  <D.32758>:
                  D.32752->opcode = iftmp.108;
                  D.32752 = args[1];
                  D.32752->flags = 0;
                  D.32752 = args[1];
                  D.32752->type = 0;
                  D.32752 = args[1];
                  D.32752->dreg = -1;
                  D.32752 = args[1];
                  D.32752 = args[1];
                  D.32752 = args[1];
                  D.32752->sreg3 = -1;
                  D.32759 = D.32752->sreg3;
                  D.32752->sreg2 = D.32759;
                  D.32760 = D.32752->sreg2;
                  D.32752->sreg1 = D.32760;
                  D.32752 = args[1];
                  D.30898 = cfg->ip;
                  D.32752->cil_code = D.30898;
                  D.32752 = args[1];
                  D.32752->data.op[0].p = cmethod;
                  D.32752 = args[1];
                  D.32752->data.op[1].src = 6B;
                  D.32752 = args[1];
                  D.32752->type = 3;
                  D.32752 = args[1];
                  D.32761 = alloc_dreg (cfg, 3);
                  D.32762 = (int) D.32761;
                  D.32752->dreg = D.32762;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.32763>; else goto <D.32764>;
                  <D.32763>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32752 = args[1];
                  D.30927->next = D.32752;
                  D.32752 = args[1];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32752->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.32752 = args[1];
                  bblock.113->last_ins = D.32752;
                  goto <D.32765>;
                  <D.32764>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.32752 = args[1];
                  bblock.113->last_ins = D.32752;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.32765>:
                  <D.32750>:
                  D.32766 = mono_class_check_context_used (constrained_call);
                  D.32767 = emit_get_rgctx_klass (cfg, D.32766, constrained_call, 1);
                  args[2] = D.32767;
                  D.32770 = BIT_FIELD_REF <*fsig, 8, 112>;
                  D.32771 = D.32770 & 64;
                  if (D.32771 != 0) goto <D.32772>; else goto <D.32768>;
                  <D.32772>:
                  D.32460 = fsig->param_count;
                  if (D.32460 != 0) goto <D.32773>; else goto <D.32768>;
                  <D.32773>:
                  D.30673 = cfg->mempool;
                  ins = mono_mempool_alloc (D.30673, 80);
                  ins->data.op[1].const_val = 0;
                  D.30894 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.30894;
                  ins->prev = 0B;
                  D.30895 = ins->prev;
                  ins->next = D.30895;
                  ins->opcode = 339;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.30896 = ins->sreg3;
                  ins->sreg2 = D.30896;
                  D.30897 = ins->sreg2;
                  ins->sreg1 = D.30897;
                  D.30898 = cfg->ip;
                  ins->cil_code = D.30898;
                  D.32774 = alloc_preg (cfg);
                  D.32775 = (int) D.32774;
                  ins->dreg = D.32775;
                  D.32460 = fsig->param_count;
                  D.32776 = (long unsigned int) D.32460;
                  D.32777 = D.32776 * 8;
                  D.32778 = (long int) D.32777;
                  ins->data.op[1].const_val = D.32778;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.32779>; else goto <D.32780>;
                  <D.32779>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.30927->next = ins;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  ins->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = ins;
                  goto <D.32781>;
                  <D.32780>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = ins;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.32781>:
                  args[4] = ins;
                  D.32741 = fsig->params[0];
                  D.32782 = mini_is_gsharedvt_type (cfg, D.32741);
                  if (D.32782 != 0) goto <D.32783>; else goto <D.32784>;
                  <D.32783>:
                  {
                    int addr_reg;

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

                      D.32788 = sp + 8;
                      D.32789 = *D.32788;
                      D.32790 = D.32789->dreg;
                      D.32791 = (unsigned int) D.32790;
                      D.31781 = cfg->vreg_to_inst_len;
                      if (D.32791 < D.31781) goto <D.32792>; else goto <D.32793>;
                      <D.32792>:
                      D.31784 = cfg->vreg_to_inst;
                      D.32788 = sp + 8;
                      D.32789 = *D.32788;
                      D.32790 = D.32789->dreg;
                      D.32794 = (long unsigned int) D.32790;
                      D.32795 = D.32794 * 8;
                      D.32796 = D.31784 + D.32795;
                      iftmp.109 = *D.32796;
                      goto <D.32797>;
                      <D.32793>:
                      iftmp.109 = 0B;
                      <D.32797>:
                      var = iftmp.109;
                      if (var == 0B) goto <D.32798>; else goto <D.32799>;
                      <D.32798>:
                      D.32788 = sp + 8;
                      D.32789 = *D.32788;
                      D.32790 = D.32789->dreg;
                      D.32741 = fsig->params[0];
                      var = mono_compile_create_var_for_vreg (cfg, D.32741, 329, D.32790);
                      <D.32799>:
                      D.30673 = cfg->mempool;
                      ins = mono_mempool_alloc (D.30673, 80);
                      ins->data.op[1].const_val = 0;
                      D.30894 = ins->data.op[1].const_val;
                      ins->data.op[0].const_val = D.30894;
                      ins->prev = 0B;
                      D.30895 = ins->prev;
                      ins->next = D.30895;
                      ins->opcode = 314;
                      ins->flags = 0;
                      ins->type = 0;
                      ins->dreg = -1;
                      ins->sreg3 = -1;
                      D.30896 = ins->sreg3;
                      ins->sreg2 = D.30896;
                      D.30897 = ins->sreg2;
                      ins->sreg1 = D.30897;
                      D.30898 = cfg->ip;
                      ins->cil_code = D.30898;
                      ins->data.op[0].p = var;
                      D.32800 = var->flags;
                      D.32801 = D.32800 | 16;
                      var->flags = D.32801;
                      ins->type = 5;
                      D.32802 = var->klass;
                      ins->klass = D.32802;
                      D.32803 = alloc_dreg (cfg, 5);
                      D.32804 = (int) D.32803;
                      ins->dreg = D.32804;
                      cfg->has_indirection = 1;
                      D.30822 = cfg->gsharedvt;
                      D.31766 = D.30822 != 0;
                      D.31767 = (long int) D.31766;
                      D.31768 = __builtin_expect (D.31767, 0);
                      if (D.31768 != 0) goto <D.32805>; else goto <D.32806>;
                      <D.32805>:
                      D.32807 = var->data.op[1].vtype;
                      D.32808 = mini_is_gsharedvt_variable_type (cfg, D.32807);
                      if (D.32808 != 0) goto <D.32809>; else goto <D.32810>;
                      <D.32809>:
                      handle_gsharedvt_ldaddr (cfg);
                      <D.32810>:
                      <D.32806>:
                      if (0 != 0) goto <D.32811>; else goto <D.32812>;
                      <D.32811>:
                      {
                        struct MonoInst * var1;
                        struct MonoInst * var2;

                        D.32814 = var->dreg;
                        D.32815 = D.32814 + 1;
                        D.32816 = (unsigned int) D.32815;
                        D.31781 = cfg->vreg_to_inst_len;
                        if (D.32816 < D.31781) goto <D.32817>; else goto <D.32818>;
                        <D.32817>:
                        D.31784 = cfg->vreg_to_inst;
                        D.32814 = var->dreg;
                        D.32819 = (sizetype) D.32814;
                        D.32820 = D.32819 + 1;
                        D.32821 = D.32820 * 8;
                        D.32822 = D.31784 + D.32821;
                        iftmp.110 = *D.32822;
                        goto <D.32823>;
                        <D.32818>:
                        iftmp.110 = 0B;
                        <D.32823>:
                        var1 = iftmp.110;
                        D.32814 = var->dreg;
                        D.32825 = D.32814 + 2;
                        D.32826 = (unsigned int) D.32825;
                        D.31781 = cfg->vreg_to_inst_len;
                        if (D.32826 < D.31781) goto <D.32827>; else goto <D.32828>;
                        <D.32827>:
                        D.31784 = cfg->vreg_to_inst;
                        D.32814 = var->dreg;
                        D.32819 = (sizetype) D.32814;
                        D.32829 = D.32819 + 2;
                        D.32830 = D.32829 * 8;
                        D.32831 = D.31784 + D.32830;
                        iftmp.111 = *D.32831;
                        goto <D.32832>;
                        <D.32828>:
                        iftmp.111 = 0B;
                        <D.32832>:
                        var2 = iftmp.111;
                        D.32833 = var1 == 0B;
                        D.32834 = (long int) D.32833;
                        D.32835 = __builtin_expect (D.32834, 0);
                        if (D.32835 != 0) goto <D.32836>; else goto <D.32837>;
                        <D.32836>:
                        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7827, "var1");
                        <D.32837>:
                        D.32838 = var2 == 0B;
                        D.32839 = (long int) D.32838;
                        D.32840 = __builtin_expect (D.32839, 0);
                        if (D.32840 != 0) goto <D.32841>; else goto <D.32842>;
                        <D.32841>:
                        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7827, "var2");
                        <D.32842>:
                        D.32843 = var1->flags;
                        D.32844 = D.32843 | 16;
                        var1->flags = D.32844;
                        D.32845 = var2->flags;
                        D.32846 = D.32845 | 16;
                        var2->flags = D.32846;
                      }
                      <D.32812>:
                    }
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    if (D.30927 != 0B) goto <D.32847>; else goto <D.32848>;
                    <D.32847>:
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    D.30927->next = ins;
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    ins->prev = D.30927;
                    bblock.113 = cfg->cbb;
                    bblock.113->last_ins = ins;
                    goto <D.32849>;
                    <D.32848>:
                    bblock.113 = cfg->cbb;
                    bblock.113 = cfg->cbb;
                    bblock.113->last_ins = ins;
                    D.30927 = bblock.113->last_ins;
                    bblock.113->code = D.30927;
                    <D.32849>:
                    addr_reg = ins->dreg;
                    D.30673 = cfg->mempool;
                    ins = mono_mempool_alloc (D.30673, 80);
                    ins->data.op[1].const_val = 0;
                    D.30894 = ins->data.op[1].const_val;
                    ins->data.op[0].const_val = D.30894;
                    ins->prev = 0B;
                    D.30895 = ins->prev;
                    ins->next = D.30895;
                    ins->opcode = 374;
                    ins->flags = 0;
                    ins->type = 0;
                    ins->dreg = -1;
                    ins->sreg3 = -1;
                    D.30896 = ins->sreg3;
                    ins->sreg2 = D.30896;
                    D.30897 = ins->sreg2;
                    ins->sreg1 = D.30897;
                    D.30898 = cfg->ip;
                    ins->cil_code = D.30898;
                    ins->sreg1 = addr_reg;
                    D.32850 = args[4];
                    D.32851 = D.32850->dreg;
                    ins->dreg = D.32851;
                    ins->data.op[0].const_val = 0;
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    if (D.30927 != 0B) goto <D.32852>; else goto <D.32853>;
                    <D.32852>:
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    D.30927->next = ins;
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    ins->prev = D.30927;
                    bblock.113 = cfg->cbb;
                    bblock.113->last_ins = ins;
                    goto <D.32854>;
                    <D.32853>:
                    bblock.113 = cfg->cbb;
                    bblock.113 = cfg->cbb;
                    bblock.113->last_ins = ins;
                    D.30927 = bblock.113->last_ins;
                    bblock.113->code = D.30927;
                    <D.32854>:
                  }
                  goto <D.32855>;
                  <D.32784>:
                  D.30673 = cfg->mempool;
                  D.32856 = mono_mempool_alloc (D.30673, 80);
                  args[3] = D.32856;
                  D.32857 = args[3];
                  D.32857 = args[3];
                  D.32857->data.op[1].const_val = 0;
                  D.32858 = D.32857->data.op[1].const_val;
                  D.32857->data.op[0].const_val = D.32858;
                  D.32857 = args[3];
                  D.32857 = args[3];
                  D.32857->prev = 0B;
                  D.32859 = D.32857->prev;
                  D.32857->next = D.32859;
                  D.32857 = args[3];
                  D.32857->opcode = 362;
                  D.32857 = args[3];
                  D.32857->flags = 0;
                  D.32857 = args[3];
                  D.32857->type = 0;
                  D.32857 = args[3];
                  D.32857->dreg = -1;
                  D.32857 = args[3];
                  D.32857 = args[3];
                  D.32857 = args[3];
                  D.32857->sreg3 = -1;
                  D.32860 = D.32857->sreg3;
                  D.32857->sreg2 = D.32860;
                  D.32861 = D.32857->sreg2;
                  D.32857->sreg1 = D.32861;
                  D.32857 = args[3];
                  D.30898 = cfg->ip;
                  D.32857->cil_code = D.30898;
                  D.32857 = args[3];
                  D.32857->data.op[0].const_val = 0;
                  D.32857 = args[3];
                  D.32857->type = 1;
                  D.32857 = args[3];
                  D.32862 = alloc_dreg (cfg, 1);
                  D.32863 = (int) D.32862;
                  D.32857->dreg = D.32863;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.32864>; else goto <D.32865>;
                  <D.32864>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32857 = args[3];
                  D.30927->next = D.32857;
                  D.32857 = args[3];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32857->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.32857 = args[3];
                  bblock.113->last_ins = D.32857;
                  goto <D.32866>;
                  <D.32865>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.32857 = args[3];
                  bblock.113->last_ins = D.32857;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.32866>:
                  D.30673 = cfg->mempool;
                  ins = mono_mempool_alloc (D.30673, 80);
                  ins->data.op[1].const_val = 0;
                  D.30894 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.30894;
                  ins->prev = 0B;
                  D.30895 = ins->prev;
                  ins->next = D.30895;
                  ins->opcode = 374;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.30896 = ins->sreg3;
                  ins->sreg2 = D.30896;
                  D.30897 = ins->sreg2;
                  ins->sreg1 = D.30897;
                  D.30898 = cfg->ip;
                  ins->cil_code = D.30898;
                  D.32788 = sp + 8;
                  D.32789 = *D.32788;
                  D.32790 = D.32789->dreg;
                  ins->sreg1 = D.32790;
                  D.32850 = args[4];
                  D.32851 = D.32850->dreg;
                  ins->dreg = D.32851;
                  ins->data.op[0].const_val = 0;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.32867>; else goto <D.32868>;
                  <D.32867>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.30927->next = ins;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  ins->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = ins;
                  goto <D.32869>;
                  <D.32868>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = ins;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.32869>:
                  <D.32855>:
                  goto <D.32769>;
                  <D.32768>:
                  D.30673 = cfg->mempool;
                  D.32870 = mono_mempool_alloc (D.30673, 80);
                  args[3] = D.32870;
                  D.32857 = args[3];
                  D.32857 = args[3];
                  D.32857->data.op[1].const_val = 0;
                  D.32858 = D.32857->data.op[1].const_val;
                  D.32857->data.op[0].const_val = D.32858;
                  D.32857 = args[3];
                  D.32857 = args[3];
                  D.32857->prev = 0B;
                  D.32859 = D.32857->prev;
                  D.32857->next = D.32859;
                  D.32857 = args[3];
                  D.32857->opcode = 362;
                  D.32857 = args[3];
                  D.32857->flags = 0;
                  D.32857 = args[3];
                  D.32857->type = 0;
                  D.32857 = args[3];
                  D.32857->dreg = -1;
                  D.32857 = args[3];
                  D.32857 = args[3];
                  D.32857 = args[3];
                  D.32857->sreg3 = -1;
                  D.32860 = D.32857->sreg3;
                  D.32857->sreg2 = D.32860;
                  D.32861 = D.32857->sreg2;
                  D.32857->sreg1 = D.32861;
                  D.32857 = args[3];
                  D.30898 = cfg->ip;
                  D.32857->cil_code = D.30898;
                  D.32857 = args[3];
                  D.32857->data.op[0].const_val = 0;
                  D.32857 = args[3];
                  D.32857->type = 1;
                  D.32857 = args[3];
                  D.32871 = alloc_dreg (cfg, 1);
                  D.32872 = (int) D.32871;
                  D.32857->dreg = D.32872;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.32873>; else goto <D.32874>;
                  <D.32873>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32857 = args[3];
                  D.30927->next = D.32857;
                  D.32857 = args[3];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32857->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.32857 = args[3];
                  bblock.113->last_ins = D.32857;
                  goto <D.32875>;
                  <D.32874>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.32857 = args[3];
                  bblock.113->last_ins = D.32857;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.32875>:
                  D.30673 = cfg->mempool;
                  D.32876 = mono_mempool_alloc (D.30673, 80);
                  args[4] = D.32876;
                  D.32850 = args[4];
                  D.32850 = args[4];
                  D.32850->data.op[1].const_val = 0;
                  D.32877 = D.32850->data.op[1].const_val;
                  D.32850->data.op[0].const_val = D.32877;
                  D.32850 = args[4];
                  D.32850 = args[4];
                  D.32850->prev = 0B;
                  D.32878 = D.32850->prev;
                  D.32850->next = D.32878;
                  D.32850 = args[4];
                  D.32850->opcode = 362;
                  D.32850 = args[4];
                  D.32850->flags = 0;
                  D.32850 = args[4];
                  D.32850->type = 0;
                  D.32850 = args[4];
                  D.32850->dreg = -1;
                  D.32850 = args[4];
                  D.32850 = args[4];
                  D.32850 = args[4];
                  D.32850->sreg3 = -1;
                  D.32879 = D.32850->sreg3;
                  D.32850->sreg2 = D.32879;
                  D.32880 = D.32850->sreg2;
                  D.32850->sreg1 = D.32880;
                  D.32850 = args[4];
                  D.30898 = cfg->ip;
                  D.32850->cil_code = D.30898;
                  D.32850 = args[4];
                  D.32850->data.op[0].const_val = 0;
                  D.32850 = args[4];
                  D.32850->type = 1;
                  D.32850 = args[4];
                  D.32881 = alloc_dreg (cfg, 1);
                  D.32882 = (int) D.32881;
                  D.32850->dreg = D.32882;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.32883>; else goto <D.32884>;
                  <D.32883>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32850 = args[4];
                  D.30927->next = D.32850;
                  D.32850 = args[4];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.32850->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.32850 = args[4];
                  bblock.113->last_ins = D.32850;
                  goto <D.32885>;
                  <D.32884>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.32850 = args[4];
                  bblock.113->last_ins = D.32850;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.32885>:
                  <D.32769>:
                  ins = mono_emit_jit_icall (cfg, mono_gsharedvt_constrained_call, &args);
                  emit_widen = 0;
                  D.32616 = fsig->ret;
                  D.32886 = mini_is_gsharedvt_type (cfg, D.32616);
                  if (D.32886 != 0) goto <D.32887>; else goto <D.32888>;
                  <D.32887>:
                  D.32616 = fsig->ret;
                  D.32889 = mono_class_from_mono_type (D.32616);
                  ins = handle_unbox_gsharedvt (cfg, D.32889, ins, &bblock);
                  goto <D.32890>;
                  <D.32888>:
                  D.32616 = fsig->ret;
                  D.32724 = BIT_FIELD_REF <*D.32616, 8, 88>;
                  D.32725 = D.32724 & 64;
                  if (D.32725 == 0) goto <D.32891>; else goto <D.32892>;
                  <D.32891>:
                  D.32616 = fsig->ret;
                  D.32893 = D.32616->type;
                  D.32894 = D.32893 + 254;
                  D.32895 = D.32894 <= 11;
                  D.32896 = D.32893 + 232;
                  D.32897 = D.32896 <= 1;
                  D.32898 = D.32895 | D.32897;
                  if (D.32898 != 0) goto <D.32899>; else goto <D.32900>;
                  <D.32899>:
                  {
                    struct MonoInst * add;

                    D.30673 = cfg->mempool;
                    add = mono_mempool_alloc (D.30673, 80);
                    add->data.op[1].const_val = 0;
                    D.32901 = add->data.op[1].const_val;
                    add->data.op[0].const_val = D.32901;
                    add->prev = 0B;
                    D.32902 = add->prev;
                    add->next = D.32902;
                    add->opcode = 433;
                    add->flags = 0;
                    add->type = 0;
                    add->dreg = -1;
                    add->sreg3 = -1;
                    D.32903 = add->sreg3;
                    add->sreg2 = D.32903;
                    D.32904 = add->sreg2;
                    add->sreg1 = D.32904;
                    D.30898 = cfg->ip;
                    add->cil_code = D.30898;
                    D.32905 = alloc_dreg (cfg, 5);
                    D.32906 = (int) D.32905;
                    add->dreg = D.32906;
                    D.31092 = ins->dreg;
                    add->sreg1 = D.31092;
                    add->data.op[1].const_val = 16;
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    if (D.30927 != 0B) goto <D.32907>; else goto <D.32908>;
                    <D.32907>:
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    D.30927->next = add;
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    add->prev = D.30927;
                    bblock.113 = cfg->cbb;
                    bblock.113->last_ins = add;
                    goto <D.32909>;
                    <D.32908>:
                    bblock.113 = cfg->cbb;
                    bblock.113 = cfg->cbb;
                    bblock.113->last_ins = add;
                    D.30927 = bblock.113->last_ins;
                    bblock.113->code = D.30927;
                    <D.32909>:
                    D.30673 = cfg->mempool;
                    ins = mono_mempool_alloc (D.30673, 80);
                    ins->data.op[1].const_val = 0;
                    D.30894 = ins->data.op[1].const_val;
                    ins->data.op[0].const_val = D.30894;
                    ins->prev = 0B;
                    D.30895 = ins->prev;
                    ins->next = D.30895;
                    D.32616 = fsig->ret;
                    D.32910 = mono_type_to_load_membase (cfg, D.32616);
                    D.32911 = (short unsigned int) D.32910;
                    ins->opcode = D.32911;
                    ins->flags = 0;
                    ins->type = 0;
                    ins->dreg = -1;
                    ins->sreg3 = -1;
                    D.30896 = ins->sreg3;
                    ins->sreg2 = D.30896;
                    D.30897 = ins->sreg2;
                    ins->sreg1 = D.30897;
                    D.30898 = cfg->ip;
                    ins->cil_code = D.30898;
                    ins->dreg = 0;
                    D.32912 = add->dreg;
                    ins->sreg1 = D.32912;
                    ins->data.op[0].const_val = 0;
                    ins->type = 1;
                    D.32616 = fsig->ret;
                    type_to_eval_stack_type (cfg, D.32616, ins);
                    D.31426 = ins->type;
                    D.31427 = (<unnamed type>) D.31426;
                    D.32913 = alloc_dreg (cfg, D.31427);
                    D.32914 = (int) D.32913;
                    ins->dreg = D.32914;
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    if (D.30927 != 0B) goto <D.32915>; else goto <D.32916>;
                    <D.32915>:
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    D.30927->next = ins;
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    ins->prev = D.30927;
                    bblock.113 = cfg->cbb;
                    bblock.113->last_ins = ins;
                    goto <D.32917>;
                    <D.32916>:
                    bblock.113 = cfg->cbb;
                    bblock.113 = cfg->cbb;
                    bblock.113->last_ins = ins;
                    D.30927 = bblock.113->last_ins;
                    bblock.113->code = D.30927;
                    <D.32917>:
                  }
                  <D.32900>:
                  <D.32892>:
                  <D.32890>:
                  goto call_end;
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            <D.32715>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.32918>; else goto <D.32919>;
            <D.32918>:
            D.31560 = *ip;
            D.31561 = (int) D.31560;
            D.32920 = mono_opcode_name (D.31561);
            D.32333 = method->signature;
            D.32334 = D.32333->param_count;
            D.32335 = (int) D.32334;
            D.32336 = method->name;
            D.30609 = method->klass;
            D.32337 = D.30609->name;
            D.30609 = method->klass;
            D.32338 = D.30609->name_space;
            D.32921 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.32920, "method-to-ir.c", 7857);
            cfg->exception_message = D.32921;
            D.30753 = cfg->verbose_level;
            if (D.30753 > 1) goto <D.32922>; else goto <D.32923>;
            <D.32922>:
            D.32342 = cfg->exception_message;
            printf ("%s\n", D.32342);
            <D.32923>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32919>:
            <D.32706>:
            <D.32698>:
            <D.32696>:
            D.32701 = BIT_FIELD_REF <*constrained_call, 8, 256>;
            D.32702 = D.32701 & 8;
            if (D.32702 != 0) goto <D.32927>; else goto <D.32924>;
            <D.32927>:
            D.32528 = cmethod->klass;
            D.32699 = mono_defaults.object_class;
            if (D.32528 == D.32699) goto <D.32925>; else goto <D.32928>;
            <D.32928>:
            D.32528 = cmethod->klass;
            D.32929 = mono_defaults.enum_class;
            D.32930 = D.32929->parent;
            if (D.32528 == D.32930) goto <D.32925>; else goto <D.32931>;
            <D.32931>:
            D.32528 = cmethod->klass;
            D.32929 = mono_defaults.enum_class;
            if (D.32528 == D.32929) goto <D.32925>; else goto <D.32924>;
            <D.32925>:
            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.30894 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30894;
            ins->prev = 0B;
            D.30895 = ins->prev;
            ins->next = D.30895;
            D.32932 = &constrained_call->byval_arg;
            D.32933 = mono_type_to_load_membase (cfg, D.32932);
            D.32934 = (short unsigned int) D.32933;
            ins->opcode = D.32934;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30896 = ins->sreg3;
            ins->sreg2 = D.30896;
            D.30897 = ins->sreg2;
            ins->sreg1 = D.30897;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            ins->dreg = 0;
            D.31680 = *sp;
            D.31862 = D.31680->dreg;
            ins->sreg1 = D.31862;
            ins->data.op[0].const_val = 0;
            ins->type = 1;
            D.32932 = &constrained_call->byval_arg;
            type_to_eval_stack_type (cfg, D.32932, ins);
            D.31426 = ins->type;
            D.31427 = (<unnamed type>) D.31426;
            D.32935 = alloc_dreg (cfg, D.31427);
            D.32936 = (int) D.32935;
            ins->dreg = D.32936;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.32937>; else goto <D.32938>;
            <D.32937>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.32939>;
            <D.32938>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.32939>:
            ins->klass = constrained_call;
            D.32940 = mono_class_check_context_used (constrained_call);
            D.32941 = handle_box (cfg, ins, constrained_call, D.32940, &bblock);
            *sp = D.32941;
            D.31231 = cfg->exception_type;
            if (D.31231 != 0) goto exception_exit; else goto <D.32942>;
            <D.32942>:
            goto <D.32926>;
            <D.32924>:
            D.32701 = BIT_FIELD_REF <*constrained_call, 8, 256>;
            D.32702 = D.32701 & 8;
            if (D.32702 == 0) goto <D.32943>; else goto <D.32944>;
            <D.32943>:
            {
              int dreg;

              D.32945 = alloc_ireg_ref (cfg);
              dreg = (int) D.32945;
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 391;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              ins->dreg = dreg;
              D.31680 = *sp;
              D.31862 = D.31680->dreg;
              ins->sreg1 = D.31862;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.32946>; else goto <D.32947>;
              <D.32946>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.32948>;
              <D.32947>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.32948>:
              ins->type = 6;
              *sp = ins;
            }
            goto <D.32949>;
            <D.32944>:
            D.32528 = cmethod->klass;
            D.32529 = BIT_FIELD_REF <*D.32528, 8, 256>;
            D.32530 = D.32529 & 8;
            if (D.32530 != 0) goto <D.32950>; else goto <D.32951>;
            <D.32950>:
            goto <D.32952>;
            <D.32951>:
            {
              int ioffset;
              int slot;

              mono_class_setup_vtable (constrained_call);
              if (constrained_call == 0B) goto <D.32953>; else goto <D.32955>;
              <D.32955>:
              D.32956 = constrained_call->exception_type;
              if (D.32956 != 0) goto <D.32953>; else goto <D.32954>;
              <D.32953>:
              cfg->exception_ptr = constrained_call;
              D.32957 = mini_get_debug_options ();
              D.32958 = D.32957->break_on_unverified;
              if (D.32958 != 0) goto <D.32959>; else goto load_error;
              <D.32959>:
              __asm__ __volatile__("int $03");
              <D.32954>:
              D.32528 = cmethod->klass;
              ioffset = mono_class_interface_offset (constrained_call, D.32528);
              if (ioffset == -1) goto <D.32960>; else goto <D.32961>;
              <D.32960>:
              D.32962 = mini_get_debug_options ();
              D.32963 = D.32962->break_on_unverified;
              if (D.32963 != 0) goto <D.32964>; else goto <D.32965>;
              <D.32964>:
              __asm__ __volatile__("int $03");
              goto <D.32966>;
              <D.32965>:
              cfg->exception_ptr = constrained_call;
              goto load_error;
              <D.32966>:
              <D.32961>:
              slot = mono_method_get_vtable_slot (cmethod);
              if (slot == -1) goto <D.32967>; else goto <D.32968>;
              <D.32967>:
              D.32969 = mini_get_debug_options ();
              D.32970 = D.32969->break_on_unverified;
              if (D.32970 != 0) goto <D.32971>; else goto <D.32972>;
              <D.32971>:
              __asm__ __volatile__("int $03");
              goto <D.32973>;
              <D.32972>:
              D.32528 = cmethod->klass;
              cfg->exception_ptr = D.32528;
              goto load_error;
              <D.32973>:
              <D.32968>:
              D.32974 = constrained_call->vtable;
              D.32975 = ioffset + slot;
              D.32976 = (long unsigned int) D.32975;
              D.32977 = D.32976 * 8;
              D.32978 = D.32974 + D.32977;
              cmethod = *D.32978;
              D.32528 = cmethod->klass;
              D.32929 = mono_defaults.enum_class;
              if (D.32528 == D.32929) goto <D.32979>; else goto <D.32980>;
              <D.32979>:
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              D.32932 = &constrained_call->byval_arg;
              D.32981 = mono_type_to_load_membase (cfg, D.32932);
              D.32982 = (short unsigned int) D.32981;
              ins->opcode = D.32982;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              ins->dreg = 0;
              D.31680 = *sp;
              D.31862 = D.31680->dreg;
              ins->sreg1 = D.31862;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              D.32932 = &constrained_call->byval_arg;
              type_to_eval_stack_type (cfg, D.32932, ins);
              D.31426 = ins->type;
              D.31427 = (<unnamed type>) D.31426;
              D.32983 = alloc_dreg (cfg, D.31427);
              D.32984 = (int) D.32983;
              ins->dreg = D.32984;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.32985>; else goto <D.32986>;
              <D.32985>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.32987>;
              <D.32986>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.32987>:
              ins->klass = constrained_call;
              D.32988 = mono_class_check_context_used (constrained_call);
              D.32989 = handle_box (cfg, ins, constrained_call, D.32988, &bblock);
              *sp = D.32989;
              D.31231 = cfg->exception_type;
              if (D.31231 != 0) goto exception_exit; else goto <D.32990>;
              <D.32990>:
              <D.32980>:
            }
            <D.32952>:
            virtual = 0;
            <D.32949>:
            <D.32926>:
            constrained_call = 0B;
            <D.32693>:
            if (calli == 0) goto <D.32991>; else goto <D.32992>;
            <D.32991>:
            D.32993 = check_call_signature (cfg, fsig, sp);
            if (D.32993 != 0) goto <D.32994>; else goto <D.32995>;
            <D.32994>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.32996>; else goto <D.32997>;
            <D.32996>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.32998>; else goto <D.32999>;
            <D.32998>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.32999>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.32997>:
            D.33000 = mini_get_debug_options ();
            D.33001 = D.33000->break_on_unverified;
            if (D.33001 != 0) goto <D.33002>; else goto unverified;
            <D.33002>:
            __asm__ __volatile__("int $03");
            <D.32995>:
            <D.32992>:
            if (cmethod != 0B) goto <D.33003>; else goto <D.33004>;
            <D.33003>:
            D.32528 = cmethod->klass;
            D.33005 = D.32528->parent;
            D.33006 = mono_defaults.multicastdelegate_class;
            if (D.33005 == D.33006) goto <D.33007>; else goto <D.33008>;
            <D.33007>:
            {
              size_t __s1_len;
              size_t __s2_len;

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

                __s2 = cmethod->name;
                D.33012 = "Invoke";
                D.33013 = MEM[(const unsigned char *)D.33012];
                D.33014 = (int) D.33013;
                D.33015 = *__s2;
                D.33016 = (int) D.33015;
                __result = D.33014 - D.33016;
                {
                  D.33017 = __s2_len != 0;
                  D.33018 = __result == 0;
                  D.33019 = D.33017 & D.33018;
                  if (D.33019 != 0) goto <D.33020>; else goto <D.33021>;
                  <D.33020>:
                  D.33022 = &MEM[(void *)"Invoke" + 1B];
                  D.33023 = *D.33022;
                  D.33024 = (int) D.33023;
                  D.33025 = __s2 + 1;
                  D.33026 = *D.33025;
                  D.33027 = (int) D.33026;
                  __result = D.33024 - D.33027;
                  D.33028 = __s2_len > 1;
                  D.33018 = __result == 0;
                  D.33029 = D.33028 & D.33018;
                  if (D.33029 != 0) goto <D.33030>; else goto <D.33031>;
                  <D.33030>:
                  D.33032 = &MEM[(void *)"Invoke" + 2B];
                  D.33033 = *D.33032;
                  D.33034 = (int) D.33033;
                  D.33035 = __s2 + 2;
                  D.33036 = *D.33035;
                  D.33037 = (int) D.33036;
                  __result = D.33034 - D.33037;
                  D.33038 = __s2_len > 2;
                  D.33018 = __result == 0;
                  D.33039 = D.33038 & D.33018;
                  if (D.33039 != 0) goto <D.33040>; else goto <D.33041>;
                  <D.33040>:
                  D.33042 = &MEM[(void *)"Invoke" + 3B];
                  D.33043 = *D.33042;
                  D.33044 = (int) D.33043;
                  D.33045 = __s2 + 3;
                  D.33046 = *D.33045;
                  D.33047 = (int) D.33046;
                  __result = D.33044 - D.33047;
                  <D.33041>:
                  <D.33031>:
                  <D.33021>:
                }
                D.27786 = __result;
              }
              iftmp.112 = -D.27786;
              goto <D.33048>;
              <D.33011>:
              D.33049 = cmethod->name;
              iftmp.112 = __builtin_strcmp (D.33049, "Invoke");
              <D.33048>:
              D.27787 = iftmp.112;
            }
            if (D.27787 == 0) goto <D.33050>; else goto <D.33051>;
            <D.33050>:
            delegate_invoke = 1;
            <D.33051>:
            <D.33008>:
            <D.33004>:
            if (cmethod != 0B) goto <D.33052>; else goto <D.33053>;
            <D.33052>:
            D.31070 = cfg->opt;
            D.33054 = D.31070 & 2048;
            if (D.33054 != 0) goto <D.33055>; else goto <D.33056>;
            <D.33055>:
            ins = mini_emit_inst_for_sharable_method (cfg, cmethod, fsig, sp);
            if (ins != 0B) goto <D.33057>; else goto <D.33058>;
            <D.33057>:
            bblock.113 = cfg->cbb;
            bblock = bblock.113;
            D.32616 = fsig->ret;
            D.33059 = mono_type_is_void (D.32616);
            if (D.33059 == 0) goto <D.33060>; else goto <D.33061>;
            <D.33060>:
            D.32616 = fsig->ret;
            type_to_eval_stack_type (cfg, D.32616, ins);
            emit_widen = 0;
            <D.33061>:
            goto call_end;
            <D.33058>:
            <D.33056>:
            <D.33053>:
            D.30708 = cfg->generic_sharing_context;
            if (D.30708 != 0B) goto <D.33062>; else goto <D.33063>;
            <D.33062>:
            if (cmethod != 0B) goto <D.33064>; else goto <D.33065>;
            <D.33064>:
            D.32528 = cmethod->klass;
            D.30609 = method->klass;
            if (D.32528 != D.30609) goto <D.33066>; else goto <D.33067>;
            <D.33066>:
            D.32528 = cmethod->klass;
            D.33068 = D.32528->generic_class;
            if (D.33068 != 0B) goto <D.33069>; else goto <D.33070>;
            <D.33069>:
            D.33071 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.33071 != 0) goto <D.33072>; else goto <D.33073>;
            <D.33072>:
            D.32528 = cmethod->klass;
            D.33074 = mono_class_needs_cctor_run (D.32528, method);
            if (D.33074 != 0) goto <D.33075>; else goto <D.33076>;
            <D.33075>:
            D.32528 = cmethod->klass;
            emit_generic_class_init (cfg, D.32528);
            D.32528 = cmethod->klass;
            if (D.32528 == 0B) goto <D.33077>; else goto <D.33079>;
            <D.33079>:
            D.32528 = cmethod->klass;
            D.33080 = D.32528->exception_type;
            if (D.33080 != 0) goto <D.33077>; else goto <D.33078>;
            <D.33077>:
            D.32528 = cmethod->klass;
            cfg->exception_ptr = D.32528;
            D.33081 = mini_get_debug_options ();
            D.33082 = D.33081->break_on_unverified;
            if (D.33082 != 0) goto <D.33083>; else goto load_error;
            <D.33083>:
            __asm__ __volatile__("int $03");
            <D.33078>:
            <D.33076>:
            <D.33073>:
            <D.33070>:
            <D.33067>:
            <D.33065>:
            <D.33063>:
            if (cmethod != 0B) goto <D.33084>; else goto <D.33085>;
            <D.33084>:
            check_method_sharing (cfg, cmethod, &pass_vtable, &pass_mrgctx);
            <D.33085>:
            D.30708 = cfg->generic_sharing_context;
            if (D.30708 != 0B) goto <D.33086>; else goto <D.33087>;
            <D.33086>:
            if (cmethod != 0B) goto <D.33088>; else goto <D.33089>;
            <D.33088>:
            {
              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.33090>; else goto <D.33091>;
              <D.33090>:
              D.32528 = cmethod->klass;
              D.32710 = D.32528->flags;
              D.32711 = D.32710 & 32;
              if (D.32711 != 0) goto <D.33092>; else goto <D.33093>;
              <D.33092>:
              if (cmethod_context == 0B) goto <D.33094>; else goto <D.33096>;
              <D.33096>:
              D.33097 = cmethod_context->method_inst;
              if (D.33097 == 0B) goto <D.33094>; else goto <D.33095>;
              <D.33094>:
              pass_imt_from_rgctx = 1;
              <D.33095>:
              <D.33093>:
              <D.33091>:
              if (context_used != 0) goto <D.33100>; else goto <D.33101>;
              <D.33100>:
              D.30977 = method->flags;
              D.30978 = (int) D.30977;
              D.30979 = D.30978 & 16;
              if (D.30979 != 0) goto <D.33098>; else goto <D.33102>;
              <D.33102>:
              D.30609 = method->klass;
              D.30763 = BIT_FIELD_REF <*D.30609, 8, 256>;
              D.30764 = D.30763 & 8;
              if (D.30764 != 0) goto <D.33098>; else goto <D.33099>;
              <D.33098>:
              mono_get_vtable_var (cfg);
              <D.33099>:
              <D.33101>:
            }
            <D.33089>:
            <D.33087>:
            pass_vtable.114 = pass_vtable;
            if (pass_vtable.114 != 0) goto <D.33104>; else goto <D.33105>;
            <D.33104>:
            if (context_used != 0) goto <D.33106>; else goto <D.33107>;
            <D.33106>:
            D.32528 = cmethod->klass;
            vtable_arg = emit_get_rgctx_klass (cfg, context_used, D.32528, 2);
            goto <D.33108>;
            <D.33107>:
            {
              struct MonoVTable * vtable;

              D.32528 = cmethod->klass;
              D.30697 = cfg->domain;
              vtable = mono_class_vtable (D.30697, D.32528);
              D.32528 = cmethod->klass;
              if (D.32528 == 0B) goto <D.33109>; else goto <D.33111>;
              <D.33111>:
              D.32528 = cmethod->klass;
              D.33080 = D.32528->exception_type;
              if (D.33080 != 0) goto <D.33109>; else goto <D.33110>;
              <D.33109>:
              D.32528 = cmethod->klass;
              cfg->exception_ptr = D.32528;
              D.33112 = mini_get_debug_options ();
              D.33113 = D.33112->break_on_unverified;
              if (D.33113 != 0) goto <D.33114>; else goto load_error;
              <D.33114>:
              __asm__ __volatile__("int $03");
              <D.33110>:
              D.30673 = cfg->mempool;
              vtable_arg = mono_mempool_alloc (D.30673, 80);
              vtable_arg->data.op[1].const_val = 0;
              D.33115 = vtable_arg->data.op[1].const_val;
              vtable_arg->data.op[0].const_val = D.33115;
              vtable_arg->prev = 0B;
              D.33116 = vtable_arg->prev;
              vtable_arg->next = D.33116;
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.33118>; else goto <D.33119>;
              <D.33118>:
              iftmp.115 = 736;
              goto <D.33120>;
              <D.33119>:
              iftmp.115 = 363;
              <D.33120>:
              vtable_arg->opcode = iftmp.115;
              vtable_arg->flags = 0;
              vtable_arg->type = 0;
              vtable_arg->dreg = -1;
              vtable_arg->sreg3 = -1;
              D.33121 = vtable_arg->sreg3;
              vtable_arg->sreg2 = D.33121;
              D.33122 = vtable_arg->sreg2;
              vtable_arg->sreg1 = D.33122;
              D.30898 = cfg->ip;
              vtable_arg->cil_code = D.30898;
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.33124>; else goto <D.33125>;
              <D.33124>:
              iftmp.116 = vtable->klass;
              goto <D.33126>;
              <D.33125>:
              iftmp.116 = vtable;
              <D.33126>:
              vtable_arg->data.op[0].p = iftmp.116;
              vtable_arg->data.op[1].src = 14B;
              vtable_arg->type = 3;
              D.33127 = alloc_dreg (cfg, 3);
              D.33128 = (int) D.33127;
              vtable_arg->dreg = D.33128;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.33129>; else goto <D.33130>;
              <D.33129>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = vtable_arg;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              vtable_arg->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = vtable_arg;
              goto <D.33131>;
              <D.33130>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = vtable_arg;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.33131>:
            }
            <D.33108>:
            <D.33105>:
            pass_mrgctx.117 = pass_mrgctx;
            if (pass_mrgctx.117 != 0) goto <D.33133>; else goto <D.33134>;
            <D.33133>:
            D.33135 = vtable_arg != 0B;
            D.33136 = (long int) D.33135;
            D.33137 = __builtin_expect (D.33136, 0);
            if (D.33137 != 0) goto <D.33138>; else goto <D.33139>;
            <D.33138>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 7986, "!vtable_arg");
            <D.33139>:
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 == 0) goto <D.33140>; else goto <D.33141>;
            <D.33140>:
            D.32528 = cmethod->klass;
            mono_class_setup_vtable (D.32528);
            D.32528 = cmethod->klass;
            if (D.32528 == 0B) goto <D.33142>; else goto <D.33144>;
            <D.33144>:
            D.32528 = cmethod->klass;
            D.33080 = D.32528->exception_type;
            if (D.33080 != 0) goto <D.33142>; else goto <D.33143>;
            <D.33142>:
            D.32528 = cmethod->klass;
            cfg->exception_ptr = D.32528;
            D.33145 = mini_get_debug_options ();
            D.33146 = D.33145->break_on_unverified;
            if (D.33146 != 0) goto <D.33147>; else goto load_error;
            <D.33147>:
            __asm__ __volatile__("int $03");
            <D.33143>:
            <D.33141>:
            vtable_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 8);
            D.32564 = cmethod->flags;
            D.32565 = (int) D.32564;
            D.33150 = D.32565 & 64;
            if (D.33150 == 0) goto <D.33148>; else goto <D.33151>;
            <D.33151>:
            D.32564 = cmethod->flags;
            D.32565 = (int) D.32564;
            D.33152 = D.32565 & 32;
            if (D.33152 != 0) goto <D.33148>; else goto <D.33153>;
            <D.33153>:
            D.32528 = cmethod->klass;
            if (D.32528 != 0B) goto <D.33154>; else goto <D.33149>;
            <D.33154>:
            D.32528 = cmethod->klass;
            D.32710 = D.32528->flags;
            D.33155 = D.32710 & 256;
            if (D.33155 != 0) goto <D.33148>; else goto <D.33149>;
            <D.33148>:
            D.32528 = cmethod->klass;
            D.32571 = BIT_FIELD_REF <*D.32528, 8, 272>;
            D.32572 = D.32571 & 64;
            if (D.32572 == 0) goto <D.33156>; else goto <D.33157>;
            <D.33156>:
            if (virtual != 0) goto <D.33158>; else goto <D.33159>;
            <D.33158>:
            check_this = 1;
            <D.33159>:
            virtual = 0;
            <D.33157>:
            <D.33149>:
            <D.33134>:
            if (pass_imt_from_rgctx != 0) goto <D.33160>; else goto <D.33161>;
            <D.33160>:
            pass_vtable.114 = pass_vtable;
            D.33162 = pass_vtable.114 != 0;
            D.33163 = (long int) D.33162;
            D.33164 = __builtin_expect (D.33163, 0);
            if (D.33164 != 0) goto <D.33165>; else goto <D.33166>;
            <D.33165>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8010, "!pass_vtable");
            <D.33166>:
            D.33167 = cmethod == 0B;
            D.33168 = (long int) D.33167;
            D.33169 = __builtin_expect (D.33168, 0);
            if (D.33169 != 0) goto <D.33170>; else goto <D.33171>;
            <D.33170>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8011, "cmethod");
            <D.33171>:
            imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            <D.33161>:
            if (check_this != 0) goto <D.33172>; else goto <D.33173>;
            <D.33172>:
            D.31108 = cfg->flags;
            D.31307 = D.31108 | 128;
            cfg->flags = D.31307;
            D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
            D.31308 = D.30660 & 64;
            if (D.31308 != 0) goto <D.33174>; else goto <D.33175>;
            <D.33174>:
            D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
            D.31308 = D.30660 & 64;
            if (D.31308 != 0) goto <D.33176>; else goto <D.33177>;
            <D.33176>:
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.33178 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33178;
              inst->prev = 0B;
              D.33179 = inst->prev;
              inst->next = D.33179;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33180 = inst->sreg3;
              inst->sreg2 = D.33180;
              D.33181 = inst->sreg2;
              inst->sreg1 = D.33181;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = -1;
              D.31680 = *sp;
              D.31862 = D.31680->dreg;
              inst->sreg1 = D.31862;
              inst->data.op[1].const_val = 0;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.33182>; else goto <D.33183>;
              <D.33182>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.33184>;
              <D.33183>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.33184>:
            }
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.33185 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33185;
              inst->prev = 0B;
              D.33186 = inst->prev;
              inst->next = D.33186;
              inst->opcode = 455;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33187 = inst->sreg3;
              inst->sreg2 = D.33187;
              D.33188 = inst->sreg2;
              inst->sreg1 = D.33188;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->data.op[1].p = "NullReferenceException";
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.33189>; else goto <D.33190>;
              <D.33189>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.33191>;
              <D.33190>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.33191>:
            }
            goto <D.33192>;
            <D.33177>:
            <D.33192>:
            goto <D.33193>;
            <D.33175>:
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.33194 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33194;
              inst->prev = 0B;
              D.33195 = inst->prev;
              inst->next = D.33195;
              inst->opcode = 340;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33196 = inst->sreg3;
              inst->sreg2 = D.33196;
              D.33197 = inst->sreg2;
              inst->sreg1 = D.33197;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = -1;
              D.31680 = *sp;
              D.31862 = D.31680->dreg;
              inst->sreg1 = D.31862;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.33198>; else goto <D.33199>;
              <D.33198>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.33200>;
              <D.33199>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.33200>:
            }
            <D.33193>:
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.33201 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33201;
              inst->prev = 0B;
              D.33202 = inst->prev;
              inst->next = D.33202;
              inst->opcode = 803;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33203 = inst->sreg3;
              inst->sreg2 = D.33203;
              D.33204 = inst->sreg2;
              inst->sreg1 = D.33204;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = -1;
              D.31680 = *sp;
              D.31862 = D.31680->dreg;
              inst->sreg1 = D.31862;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.33205>; else goto <D.33206>;
              <D.33205>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.33207>;
              <D.33206>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.33207>:
            }
            <D.33173>:
            D.33213 = cmethod != 0B;
            D.33214 = virtual != 0;
            D.33215 = D.33213 & D.33214;
            if (D.33215 != 0) goto <D.33216>; else goto <D.33217>;
            <D.33216>:
            D.32564 = cmethod->flags;
            D.32565 = (int) D.32564;
            D.33150 = D.32565 & 64;
            if (D.33150 != 0) goto <D.33218>; else goto <D.33219>;
            <D.33218>:
            D.32564 = cmethod->flags;
            D.32565 = (int) D.32564;
            D.33152 = D.32565 & 32;
            if (D.33152 == 0) goto <D.33220>; else goto <D.33210>;
            <D.33220>:
            D.32528 = cmethod->klass;
            if (D.32528 == 0B) goto <D.33211>; else goto <D.33221>;
            <D.33221>:
            D.32528 = cmethod->klass;
            D.32710 = D.32528->flags;
            D.33155 = D.32710 & 256;
            if (D.33155 == 0) goto <D.33211>; else goto <D.33210>;
            <D.33210>:
            D.32651 = BIT_FIELD_REF <*cmethod, 8, 256>;
            D.33222 = D.32651 & 124;
            if (D.33222 == 36) goto <D.33211>; else goto <D.33212>;
            <D.33211>:
            D.33223 = fsig->generic_param_count;
            if (D.33223 != 0) goto <D.33224>; else goto <D.33225>;
            <D.33224>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 == 0) goto <D.33208>; else goto <D.33226>;
            <D.33226>:
            D.33227 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.33227 == 0) goto <D.33208>; else goto <D.33209>;
            <D.33208>:
            {
              struct MonoInst * this_temp;
              struct MonoInst * this_arg_temp;
              struct MonoInst * store;
              struct MonoInst * iargs[4];
              gboolean use_imt;

              try
                {
                  use_imt = 0;
                  D.32467 = BIT_FIELD_REF <*fsig, 8, 120>;
                  D.33228 = D.32467 & 2;
                  D.33229 = D.33228 == 0;
                  D.33230 = (long int) D.33229;
                  D.33231 = __builtin_expect (D.33230, 0);
                  if (D.33231 != 0) goto <D.33232>; else goto <D.33233>;
                  <D.33232>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8031, "fsig->is_inflated");
                  <D.33233>:
                  D.30642 = cfg->method;
                  if (D.30642 != method) goto <D.33234>; else goto <D.33235>;
                  <D.33234>:
                  D.30614 = BIT_FIELD_REF <*method, 8, 256>;
                  D.30615 = D.30614 & 124;
                  if (D.30615 == 0) goto <D.33236>; else goto <D.33237>;
                  <D.33236>:
                  D.30753 = cfg->verbose_level;
                  if (D.30753 > 1) goto <D.33238>; else goto <D.33239>;
                  <D.33238>:
                  printf ("inline failed: %s\n", "virtual generic call");
                  <D.33239>:
                  goto inline_failure;
                  <D.33237>:
                  <D.33235>:
                  D.30822 = cfg->gsharedvt;
                  if (D.30822 != 0) goto <D.33240>; else goto <D.33241>;
                  <D.33240>:
                  D.33242 = mini_is_gsharedvt_signature (cfg, fsig);
                  if (D.33242 != 0) goto <D.33243>; else goto <D.33244>;
                  <D.33243>:
                  D.30822 = cfg->gsharedvt;
                  if (D.30822 != 0) goto <D.33245>; else goto <D.33246>;
                  <D.33245>:
                  D.31560 = *ip;
                  D.31561 = (int) D.31560;
                  D.33247 = mono_opcode_name (D.31561);
                  D.32333 = method->signature;
                  D.32334 = D.32333->param_count;
                  D.32335 = (int) D.32334;
                  D.32336 = method->name;
                  D.30609 = method->klass;
                  D.32337 = D.30609->name;
                  D.30609 = method->klass;
                  D.32338 = D.30609->name_space;
                  D.33248 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.33247, "method-to-ir.c", 8037);
                  cfg->exception_message = D.33248;
                  D.30753 = cfg->verbose_level;
                  if (D.30753 > 1) goto <D.33249>; else goto <D.33250>;
                  <D.33249>:
                  D.32342 = cfg->exception_message;
                  printf ("%s\n", D.32342);
                  <D.33250>:
                  mono_cfg_set_exception (cfg, 11);
                  goto exception_exit;
                  <D.33246>:
                  <D.33244>:
                  <D.33241>:
                  D.32651 = BIT_FIELD_REF <*cmethod, 8, 256>;
                  D.33222 = D.32651 & 124;
                  if (D.33222 == 0) goto <D.33251>; else goto <D.33252>;
                  <D.33251>:
                  mono_use_imt.118 = mono_use_imt;
                  if (mono_use_imt.118 != 0) goto <D.33254>; else goto <D.33255>;
                  <D.33254>:
                  use_imt = 1;
                  <D.33255>:
                  <D.33252>:
                  if (use_imt != 0) goto <D.33256>; else goto <D.33257>;
                  <D.33256>:
                  D.33258 = imt_arg != 0B;
                  D.33259 = (long int) D.33258;
                  D.33260 = __builtin_expect (D.33259, 0);
                  if (D.33260 != 0) goto <D.33261>; else goto <D.33262>;
                  <D.33261>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8045, "!imt_arg");
                  <D.33262>:
                  if (context_used == 0) goto <D.33263>; else goto <D.33264>;
                  <D.33263>:
                  D.33265 = BIT_FIELD_REF <*cmethod, 8, 264>;
                  D.33266 = D.33265 & 16;
                  D.33267 = D.33266 == 0;
                  D.33268 = (long int) D.33267;
                  D.33269 = __builtin_expect (D.33268, 0);
                  if (D.33269 != 0) goto <D.33270>; else goto <D.33271>;
                  <D.33270>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8047, "cmethod->is_inflated");
                  <D.33271>:
                  <D.33264>:
                  imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
                  D.31680 = *sp;
                  ins = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, D.31680, imt_arg, 0B);
                  goto <D.33272>;
                  <D.33257>:
                  D.31680 = *sp;
                  D.33273 = type_from_stack_type (D.31680);
                  this_temp = mono_compile_create_var (cfg, D.33273, 329);
                  D.30673 = cfg->mempool;
                  store = mono_mempool_alloc (D.30673, 80);
                  store->data.op[1].const_val = 0;
                  D.33274 = store->data.op[1].const_val;
                  store->data.op[0].const_val = D.33274;
                  store->prev = 0B;
                  D.33275 = store->prev;
                  store->next = D.33275;
                  store->opcode = 428;
                  store->flags = 0;
                  store->type = 0;
                  store->dreg = -1;
                  store->sreg3 = -1;
                  D.33276 = store->sreg3;
                  store->sreg2 = D.33276;
                  D.33277 = store->sreg2;
                  store->sreg1 = D.33277;
                  D.30898 = cfg->ip;
                  store->cil_code = D.30898;
                  D.31416 = cfg->varinfo;
                  D.33278 = this_temp->data.op[0].const_val;
                  D.33279 = (long unsigned int) D.33278;
                  D.33280 = D.33279 * 8;
                  D.33281 = D.31416 + D.33280;
                  D.33282 = *D.33281;
                  D.33283 = D.33282->data.op[1].vtype;
                  D.33284 = mono_type_to_regmove (cfg, D.33283);
                  D.33285 = (short unsigned int) D.33284;
                  store->opcode = D.33285;
                  D.31416 = cfg->varinfo;
                  D.33278 = this_temp->data.op[0].const_val;
                  D.33279 = (long unsigned int) D.33278;
                  D.33280 = D.33279 * 8;
                  D.33281 = D.31416 + D.33280;
                  D.33282 = *D.33281;
                  D.33286 = D.33282->klass;
                  store->klass = D.33286;
                  D.31680 = *sp;
                  D.31862 = D.31680->dreg;
                  store->sreg1 = D.31862;
                  D.31416 = cfg->varinfo;
                  D.33278 = this_temp->data.op[0].const_val;
                  D.33279 = (long unsigned int) D.33278;
                  D.33280 = D.33279 * 8;
                  D.33281 = D.31416 + D.33280;
                  D.33282 = *D.33281;
                  D.33287 = D.33282->dreg;
                  store->dreg = D.33287;
                  D.33288 = store->opcode;
                  if (D.33288 == 431) goto <D.33289>; else goto <D.33290>;
                  <D.33289>:
                  D.31416 = cfg->varinfo;
                  D.33278 = this_temp->data.op[0].const_val;
                  D.33279 = (long unsigned int) D.33278;
                  D.33280 = D.33279 * 8;
                  D.33281 = D.31416 + D.33280;
                  D.33282 = *D.33281;
                  D.33283 = D.33282->data.op[1].vtype;
                  D.33291 = mono_class_from_mono_type (D.33283);
                  store->klass = D.33291;
                  <D.33290>:
                  bblock.70 = bblock;
                  D.31015 = bblock.70->last_ins;
                  if (D.31015 != 0B) goto <D.33292>; else goto <D.33293>;
                  <D.33292>:
                  bblock.70 = bblock;
                  D.31015 = bblock.70->last_ins;
                  D.31015->next = store;
                  bblock.70 = bblock;
                  D.31015 = bblock.70->last_ins;
                  store->prev = D.31015;
                  bblock.70 = bblock;
                  bblock.70->last_ins = store;
                  goto <D.33294>;
                  <D.33293>:
                  bblock.70 = bblock;
                  bblock.70 = bblock;
                  bblock.70->last_ins = store;
                  D.31015 = bblock.70->last_ins;
                  bblock.70->code = D.31015;
                  <D.33294>:
                  D.31084 = mono_defaults.int_class;
                  D.31085 = &D.31084->byval_arg;
                  this_arg_temp = mono_compile_create_var (cfg, D.31085, 329);
                  D.30673 = cfg->mempool;
                  D.33295 = mono_mempool_alloc (D.30673, 80);
                  iargs[0] = D.33295;
                  D.33296 = iargs[0];
                  D.33296 = iargs[0];
                  D.33296->data.op[1].const_val = 0;
                  D.33297 = D.33296->data.op[1].const_val;
                  D.33296->data.op[0].const_val = D.33297;
                  D.33296 = iargs[0];
                  D.33296 = iargs[0];
                  D.33296->prev = 0B;
                  D.33298 = D.33296->prev;
                  D.33296->next = D.33298;
                  D.33296 = iargs[0];
                  D.33296->opcode = 428;
                  D.33296 = iargs[0];
                  D.33296->flags = 0;
                  D.33296 = iargs[0];
                  D.33296->type = 0;
                  D.33296 = iargs[0];
                  D.33296->dreg = -1;
                  D.33296 = iargs[0];
                  D.33296 = iargs[0];
                  D.33296 = iargs[0];
                  D.33296->sreg3 = -1;
                  D.33299 = D.33296->sreg3;
                  D.33296->sreg2 = D.33299;
                  D.33300 = D.33296->sreg2;
                  D.33296->sreg1 = D.33300;
                  D.33296 = iargs[0];
                  D.30898 = cfg->ip;
                  D.33296->cil_code = D.30898;
                  D.33296 = iargs[0];
                  D.31416 = cfg->varinfo;
                  D.33278 = this_temp->data.op[0].const_val;
                  D.33279 = (long unsigned int) D.33278;
                  D.33280 = D.33279 * 8;
                  D.33281 = D.31416 + D.33280;
                  D.33282 = *D.33281;
                  D.33283 = D.33282->data.op[1].vtype;
                  D.33301 = mono_type_to_regmove (cfg, D.33283);
                  D.33302 = (short unsigned int) D.33301;
                  D.33296->opcode = D.33302;
                  D.33296 = iargs[0];
                  D.31416 = cfg->varinfo;
                  D.33278 = this_temp->data.op[0].const_val;
                  D.33279 = (long unsigned int) D.33278;
                  D.33280 = D.33279 * 8;
                  D.33281 = D.31416 + D.33280;
                  D.33282 = *D.33281;
                  D.33283 = D.33282->data.op[1].vtype;
                  type_to_eval_stack_type (cfg, D.33283, D.33296);
                  D.33296 = iargs[0];
                  D.31416 = cfg->varinfo;
                  D.33278 = this_temp->data.op[0].const_val;
                  D.33279 = (long unsigned int) D.33278;
                  D.33280 = D.33279 * 8;
                  D.33281 = D.31416 + D.33280;
                  D.33282 = *D.33281;
                  D.33286 = D.33282->klass;
                  D.33296->klass = D.33286;
                  D.33296 = iargs[0];
                  D.31416 = cfg->varinfo;
                  D.33278 = this_temp->data.op[0].const_val;
                  D.33279 = (long unsigned int) D.33278;
                  D.33280 = D.33279 * 8;
                  D.33281 = D.31416 + D.33280;
                  D.33282 = *D.33281;
                  D.33287 = D.33282->dreg;
                  D.33296->sreg1 = D.33287;
                  D.33296 = iargs[0];
                  D.33296 = iargs[0];
                  D.33303 = D.33296->type;
                  D.33304 = (<unnamed type>) D.33303;
                  D.33305 = alloc_dreg (cfg, D.33304);
                  D.33306 = (int) D.33305;
                  D.33296->dreg = D.33306;
                  D.33296 = iargs[0];
                  D.33307 = D.33296->opcode;
                  if (D.33307 == 431) goto <D.33308>; else goto <D.33309>;
                  <D.33308>:
                  D.33296 = iargs[0];
                  D.31416 = cfg->varinfo;
                  D.33278 = this_temp->data.op[0].const_val;
                  D.33279 = (long unsigned int) D.33278;
                  D.33280 = D.33279 * 8;
                  D.33281 = D.31416 + D.33280;
                  D.33282 = *D.33281;
                  D.33283 = D.33282->data.op[1].vtype;
                  D.33310 = mono_class_from_mono_type (D.33283);
                  D.33296->klass = D.33310;
                  <D.33309>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.33311>; else goto <D.33312>;
                  <D.33311>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.33296 = iargs[0];
                  D.30927->next = D.33296;
                  D.33296 = iargs[0];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.33296->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.33296 = iargs[0];
                  bblock.113->last_ins = D.33296;
                  goto <D.33313>;
                  <D.33312>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.33296 = iargs[0];
                  bblock.113->last_ins = D.33296;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.33313>:
                  D.33314 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
                  iargs[1] = D.33314;
                  D.30673 = cfg->mempool;
                  D.33315 = mono_mempool_alloc (D.30673, 80);
                  iargs[2] = D.33315;
                  D.33316 = iargs[2];
                  D.33316 = iargs[2];
                  D.33316->data.op[1].const_val = 0;
                  D.33317 = D.33316->data.op[1].const_val;
                  D.33316->data.op[0].const_val = D.33317;
                  D.33316 = iargs[2];
                  D.33316 = iargs[2];
                  D.33316->prev = 0B;
                  D.33318 = D.33316->prev;
                  D.33316->next = D.33318;
                  D.33316 = iargs[2];
                  D.33316->opcode = 314;
                  D.33316 = iargs[2];
                  D.33316->flags = 0;
                  D.33316 = iargs[2];
                  D.33316->type = 0;
                  D.33316 = iargs[2];
                  D.33316->dreg = -1;
                  D.33316 = iargs[2];
                  D.33316 = iargs[2];
                  D.33316 = iargs[2];
                  D.33316->sreg3 = -1;
                  D.33319 = D.33316->sreg3;
                  D.33316->sreg2 = D.33319;
                  D.33320 = D.33316->sreg2;
                  D.33316->sreg1 = D.33320;
                  D.33316 = iargs[2];
                  D.30898 = cfg->ip;
                  D.33316->cil_code = D.30898;
                  D.33316 = iargs[2];
                  D.31416 = cfg->varinfo;
                  D.33321 = this_arg_temp->data.op[0].const_val;
                  D.33322 = (long unsigned int) D.33321;
                  D.33323 = D.33322 * 8;
                  D.33324 = D.31416 + D.33323;
                  D.33325 = *D.33324;
                  D.33316->data.op[0].p = D.33325;
                  D.31416 = cfg->varinfo;
                  D.33321 = this_arg_temp->data.op[0].const_val;
                  D.33322 = (long unsigned int) D.33321;
                  D.33323 = D.33322 * 8;
                  D.33324 = D.31416 + D.33323;
                  D.33325 = *D.33324;
                  D.31416 = cfg->varinfo;
                  D.33321 = this_arg_temp->data.op[0].const_val;
                  D.33322 = (long unsigned int) D.33321;
                  D.33323 = D.33322 * 8;
                  D.33324 = D.31416 + D.33323;
                  D.33325 = *D.33324;
                  D.33326 = D.33325->flags;
                  D.33327 = D.33326 | 16;
                  D.33325->flags = D.33327;
                  D.33316 = iargs[2];
                  D.33316->type = 5;
                  D.33316 = iargs[2];
                  D.31416 = cfg->varinfo;
                  D.33321 = this_arg_temp->data.op[0].const_val;
                  D.33322 = (long unsigned int) D.33321;
                  D.33323 = D.33322 * 8;
                  D.33324 = D.31416 + D.33323;
                  D.33325 = *D.33324;
                  D.33328 = D.33325->klass;
                  D.33316->klass = D.33328;
                  D.33316 = iargs[2];
                  D.33329 = alloc_dreg (cfg, 5);
                  D.33330 = (int) D.33329;
                  D.33316->dreg = D.33330;
                  cfg->has_indirection = 1;
                  D.30822 = cfg->gsharedvt;
                  D.31766 = D.30822 != 0;
                  D.31767 = (long int) D.31766;
                  D.31768 = __builtin_expect (D.31767, 0);
                  if (D.31768 != 0) goto <D.33331>; else goto <D.33332>;
                  <D.33331>:
                  D.31416 = cfg->varinfo;
                  D.33321 = this_arg_temp->data.op[0].const_val;
                  D.33322 = (long unsigned int) D.33321;
                  D.33323 = D.33322 * 8;
                  D.33324 = D.31416 + D.33323;
                  D.33325 = *D.33324;
                  D.33333 = D.33325->data.op[1].vtype;
                  D.33334 = mini_is_gsharedvt_variable_type (cfg, D.33333);
                  if (D.33334 != 0) goto <D.33335>; else goto <D.33336>;
                  <D.33335>:
                  handle_gsharedvt_ldaddr (cfg);
                  <D.33336>:
                  <D.33332>:
                  if (0 != 0) goto <D.33337>; else goto <D.33338>;
                  <D.33337>:
                  {
                    struct MonoInst * var1;
                    struct MonoInst * var2;

                    D.31416 = cfg->varinfo;
                    D.33321 = this_arg_temp->data.op[0].const_val;
                    D.33322 = (long unsigned int) D.33321;
                    D.33323 = D.33322 * 8;
                    D.33324 = D.31416 + D.33323;
                    D.33325 = *D.33324;
                    D.33340 = D.33325->dreg;
                    D.33341 = D.33340 + 1;
                    D.33342 = (unsigned int) D.33341;
                    D.31781 = cfg->vreg_to_inst_len;
                    if (D.33342 < D.31781) goto <D.33343>; else goto <D.33344>;
                    <D.33343>:
                    D.31784 = cfg->vreg_to_inst;
                    D.31416 = cfg->varinfo;
                    D.33321 = this_arg_temp->data.op[0].const_val;
                    D.33322 = (long unsigned int) D.33321;
                    D.33323 = D.33322 * 8;
                    D.33324 = D.31416 + D.33323;
                    D.33325 = *D.33324;
                    D.33340 = D.33325->dreg;
                    D.33345 = (sizetype) D.33340;
                    D.33346 = D.33345 + 1;
                    D.33347 = D.33346 * 8;
                    D.33348 = D.31784 + D.33347;
                    iftmp.119 = *D.33348;
                    goto <D.33349>;
                    <D.33344>:
                    iftmp.119 = 0B;
                    <D.33349>:
                    var1 = iftmp.119;
                    D.31416 = cfg->varinfo;
                    D.33321 = this_arg_temp->data.op[0].const_val;
                    D.33322 = (long unsigned int) D.33321;
                    D.33323 = D.33322 * 8;
                    D.33324 = D.31416 + D.33323;
                    D.33325 = *D.33324;
                    D.33340 = D.33325->dreg;
                    D.33351 = D.33340 + 2;
                    D.33352 = (unsigned int) D.33351;
                    D.31781 = cfg->vreg_to_inst_len;
                    if (D.33352 < D.31781) goto <D.33353>; else goto <D.33354>;
                    <D.33353>:
                    D.31784 = cfg->vreg_to_inst;
                    D.31416 = cfg->varinfo;
                    D.33321 = this_arg_temp->data.op[0].const_val;
                    D.33322 = (long unsigned int) D.33321;
                    D.33323 = D.33322 * 8;
                    D.33324 = D.31416 + D.33323;
                    D.33325 = *D.33324;
                    D.33340 = D.33325->dreg;
                    D.33345 = (sizetype) D.33340;
                    D.33355 = D.33345 + 2;
                    D.33356 = D.33355 * 8;
                    D.33357 = D.31784 + D.33356;
                    iftmp.120 = *D.33357;
                    goto <D.33358>;
                    <D.33354>:
                    iftmp.120 = 0B;
                    <D.33358>:
                    var2 = iftmp.120;
                    D.33359 = var1 == 0B;
                    D.33360 = (long int) D.33359;
                    D.33361 = __builtin_expect (D.33360, 0);
                    if (D.33361 != 0) goto <D.33362>; else goto <D.33363>;
                    <D.33362>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8062, "var1");
                    <D.33363>:
                    D.33364 = var2 == 0B;
                    D.33365 = (long int) D.33364;
                    D.33366 = __builtin_expect (D.33365, 0);
                    if (D.33366 != 0) goto <D.33367>; else goto <D.33368>;
                    <D.33367>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8062, "var2");
                    <D.33368>:
                    D.33369 = var1->flags;
                    D.33370 = D.33369 | 16;
                    var1->flags = D.33370;
                    D.33371 = var2->flags;
                    D.33372 = D.33371 | 16;
                    var2->flags = D.33372;
                  }
                  <D.33338>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.33373>; else goto <D.33374>;
                  <D.33373>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.33316 = iargs[2];
                  D.30927->next = D.33316;
                  D.33316 = iargs[2];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.33316->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.33316 = iargs[2];
                  bblock.113->last_ins = D.33316;
                  goto <D.33375>;
                  <D.33374>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.33316 = iargs[2];
                  bblock.113->last_ins = D.33316;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.33375>:
                  addr = mono_emit_jit_icall (cfg, mono_helper_compile_generic_method, &iargs);
                  D.30673 = cfg->mempool;
                  D.33376 = mono_mempool_alloc (D.30673, 80);
                  *sp = D.33376;
                  D.31680 = *sp;
                  D.31680 = *sp;
                  D.31680->data.op[1].const_val = 0;
                  D.33377 = D.31680->data.op[1].const_val;
                  D.31680->data.op[0].const_val = D.33377;
                  D.31680 = *sp;
                  D.31680 = *sp;
                  D.31680->prev = 0B;
                  D.33378 = D.31680->prev;
                  D.31680->next = D.33378;
                  D.31680 = *sp;
                  D.31680->opcode = 428;
                  D.31680 = *sp;
                  D.31680->flags = 0;
                  D.31680 = *sp;
                  D.31680->type = 0;
                  D.31680 = *sp;
                  D.31680->dreg = -1;
                  D.31680 = *sp;
                  D.31680 = *sp;
                  D.31680 = *sp;
                  D.31680->sreg3 = -1;
                  D.33379 = D.31680->sreg3;
                  D.31680->sreg2 = D.33379;
                  D.33380 = D.31680->sreg2;
                  D.31680->sreg1 = D.33380;
                  D.31680 = *sp;
                  D.30898 = cfg->ip;
                  D.31680->cil_code = D.30898;
                  D.31680 = *sp;
                  D.31416 = cfg->varinfo;
                  D.33321 = this_arg_temp->data.op[0].const_val;
                  D.33322 = (long unsigned int) D.33321;
                  D.33323 = D.33322 * 8;
                  D.33324 = D.31416 + D.33323;
                  D.33325 = *D.33324;
                  D.33333 = D.33325->data.op[1].vtype;
                  D.33381 = mono_type_to_regmove (cfg, D.33333);
                  D.33382 = (short unsigned int) D.33381;
                  D.31680->opcode = D.33382;
                  D.31680 = *sp;
                  D.31416 = cfg->varinfo;
                  D.33321 = this_arg_temp->data.op[0].const_val;
                  D.33322 = (long unsigned int) D.33321;
                  D.33323 = D.33322 * 8;
                  D.33324 = D.31416 + D.33323;
                  D.33325 = *D.33324;
                  D.33333 = D.33325->data.op[1].vtype;
                  type_to_eval_stack_type (cfg, D.33333, D.31680);
                  D.31680 = *sp;
                  D.31416 = cfg->varinfo;
                  D.33321 = this_arg_temp->data.op[0].const_val;
                  D.33322 = (long unsigned int) D.33321;
                  D.33323 = D.33322 * 8;
                  D.33324 = D.31416 + D.33323;
                  D.33325 = *D.33324;
                  D.33328 = D.33325->klass;
                  D.31680->klass = D.33328;
                  D.31680 = *sp;
                  D.31416 = cfg->varinfo;
                  D.33321 = this_arg_temp->data.op[0].const_val;
                  D.33322 = (long unsigned int) D.33321;
                  D.33323 = D.33322 * 8;
                  D.33324 = D.31416 + D.33323;
                  D.33325 = *D.33324;
                  D.33340 = D.33325->dreg;
                  D.31680->sreg1 = D.33340;
                  D.31680 = *sp;
                  D.31680 = *sp;
                  D.33383 = D.31680->type;
                  D.33384 = (<unnamed type>) D.33383;
                  D.33385 = alloc_dreg (cfg, D.33384);
                  D.33386 = (int) D.33385;
                  D.31680->dreg = D.33386;
                  D.31680 = *sp;
                  D.33387 = D.31680->opcode;
                  if (D.33387 == 431) goto <D.33388>; else goto <D.33389>;
                  <D.33388>:
                  D.31680 = *sp;
                  D.31416 = cfg->varinfo;
                  D.33321 = this_arg_temp->data.op[0].const_val;
                  D.33322 = (long unsigned int) D.33321;
                  D.33323 = D.33322 * 8;
                  D.33324 = D.31416 + D.33323;
                  D.33325 = *D.33324;
                  D.33333 = D.33325->data.op[1].vtype;
                  D.33390 = mono_class_from_mono_type (D.33333);
                  D.31680->klass = D.33390;
                  <D.33389>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.33391>; else goto <D.33392>;
                  <D.33391>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.31680 = *sp;
                  D.30927->next = D.31680;
                  D.31680 = *sp;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.31680->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.31680 = *sp;
                  bblock.113->last_ins = D.31680;
                  goto <D.33393>;
                  <D.33392>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.31680 = *sp;
                  bblock.113->last_ins = D.31680;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.33393>:
                  ins = mono_emit_calli (cfg, fsig, sp, addr, 0B, 0B);
                  <D.33272>:
                  goto call_end;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.33209>:
            <D.33225>:
            <D.33212>:
            <D.33219>:
            <D.33217>:
            if (cmethod != 0B) goto <D.33394>; else goto <D.33395>;
            <D.33394>:
            D.32528 = cmethod->klass;
            D.33396 = mono_defaults.monitor_class;
            if (D.32528 == D.33396) goto <D.33397>; else goto <D.33398>;
            <D.33397>:
            {
              size_t __s1_len;
              size_t __s2_len;

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

                __s2 = cmethod->name;
                D.33402 = "Enter";
                D.33403 = MEM[(const unsigned char *)D.33402];
                D.33404 = (int) D.33403;
                D.33405 = *__s2;
                D.33406 = (int) D.33405;
                __result = D.33404 - D.33406;
                {
                  D.33407 = __s2_len != 0;
                  D.33408 = __result == 0;
                  D.33409 = D.33407 & D.33408;
                  if (D.33409 != 0) goto <D.33410>; else goto <D.33411>;
                  <D.33410>:
                  D.33412 = &MEM[(void *)"Enter" + 1B];
                  D.33413 = *D.33412;
                  D.33414 = (int) D.33413;
                  D.33415 = __s2 + 1;
                  D.33416 = *D.33415;
                  D.33417 = (int) D.33416;
                  __result = D.33414 - D.33417;
                  D.33418 = __s2_len > 1;
                  D.33408 = __result == 0;
                  D.33419 = D.33418 & D.33408;
                  if (D.33419 != 0) goto <D.33420>; else goto <D.33421>;
                  <D.33420>:
                  D.33422 = &MEM[(void *)"Enter" + 2B];
                  D.33423 = *D.33422;
                  D.33424 = (int) D.33423;
                  D.33425 = __s2 + 2;
                  D.33426 = *D.33425;
                  D.33427 = (int) D.33426;
                  __result = D.33424 - D.33427;
                  D.33428 = __s2_len > 2;
                  D.33408 = __result == 0;
                  D.33429 = D.33428 & D.33408;
                  if (D.33429 != 0) goto <D.33430>; else goto <D.33431>;
                  <D.33430>:
                  D.33432 = &MEM[(void *)"Enter" + 3B];
                  D.33433 = *D.33432;
                  D.33434 = (int) D.33433;
                  D.33435 = __s2 + 3;
                  D.33436 = *D.33435;
                  D.33437 = (int) D.33436;
                  __result = D.33434 - D.33437;
                  <D.33431>:
                  <D.33421>:
                  <D.33411>:
                }
                D.27808 = __result;
              }
              iftmp.121 = -D.27808;
              goto <D.33438>;
              <D.33401>:
              D.33049 = cmethod->name;
              iftmp.121 = __builtin_strcmp (D.33049, "Enter");
              <D.33438>:
              D.27809 = iftmp.121;
            }
            if (D.27809 == 0) goto <D.33439>; else goto <D.33440>;
            <D.33439>:
            D.33441 = mono_method_signature (cmethod);
            D.33442 = D.33441->param_count;
            if (D.33442 == 1) goto <D.33443>; else goto <D.33444>;
            <D.33443>:
            {
              struct MonoBasicBlock * tbb;

              D.30804 = cfg->cil_offset_to_bb;
              D.32104 = ip + 5;
              D.32629 = (long int) D.32104;
              D.30809 = cfg->cil_start;
              D.30810 = (long int) D.30809;
              D.33445 = D.32629 - D.30810;
              D.33446 = (long unsigned int) D.33445;
              D.33447 = D.33446 * 8;
              D.33448 = D.30804 + D.33447;
              tbb = *D.33448;
              if (tbb == 0B) goto <D.33449>; else goto <D.33450>;
              <D.33449>:
              D.32104 = ip + 5;
              if (D.32104 >= end) goto <D.33451>; else goto <D.33453>;
              <D.33453>:
              D.33454 = ip + 5;
              D.30821 = header->code;
              if (D.33454 < D.30821) goto <D.33451>; else goto <D.33452>;
              <D.33451>:
              D.30822 = cfg->gsharedvt;
              if (D.30822 != 0) goto <D.33455>; else goto <D.33456>;
              <D.33455>:
              D.30753 = cfg->verbose_level;
              if (D.30753 > 2) goto <D.33457>; else goto <D.33458>;
              <D.33457>:
              printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
              <D.33458>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.33456>:
              D.33459 = mini_get_debug_options ();
              D.33460 = D.33459->break_on_unverified;
              if (D.33460 != 0) goto <D.33461>; else goto unverified;
              <D.33461>:
              __asm__ __volatile__("int $03");
              <D.33452>:
              D.30673 = cfg->mempool;
              tbb = mono_mempool_alloc0 (D.30673, 296);
              D.30781 = cfg->num_bblocks;
              D.33462 = D.30781;
              D.33463 = D.33462 + 1;
              cfg->num_bblocks = D.33463;
              D.33464 = (int) D.33462;
              tbb->block_num = D.33464;
              D.32104 = ip + 5;
              tbb->cil_code = D.32104;
              D.33465 = tbb->cil_code;
              if (D.33465 != 0B) goto <D.33466>; else goto <D.33467>;
              <D.33466>:
              D.30804 = cfg->cil_offset_to_bb;
              D.33465 = tbb->cil_code;
              D.33468 = (long int) D.33465;
              D.30809 = cfg->cil_start;
              D.30810 = (long int) D.30809;
              D.33469 = D.33468 - D.30810;
              D.33470 = (long unsigned int) D.33469;
              D.33471 = D.33470 * 8;
              D.33472 = D.30804 + D.33471;
              *D.33472 = tbb;
              <D.33467>:
              D.30841 = cfg->real_offset;
              tbb->real_offset = D.30841;
              <D.33450>:
              D.33473 = BIT_FIELD_REF <*tbb, 8, 1488>;
              D.33474 = D.33473 & 64;
              if (D.33474 != 0) goto <D.33475>; else goto <D.33476>;
              <D.33475>:
              D.33477 = tbb->region;
              D.33478 = D.33477 & 7;
              if (D.33478 == 2) goto <D.33479>; else goto <D.33480>;
              <D.33479>:
              tbb->extend_try_block = 1;
              <D.33480>:
              <D.33476>:
            }
            <D.33444>:
            <D.33440>:
            <D.33398>:
            <D.33395>:
            if (cmethod != 0B) goto <D.33481>; else goto <D.33482>;
            <D.33481>:
            D.31070 = cfg->opt;
            D.33054 = D.31070 & 2048;
            if (D.33054 != 0) goto <D.33483>; else goto <D.33484>;
            <D.33483>:
            ins = mini_emit_inst_for_method (cfg, cmethod, fsig, sp);
            if (ins != 0B) goto <D.33485>; else goto <D.33486>;
            <D.33485>:
            bblock.113 = cfg->cbb;
            bblock = bblock.113;
            D.32616 = fsig->ret;
            D.33487 = mono_type_is_void (D.32616);
            if (D.33487 == 0) goto <D.33488>; else goto <D.33489>;
            <D.33488>:
            D.32616 = fsig->ret;
            type_to_eval_stack_type (cfg, D.32616, ins);
            emit_widen = 0;
            <D.33489>:
            goto call_end;
            <D.33486>:
            <D.33484>:
            <D.33482>:
            if (cmethod != 0B) goto <D.33492>; else goto <D.33493>;
            <D.33492>:
            D.31070 = cfg->opt;
            D.33494 = D.31070 & 4;
            if (D.33494 != 0) goto <D.33495>; else goto <D.33496>;
            <D.33495>:
            if (virtual == 0) goto <D.33490>; else goto <D.33497>;
            <D.33497>:
            D.32564 = cmethod->flags;
            D.32565 = (int) D.32564;
            D.33150 = D.32565 & 64;
            if (D.33150 == 0) goto <D.33490>; else goto <D.33498>;
            <D.33498>:
            D.32564 = cmethod->flags;
            D.32565 = (int) D.32564;
            D.33152 = D.32565 & 32;
            if (D.33152 != 0) goto <D.33490>; else goto <D.33499>;
            <D.33499>:
            D.32528 = cmethod->klass;
            if (D.32528 != 0B) goto <D.33500>; else goto <D.33491>;
            <D.33500>:
            D.32528 = cmethod->klass;
            D.32710 = D.32528->flags;
            D.33155 = D.32710 & 256;
            if (D.33155 != 0) goto <D.33490>; else goto <D.33491>;
            <D.33490>:
            if (disable_inline == 0) goto <D.33501>; else goto <D.33502>;
            <D.33501>:
            D.33503 = mono_method_check_inlining (cfg, cmethod);
            if (D.33503 != 0) goto <D.33504>; else goto <D.33505>;
            <D.33504>:
            D.33506 = monoeg_g_list_find (dont_inline, cmethod);
            if (D.33506 == 0B) goto <D.33507>; else goto <D.33508>;
            <D.33507>:
            {
              int costs;
              gboolean always;

              always = 0;
              D.32595 = cmethod->iflags;
              D.32596 = (int) D.32595;
              D.32597 = D.32596 & 4096;
              if (D.32597 != 0) goto <D.33509>; else goto <D.33511>;
              <D.33511>:
              D.32564 = cmethod->flags;
              D.32565 = (int) D.32564;
              D.33512 = D.32565 & 8192;
              if (D.33512 != 0) goto <D.33509>; else goto <D.33510>;
              <D.33509>:
              D.30642 = cfg->method;
              if (D.30642 != method) goto <D.33513>; else goto <D.33514>;
              <D.33513>:
              D.30614 = BIT_FIELD_REF <*method, 8, 256>;
              D.30615 = D.30614 & 124;
              if (D.30615 == 0) goto <D.33515>; else goto <D.33516>;
              <D.33515>:
              D.30753 = cfg->verbose_level;
              if (D.30753 > 1) goto <D.33517>; else goto <D.33518>;
              <D.33517>:
              printf ("inline failed: %s\n", "wrapper call");
              <D.33518>:
              goto inline_failure;
              <D.33516>:
              <D.33514>:
              check_for_pending_exc.107 = check_for_pending_exc;
              cmethod = mono_marshal_get_native_wrapper (cmethod, check_for_pending_exc.107, 0);
              always = 1;
              <D.33510>:
              D.30841 = cfg->real_offset;
              costs = inline_method (cfg, cmethod, fsig, sp, ip, D.30841, dont_inline, always);
              if (costs != 0) goto <D.33519>; else goto <D.33520>;
              <D.33519>:
              D.30841 = cfg->real_offset;
              D.33521 = D.30841 + 5;
              cfg->real_offset = D.33521;
              bblock.113 = cfg->cbb;
              bblock = bblock.113;
              D.32616 = fsig->ret;
              D.33522 = mono_type_is_void (D.32616);
              if (D.33522 == 0) goto <D.33523>; else goto <D.33524>;
              <D.33523>:
              sp = sp + 8;
              push_res = 0;
              <D.33524>:
              inline_costs = inline_costs + costs;
              goto call_end;
              <D.33520>:
            }
            <D.33508>:
            <D.33505>:
            <D.33502>:
            <D.33491>:
            <D.33496>:
            <D.33493>:
            D.31070 = cfg->opt;
            D.33525 = D.31070 & 4096;
            if (D.33525 != 0) goto <D.33526>; else goto <D.33527>;
            <D.33526>:
            D.33528 = call_opcode == 40;
            D.33529 = cmethod == method;
            D.33530 = D.33528 & D.33529;
            if (D.33530 != 0) goto <D.33531>; else goto <D.33532>;
            <D.33531>:
            D.32104 = ip + 5;
            D.33533 = *D.32104;
            if (D.33533 == 42) goto <D.33534>; else goto <D.33535>;
            <D.33534>:
            if (vtable_arg == 0B) goto <D.33536>; else goto <D.33537>;
            <D.33536>:
            {
              gboolean has_vtargs;
              int i;

              has_vtargs = 0;
              D.30642 = cfg->method;
              if (D.30642 != method) goto <D.33538>; else goto <D.33539>;
              <D.33538>:
              D.30614 = BIT_FIELD_REF <*method, 8, 256>;
              D.30615 = D.30614 & 124;
              if (D.30615 == 0) goto <D.33540>; else goto <D.33541>;
              <D.33540>:
              D.30753 = cfg->verbose_level;
              if (D.30753 > 1) goto <D.33542>; else goto <D.33543>;
              <D.33542>:
              printf ("inline failed: %s\n", "tail call");
              <D.33543>:
              goto inline_failure;
              <D.33541>:
              <D.33539>:
              D.32460 = fsig->param_count;
              D.32461 = (int) D.32460;
              i = D.32461 + -1;
              goto <D.27816>;
              <D.27815>:
              D.33544 = mono_method_signature (cmethod);
              D.33545 = D.33544->params[i];
              D.33546 = mono_type_is_struct (D.33545);
              if (D.33546 != 0) goto <D.33547>; else goto <D.33548>;
              <D.33547>:
              has_vtargs = 1;
              <D.33548>:
              i = i + -1;
              <D.27816>:
              if (i >= 0) goto <D.27815>; else goto <D.27817>;
              <D.27817>:
              if (has_vtargs == 0) goto <D.33549>; else goto <D.33550>;
              <D.33549>:
              i = 0;
              goto <D.27819>;
              <D.27818>:
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 428;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              D.31290 = cfg->arg_types;
              D.33551 = (long unsigned int) i;
              D.33552 = D.33551 * 8;
              D.33553 = D.31290 + D.33552;
              D.33554 = *D.33553;
              D.33555 = mono_type_to_regmove (cfg, D.33554);
              D.33556 = (short unsigned int) D.33555;
              ins->opcode = D.33556;
              D.31280 = cfg->args;
              D.33551 = (long unsigned int) i;
              D.33552 = D.33551 * 8;
              D.33557 = D.31280 + D.33552;
              D.33558 = *D.33557;
              D.33559 = D.33558->klass;
              ins->klass = D.33559;
              D.33551 = (long unsigned int) i;
              D.33552 = D.33551 * 8;
              D.33560 = sp + D.33552;
              D.33561 = *D.33560;
              D.33562 = D.33561->dreg;
              ins->sreg1 = D.33562;
              D.31280 = cfg->args;
              D.33551 = (long unsigned int) i;
              D.33552 = D.33551 * 8;
              D.33557 = D.31280 + D.33552;
              D.33558 = *D.33557;
              D.33563 = D.33558->dreg;
              ins->dreg = D.33563;
              D.31430 = ins->opcode;
              if (D.31430 == 431) goto <D.33564>; else goto <D.33565>;
              <D.33564>:
              D.31290 = cfg->arg_types;
              D.33551 = (long unsigned int) i;
              D.33552 = D.33551 * 8;
              D.33553 = D.31290 + D.33552;
              D.33554 = *D.33553;
              D.33566 = mono_class_from_mono_type (D.33554);
              ins->klass = D.33566;
              <D.33565>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.33567>; else goto <D.33568>;
              <D.33567>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.33569>;
              <D.33568>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.33569>:
              i = i + 1;
              <D.27819>:
              if (i < n) goto <D.27818>; else goto <D.27820>;
              <D.27820>:
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 446;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              bblock.70 = bblock;
              D.31015 = bblock.70->last_ins;
              if (D.31015 != 0B) goto <D.33570>; else goto <D.33571>;
              <D.33570>:
              bblock.70 = bblock;
              D.31015 = bblock.70->last_ins;
              D.31015->next = ins;
              bblock.70 = bblock;
              D.31015 = bblock.70->last_ins;
              ins->prev = D.31015;
              bblock.70 = bblock;
              bblock.70->last_ins = ins;
              goto <D.33572>;
              <D.33571>:
              bblock.70 = bblock;
              bblock.70 = bblock;
              bblock.70->last_ins = ins;
              D.31015 = bblock.70->last_ins;
              bblock.70->code = D.31015;
              <D.33572>:
              D.33573 = start_bblock->out_bb;
              tblock = *D.33573;
              bblock.70 = bblock;
              link_bblock (cfg, bblock.70, tblock);
              ins->data.op[0].target_block = tblock;
              start_new_bblock = 1;
              D.33574 = ip + 5;
              bblock.70 = bblock;
              D.33575 = ip_in_bb (cfg, bblock.70, D.33574);
              if (D.33575 != 0) goto <D.33576>; else goto <D.33577>;
              <D.33576>:
              skip_ret = 1;
              <D.33577>:
              push_res = 0;
              goto call_end;
              <D.33550>:
            }
            <D.33537>:
            <D.33535>:
            <D.33532>:
            <D.33527>:
            num_calls.122 = num_calls;
            num_calls = num_calls.122 + 1;
            D.33579 = num_calls.122 * 10;
            inline_costs = D.33579 + inline_costs;
            if (cmethod != 0B) goto <D.33581>; else goto <D.33580>;
            <D.33581>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.33582>; else goto <D.33580>;
            <D.33582>:
            D.33583 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.33583 != 0) goto <D.33584>; else goto <D.33580>;
            <D.33584>:
            {
              MonoRgctxInfoType info_type;

              if (virtual != 0) goto <D.33585>; else goto <D.33586>;
              <D.33585>:
              D.32770 = BIT_FIELD_REF <*fsig, 8, 112>;
              D.32771 = D.32770 & 64;
              if (D.32771 != 0) goto <D.33589>; else goto <D.33590>;
              <D.33589>:
              D.30609 = method->klass;
              D.33591 = BIT_FIELD_REF <*D.30609, 8, 272>;
              D.33592 = D.33591 & 64;
              if (D.33592 != 0) goto <D.33587>; else goto <D.33593>;
              <D.33593>:
              D.30609 = method->klass;
              D.32699 = mono_defaults.object_class;
              if (D.30609 == D.32699) goto <D.33587>; else goto <D.33588>;
              <D.33587>:
              D.30822 = cfg->gsharedvt;
              if (D.30822 != 0) goto <D.33594>; else goto <D.33595>;
              <D.33594>:
              D.31560 = *ip;
              D.31561 = (int) D.31560;
              D.33596 = mono_opcode_name (D.31561);
              D.32333 = method->signature;
              D.32334 = D.32333->param_count;
              D.32335 = (int) D.32334;
              D.32336 = method->name;
              D.30609 = method->klass;
              D.32337 = D.30609->name;
              D.30609 = method->klass;
              D.32338 = D.30609->name_space;
              D.33597 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.33596, "method-to-ir.c", 8189);
              cfg->exception_message = D.33597;
              D.30753 = cfg->verbose_level;
              if (D.30753 > 1) goto <D.33598>; else goto <D.33599>;
              <D.33598>:
              D.32342 = cfg->exception_message;
              printf ("%s\n", D.32342);
              <D.33599>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.33595>:
              <D.33588>:
              <D.33590>:
              D.33223 = fsig->generic_param_count;
              if (D.33223 != 0) goto <D.33600>; else goto <D.33601>;
              <D.33600>:
              mono_use_imt.118 = mono_use_imt;
              D.33602 = mono_use_imt.118 == 0;
              D.33603 = (long int) D.33602;
              D.33604 = __builtin_expect (D.33603, 0);
              if (D.33604 != 0) goto <D.33605>; else goto <D.33606>;
              <D.33605>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8192, "mono_use_imt");
              <D.33606>:
              D.33258 = imt_arg != 0B;
              D.33259 = (long int) D.33258;
              D.33260 = __builtin_expect (D.33259, 0);
              if (D.33260 != 0) goto <D.33607>; else goto <D.33608>;
              <D.33607>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8193, "!imt_arg");
              <D.33608>:
              imt_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
              vtable_arg = 0B;
              <D.33601>:
              <D.33586>:
              D.32528 = cmethod->klass;
              D.32601 = D.32528->rank;
              if (D.32601 != 0) goto <D.33609>; else goto <D.33610>;
              <D.33609>:
              D.32528 = cmethod->klass;
              D.33611 = D.32528->byval_arg.type;
              if (D.33611 != 29) goto <D.33612>; else goto <D.33613>;
              <D.33612>:
              D.30822 = cfg->gsharedvt;
              if (D.30822 != 0) goto <D.33614>; else goto <D.33615>;
              <D.33614>:
              D.31560 = *ip;
              D.31561 = (int) D.31560;
              D.33616 = mono_opcode_name (D.31561);
              D.32333 = method->signature;
              D.32334 = D.32333->param_count;
              D.32335 = (int) D.32334;
              D.32336 = method->name;
              D.30609 = method->klass;
              D.32337 = D.30609->name;
              D.30609 = method->klass;
              D.32338 = D.30609->name_space;
              D.33617 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.33616, "method-to-ir.c", 8204);
              cfg->exception_message = D.33617;
              D.30753 = cfg->verbose_level;
              if (D.30753 > 1) goto <D.33618>; else goto <D.33619>;
              <D.33618>:
              D.32342 = cfg->exception_message;
              printf ("%s\n", D.32342);
              <D.33619>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.33615>:
              <D.33613>:
              <D.33610>:
              D.32528 = cmethod->klass;
              D.33005 = D.32528->parent;
              D.33006 = mono_defaults.multicastdelegate_class;
              if (D.33005 == D.33006) goto <D.33620>; else goto <D.33621>;
              <D.33620>:
              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.33012 = "Invoke";
                  D.33013 = MEM[(const unsigned char *)D.33012];
                  D.33014 = (int) D.33013;
                  D.33625 = *__s2;
                  D.33626 = (int) D.33625;
                  __result = D.33014 - D.33626;
                  {
                    D.33627 = __s2_len != 0;
                    D.33628 = __result == 0;
                    D.33629 = D.33627 & D.33628;
                    if (D.33629 != 0) goto <D.33630>; else goto <D.33631>;
                    <D.33630>:
                    D.33022 = &MEM[(void *)"Invoke" + 1B];
                    D.33023 = *D.33022;
                    D.33024 = (int) D.33023;
                    D.33632 = __s2 + 1;
                    D.33633 = *D.33632;
                    D.33634 = (int) D.33633;
                    __result = D.33024 - D.33634;
                    D.33635 = __s2_len > 1;
                    D.33628 = __result == 0;
                    D.33636 = D.33635 & D.33628;
                    if (D.33636 != 0) goto <D.33637>; else goto <D.33638>;
                    <D.33637>:
                    D.33032 = &MEM[(void *)"Invoke" + 2B];
                    D.33033 = *D.33032;
                    D.33034 = (int) D.33033;
                    D.33639 = __s2 + 2;
                    D.33640 = *D.33639;
                    D.33641 = (int) D.33640;
                    __result = D.33034 - D.33641;
                    D.33642 = __s2_len > 2;
                    D.33628 = __result == 0;
                    D.33643 = D.33642 & D.33628;
                    if (D.33643 != 0) goto <D.33644>; else goto <D.33645>;
                    <D.33644>:
                    D.33042 = &MEM[(void *)"Invoke" + 3B];
                    D.33043 = *D.33042;
                    D.33044 = (int) D.33043;
                    D.33646 = __s2 + 3;
                    D.33647 = *D.33646;
                    D.33648 = (int) D.33647;
                    __result = D.33044 - D.33648;
                    <D.33645>:
                    <D.33638>:
                    <D.33631>:
                  }
                  D.27829 = __result;
                }
                iftmp.123 = -D.27829;
                goto <D.33649>;
                <D.33624>:
                D.33049 = cmethod->name;
                iftmp.123 = __builtin_strcmp (D.33049, "Invoke");
                <D.33649>:
                D.27830 = iftmp.123;
              }
              if (D.27830 == 0) goto <D.33650>; else goto <D.33651>;
              <D.33650>:
              keep_this_alive = *sp;
              <D.33651>:
              <D.33621>:
              if (virtual != 0) goto <D.33654>; else goto <D.33652>;
              <D.33654>:
              D.32564 = cmethod->flags;
              D.32565 = (int) D.32564;
              D.33150 = D.32565 & 64;
              if (D.33150 != 0) goto <D.33655>; else goto <D.33652>;
              <D.33655>:
              info_type = 17;
              goto <D.33653>;
              <D.33652>:
              info_type = 16;
              <D.33653>:
              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.33580>:
            if (calli != 0) goto <D.33656>; else goto <D.33657>;
            <D.33656>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.33658>; else goto <D.33659>;
            <D.33658>:
            D.33660 = mini_is_gsharedvt_signature (cfg, fsig);
            if (D.33660 != 0) goto <D.33661>; else goto <D.33662>;
            <D.33661>:
            {
              struct MonoInst * callee;

              callee = addr;
              D.30614 = BIT_FIELD_REF <*method, 8, 256>;
              D.30615 = D.30614 & 124;
              if (D.30615 != 4) goto <D.33663>; else goto <D.33664>;
              <D.33663>:
              D.30822 = cfg->gsharedvt;
              if (D.30822 != 0) goto <D.33665>; else goto <D.33666>;
              <D.33665>:
              D.31560 = *ip;
              D.31561 = (int) D.31560;
              D.33667 = mono_opcode_name (D.31561);
              D.32333 = method->signature;
              D.32334 = D.32333->param_count;
              D.32335 = (int) D.32334;
              D.32336 = method->name;
              D.30609 = method->klass;
              D.32337 = D.30609->name;
              D.30609 = method->klass;
              D.32338 = D.30609->name_space;
              D.33668 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.33667, "method-to-ir.c", 8225);
              cfg->exception_message = D.33668;
              D.30753 = cfg->verbose_level;
              if (D.30753 > 1) goto <D.33669>; else goto <D.33670>;
              <D.33669>:
              D.32342 = cfg->exception_message;
              printf ("%s\n", D.32342);
              <D.33670>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.33666>:
              <D.33664>:
              addr = emit_get_rgctx_sig (cfg, context_used, fsig, 18);
              ins = mono_emit_calli (cfg, fsig, sp, addr, 0B, callee);
              goto call_end;
            }
            <D.33662>:
            <D.33659>:
            <D.33657>:
            D.33675 = context_used != 0;
            D.33676 = imt_arg == 0B;
            D.33677 = D.33675 & D.33676;
            if (D.33677 != 0) goto <D.33678>; else goto <D.33679>;
            <D.33678>:
            D.33680 = array_rank | delegate_invoke;
            if (D.33680 == 0) goto <D.33681>; else goto <D.33682>;
            <D.33681>:
            D.33683 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.33683 == 0) goto <D.33674>; else goto <D.33684>;
            <D.33684>:
            D.32528 = cmethod->klass;
            D.33685 = mono_class_generic_sharing_enabled (D.32528);
            if (D.33685 == 0) goto <D.33674>; else goto <D.33673>;
            <D.33674>:
            if (virtual == 0) goto <D.33671>; else goto <D.33686>;
            <D.33686>:
            D.32564 = cmethod->flags;
            D.32565 = (int) D.32564;
            D.33152 = D.32565 & 32;
            if (D.33152 != 0) goto <D.33671>; else goto <D.33687>;
            <D.33687>:
            D.32528 = cmethod->klass;
            if (D.32528 != 0B) goto <D.33688>; else goto <D.33672>;
            <D.33688>:
            D.32528 = cmethod->klass;
            D.32710 = D.32528->flags;
            D.33155 = D.32710 & 256;
            if (D.33155 != 0) goto <D.33671>; else goto <D.33672>;
            <D.33672>:
            D.32564 = cmethod->flags;
            D.32565 = (int) D.32564;
            D.33150 = D.32565 & 64;
            if (D.33150 == 0) goto <D.33671>; else goto <D.33673>;
            <D.33671>:
            D.30642 = cfg->method;
            if (D.30642 != method) goto <D.33689>; else goto <D.33690>;
            <D.33689>:
            D.30614 = BIT_FIELD_REF <*method, 8, 256>;
            D.30615 = D.30614 & 124;
            if (D.30615 == 0) goto <D.33691>; else goto <D.33692>;
            <D.33691>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 1) goto <D.33693>; else goto <D.33694>;
            <D.33693>:
            printf ("inline failed: %s\n", "gshared");
            <D.33694>:
            goto inline_failure;
            <D.33692>:
            <D.33690>:
            D.30708 = cfg->generic_sharing_context;
            if (D.30708 == 0B) goto <D.33696>; else goto <D.33699>;
            <D.33699>:
            if (cmethod == 0B) goto <D.33696>; else goto <D.33697>;
            <D.33696>:
            iftmp.124 = 1;
            goto <D.33698>;
            <D.33697>:
            iftmp.124 = 0;
            <D.33698>:
            D.33700 = iftmp.124 != 0;
            D.33701 = (long int) D.33700;
            D.33702 = __builtin_expect (D.33701, 0);
            if (D.33702 != 0) goto <D.33703>; else goto <D.33704>;
            <D.33703>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8243, "cfg->generic_sharing_context && cmethod");
            <D.33704>:
            D.33705 = addr != 0B;
            D.33706 = (long int) D.33705;
            D.33707 = __builtin_expect (D.33706, 0);
            if (D.33707 != 0) goto <D.33708>; else goto <D.33709>;
            <D.33708>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8244, "!addr");
            <D.33709>:
            D.32770 = BIT_FIELD_REF <*fsig, 8, 112>;
            D.32771 = D.32770 & 64;
            if (D.32771 != 0) goto <D.33710>; else goto <D.33711>;
            <D.33710>:
            D.31108 = cfg->flags;
            D.31307 = D.31108 | 128;
            cfg->flags = D.31307;
            D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
            D.31308 = D.30660 & 64;
            if (D.31308 != 0) goto <D.33712>; else goto <D.33713>;
            <D.33712>:
            D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
            D.31308 = D.30660 & 64;
            if (D.31308 != 0) goto <D.33714>; else goto <D.33715>;
            <D.33714>:
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.33716 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33716;
              inst->prev = 0B;
              D.33717 = inst->prev;
              inst->next = D.33717;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33718 = inst->sreg3;
              inst->sreg2 = D.33718;
              D.33719 = inst->sreg2;
              inst->sreg1 = D.33719;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = -1;
              D.31680 = *sp;
              D.31862 = D.31680->dreg;
              inst->sreg1 = D.31862;
              inst->data.op[1].const_val = 0;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.33720>; else goto <D.33721>;
              <D.33720>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.33722>;
              <D.33721>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.33722>:
            }
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.33723 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33723;
              inst->prev = 0B;
              D.33724 = inst->prev;
              inst->next = D.33724;
              inst->opcode = 455;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33725 = inst->sreg3;
              inst->sreg2 = D.33725;
              D.33726 = inst->sreg2;
              inst->sreg1 = D.33726;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->data.op[1].p = "NullReferenceException";
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.33727>; else goto <D.33728>;
              <D.33727>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.33729>;
              <D.33728>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.33729>:
            }
            goto <D.33730>;
            <D.33715>:
            <D.33730>:
            goto <D.33731>;
            <D.33713>:
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.33732 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33732;
              inst->prev = 0B;
              D.33733 = inst->prev;
              inst->next = D.33733;
              inst->opcode = 340;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33734 = inst->sreg3;
              inst->sreg2 = D.33734;
              D.33735 = inst->sreg2;
              inst->sreg1 = D.33735;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = -1;
              D.31680 = *sp;
              D.31862 = D.31680->dreg;
              inst->sreg1 = D.31862;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.33736>; else goto <D.33737>;
              <D.33736>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.33738>;
              <D.33737>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.33738>:
            }
            <D.33731>:
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.33739 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.33739;
              inst->prev = 0B;
              D.33740 = inst->prev;
              inst->next = D.33740;
              inst->opcode = 803;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.33741 = inst->sreg3;
              inst->sreg2 = D.33741;
              D.33742 = inst->sreg2;
              inst->sreg1 = D.33742;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = -1;
              D.31680 = *sp;
              D.31862 = D.31680->dreg;
              inst->sreg1 = D.31862;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.33743>; else goto <D.33744>;
              <D.33743>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.33745>;
              <D.33744>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.33745>:
            }
            <D.33711>:
            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.33673>:
            <D.33682>:
            <D.33679>:
            if (addr != 0B) goto <D.33746>; else goto <D.33747>;
            <D.33746>:
            if (call_opcode == 40) goto <D.33748>; else goto <D.33749>;
            <D.33748>:
            D.33750 = context_used == 0;
            D.33751 = (long int) D.33750;
            D.33752 = __builtin_expect (D.33751, 0);
            if (D.33752 != 0) goto <D.33753>; else goto <D.33754>;
            <D.33753>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8264, "context_used");
            <D.33754>:
            goto <D.33755>;
            <D.33749>:
            if (call_opcode == 41) goto <D.33756>; else goto <D.33757>;
            <D.33756>:
            D.33135 = vtable_arg != 0B;
            D.33136 = (long int) D.33135;
            D.33137 = __builtin_expect (D.33136, 0);
            if (D.33137 != 0) goto <D.33758>; else goto <D.33759>;
            <D.33758>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8266, "!vtable_arg");
            <D.33759>:
            goto <D.33760>;
            <D.33757>:
            if (0 != 0) goto <D.33761>; else goto <D.33762>;
            <D.33761>:
            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.33762>:
            <D.33760>:
            <D.33755>:
            D.30642 = cfg->method;
            if (D.30642 != method) goto <D.33763>; else goto <D.33764>;
            <D.33763>:
            D.30614 = BIT_FIELD_REF <*method, 8, 256>;
            D.30615 = D.30614 & 124;
            if (D.30615 == 0) goto <D.33765>; else goto <D.33766>;
            <D.33765>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 1) goto <D.33767>; else goto <D.33768>;
            <D.33767>:
            printf ("inline failed: %s\n", "indirect call");
            <D.33768>:
            goto inline_failure;
            <D.33766>:
            <D.33764>:
            D.33771 = addr->opcode;
            D.33772 = D.33771 == 363;
            D.33773 = D.33771 == 736;
            D.33774 = D.33772 | D.33773;
            if (D.33774 != 0) goto <D.33769>; else goto <D.33775>;
            <D.33775>:
            D.33776 = addr->opcode;
            if (D.33776 == 738) goto <D.33769>; else goto <D.33770>;
            <D.33769>:
            {
              int info_type;
              void * info_data;

              D.33777 = addr->opcode;
              D.33778 = D.33777 == 363;
              D.33779 = D.33777 == 736;
              D.33780 = D.33778 | D.33779;
              if (D.33780 != 0) goto <D.33781>; else goto <D.33782>;
              <D.33781>:
              D.33783 = addr->data.op[1].const_val;
              info_type = (int) D.33783;
              info_data = addr->data.op[0].p;
              goto <D.33784>;
              <D.33782>:
              D.33785 = addr->data.op[1].src;
              D.33786 = D.33785->data.op[1].const_val;
              info_type = (int) D.33786;
              D.33785 = addr->data.op[1].src;
              info_data = D.33785->data.op[0].src;
              <D.33784>:
              info_type.125 = (unsigned int) info_type;
              D.33788 = info_type.125 + 4294967265;
              if (D.33788 <= 1) goto <D.33789>; else goto <D.33790>;
              <D.33789>:
              info_type.126 = (<unnamed type>) info_type;
              ins = mono_emit_abs_call (cfg, info_type.126, info_data, fsig, sp);
              addr->opcode = 316;
              addr->dreg = -1;
              addr->sreg3 = -1;
              D.33792 = addr->sreg3;
              addr->sreg2 = D.33792;
              D.33793 = addr->sreg2;
              addr->sreg1 = D.33793;
              goto call_end;
              <D.33790>:
            }
            <D.33770>:
            ins = mono_emit_calli (cfg, fsig, sp, addr, imt_arg, vtable_arg);
            goto call_end;
            <D.33747>:
            if (array_rank != 0) goto <D.33794>; else goto <D.33795>;
            <D.33794>:
            {
              struct MonoInst * addr;

              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.33799 = "Set";
                  D.33800 = MEM[(const unsigned char *)D.33799];
                  D.33801 = (int) D.33800;
                  D.33802 = *__s2;
                  D.33803 = (int) D.33802;
                  __result = D.33801 - D.33803;
                  {
                    D.33804 = __s2_len != 0;
                    D.33805 = __result == 0;
                    D.33806 = D.33804 & D.33805;
                    if (D.33806 != 0) goto <D.33807>; else goto <D.33808>;
                    <D.33807>:
                    D.33809 = &MEM[(void *)"Set" + 1B];
                    D.33810 = *D.33809;
                    D.33811 = (int) D.33810;
                    D.33812 = __s2 + 1;
                    D.33813 = *D.33812;
                    D.33814 = (int) D.33813;
                    __result = D.33811 - D.33814;
                    D.33815 = __s2_len > 1;
                    D.33805 = __result == 0;
                    D.33816 = D.33815 & D.33805;
                    if (D.33816 != 0) goto <D.33817>; else goto <D.33818>;
                    <D.33817>:
                    D.33819 = &MEM[(void *)"Set" + 2B];
                    D.33820 = *D.33819;
                    D.33821 = (int) D.33820;
                    D.33822 = __s2 + 2;
                    D.33823 = *D.33822;
                    D.33824 = (int) D.33823;
                    __result = D.33821 - D.33824;
                    D.33825 = __s2_len > 2;
                    D.33805 = __result == 0;
                    D.33826 = D.33825 & D.33805;
                    if (D.33826 != 0) goto <D.33827>; else goto <D.33828>;
                    <D.33827>:
                    D.33829 = &MEM[(void *)"Set" + 3B];
                    D.33830 = *D.33829;
                    D.33831 = (int) D.33830;
                    D.33832 = __s2 + 3;
                    D.33833 = *D.33832;
                    D.33834 = (int) D.33833;
                    __result = D.33831 - D.33834;
                    <D.33828>:
                    <D.33818>:
                    <D.33808>:
                  }
                  D.27846 = __result;
                }
                iftmp.127 = -D.27846;
                goto <D.33835>;
                <D.33798>:
                D.33049 = cmethod->name;
                iftmp.127 = __builtin_strcmp (D.33049, "Set");
                <D.33835>:
                D.27847 = iftmp.127;
              }
              if (D.27847 == 0) goto <D.33836>; else goto <D.33837>;
              <D.33836>:
              {
                struct MonoInst * val;

                D.32460 = fsig->param_count;
                D.32776 = (long unsigned int) D.32460;
                D.32777 = D.32776 * 8;
                D.33838 = sp + D.32777;
                val = *D.33838;
                D.33839 = val->type;
                if (D.33839 == 6) goto <D.33840>; else goto <D.33841>;
                <D.33840>:
                {
                  struct MonoInst * iargs[2];

                  try
                    {
                      D.31680 = *sp;
                      iargs[0] = D.31680;
                      iargs[1] = val;
                      mono_emit_jit_icall (cfg, mono_helper_stelem_ref_check, &iargs);
                    }
                  finally
                    {
                      iargs = {CLOBBER};
                    }
                }
                <D.33841>:
                addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 1);
                D.30673 = cfg->mempool;
                ins = mono_mempool_alloc (D.30673, 80);
                ins->data.op[1].const_val = 0;
                D.30894 = ins->data.op[1].const_val;
                ins->data.op[0].const_val = D.30894;
                ins->prev = 0B;
                D.30895 = ins->prev;
                ins->next = D.30895;
                D.32460 = fsig->param_count;
                D.32461 = (int) D.32460;
                D.33842 = D.32461 + -1;
                D.33843 = fsig->params[D.33842];
                D.33844 = mono_type_to_store_membase (cfg, D.33843);
                D.33845 = (short unsigned int) D.33844;
                ins->opcode = D.33845;
                ins->flags = 0;
                ins->type = 0;
                ins->dreg = -1;
                ins->sreg3 = -1;
                D.30896 = ins->sreg3;
                ins->sreg2 = D.30896;
                D.30897 = ins->sreg2;
                ins->sreg1 = D.30897;
                D.30898 = cfg->ip;
                ins->cil_code = D.30898;
                D.33846 = val->dreg;
                ins->sreg1 = D.33846;
                D.33847 = addr->dreg;
                ins->dreg = D.33847;
                ins->data.op[0].const_val = 0;
                D.32460 = fsig->param_count;
                D.32461 = (int) D.32460;
                D.33842 = D.32461 + -1;
                D.33843 = fsig->params[D.33842];
                type_to_eval_stack_type (cfg, D.33843, ins);
                D.32460 = fsig->param_count;
                D.32461 = (int) D.32460;
                D.33842 = D.32461 + -1;
                D.33843 = fsig->params[D.33842];
                D.33848 = mono_class_from_mono_type (D.33843);
                ins->klass = D.33848;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                if (D.30927 != 0B) goto <D.33849>; else goto <D.33850>;
                <D.33849>:
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                D.30927->next = ins;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                ins->prev = D.30927;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = ins;
                goto <D.33851>;
                <D.33850>:
                bblock.113 = cfg->cbb;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = ins;
                D.30927 = bblock.113->last_ins;
                bblock.113->code = D.30927;
                <D.33851>:
                D.33854 = BIT_FIELD_REF <*cfg, 8, 5624>;
                D.33855 = D.33854 & 16;
                if (D.33855 != 0) goto <D.33856>; else goto <D.33857>;
                <D.33856>:
                D.33839 = val->type;
                if (D.33839 == 6) goto <D.33858>; else goto <D.33859>;
                <D.33858>:
                D.33860 = val->opcode;
                if (D.33860 != 363) goto <D.33852>; else goto <D.33861>;
                <D.33861>:
                D.33862 = val->data.op[0].const_val;
                if (D.33862 != 0) goto <D.33852>; else goto <D.33853>;
                <D.33852>:
                emit_write_barrier (cfg, addr, val);
                <D.33853>:
                <D.33859>:
                <D.33857>:
              }
              goto <D.33863>;
              <D.33837>:
              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.33867 = "Get";
                  D.33868 = MEM[(const unsigned char *)D.33867];
                  D.33869 = (int) D.33868;
                  D.33870 = *__s2;
                  D.33871 = (int) D.33870;
                  __result = D.33869 - D.33871;
                  {
                    D.33872 = __s2_len != 0;
                    D.33873 = __result == 0;
                    D.33874 = D.33872 & D.33873;
                    if (D.33874 != 0) goto <D.33875>; else goto <D.33876>;
                    <D.33875>:
                    D.33877 = &MEM[(void *)"Get" + 1B];
                    D.33878 = *D.33877;
                    D.33879 = (int) D.33878;
                    D.33880 = __s2 + 1;
                    D.33881 = *D.33880;
                    D.33882 = (int) D.33881;
                    __result = D.33879 - D.33882;
                    D.33883 = __s2_len > 1;
                    D.33873 = __result == 0;
                    D.33884 = D.33883 & D.33873;
                    if (D.33884 != 0) goto <D.33885>; else goto <D.33886>;
                    <D.33885>:
                    D.33887 = &MEM[(void *)"Get" + 2B];
                    D.33888 = *D.33887;
                    D.33889 = (int) D.33888;
                    D.33890 = __s2 + 2;
                    D.33891 = *D.33890;
                    D.33892 = (int) D.33891;
                    __result = D.33889 - D.33892;
                    D.33893 = __s2_len > 2;
                    D.33873 = __result == 0;
                    D.33894 = D.33893 & D.33873;
                    if (D.33894 != 0) goto <D.33895>; else goto <D.33896>;
                    <D.33895>:
                    D.33897 = &MEM[(void *)"Get" + 3B];
                    D.33898 = *D.33897;
                    D.33899 = (int) D.33898;
                    D.33900 = __s2 + 3;
                    D.33901 = *D.33900;
                    D.33902 = (int) D.33901;
                    __result = D.33899 - D.33902;
                    <D.33896>:
                    <D.33886>:
                    <D.33876>:
                  }
                  D.27857 = __result;
                }
                iftmp.128 = -D.27857;
                goto <D.33903>;
                <D.33866>:
                D.33049 = cmethod->name;
                iftmp.128 = __builtin_strcmp (D.33049, "Get");
                <D.33903>:
                D.27858 = iftmp.128;
              }
              if (D.27858 == 0) goto <D.33904>; else goto <D.33905>;
              <D.33904>:
              addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 0);
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              D.32616 = fsig->ret;
              D.33906 = mono_type_to_load_membase (cfg, D.32616);
              D.33907 = (short unsigned int) D.33906;
              ins->opcode = D.33907;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              ins->dreg = 0;
              D.33847 = addr->dreg;
              ins->sreg1 = D.33847;
              ins->data.op[0].const_val = 0;
              ins->type = 1;
              D.32616 = fsig->ret;
              type_to_eval_stack_type (cfg, D.32616, ins);
              D.31426 = ins->type;
              D.31427 = (<unnamed type>) D.31426;
              D.33908 = alloc_dreg (cfg, D.31427);
              D.33909 = (int) D.33908;
              ins->dreg = D.33909;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.33910>; else goto <D.33911>;
              <D.33910>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.33912>;
              <D.33911>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.33912>:
              goto <D.33913>;
              <D.33905>:
              {
                size_t __s1_len;
                size_t __s2_len;

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

                  __s2 = cmethod->name;
                  D.33917 = "Address";
                  D.33918 = MEM[(const unsigned char *)D.33917];
                  D.33919 = (int) D.33918;
                  D.33920 = *__s2;
                  D.33921 = (int) D.33920;
                  __result = D.33919 - D.33921;
                  {
                    D.33922 = __s2_len != 0;
                    D.33923 = __result == 0;
                    D.33924 = D.33922 & D.33923;
                    if (D.33924 != 0) goto <D.33925>; else goto <D.33926>;
                    <D.33925>:
                    D.33927 = &MEM[(void *)"Address" + 1B];
                    D.33928 = *D.33927;
                    D.33929 = (int) D.33928;
                    D.33930 = __s2 + 1;
                    D.33931 = *D.33930;
                    D.33932 = (int) D.33931;
                    __result = D.33929 - D.33932;
                    D.33933 = __s2_len > 1;
                    D.33923 = __result == 0;
                    D.33934 = D.33933 & D.33923;
                    if (D.33934 != 0) goto <D.33935>; else goto <D.33936>;
                    <D.33935>:
                    D.33937 = &MEM[(void *)"Address" + 2B];
                    D.33938 = *D.33937;
                    D.33939 = (int) D.33938;
                    D.33940 = __s2 + 2;
                    D.33941 = *D.33940;
                    D.33942 = (int) D.33941;
                    __result = D.33939 - D.33942;
                    D.33943 = __s2_len > 2;
                    D.33923 = __result == 0;
                    D.33944 = D.33943 & D.33923;
                    if (D.33944 != 0) goto <D.33945>; else goto <D.33946>;
                    <D.33945>:
                    D.33947 = &MEM[(void *)"Address" + 3B];
                    D.33948 = *D.33947;
                    D.33949 = (int) D.33948;
                    D.33950 = __s2 + 3;
                    D.33951 = *D.33950;
                    D.33952 = (int) D.33951;
                    __result = D.33949 - D.33952;
                    <D.33946>:
                    <D.33936>:
                    <D.33926>:
                  }
                  D.27866 = __result;
                }
                iftmp.129 = -D.27866;
                goto <D.33953>;
                <D.33916>:
                D.33049 = cmethod->name;
                iftmp.129 = __builtin_strcmp (D.33049, "Address");
                <D.33953>:
                D.27867 = iftmp.129;
              }
              if (D.27867 == 0) goto <D.33954>; else goto <D.33955>;
              <D.33954>:
              D.32528 = cmethod->klass;
              D.33956 = D.32528->element_class;
              D.33957 = BIT_FIELD_REF <*D.33956, 8, 256>;
              D.33958 = D.33957 & 8;
              if (D.33958 == 0) goto <D.33959>; else goto <D.33960>;
              <D.33959>:
              if (readonly == 0) goto <D.33961>; else goto <D.33962>;
              <D.33961>:
              D.32528 = cmethod->klass;
              D.31680 = *sp;
              mini_emit_check_array_type (cfg, D.31680, D.32528);
              <D.33962>:
              <D.33960>:
              D.32528 = cmethod->klass;
              if (D.32528 == 0B) goto <D.33963>; else goto <D.33965>;
              <D.33965>:
              D.32528 = cmethod->klass;
              D.33080 = D.32528->exception_type;
              if (D.33080 != 0) goto <D.33963>; else goto <D.33964>;
              <D.33963>:
              D.32528 = cmethod->klass;
              cfg->exception_ptr = D.32528;
              D.33966 = mini_get_debug_options ();
              D.33967 = D.33966->break_on_unverified;
              if (D.33967 != 0) goto <D.33968>; else goto load_error;
              <D.33968>:
              __asm__ __volatile__("int $03");
              <D.33964>:
              readonly = 0;
              addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, 0);
              ins = addr;
              goto <D.33969>;
              <D.33955>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 8334);
              <D.33969>:
              <D.33913>:
              <D.33863>:
              emit_widen = 0;
              goto call_end;
            }
            <D.33795>:
            if (virtual != 0) goto <D.33971>; else goto <D.33972>;
            <D.33971>:
            iftmp.130 = *sp;
            goto <D.33973>;
            <D.33972>:
            iftmp.130 = 0B;
            <D.33973>:
            ins = mini_redirect_call (cfg, cmethod, fsig, sp, iftmp.130);
            if (ins != 0B) goto call_end; else goto <D.33974>;
            <D.33974>:
            if (cmethod != 0B) goto <D.33975>; else goto <D.33976>;
            <D.33975>:
            D.33977 = ins_flag & 4;
            if (D.33977 != 0) goto <D.33978>; else goto <D.33979>;
            <D.33978>:
            if (vtable_arg == 0B) goto <D.33980>; else goto <D.33981>;
            <D.33980>:
            D.30708 = cfg->generic_sharing_context;
            if (D.30708 == 0B) goto <D.33982>; else goto <D.33983>;
            <D.33982>:
            call_opcode.131 = (int) call_opcode;
            D.33985 = is_supported_tail_call (cfg, method, cmethod, fsig, call_opcode.131);
            if (D.33985 != 0) goto <D.33986>; else goto <D.33987>;
            <D.33986>:
            supported_tail_call = 1;
            <D.33987>:
            <D.33983>:
            <D.33981>:
            <D.33979>:
            <D.33976>:
            if (supported_tail_call != 0) goto <D.33988>; else goto <D.33989>;
            <D.33988>:
            {
              struct MonoCallInst * call;

              D.30642 = cfg->method;
              if (D.30642 != method) goto <D.33990>; else goto <D.33991>;
              <D.33990>:
              D.30614 = BIT_FIELD_REF <*method, 8, 256>;
              D.30615 = D.30614 & 124;
              if (D.30615 == 0) goto <D.33992>; else goto <D.33993>;
              <D.33992>:
              D.30753 = cfg->verbose_level;
              if (D.30753 > 1) goto <D.33994>; else goto <D.33995>;
              <D.33994>:
              printf ("inline failed: %s\n", "tail call");
              <D.33995>:
              goto inline_failure;
              <D.33993>:
              <D.33991>:
              if (1 != 0) goto <D.33996>; else goto <D.33997>;
              <D.33996>:
              tail_call = 1;
              goto <D.33998>;
              <D.33997>:
              D.30673 = cfg->mempool;
              call = mono_mempool_alloc0 (D.30673, 192);
              call->inst.opcode = 447;
              call->inst.dreg = -1;
              call->inst.sreg3 = -1;
              D.33999 = call->inst.sreg3;
              call->inst.sreg2 = D.33999;
              D.34000 = call->inst.sreg2;
              call->inst.sreg1 = D.34000;
              D.30898 = cfg->ip;
              call->inst.cil_code = D.30898;
              call->tail_call = 1;
              call->method = cmethod;
              D.34001 = mono_method_signature (cmethod);
              call->signature = D.34001;
              i = 0;
              goto <D.27870>;
              <D.27869>:
              D.30802 = (long unsigned int) i;
              D.31411 = D.30802 * 8;
              D.32430 = arg_array + D.31411;
              D.32431 = *D.32430;
              D.30802 = (long unsigned int) i;
              D.31411 = D.30802 * 8;
              D.32430 = arg_array + D.31411;
              D.32431 = *D.32430;
              D.32432 = D.32431->flags;
              D.32433 = D.32432 | 4;
              D.32431->flags = D.32433;
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 428;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              D.31290 = cfg->arg_types;
              D.30802 = (long unsigned int) i;
              D.31411 = D.30802 * 8;
              D.34002 = D.31290 + D.31411;
              D.34003 = *D.34002;
              D.34004 = mono_type_to_regmove (cfg, D.34003);
              D.34005 = (short unsigned int) D.34004;
              ins->opcode = D.34005;
              D.31280 = cfg->args;
              D.30802 = (long unsigned int) i;
              D.31411 = D.30802 * 8;
              D.34006 = D.31280 + D.31411;
              D.34007 = *D.34006;
              D.34008 = D.34007->klass;
              ins->klass = D.34008;
              D.30802 = (long unsigned int) i;
              D.31411 = D.30802 * 8;
              D.34009 = sp + D.31411;
              D.34010 = *D.34009;
              D.34011 = D.34010->dreg;
              ins->sreg1 = D.34011;
              D.31280 = cfg->args;
              D.30802 = (long unsigned int) i;
              D.31411 = D.30802 * 8;
              D.34006 = D.31280 + D.31411;
              D.34007 = *D.34006;
              D.34012 = D.34007->dreg;
              ins->dreg = D.34012;
              D.31430 = ins->opcode;
              if (D.31430 == 431) goto <D.34013>; else goto <D.34014>;
              <D.34013>:
              D.31290 = cfg->arg_types;
              D.30802 = (long unsigned int) i;
              D.31411 = D.30802 * 8;
              D.34002 = D.31290 + D.31411;
              D.34003 = *D.34002;
              D.34015 = mono_class_from_mono_type (D.34003);
              ins->klass = D.34015;
              <D.34014>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.34016>; else goto <D.34017>;
              <D.34016>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.34018>;
              <D.34017>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.34018>:
              i = i + 1;
              <D.27870>:
              if (i < n) goto <D.27869>; else goto <D.27871>;
              <D.27871>:
              ins = call;
              ins->data.op[0].p = cmethod;
              D.30988 = *arg_array;
              ins->data.op[1].p = D.30988;
              bblock.70 = bblock;
              D.31015 = bblock.70->last_ins;
              if (D.31015 != 0B) goto <D.34019>; else goto <D.34020>;
              <D.34019>:
              bblock.70 = bblock;
              D.31015 = bblock.70->last_ins;
              D.31015->next = ins;
              bblock.70 = bblock;
              D.31015 = bblock.70->last_ins;
              ins->prev = D.31015;
              bblock.70 = bblock;
              bblock.70->last_ins = ins;
              goto <D.34021>;
              <D.34020>:
              bblock.70 = bblock;
              bblock.70 = bblock;
              bblock.70->last_ins = ins;
              D.31015 = bblock.70->last_ins;
              bblock.70->code = D.31015;
              <D.34021>:
              bblock.70 = bblock;
              link_bblock (cfg, bblock.70, end_bblock);
              start_new_bblock = 1;
              D.30804 = cfg->cil_offset_to_bb;
              D.32104 = ip + 5;
              D.32629 = (long int) D.32104;
              D.30809 = cfg->cil_start;
              D.30810 = (long int) D.30809;
              D.33445 = D.32629 - D.30810;
              D.33446 = (long unsigned int) D.33445;
              D.33447 = D.33446 * 8;
              D.33448 = D.30804 + D.33447;
              tblock = *D.33448;
              if (tblock == 0B) goto <D.34022>; else goto <D.34023>;
              <D.34022>:
              D.32104 = ip + 5;
              if (D.32104 >= end) goto <D.34024>; else goto <D.34026>;
              <D.34026>:
              D.33454 = ip + 5;
              D.30821 = header->code;
              if (D.33454 < D.30821) goto <D.34024>; else goto <D.34025>;
              <D.34024>:
              D.30822 = cfg->gsharedvt;
              if (D.30822 != 0) goto <D.34027>; else goto <D.34028>;
              <D.34027>:
              D.30753 = cfg->verbose_level;
              if (D.30753 > 2) goto <D.34029>; else goto <D.34030>;
              <D.34029>:
              printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
              <D.34030>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.34028>:
              D.34031 = mini_get_debug_options ();
              D.34032 = D.34031->break_on_unverified;
              if (D.34032 != 0) goto <D.34033>; else goto unverified;
              <D.34033>:
              __asm__ __volatile__("int $03");
              <D.34025>:
              D.30673 = cfg->mempool;
              tblock = mono_mempool_alloc0 (D.30673, 296);
              D.30781 = cfg->num_bblocks;
              D.34034 = D.30781;
              D.34035 = D.34034 + 1;
              cfg->num_bblocks = D.34035;
              D.34036 = (int) D.34034;
              tblock->block_num = D.34036;
              D.32104 = ip + 5;
              tblock->cil_code = D.32104;
              D.30871 = tblock->cil_code;
              if (D.30871 != 0B) goto <D.34037>; else goto <D.34038>;
              <D.34037>:
              D.30804 = cfg->cil_offset_to_bb;
              D.30871 = tblock->cil_code;
              D.30874 = (long int) D.30871;
              D.30809 = cfg->cil_start;
              D.30810 = (long int) D.30809;
              D.30875 = D.30874 - D.30810;
              D.30876 = (long unsigned int) D.30875;
              D.30877 = D.30876 * 8;
              D.30878 = D.30804 + D.30877;
              *D.30878 = tblock;
              <D.34038>:
              D.30841 = cfg->real_offset;
              tblock->real_offset = D.30841;
              <D.34023>:
              bblock.70 = bblock;
              if (tblock == bblock.70) goto <D.34039>; else goto <D.34041>;
              <D.34041>:
              D.34042 = tblock->in_count;
              if (D.34042 == 0) goto <D.34039>; else goto <D.34040>;
              <D.34039>:
              skip_ret = 1;
              <D.34040>:
              push_res = 0;
              goto call_end;
              <D.33998>:
            }
            <D.33989>:
            D.30642 = cfg->method;
            D.32578 = BIT_FIELD_REF <*D.30642, 8, 256>;
            D.32579 = D.32578 & 124;
            if (D.32579 == 64) goto <D.34043>; else goto <D.34044>;
            <D.34043>:
            {
              struct MonoMethod * orig;

              D.30642 = cfg->method;
              orig = mono_marshal_method_from_wrapper (D.30642);
              if (cmethod == orig) goto <D.34045>; else goto <D.34047>;
              <D.34047>:
              D.33265 = BIT_FIELD_REF <*cmethod, 8, 264>;
              D.33266 = D.33265 & 16;
              if (D.33266 != 0) goto <D.34048>; else goto <D.34046>;
              <D.34048>:
              D.34049 = mono_method_get_declaring_generic_method (cmethod);
              if (D.34049 == orig) goto <D.34045>; else goto <D.34046>;
              <D.34045>:
              cmethod = mono_marshal_get_synchronized_inner_wrapper (cmethod);
              <D.34046>:
            }
            <D.34044>:
            D.30642 = cfg->method;
            if (D.30642 != method) goto <D.34050>; else goto <D.34051>;
            <D.34050>:
            D.30614 = BIT_FIELD_REF <*method, 8, 256>;
            D.30615 = D.30614 & 124;
            if (D.30615 == 0) goto <D.34052>; else goto <D.34053>;
            <D.34052>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 1) goto <D.34054>; else goto <D.34055>;
            <D.34054>:
            printf ("inline failed: %s\n", "call");
            <D.34055>:
            goto inline_failure;
            <D.34053>:
            <D.34051>:
            if (virtual != 0) goto <D.34057>; else goto <D.34058>;
            <D.34057>:
            iftmp.132 = *sp;
            goto <D.34059>;
            <D.34058>:
            iftmp.132 = 0B;
            <D.34059>:
            ins = mono_emit_method_call_full (cfg, cmethod, fsig, tail_call, sp, iftmp.132, imt_arg, vtable_arg);
            if (tail_call != 0) goto <D.34060>; else goto <D.34061>;
            <D.34060>:
            bblock.70 = bblock;
            link_bblock (cfg, bblock.70, end_bblock);
            start_new_bblock = 1;
            D.30804 = cfg->cil_offset_to_bb;
            D.32104 = ip + 5;
            D.32629 = (long int) D.32104;
            D.30809 = cfg->cil_start;
            D.30810 = (long int) D.30809;
            D.33445 = D.32629 - D.30810;
            D.33446 = (long unsigned int) D.33445;
            D.33447 = D.33446 * 8;
            D.33448 = D.30804 + D.33447;
            tblock = *D.33448;
            if (tblock == 0B) goto <D.34062>; else goto <D.34063>;
            <D.34062>:
            D.32104 = ip + 5;
            if (D.32104 >= end) goto <D.34064>; else goto <D.34066>;
            <D.34066>:
            D.33454 = ip + 5;
            D.30821 = header->code;
            if (D.33454 < D.30821) goto <D.34064>; else goto <D.34065>;
            <D.34064>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.34067>; else goto <D.34068>;
            <D.34067>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.34069>; else goto <D.34070>;
            <D.34069>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.34070>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.34068>:
            D.34071 = mini_get_debug_options ();
            D.34072 = D.34071->break_on_unverified;
            if (D.34072 != 0) goto <D.34073>; else goto unverified;
            <D.34073>:
            __asm__ __volatile__("int $03");
            <D.34065>:
            D.30673 = cfg->mempool;
            tblock = mono_mempool_alloc0 (D.30673, 296);
            D.30781 = cfg->num_bblocks;
            D.34074 = D.30781;
            D.34075 = D.34074 + 1;
            cfg->num_bblocks = D.34075;
            D.34076 = (int) D.34074;
            tblock->block_num = D.34076;
            D.32104 = ip + 5;
            tblock->cil_code = D.32104;
            D.30871 = tblock->cil_code;
            if (D.30871 != 0B) goto <D.34077>; else goto <D.34078>;
            <D.34077>:
            D.30804 = cfg->cil_offset_to_bb;
            D.30871 = tblock->cil_code;
            D.30874 = (long int) D.30871;
            D.30809 = cfg->cil_start;
            D.30810 = (long int) D.30809;
            D.30875 = D.30874 - D.30810;
            D.30876 = (long unsigned int) D.30875;
            D.30877 = D.30876 * 8;
            D.30878 = D.30804 + D.30877;
            *D.30878 = tblock;
            <D.34078>:
            D.30841 = cfg->real_offset;
            tblock->real_offset = D.30841;
            <D.34063>:
            bblock.70 = bblock;
            if (tblock == bblock.70) goto <D.34079>; else goto <D.34081>;
            <D.34081>:
            D.34042 = tblock->in_count;
            if (D.34042 == 0) goto <D.34079>; else goto <D.34080>;
            <D.34079>:
            skip_ret = 1;
            <D.34080>:
            push_res = 0;
            <D.34061>:
            call_end:
            if (push_res != 0) goto <D.34082>; else goto <D.34083>;
            <D.34082>:
            D.32616 = fsig->ret;
            D.34084 = mono_type_is_void (D.32616);
            if (D.34084 == 0) goto <D.34085>; else goto <D.34086>;
            <D.34085>:
            D.34087 = ins == 0B;
            D.34088 = (long int) D.34087;
            D.34089 = __builtin_expect (D.34088, 0);
            if (D.34089 != 0) goto <D.34090>; else goto <D.34091>;
            <D.34090>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8442, "ins");
            <D.34091>:
            if (emit_widen != 0) goto <D.34092>; else goto <D.34093>;
            <D.34092>:
            sp.133 = sp;
            sp = sp.133 + 8;
            D.34095 = mono_emit_widen_call_res (cfg, ins, fsig);
            *sp.133 = D.34095;
            goto <D.34096>;
            <D.34093>:
            sp.134 = sp;
            sp = sp.134 + 8;
            *sp.134 = ins;
            <D.34096>:
            <D.34086>:
            <D.34083>:
            if (keep_this_alive != 0B) goto <D.34098>; else goto <D.34099>;
            <D.34098>:
            {
              struct MonoInst * dummy_use;

              D.30673 = cfg->mempool;
              dummy_use = mono_mempool_alloc (D.30673, 80);
              dummy_use->data.op[1].const_val = 0;
              D.34100 = dummy_use->data.op[1].const_val;
              dummy_use->data.op[0].const_val = D.34100;
              dummy_use->prev = 0B;
              D.34101 = dummy_use->prev;
              dummy_use->next = D.34101;
              dummy_use->opcode = 800;
              dummy_use->flags = 0;
              dummy_use->type = 0;
              dummy_use->dreg = -1;
              dummy_use->sreg3 = -1;
              D.34102 = dummy_use->sreg3;
              dummy_use->sreg2 = D.34102;
              D.34103 = dummy_use->sreg2;
              dummy_use->sreg1 = D.34103;
              D.30898 = cfg->ip;
              dummy_use->cil_code = D.30898;
              D.34104 = keep_this_alive->dreg;
              dummy_use->sreg1 = D.34104;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.34105>; else goto <D.34106>;
              <D.34105>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = dummy_use;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              dummy_use->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = dummy_use;
              goto <D.34107>;
              <D.34106>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = dummy_use;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.34107>:
            }
            <D.34099>:
            D.31231 = cfg->exception_type;
            if (D.31231 != 0) goto exception_exit; else goto <D.34108>;
            <D.34108>:
            ip = ip + 5;
            if (skip_ret != 0) goto <D.34109>; else goto <D.34110>;
            <D.34109>:
            D.31560 = *ip;
            D.34111 = D.31560 != 42;
            D.34112 = (long int) D.34111;
            D.34113 = __builtin_expect (D.34112, 0);
            if (D.34113 != 0) goto <D.34114>; else goto <D.34115>;
            <D.34114>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8460, "*ip == CEE_RET");
            <D.34115>:
            ip = ip + 1;
            <D.34110>:
            ins_flag = 0;
            constrained_call = 0B;
            if (need_seq_point != 0) goto <D.34116>; else goto <D.34117>;
            <D.34116>:
            emit_seq_point (cfg, method, ip, 0, 1);
            <D.34117>:
            goto <D.27670>;
          }
        finally
          {
            pass_vtable = {CLOBBER};
            pass_mrgctx = {CLOBBER};
          }
      }
      <D.27874>:
      D.30642 = cfg->method;
      if (D.30642 != method) goto <D.34118>; else goto <D.34119>;
      <D.34118>:
      if (return_var != 0B) goto <D.34120>; else goto <D.34121>;
      <D.34120>:
      bblock.113 = cfg->cbb;
      D.34122 = bblock.113->in_count;
      if (D.34122 != 0) goto <D.34123>; else goto <D.34124>;
      <D.34123>:
      {
        struct MonoType * ret_type;
        struct MonoInst * store;

        D.34125 = mono_method_signature (method);
        ret_type = D.34125->ret;
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.34126>; else goto <D.34127>;
        <D.34126>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34128>; else goto <D.34129>;
        <D.34128>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34130>; else goto <D.34131>;
        <D.34130>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34131>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34129>:
        D.34132 = mini_get_debug_options ();
        D.34133 = D.34132->break_on_unverified;
        if (D.34133 != 0) goto <D.34134>; else goto unverified;
        <D.34134>:
        __asm__ __volatile__("int $03");
        <D.34127>:
        sp = sp + 18446744073709551608;
        D.30614 = BIT_FIELD_REF <*method, 8, 256>;
        D.34135 = D.30614 & 124;
        D.34136 = D.34135 == 68;
        D.34137 = D.34135 == 0;
        D.34138 = D.34136 | D.34137;
        if (D.34138 != 0) goto <D.34139>; else goto <D.34140>;
        <D.34139>:
        D.31680 = *sp;
        D.34141 = target_type_is_incompatible (cfg, ret_type, D.31680);
        if (D.34141 != 0) goto <D.34142>; else goto <D.34143>;
        <D.34142>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34144>; else goto <D.34145>;
        <D.34144>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34146>; else goto <D.34147>;
        <D.34146>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34147>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34145>:
        D.34148 = mini_get_debug_options ();
        D.34149 = D.34148->break_on_unverified;
        if (D.34149 != 0) goto <D.34150>; else goto unverified;
        <D.34150>:
        __asm__ __volatile__("int $03");
        <D.34143>:
        <D.34140>:
        D.30673 = cfg->mempool;
        store = mono_mempool_alloc (D.30673, 80);
        store->data.op[1].const_val = 0;
        D.34151 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.34151;
        store->prev = 0B;
        D.34152 = store->prev;
        store->next = D.34152;
        store->opcode = 428;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.34153 = store->sreg3;
        store->sreg2 = D.34153;
        D.34154 = store->sreg2;
        store->sreg1 = D.34154;
        D.30898 = cfg->ip;
        store->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.34155 = return_var->data.op[0].const_val;
        D.34156 = (long unsigned int) D.34155;
        D.34157 = D.34156 * 8;
        D.34158 = D.31416 + D.34157;
        D.34159 = *D.34158;
        D.34160 = D.34159->data.op[1].vtype;
        D.34161 = mono_type_to_regmove (cfg, D.34160);
        D.34162 = (short unsigned int) D.34161;
        store->opcode = D.34162;
        D.31416 = cfg->varinfo;
        D.34155 = return_var->data.op[0].const_val;
        D.34156 = (long unsigned int) D.34155;
        D.34157 = D.34156 * 8;
        D.34158 = D.31416 + D.34157;
        D.34159 = *D.34158;
        D.34163 = D.34159->klass;
        store->klass = D.34163;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        store->sreg1 = D.31862;
        D.31416 = cfg->varinfo;
        D.34155 = return_var->data.op[0].const_val;
        D.34156 = (long unsigned int) D.34155;
        D.34157 = D.34156 * 8;
        D.34158 = D.31416 + D.34157;
        D.34159 = *D.34158;
        D.34164 = D.34159->dreg;
        store->dreg = D.34164;
        D.34165 = store->opcode;
        if (D.34165 == 431) goto <D.34166>; else goto <D.34167>;
        <D.34166>:
        D.31416 = cfg->varinfo;
        D.34155 = return_var->data.op[0].const_val;
        D.34156 = (long unsigned int) D.34155;
        D.34157 = D.34156 * 8;
        D.34158 = D.31416 + D.34157;
        D.34159 = *D.34158;
        D.34160 = D.34159->data.op[1].vtype;
        D.34168 = mono_class_from_mono_type (D.34160);
        store->klass = D.34168;
        <D.34167>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.34169>; else goto <D.34170>;
        <D.34169>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = store;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        store->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = store;
        goto <D.34171>;
        <D.34170>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = store;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.34171>:
        cfg->ret_var_set = 1;
      }
      <D.34124>:
      <D.34121>:
      goto <D.34172>;
      <D.34119>:
      D.34173 = cfg->lmf_var;
      if (D.34173 != 0B) goto <D.34174>; else goto <D.34175>;
      <D.34174>:
      bblock.113 = cfg->cbb;
      D.34122 = bblock.113->in_count;
      if (D.34122 != 0) goto <D.34176>; else goto <D.34177>;
      <D.34176>:
      emit_pop_lmf (cfg);
      <D.34177>:
      <D.34175>:
      D.34178 = cfg->ret;
      if (D.34178 != 0B) goto <D.34179>; else goto <D.34180>;
      <D.34179>:
      {
        struct MonoType * ret_type;

        D.34181 = mono_method_signature (method);
        D.34182 = D.34181->ret;
        ret_type = mini_replace_type (D.34182);
        D.31562 = seq_points != 0;
        D.31563 = sym_seq_points == 0;
        D.31564 = D.31562 & D.31563;
        if (D.31564 != 0) goto <D.34183>; else goto <D.34184>;
        <D.34183>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ip.75 = (long int) ip;
        D.30821 = header->code;
        D.31371 = (long int) D.30821;
        D.31372 = ip.75 - D.31371;
        ins->data.op[1].const_val = D.31372;
        ins->flags = 1;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.34185>; else goto <D.34186>;
        <D.34185>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.34187>;
        <D.34186>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.34187>:
        <D.34184>:
        D.34188 = return_var != 0B;
        D.34189 = (long int) D.34188;
        D.34190 = __builtin_expect (D.34189, 0);
        if (D.34190 != 0) goto <D.34191>; else goto <D.34192>;
        <D.34191>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 8511, "!return_var");
        <D.34192>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.34193>; else goto <D.34194>;
        <D.34193>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34195>; else goto <D.34196>;
        <D.34195>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34197>; else goto <D.34198>;
        <D.34197>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34198>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34196>:
        D.34199 = mini_get_debug_options ();
        D.34200 = D.34199->break_on_unverified;
        if (D.34200 != 0) goto <D.34201>; else goto unverified;
        <D.34201>:
        __asm__ __volatile__("int $03");
        <D.34194>:
        sp = sp + 18446744073709551608;
        D.30614 = BIT_FIELD_REF <*method, 8, 256>;
        D.34202 = D.30614 & 124;
        D.34203 = D.34202 == 68;
        D.34204 = D.34202 == 0;
        D.34205 = D.34203 | D.34204;
        if (D.34205 != 0) goto <D.34206>; else goto <D.34207>;
        <D.34206>:
        D.31680 = *sp;
        D.34208 = target_type_is_incompatible (cfg, ret_type, D.31680);
        if (D.34208 != 0) goto <D.34209>; else goto <D.34210>;
        <D.34209>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34211>; else goto <D.34212>;
        <D.34211>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34213>; else goto <D.34214>;
        <D.34213>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34214>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34212>:
        D.34215 = mini_get_debug_options ();
        D.34216 = D.34215->break_on_unverified;
        if (D.34216 != 0) goto <D.34217>; else goto unverified;
        <D.34217>:
        __asm__ __volatile__("int $03");
        <D.34210>:
        <D.34207>:
        D.34218 = mini_type_to_stind (cfg, ret_type);
        if (D.34218 == 129) goto <D.34219>; else goto <D.34220>;
        <D.34219>:
        {
          struct MonoInst * ret_addr;

          D.34221 = cfg->vret_addr;
          if (D.34221 == 0B) goto <D.34222>; else goto <D.34223>;
          <D.34222>:
          {
            struct MonoInst * ins;

            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.34224 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.34224;
            ins->prev = 0B;
            D.34225 = ins->prev;
            ins->next = D.34225;
            ins->opcode = 428;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.34226 = ins->sreg3;
            ins->sreg2 = D.34226;
            D.34227 = ins->sreg2;
            ins->sreg1 = D.34227;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            D.34228 = mono_type_to_regmove (cfg, ret_type);
            D.34229 = (short unsigned int) D.34228;
            ins->opcode = D.34229;
            D.34178 = cfg->ret;
            D.34230 = D.34178->klass;
            ins->klass = D.34230;
            D.31680 = *sp;
            D.31862 = D.31680->dreg;
            ins->sreg1 = D.31862;
            D.34178 = cfg->ret;
            D.34231 = D.34178->dreg;
            ins->dreg = D.34231;
            D.34232 = ins->opcode;
            if (D.34232 == 431) goto <D.34233>; else goto <D.34234>;
            <D.34233>:
            D.34235 = mono_class_from_mono_type (ret_type);
            ins->klass = D.34235;
            <D.34234>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.34236>; else goto <D.34237>;
            <D.34236>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.34238>;
            <D.34237>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.34238>:
          }
          goto <D.34239>;
          <D.34223>:
          D.30673 = cfg->mempool;
          ret_addr = mono_mempool_alloc (D.30673, 80);
          ret_addr->data.op[1].const_val = 0;
          D.34240 = ret_addr->data.op[1].const_val;
          ret_addr->data.op[0].const_val = D.34240;
          ret_addr->prev = 0B;
          D.34241 = ret_addr->prev;
          ret_addr->next = D.34241;
          ret_addr->opcode = 428;
          ret_addr->flags = 0;
          ret_addr->type = 0;
          ret_addr->dreg = -1;
          ret_addr->sreg3 = -1;
          D.34242 = ret_addr->sreg3;
          ret_addr->sreg2 = D.34242;
          D.34243 = ret_addr->sreg2;
          ret_addr->sreg1 = D.34243;
          D.30898 = cfg->ip;
          ret_addr->cil_code = D.30898;
          ret_addr->type = 5;
          D.34178 = cfg->ret;
          D.34230 = D.34178->klass;
          ret_addr->klass = D.34230;
          D.34221 = cfg->vret_addr;
          D.34244 = D.34221->dreg;
          ret_addr->sreg1 = D.34244;
          D.34245 = ret_addr->type;
          D.34246 = (<unnamed type>) D.34245;
          D.34247 = alloc_dreg (cfg, D.34246);
          D.34248 = (int) D.34247;
          ret_addr->dreg = D.34248;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34249>; else goto <D.34250>;
          <D.34249>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ret_addr;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ret_addr->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ret_addr;
          goto <D.34251>;
          <D.34250>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ret_addr;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34251>:
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          ins->opcode = 390;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          D.31680 = *sp;
          D.31862 = D.31680->dreg;
          ins->sreg1 = D.31862;
          D.34252 = ret_addr->dreg;
          ins->dreg = D.34252;
          ins->data.op[0].const_val = 0;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34253>; else goto <D.34254>;
          <D.34253>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.34255>;
          <D.34254>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34255>:
          D.34256 = mono_class_from_mono_type (ret_type);
          ins->klass = D.34256;
          <D.34239>:
        }
        goto <D.34257>;
        <D.34220>:
        D.31680 = *sp;
        mono_arch_emit_setret (cfg, method, D.31680);
        <D.34257>:
      }
      <D.34180>:
      <D.34172>:
      if (sp != stack_start) goto <D.34258>; else goto <D.34259>;
      <D.34258>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34260>; else goto <D.34261>;
      <D.34260>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.34262>; else goto <D.34263>;
      <D.34262>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34263>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34261>:
      D.34264 = mini_get_debug_options ();
      D.34265 = D.34264->break_on_unverified;
      if (D.34265 != 0) goto <D.34266>; else goto unverified;
      <D.34266>:
      __asm__ __volatile__("int $03");
      <D.34259>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ip = ip + 1;
      ins->data.op[0].target_block = end_bblock;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.34267>; else goto <D.34268>;
      <D.34267>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.34269>;
      <D.34268>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.34269>:
      bblock.70 = bblock;
      link_bblock (cfg, bblock.70, end_bblock);
      start_new_bblock = 1;
      goto <D.27670>;
      <D.27880>:
      D.31691 = ip + 2;
      if (D.31691 > end) goto <D.34270>; else goto <D.34271>;
      <D.34270>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34272>; else goto <D.34273>;
      <D.34272>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.34274>; else goto <D.34275>;
      <D.34274>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34275>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34273>:
      D.34276 = mini_get_debug_options ();
      D.34277 = D.34276->break_on_unverified;
      if (D.34277 != 0) goto <D.34278>; else goto unverified;
      <D.34278>:
      __asm__ __volatile__("int $03");
      <D.34271>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ip = ip + 1;
      D.31560 = *ip;
      D.34279 = (signed char) D.31560;
      D.34280 = (sizetype) D.34279;
      D.34281 = D.34280 + 1;
      target = ip + D.34281;
      ip = ip + 1;
      D.30804 = cfg->cil_offset_to_bb;
      target.135 = (long int) target;
      D.30809 = cfg->cil_start;
      D.30810 = (long int) D.30809;
      D.34283 = target.135 - D.30810;
      D.34284 = (long unsigned int) D.34283;
      D.34285 = D.34284 * 8;
      D.34286 = D.30804 + D.34285;
      tblock = *D.34286;
      if (tblock == 0B) goto <D.34287>; else goto <D.34288>;
      <D.34287>:
      if (target >= end) goto <D.34289>; else goto <D.34291>;
      <D.34291>:
      D.30821 = header->code;
      if (D.30821 > target) goto <D.34289>; else goto <D.34290>;
      <D.34289>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34292>; else goto <D.34293>;
      <D.34292>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 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>:
      __asm__ __volatile__("int $03");
      <D.34290>:
      D.30673 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.30673, 296);
      D.30781 = cfg->num_bblocks;
      D.34299 = D.30781;
      D.34300 = D.34299 + 1;
      cfg->num_bblocks = D.34300;
      D.34301 = (int) D.34299;
      tblock->block_num = D.34301;
      tblock->cil_code = target;
      D.30871 = tblock->cil_code;
      if (D.30871 != 0B) goto <D.34302>; else goto <D.34303>;
      <D.34302>:
      D.30804 = cfg->cil_offset_to_bb;
      D.30871 = tblock->cil_code;
      D.30874 = (long int) D.30871;
      D.30809 = cfg->cil_start;
      D.30810 = (long int) D.30809;
      D.30875 = D.30874 - D.30810;
      D.30876 = (long unsigned int) D.30875;
      D.30877 = D.30876 * 8;
      D.30878 = D.30804 + D.30877;
      *D.30878 = tblock;
      <D.34303>:
      D.30841 = cfg->real_offset;
      tblock->real_offset = D.30841;
      <D.34288>:
      bblock.70 = bblock;
      link_bblock (cfg, bblock.70, tblock);
      ins->data.op[0].target_block = tblock;
      if (sp != stack_start) goto <D.34304>; else goto <D.34305>;
      <D.34304>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31453 = (int) D.31452;
      handle_stack_args (cfg, stack_start, D.31453);
      sp = stack_start;
      D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
      D.31455 = D.31454 & 32;
      if (D.31455 != 0) goto <D.34306>; else goto <D.34307>;
      <D.34306>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34308>; else goto <D.34309>;
      <D.34308>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.34310>; else goto <D.34311>;
      <D.34310>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34311>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34309>:
      D.34312 = mini_get_debug_options ();
      D.34313 = D.34312->break_on_unverified;
      if (D.34313 != 0) goto <D.34314>; else goto unverified;
      <D.34314>:
      __asm__ __volatile__("int $03");
      <D.34307>:
      <D.34305>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.34315>; else goto <D.34316>;
      <D.34315>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.34317>;
      <D.34316>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.34317>:
      start_new_bblock = 1;
      inline_costs = inline_costs + 10;
      goto <D.27670>;
      <D.27881>:
      <D.27882>:
      <D.27883>:
      <D.27884>:
      <D.27885>:
      <D.27886>:
      <D.27887>:
      <D.27888>:
      <D.27889>:
      <D.27890>:
      D.31691 = ip + 2;
      if (D.31691 > end) goto <D.34318>; else goto <D.34319>;
      <D.34318>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34320>; else goto <D.34321>;
      <D.34320>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.34322>; else goto <D.34323>;
      <D.34322>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34323>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34321>:
      D.34324 = mini_get_debug_options ();
      D.34325 = D.34324->break_on_unverified;
      if (D.34325 != 0) goto <D.34326>; else goto unverified;
      <D.34326>:
      __asm__ __volatile__("int $03");
      <D.34319>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 15) goto <D.34327>; else goto <D.34328>;
      <D.34327>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34329>; else goto <D.34330>;
      <D.34329>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.34331>; else goto <D.34332>;
      <D.34331>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34332>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34330>:
      D.34333 = mini_get_debug_options ();
      D.34334 = D.34333->break_on_unverified;
      if (D.34334 != 0) goto <D.34335>; else goto unverified;
      <D.34335>:
      __asm__ __volatile__("int $03");
      <D.34328>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.34336 = (short unsigned int) D.31560;
      D.34337 = D.34336 + 13;
      ins->opcode = D.34337;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ip = ip + 1;
      D.32096 = MEM[(signed char *)ip];
      D.34338 = (sizetype) D.32096;
      D.34339 = D.34338 + 1;
      target = ip + D.34339;
      ip = ip + 1;
      {
        struct MonoInst * cmp;

        sp = sp + 18446744073709551600;
        D.30673 = cfg->mempool;
        cmp = mono_mempool_alloc (D.30673, 80);
        cmp->data.op[1].const_val = 0;
        D.34340 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.34340;
        cmp->prev = 0B;
        D.34341 = cmp->prev;
        cmp->next = D.34341;
        cmp->opcode = 322;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.34342 = cmp->sreg3;
        cmp->sreg2 = D.34342;
        D.34343 = cmp->sreg2;
        cmp->sreg1 = D.34343;
        D.30898 = cfg->ip;
        cmp->cil_code = D.30898;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        cmp->sreg1 = D.31862;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.32790 = D.32789->dreg;
        cmp->sreg2 = D.32790;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.31680 = *sp;
        type_from_op (cmp, D.31680, D.32789);
        D.34344 = cmp->type;
        if (D.34344 == 0) goto <D.34345>; else goto <D.34346>;
        <D.34345>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34347>; else goto <D.34348>;
        <D.34347>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34349>; else goto <D.34350>;
        <D.34349>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34350>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34348>:
        D.34351 = mini_get_debug_options ();
        D.34352 = D.34351->break_on_unverified;
        if (D.34352 != 0) goto <D.34353>; else goto unverified;
        <D.34353>:
        __asm__ __volatile__("int $03");
        <D.34346>:
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.31680 = *sp;
        type_from_op (ins, D.31680, D.32789);
        D.30673 = cfg->mempool;
        D.34354 = mono_mempool_alloc (D.30673, 16);
        ins->data.op[1].many_blocks = D.34354;
        D.30804 = cfg->cil_offset_to_bb;
        target.135 = (long int) target;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.34283 = target.135 - D.30810;
        D.34284 = (long unsigned int) D.34283;
        D.34285 = D.34284 * 8;
        D.34286 = D.30804 + D.34285;
        tblock = *D.34286;
        if (tblock == 0B) goto <D.34355>; else goto <D.34356>;
        <D.34355>:
        if (target >= end) goto <D.34357>; else goto <D.34359>;
        <D.34359>:
        D.30821 = header->code;
        if (D.30821 > target) goto <D.34357>; else goto <D.34358>;
        <D.34357>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34360>; else goto <D.34361>;
        <D.34360>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34362>; else goto <D.34363>;
        <D.34362>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34363>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34361>:
        D.34364 = mini_get_debug_options ();
        D.34365 = D.34364->break_on_unverified;
        if (D.34365 != 0) goto <D.34366>; else goto unverified;
        <D.34366>:
        __asm__ __volatile__("int $03");
        <D.34358>:
        D.30673 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.34367 = D.30781;
        D.34368 = D.34367 + 1;
        cfg->num_bblocks = D.34368;
        D.34369 = (int) D.34367;
        tblock->block_num = D.34369;
        tblock->cil_code = target;
        D.30871 = tblock->cil_code;
        if (D.30871 != 0B) goto <D.34370>; else goto <D.34371>;
        <D.34370>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30871 = tblock->cil_code;
        D.30874 = (long int) D.30871;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30875 = D.30874 - D.30810;
        D.30876 = (long unsigned int) D.30875;
        D.30877 = D.30876 * 8;
        D.30878 = D.30804 + D.30877;
        *D.30878 = tblock;
        <D.34371>:
        D.30841 = cfg->real_offset;
        tblock->real_offset = D.30841;
        <D.34356>:
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, tblock);
        D.34372 = ins->data.op[1].many_blocks;
        *D.34372 = tblock;
        if (0 != 0) goto <D.34373>; else goto <D.34374>;
        <D.34373>:
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, 0B);
        D.34372 = ins->data.op[1].many_blocks;
        D.34375 = D.34372 + 8;
        *D.34375 = 0B;
        start_new_bblock = 1;
        goto <D.34376>;
        <D.34374>:
        D.30804 = cfg->cil_offset_to_bb;
        ip.75 = (long int) ip;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.31387 = ip.75 - D.30810;
        D.31388 = (long unsigned int) D.31387;
        D.31389 = D.31388 * 8;
        D.31390 = D.30804 + D.31389;
        tblock = *D.31390;
        if (tblock == 0B) goto <D.34377>; else goto <D.34378>;
        <D.34377>:
        if (ip >= end) goto <D.34379>; else goto <D.34381>;
        <D.34381>:
        D.30821 = header->code;
        if (D.30821 > ip) goto <D.34379>; else goto <D.34380>;
        <D.34379>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34382>; else goto <D.34383>;
        <D.34382>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34384>; else goto <D.34385>;
        <D.34384>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34385>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34383>:
        D.34386 = mini_get_debug_options ();
        D.34387 = D.34386->break_on_unverified;
        if (D.34387 != 0) goto <D.34388>; else goto unverified;
        <D.34388>:
        __asm__ __volatile__("int $03");
        <D.34380>:
        D.30673 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.34389 = D.30781;
        D.34390 = D.34389 + 1;
        cfg->num_bblocks = D.34390;
        D.34391 = (int) D.34389;
        tblock->block_num = D.34391;
        tblock->cil_code = ip;
        D.30871 = tblock->cil_code;
        if (D.30871 != 0B) goto <D.34392>; else goto <D.34393>;
        <D.34392>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30871 = tblock->cil_code;
        D.30874 = (long int) D.30871;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30875 = D.30874 - D.30810;
        D.30876 = (long unsigned int) D.30875;
        D.30877 = D.30876 * 8;
        D.30878 = D.30804 + D.30877;
        *D.30878 = tblock;
        <D.34393>:
        D.30841 = cfg->real_offset;
        tblock->real_offset = D.30841;
        <D.34378>:
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, tblock);
        D.34372 = ins->data.op[1].many_blocks;
        D.34375 = D.34372 + 8;
        *D.34375 = tblock;
        start_new_bblock = 2;
        <D.34376>:
        if (sp != stack_start) goto <D.34394>; else goto <D.34395>;
        <D.34394>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31453 = (int) D.31452;
        handle_stack_args (cfg, stack_start, D.31453);
        D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
        D.31455 = D.31454 & 32;
        if (D.31455 != 0) goto <D.34396>; else goto <D.34397>;
        <D.34396>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34398>; else goto <D.34399>;
        <D.34398>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34400>; else goto <D.34401>;
        <D.34400>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34401>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34399>:
        D.34402 = mini_get_debug_options ();
        D.34403 = D.34402->break_on_unverified;
        if (D.34403 != 0) goto <D.34404>; else goto unverified;
        <D.34404>:
        __asm__ __volatile__("int $03");
        <D.34397>:
        <D.34395>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.34405>; else goto <D.34406>;
        <D.34405>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = cmp;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        cmp->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = cmp;
        goto <D.34407>;
        <D.34406>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = cmp;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.34407>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.34408>; else goto <D.34409>;
        <D.34408>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.34410>;
        <D.34409>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.34410>:
      }
      sp = stack_start;
      inline_costs = inline_costs + 10;
      goto <D.27670>;
      <D.27892>:
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.34411>; else goto <D.34412>;
      <D.34411>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34413>; else goto <D.34414>;
      <D.34413>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.34415>; else goto <D.34416>;
      <D.34415>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34416>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34414>:
      D.34417 = mini_get_debug_options ();
      D.34418 = D.34417->break_on_unverified;
      if (D.34418 != 0) goto <D.34419>; else goto unverified;
      <D.34419>:
      __asm__ __volatile__("int $03");
      <D.34412>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ip = ip + 1;
      D.32204 = MEM[(const guint32 *)ip];
      D.34420 = (int) D.32204;
      D.34421 = (sizetype) D.34420;
      D.34422 = D.34421 + 4;
      target = ip + D.34422;
      ip = ip + 4;
      D.30804 = cfg->cil_offset_to_bb;
      target.135 = (long int) target;
      D.30809 = cfg->cil_start;
      D.30810 = (long int) D.30809;
      D.34283 = target.135 - D.30810;
      D.34284 = (long unsigned int) D.34283;
      D.34285 = D.34284 * 8;
      D.34286 = D.30804 + D.34285;
      tblock = *D.34286;
      if (tblock == 0B) goto <D.34423>; else goto <D.34424>;
      <D.34423>:
      if (target >= end) goto <D.34425>; else goto <D.34427>;
      <D.34427>:
      D.30821 = header->code;
      if (D.30821 > target) goto <D.34425>; else goto <D.34426>;
      <D.34425>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34428>; else goto <D.34429>;
      <D.34428>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.34430>; else goto <D.34431>;
      <D.34430>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34431>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34429>:
      D.34432 = mini_get_debug_options ();
      D.34433 = D.34432->break_on_unverified;
      if (D.34433 != 0) goto <D.34434>; else goto unverified;
      <D.34434>:
      __asm__ __volatile__("int $03");
      <D.34426>:
      D.30673 = cfg->mempool;
      tblock = mono_mempool_alloc0 (D.30673, 296);
      D.30781 = cfg->num_bblocks;
      D.34435 = D.30781;
      D.34436 = D.34435 + 1;
      cfg->num_bblocks = D.34436;
      D.34437 = (int) D.34435;
      tblock->block_num = D.34437;
      tblock->cil_code = target;
      D.30871 = tblock->cil_code;
      if (D.30871 != 0B) goto <D.34438>; else goto <D.34439>;
      <D.34438>:
      D.30804 = cfg->cil_offset_to_bb;
      D.30871 = tblock->cil_code;
      D.30874 = (long int) D.30871;
      D.30809 = cfg->cil_start;
      D.30810 = (long int) D.30809;
      D.30875 = D.30874 - D.30810;
      D.30876 = (long unsigned int) D.30875;
      D.30877 = D.30876 * 8;
      D.30878 = D.30804 + D.30877;
      *D.30878 = tblock;
      <D.34439>:
      D.30841 = cfg->real_offset;
      tblock->real_offset = D.30841;
      <D.34424>:
      bblock.70 = bblock;
      link_bblock (cfg, bblock.70, tblock);
      ins->data.op[0].target_block = tblock;
      if (sp != stack_start) goto <D.34440>; else goto <D.34441>;
      <D.34440>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31453 = (int) D.31452;
      handle_stack_args (cfg, stack_start, D.31453);
      sp = stack_start;
      D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
      D.31455 = D.31454 & 32;
      if (D.31455 != 0) goto <D.34442>; else goto <D.34443>;
      <D.34442>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34444>; else goto <D.34445>;
      <D.34444>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.34446>; else goto <D.34447>;
      <D.34446>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34447>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34445>:
      D.34448 = mini_get_debug_options ();
      D.34449 = D.34448->break_on_unverified;
      if (D.34449 != 0) goto <D.34450>; else goto unverified;
      <D.34450>:
      __asm__ __volatile__("int $03");
      <D.34443>:
      <D.34441>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.34451>; else goto <D.34452>;
      <D.34451>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.34453>;
      <D.34452>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.34453>:
      start_new_bblock = 1;
      inline_costs = inline_costs + 10;
      goto <D.27670>;
      <D.27893>:
      <D.27894>:
      <D.27895>:
      <D.27896>:
      {
        struct MonoInst * cmp;
        gboolean is_short;
        gboolean is_true;
        guint32 opsize;

        D.31560 = *ip;
        D.34454 = D.31560 + 212;
        D.34455 = D.34454 <= 1;
        is_short = (gboolean) D.34455;
        D.34456 = *ip;
        D.34457 = D.34456 == 45;
        D.34458 = D.34456 == 58;
        D.34459 = D.34457 | D.34458;
        is_true = (gboolean) D.34459;
        if (is_short != 0) goto <D.34461>; else goto <D.34462>;
        <D.34461>:
        iftmp.136 = 1;
        goto <D.34463>;
        <D.34462>:
        iftmp.136 = 4;
        <D.34463>:
        opsize = iftmp.136;
        D.34464 = (sizetype) opsize;
        D.34465 = ip + D.34464;
        if (D.34465 > end) goto <D.34466>; else goto <D.34467>;
        <D.34466>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34468>; else goto <D.34469>;
        <D.34468>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34470>; else goto <D.34471>;
        <D.34470>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34471>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34469>:
        D.34472 = mini_get_debug_options ();
        D.34473 = D.34472->break_on_unverified;
        if (D.34473 != 0) goto <D.34474>; else goto unverified;
        <D.34474>:
        __asm__ __volatile__("int $03");
        <D.34467>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.34475>; else goto <D.34476>;
        <D.34475>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34477>; else goto <D.34478>;
        <D.34477>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34479>; else goto <D.34480>;
        <D.34479>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34480>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34478>:
        D.34481 = mini_get_debug_options ();
        D.34482 = D.34481->break_on_unverified;
        if (D.34482 != 0) goto <D.34483>; else goto unverified;
        <D.34483>:
        __asm__ __volatile__("int $03");
        <D.34476>:
        D.34484 = sp + 18446744073709551608;
        D.34485 = *D.34484;
        D.34486 = D.34485->type;
        D.34487 = D.34486 == 7;
        D.34488 = D.34486 == 4;
        D.34489 = D.34487 | D.34488;
        if (D.34489 != 0) goto <D.34490>; else goto <D.34491>;
        <D.34490>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34492>; else goto <D.34493>;
        <D.34492>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34494>; else goto <D.34495>;
        <D.34494>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34495>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34493>:
        D.34496 = mini_get_debug_options ();
        D.34497 = D.34496->break_on_unverified;
        if (D.34497 != 0) goto <D.34498>; else goto unverified;
        <D.34498>:
        __asm__ __volatile__("int $03");
        <D.34491>:
        ip = ip + 1;
        D.34464 = (sizetype) opsize;
        if (is_short != 0) goto <D.34500>; else goto <D.34501>;
        <D.34500>:
        D.32096 = MEM[(signed char *)ip];
        iftmp.137 = (sizetype) D.32096;
        goto <D.34502>;
        <D.34501>:
        D.32204 = MEM[(const guint32 *)ip];
        D.34420 = (int) D.32204;
        iftmp.137 = (sizetype) D.34420;
        <D.34502>:
        D.34503 = D.34464 + iftmp.137;
        target = ip + D.34503;
        D.34464 = (sizetype) opsize;
        ip = ip + D.34464;
        sp = sp + 18446744073709551608;
        D.30804 = cfg->cil_offset_to_bb;
        target.135 = (long int) target;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.34283 = target.135 - D.30810;
        D.34284 = (long unsigned int) D.34283;
        D.34285 = D.34284 * 8;
        D.34286 = D.30804 + D.34285;
        tblock = *D.34286;
        if (tblock == 0B) goto <D.34504>; else goto <D.34505>;
        <D.34504>:
        if (target >= end) goto <D.34506>; else goto <D.34508>;
        <D.34508>:
        D.30821 = header->code;
        if (D.30821 > target) goto <D.34506>; else goto <D.34507>;
        <D.34506>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34509>; else goto <D.34510>;
        <D.34509>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34511>; else goto <D.34512>;
        <D.34511>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34512>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34510>:
        D.34513 = mini_get_debug_options ();
        D.34514 = D.34513->break_on_unverified;
        if (D.34514 != 0) goto <D.34515>; else goto unverified;
        <D.34515>:
        __asm__ __volatile__("int $03");
        <D.34507>:
        D.30673 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.34516 = D.30781;
        D.34517 = D.34516 + 1;
        cfg->num_bblocks = D.34517;
        D.34518 = (int) D.34516;
        tblock->block_num = D.34518;
        tblock->cil_code = target;
        D.30871 = tblock->cil_code;
        if (D.30871 != 0B) goto <D.34519>; else goto <D.34520>;
        <D.34519>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30871 = tblock->cil_code;
        D.30874 = (long int) D.30871;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30875 = D.30874 - D.30810;
        D.30876 = (long unsigned int) D.30875;
        D.30877 = D.30876 * 8;
        D.30878 = D.30804 + D.30877;
        *D.30878 = tblock;
        <D.34520>:
        D.30841 = cfg->real_offset;
        tblock->real_offset = D.30841;
        <D.34505>:
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, tblock);
        D.30804 = cfg->cil_offset_to_bb;
        ip.75 = (long int) ip;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.31387 = ip.75 - D.30810;
        D.31388 = (long unsigned int) D.31387;
        D.31389 = D.31388 * 8;
        D.31390 = D.30804 + D.31389;
        tblock = *D.31390;
        if (tblock == 0B) goto <D.34521>; else goto <D.34522>;
        <D.34521>:
        if (ip >= end) goto <D.34523>; else goto <D.34525>;
        <D.34525>:
        D.30821 = header->code;
        if (D.30821 > ip) goto <D.34523>; else goto <D.34524>;
        <D.34523>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34526>; else goto <D.34527>;
        <D.34526>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34528>; else goto <D.34529>;
        <D.34528>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34529>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34527>:
        D.34530 = mini_get_debug_options ();
        D.34531 = D.34530->break_on_unverified;
        if (D.34531 != 0) goto <D.34532>; else goto unverified;
        <D.34532>:
        __asm__ __volatile__("int $03");
        <D.34524>:
        D.30673 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.34533 = D.30781;
        D.34534 = D.34533 + 1;
        cfg->num_bblocks = D.34534;
        D.34535 = (int) D.34533;
        tblock->block_num = D.34535;
        tblock->cil_code = ip;
        D.30871 = tblock->cil_code;
        if (D.30871 != 0B) goto <D.34536>; else goto <D.34537>;
        <D.34536>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30871 = tblock->cil_code;
        D.30874 = (long int) D.30871;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30875 = D.30874 - D.30810;
        D.30876 = (long unsigned int) D.30875;
        D.30877 = D.30876 * 8;
        D.30878 = D.30804 + D.30877;
        *D.30878 = tblock;
        <D.34537>:
        D.30841 = cfg->real_offset;
        tblock->real_offset = D.30841;
        <D.34522>:
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, tblock);
        if (sp != stack_start) goto <D.34538>; else goto <D.34539>;
        <D.34538>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31453 = (int) D.31452;
        handle_stack_args (cfg, stack_start, D.31453);
        D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
        D.31455 = D.31454 & 32;
        if (D.31455 != 0) goto <D.34540>; else goto <D.34541>;
        <D.34540>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34542>; else goto <D.34543>;
        <D.34542>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34544>; else goto <D.34545>;
        <D.34544>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34545>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34543>:
        D.34546 = mini_get_debug_options ();
        D.34547 = D.34546->break_on_unverified;
        if (D.34547 != 0) goto <D.34548>; else goto unverified;
        <D.34548>:
        __asm__ __volatile__("int $03");
        <D.34541>:
        <D.34539>:
        D.30673 = cfg->mempool;
        cmp = mono_mempool_alloc (D.30673, 80);
        cmp->data.op[1].const_val = 0;
        D.34549 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.34549;
        cmp->prev = 0B;
        D.34550 = cmp->prev;
        cmp->next = D.34550;
        cmp->opcode = 327;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.34551 = cmp->sreg3;
        cmp->sreg2 = D.34551;
        D.34552 = cmp->sreg2;
        cmp->sreg1 = D.34552;
        D.30898 = cfg->ip;
        cmp->cil_code = D.30898;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        cmp->sreg1 = D.31862;
        D.31680 = *sp;
        type_from_op (cmp, D.31680, 0B);
        D.34553 = cmp->type;
        if (D.34553 == 0) goto <D.34554>; else goto <D.34555>;
        <D.34554>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34556>; else goto <D.34557>;
        <D.34556>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34558>; else goto <D.34559>;
        <D.34558>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34559>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34557>:
        D.34560 = mini_get_debug_options ();
        D.34561 = D.34560->break_on_unverified;
        if (D.34561 != 0) goto <D.34562>; else goto unverified;
        <D.34562>:
        __asm__ __volatile__("int $03");
        <D.34555>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.34563>; else goto <D.34564>;
        <D.34563>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = cmp;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        cmp->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = cmp;
        goto <D.34565>;
        <D.34564>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = cmp;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.34565>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        if (is_true != 0) goto <D.34567>; else goto <D.34568>;
        <D.34567>:
        iftmp.138 = 64;
        goto <D.34569>;
        <D.34568>:
        iftmp.138 = 59;
        <D.34569>:
        ins->opcode = iftmp.138;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.31680 = *sp;
        type_from_op (ins, D.31680, 0B);
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.34570>; else goto <D.34571>;
        <D.34570>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.34572>;
        <D.34571>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.34572>:
        D.30673 = cfg->mempool;
        D.34573 = mono_mempool_alloc (D.30673, 16);
        ins->data.op[1].many_blocks = D.34573;
        D.30804 = cfg->cil_offset_to_bb;
        target.135 = (long int) target;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.34283 = target.135 - D.30810;
        D.34284 = (long unsigned int) D.34283;
        D.34285 = D.34284 * 8;
        D.34286 = D.30804 + D.34285;
        tblock = *D.34286;
        if (tblock == 0B) goto <D.34574>; else goto <D.34575>;
        <D.34574>:
        if (target >= end) goto <D.34576>; else goto <D.34578>;
        <D.34578>:
        D.30821 = header->code;
        if (D.30821 > target) goto <D.34576>; else goto <D.34577>;
        <D.34576>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34579>; else goto <D.34580>;
        <D.34579>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34581>; else goto <D.34582>;
        <D.34581>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34582>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34580>:
        D.34583 = mini_get_debug_options ();
        D.34584 = D.34583->break_on_unverified;
        if (D.34584 != 0) goto <D.34585>; else goto unverified;
        <D.34585>:
        __asm__ __volatile__("int $03");
        <D.34577>:
        D.30673 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.34586 = D.30781;
        D.34587 = D.34586 + 1;
        cfg->num_bblocks = D.34587;
        D.34588 = (int) D.34586;
        tblock->block_num = D.34588;
        tblock->cil_code = target;
        D.30871 = tblock->cil_code;
        if (D.30871 != 0B) goto <D.34589>; else goto <D.34590>;
        <D.34589>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30871 = tblock->cil_code;
        D.30874 = (long int) D.30871;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30875 = D.30874 - D.30810;
        D.30876 = (long unsigned int) D.30875;
        D.30877 = D.30876 * 8;
        D.30878 = D.30804 + D.30877;
        *D.30878 = tblock;
        <D.34590>:
        D.30841 = cfg->real_offset;
        tblock->real_offset = D.30841;
        <D.34575>:
        D.34372 = ins->data.op[1].many_blocks;
        *D.34372 = tblock;
        D.30804 = cfg->cil_offset_to_bb;
        ip.75 = (long int) ip;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.31387 = ip.75 - D.30810;
        D.31388 = (long unsigned int) D.31387;
        D.31389 = D.31388 * 8;
        D.31390 = D.30804 + D.31389;
        tblock = *D.31390;
        if (tblock == 0B) goto <D.34591>; else goto <D.34592>;
        <D.34591>:
        if (ip >= end) goto <D.34593>; else goto <D.34595>;
        <D.34595>:
        D.30821 = header->code;
        if (D.30821 > ip) goto <D.34593>; else goto <D.34594>;
        <D.34593>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34596>; else goto <D.34597>;
        <D.34596>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34598>; else goto <D.34599>;
        <D.34598>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34599>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34597>:
        D.34600 = mini_get_debug_options ();
        D.34601 = D.34600->break_on_unverified;
        if (D.34601 != 0) goto <D.34602>; else goto unverified;
        <D.34602>:
        __asm__ __volatile__("int $03");
        <D.34594>:
        D.30673 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.34603 = D.30781;
        D.34604 = D.34603 + 1;
        cfg->num_bblocks = D.34604;
        D.34605 = (int) D.34603;
        tblock->block_num = D.34605;
        tblock->cil_code = ip;
        D.30871 = tblock->cil_code;
        if (D.30871 != 0B) goto <D.34606>; else goto <D.34607>;
        <D.34606>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30871 = tblock->cil_code;
        D.30874 = (long int) D.30871;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30875 = D.30874 - D.30810;
        D.30876 = (long unsigned int) D.30875;
        D.30877 = D.30876 * 8;
        D.30878 = D.30804 + D.30877;
        *D.30878 = tblock;
        <D.34607>:
        D.30841 = cfg->real_offset;
        tblock->real_offset = D.30841;
        <D.34592>:
        D.34372 = ins->data.op[1].many_blocks;
        D.34375 = D.34372 + 8;
        *D.34375 = tblock;
        start_new_bblock = 2;
        sp = stack_start;
        inline_costs = inline_costs + 10;
        goto <D.27670>;
      }
      <D.27901>:
      <D.27902>:
      <D.27903>:
      <D.27904>:
      <D.27905>:
      <D.27906>:
      <D.27907>:
      <D.27908>:
      <D.27909>:
      <D.27910>:
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.34608>; else goto <D.34609>;
      <D.34608>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34610>; else goto <D.34611>;
      <D.34610>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.34612>; else goto <D.34613>;
      <D.34612>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34613>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34611>:
      D.34614 = mini_get_debug_options ();
      D.34615 = D.34614->break_on_unverified;
      if (D.34615 != 0) goto <D.34616>; else goto unverified;
      <D.34616>:
      __asm__ __volatile__("int $03");
      <D.34609>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 15) goto <D.34617>; else goto <D.34618>;
      <D.34617>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34619>; else goto <D.34620>;
      <D.34619>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.34621>; else goto <D.34622>;
      <D.34621>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34622>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34620>:
      D.34623 = mini_get_debug_options ();
      D.34624 = D.34623->break_on_unverified;
      if (D.34624 != 0) goto <D.34625>; else goto unverified;
      <D.34625>:
      __asm__ __volatile__("int $03");
      <D.34618>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.34336 = (short unsigned int) D.31560;
      ins->opcode = D.34336;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ip = ip + 1;
      D.32204 = MEM[(const guint32 *)ip];
      D.34420 = (int) D.32204;
      D.34421 = (sizetype) D.34420;
      D.34422 = D.34421 + 4;
      target = ip + D.34422;
      ip = ip + 4;
      {
        struct MonoInst * cmp;

        sp = sp + 18446744073709551600;
        D.30673 = cfg->mempool;
        cmp = mono_mempool_alloc (D.30673, 80);
        cmp->data.op[1].const_val = 0;
        D.34626 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.34626;
        cmp->prev = 0B;
        D.34627 = cmp->prev;
        cmp->next = D.34627;
        cmp->opcode = 322;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.34628 = cmp->sreg3;
        cmp->sreg2 = D.34628;
        D.34629 = cmp->sreg2;
        cmp->sreg1 = D.34629;
        D.30898 = cfg->ip;
        cmp->cil_code = D.30898;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        cmp->sreg1 = D.31862;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.32790 = D.32789->dreg;
        cmp->sreg2 = D.32790;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.31680 = *sp;
        type_from_op (cmp, D.31680, D.32789);
        D.34630 = cmp->type;
        if (D.34630 == 0) goto <D.34631>; else goto <D.34632>;
        <D.34631>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34633>; else goto <D.34634>;
        <D.34633>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34635>; else goto <D.34636>;
        <D.34635>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34636>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34634>:
        D.34637 = mini_get_debug_options ();
        D.34638 = D.34637->break_on_unverified;
        if (D.34638 != 0) goto <D.34639>; else goto unverified;
        <D.34639>:
        __asm__ __volatile__("int $03");
        <D.34632>:
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.31680 = *sp;
        type_from_op (ins, D.31680, D.32789);
        D.30673 = cfg->mempool;
        D.34640 = mono_mempool_alloc (D.30673, 16);
        ins->data.op[1].many_blocks = D.34640;
        D.30804 = cfg->cil_offset_to_bb;
        target.135 = (long int) target;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.34283 = target.135 - D.30810;
        D.34284 = (long unsigned int) D.34283;
        D.34285 = D.34284 * 8;
        D.34286 = D.30804 + D.34285;
        tblock = *D.34286;
        if (tblock == 0B) goto <D.34641>; else goto <D.34642>;
        <D.34641>:
        if (target >= end) goto <D.34643>; else goto <D.34645>;
        <D.34645>:
        D.30821 = header->code;
        if (D.30821 > target) goto <D.34643>; else goto <D.34644>;
        <D.34643>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34646>; else goto <D.34647>;
        <D.34646>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34648>; else goto <D.34649>;
        <D.34648>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34649>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34647>:
        D.34650 = mini_get_debug_options ();
        D.34651 = D.34650->break_on_unverified;
        if (D.34651 != 0) goto <D.34652>; else goto unverified;
        <D.34652>:
        __asm__ __volatile__("int $03");
        <D.34644>:
        D.30673 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.34653 = D.30781;
        D.34654 = D.34653 + 1;
        cfg->num_bblocks = D.34654;
        D.34655 = (int) D.34653;
        tblock->block_num = D.34655;
        tblock->cil_code = target;
        D.30871 = tblock->cil_code;
        if (D.30871 != 0B) goto <D.34656>; else goto <D.34657>;
        <D.34656>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30871 = tblock->cil_code;
        D.30874 = (long int) D.30871;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30875 = D.30874 - D.30810;
        D.30876 = (long unsigned int) D.30875;
        D.30877 = D.30876 * 8;
        D.30878 = D.30804 + D.30877;
        *D.30878 = tblock;
        <D.34657>:
        D.30841 = cfg->real_offset;
        tblock->real_offset = D.30841;
        <D.34642>:
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, tblock);
        D.34372 = ins->data.op[1].many_blocks;
        *D.34372 = tblock;
        if (0 != 0) goto <D.34658>; else goto <D.34659>;
        <D.34658>:
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, 0B);
        D.34372 = ins->data.op[1].many_blocks;
        D.34375 = D.34372 + 8;
        *D.34375 = 0B;
        start_new_bblock = 1;
        goto <D.34660>;
        <D.34659>:
        D.30804 = cfg->cil_offset_to_bb;
        ip.75 = (long int) ip;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.31387 = ip.75 - D.30810;
        D.31388 = (long unsigned int) D.31387;
        D.31389 = D.31388 * 8;
        D.31390 = D.30804 + D.31389;
        tblock = *D.31390;
        if (tblock == 0B) goto <D.34661>; else goto <D.34662>;
        <D.34661>:
        if (ip >= end) goto <D.34663>; else goto <D.34665>;
        <D.34665>:
        D.30821 = header->code;
        if (D.30821 > ip) goto <D.34663>; else goto <D.34664>;
        <D.34663>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34666>; else goto <D.34667>;
        <D.34666>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34668>; else goto <D.34669>;
        <D.34668>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34669>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34667>:
        D.34670 = mini_get_debug_options ();
        D.34671 = D.34670->break_on_unverified;
        if (D.34671 != 0) goto <D.34672>; else goto unverified;
        <D.34672>:
        __asm__ __volatile__("int $03");
        <D.34664>:
        D.30673 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.34673 = D.30781;
        D.34674 = D.34673 + 1;
        cfg->num_bblocks = D.34674;
        D.34675 = (int) D.34673;
        tblock->block_num = D.34675;
        tblock->cil_code = ip;
        D.30871 = tblock->cil_code;
        if (D.30871 != 0B) goto <D.34676>; else goto <D.34677>;
        <D.34676>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30871 = tblock->cil_code;
        D.30874 = (long int) D.30871;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30875 = D.30874 - D.30810;
        D.30876 = (long unsigned int) D.30875;
        D.30877 = D.30876 * 8;
        D.30878 = D.30804 + D.30877;
        *D.30878 = tblock;
        <D.34677>:
        D.30841 = cfg->real_offset;
        tblock->real_offset = D.30841;
        <D.34662>:
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, tblock);
        D.34372 = ins->data.op[1].many_blocks;
        D.34375 = D.34372 + 8;
        *D.34375 = tblock;
        start_new_bblock = 2;
        <D.34660>:
        if (sp != stack_start) goto <D.34678>; else goto <D.34679>;
        <D.34678>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31453 = (int) D.31452;
        handle_stack_args (cfg, stack_start, D.31453);
        D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
        D.31455 = D.31454 & 32;
        if (D.31455 != 0) goto <D.34680>; else goto <D.34681>;
        <D.34680>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34682>; else goto <D.34683>;
        <D.34682>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34684>; else goto <D.34685>;
        <D.34684>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34685>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34683>:
        D.34686 = mini_get_debug_options ();
        D.34687 = D.34686->break_on_unverified;
        if (D.34687 != 0) goto <D.34688>; else goto unverified;
        <D.34688>:
        __asm__ __volatile__("int $03");
        <D.34681>:
        <D.34679>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.34689>; else goto <D.34690>;
        <D.34689>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = cmp;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        cmp->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = cmp;
        goto <D.34691>;
        <D.34690>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = cmp;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.34691>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.34692>; else goto <D.34693>;
        <D.34692>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.34694>;
        <D.34693>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.34694>:
      }
      sp = stack_start;
      inline_costs = inline_costs + 10;
      goto <D.27670>;
      <D.27912>:
      {
        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.34695 = alloc_preg (cfg);
        offset_reg = (int) D.34695;
        D.34696 = alloc_preg (cfg);
        target_reg = (int) D.34696;
        D.34697 = alloc_preg (cfg);
        table_reg = (int) D.34697;
        D.34698 = alloc_preg (cfg);
        sum_reg = (int) D.34698;
        D.32104 = ip + 5;
        if (D.32104 > end) goto <D.34699>; else goto <D.34700>;
        <D.34699>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34701>; else goto <D.34702>;
        <D.34701>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34703>; else goto <D.34704>;
        <D.34703>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34704>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34702>:
        D.34705 = mini_get_debug_options ();
        D.34706 = D.34705->break_on_unverified;
        if (D.34706 != 0) goto <D.34707>; else goto unverified;
        <D.34707>:
        __asm__ __volatile__("int $03");
        <D.34700>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.34708>; else goto <D.34709>;
        <D.34708>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34710>; else goto <D.34711>;
        <D.34710>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34712>; else goto <D.34713>;
        <D.34712>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34713>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34711>:
        D.34714 = mini_get_debug_options ();
        D.34715 = D.34714->break_on_unverified;
        if (D.34715 != 0) goto <D.34716>; else goto unverified;
        <D.34716>:
        __asm__ __volatile__("int $03");
        <D.34709>:
        D.32123 = ip + 1;
        D.32124 = *D.32123;
        n = (int) D.32124;
        sp = sp + 18446744073709551608;
        src1 = *sp;
        D.34717 = src1->type;
        D.34718 = D.34717 != 1;
        D.34719 = D.34717 != 3;
        D.34720 = D.34718 & D.34719;
        if (D.34720 != 0) goto <D.34721>; else goto <D.34722>;
        <D.34721>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34723>; else goto <D.34724>;
        <D.34723>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34725>; else goto <D.34726>;
        <D.34725>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34726>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34724>:
        D.34727 = mini_get_debug_options ();
        D.34728 = D.34727->break_on_unverified;
        if (D.34728 != 0) goto <D.34729>; else goto unverified;
        <D.34729>:
        __asm__ __volatile__("int $03");
        <D.34722>:
        ip = ip + 5;
        D.31606 = (long unsigned int) n;
        D.34730 = D.31606 * 4;
        D.34731 = ip + D.34730;
        if (D.34731 > end) goto <D.34732>; else goto <D.34733>;
        <D.34732>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34734>; else goto <D.34735>;
        <D.34734>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34736>; else goto <D.34737>;
        <D.34736>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34737>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34735>:
        D.34738 = mini_get_debug_options ();
        D.34739 = D.34738->break_on_unverified;
        if (D.34739 != 0) goto <D.34740>; else goto unverified;
        <D.34740>:
        __asm__ __volatile__("int $03");
        <D.34733>:
        D.31606 = (long unsigned int) n;
        D.34730 = D.31606 * 4;
        target = ip + D.34730;
        D.30804 = cfg->cil_offset_to_bb;
        target.135 = (long int) target;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.34283 = target.135 - D.30810;
        D.34284 = (long unsigned int) D.34283;
        D.34285 = D.34284 * 8;
        D.34286 = D.30804 + D.34285;
        default_bblock = *D.34286;
        if (default_bblock == 0B) goto <D.34741>; else goto <D.34742>;
        <D.34741>:
        if (target >= end) goto <D.34743>; else goto <D.34745>;
        <D.34745>:
        D.30821 = header->code;
        if (D.30821 > target) goto <D.34743>; else goto <D.34744>;
        <D.34743>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34746>; else goto <D.34747>;
        <D.34746>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34748>; else goto <D.34749>;
        <D.34748>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34749>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34747>:
        D.34750 = mini_get_debug_options ();
        D.34751 = D.34750->break_on_unverified;
        if (D.34751 != 0) goto <D.34752>; else goto unverified;
        <D.34752>:
        __asm__ __volatile__("int $03");
        <D.34744>:
        D.30673 = cfg->mempool;
        default_bblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.34753 = D.30781;
        D.34754 = D.34753 + 1;
        cfg->num_bblocks = D.34754;
        D.34755 = (int) D.34753;
        default_bblock->block_num = D.34755;
        default_bblock->cil_code = target;
        D.34756 = default_bblock->cil_code;
        if (D.34756 != 0B) goto <D.34757>; else goto <D.34758>;
        <D.34757>:
        D.30804 = cfg->cil_offset_to_bb;
        D.34756 = default_bblock->cil_code;
        D.34759 = (long int) D.34756;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.34760 = D.34759 - D.30810;
        D.34761 = (long unsigned int) D.34760;
        D.34762 = D.34761 * 8;
        D.34763 = D.30804 + D.34762;
        *D.34763 = default_bblock;
        <D.34758>:
        D.30841 = cfg->real_offset;
        default_bblock->real_offset = D.30841;
        <D.34742>:
        D.34764 = default_bblock->flags;
        D.34765 = D.34764 | 32;
        default_bblock->flags = D.34765;
        D.31606 = (long unsigned int) n;
        D.34766 = (unsigned int) D.31606;
        D.34767 = D.34766 * 8;
        D.30673 = cfg->mempool;
        targets = mono_mempool_alloc (D.30673, D.34767);
        i = 0;
        goto <D.27923>;
        <D.27922>:
        D.30804 = cfg->cil_offset_to_bb;
        D.32204 = MEM[(const guint32 *)ip];
        D.34420 = (int) D.32204;
        D.34421 = (sizetype) D.34420;
        D.34768 = target + D.34421;
        D.34769 = (long int) D.34768;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.34770 = D.34769 - D.30810;
        D.34771 = (long unsigned int) D.34770;
        D.34772 = D.34771 * 8;
        D.34773 = D.30804 + D.34772;
        tblock = *D.34773;
        if (tblock == 0B) goto <D.34774>; else goto <D.34775>;
        <D.34774>:
        D.32204 = MEM[(const guint32 *)ip];
        D.34420 = (int) D.32204;
        D.34421 = (sizetype) D.34420;
        D.34768 = target + D.34421;
        if (D.34768 >= end) goto <D.34776>; else goto <D.34778>;
        <D.34778>:
        D.32204 = MEM[(const guint32 *)ip];
        D.34420 = (int) D.32204;
        D.34421 = (sizetype) D.34420;
        D.34779 = target + D.34421;
        D.30821 = header->code;
        if (D.34779 < D.30821) goto <D.34776>; else goto <D.34777>;
        <D.34776>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34780>; else goto <D.34781>;
        <D.34780>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.34782>; else goto <D.34783>;
        <D.34782>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.34783>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.34781>:
        D.34784 = mini_get_debug_options ();
        D.34785 = D.34784->break_on_unverified;
        if (D.34785 != 0) goto <D.34786>; else goto unverified;
        <D.34786>:
        __asm__ __volatile__("int $03");
        <D.34777>:
        D.30673 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.34787 = D.30781;
        D.34788 = D.34787 + 1;
        cfg->num_bblocks = D.34788;
        D.34789 = (int) D.34787;
        tblock->block_num = D.34789;
        D.32204 = MEM[(const guint32 *)ip];
        D.34420 = (int) D.32204;
        D.34421 = (sizetype) D.34420;
        D.34768 = target + D.34421;
        tblock->cil_code = D.34768;
        D.30871 = tblock->cil_code;
        if (D.30871 != 0B) goto <D.34790>; else goto <D.34791>;
        <D.34790>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30871 = tblock->cil_code;
        D.30874 = (long int) D.30871;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30875 = D.30874 - D.30810;
        D.30876 = (long unsigned int) D.30875;
        D.30877 = D.30876 * 8;
        D.30878 = D.30804 + D.30877;
        *D.30878 = tblock;
        <D.34791>:
        D.30841 = cfg->real_offset;
        tblock->real_offset = D.30841;
        <D.34775>:
        D.30802 = (long unsigned int) i;
        D.31411 = D.30802 * 8;
        D.34792 = targets + D.31411;
        *D.34792 = tblock;
        D.30802 = (long unsigned int) i;
        D.31411 = D.30802 * 8;
        D.34792 = targets + D.31411;
        D.34793 = *D.34792;
        D.30802 = (long unsigned int) i;
        D.31411 = D.30802 * 8;
        D.34792 = targets + D.31411;
        D.34793 = *D.34792;
        D.34794 = D.34793->flags;
        D.34795 = D.34794 | 32;
        D.34793->flags = D.34795;
        ip = ip + 4;
        i = i + 1;
        <D.27923>:
        if (i < n) goto <D.27922>; else goto <D.27924>;
        <D.27924>:
        if (sp != stack_start) goto <D.34796>; else goto <D.34797>;
        <D.34796>:
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, default_bblock);
        i = 0;
        goto <D.27926>;
        <D.27925>:
        D.30802 = (long unsigned int) i;
        D.31411 = D.30802 * 8;
        D.34792 = targets + D.31411;
        D.34793 = *D.34792;
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, D.34793);
        i = i + 1;
        <D.27926>:
        if (i < n) goto <D.27925>; else goto <D.27927>;
        <D.27927>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31453 = (int) D.31452;
        handle_stack_args (cfg, stack_start, D.31453);
        sp = stack_start;
        D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
        D.31455 = D.31454 & 32;
        if (D.31455 != 0) goto <D.34798>; else goto <D.34799>;
        <D.34798>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.34800>; else goto <D.34801>;
        <D.34800>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 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>:
        __asm__ __volatile__("int $03");
        <D.34799>:
        <D.34797>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.34807 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34807;
          inst->prev = 0B;
          D.34808 = inst->prev;
          inst->next = D.34808;
          inst->opcode = 327;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34809 = inst->sreg3;
          inst->sreg2 = D.34809;
          D.34810 = inst->sreg2;
          inst->sreg1 = D.34810;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = -1;
          D.34811 = src1->dreg;
          inst->sreg1 = D.34811;
          D.32681 = (long int) n;
          inst->data.op[1].const_val = D.32681;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34812>; else goto <D.34813>;
          <D.34812>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.34814>;
          <D.34813>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34814>:
        }
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.34815 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.34815;
          ins->prev = 0B;
          D.34816 = ins->prev;
          ins->next = D.34816;
          ins->opcode = 658;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.34817 = ins->sreg3;
          ins->sreg2 = D.34817;
          D.34818 = ins->sreg2;
          ins->sreg1 = D.34818;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          if (0 != 0) goto <D.34819>; else goto <D.34820>;
          <D.34819>:
          D.30673 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.30673, 296);
          D.30781 = cfg->num_bblocks;
          D.34821 = D.30781;
          D.34822 = D.34821 + 1;
          cfg->num_bblocks = D.34822;
          D.34823 = (int) D.34821;
          falsebb->block_num = D.34823;
          ins->data.op[0].target_block = default_bblock;
          bblock.113 = cfg->cbb;
          mono_link_bblock (cfg, bblock.113, default_bblock);
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34824>; else goto <D.34825>;
          <D.34824>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.34826>;
          <D.34825>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34826>:
          D.34827 = falsebb->cil_code;
          if (D.34827 != 0B) goto <D.34828>; else goto <D.34829>;
          <D.34828>:
          D.30804 = cfg->cil_offset_to_bb;
          D.34827 = falsebb->cil_code;
          D.34830 = (long int) D.34827;
          D.30809 = cfg->cil_start;
          D.30810 = (long int) D.30809;
          D.34831 = D.34830 - D.30810;
          D.34832 = (long unsigned int) D.34831;
          D.34833 = D.34832 * 8;
          D.34834 = D.30804 + D.34833;
          *D.34834 = falsebb;
          <D.34829>:
          D.30841 = cfg->real_offset;
          falsebb->real_offset = D.30841;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34838>; else goto <D.34835>;
          <D.34838>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34839 = D.30927->opcode;
          D.34840 = D.34839 + 64981;
          D.34841 = D.34840 <= 9;
          D.34842 = D.34839 + 64874;
          D.34843 = D.34842 <= 9;
          D.34844 = D.34841 | D.34843;
          if (D.34844 != 0) goto <D.34836>; else goto <D.34845>;
          <D.34845>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34846 = D.30927->opcode;
          D.34847 = D.34846 + 64884;
          if (D.34847 <= 9) goto <D.34836>; else goto <D.34835>;
          <D.34836>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34848 = D.30927->data.op[1].many_blocks;
          D.34849 = D.34848 + 8;
          D.34850 = *D.34849;
          if (D.34850 == 0B) goto <D.34851>; else goto <D.34835>;
          <D.34851>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34848 = D.30927->data.op[1].many_blocks;
          D.34849 = D.34848 + 8;
          *D.34849 = falsebb;
          bblock.113 = cfg->cbb;
          mono_link_bblock (cfg, bblock.113, falsebb);
          goto <D.34837>;
          <D.34835>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 == 0B) goto <D.34852>; else goto <D.34854>;
          <D.34854>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34855 = D.30927->opcode;
          D.34856 = D.34855 != 446;
          D.34857 = D.34855 != 763;
          D.34858 = D.34856 & D.34857;
          if (D.34858 != 0) goto <D.34859>; else goto <D.34853>;
          <D.34859>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34860 = D.30927->opcode;
          D.34861 = D.34860 + 64981;
          D.34862 = D.34861 > 9;
          D.34863 = D.34860 + 64874;
          D.34864 = D.34863 > 9;
          D.34865 = D.34862 & D.34864;
          if (D.34865 != 0) goto <D.34866>; else goto <D.34853>;
          <D.34866>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34846 = D.30927->opcode;
          D.34847 = D.34846 + 64884;
          if (D.34847 > 9) goto <D.34852>; else goto <D.34853>;
          <D.34852>:
          bblock.113 = cfg->cbb;
          mono_link_bblock (cfg, bblock.113, falsebb);
          <D.34853>:
          <D.34837>:
          bblock.113 = cfg->cbb;
          bblock.113->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.34867>;
          <D.34820>:
          D.30673 = cfg->mempool;
          D.34868 = mono_mempool_alloc (D.30673, 16);
          ins->data.op[1].many_blocks = D.34868;
          D.34869 = ins->data.op[1].many_blocks;
          *D.34869 = default_bblock;
          D.34869 = ins->data.op[1].many_blocks;
          D.34870 = D.34869 + 8;
          *D.34870 = 0B;
          bblock.113 = cfg->cbb;
          mono_link_bblock (cfg, bblock.113, default_bblock);
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34871>; else goto <D.34872>;
          <D.34871>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.34873>;
          <D.34872>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34873>:
          D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.34874 = D.31072 & 8;
          if (D.34874 == 0) goto <D.34875>; else goto <D.34876>;
          <D.34875>:
          D.30673 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.30673, 296);
          D.30781 = cfg->num_bblocks;
          D.34877 = D.30781;
          D.34878 = D.34877 + 1;
          cfg->num_bblocks = D.34878;
          D.34879 = (int) D.34877;
          falsebb->block_num = D.34879;
          D.34869 = ins->data.op[1].many_blocks;
          D.34870 = D.34869 + 8;
          *D.34870 = falsebb;
          bblock.113 = cfg->cbb;
          mono_link_bblock (cfg, bblock.113, falsebb);
          D.34827 = falsebb->cil_code;
          if (D.34827 != 0B) goto <D.34880>; else goto <D.34881>;
          <D.34880>:
          D.30804 = cfg->cil_offset_to_bb;
          D.34827 = falsebb->cil_code;
          D.34830 = (long int) D.34827;
          D.30809 = cfg->cil_start;
          D.30810 = (long int) D.30809;
          D.34831 = D.34830 - D.30810;
          D.34832 = (long unsigned int) D.34831;
          D.34833 = D.34832 * 8;
          D.34834 = D.30804 + D.34833;
          *D.34834 = falsebb;
          <D.34881>:
          D.30841 = cfg->real_offset;
          falsebb->real_offset = D.30841;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34885>; else goto <D.34882>;
          <D.34885>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34886 = D.30927->opcode;
          D.34887 = D.34886 + 64981;
          D.34888 = D.34887 <= 9;
          D.34889 = D.34886 + 64874;
          D.34890 = D.34889 <= 9;
          D.34891 = D.34888 | D.34890;
          if (D.34891 != 0) goto <D.34883>; else goto <D.34892>;
          <D.34892>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34846 = D.30927->opcode;
          D.34847 = D.34846 + 64884;
          if (D.34847 <= 9) goto <D.34883>; else goto <D.34882>;
          <D.34883>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34848 = D.30927->data.op[1].many_blocks;
          D.34849 = D.34848 + 8;
          D.34850 = *D.34849;
          if (D.34850 == 0B) goto <D.34893>; else goto <D.34882>;
          <D.34893>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34848 = D.30927->data.op[1].many_blocks;
          D.34849 = D.34848 + 8;
          *D.34849 = falsebb;
          bblock.113 = cfg->cbb;
          mono_link_bblock (cfg, bblock.113, falsebb);
          goto <D.34884>;
          <D.34882>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 == 0B) goto <D.34894>; else goto <D.34896>;
          <D.34896>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34897 = D.30927->opcode;
          D.34898 = D.34897 != 446;
          D.34899 = D.34897 != 763;
          D.34900 = D.34898 & D.34899;
          if (D.34900 != 0) goto <D.34901>; else goto <D.34895>;
          <D.34901>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34902 = D.30927->opcode;
          D.34903 = D.34902 + 64981;
          D.34904 = D.34903 > 9;
          D.34905 = D.34902 + 64874;
          D.34906 = D.34905 > 9;
          D.34907 = D.34904 & D.34906;
          if (D.34907 != 0) goto <D.34908>; else goto <D.34895>;
          <D.34908>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.34846 = D.30927->opcode;
          D.34847 = D.34846 + 64884;
          if (D.34847 > 9) goto <D.34894>; else goto <D.34895>;
          <D.34894>:
          bblock.113 = cfg->cbb;
          mono_link_bblock (cfg, bblock.113, falsebb);
          <D.34895>:
          <D.34884>:
          bblock.113 = cfg->cbb;
          bblock.113->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.34909>;
          <D.34876>:
          bblock.113 = cfg->cbb;
          bblock.113->extended = 1;
          <D.34909>:
          <D.34867>:
        }
        bblock.113 = cfg->cbb;
        bblock = bblock.113;
        i = 0;
        goto <D.27932>;
        <D.27931>:
        D.30802 = (long unsigned int) i;
        D.31411 = D.30802 * 8;
        D.34792 = targets + D.31411;
        D.34793 = *D.34792;
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, D.34793);
        i = i + 1;
        <D.27932>:
        if (i < n) goto <D.27931>; else goto <D.27933>;
        <D.27933>:
        D.30673 = cfg->mempool;
        table = mono_mempool_alloc (D.30673, 16);
        table->table = targets;
        table->table_size = n;
        use_op_switch = 0;
        if (0 != 0) goto <D.34910>; else goto <D.34911>;
        <D.34910>:
        use_op_switch = 1;
        <D.34911>:
        bblock.113 = cfg->cbb;
        bblock.113->has_jump_table = 1;
        if (use_op_switch != 0) goto <D.34912>; else goto <D.34913>;
        <D.34912>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 370;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.34811 = src1->dreg;
        ins->sreg1 = D.34811;
        ins->data.op[0].p = table;
        ins->data.op[1].many_blocks = targets;
        D.31606 = (long unsigned int) n;
        D.34914 = (struct MonoClass *) D.31606;
        ins->klass = D.34914;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.34915>; else goto <D.34916>;
        <D.34915>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.34917>;
        <D.34916>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.34917>:
        goto <D.34918>;
        <D.34913>:
        if (1 != 0) goto <D.34919>; else goto <D.34920>;
        <D.34919>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.34921 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34921;
          inst->prev = 0B;
          D.34922 = inst->prev;
          inst->next = D.34922;
          inst->opcode = 443;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34923 = inst->sreg3;
          inst->sreg2 = D.34923;
          D.34924 = inst->sreg2;
          inst->sreg1 = D.34924;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = offset_reg;
          D.34811 = src1->dreg;
          inst->sreg1 = D.34811;
          inst->data.op[1].const_val = 3;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34925>; else goto <D.34926>;
          <D.34925>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.34927>;
          <D.34926>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34927>:
        }
        goto <D.34928>;
        <D.34920>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.34929 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34929;
          inst->prev = 0B;
          D.34930 = inst->prev;
          inst->next = D.34930;
          inst->opcode = 443;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34931 = inst->sreg3;
          inst->sreg2 = D.34931;
          D.34932 = inst->sreg2;
          inst->sreg1 = D.34932;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = offset_reg;
          D.34811 = src1->dreg;
          inst->sreg1 = D.34811;
          inst->data.op[1].const_val = 2;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34933>; else goto <D.34934>;
          <D.34933>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.34935>;
          <D.34934>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34935>:
        }
        <D.34928>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.34936 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34936;
          inst->prev = 0B;
          D.34937 = inst->prev;
          inst->next = D.34937;
          inst->opcode = 769;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34938 = inst->sreg3;
          inst->sreg2 = D.34938;
          D.34939 = inst->sreg2;
          inst->sreg1 = D.34939;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = offset_reg;
          inst->sreg1 = offset_reg;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34940>; else goto <D.34941>;
          <D.34940>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.34942>;
          <D.34941>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34942>:
        }
        D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.31073 = D.31072 & 64;
        if (D.31073 != 0) goto <D.34943>; else goto <D.34944>;
        <D.34943>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.34945 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34945;
          inst->prev = 0B;
          D.34946 = inst->prev;
          inst->next = D.34946;
          D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.31073 = D.31072 & 64;
          if (D.31073 != 0) goto <D.34948>; else goto <D.34949>;
          <D.34948>:
          iftmp.139 = 736;
          goto <D.34950>;
          <D.34949>:
          iftmp.139 = 363;
          <D.34950>:
          inst->opcode = iftmp.139;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34951 = inst->sreg3;
          inst->sreg2 = D.34951;
          D.34952 = inst->sreg2;
          inst->sreg1 = D.34952;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = table_reg;
          inst->data.op[0].p = table;
          inst->data.op[1].const_val = 8;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34953>; else goto <D.34954>;
          <D.34953>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.34955>;
          <D.34954>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34955>:
        }
        goto <D.34956>;
        <D.34944>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 735;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->data.op[1].const_val = 8;
        ins->data.op[0].p = table;
        ins->dreg = table_reg;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.34957>; else goto <D.34958>;
        <D.34957>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.34959>;
        <D.34958>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.34959>:
        <D.34956>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.34960 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34960;
          inst->prev = 0B;
          D.34961 = inst->prev;
          inst->next = D.34961;
          inst->opcode = 483;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34962 = inst->sreg3;
          inst->sreg2 = D.34962;
          D.34963 = inst->sreg2;
          inst->sreg1 = D.34963;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = sum_reg;
          inst->sreg1 = table_reg;
          inst->sreg2 = offset_reg;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34964>; else goto <D.34965>;
          <D.34964>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.34966>;
          <D.34965>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34966>:
        }
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.34967 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34967;
          inst->prev = 0B;
          D.34968 = inst->prev;
          inst->next = D.34968;
          inst->opcode = 391;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34969 = inst->sreg3;
          inst->sreg2 = D.34969;
          D.34970 = inst->sreg2;
          inst->sreg1 = D.34970;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = target_reg;
          inst->sreg1 = sum_reg;
          inst->data.op[0].const_val = 0;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34971>; else goto <D.34972>;
          <D.34971>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.34973>;
          <D.34972>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34973>:
        }
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.34974 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.34974;
          inst->prev = 0B;
          D.34975 = inst->prev;
          inst->next = D.34975;
          inst->opcode = 763;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.34976 = inst->sreg3;
          inst->sreg2 = D.34976;
          D.34977 = inst->sreg2;
          inst->sreg1 = D.34977;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = -1;
          inst->sreg1 = target_reg;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.34978>; else goto <D.34979>;
          <D.34978>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.34980>;
          <D.34979>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.34980>:
        }
        <D.34918>:
        start_new_bblock = 1;
        inline_costs = inline_costs + 20;
        goto <D.27670>;
      }
      <D.27941>:
      <D.27942>:
      <D.27943>:
      <D.27944>:
      <D.27945>:
      <D.27946>:
      <D.27947>:
      <D.27948>:
      <D.27949>:
      <D.27950>:
      <D.27951>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.34981>; else goto <D.34982>;
      <D.34981>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.34983>; else goto <D.34984>;
      <D.34983>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.34985>; else goto <D.34986>;
      <D.34985>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.34986>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.34984>:
      D.34987 = mini_get_debug_options ();
      D.34988 = D.34987->break_on_unverified;
      if (D.34988 != 0) goto <D.34989>; else goto unverified;
      <D.34989>:
      __asm__ __volatile__("int $03");
      <D.34982>:
      sp = sp + 18446744073709551608;
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      switch (D.31561) <default: <D.27957>, case 76: <D.27955>, case 78: <D.27952>, case 79: <D.27953>, case 80: <D.27956>>
      <D.27952>:
      <D.27953>:
      D.34990 = alloc_freg (cfg);
      dreg = (int) D.34990;
      goto <D.27954>;
      <D.27955>:
      D.34991 = alloc_lreg (cfg);
      dreg = (int) D.34991;
      goto <D.27954>;
      <D.27956>:
      D.34992 = alloc_ireg_ref (cfg);
      dreg = (int) D.34992;
      goto <D.27954>;
      <D.27957>:
      D.34993 = alloc_preg (cfg);
      dreg = (int) D.34993;
      <D.27954>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      D.34994 = ldind_to_load_membase (D.31561);
      D.34995 = (short unsigned int) D.34994;
      ins->opcode = D.34995;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ins->dreg = dreg;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      D.34996 = D.31561 + -70;
      D.34997 = ldind_type[D.34996];
      D.34998 = (unsigned char) D.34997;
      ins->type = D.34998;
      D.31527 = ins->flags;
      D.34999 = (unsigned char) ins_flag;
      D.35000 = D.31527 | D.34999;
      ins->flags = D.35000;
      ins_flag = 0;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.35001>; else goto <D.35002>;
      <D.35001>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.35003>;
      <D.35002>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.35003>:
      sp.140 = sp;
      sp = sp.140 + 8;
      *sp.140 = ins;
      D.31527 = ins->flags;
      D.35005 = (int) D.31527;
      D.35006 = D.35005 & 4;
      if (D.35006 != 0) goto <D.35007>; else goto <D.35008>;
      <D.35007>:
      emit_memory_barrier (cfg, 4);
      <D.35008>:
      ip = ip + 1;
      goto <D.27670>;
      <D.27958>:
      <D.27959>:
      <D.27960>:
      <D.27961>:
      <D.27962>:
      <D.27963>:
      <D.27964>:
      <D.27965>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 15) goto <D.35009>; else goto <D.35010>;
      <D.35009>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35011>; else goto <D.35012>;
      <D.35011>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35013>; else goto <D.35014>;
      <D.35013>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35014>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35012>:
      D.35015 = mini_get_debug_options ();
      D.35016 = D.35015->break_on_unverified;
      if (D.35016 != 0) goto <D.35017>; else goto unverified;
      <D.35017>:
      __asm__ __volatile__("int $03");
      <D.35010>:
      sp = sp + 18446744073709551600;
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      D.35018 = stind_to_store_membase (D.31561);
      D.35019 = (short unsigned int) D.35018;
      ins->opcode = D.35019;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.32790 = D.32789->dreg;
      ins->sreg1 = D.32790;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->dreg = D.31862;
      ins->data.op[0].const_val = 0;
      D.31527 = ins->flags;
      D.34999 = (unsigned char) ins_flag;
      D.35000 = D.31527 | D.34999;
      ins->flags = D.35000;
      ins_flag = 0;
      D.31527 = ins->flags;
      D.35005 = (int) D.31527;
      D.35006 = D.35005 & 4;
      if (D.35006 != 0) goto <D.35020>; else goto <D.35021>;
      <D.35020>:
      emit_memory_barrier (cfg, 4);
      <D.35021>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.35022>; else goto <D.35023>;
      <D.35022>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.35024>;
      <D.35023>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.35024>:
      D.33854 = BIT_FIELD_REF <*cfg, 8, 5624>;
      D.33855 = D.33854 & 16;
      if (D.33855 != 0) goto <D.35027>; else goto <D.35028>;
      <D.35027>:
      D.31560 = *ip;
      if (D.31560 == 81) goto <D.35029>; else goto <D.35030>;
      <D.35029>:
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      if (D.30615 != 96) goto <D.35031>; else goto <D.35032>;
      <D.35031>:
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.35033 = D.32789->opcode;
      if (D.35033 != 363) goto <D.35025>; else goto <D.35034>;
      <D.35034>:
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.35035 = D.32789->data.op[0].p;
      if (D.35035 != 0B) goto <D.35025>; else goto <D.35026>;
      <D.35025>:
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.31680 = *sp;
      emit_write_barrier (cfg, D.31680, D.32789);
      <D.35026>:
      <D.35032>:
      <D.35030>:
      <D.35028>:
      inline_costs = inline_costs + 1;
      ip = ip + 1;
      goto <D.27670>;
      <D.27966>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 15) goto <D.35036>; else goto <D.35037>;
      <D.35036>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35038>; else goto <D.35039>;
      <D.35038>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35040>; else goto <D.35041>;
      <D.35040>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35041>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35039>:
      D.35042 = mini_get_debug_options ();
      D.35043 = D.35042->break_on_unverified;
      if (D.35043 != 0) goto <D.35044>; else goto unverified;
      <D.35044>:
      __asm__ __volatile__("int $03");
      <D.35037>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.34336 = (short unsigned int) D.31560;
      ins->opcode = D.34336;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551600;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.32790 = D.32789->dreg;
      ins->sreg2 = D.32790;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.31680 = *sp;
      type_from_op (ins, D.31680, D.32789);
      D.31426 = ins->type;
      if (D.31426 == 0) goto <D.35045>; else goto <D.35046>;
      <D.35045>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35047>; else goto <D.35048>;
      <D.35047>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35049>; else goto <D.35050>;
      <D.35049>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35050>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35048>:
      D.35051 = mini_get_debug_options ();
      D.35052 = D.35051->break_on_unverified;
      if (D.35052 != 0) goto <D.35053>; else goto unverified;
      <D.35053>:
      __asm__ __volatile__("int $03");
      <D.35046>:
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.35054 = alloc_dreg (cfg, D.31427);
      D.35055 = (int) D.35054;
      ins->dreg = D.35055;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.35033 = D.32789->opcode;
      if (D.35033 == 362) goto <D.35056>; else goto <D.35057>;
      <D.35056>:
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.35058 = D.32789->data.op[0].const_val;
      D.35059 = mono_arch_is_inst_imm (D.35058);
      if (D.35059 != 0) goto <D.35060>; else goto <D.35061>;
      <D.35060>:
      {
        int imm_opcode;

        D.31430 = ins->opcode;
        D.35062 = (int) D.31430;
        imm_opcode = mono_op_to_op_imm_noemul (D.35062);
        if (imm_opcode != -1) goto <D.35063>; else goto <D.35064>;
        <D.35063>:
        D.35065 = (short unsigned int) imm_opcode;
        ins->opcode = D.35065;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.35058 = D.32789->data.op[0].const_val;
        D.35066 = (void *) D.35058;
        ins->data.op[1].p = D.35066;
        ins->sreg2 = -1;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.32789->opcode = 316;
        <D.35064>:
      }
      <D.35061>:
      <D.35057>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35067>; else goto <D.35068>;
      <D.35067>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35069>;
      <D.35068>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35069>:
      sp.141 = sp;
      sp = sp.141 + 8;
      D.35071 = mono_decompose_opcode (cfg, ins);
      *sp.141 = D.35071;
      ip = ip + 1;
      goto <D.27670>;
      <D.27968>:
      <D.27969>:
      <D.27970>:
      <D.27971>:
      <D.27972>:
      <D.27973>:
      <D.27974>:
      <D.27975>:
      <D.27976>:
      <D.27977>:
      <D.27978>:
      <D.27979>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 15) goto <D.35072>; else goto <D.35073>;
      <D.35072>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35074>; else goto <D.35075>;
      <D.35074>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35076>; else goto <D.35077>;
      <D.35076>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35077>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35075>:
      D.35078 = mini_get_debug_options ();
      D.35079 = D.35078->break_on_unverified;
      if (D.35079 != 0) goto <D.35080>; else goto unverified;
      <D.35080>:
      __asm__ __volatile__("int $03");
      <D.35073>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.34336 = (short unsigned int) D.31560;
      ins->opcode = D.34336;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551600;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.32790 = D.32789->dreg;
      ins->sreg2 = D.32790;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.31680 = *sp;
      type_from_op (ins, D.31680, D.32789);
      D.31426 = ins->type;
      if (D.31426 == 0) goto <D.35081>; else goto <D.35082>;
      <D.35081>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35083>; else goto <D.35084>;
      <D.35083>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35085>; else goto <D.35086>;
      <D.35085>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35086>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35084>:
      D.35087 = mini_get_debug_options ();
      D.35088 = D.35087->break_on_unverified;
      if (D.35088 != 0) goto <D.35089>; else goto unverified;
      <D.35089>:
      __asm__ __volatile__("int $03");
      <D.35082>:
      D.31680 = *sp;
      D.33383 = D.31680->type;
      if (D.33383 == 3) goto <D.35090>; else goto <D.35091>;
      <D.35090>:
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.35092 = D.32789->type;
      if (D.35092 == 1) goto <D.35093>; else goto <D.35094>;
      <D.35093>:
      {
        struct MonoInst * widen;
        int dr;

        D.35095 = alloc_preg (cfg);
        dr = (int) D.35095;
        D.30673 = cfg->mempool;
        widen = mono_mempool_alloc (D.30673, 80);
        widen->data.op[1].const_val = 0;
        D.35096 = widen->data.op[1].const_val;
        widen->data.op[0].const_val = D.35096;
        widen->prev = 0B;
        D.35097 = widen->prev;
        widen->next = D.35097;
        widen->opcode = 766;
        widen->flags = 0;
        widen->type = 0;
        widen->dreg = -1;
        widen->sreg3 = -1;
        D.35098 = widen->sreg3;
        widen->sreg2 = D.35098;
        D.35099 = widen->sreg2;
        widen->sreg1 = D.35099;
        D.30898 = cfg->ip;
        widen->cil_code = D.30898;
        widen->dreg = dr;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.32790 = D.32789->dreg;
        widen->sreg1 = D.32790;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.35100>; else goto <D.35101>;
        <D.35100>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = widen;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        widen->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = widen;
        goto <D.35102>;
        <D.35101>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = widen;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.35102>:
        D.35103 = widen->dreg;
        ins->sreg2 = D.35103;
      }
      <D.35094>:
      <D.35091>:
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.35104 = alloc_dreg (cfg, D.31427);
      D.35105 = (int) D.35104;
      ins->dreg = D.35105;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.35033 = D.32789->opcode;
      D.35106 = D.35033 + 65174;
      if (D.35106 <= 1) goto <D.35107>; else goto <D.35108>;
      <D.35107>:
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.35033 = D.32789->opcode;
      if (D.35033 == 362) goto <D.35110>; else goto <D.35111>;
      <D.35110>:
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      iftmp.142 = D.32789->data.op[0].const_val;
      goto <D.35112>;
      <D.35111>:
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      iftmp.142 = D.32789->data.i8const;
      <D.35112>:
      D.35113 = mono_arch_is_inst_imm (iftmp.142);
      if (D.35113 != 0) goto <D.35114>; else goto <D.35115>;
      <D.35114>:
      {
        int imm_opcode;

        D.31430 = ins->opcode;
        D.35062 = (int) D.31430;
        imm_opcode = mono_op_to_op_imm_noemul (D.35062);
        if (imm_opcode != -1) goto <D.35116>; else goto <D.35117>;
        <D.35116>:
        D.35118 = (short unsigned int) imm_opcode;
        ins->opcode = D.35118;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.35033 = D.32789->opcode;
        if (D.35033 == 363) goto <D.35119>; else goto <D.35120>;
        <D.35119>:
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.35121 = D.32789->data.i8const;
        ins->data.op[1].const_val = D.35121;
        goto <D.35122>;
        <D.35120>:
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.35058 = D.32789->data.op[0].const_val;
        ins->data.op[1].const_val = D.35058;
        <D.35122>:
        ins->sreg2 = -1;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.35123 = D.32789->next;
        if (D.35123 == 0B) goto <D.35124>; else goto <D.35125>;
        <D.35124>:
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.32789->opcode = 316;
        <D.35125>:
        <D.35117>:
      }
      <D.35115>:
      <D.35108>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35126>; else goto <D.35127>;
      <D.35126>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35128>;
      <D.35127>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35128>:
      sp.143 = sp;
      sp = sp.143 + 8;
      D.35130 = mono_decompose_opcode (cfg, ins);
      *sp.143 = D.35130;
      ip = ip + 1;
      goto <D.27670>;
      <D.27983>:
      <D.27984>:
      <D.27985>:
      <D.27986>:
      <D.27987>:
      <D.27988>:
      <D.27989>:
      <D.27990>:
      <D.27991>:
      <D.27992>:
      <D.27993>:
      <D.27994>:
      <D.27995>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.35131>; else goto <D.35132>;
      <D.35131>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35133>; else goto <D.35134>;
      <D.35133>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35135>; else goto <D.35136>;
      <D.35135>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35136>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35134>:
      D.35137 = mini_get_debug_options ();
      D.35138 = D.35137->break_on_unverified;
      if (D.35138 != 0) goto <D.35139>; else goto unverified;
      <D.35139>:
      __asm__ __volatile__("int $03");
      <D.35132>:
      D.35142 = *ip;
      D.35143 = D.35142 == 106;
      D.35144 = D.35142 == 110;
      D.35145 = D.35143 | D.35144;
      if (D.35145 != 0) goto <D.35146>; else goto <D.35140>;
      <D.35146>:
      D.34484 = sp + 18446744073709551608;
      D.34485 = *D.34484;
      D.35147 = D.34485->opcode;
      if (D.35147 == 362) goto <D.35148>; else goto <D.35140>;
      <D.35148>:
      {
        int data;

        D.34484 = sp + 18446744073709551608;
        D.34485 = *D.34484;
        D.35149 = D.34485->data.op[0].const_val;
        data = (int) D.35149;
        D.34484 = sp + 18446744073709551608;
        D.34485 = *D.34484;
        D.34485->opcode = 363;
        D.34484 = sp + 18446744073709551608;
        D.34485 = *D.34484;
        D.34485->type = 2;
        D.31560 = *ip;
        if (D.31560 == 110) goto <D.35150>; else goto <D.35151>;
        <D.35150>:
        D.34484 = sp + 18446744073709551608;
        D.34485 = *D.34484;
        data.144 = (unsigned int) data;
        D.35153 = (long int) data.144;
        D.34485->data.op[0].const_val = D.35153;
        goto <D.35154>;
        <D.35151>:
        D.34484 = sp + 18446744073709551608;
        D.34485 = *D.34484;
        D.35155 = (long int) data;
        D.34485->data.op[0].const_val = D.35155;
        <D.35154>:
        D.34484 = sp + 18446744073709551608;
        D.34485 = *D.34484;
        D.35156 = alloc_dreg (cfg, 2);
        D.35157 = (int) D.35156;
        D.34485->dreg = D.35157;
      }
      goto <D.35141>;
      <D.35140>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.34336 = (short unsigned int) D.31560;
      ins->opcode = D.34336;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551608;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.31680 = *sp;
      type_from_op (ins, D.31680, 0B);
      D.31426 = ins->type;
      if (D.31426 == 0) goto <D.35158>; else goto <D.35159>;
      <D.35158>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35160>; else goto <D.35161>;
      <D.35160>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 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>:
      __asm__ __volatile__("int $03");
      <D.35159>:
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.35167 = alloc_dreg (cfg, D.31427);
      D.35168 = (int) D.35167;
      ins->dreg = D.35168;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35169>; else goto <D.35170>;
      <D.35169>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35171>;
      <D.35170>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35171>:
      sp.145 = sp;
      sp = sp.145 + 8;
      D.35173 = mono_decompose_opcode (cfg, ins);
      *sp.145 = D.35173;
      <D.35141>:
      ip = ip + 1;
      goto <D.27670>;
      <D.27997>:
      <D.27998>:
      <D.27999>:
      <D.28000>:
      <D.28001>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.35174>; else goto <D.35175>;
      <D.35174>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35176>; else goto <D.35177>;
      <D.35176>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35178>; else goto <D.35179>;
      <D.35178>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35179>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35177>:
      D.35180 = mini_get_debug_options ();
      D.35181 = D.35180->break_on_unverified;
      if (D.35181 != 0) goto <D.35182>; else goto unverified;
      <D.35182>:
      __asm__ __volatile__("int $03");
      <D.35175>:
      D.34484 = sp + 18446744073709551608;
      D.34485 = *D.34484;
      D.35183 = D.34485->type;
      if (D.35183 == 4) goto <D.35184>; else goto <D.35185>;
      <D.35184>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 185;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551608;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.31680 = *sp;
      type_from_op (ins, D.31680, 0B);
      D.31426 = ins->type;
      if (D.31426 == 0) goto <D.35186>; else goto <D.35187>;
      <D.35186>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35188>; else goto <D.35189>;
      <D.35188>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35190>; else goto <D.35191>;
      <D.35190>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35191>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35189>:
      D.35192 = mini_get_debug_options ();
      D.35193 = D.35192->break_on_unverified;
      if (D.35193 != 0) goto <D.35194>; else goto unverified;
      <D.35194>:
      __asm__ __volatile__("int $03");
      <D.35187>:
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.35195 = alloc_dreg (cfg, D.31427);
      D.35196 = (int) D.35195;
      ins->dreg = D.35196;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35197>; else goto <D.35198>;
      <D.35197>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35199>;
      <D.35198>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35199>:
      sp.146 = sp;
      sp = sp.146 + 8;
      D.35201 = mono_decompose_opcode (cfg, ins);
      *sp.146 = D.35201;
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.34336 = (short unsigned int) D.31560;
      ins->opcode = D.34336;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551608;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.31680 = *sp;
      type_from_op (ins, D.31680, 0B);
      D.31426 = ins->type;
      if (D.31426 == 0) goto <D.35202>; else goto <D.35203>;
      <D.35202>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35204>; else goto <D.35205>;
      <D.35204>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35206>; else goto <D.35207>;
      <D.35206>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35207>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35205>:
      D.35208 = mini_get_debug_options ();
      D.35209 = D.35208->break_on_unverified;
      if (D.35209 != 0) goto <D.35210>; else goto unverified;
      <D.35210>:
      __asm__ __volatile__("int $03");
      <D.35203>:
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.35211 = alloc_dreg (cfg, D.31427);
      D.35212 = (int) D.35211;
      ins->dreg = D.35212;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35213>; else goto <D.35214>;
      <D.35213>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35215>;
      <D.35214>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35215>:
      sp.147 = sp;
      sp = sp.147 + 8;
      D.35217 = mono_decompose_opcode (cfg, ins);
      *sp.147 = D.35217;
      goto <D.35218>;
      <D.35185>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.34336 = (short unsigned int) D.31560;
      ins->opcode = D.34336;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551608;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.31680 = *sp;
      type_from_op (ins, D.31680, 0B);
      D.31426 = ins->type;
      if (D.31426 == 0) goto <D.35219>; else goto <D.35220>;
      <D.35219>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35221>; else goto <D.35222>;
      <D.35221>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35223>; else goto <D.35224>;
      <D.35223>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35224>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35222>:
      D.35225 = mini_get_debug_options ();
      D.35226 = D.35225->break_on_unverified;
      if (D.35226 != 0) goto <D.35227>; else goto unverified;
      <D.35227>:
      __asm__ __volatile__("int $03");
      <D.35220>:
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.35228 = alloc_dreg (cfg, D.31427);
      D.35229 = (int) D.35228;
      ins->dreg = D.35229;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35230>; else goto <D.35231>;
      <D.35230>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35232>;
      <D.35231>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35232>:
      sp.148 = sp;
      sp = sp.148 + 8;
      D.35234 = mono_decompose_opcode (cfg, ins);
      *sp.148 = D.35234;
      <D.35218>:
      ip = ip + 1;
      goto <D.27670>;
      <D.28002>:
      <D.28003>:
      <D.28004>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.35235>; else goto <D.35236>;
      <D.35235>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35237>; else goto <D.35238>;
      <D.35237>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35239>; else goto <D.35240>;
      <D.35239>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35240>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35238>:
      D.35241 = mini_get_debug_options ();
      D.35242 = D.35241->break_on_unverified;
      if (D.35242 != 0) goto <D.35243>; else goto unverified;
      <D.35243>:
      __asm__ __volatile__("int $03");
      <D.35236>:
      D.34484 = sp + 18446744073709551608;
      D.34485 = *D.34484;
      D.35183 = D.34485->type;
      if (D.35183 == 4) goto <D.35244>; else goto <D.35245>;
      <D.35244>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 186;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551608;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.31680 = *sp;
      type_from_op (ins, D.31680, 0B);
      D.31426 = ins->type;
      if (D.31426 == 0) goto <D.35246>; else goto <D.35247>;
      <D.35246>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35248>; else goto <D.35249>;
      <D.35248>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35250>; else goto <D.35251>;
      <D.35250>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35251>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35249>:
      D.35252 = mini_get_debug_options ();
      D.35253 = D.35252->break_on_unverified;
      if (D.35253 != 0) goto <D.35254>; else goto unverified;
      <D.35254>:
      __asm__ __volatile__("int $03");
      <D.35247>:
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.35255 = alloc_dreg (cfg, D.31427);
      D.35256 = (int) D.35255;
      ins->dreg = D.35256;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35257>; else goto <D.35258>;
      <D.35257>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35259>;
      <D.35258>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35259>:
      sp.149 = sp;
      sp = sp.149 + 8;
      D.35261 = mono_decompose_opcode (cfg, ins);
      *sp.149 = D.35261;
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.34336 = (short unsigned int) D.31560;
      ins->opcode = D.34336;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551608;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.31680 = *sp;
      type_from_op (ins, D.31680, 0B);
      D.31426 = ins->type;
      if (D.31426 == 0) goto <D.35262>; else goto <D.35263>;
      <D.35262>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35264>; else goto <D.35265>;
      <D.35264>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35266>; else goto <D.35267>;
      <D.35266>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35267>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35265>:
      D.35268 = mini_get_debug_options ();
      D.35269 = D.35268->break_on_unverified;
      if (D.35269 != 0) goto <D.35270>; else goto unverified;
      <D.35270>:
      __asm__ __volatile__("int $03");
      <D.35263>:
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.35271 = alloc_dreg (cfg, D.31427);
      D.35272 = (int) D.35271;
      ins->dreg = D.35272;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35273>; else goto <D.35274>;
      <D.35273>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35275>;
      <D.35274>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35275>:
      sp.150 = sp;
      sp = sp.150 + 8;
      D.35277 = mono_decompose_opcode (cfg, ins);
      *sp.150 = D.35277;
      goto <D.35278>;
      <D.35245>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.34336 = (short unsigned int) D.31560;
      ins->opcode = D.34336;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551608;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.31680 = *sp;
      type_from_op (ins, D.31680, 0B);
      D.31426 = ins->type;
      if (D.31426 == 0) goto <D.35279>; else goto <D.35280>;
      <D.35279>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35281>; else goto <D.35282>;
      <D.35281>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35283>; else goto <D.35284>;
      <D.35283>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35284>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35282>:
      D.35285 = mini_get_debug_options ();
      D.35286 = D.35285->break_on_unverified;
      if (D.35286 != 0) goto <D.35287>; else goto unverified;
      <D.35287>:
      __asm__ __volatile__("int $03");
      <D.35280>:
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.35288 = alloc_dreg (cfg, D.31427);
      D.35289 = (int) D.35288;
      ins->dreg = D.35289;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35290>; else goto <D.35291>;
      <D.35290>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35292>;
      <D.35291>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35292>:
      sp.151 = sp;
      sp = sp.151 + 8;
      D.35294 = mono_decompose_opcode (cfg, ins);
      *sp.151 = D.35294;
      <D.35278>:
      ip = ip + 1;
      goto <D.27670>;
      <D.28005>:
      <D.28006>:
      <D.28007>:
      <D.28008>:
      <D.28009>:
      <D.28010>:
      <D.28011>:
      <D.28012>:
      <D.28013>:
      <D.28014>:
      <D.28015>:
      <D.28016>:
      <D.28017>:
      <D.28018>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.35295>; else goto <D.35296>;
      <D.35295>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35297>; else goto <D.35298>;
      <D.35297>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35299>; else goto <D.35300>;
      <D.35299>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35300>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35298>:
      D.35301 = mini_get_debug_options ();
      D.35302 = D.35301->break_on_unverified;
      if (D.35302 != 0) goto <D.35303>; else goto unverified;
      <D.35303>:
      __asm__ __volatile__("int $03");
      <D.35296>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.34336 = (short unsigned int) D.31560;
      ins->opcode = D.34336;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551608;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.31680 = *sp;
      type_from_op (ins, D.31680, 0B);
      D.31426 = ins->type;
      if (D.31426 == 0) goto <D.35304>; else goto <D.35305>;
      <D.35304>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35306>; else goto <D.35307>;
      <D.35306>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35308>; else goto <D.35309>;
      <D.35308>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35309>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35307>:
      D.35310 = mini_get_debug_options ();
      D.35311 = D.35310->break_on_unverified;
      if (D.35311 != 0) goto <D.35312>; else goto unverified;
      <D.35312>:
      __asm__ __volatile__("int $03");
      <D.35305>:
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.35313 = alloc_dreg (cfg, D.31427);
      D.35314 = (int) D.35313;
      ins->dreg = D.35314;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35315>; else goto <D.35316>;
      <D.35315>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35317>;
      <D.35316>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35317>:
      sp.152 = sp;
      sp = sp.152 + 8;
      D.35319 = mono_decompose_opcode (cfg, ins);
      *sp.152 = D.35319;
      D.31231 = cfg->exception_type;
      if (D.31231 != 0) goto exception_exit; else goto <D.35320>;
      <D.35320>:
      ip = ip + 1;
      goto <D.27670>;
      <D.28019>:
      <D.28020>:
      <D.28021>:
      <D.28022>:
      <D.28023>:
      <D.28024>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 15) goto <D.35321>; else goto <D.35322>;
      <D.35321>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35323>; else goto <D.35324>;
      <D.35323>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35325>; else goto <D.35326>;
      <D.35325>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35326>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35324>:
      D.35327 = mini_get_debug_options ();
      D.35328 = D.35327->break_on_unverified;
      if (D.35328 != 0) goto <D.35329>; else goto unverified;
      <D.35329>:
      __asm__ __volatile__("int $03");
      <D.35322>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31560 = *ip;
      D.34336 = (short unsigned int) D.31560;
      ins->opcode = D.34336;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551600;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.32790 = D.32789->dreg;
      ins->sreg2 = D.32790;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.31680 = *sp;
      type_from_op (ins, D.31680, D.32789);
      D.31426 = ins->type;
      if (D.31426 == 0) goto <D.35330>; else goto <D.35331>;
      <D.35330>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35332>; else goto <D.35333>;
      <D.35332>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35334>; else goto <D.35335>;
      <D.35334>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35335>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35333>:
      D.35336 = mini_get_debug_options ();
      D.35337 = D.35336->break_on_unverified;
      if (D.35337 != 0) goto <D.35338>; else goto unverified;
      <D.35338>:
      __asm__ __volatile__("int $03");
      <D.35331>:
      D.31680 = *sp;
      D.33383 = D.31680->type;
      if (D.33383 == 3) goto <D.35339>; else goto <D.35340>;
      <D.35339>:
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.35092 = D.32789->type;
      if (D.35092 == 1) goto <D.35341>; else goto <D.35342>;
      <D.35341>:
      {
        struct MonoInst * widen;
        int dr;

        D.35343 = alloc_preg (cfg);
        dr = (int) D.35343;
        D.30673 = cfg->mempool;
        widen = mono_mempool_alloc (D.30673, 80);
        widen->data.op[1].const_val = 0;
        D.35344 = widen->data.op[1].const_val;
        widen->data.op[0].const_val = D.35344;
        widen->prev = 0B;
        D.35345 = widen->prev;
        widen->next = D.35345;
        widen->opcode = 766;
        widen->flags = 0;
        widen->type = 0;
        widen->dreg = -1;
        widen->sreg3 = -1;
        D.35346 = widen->sreg3;
        widen->sreg2 = D.35346;
        D.35347 = widen->sreg2;
        widen->sreg1 = D.35347;
        D.30898 = cfg->ip;
        widen->cil_code = D.30898;
        widen->dreg = dr;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.32790 = D.32789->dreg;
        widen->sreg1 = D.32790;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.35348>; else goto <D.35349>;
        <D.35348>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = widen;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        widen->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = widen;
        goto <D.35350>;
        <D.35349>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = widen;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.35350>:
        D.35351 = widen->dreg;
        ins->sreg2 = D.35351;
      }
      <D.35342>:
      <D.35340>:
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.35352 = alloc_dreg (cfg, D.31427);
      D.35353 = (int) D.35352;
      ins->dreg = D.35353;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35354>; else goto <D.35355>;
      <D.35354>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35356>;
      <D.35355>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35356>:
      sp.153 = sp;
      sp = sp.153 + 8;
      D.35358 = mono_decompose_opcode (cfg, ins);
      *sp.153 = D.35358;
      ip = ip + 1;
      goto <D.27670>;
      <D.28027>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35359>; else goto <D.35360>;
      <D.35359>:
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      D.35361 = mono_opcode_name (D.31561);
      D.32333 = method->signature;
      D.32334 = D.32333->param_count;
      D.32335 = (int) D.32334;
      D.32336 = method->name;
      D.30609 = method->klass;
      D.32337 = D.30609->name;
      D.30609 = method->klass;
      D.32338 = D.30609->name_space;
      D.35362 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.35361, "method-to-ir.c", 9069);
      cfg->exception_message = D.35362;
      D.30753 = cfg->verbose_level;
      if (D.30753 > 1) goto <D.35363>; else goto <D.35364>;
      <D.35363>:
      D.32342 = cfg->exception_message;
      printf ("%s\n", D.32342);
      <D.35364>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35360>:
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.35365>; else goto <D.35366>;
      <D.35365>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35367>; else goto <D.35368>;
      <D.35367>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35369>; else goto <D.35370>;
      <D.35369>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35370>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35368>:
      D.35371 = mini_get_debug_options ();
      D.35372 = D.35371->break_on_unverified;
      if (D.35372 != 0) goto <D.35373>; else goto unverified;
      <D.35373>:
      __asm__ __volatile__("int $03");
      <D.35366>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 15) goto <D.35374>; else goto <D.35375>;
      <D.35374>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35376>; else goto <D.35377>;
      <D.35376>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35378>; else goto <D.35379>;
      <D.35378>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35379>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35377>:
      D.35380 = mini_get_debug_options ();
      D.35381 = D.35380->break_on_unverified;
      if (D.35381 != 0) goto <D.35382>; else goto unverified;
      <D.35382>:
      __asm__ __volatile__("int $03");
      <D.35375>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.154 = mini_get_class (method, token, generic_context);
      klass = klass.154;
      klass.155 = klass;
      if (klass.155 == 0B) goto <D.35384>; else goto <D.35387>;
      <D.35387>:
      klass.155 = klass;
      D.35388 = klass.155->exception_type;
      if (D.35388 != 0) goto <D.35384>; else goto <D.35385>;
      <D.35384>:
      klass.155 = klass;
      cfg->exception_ptr = klass.155;
      D.35389 = mini_get_debug_options ();
      D.35390 = D.35389->break_on_unverified;
      if (D.35390 != 0) goto <D.35391>; else goto load_error;
      <D.35391>:
      __asm__ __volatile__("int $03");
      <D.35385>:
      sp = sp + 18446744073709551600;
      klass.155 = klass;
      D.35392 = generic_class_is_reference_type (cfg, klass.155);
      if (D.35392 != 0) goto <D.35393>; else goto <D.35394>;
      <D.35393>:
      {
        struct MonoInst * store;
        struct MonoInst * load;
        int dreg;

        D.35395 = alloc_ireg_ref (cfg);
        dreg = (int) D.35395;
        D.30673 = cfg->mempool;
        load = mono_mempool_alloc (D.30673, 80);
        load->data.op[1].const_val = 0;
        D.35396 = load->data.op[1].const_val;
        load->data.op[0].const_val = D.35396;
        load->prev = 0B;
        D.35397 = load->prev;
        load->next = D.35397;
        load->opcode = 391;
        load->flags = 0;
        load->type = 0;
        load->dreg = -1;
        load->sreg3 = -1;
        D.35398 = load->sreg3;
        load->sreg2 = D.35398;
        D.35399 = load->sreg2;
        load->sreg1 = D.35399;
        D.30898 = cfg->ip;
        load->cil_code = D.30898;
        load->dreg = dreg;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.32790 = D.32789->dreg;
        load->sreg1 = D.32790;
        load->data.op[0].const_val = 0;
        load->type = 1;
        D.35400 = load->flags;
        D.34999 = (unsigned char) ins_flag;
        D.35401 = D.35400 | D.34999;
        load->flags = D.35401;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.35402>; else goto <D.35403>;
        <D.35402>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = load;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        load->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = load;
        goto <D.35404>;
        <D.35403>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = load;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.35404>:
        D.30673 = cfg->mempool;
        store = mono_mempool_alloc (D.30673, 80);
        store->data.op[1].const_val = 0;
        D.35405 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.35405;
        store->prev = 0B;
        D.35406 = store->prev;
        store->next = D.35406;
        store->opcode = 374;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.35407 = store->sreg3;
        store->sreg2 = D.35407;
        D.35408 = store->sreg2;
        store->sreg1 = D.35408;
        D.30898 = cfg->ip;
        store->cil_code = D.30898;
        store->sreg1 = dreg;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        store->dreg = D.31862;
        store->data.op[0].const_val = 0;
        D.35409 = store->flags;
        D.34999 = (unsigned char) ins_flag;
        D.35410 = D.35409 | D.34999;
        store->flags = D.35410;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.35411>; else goto <D.35412>;
        <D.35411>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = store;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        store->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = store;
        goto <D.35413>;
        <D.35412>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = store;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.35413>:
        D.33854 = BIT_FIELD_REF <*cfg, 8, 5624>;
        D.33855 = D.33854 & 16;
        if (D.33855 != 0) goto <D.35414>; else goto <D.35415>;
        <D.35414>:
        D.30642 = cfg->method;
        D.32578 = BIT_FIELD_REF <*D.30642, 8, 256>;
        D.32579 = D.32578 & 124;
        if (D.32579 != 96) goto <D.35416>; else goto <D.35417>;
        <D.35416>:
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.31680 = *sp;
        emit_write_barrier (cfg, D.31680, D.32789);
        <D.35417>:
        <D.35415>:
      }
      goto <D.35418>;
      <D.35394>:
      klass.155 = klass;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.31680 = *sp;
      mini_emit_stobj (cfg, D.31680, D.32789, klass.155, 0);
      <D.35418>:
      ins_flag = 0;
      ip = ip + 5;
      goto <D.27670>;
      <D.28031>:
      {
        int loc_index;
        int stloc_len;

        loc_index = -1;
        stloc_len = 0;
        D.32104 = ip + 5;
        if (D.32104 > end) goto <D.35419>; else goto <D.35420>;
        <D.35419>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.35421>; else goto <D.35422>;
        <D.35421>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.35423>; else goto <D.35424>;
        <D.35423>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35424>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35422>:
        D.35425 = mini_get_debug_options ();
        D.35426 = D.35425->break_on_unverified;
        if (D.35426 != 0) goto <D.35427>; else goto unverified;
        <D.35427>:
        __asm__ __volatile__("int $03");
        <D.35420>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.35428>; else goto <D.35429>;
        <D.35428>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.35430>; else goto <D.35431>;
        <D.35430>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.35432>; else goto <D.35433>;
        <D.35432>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35433>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35431>:
        D.35434 = mini_get_debug_options ();
        D.35435 = D.35434->break_on_unverified;
        if (D.35435 != 0) goto <D.35436>; else goto unverified;
        <D.35436>:
        __asm__ __volatile__("int $03");
        <D.35429>:
        sp = sp + 18446744073709551608;
        token = MEM[(const guint32 *)ip + 1B];
        klass.156 = mini_get_class (method, token, generic_context);
        klass = klass.156;
        klass.155 = klass;
        if (klass.155 == 0B) goto <D.35438>; else goto <D.35440>;
        <D.35440>:
        klass.155 = klass;
        D.35388 = klass.155->exception_type;
        if (D.35388 != 0) goto <D.35438>; else goto <D.35439>;
        <D.35438>:
        klass.155 = klass;
        cfg->exception_ptr = klass.155;
        D.35441 = mini_get_debug_options ();
        D.35442 = D.35441->break_on_unverified;
        if (D.35442 != 0) goto <D.35443>; else goto load_error;
        <D.35443>:
        __asm__ __volatile__("int $03");
        <D.35439>:
        D.32104 = ip + 5;
        D.33533 = *D.32104;
        D.35444 = (int) D.33533;
        switch (D.35444) <default: <D.28040>, case 10: <D.28036>, case 11: <D.28037>, case 12: <D.28038>, case 13: <D.28039>, case 19: <D.28034>>
        <D.28034>:
        D.35445 = ip + 6;
        D.35446 = *D.35445;
        loc_index = (int) D.35446;
        stloc_len = 2;
        goto <D.28035>;
        <D.28036>:
        <D.28037>:
        <D.28038>:
        <D.28039>:
        D.32104 = ip + 5;
        D.33533 = *D.32104;
        D.35444 = (int) D.33533;
        loc_index = D.35444 + -10;
        stloc_len = 1;
        goto <D.28035>;
        <D.28040>:
        goto <D.28035>;
        <D.28035>:
        if (loc_index != -1) goto <D.35447>; else goto <D.35448>;
        <D.35447>:
        D.33574 = ip + 5;
        bblock.70 = bblock;
        D.35449 = ip_in_bb (cfg, bblock.70, D.33574);
        if (D.35449 != 0) goto <D.35450>; else goto <D.35451>;
        <D.35450>:
        loc_index.157 = (unsigned int) loc_index;
        D.31267 = header->num_locals;
        D.31634 = (unsigned int) D.31267;
        if (loc_index.157 >= D.31634) goto <D.35453>; else goto <D.35454>;
        <D.35453>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.35455>; else goto <D.35456>;
        <D.35455>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 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>:
        __asm__ __volatile__("int $03");
        <D.35454>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        klass.155 = klass;
        D.35462 = &klass.155->byval_arg;
        D.35463 = mono_type_to_load_membase (cfg, D.35462);
        D.35464 = (short unsigned int) D.35463;
        ins->opcode = D.35464;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->dreg = 0;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        ins->sreg1 = D.31862;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.155 = klass;
        D.35462 = &klass.155->byval_arg;
        type_to_eval_stack_type (cfg, D.35462, ins);
        D.31426 = ins->type;
        D.31427 = (<unnamed type>) D.31426;
        D.35465 = alloc_dreg (cfg, D.31427);
        D.35466 = (int) D.35465;
        ins->dreg = D.35466;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.35467>; else goto <D.35468>;
        <D.35467>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.35469>;
        <D.35468>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.35469>:
        D.31646 = cfg->locals;
        D.35470 = (long unsigned int) loc_index;
        D.35471 = D.35470 * 8;
        D.35472 = D.31646 + D.35471;
        D.35473 = *D.35472;
        D.35474 = D.35473->dreg;
        ins->dreg = D.35474;
        ip = ip + 5;
        D.35475 = (sizetype) stloc_len;
        ip = ip + D.35475;
        goto <D.27670>;
        <D.35451>:
        <D.35448>:
        D.32104 = ip + 5;
        D.33533 = *D.32104;
        if (D.33533 == 129) goto <D.35476>; else goto <D.35477>;
        <D.35476>:
        D.33574 = ip + 5;
        bblock.70 = bblock;
        D.35478 = ip_in_bb (cfg, bblock.70, D.33574);
        if (D.35478 != 0) goto <D.35479>; else goto <D.35480>;
        <D.35479>:
        D.35481 = ip + 6;
        D.35482 = *D.35481;
        if (D.35482 == token) goto <D.35483>; else goto <D.35484>;
        <D.35483>:
        klass.155 = klass;
        D.35485 = generic_class_is_reference_type (cfg, klass.155);
        if (D.35485 == 0) goto <D.35486>; else goto <D.35487>;
        <D.35486>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.35488>; else goto <D.35489>;
        <D.35488>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.35490>; else goto <D.35491>;
        <D.35490>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.35492>; else goto <D.35493>;
        <D.35492>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.35493>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.35491>:
        D.35494 = mini_get_debug_options ();
        D.35495 = D.35494->break_on_unverified;
        if (D.35495 != 0) goto <D.35496>; else goto unverified;
        <D.35496>:
        __asm__ __volatile__("int $03");
        <D.35489>:
        sp = sp + 18446744073709551608;
        klass.155 = klass;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.31680 = *sp;
        mini_emit_stobj (cfg, D.31680, D.32789, klass.155, 0);
        ip = ip + 10;
        ins_flag = 0;
        goto <D.27670>;
        <D.35487>:
        <D.35484>:
        <D.35480>:
        <D.35477>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        klass.155 = klass;
        D.35462 = &klass.155->byval_arg;
        D.35497 = mono_type_to_load_membase (cfg, D.35462);
        D.35498 = (short unsigned int) D.35497;
        ins->opcode = D.35498;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->dreg = 0;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        ins->sreg1 = D.31862;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.155 = klass;
        D.35462 = &klass.155->byval_arg;
        type_to_eval_stack_type (cfg, D.35462, ins);
        D.31426 = ins->type;
        D.31427 = (<unnamed type>) D.31426;
        D.35499 = alloc_dreg (cfg, D.31427);
        D.35500 = (int) D.35499;
        ins->dreg = D.35500;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.35501>; else goto <D.35502>;
        <D.35501>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.35503>;
        <D.35502>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.35503>:
        sp.158 = sp;
        sp = sp.158 + 8;
        *sp.158 = ins;
        ip = ip + 5;
        ins_flag = 0;
        inline_costs = inline_costs + 1;
        goto <D.27670>;
      }
      <D.28041>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.35505>; else goto <D.35506>;
      <D.35505>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35507>; else goto <D.35508>;
      <D.35507>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35509>; else goto <D.35510>;
      <D.35509>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35510>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35508>:
      D.35511 = mini_get_debug_options ();
      D.35512 = D.35511->break_on_unverified;
      if (D.35512 != 0) goto <D.35513>; else goto unverified;
      <D.35513>:
      __asm__ __volatile__("int $03");
      <D.35506>:
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.35514>; else goto <D.35515>;
      <D.35514>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.35516>; else goto <D.35517>;
      <D.35516>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.35518>; else goto <D.35519>;
      <D.35518>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.35519>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.35517>:
      D.35520 = mini_get_debug_options ();
      D.35521 = D.35520->break_on_unverified;
      if (D.35521 != 0) goto <D.35522>; else goto unverified;
      <D.35522>:
      __asm__ __volatile__("int $03");
      <D.35515>:
      D.32123 = ip + 1;
      D.32124 = *D.32123;
      n = (int) D.32124;
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      if (D.30615 == 68) goto <D.35523>; else goto <D.35524>;
      <D.35523>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 363;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      n.159 = (unsigned int) n;
      D.35526 = mono_method_get_wrapper_data (method, n.159);
      ins->data.op[0].p = D.35526;
      ins->type = 3;
      D.35527 = alloc_dreg (cfg, 3);
      D.35528 = (int) D.35527;
      ins->dreg = D.35528;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.35529>; else goto <D.35530>;
      <D.35529>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.35531>;
      <D.35530>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.35531>:
      ins->type = 6;
      *sp = ins;
      goto <D.35532>;
      <D.35524>:
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      if (D.30615 != 0) goto <D.35533>; else goto <D.35534>;
      <D.35533>:
      {
        struct MonoInst * iargs[1];

        try
          {
            D.30673 = cfg->mempool;
            D.35535 = mono_mempool_alloc (D.30673, 80);
            iargs[0] = D.35535;
            D.35536 = iargs[0];
            D.35536 = iargs[0];
            D.35536->data.op[1].const_val = 0;
            D.35537 = D.35536->data.op[1].const_val;
            D.35536->data.op[0].const_val = D.35537;
            D.35536 = iargs[0];
            D.35536 = iargs[0];
            D.35536->prev = 0B;
            D.35538 = D.35536->prev;
            D.35536->next = D.35538;
            D.35536 = iargs[0];
            D.35536->opcode = 363;
            D.35536 = iargs[0];
            D.35536->flags = 0;
            D.35536 = iargs[0];
            D.35536->type = 0;
            D.35536 = iargs[0];
            D.35536->dreg = -1;
            D.35536 = iargs[0];
            D.35536 = iargs[0];
            D.35536 = iargs[0];
            D.35536->sreg3 = -1;
            D.35539 = D.35536->sreg3;
            D.35536->sreg2 = D.35539;
            D.35540 = D.35536->sreg2;
            D.35536->sreg1 = D.35540;
            D.35536 = iargs[0];
            D.30898 = cfg->ip;
            D.35536->cil_code = D.30898;
            D.35536 = iargs[0];
            n.159 = (unsigned int) n;
            D.35541 = mono_method_get_wrapper_data (method, n.159);
            D.35536->data.op[0].p = D.35541;
            D.35536 = iargs[0];
            D.35536->type = 3;
            D.35536 = iargs[0];
            D.35542 = alloc_dreg (cfg, 3);
            D.35543 = (int) D.35542;
            D.35536->dreg = D.35543;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.35544>; else goto <D.35545>;
            <D.35544>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35536 = iargs[0];
            D.30927->next = D.35536;
            D.35536 = iargs[0];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35536->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.35536 = iargs[0];
            bblock.113->last_ins = D.35536;
            goto <D.35546>;
            <D.35545>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.35536 = iargs[0];
            bblock.113->last_ins = D.35536;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.35546>:
            D.35547 = mono_emit_jit_icall (cfg, mono_string_new_wrapper, &iargs);
            *sp = D.35547;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.35548>;
      <D.35534>:
      D.31070 = cfg->opt;
      D.31071 = D.31070 & 512;
      if (D.31071 != 0) goto <D.35549>; else goto <D.35550>;
      <D.35549>:
      {
        struct MonoInst * iargs[3];

        try
          {
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.35551>; else goto <D.35552>;
            <D.35551>:
            D.32681 = (long int) n;
            D.35553 = (void *) D.32681;
            D.35554 = cfg->ldstr_list;
            D.35555 = monoeg_g_list_prepend (D.35554, D.35553);
            cfg->ldstr_list = D.35555;
            <D.35552>:
            D.31070 = cfg->opt;
            D.31071 = D.31070 & 512;
            if (D.31071 != 0) goto <D.35556>; else goto <D.35559>;
            <D.35559>:
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.35556>; else goto <D.35557>;
            <D.35556>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.30673 = cfg->mempool;
              D.35560 = mono_mempool_alloc (D.30673, 80);
              iargs[0] = D.35560;
              D.35561 = iargs[0];
              D.35561 = iargs[0];
              D.35561->data.op[1].const_val = 0;
              D.35562 = D.35561->data.op[1].const_val;
              D.35561->data.op[0].const_val = D.35562;
              D.35561 = iargs[0];
              D.35561 = iargs[0];
              D.35561->prev = 0B;
              D.35563 = D.35561->prev;
              D.35561->next = D.35563;
              D.35561 = iargs[0];
              D.35561->opcode = 428;
              D.35561 = iargs[0];
              D.35561->flags = 0;
              D.35561 = iargs[0];
              D.35561->type = 0;
              D.35561 = iargs[0];
              D.35561->dreg = -1;
              D.35561 = iargs[0];
              D.35561 = iargs[0];
              D.35561 = iargs[0];
              D.35561->sreg3 = -1;
              D.35564 = D.35561->sreg3;
              D.35561->sreg2 = D.35564;
              D.35565 = D.35561->sreg2;
              D.35561->sreg1 = D.35565;
              D.35561 = iargs[0];
              D.30898 = cfg->ip;
              D.35561->cil_code = D.30898;
              D.35561 = iargs[0];
              D.31416 = cfg->varinfo;
              D.35566 = __domain_var->data.op[0].const_val;
              D.35567 = (long unsigned int) D.35566;
              D.35568 = D.35567 * 8;
              D.35569 = D.31416 + D.35568;
              D.35570 = *D.35569;
              D.35571 = D.35570->data.op[1].vtype;
              D.35572 = mono_type_to_regmove (cfg, D.35571);
              D.35573 = (short unsigned int) D.35572;
              D.35561->opcode = D.35573;
              D.35561 = iargs[0];
              D.31416 = cfg->varinfo;
              D.35566 = __domain_var->data.op[0].const_val;
              D.35567 = (long unsigned int) D.35566;
              D.35568 = D.35567 * 8;
              D.35569 = D.31416 + D.35568;
              D.35570 = *D.35569;
              D.35571 = D.35570->data.op[1].vtype;
              type_to_eval_stack_type (cfg, D.35571, D.35561);
              D.35561 = iargs[0];
              D.31416 = cfg->varinfo;
              D.35566 = __domain_var->data.op[0].const_val;
              D.35567 = (long unsigned int) D.35566;
              D.35568 = D.35567 * 8;
              D.35569 = D.31416 + D.35568;
              D.35570 = *D.35569;
              D.35574 = D.35570->klass;
              D.35561->klass = D.35574;
              D.35561 = iargs[0];
              D.31416 = cfg->varinfo;
              D.35566 = __domain_var->data.op[0].const_val;
              D.35567 = (long unsigned int) D.35566;
              D.35568 = D.35567 * 8;
              D.35569 = D.31416 + D.35568;
              D.35570 = *D.35569;
              D.35575 = D.35570->dreg;
              D.35561->sreg1 = D.35575;
              D.35561 = iargs[0];
              D.35561 = iargs[0];
              D.35576 = D.35561->type;
              D.35577 = (<unnamed type>) D.35576;
              D.35578 = alloc_dreg (cfg, D.35577);
              D.35579 = (int) D.35578;
              D.35561->dreg = D.35579;
              D.35561 = iargs[0];
              D.35580 = D.35561->opcode;
              if (D.35580 == 431) goto <D.35581>; else goto <D.35582>;
              <D.35581>:
              D.35561 = iargs[0];
              D.31416 = cfg->varinfo;
              D.35566 = __domain_var->data.op[0].const_val;
              D.35567 = (long unsigned int) D.35566;
              D.35568 = D.35567 * 8;
              D.35569 = D.31416 + D.35568;
              D.35570 = *D.35569;
              D.35571 = D.35570->data.op[1].vtype;
              D.35583 = mono_class_from_mono_type (D.35571);
              D.35561->klass = D.35583;
              <D.35582>:
            }
            goto <D.35558>;
            <D.35557>:
            D.30673 = cfg->mempool;
            D.35584 = mono_mempool_alloc (D.30673, 80);
            iargs[0] = D.35584;
            D.35561 = iargs[0];
            D.35561 = iargs[0];
            D.35561->data.op[1].const_val = 0;
            D.35562 = D.35561->data.op[1].const_val;
            D.35561->data.op[0].const_val = D.35562;
            D.35561 = iargs[0];
            D.35561 = iargs[0];
            D.35561->prev = 0B;
            D.35563 = D.35561->prev;
            D.35561->next = D.35563;
            D.35561 = iargs[0];
            D.35561->opcode = 363;
            D.35561 = iargs[0];
            D.35561->flags = 0;
            D.35561 = iargs[0];
            D.35561->type = 0;
            D.35561 = iargs[0];
            D.35561->dreg = -1;
            D.35561 = iargs[0];
            D.35561 = iargs[0];
            D.35561 = iargs[0];
            D.35561->sreg3 = -1;
            D.35564 = D.35561->sreg3;
            D.35561->sreg2 = D.35564;
            D.35565 = D.35561->sreg2;
            D.35561->sreg1 = D.35565;
            D.35561 = iargs[0];
            D.30898 = cfg->ip;
            D.35561->cil_code = D.30898;
            D.35561 = iargs[0];
            D.30697 = cfg->domain;
            D.35561->data.op[0].p = D.30697;
            D.35561 = iargs[0];
            D.35561->type = 3;
            D.35561 = iargs[0];
            D.35585 = alloc_dreg (cfg, 3);
            D.35586 = (int) D.35585;
            D.35561->dreg = D.35586;
            <D.35558>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.35587>; else goto <D.35588>;
            <D.35587>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35561 = iargs[0];
            D.30927->next = D.35561;
            D.35561 = iargs[0];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35561->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.35561 = iargs[0];
            bblock.113->last_ins = D.35561;
            goto <D.35589>;
            <D.35588>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.35561 = iargs[0];
            bblock.113->last_ins = D.35561;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.35589>:
            D.30673 = cfg->mempool;
            D.35590 = mono_mempool_alloc (D.30673, 80);
            iargs[1] = D.35590;
            D.35591 = iargs[1];
            D.35591 = iargs[1];
            D.35591->data.op[1].const_val = 0;
            D.35592 = D.35591->data.op[1].const_val;
            D.35591->data.op[0].const_val = D.35592;
            D.35591 = iargs[1];
            D.35591 = iargs[1];
            D.35591->prev = 0B;
            D.35593 = D.35591->prev;
            D.35591->next = D.35593;
            D.35591 = iargs[1];
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.35595>; else goto <D.35596>;
            <D.35595>:
            iftmp.160 = 736;
            goto <D.35597>;
            <D.35596>:
            iftmp.160 = 363;
            <D.35597>:
            D.35591->opcode = iftmp.160;
            D.35591 = iargs[1];
            D.35591->flags = 0;
            D.35591 = iargs[1];
            D.35591->type = 0;
            D.35591 = iargs[1];
            D.35591->dreg = -1;
            D.35591 = iargs[1];
            D.35591 = iargs[1];
            D.35591 = iargs[1];
            D.35591->sreg3 = -1;
            D.35598 = D.35591->sreg3;
            D.35591->sreg2 = D.35598;
            D.35599 = D.35591->sreg2;
            D.35591->sreg1 = D.35599;
            D.35591 = iargs[1];
            D.30898 = cfg->ip;
            D.35591->cil_code = D.30898;
            D.35591 = iargs[1];
            D.35591->data.op[0].p = image;
            D.35591 = iargs[1];
            D.35591->data.op[1].src = 12B;
            D.35591 = iargs[1];
            D.35591->type = 3;
            D.35591 = iargs[1];
            D.35600 = alloc_dreg (cfg, 3);
            D.35601 = (int) D.35600;
            D.35591->dreg = D.35601;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.35602>; else goto <D.35603>;
            <D.35602>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35591 = iargs[1];
            D.30927->next = D.35591;
            D.35591 = iargs[1];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35591->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.35591 = iargs[1];
            bblock.113->last_ins = D.35591;
            goto <D.35604>;
            <D.35603>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.35591 = iargs[1];
            bblock.113->last_ins = D.35591;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.35604>:
            D.30673 = cfg->mempool;
            D.35605 = mono_mempool_alloc (D.30673, 80);
            iargs[2] = D.35605;
            D.35606 = iargs[2];
            D.35606 = iargs[2];
            D.35606->data.op[1].const_val = 0;
            D.35607 = D.35606->data.op[1].const_val;
            D.35606->data.op[0].const_val = D.35607;
            D.35606 = iargs[2];
            D.35606 = iargs[2];
            D.35606->prev = 0B;
            D.35608 = D.35606->prev;
            D.35606->next = D.35608;
            D.35606 = iargs[2];
            D.35606->opcode = 362;
            D.35606 = iargs[2];
            D.35606->flags = 0;
            D.35606 = iargs[2];
            D.35606->type = 0;
            D.35606 = iargs[2];
            D.35606->dreg = -1;
            D.35606 = iargs[2];
            D.35606 = iargs[2];
            D.35606 = iargs[2];
            D.35606->sreg3 = -1;
            D.35609 = D.35606->sreg3;
            D.35606->sreg2 = D.35609;
            D.35610 = D.35606->sreg2;
            D.35606->sreg1 = D.35610;
            D.35606 = iargs[2];
            D.30898 = cfg->ip;
            D.35606->cil_code = D.30898;
            D.35606 = iargs[2];
            D.35611 = (long int) n;
            D.35612 = D.35611 & 16777215;
            D.35606->data.op[0].const_val = D.35612;
            D.35606 = iargs[2];
            D.35606->type = 1;
            D.35606 = iargs[2];
            D.35613 = alloc_dreg (cfg, 1);
            D.35614 = (int) D.35613;
            D.35606->dreg = D.35614;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.35615>; else goto <D.35616>;
            <D.35615>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35606 = iargs[2];
            D.30927->next = D.35606;
            D.35606 = iargs[2];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35606->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.35606 = iargs[2];
            bblock.113->last_ins = D.35606;
            goto <D.35617>;
            <D.35616>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.35606 = iargs[2];
            bblock.113->last_ins = D.35606;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.35617>:
            D.35618 = mono_emit_jit_icall (cfg, mono_ldstr, &iargs);
            *sp = D.35618;
            n.161 = (unsigned int) n;
            D.35620 = n.161 & 16777215;
            D.30697 = cfg->domain;
            mono_ldstr (D.30697, image, D.35620);
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.35621>;
      <D.35550>:
      bblock.70 = bblock;
      D.35622 = BIT_FIELD_REF <*bblock.70, 8, 1488>;
      D.35623 = D.35622 & 1;
      if (D.35623 != 0) goto <D.35624>; else goto <D.35625>;
      <D.35624>:
      {
        struct MonoInst * iargs[2];

        try
          {
            D.32708 = mono_defaults.corlib;
            if (D.32708 == image) goto <D.35626>; else goto <D.35627>;
            <D.35626>:
            D.30673 = cfg->mempool;
            D.35628 = mono_mempool_alloc (D.30673, 80);
            iargs[0] = D.35628;
            D.35629 = iargs[0];
            D.35629 = iargs[0];
            D.35629->data.op[1].const_val = 0;
            D.35630 = D.35629->data.op[1].const_val;
            D.35629->data.op[0].const_val = D.35630;
            D.35629 = iargs[0];
            D.35629 = iargs[0];
            D.35629->prev = 0B;
            D.35631 = D.35629->prev;
            D.35629->next = D.35631;
            D.35629 = iargs[0];
            D.35629->opcode = 362;
            D.35629 = iargs[0];
            D.35629->flags = 0;
            D.35629 = iargs[0];
            D.35629->type = 0;
            D.35629 = iargs[0];
            D.35629->dreg = -1;
            D.35629 = iargs[0];
            D.35629 = iargs[0];
            D.35629 = iargs[0];
            D.35629->sreg3 = -1;
            D.35632 = D.35629->sreg3;
            D.35629->sreg2 = D.35632;
            D.35633 = D.35629->sreg2;
            D.35629->sreg1 = D.35633;
            D.35629 = iargs[0];
            D.30898 = cfg->ip;
            D.35629->cil_code = D.30898;
            D.35629 = iargs[0];
            D.35611 = (long int) n;
            D.35612 = D.35611 & 16777215;
            D.35629->data.op[0].const_val = D.35612;
            D.35629 = iargs[0];
            D.35629->type = 1;
            D.35629 = iargs[0];
            D.35634 = alloc_dreg (cfg, 1);
            D.35635 = (int) D.35634;
            D.35629->dreg = D.35635;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.35636>; else goto <D.35637>;
            <D.35636>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35629 = iargs[0];
            D.30927->next = D.35629;
            D.35629 = iargs[0];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35629->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.35629 = iargs[0];
            bblock.113->last_ins = D.35629;
            goto <D.35638>;
            <D.35637>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.35629 = iargs[0];
            bblock.113->last_ins = D.35629;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.35638>:
            D.35639 = mono_emit_jit_icall (cfg, mono_helper_ldstr_mscorlib, &iargs);
            *sp = D.35639;
            goto <D.35640>;
            <D.35627>:
            D.30673 = cfg->mempool;
            D.35641 = mono_mempool_alloc (D.30673, 80);
            iargs[0] = D.35641;
            D.35629 = iargs[0];
            D.35629 = iargs[0];
            D.35629->data.op[1].const_val = 0;
            D.35630 = D.35629->data.op[1].const_val;
            D.35629->data.op[0].const_val = D.35630;
            D.35629 = iargs[0];
            D.35629 = iargs[0];
            D.35629->prev = 0B;
            D.35631 = D.35629->prev;
            D.35629->next = D.35631;
            D.35629 = iargs[0];
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.35643>; else goto <D.35644>;
            <D.35643>:
            iftmp.162 = 736;
            goto <D.35645>;
            <D.35644>:
            iftmp.162 = 363;
            <D.35645>:
            D.35629->opcode = iftmp.162;
            D.35629 = iargs[0];
            D.35629->flags = 0;
            D.35629 = iargs[0];
            D.35629->type = 0;
            D.35629 = iargs[0];
            D.35629->dreg = -1;
            D.35629 = iargs[0];
            D.35629 = iargs[0];
            D.35629 = iargs[0];
            D.35629->sreg3 = -1;
            D.35632 = D.35629->sreg3;
            D.35629->sreg2 = D.35632;
            D.35633 = D.35629->sreg2;
            D.35629->sreg1 = D.35633;
            D.35629 = iargs[0];
            D.30898 = cfg->ip;
            D.35629->cil_code = D.30898;
            D.35629 = iargs[0];
            D.35629->data.op[0].p = image;
            D.35629 = iargs[0];
            D.35629->data.op[1].src = 12B;
            D.35629 = iargs[0];
            D.35629->type = 3;
            D.35629 = iargs[0];
            D.35646 = alloc_dreg (cfg, 3);
            D.35647 = (int) D.35646;
            D.35629->dreg = D.35647;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.35648>; else goto <D.35649>;
            <D.35648>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35629 = iargs[0];
            D.30927->next = D.35629;
            D.35629 = iargs[0];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35629->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.35629 = iargs[0];
            bblock.113->last_ins = D.35629;
            goto <D.35650>;
            <D.35649>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.35629 = iargs[0];
            bblock.113->last_ins = D.35629;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.35650>:
            D.30673 = cfg->mempool;
            D.35651 = mono_mempool_alloc (D.30673, 80);
            iargs[1] = D.35651;
            D.35652 = iargs[1];
            D.35652 = iargs[1];
            D.35652->data.op[1].const_val = 0;
            D.35653 = D.35652->data.op[1].const_val;
            D.35652->data.op[0].const_val = D.35653;
            D.35652 = iargs[1];
            D.35652 = iargs[1];
            D.35652->prev = 0B;
            D.35654 = D.35652->prev;
            D.35652->next = D.35654;
            D.35652 = iargs[1];
            D.35652->opcode = 362;
            D.35652 = iargs[1];
            D.35652->flags = 0;
            D.35652 = iargs[1];
            D.35652->type = 0;
            D.35652 = iargs[1];
            D.35652->dreg = -1;
            D.35652 = iargs[1];
            D.35652 = iargs[1];
            D.35652 = iargs[1];
            D.35652->sreg3 = -1;
            D.35655 = D.35652->sreg3;
            D.35652->sreg2 = D.35655;
            D.35656 = D.35652->sreg2;
            D.35652->sreg1 = D.35656;
            D.35652 = iargs[1];
            D.30898 = cfg->ip;
            D.35652->cil_code = D.30898;
            D.35652 = iargs[1];
            D.35611 = (long int) n;
            D.35612 = D.35611 & 16777215;
            D.35652->data.op[0].const_val = D.35612;
            D.35652 = iargs[1];
            D.35652->type = 1;
            D.35652 = iargs[1];
            D.35657 = alloc_dreg (cfg, 1);
            D.35658 = (int) D.35657;
            D.35652->dreg = D.35658;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.35659>; else goto <D.35660>;
            <D.35659>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35652 = iargs[1];
            D.30927->next = D.35652;
            D.35652 = iargs[1];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.35652->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.35652 = iargs[1];
            bblock.113->last_ins = D.35652;
            goto <D.35661>;
            <D.35660>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.35652 = iargs[1];
            bblock.113->last_ins = D.35652;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.35661>:
            D.35662 = mono_emit_jit_icall (cfg, mono_helper_ldstr, &iargs);
            *sp = D.35662;
            <D.35640>:
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.35663>;
      <D.35625>:
      D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.31073 = D.31072 & 64;
      if (D.31073 != 0) goto <D.35664>; else goto <D.35665>;
      <D.35664>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 736;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      n.159 = (unsigned int) n;
      D.30673 = cfg->mempool;
      D.35666 = mono_jump_info_token_new2 (D.30673, image, n.159, 0B);
      ins->data.op[0].p = D.35666;
      ins->data.op[1].p = 17B;
      ins->type = 6;
      D.35667 = mono_defaults.string_class;
      ins->klass = D.35667;
      D.35668 = alloc_dreg (cfg, 6);
      D.35669 = (int) D.35668;
      ins->dreg = D.35669;
      *sp = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.35670>; else goto <D.35671>;
      <D.35670>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.35672>;
      <D.35671>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.35672>:
      goto <D.35673>;
      <D.35665>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 363;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ins->data.op[0].p = 0B;
      ins->type = 3;
      D.35674 = alloc_dreg (cfg, 3);
      D.35675 = (int) D.35674;
      ins->dreg = D.35675;
      ins->type = 6;
      n.161 = (unsigned int) n;
      D.35620 = n.161 & 16777215;
      D.30697 = cfg->domain;
      D.35676 = mono_ldstr (D.30697, image, D.35620);
      ins->data.op[0].p = D.35676;
      D.35677 = ins->data.op[0].p;
      if (D.35677 == 0B) goto <D.35678>; else goto <D.35679>;
      <D.35678>:
      mono_cfg_set_exception (cfg, 14);
      goto exception_exit;
      <D.35679>:
      *sp = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.35680>; else goto <D.35681>;
      <D.35680>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.35682>;
      <D.35681>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.35682>:
      <D.35673>:
      <D.35663>:
      <D.35621>:
      <D.35548>:
      <D.35532>:
      sp = sp + 8;
      ip = ip + 5;
      goto <D.27670>;
      <D.28046>:
      {
        struct MonoInst * iargs[2];
        struct MonoMethodSignature * fsig;
        struct MonoInst this_ins;
        struct MonoInst * alloc;
        struct MonoInst * vtable_arg;

        try
          {
            vtable_arg = 0B;
            D.32104 = ip + 5;
            if (D.32104 > end) goto <D.35683>; else goto <D.35684>;
            <D.35683>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.35685>; else goto <D.35686>;
            <D.35685>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.35687>; else goto <D.35688>;
            <D.35687>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.35688>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.35686>:
            D.35689 = mini_get_debug_options ();
            D.35690 = D.35689->break_on_unverified;
            if (D.35690 != 0) goto <D.35691>; else goto unverified;
            <D.35691>:
            __asm__ __volatile__("int $03");
            <D.35684>:
            token = MEM[(const guint32 *)ip + 1B];
            cmethod = mini_get_method (cfg, method, token, 0B, generic_context);
            if (cmethod == 0B) goto <D.35692>; else goto <D.35694>;
            <D.35694>:
            D.35695 = mono_loader_get_last_error ();
            if (D.35695 != 0B) goto <D.35692>; else goto <D.35693>;
            <D.35692>:
            D.35696 = mini_get_debug_options ();
            D.35697 = D.35696->break_on_unverified;
            if (D.35697 != 0) goto <D.35698>; else goto load_error;
            <D.35698>:
            __asm__ __volatile__("int $03");
            <D.35693>:
            fsig = mono_method_get_signature (cmethod, image, token);
            if (fsig == 0B) goto <D.35699>; else goto <D.35700>;
            <D.35699>:
            D.35701 = mini_get_debug_options ();
            D.35702 = D.35701->break_on_unverified;
            if (D.35702 != 0) goto <D.35703>; else goto load_error;
            <D.35703>:
            __asm__ __volatile__("int $03");
            <D.35700>:
            mono_save_token_info (cfg, image, token, cmethod);
            D.32528 = cmethod->klass;
            D.35704 = mono_class_init (D.32528);
            if (D.35704 == 0) goto <D.35705>; else goto <D.35706>;
            <D.35705>:
            D.35707 = mini_get_debug_options ();
            D.35708 = D.35707->break_on_unverified;
            if (D.35708 != 0) goto <D.35709>; else goto <D.35710>;
            <D.35709>:
            __asm__ __volatile__("int $03");
            goto <D.35711>;
            <D.35710>:
            D.32528 = cmethod->klass;
            cfg->exception_ptr = D.32528;
            goto load_error;
            <D.35711>:
            <D.35706>:
            context_used = mini_method_check_context_used (cfg, cmethod);
            D.35712 = mono_security_get_mode ();
            if (D.35712 == 2) goto <D.35713>; else goto <D.35714>;
            <D.35713>:
            D.35715 = check_linkdemand (cfg, method, cmethod);
            if (D.35715 != 0) goto <D.35716>; else goto <D.35717>;
            <D.35716>:
            D.30642 = cfg->method;
            if (D.30642 != method) goto <D.35718>; else goto <D.35719>;
            <D.35718>:
            D.30614 = BIT_FIELD_REF <*method, 8, 256>;
            D.30615 = D.30614 & 124;
            if (D.30615 == 0) goto <D.35720>; else goto <D.35721>;
            <D.35720>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 1) goto <D.35722>; else goto <D.35723>;
            <D.35722>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.35723>:
            goto inline_failure;
            <D.35721>:
            <D.35719>:
            <D.35717>:
            D.31231 = cfg->exception_type;
            if (D.31231 != 0) goto exception_exit; else goto <D.35724>;
            <D.35724>:
            goto <D.35725>;
            <D.35714>:
            D.35726 = mono_security_get_mode ();
            if (D.35726 == 1) goto <D.35727>; else goto <D.35728>;
            <D.35727>:
            bblock.70 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.70, ip);
            <D.35728>:
            <D.35725>:
            D.30708 = cfg->generic_sharing_context;
            if (D.30708 != 0B) goto <D.35729>; else goto <D.35730>;
            <D.35729>:
            if (cmethod != 0B) goto <D.35731>; else goto <D.35732>;
            <D.35731>:
            D.32528 = cmethod->klass;
            D.30609 = method->klass;
            if (D.32528 != D.30609) goto <D.35733>; else goto <D.35734>;
            <D.35733>:
            D.32528 = cmethod->klass;
            D.33068 = D.32528->generic_class;
            if (D.33068 != 0B) goto <D.35735>; else goto <D.35736>;
            <D.35735>:
            D.35737 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.35737 != 0) goto <D.35738>; else goto <D.35739>;
            <D.35738>:
            D.32528 = cmethod->klass;
            D.35740 = mono_class_needs_cctor_run (D.32528, method);
            if (D.35740 != 0) goto <D.35741>; else goto <D.35742>;
            <D.35741>:
            D.32528 = cmethod->klass;
            emit_generic_class_init (cfg, D.32528);
            D.32528 = cmethod->klass;
            if (D.32528 == 0B) goto <D.35743>; else goto <D.35745>;
            <D.35745>:
            D.32528 = cmethod->klass;
            D.33080 = D.32528->exception_type;
            if (D.33080 != 0) goto <D.35743>; else goto <D.35744>;
            <D.35743>:
            D.32528 = cmethod->klass;
            cfg->exception_ptr = D.32528;
            D.35746 = mini_get_debug_options ();
            D.35747 = D.35746->break_on_unverified;
            if (D.35747 != 0) goto <D.35748>; else goto load_error;
            <D.35748>:
            __asm__ __volatile__("int $03");
            <D.35744>:
            <D.35742>:
            <D.35739>:
            <D.35736>:
            <D.35734>:
            <D.35732>:
            <D.35730>:
            D.32528 = cmethod->klass;
            D.32529 = BIT_FIELD_REF <*D.32528, 8, 256>;
            D.32530 = D.32529 & 8;
            if (D.32530 != 0) goto <D.35749>; else goto <D.35750>;
            <D.35749>:
            D.32528 = cmethod->klass;
            D.35751 = mono_class_generic_sharing_enabled (D.32528);
            if (D.35751 != 0) goto <D.35752>; else goto <D.35753>;
            <D.35752>:
            D.35754 = mono_method_is_generic_sharable (cmethod, 1);
            if (D.35754 != 0) goto <D.35755>; else goto <D.35756>;
            <D.35755>:
            D.33265 = BIT_FIELD_REF <*cmethod, 8, 264>;
            D.33266 = D.33265 & 16;
            if (D.33266 != 0) goto <D.35759>; else goto <D.35757>;
            <D.35759>:
            D.35760 = mono_method_get_context (cmethod);
            D.35761 = D.35760->method_inst;
            if (D.35761 != 0B) goto <D.35762>; else goto <D.35757>;
            <D.35762>:
            D.32528 = cmethod->klass;
            D.30697 = cfg->domain;
            mono_class_vtable (D.30697, D.32528);
            D.32528 = cmethod->klass;
            if (D.32528 == 0B) goto <D.35763>; else goto <D.35765>;
            <D.35765>:
            D.32528 = cmethod->klass;
            D.33080 = D.32528->exception_type;
            if (D.33080 != 0) goto <D.35763>; else goto <D.35764>;
            <D.35763>:
            D.32528 = cmethod->klass;
            cfg->exception_ptr = D.32528;
            D.35766 = mini_get_debug_options ();
            D.35767 = D.35766->break_on_unverified;
            if (D.35767 != 0) goto <D.35768>; else goto load_error;
            <D.35768>:
            __asm__ __volatile__("int $03");
            <D.35764>:
            vtable_arg = emit_get_rgctx_method (cfg, context_used, cmethod, 8);
            goto <D.35758>;
            <D.35757>:
            if (context_used != 0) goto <D.35769>; else goto <D.35770>;
            <D.35769>:
            D.32528 = cmethod->klass;
            vtable_arg = emit_get_rgctx_klass (cfg, context_used, D.32528, 2);
            goto <D.35771>;
            <D.35770>:
            {
              struct MonoVTable * vtable;

              D.32528 = cmethod->klass;
              D.30697 = cfg->domain;
              vtable = mono_class_vtable (D.30697, D.32528);
              D.32528 = cmethod->klass;
              if (D.32528 == 0B) goto <D.35772>; else goto <D.35774>;
              <D.35774>:
              D.32528 = cmethod->klass;
              D.33080 = D.32528->exception_type;
              if (D.33080 != 0) goto <D.35772>; else goto <D.35773>;
              <D.35772>:
              D.32528 = cmethod->klass;
              cfg->exception_ptr = D.32528;
              D.35775 = mini_get_debug_options ();
              D.35776 = D.35775->break_on_unverified;
              if (D.35776 != 0) goto <D.35777>; else goto load_error;
              <D.35777>:
              __asm__ __volatile__("int $03");
              <D.35773>:
              D.30673 = cfg->mempool;
              vtable_arg = mono_mempool_alloc (D.30673, 80);
              vtable_arg->data.op[1].const_val = 0;
              D.35778 = vtable_arg->data.op[1].const_val;
              vtable_arg->data.op[0].const_val = D.35778;
              vtable_arg->prev = 0B;
              D.35779 = vtable_arg->prev;
              vtable_arg->next = D.35779;
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.35781>; else goto <D.35782>;
              <D.35781>:
              iftmp.163 = 736;
              goto <D.35783>;
              <D.35782>:
              iftmp.163 = 363;
              <D.35783>:
              vtable_arg->opcode = iftmp.163;
              vtable_arg->flags = 0;
              vtable_arg->type = 0;
              vtable_arg->dreg = -1;
              vtable_arg->sreg3 = -1;
              D.35784 = vtable_arg->sreg3;
              vtable_arg->sreg2 = D.35784;
              D.35785 = vtable_arg->sreg2;
              vtable_arg->sreg1 = D.35785;
              D.30898 = cfg->ip;
              vtable_arg->cil_code = D.30898;
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.35787>; else goto <D.35788>;
              <D.35787>:
              iftmp.164 = vtable->klass;
              goto <D.35789>;
              <D.35788>:
              iftmp.164 = vtable;
              <D.35789>:
              vtable_arg->data.op[0].p = iftmp.164;
              vtable_arg->data.op[1].src = 14B;
              vtable_arg->type = 3;
              D.35790 = alloc_dreg (cfg, 3);
              D.35791 = (int) D.35790;
              vtable_arg->dreg = D.35791;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.35792>; else goto <D.35793>;
              <D.35792>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = vtable_arg;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              vtable_arg->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = vtable_arg;
              goto <D.35794>;
              <D.35793>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = vtable_arg;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.35794>:
            }
            <D.35771>:
            <D.35758>:
            <D.35756>:
            <D.35753>:
            <D.35750>:
            D.35795 = fsig->param_count;
            n = (int) D.35795;
            sp.77 = (long int) sp;
            stack_start.78 = (long int) stack_start;
            D.31451 = sp.77 - stack_start.78;
            D.31452 = D.31451 /[ex] 8;
            D.32681 = (long int) n;
            if (D.31452 < D.32681) goto <D.35796>; else goto <D.35797>;
            <D.35796>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.35798>; else goto <D.35799>;
            <D.35798>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.35800>; else goto <D.35801>;
            <D.35800>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.35801>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.35799>:
            D.35802 = mini_get_debug_options ();
            D.35803 = D.35802->break_on_unverified;
            if (D.35803 != 0) goto <D.35804>; else goto unverified;
            <D.35804>:
            __asm__ __volatile__("int $03");
            <D.35797>:
            bblock.70 = bblock;
            D.35622 = BIT_FIELD_REF <*bblock.70, 8, 1488>;
            D.35623 = D.35622 & 1;
            if (D.35623 != 0) goto <D.35808>; else goto <D.35809>;
            <D.35808>:
            D.32528 = cmethod->klass;
            D.32707 = D.32528->image;
            D.32708 = mono_defaults.corlib;
            if (D.32707 == D.32708) goto <D.35810>; else goto <D.35811>;
            <D.35810>:
            D.32528 = cmethod->klass;
            D.35812 = is_exception_class (D.32528);
            if (D.35812 != 0) goto <D.35813>; else goto <D.35814>;
            <D.35813>:
            if (n <= 2) goto <D.35815>; else goto <D.35816>;
            <D.35815>:
            if (n <= 0) goto <D.35807>; else goto <D.35817>;
            <D.35817>:
            D.35818 = fsig->params[0];
            D.35819 = BIT_FIELD_REF <*D.35818, 16, 80>;
            D.35820 = D.35819 & 16639;
            if (D.35820 == 14) goto <D.35807>; else goto <D.35806>;
            <D.35807>:
            if (n <= 1) goto <D.35805>; else goto <D.35821>;
            <D.35821>:
            D.35822 = fsig->params[1];
            D.35823 = BIT_FIELD_REF <*D.35822, 16, 80>;
            D.35824 = D.35823 & 16639;
            if (D.35824 == 14) goto <D.35805>; else goto <D.35806>;
            <D.35805>:
            {
              struct MonoInst * iargs[3];

              try
                {
                  D.35825 = vtable_arg != 0B;
                  D.35826 = (long int) D.35825;
                  D.35827 = __builtin_expect (D.35826, 0);
                  if (D.35827 != 0) goto <D.35828>; else goto <D.35829>;
                  <D.35828>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9300, "!vtable_arg");
                  <D.35829>:
                  D.31606 = (long unsigned int) n;
                  D.31607 = D.31606 * 8;
                  D.32691 = -D.31607;
                  sp = sp + D.32691;
                  D.30673 = cfg->mempool;
                  D.35830 = mono_mempool_alloc (D.30673, 80);
                  iargs[0] = D.35830;
                  D.35831 = iargs[0];
                  D.35831 = iargs[0];
                  D.35831->data.op[1].const_val = 0;
                  D.35832 = D.35831->data.op[1].const_val;
                  D.35831->data.op[0].const_val = D.35832;
                  D.35831 = iargs[0];
                  D.35831 = iargs[0];
                  D.35831->prev = 0B;
                  D.35833 = D.35831->prev;
                  D.35831->next = D.35833;
                  D.35831 = iargs[0];
                  D.35831->opcode = 362;
                  D.35831 = iargs[0];
                  D.35831->flags = 0;
                  D.35831 = iargs[0];
                  D.35831->type = 0;
                  D.35831 = iargs[0];
                  D.35831->dreg = -1;
                  D.35831 = iargs[0];
                  D.35831 = iargs[0];
                  D.35831 = iargs[0];
                  D.35831->sreg3 = -1;
                  D.35834 = D.35831->sreg3;
                  D.35831->sreg2 = D.35834;
                  D.35835 = D.35831->sreg2;
                  D.35831->sreg1 = D.35835;
                  D.35831 = iargs[0];
                  D.30898 = cfg->ip;
                  D.35831->cil_code = D.30898;
                  D.35831 = iargs[0];
                  D.32528 = cmethod->klass;
                  D.35836 = D.32528->type_token;
                  D.35837 = (long int) D.35836;
                  D.35831->data.op[0].const_val = D.35837;
                  D.35831 = iargs[0];
                  D.35831->type = 1;
                  D.35831 = iargs[0];
                  D.35838 = alloc_dreg (cfg, 1);
                  D.35839 = (int) D.35838;
                  D.35831->dreg = D.35839;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.35840>; else goto <D.35841>;
                  <D.35840>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.35831 = iargs[0];
                  D.30927->next = D.35831;
                  D.35831 = iargs[0];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.35831->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.35831 = iargs[0];
                  bblock.113->last_ins = D.35831;
                  goto <D.35842>;
                  <D.35841>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.35831 = iargs[0];
                  bblock.113->last_ins = D.35831;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.35842>:
                  switch (n) <default: <D.28058>, case 0: <D.28054>, case 1: <D.28056>, case 2: <D.28057>>
                  <D.28054>:
                  sp.165 = sp;
                  sp = sp.165 + 8;
                  D.35844 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_0, &iargs);
                  *sp.165 = D.35844;
                  goto <D.28055>;
                  <D.28056>:
                  D.31680 = *sp;
                  iargs[1] = D.31680;
                  sp.166 = sp;
                  sp = sp.166 + 8;
                  D.35846 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_1, &iargs);
                  *sp.166 = D.35846;
                  goto <D.28055>;
                  <D.28057>:
                  D.31680 = *sp;
                  iargs[1] = D.31680;
                  D.35847 = MEM[(struct MonoInst * *)sp + 8B];
                  iargs[2] = D.35847;
                  sp.167 = sp;
                  sp = sp.167 + 8;
                  D.35849 = mono_emit_jit_icall (cfg, mono_create_corlib_exception_2, &iargs);
                  *sp.167 = D.35849;
                  goto <D.28055>;
                  <D.28058>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9319);
                  <D.28055>:
                  ip = ip + 5;
                  inline_costs = inline_costs + 5;
                  goto <D.27670>;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.35806>:
            <D.35816>:
            <D.35814>:
            <D.35811>:
            <D.35809>:
            goto <D.28060>;
            <D.28059>:
            sp = sp + 18446744073709551608;
            D.32788 = sp + 8;
            D.31680 = *sp;
            *D.32788 = D.31680;
            <D.28060>:
            n.168 = n;
            n = n.168 + -1;
            if (n.168 != 0) goto <D.28059>; else goto <D.28061>;
            <D.28061>:
            this_ins.type = 6;
            *sp = &this_ins;
            D.35851 = check_call_signature (cfg, fsig, sp);
            if (D.35851 != 0) goto <D.35852>; else goto <D.35853>;
            <D.35852>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.35854>; else goto <D.35855>;
            <D.35854>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.35856>; else goto <D.35857>;
            <D.35856>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.35857>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.35855>:
            D.35858 = mini_get_debug_options ();
            D.35859 = D.35858->break_on_unverified;
            if (D.35859 != 0) goto <D.35860>; else goto unverified;
            <D.35860>:
            __asm__ __volatile__("int $03");
            <D.35853>:
            iargs[0] = 0B;
            D.32528 = cmethod->klass;
            D.35861 = mini_class_is_system_array (D.32528);
            if (D.35861 != 0) goto <D.35862>; else goto <D.35863>;
            <D.35862>:
            D.35825 = vtable_arg != 0B;
            D.35826 = (long int) D.35825;
            D.35827 = __builtin_expect (D.35826, 0);
            if (D.35827 != 0) goto <D.35864>; else goto <D.35865>;
            <D.35864>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9342, "!vtable_arg");
            <D.35865>:
            D.35866 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            *sp = D.35866;
            D.35795 = fsig->param_count;
            if (D.35795 == 1) goto <D.35867>; else goto <D.35868>;
            <D.35867>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_1, sp);
            goto <D.35869>;
            <D.35868>:
            D.35795 = fsig->param_count;
            if (D.35795 == 2) goto <D.35870>; else goto <D.35871>;
            <D.35870>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_2, sp);
            goto <D.35872>;
            <D.35871>:
            D.35795 = fsig->param_count;
            if (D.35795 == 3) goto <D.35873>; else goto <D.35874>;
            <D.35873>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_3, sp);
            goto <D.35875>;
            <D.35874>:
            D.35795 = fsig->param_count;
            if (D.35795 == 4) goto <D.35876>; else goto <D.35877>;
            <D.35876>:
            alloc = mono_emit_jit_icall (cfg, mono_array_new_4, sp);
            goto <D.35878>;
            <D.35877>:
            D.35795 = fsig->param_count;
            D.35879 = (int) D.35795;
            alloc = handle_array_new (cfg, D.35879, sp, ip);
            <D.35878>:
            <D.35875>:
            <D.35872>:
            <D.35869>:
            goto <D.35880>;
            <D.35863>:
            D.32651 = BIT_FIELD_REF <*cmethod, 8, 256>;
            D.32652 = D.32651 & 128;
            if (D.32652 != 0) goto <D.35881>; else goto <D.35882>;
            <D.35881>:
            D.33675 = context_used != 0;
            D.35883 = (long int) D.33675;
            D.35884 = __builtin_expect (D.35883, 0);
            if (D.35884 != 0) goto <D.35885>; else goto <D.35886>;
            <D.35885>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9359, "!context_used");
            <D.35886>:
            D.35825 = vtable_arg != 0B;
            D.35826 = (long int) D.35825;
            D.35827 = __builtin_expect (D.35826, 0);
            if (D.35827 != 0) goto <D.35887>; else goto <D.35888>;
            <D.35887>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9360, "!vtable_arg");
            <D.35888>:
            D.30673 = cfg->mempool;
            D.35889 = mono_mempool_alloc (D.30673, 80);
            *sp = D.35889;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->data.op[1].const_val = 0;
            D.33377 = D.31680->data.op[1].const_val;
            D.31680->data.op[0].const_val = D.33377;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->prev = 0B;
            D.33378 = D.31680->prev;
            D.31680->next = D.33378;
            D.31680 = *sp;
            D.31680->opcode = 363;
            D.31680 = *sp;
            D.31680->flags = 0;
            D.31680 = *sp;
            D.31680->type = 0;
            D.31680 = *sp;
            D.31680->dreg = -1;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->sreg3 = -1;
            D.33379 = D.31680->sreg3;
            D.31680->sreg2 = D.33379;
            D.33380 = D.31680->sreg2;
            D.31680->sreg1 = D.33380;
            D.31680 = *sp;
            D.30898 = cfg->ip;
            D.31680->cil_code = D.30898;
            D.31680 = *sp;
            D.31680->data.op[0].p = 0B;
            D.31680 = *sp;
            D.31680->type = 3;
            D.31680 = *sp;
            D.35890 = alloc_dreg (cfg, 3);
            D.35891 = (int) D.35890;
            D.31680->dreg = D.35891;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.35892>; else goto <D.35893>;
            <D.35892>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680 = *sp;
            D.30927->next = D.31680;
            D.31680 = *sp;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            goto <D.35894>;
            <D.35893>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.35894>:
            alloc = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, 0B, 0B, 0B);
            goto <D.35895>;
            <D.35882>:
            {
              struct MonoInst * callvirt_this_arg;

              callvirt_this_arg = 0B;
              D.32528 = cmethod->klass;
              D.32529 = BIT_FIELD_REF <*D.32528, 8, 256>;
              D.32530 = D.32529 & 8;
              if (D.32530 != 0) goto <D.35896>; else goto <D.35897>;
              <D.35896>:
              D.32528 = cmethod->klass;
              D.35898 = &D.32528->byval_arg;
              D.35899 = mono_compile_create_var (cfg, D.35898, 329);
              iargs[0] = D.35899;
              D.32528 = cmethod->klass;
              D.35898 = &D.32528->byval_arg;
              D.35900 = iargs[0];
              D.35901 = D.35900->dreg;
              emit_init_rvar (cfg, D.35901, D.35898);
              D.30673 = cfg->mempool;
              D.35902 = mono_mempool_alloc (D.30673, 80);
              *sp = D.35902;
              D.31680 = *sp;
              D.31680 = *sp;
              D.31680->data.op[1].const_val = 0;
              D.33377 = D.31680->data.op[1].const_val;
              D.31680->data.op[0].const_val = D.33377;
              D.31680 = *sp;
              D.31680 = *sp;
              D.31680->prev = 0B;
              D.33378 = D.31680->prev;
              D.31680->next = D.33378;
              D.31680 = *sp;
              D.31680->opcode = 314;
              D.31680 = *sp;
              D.31680->flags = 0;
              D.31680 = *sp;
              D.31680->type = 0;
              D.31680 = *sp;
              D.31680->dreg = -1;
              D.31680 = *sp;
              D.31680 = *sp;
              D.31680 = *sp;
              D.31680->sreg3 = -1;
              D.33379 = D.31680->sreg3;
              D.31680->sreg2 = D.33379;
              D.33380 = D.31680->sreg2;
              D.31680->sreg1 = D.33380;
              D.31680 = *sp;
              D.30898 = cfg->ip;
              D.31680->cil_code = D.30898;
              D.31680 = *sp;
              D.31416 = cfg->varinfo;
              D.35900 = iargs[0];
              D.35903 = D.35900->data.op[0].const_val;
              D.35904 = (long unsigned int) D.35903;
              D.35905 = D.35904 * 8;
              D.35906 = D.31416 + D.35905;
              D.35907 = *D.35906;
              D.31680->data.op[0].p = D.35907;
              D.31416 = cfg->varinfo;
              D.35900 = iargs[0];
              D.35903 = D.35900->data.op[0].const_val;
              D.35904 = (long unsigned int) D.35903;
              D.35905 = D.35904 * 8;
              D.35906 = D.31416 + D.35905;
              D.35907 = *D.35906;
              D.31416 = cfg->varinfo;
              D.35900 = iargs[0];
              D.35903 = D.35900->data.op[0].const_val;
              D.35904 = (long unsigned int) D.35903;
              D.35905 = D.35904 * 8;
              D.35906 = D.31416 + D.35905;
              D.35907 = *D.35906;
              D.35908 = D.35907->flags;
              D.35909 = D.35908 | 16;
              D.35907->flags = D.35909;
              D.31680 = *sp;
              D.31680->type = 5;
              D.31680 = *sp;
              D.31416 = cfg->varinfo;
              D.35900 = iargs[0];
              D.35903 = D.35900->data.op[0].const_val;
              D.35904 = (long unsigned int) D.35903;
              D.35905 = D.35904 * 8;
              D.35906 = D.31416 + D.35905;
              D.35907 = *D.35906;
              D.35910 = D.35907->klass;
              D.31680->klass = D.35910;
              D.31680 = *sp;
              D.35911 = alloc_dreg (cfg, 5);
              D.35912 = (int) D.35911;
              D.31680->dreg = D.35912;
              cfg->has_indirection = 1;
              D.30822 = cfg->gsharedvt;
              D.31766 = D.30822 != 0;
              D.31767 = (long int) D.31766;
              D.31768 = __builtin_expect (D.31767, 0);
              if (D.31768 != 0) goto <D.35913>; else goto <D.35914>;
              <D.35913>:
              D.31416 = cfg->varinfo;
              D.35900 = iargs[0];
              D.35903 = D.35900->data.op[0].const_val;
              D.35904 = (long unsigned int) D.35903;
              D.35905 = D.35904 * 8;
              D.35906 = D.31416 + D.35905;
              D.35907 = *D.35906;
              D.35915 = D.35907->data.op[1].vtype;
              D.35916 = mini_is_gsharedvt_variable_type (cfg, D.35915);
              if (D.35916 != 0) goto <D.35917>; else goto <D.35918>;
              <D.35917>:
              handle_gsharedvt_ldaddr (cfg);
              <D.35918>:
              <D.35914>:
              if (0 != 0) goto <D.35919>; else goto <D.35920>;
              <D.35919>:
              {
                struct MonoInst * var1;
                struct MonoInst * var2;

                D.31416 = cfg->varinfo;
                D.35900 = iargs[0];
                D.35903 = D.35900->data.op[0].const_val;
                D.35904 = (long unsigned int) D.35903;
                D.35905 = D.35904 * 8;
                D.35906 = D.31416 + D.35905;
                D.35907 = *D.35906;
                D.35922 = D.35907->dreg;
                D.35923 = D.35922 + 1;
                D.35924 = (unsigned int) D.35923;
                D.31781 = cfg->vreg_to_inst_len;
                if (D.35924 < D.31781) goto <D.35925>; else goto <D.35926>;
                <D.35925>:
                D.31784 = cfg->vreg_to_inst;
                D.31416 = cfg->varinfo;
                D.35900 = iargs[0];
                D.35903 = D.35900->data.op[0].const_val;
                D.35904 = (long unsigned int) D.35903;
                D.35905 = D.35904 * 8;
                D.35906 = D.31416 + D.35905;
                D.35907 = *D.35906;
                D.35922 = D.35907->dreg;
                D.35927 = (sizetype) D.35922;
                D.35928 = D.35927 + 1;
                D.35929 = D.35928 * 8;
                D.35930 = D.31784 + D.35929;
                iftmp.169 = *D.35930;
                goto <D.35931>;
                <D.35926>:
                iftmp.169 = 0B;
                <D.35931>:
                var1 = iftmp.169;
                D.31416 = cfg->varinfo;
                D.35900 = iargs[0];
                D.35903 = D.35900->data.op[0].const_val;
                D.35904 = (long unsigned int) D.35903;
                D.35905 = D.35904 * 8;
                D.35906 = D.31416 + D.35905;
                D.35907 = *D.35906;
                D.35922 = D.35907->dreg;
                D.35933 = D.35922 + 2;
                D.35934 = (unsigned int) D.35933;
                D.31781 = cfg->vreg_to_inst_len;
                if (D.35934 < D.31781) goto <D.35935>; else goto <D.35936>;
                <D.35935>:
                D.31784 = cfg->vreg_to_inst;
                D.31416 = cfg->varinfo;
                D.35900 = iargs[0];
                D.35903 = D.35900->data.op[0].const_val;
                D.35904 = (long unsigned int) D.35903;
                D.35905 = D.35904 * 8;
                D.35906 = D.31416 + D.35905;
                D.35907 = *D.35906;
                D.35922 = D.35907->dreg;
                D.35927 = (sizetype) D.35922;
                D.35937 = D.35927 + 2;
                D.35938 = D.35937 * 8;
                D.35939 = D.31784 + D.35938;
                iftmp.170 = *D.35939;
                goto <D.35940>;
                <D.35936>:
                iftmp.170 = 0B;
                <D.35940>:
                var2 = iftmp.170;
                D.35941 = var1 == 0B;
                D.35942 = (long int) D.35941;
                D.35943 = __builtin_expect (D.35942, 0);
                if (D.35943 != 0) goto <D.35944>; else goto <D.35945>;
                <D.35944>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9371, "var1");
                <D.35945>:
                D.35946 = var2 == 0B;
                D.35947 = (long int) D.35946;
                D.35948 = __builtin_expect (D.35947, 0);
                if (D.35948 != 0) goto <D.35949>; else goto <D.35950>;
                <D.35949>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9371, "var2");
                <D.35950>:
                D.35951 = var1->flags;
                D.35952 = D.35951 | 16;
                var1->flags = D.35952;
                D.35953 = var2->flags;
                D.35954 = D.35953 | 16;
                var2->flags = D.35954;
              }
              <D.35920>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.35955>; else goto <D.35956>;
              <D.35955>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.31680 = *sp;
              D.30927->next = D.31680;
              D.31680 = *sp;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.31680->prev = D.30927;
              bblock.113 = cfg->cbb;
              D.31680 = *sp;
              bblock.113->last_ins = D.31680;
              goto <D.35957>;
              <D.35956>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              D.31680 = *sp;
              bblock.113->last_ins = D.31680;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.35957>:
              alloc = 0B;
              goto <D.35958>;
              <D.35897>:
              if (context_used != 0) goto <D.35959>; else goto <D.35960>;
              <D.35959>:
              D.32528 = cmethod->klass;
              alloc = handle_alloc (cfg, D.32528, 0, context_used);
              *sp = alloc;
              goto <D.35961>;
              <D.35960>:
              {
                struct MonoVTable * vtable;

                vtable = 0B;
                D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
                D.31073 = D.31072 & 64;
                if (D.31073 == 0) goto <D.35962>; else goto <D.35963>;
                <D.35962>:
                D.32528 = cmethod->klass;
                D.30697 = cfg->domain;
                vtable = mono_class_vtable (D.30697, D.32528);
                <D.35963>:
                D.32528 = cmethod->klass;
                if (D.32528 == 0B) goto <D.35964>; else goto <D.35966>;
                <D.35966>:
                D.32528 = cmethod->klass;
                D.33080 = D.32528->exception_type;
                if (D.33080 != 0) goto <D.35964>; else goto <D.35965>;
                <D.35964>:
                D.32528 = cmethod->klass;
                cfg->exception_ptr = D.32528;
                D.35967 = mini_get_debug_options ();
                D.35968 = D.35967->break_on_unverified;
                if (D.35968 != 0) goto <D.35969>; else goto load_error;
                <D.35969>:
                __asm__ __volatile__("int $03");
                <D.35965>:
                D.32528 = cmethod->klass;
                D.35970 = mini_field_access_needs_cctor_run (cfg, method, D.32528, vtable);
                if (D.35970 != 0) goto <D.35971>; else goto <D.35972>;
                <D.35971>:
                D.32528 = cmethod->klass;
                D.35973 = monoeg_g_slist_find (class_inits, D.32528);
                if (D.35973 == 0B) goto <D.35974>; else goto <D.35975>;
                <D.35974>:
                helper_sig_class_init_trampoline.171 = helper_sig_class_init_trampoline;
                D.32528 = cmethod->klass;
                mono_emit_abs_call (cfg, 15, D.32528, helper_sig_class_init_trampoline.171, 0B);
                D.30753 = cfg->verbose_level;
                if (D.30753 > 2) goto <D.35977>; else goto <D.35978>;
                <D.35977>:
                D.32528 = cmethod->klass;
                D.35979 = D.32528->name;
                D.32528 = cmethod->klass;
                D.35980 = D.32528->name_space;
                printf ("class %s.%s needs init call for ctor\n", D.35980, D.35979);
                <D.35978>:
                D.32528 = cmethod->klass;
                class_inits = monoeg_g_slist_prepend (class_inits, D.32528);
                <D.35975>:
                <D.35972>:
                D.32528 = cmethod->klass;
                alloc = handle_alloc (cfg, D.32528, 0, 0);
                *sp = alloc;
              }
              <D.35961>:
              <D.35958>:
              D.31231 = cfg->exception_type;
              if (D.31231 != 0) goto exception_exit; else goto <D.35981>;
              <D.35981>:
              if (alloc != 0B) goto <D.35982>; else goto <D.35983>;
              <D.35982>:
              {
                struct MonoInst * inst;

                D.30673 = cfg->mempool;
                inst = mono_mempool_alloc (D.30673, 80);
                inst->data.op[1].const_val = 0;
                D.35984 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.35984;
                inst->prev = 0B;
                D.35985 = inst->prev;
                inst->next = D.35985;
                inst->opcode = 803;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.35986 = inst->sreg3;
                inst->sreg2 = D.35986;
                D.35987 = inst->sreg2;
                inst->sreg1 = D.35987;
                D.30898 = cfg->ip;
                inst->cil_code = D.30898;
                inst->dreg = -1;
                D.35988 = alloc->dreg;
                inst->sreg1 = D.35988;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                if (D.30927 != 0B) goto <D.35989>; else goto <D.35990>;
                <D.35989>:
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                D.30927->next = inst;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                inst->prev = D.30927;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                goto <D.35991>;
                <D.35990>:
                bblock.113 = cfg->cbb;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                D.30927 = bblock.113->last_ins;
                bblock.113->code = D.30927;
                <D.35991>:
              }
              <D.35983>:
              D.32528 = cmethod->klass;
              D.32571 = BIT_FIELD_REF <*D.32528, 8, 272>;
              D.32572 = D.32571 & 64;
              if (D.32572 != 0) goto <D.35992>; else goto <D.35993>;
              <D.35992>:
              callvirt_this_arg = *sp;
              <D.35993>:
              if (cmethod != 0B) goto <D.35996>; else goto <D.35994>;
              <D.35996>:
              D.31070 = cfg->opt;
              D.33054 = D.31070 & 2048;
              if (D.33054 != 0) goto <D.35997>; else goto <D.35994>;
              <D.35997>:
              ins = mini_emit_inst_for_ctor (cfg, cmethod, fsig, sp);
              if (ins != 0B) goto <D.35998>; else goto <D.35994>;
              <D.35998>:
              D.35999 = fsig->ret;
              D.36000 = mono_type_is_void (D.35999);
              if (D.36000 == 0) goto <D.36001>; else goto <D.36002>;
              <D.36001>:
              D.35999 = fsig->ret;
              type_to_eval_stack_type (cfg, D.35999, ins);
              *sp = ins;
              sp = sp + 8;
              <D.36002>:
              D.31231 = cfg->exception_type;
              if (D.31231 != 0) goto exception_exit; else goto <D.36003>;
              <D.36003>:
              goto <D.35995>;
              <D.35994>:
              D.31070 = cfg->opt;
              D.33494 = D.31070 & 4;
              if (D.33494 != 0) goto <D.36006>; else goto <D.36004>;
              <D.36006>:
              D.33213 = cmethod != 0B;
              D.33750 = context_used == 0;
              D.36007 = D.33213 & D.33750;
              if (D.36007 != 0) goto <D.36008>; else goto <D.36004>;
              <D.36008>:
              D.36009 = vtable_arg == 0B;
              D.36010 = disable_inline == 0;
              D.36011 = D.36009 & D.36010;
              if (D.36011 != 0) goto <D.36012>; else goto <D.36004>;
              <D.36012>:
              D.36013 = mono_method_check_inlining (cfg, cmethod);
              if (D.36013 != 0) goto <D.36014>; else goto <D.36004>;
              <D.36014>:
              D.36015 = mono_defaults.exception_class;
              D.32528 = cmethod->klass;
              D.36016 = mono_class_is_subclass_of (D.32528, D.36015, 0);
              if (D.36016 == 0) goto <D.36017>; else goto <D.36004>;
              <D.36017>:
              D.36018 = monoeg_g_list_find (dont_inline, cmethod);
              if (D.36018 == 0B) goto <D.36019>; else goto <D.36004>;
              <D.36019>:
              {
                int costs;

                D.30841 = cfg->real_offset;
                costs = inline_method (cfg, cmethod, fsig, sp, ip, D.30841, dont_inline, 0);
                if (costs != 0) goto <D.36020>; else goto <D.36021>;
                <D.36020>:
                D.30841 = cfg->real_offset;
                D.33521 = D.30841 + 5;
                cfg->real_offset = D.33521;
                bblock.113 = cfg->cbb;
                bblock = bblock.113;
                D.36022 = costs + -5;
                inline_costs = D.36022 + inline_costs;
                goto <D.36023>;
                <D.36021>:
                D.30642 = cfg->method;
                if (D.30642 != method) goto <D.36024>; else goto <D.36025>;
                <D.36024>:
                D.30614 = BIT_FIELD_REF <*method, 8, 256>;
                D.30615 = D.30614 & 124;
                if (D.30615 == 0) goto <D.36026>; else goto <D.36027>;
                <D.36026>:
                D.30753 = cfg->verbose_level;
                if (D.30753 > 1) goto <D.36028>; else goto <D.36029>;
                <D.36028>:
                printf ("inline failed: %s\n", "inline failure");
                <D.36029>:
                goto inline_failure;
                <D.36027>:
                <D.36025>:
                D.30822 = cfg->gsharedvt;
                if (D.30822 != 0) goto <D.36030>; else goto <D.36031>;
                <D.36030>:
                D.36032 = mini_is_gsharedvt_signature (cfg, fsig);
                if (D.36032 != 0) goto <D.36033>; else goto <D.36034>;
                <D.36033>:
                D.30822 = cfg->gsharedvt;
                if (D.30822 != 0) goto <D.36035>; else goto <D.36036>;
                <D.36035>:
                D.31560 = *ip;
                D.31561 = (int) D.31560;
                D.36037 = mono_opcode_name (D.31561);
                D.32333 = method->signature;
                D.32334 = D.32333->param_count;
                D.32335 = (int) D.32334;
                D.32336 = method->name;
                D.30609 = method->klass;
                D.32337 = D.30609->name;
                D.30609 = method->klass;
                D.32338 = D.30609->name_space;
                D.36038 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.36037, "method-to-ir.c", 9439);
                cfg->exception_message = D.36038;
                D.30753 = cfg->verbose_level;
                if (D.30753 > 1) goto <D.36039>; else goto <D.36040>;
                <D.36039>:
                D.32342 = cfg->exception_message;
                printf ("%s\n", D.32342);
                <D.36040>:
                mono_cfg_set_exception (cfg, 11);
                goto exception_exit;
                <D.36036>:
                <D.36034>:
                <D.36031>:
                mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, callvirt_this_arg, 0B, 0B);
                <D.36023>:
              }
              goto <D.36005>;
              <D.36004>:
              D.30822 = cfg->gsharedvt;
              if (D.30822 != 0) goto <D.36043>; else goto <D.36041>;
              <D.36043>:
              D.36044 = mini_is_gsharedvt_signature (cfg, fsig);
              if (D.36044 != 0) goto <D.36045>; else goto <D.36041>;
              <D.36045>:
              {
                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.36042>;
              <D.36041>:
              if (context_used != 0) goto <D.36049>; else goto <D.36046>;
              <D.36049>:
              D.36050 = mono_method_is_generic_sharable (cmethod, 1);
              if (D.36050 == 0) goto <D.36047>; else goto <D.36051>;
              <D.36051>:
              D.32528 = cmethod->klass;
              D.36052 = mono_class_generic_sharing_enabled (D.32528);
              if (D.36052 == 0) goto <D.36047>; else goto <D.36046>;
              <D.36047>:
              {
                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.36048>;
              <D.36046>:
              D.30642 = cfg->method;
              if (D.30642 != method) goto <D.36053>; else goto <D.36054>;
              <D.36053>:
              D.30614 = BIT_FIELD_REF <*method, 8, 256>;
              D.30615 = D.30614 & 124;
              if (D.30615 == 0) goto <D.36055>; else goto <D.36056>;
              <D.36055>:
              D.30753 = cfg->verbose_level;
              if (D.30753 > 1) goto <D.36057>; else goto <D.36058>;
              <D.36057>:
              printf ("inline failed: %s\n", "ctor call");
              <D.36058>:
              goto inline_failure;
              <D.36056>:
              <D.36054>:
              ins = mono_emit_method_call_full (cfg, cmethod, fsig, 0, sp, callvirt_this_arg, 0B, vtable_arg);
              <D.36048>:
              <D.36042>:
              <D.36005>:
              <D.35995>:
            }
            <D.35895>:
            <D.35880>:
            if (alloc == 0B) goto <D.36059>; else goto <D.36060>;
            <D.36059>:
            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.30894 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30894;
            ins->prev = 0B;
            D.30895 = ins->prev;
            ins->next = D.30895;
            ins->opcode = 428;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30896 = ins->sreg3;
            ins->sreg2 = D.30896;
            D.30897 = ins->sreg2;
            ins->sreg1 = D.30897;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            D.31416 = cfg->varinfo;
            D.35900 = iargs[0];
            D.35903 = D.35900->data.op[0].const_val;
            D.35904 = (long unsigned int) D.35903;
            D.35905 = D.35904 * 8;
            D.35906 = D.31416 + D.35905;
            D.35907 = *D.35906;
            D.35915 = D.35907->data.op[1].vtype;
            D.36061 = mono_type_to_regmove (cfg, D.35915);
            D.36062 = (short unsigned int) D.36061;
            ins->opcode = D.36062;
            D.31416 = cfg->varinfo;
            D.35900 = iargs[0];
            D.35903 = D.35900->data.op[0].const_val;
            D.35904 = (long unsigned int) D.35903;
            D.35905 = D.35904 * 8;
            D.35906 = D.31416 + D.35905;
            D.35907 = *D.35906;
            D.35915 = D.35907->data.op[1].vtype;
            type_to_eval_stack_type (cfg, D.35915, ins);
            D.31416 = cfg->varinfo;
            D.35900 = iargs[0];
            D.35903 = D.35900->data.op[0].const_val;
            D.35904 = (long unsigned int) D.35903;
            D.35905 = D.35904 * 8;
            D.35906 = D.31416 + D.35905;
            D.35907 = *D.35906;
            D.35910 = D.35907->klass;
            ins->klass = D.35910;
            D.31416 = cfg->varinfo;
            D.35900 = iargs[0];
            D.35903 = D.35900->data.op[0].const_val;
            D.35904 = (long unsigned int) D.35903;
            D.35905 = D.35904 * 8;
            D.35906 = D.31416 + D.35905;
            D.35907 = *D.35906;
            D.35922 = D.35907->dreg;
            ins->sreg1 = D.35922;
            D.31426 = ins->type;
            D.31427 = (<unnamed type>) D.31426;
            D.36063 = alloc_dreg (cfg, D.31427);
            D.36064 = (int) D.36063;
            ins->dreg = D.36064;
            D.31430 = ins->opcode;
            if (D.31430 == 431) goto <D.36065>; else goto <D.36066>;
            <D.36065>:
            D.31416 = cfg->varinfo;
            D.35900 = iargs[0];
            D.35903 = D.35900->data.op[0].const_val;
            D.35904 = (long unsigned int) D.35903;
            D.35905 = D.35904 * 8;
            D.35906 = D.31416 + D.35905;
            D.35907 = *D.35906;
            D.35915 = D.35907->data.op[1].vtype;
            D.36067 = mono_class_from_mono_type (D.35915);
            ins->klass = D.36067;
            <D.36066>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36068>; else goto <D.36069>;
            <D.36068>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.36070>;
            <D.36069>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36070>:
            D.36071 = ins->klass;
            D.36072 = &D.36071->byval_arg;
            type_to_eval_stack_type (cfg, D.36072, ins);
            sp.172 = sp;
            sp = sp.172 + 8;
            *sp.172 = ins;
            goto <D.36074>;
            <D.36060>:
            sp.173 = sp;
            sp = sp.173 + 8;
            *sp.173 = alloc;
            <D.36074>:
            ip = ip + 5;
            inline_costs = inline_costs + 5;
            goto <D.27670>;
          }
        finally
          {
            iargs = {CLOBBER};
            this_ins = {CLOBBER};
          }
      }
      <D.28070>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.36076>; else goto <D.36077>;
      <D.36076>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.36078>; else goto <D.36079>;
      <D.36078>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.36080>; else goto <D.36081>;
      <D.36080>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36081>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36079>:
      D.36082 = mini_get_debug_options ();
      D.36083 = D.36082->break_on_unverified;
      if (D.36083 != 0) goto <D.36084>; else goto unverified;
      <D.36084>:
      __asm__ __volatile__("int $03");
      <D.36077>:
      sp = sp + 18446744073709551608;
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.36085>; else goto <D.36086>;
      <D.36085>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.36087>; else goto <D.36088>;
      <D.36087>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.36089>; else goto <D.36090>;
      <D.36089>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36090>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36088>:
      D.36091 = mini_get_debug_options ();
      D.36092 = D.36091->break_on_unverified;
      if (D.36092 != 0) goto <D.36093>; else goto unverified;
      <D.36093>:
      __asm__ __volatile__("int $03");
      <D.36086>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.174 = mini_get_class (method, token, generic_context);
      klass = klass.174;
      klass.155 = klass;
      if (klass.155 == 0B) goto <D.36095>; else goto <D.36097>;
      <D.36097>:
      klass.155 = klass;
      D.35388 = klass.155->exception_type;
      if (D.35388 != 0) goto <D.36095>; else goto <D.36096>;
      <D.36095>:
      klass.155 = klass;
      cfg->exception_ptr = klass.155;
      D.36098 = mini_get_debug_options ();
      D.36099 = D.36098->break_on_unverified;
      if (D.36099 != 0) goto <D.36100>; else goto load_error;
      <D.36100>:
      __asm__ __volatile__("int $03");
      <D.36096>:
      D.31680 = *sp;
      D.33383 = D.31680->type;
      if (D.33383 != 6) goto <D.36101>; else goto <D.36102>;
      <D.36101>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.36103>; else goto <D.36104>;
      <D.36103>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.36105>; else goto <D.36106>;
      <D.36105>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36106>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36104>:
      D.36107 = mini_get_debug_options ();
      D.36108 = D.36107->break_on_unverified;
      if (D.36108 != 0) goto <D.36109>; else goto unverified;
      <D.36109>:
      __asm__ __volatile__("int $03");
      <D.36102>:
      klass.155 = klass;
      context_used = mini_class_check_context_used (cfg, klass.155);
      if (context_used == 0) goto <D.36112>; else goto <D.36110>;
      <D.36112>:
      klass.155 = klass;
      D.36113 = mini_class_has_reference_variant_generic_argument (cfg, klass.155, context_used);
      if (D.36113 != 0) goto <D.36114>; else goto <D.36110>;
      <D.36114>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * args[3];

        try
          {
            mono_castclass = mono_marshal_get_castclass_with_cache ();
            D.31680 = *sp;
            args[0] = D.31680;
            D.30673 = cfg->mempool;
            D.36115 = mono_mempool_alloc (D.30673, 80);
            args[1] = D.36115;
            D.36116 = args[1];
            D.36116 = args[1];
            D.36116->data.op[1].const_val = 0;
            D.36117 = D.36116->data.op[1].const_val;
            D.36116->data.op[0].const_val = D.36117;
            D.36116 = args[1];
            D.36116 = args[1];
            D.36116->prev = 0B;
            D.36118 = D.36116->prev;
            D.36116->next = D.36118;
            D.36116 = args[1];
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.36120>; else goto <D.36121>;
            <D.36120>:
            iftmp.175 = 736;
            goto <D.36122>;
            <D.36121>:
            iftmp.175 = 363;
            <D.36122>:
            D.36116->opcode = iftmp.175;
            D.36116 = args[1];
            D.36116->flags = 0;
            D.36116 = args[1];
            D.36116->type = 0;
            D.36116 = args[1];
            D.36116->dreg = -1;
            D.36116 = args[1];
            D.36116 = args[1];
            D.36116 = args[1];
            D.36116->sreg3 = -1;
            D.36123 = D.36116->sreg3;
            D.36116->sreg2 = D.36123;
            D.36124 = D.36116->sreg2;
            D.36116->sreg1 = D.36124;
            D.36116 = args[1];
            D.30898 = cfg->ip;
            D.36116->cil_code = D.30898;
            D.36116 = args[1];
            klass.155 = klass;
            D.36116->data.op[0].p = klass.155;
            D.36116 = args[1];
            D.36116->data.op[1].src = 11B;
            D.36116 = args[1];
            D.36116->type = 3;
            D.36116 = args[1];
            D.36125 = alloc_dreg (cfg, 3);
            D.36126 = (int) D.36125;
            D.36116->dreg = D.36126;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36127>; else goto <D.36128>;
            <D.36127>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36116 = args[1];
            D.30927->next = D.36116;
            D.36116 = args[1];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36116->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.36116 = args[1];
            bblock.113->last_ins = D.36116;
            goto <D.36129>;
            <D.36128>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.36116 = args[1];
            bblock.113->last_ins = D.36116;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36129>:
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.36130>; else goto <D.36131>;
            <D.36130>:
            D.30673 = cfg->mempool;
            D.36132 = mono_mempool_alloc (D.30673, 80);
            args[2] = D.36132;
            D.36133 = args[2];
            D.36133 = args[2];
            D.36133->data.op[1].const_val = 0;
            D.36134 = D.36133->data.op[1].const_val;
            D.36133->data.op[0].const_val = D.36134;
            D.36133 = args[2];
            D.36133 = args[2];
            D.36133->prev = 0B;
            D.36135 = D.36133->prev;
            D.36133->next = D.36135;
            D.36133 = args[2];
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.36137>; else goto <D.36138>;
            <D.36137>:
            iftmp.176 = 736;
            goto <D.36139>;
            <D.36138>:
            iftmp.176 = 363;
            <D.36139>:
            D.36133->opcode = iftmp.176;
            D.36133 = args[2];
            D.36133->flags = 0;
            D.36133 = args[2];
            D.36133->type = 0;
            D.36133 = args[2];
            D.36133->dreg = -1;
            D.36133 = args[2];
            D.36133 = args[2];
            D.36133 = args[2];
            D.36133->sreg3 = -1;
            D.36140 = D.36133->sreg3;
            D.36133->sreg2 = D.36140;
            D.36141 = D.36133->sreg2;
            D.36133->sreg1 = D.36141;
            D.36133 = args[2];
            D.30898 = cfg->ip;
            D.36133->cil_code = D.30898;
            D.36133 = args[2];
            D.36133->data.op[0].p = 0B;
            D.36133 = args[2];
            D.36133->data.op[1].src = 43B;
            D.36133 = args[2];
            D.36133->type = 3;
            D.36133 = args[2];
            D.36142 = alloc_dreg (cfg, 3);
            D.36143 = (int) D.36142;
            D.36133->dreg = D.36143;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36144>; else goto <D.36145>;
            <D.36144>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36133 = args[2];
            D.30927->next = D.36133;
            D.36133 = args[2];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36133->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.36133 = args[2];
            bblock.113->last_ins = D.36133;
            goto <D.36146>;
            <D.36145>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.36133 = args[2];
            bblock.113->last_ins = D.36133;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36146>:
            goto <D.36147>;
            <D.36131>:
            D.30673 = cfg->mempool;
            D.36148 = mono_mempool_alloc (D.30673, 80);
            args[2] = D.36148;
            D.36133 = args[2];
            D.36133 = args[2];
            D.36133->data.op[1].const_val = 0;
            D.36134 = D.36133->data.op[1].const_val;
            D.36133->data.op[0].const_val = D.36134;
            D.36133 = args[2];
            D.36133 = args[2];
            D.36133->prev = 0B;
            D.36135 = D.36133->prev;
            D.36133->next = D.36135;
            D.36133 = args[2];
            D.36133->opcode = 363;
            D.36133 = args[2];
            D.36133->flags = 0;
            D.36133 = args[2];
            D.36133->type = 0;
            D.36133 = args[2];
            D.36133->dreg = -1;
            D.36133 = args[2];
            D.36133 = args[2];
            D.36133 = args[2];
            D.36133->sreg3 = -1;
            D.36140 = D.36133->sreg3;
            D.36133->sreg2 = D.36140;
            D.36141 = D.36133->sreg2;
            D.36133->sreg1 = D.36141;
            D.36133 = args[2];
            D.30898 = cfg->ip;
            D.36133->cil_code = D.30898;
            D.36133 = args[2];
            D.30697 = cfg->domain;
            D.36149 = mono_domain_alloc0 (D.30697, 8);
            D.36133->data.op[0].p = D.36149;
            D.36133 = args[2];
            D.36133->type = 3;
            D.36133 = args[2];
            D.36150 = alloc_dreg (cfg, 3);
            D.36151 = (int) D.36150;
            D.36133->dreg = D.36151;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36152>; else goto <D.36153>;
            <D.36152>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36133 = args[2];
            D.30927->next = D.36133;
            D.36133 = args[2];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36133->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.36133 = args[2];
            bblock.113->last_ins = D.36133;
            goto <D.36154>;
            <D.36153>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.36133 = args[2];
            bblock.113->last_ins = D.36133;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36154>:
            <D.36147>:
            D.31680 = *sp;
            D.31862 = D.31680->dreg;
            klass.155 = klass;
            save_cast_details (cfg, klass.155, D.31862, 1, &bblock);
            sp.177 = sp;
            sp = sp.177 + 8;
            D.36156 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
            *sp.177 = D.36156;
            reset_cast_details (cfg);
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.36111>;
      <D.36110>:
      if (context_used == 0) goto <D.36160>; else goto <D.36157>;
      <D.36160>:
      klass.155 = klass;
      D.36161 = BIT_FIELD_REF <*klass.155, 8, 272>;
      D.36162 = D.36161 & 64;
      if (D.36162 != 0) goto <D.36158>; else goto <D.36163>;
      <D.36163>:
      klass.155 = klass;
      D.36164 = klass.155->flags;
      D.36165 = D.36164 & 32;
      if (D.36165 != 0) goto <D.36158>; else goto <D.36157>;
      <D.36158>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.155 = klass;
            mono_castclass = mono_marshal_get_castclass (klass.155);
            D.31680 = *sp;
            iargs[0] = D.31680;
            D.31680 = *sp;
            D.31862 = D.31680->dreg;
            klass.155 = klass;
            save_cast_details (cfg, klass.155, D.31862, 1, &bblock);
            D.30841 = cfg->real_offset;
            D.36166 = mono_method_signature (mono_castclass);
            costs = inline_method (cfg, mono_castclass, D.36166, &iargs, ip, D.30841, dont_inline, 1);
            reset_cast_details (cfg);
            D.31231 = cfg->exception_type;
            if (D.31231 != 0) goto exception_exit; else goto <D.36167>;
            <D.36167>:
            D.36168 = costs <= 0;
            D.36169 = (long int) D.36168;
            D.36170 = __builtin_expect (D.36169, 0);
            if (D.36170 != 0) goto <D.36171>; else goto <D.36172>;
            <D.36171>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9524, "costs > 0");
            <D.36172>:
            ip = ip + 5;
            D.30841 = cfg->real_offset;
            D.33521 = D.30841 + 5;
            cfg->real_offset = D.33521;
            bblock.113 = cfg->cbb;
            bblock = bblock.113;
            sp.178 = sp;
            sp = sp.178 + 8;
            D.36174 = iargs[0];
            *sp.178 = D.36174;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.36159>;
      <D.36157>:
      D.31680 = *sp;
      klass.155 = klass;
      ins = handle_castclass (cfg, klass.155, D.31680, context_used);
      D.31231 = cfg->exception_type;
      if (D.31231 != 0) goto exception_exit; else goto <D.36175>;
      <D.36175>:
      bblock.113 = cfg->cbb;
      bblock = bblock.113;
      sp.179 = sp;
      sp = sp.179 + 8;
      *sp.179 = ins;
      ip = ip + 5;
      <D.36159>:
      <D.36111>:
      goto <D.27670>;
      <D.28076>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.36177>; else goto <D.36178>;
      <D.36177>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.36179>; else goto <D.36180>;
      <D.36179>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.36181>; else goto <D.36182>;
      <D.36181>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36182>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36180>:
      D.36183 = mini_get_debug_options ();
      D.36184 = D.36183->break_on_unverified;
      if (D.36184 != 0) goto <D.36185>; else goto unverified;
      <D.36185>:
      __asm__ __volatile__("int $03");
      <D.36178>:
      sp = sp + 18446744073709551608;
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.36186>; else goto <D.36187>;
      <D.36186>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.36188>; else goto <D.36189>;
      <D.36188>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.36190>; else goto <D.36191>;
      <D.36190>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36191>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36189>:
      D.36192 = mini_get_debug_options ();
      D.36193 = D.36192->break_on_unverified;
      if (D.36193 != 0) goto <D.36194>; else goto unverified;
      <D.36194>:
      __asm__ __volatile__("int $03");
      <D.36187>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.180 = mini_get_class (method, token, generic_context);
      klass = klass.180;
      klass.155 = klass;
      if (klass.155 == 0B) goto <D.36196>; else goto <D.36198>;
      <D.36198>:
      klass.155 = klass;
      D.35388 = klass.155->exception_type;
      if (D.35388 != 0) goto <D.36196>; else goto <D.36197>;
      <D.36196>:
      klass.155 = klass;
      cfg->exception_ptr = klass.155;
      D.36199 = mini_get_debug_options ();
      D.36200 = D.36199->break_on_unverified;
      if (D.36200 != 0) goto <D.36201>; else goto load_error;
      <D.36201>:
      __asm__ __volatile__("int $03");
      <D.36197>:
      D.31680 = *sp;
      D.33383 = D.31680->type;
      if (D.33383 != 6) goto <D.36202>; else goto <D.36203>;
      <D.36202>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.36204>; else goto <D.36205>;
      <D.36204>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.36206>; else goto <D.36207>;
      <D.36206>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36207>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36205>:
      D.36208 = mini_get_debug_options ();
      D.36209 = D.36208->break_on_unverified;
      if (D.36209 != 0) goto <D.36210>; else goto unverified;
      <D.36210>:
      __asm__ __volatile__("int $03");
      <D.36203>:
      klass.155 = klass;
      context_used = mini_class_check_context_used (cfg, klass.155);
      if (context_used == 0) goto <D.36213>; else goto <D.36211>;
      <D.36213>:
      klass.155 = klass;
      D.36214 = mini_class_has_reference_variant_generic_argument (cfg, klass.155, context_used);
      if (D.36214 != 0) goto <D.36215>; else goto <D.36211>;
      <D.36215>:
      {
        struct MonoMethod * mono_isinst;
        struct MonoInst * args[3];

        try
          {
            mono_isinst = mono_marshal_get_isinst_with_cache ();
            D.31680 = *sp;
            args[0] = D.31680;
            D.30673 = cfg->mempool;
            D.36216 = mono_mempool_alloc (D.30673, 80);
            args[1] = D.36216;
            D.36217 = args[1];
            D.36217 = args[1];
            D.36217->data.op[1].const_val = 0;
            D.36218 = D.36217->data.op[1].const_val;
            D.36217->data.op[0].const_val = D.36218;
            D.36217 = args[1];
            D.36217 = args[1];
            D.36217->prev = 0B;
            D.36219 = D.36217->prev;
            D.36217->next = D.36219;
            D.36217 = args[1];
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.36221>; else goto <D.36222>;
            <D.36221>:
            iftmp.181 = 736;
            goto <D.36223>;
            <D.36222>:
            iftmp.181 = 363;
            <D.36223>:
            D.36217->opcode = iftmp.181;
            D.36217 = args[1];
            D.36217->flags = 0;
            D.36217 = args[1];
            D.36217->type = 0;
            D.36217 = args[1];
            D.36217->dreg = -1;
            D.36217 = args[1];
            D.36217 = args[1];
            D.36217 = args[1];
            D.36217->sreg3 = -1;
            D.36224 = D.36217->sreg3;
            D.36217->sreg2 = D.36224;
            D.36225 = D.36217->sreg2;
            D.36217->sreg1 = D.36225;
            D.36217 = args[1];
            D.30898 = cfg->ip;
            D.36217->cil_code = D.30898;
            D.36217 = args[1];
            klass.155 = klass;
            D.36217->data.op[0].p = klass.155;
            D.36217 = args[1];
            D.36217->data.op[1].src = 11B;
            D.36217 = args[1];
            D.36217->type = 3;
            D.36217 = args[1];
            D.36226 = alloc_dreg (cfg, 3);
            D.36227 = (int) D.36226;
            D.36217->dreg = D.36227;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36228>; else goto <D.36229>;
            <D.36228>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36217 = args[1];
            D.30927->next = D.36217;
            D.36217 = args[1];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36217->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.36217 = args[1];
            bblock.113->last_ins = D.36217;
            goto <D.36230>;
            <D.36229>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.36217 = args[1];
            bblock.113->last_ins = D.36217;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36230>:
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.36231>; else goto <D.36232>;
            <D.36231>:
            D.30673 = cfg->mempool;
            D.36233 = mono_mempool_alloc (D.30673, 80);
            args[2] = D.36233;
            D.36234 = args[2];
            D.36234 = args[2];
            D.36234->data.op[1].const_val = 0;
            D.36235 = D.36234->data.op[1].const_val;
            D.36234->data.op[0].const_val = D.36235;
            D.36234 = args[2];
            D.36234 = args[2];
            D.36234->prev = 0B;
            D.36236 = D.36234->prev;
            D.36234->next = D.36236;
            D.36234 = args[2];
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.36238>; else goto <D.36239>;
            <D.36238>:
            iftmp.182 = 736;
            goto <D.36240>;
            <D.36239>:
            iftmp.182 = 363;
            <D.36240>:
            D.36234->opcode = iftmp.182;
            D.36234 = args[2];
            D.36234->flags = 0;
            D.36234 = args[2];
            D.36234->type = 0;
            D.36234 = args[2];
            D.36234->dreg = -1;
            D.36234 = args[2];
            D.36234 = args[2];
            D.36234 = args[2];
            D.36234->sreg3 = -1;
            D.36241 = D.36234->sreg3;
            D.36234->sreg2 = D.36241;
            D.36242 = D.36234->sreg2;
            D.36234->sreg1 = D.36242;
            D.36234 = args[2];
            D.30898 = cfg->ip;
            D.36234->cil_code = D.30898;
            D.36234 = args[2];
            D.36234->data.op[0].p = 0B;
            D.36234 = args[2];
            D.36234->data.op[1].src = 43B;
            D.36234 = args[2];
            D.36234->type = 3;
            D.36234 = args[2];
            D.36243 = alloc_dreg (cfg, 3);
            D.36244 = (int) D.36243;
            D.36234->dreg = D.36244;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36245>; else goto <D.36246>;
            <D.36245>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36234 = args[2];
            D.30927->next = D.36234;
            D.36234 = args[2];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36234->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.36234 = args[2];
            bblock.113->last_ins = D.36234;
            goto <D.36247>;
            <D.36246>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.36234 = args[2];
            bblock.113->last_ins = D.36234;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36247>:
            goto <D.36248>;
            <D.36232>:
            D.30673 = cfg->mempool;
            D.36249 = mono_mempool_alloc (D.30673, 80);
            args[2] = D.36249;
            D.36234 = args[2];
            D.36234 = args[2];
            D.36234->data.op[1].const_val = 0;
            D.36235 = D.36234->data.op[1].const_val;
            D.36234->data.op[0].const_val = D.36235;
            D.36234 = args[2];
            D.36234 = args[2];
            D.36234->prev = 0B;
            D.36236 = D.36234->prev;
            D.36234->next = D.36236;
            D.36234 = args[2];
            D.36234->opcode = 363;
            D.36234 = args[2];
            D.36234->flags = 0;
            D.36234 = args[2];
            D.36234->type = 0;
            D.36234 = args[2];
            D.36234->dreg = -1;
            D.36234 = args[2];
            D.36234 = args[2];
            D.36234 = args[2];
            D.36234->sreg3 = -1;
            D.36241 = D.36234->sreg3;
            D.36234->sreg2 = D.36241;
            D.36242 = D.36234->sreg2;
            D.36234->sreg1 = D.36242;
            D.36234 = args[2];
            D.30898 = cfg->ip;
            D.36234->cil_code = D.30898;
            D.36234 = args[2];
            D.30697 = cfg->domain;
            D.36250 = mono_domain_alloc0 (D.30697, 8);
            D.36234->data.op[0].p = D.36250;
            D.36234 = args[2];
            D.36234->type = 3;
            D.36234 = args[2];
            D.36251 = alloc_dreg (cfg, 3);
            D.36252 = (int) D.36251;
            D.36234->dreg = D.36252;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36253>; else goto <D.36254>;
            <D.36253>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36234 = args[2];
            D.30927->next = D.36234;
            D.36234 = args[2];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36234->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.36234 = args[2];
            bblock.113->last_ins = D.36234;
            goto <D.36255>;
            <D.36254>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.36234 = args[2];
            bblock.113->last_ins = D.36234;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36255>:
            <D.36248>:
            sp.183 = sp;
            sp = sp.183 + 8;
            D.36257 = mono_emit_method_call (cfg, mono_isinst, &args, 0B);
            *sp.183 = D.36257;
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.36212>;
      <D.36211>:
      if (context_used == 0) goto <D.36261>; else goto <D.36258>;
      <D.36261>:
      klass.155 = klass;
      D.36161 = BIT_FIELD_REF <*klass.155, 8, 272>;
      D.36162 = D.36161 & 64;
      if (D.36162 != 0) goto <D.36259>; else goto <D.36262>;
      <D.36262>:
      klass.155 = klass;
      D.36164 = klass.155->flags;
      D.36165 = D.36164 & 32;
      if (D.36165 != 0) goto <D.36259>; else goto <D.36258>;
      <D.36259>:
      {
        struct MonoMethod * mono_isinst;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.155 = klass;
            mono_isinst = mono_marshal_get_isinst (klass.155);
            D.31680 = *sp;
            iargs[0] = D.31680;
            D.30841 = cfg->real_offset;
            D.36263 = mono_method_signature (mono_isinst);
            costs = inline_method (cfg, mono_isinst, D.36263, &iargs, ip, D.30841, dont_inline, 1);
            D.31231 = cfg->exception_type;
            if (D.31231 != 0) goto exception_exit; else goto <D.36264>;
            <D.36264>:
            D.36265 = costs <= 0;
            D.36266 = (long int) D.36265;
            D.36267 = __builtin_expect (D.36266, 0);
            if (D.36267 != 0) goto <D.36268>; else goto <D.36269>;
            <D.36268>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9584, "costs > 0");
            <D.36269>:
            ip = ip + 5;
            D.30841 = cfg->real_offset;
            D.33521 = D.30841 + 5;
            cfg->real_offset = D.33521;
            bblock.113 = cfg->cbb;
            bblock = bblock.113;
            sp.184 = sp;
            sp = sp.184 + 8;
            D.36271 = iargs[0];
            *sp.184 = D.36271;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.36260>;
      <D.36258>:
      D.31680 = *sp;
      klass.155 = klass;
      ins = handle_isinst (cfg, klass.155, D.31680, context_used);
      D.31231 = cfg->exception_type;
      if (D.31231 != 0) goto exception_exit; else goto <D.36272>;
      <D.36272>:
      bblock.113 = cfg->cbb;
      bblock = bblock.113;
      sp.185 = sp;
      sp = sp.185 + 8;
      *sp.185 = ins;
      ip = ip + 5;
      <D.36260>:
      <D.36212>:
      goto <D.27670>;
      <D.28082>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.36274>; else goto <D.36275>;
      <D.36274>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.36276>; else goto <D.36277>;
      <D.36276>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.36278>; else goto <D.36279>;
      <D.36278>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36279>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36277>:
      D.36280 = mini_get_debug_options ();
      D.36281 = D.36280->break_on_unverified;
      if (D.36281 != 0) goto <D.36282>; else goto unverified;
      <D.36282>:
      __asm__ __volatile__("int $03");
      <D.36275>:
      sp = sp + 18446744073709551608;
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.36283>; else goto <D.36284>;
      <D.36283>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.36285>; else goto <D.36286>;
      <D.36285>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.36287>; else goto <D.36288>;
      <D.36287>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36288>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36286>:
      D.36289 = mini_get_debug_options ();
      D.36290 = D.36289->break_on_unverified;
      if (D.36290 != 0) goto <D.36291>; else goto unverified;
      <D.36291>:
      __asm__ __volatile__("int $03");
      <D.36284>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.186 = mini_get_class (method, token, generic_context);
      klass = klass.186;
      klass.155 = klass;
      if (klass.155 == 0B) goto <D.36293>; else goto <D.36295>;
      <D.36295>:
      klass.155 = klass;
      D.35388 = klass.155->exception_type;
      if (D.35388 != 0) goto <D.36293>; else goto <D.36294>;
      <D.36293>:
      klass.155 = klass;
      cfg->exception_ptr = klass.155;
      D.36296 = mini_get_debug_options ();
      D.36297 = D.36296->break_on_unverified;
      if (D.36297 != 0) goto <D.36298>; else goto load_error;
      <D.36298>:
      __asm__ __volatile__("int $03");
      <D.36294>:
      klass.155 = klass;
      mono_save_token_info (cfg, image, token, klass.155);
      klass.155 = klass;
      context_used = mini_class_check_context_used (cfg, klass.155);
      klass.155 = klass;
      D.36299 = mini_is_gsharedvt_klass (cfg, klass.155);
      if (D.36299 != 0) goto <D.36300>; else goto <D.36301>;
      <D.36300>:
      D.31680 = *sp;
      klass.155 = klass;
      D.36302 = handle_unbox_gsharedvt (cfg, klass.155, D.31680, &bblock);
      *sp = D.36302;
      sp = sp + 8;
      ip = ip + 5;
      inline_costs = inline_costs + 2;
      goto <D.27670>;
      <D.36301>:
      klass.155 = klass;
      D.36303 = generic_class_is_reference_type (cfg, klass.155);
      if (D.36303 != 0) goto <D.36304>; else goto <D.36305>;
      <D.36304>:
      if (context_used == 0) goto <D.36308>; else goto <D.36306>;
      <D.36308>:
      klass.155 = klass;
      D.36309 = mini_class_has_reference_variant_generic_argument (cfg, klass.155, context_used);
      if (D.36309 != 0) goto <D.36310>; else goto <D.36306>;
      <D.36310>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * args[3];

        try
          {
            mono_castclass = mono_marshal_get_castclass_with_cache ();
            D.31680 = *sp;
            args[0] = D.31680;
            D.30673 = cfg->mempool;
            D.36311 = mono_mempool_alloc (D.30673, 80);
            args[1] = D.36311;
            D.36312 = args[1];
            D.36312 = args[1];
            D.36312->data.op[1].const_val = 0;
            D.36313 = D.36312->data.op[1].const_val;
            D.36312->data.op[0].const_val = D.36313;
            D.36312 = args[1];
            D.36312 = args[1];
            D.36312->prev = 0B;
            D.36314 = D.36312->prev;
            D.36312->next = D.36314;
            D.36312 = args[1];
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.36316>; else goto <D.36317>;
            <D.36316>:
            iftmp.187 = 736;
            goto <D.36318>;
            <D.36317>:
            iftmp.187 = 363;
            <D.36318>:
            D.36312->opcode = iftmp.187;
            D.36312 = args[1];
            D.36312->flags = 0;
            D.36312 = args[1];
            D.36312->type = 0;
            D.36312 = args[1];
            D.36312->dreg = -1;
            D.36312 = args[1];
            D.36312 = args[1];
            D.36312 = args[1];
            D.36312->sreg3 = -1;
            D.36319 = D.36312->sreg3;
            D.36312->sreg2 = D.36319;
            D.36320 = D.36312->sreg2;
            D.36312->sreg1 = D.36320;
            D.36312 = args[1];
            D.30898 = cfg->ip;
            D.36312->cil_code = D.30898;
            D.36312 = args[1];
            klass.155 = klass;
            D.36312->data.op[0].p = klass.155;
            D.36312 = args[1];
            D.36312->data.op[1].src = 11B;
            D.36312 = args[1];
            D.36312->type = 3;
            D.36312 = args[1];
            D.36321 = alloc_dreg (cfg, 3);
            D.36322 = (int) D.36321;
            D.36312->dreg = D.36322;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36323>; else goto <D.36324>;
            <D.36323>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36312 = args[1];
            D.30927->next = D.36312;
            D.36312 = args[1];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36312->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.36312 = args[1];
            bblock.113->last_ins = D.36312;
            goto <D.36325>;
            <D.36324>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.36312 = args[1];
            bblock.113->last_ins = D.36312;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36325>:
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.36326>; else goto <D.36327>;
            <D.36326>:
            D.30673 = cfg->mempool;
            D.36328 = mono_mempool_alloc (D.30673, 80);
            args[2] = D.36328;
            D.36329 = args[2];
            D.36329 = args[2];
            D.36329->data.op[1].const_val = 0;
            D.36330 = D.36329->data.op[1].const_val;
            D.36329->data.op[0].const_val = D.36330;
            D.36329 = args[2];
            D.36329 = args[2];
            D.36329->prev = 0B;
            D.36331 = D.36329->prev;
            D.36329->next = D.36331;
            D.36329 = args[2];
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.36333>; else goto <D.36334>;
            <D.36333>:
            iftmp.188 = 736;
            goto <D.36335>;
            <D.36334>:
            iftmp.188 = 363;
            <D.36335>:
            D.36329->opcode = iftmp.188;
            D.36329 = args[2];
            D.36329->flags = 0;
            D.36329 = args[2];
            D.36329->type = 0;
            D.36329 = args[2];
            D.36329->dreg = -1;
            D.36329 = args[2];
            D.36329 = args[2];
            D.36329 = args[2];
            D.36329->sreg3 = -1;
            D.36336 = D.36329->sreg3;
            D.36329->sreg2 = D.36336;
            D.36337 = D.36329->sreg2;
            D.36329->sreg1 = D.36337;
            D.36329 = args[2];
            D.30898 = cfg->ip;
            D.36329->cil_code = D.30898;
            D.36329 = args[2];
            D.36329->data.op[0].p = 0B;
            D.36329 = args[2];
            D.36329->data.op[1].src = 43B;
            D.36329 = args[2];
            D.36329->type = 3;
            D.36329 = args[2];
            D.36338 = alloc_dreg (cfg, 3);
            D.36339 = (int) D.36338;
            D.36329->dreg = D.36339;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36340>; else goto <D.36341>;
            <D.36340>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36329 = args[2];
            D.30927->next = D.36329;
            D.36329 = args[2];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36329->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.36329 = args[2];
            bblock.113->last_ins = D.36329;
            goto <D.36342>;
            <D.36341>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.36329 = args[2];
            bblock.113->last_ins = D.36329;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36342>:
            goto <D.36343>;
            <D.36327>:
            D.30673 = cfg->mempool;
            D.36344 = mono_mempool_alloc (D.30673, 80);
            args[2] = D.36344;
            D.36329 = args[2];
            D.36329 = args[2];
            D.36329->data.op[1].const_val = 0;
            D.36330 = D.36329->data.op[1].const_val;
            D.36329->data.op[0].const_val = D.36330;
            D.36329 = args[2];
            D.36329 = args[2];
            D.36329->prev = 0B;
            D.36331 = D.36329->prev;
            D.36329->next = D.36331;
            D.36329 = args[2];
            D.36329->opcode = 363;
            D.36329 = args[2];
            D.36329->flags = 0;
            D.36329 = args[2];
            D.36329->type = 0;
            D.36329 = args[2];
            D.36329->dreg = -1;
            D.36329 = args[2];
            D.36329 = args[2];
            D.36329 = args[2];
            D.36329->sreg3 = -1;
            D.36336 = D.36329->sreg3;
            D.36329->sreg2 = D.36336;
            D.36337 = D.36329->sreg2;
            D.36329->sreg1 = D.36337;
            D.36329 = args[2];
            D.30898 = cfg->ip;
            D.36329->cil_code = D.30898;
            D.36329 = args[2];
            D.30697 = cfg->domain;
            D.36345 = mono_domain_alloc0 (D.30697, 8);
            D.36329->data.op[0].p = D.36345;
            D.36329 = args[2];
            D.36329->type = 3;
            D.36329 = args[2];
            D.36346 = alloc_dreg (cfg, 3);
            D.36347 = (int) D.36346;
            D.36329->dreg = D.36347;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36348>; else goto <D.36349>;
            <D.36348>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36329 = args[2];
            D.30927->next = D.36329;
            D.36329 = args[2];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.36329->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.36329 = args[2];
            bblock.113->last_ins = D.36329;
            goto <D.36350>;
            <D.36349>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.36329 = args[2];
            bblock.113->last_ins = D.36329;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36350>:
            <D.36343>:
            sp.189 = sp;
            sp = sp.189 + 8;
            D.36352 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
            *sp.189 = D.36352;
            ip = ip + 5;
            inline_costs = inline_costs + 2;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      goto <D.36307>;
      <D.36306>:
      if (context_used == 0) goto <D.36356>; else goto <D.36353>;
      <D.36356>:
      klass.155 = klass;
      D.36161 = BIT_FIELD_REF <*klass.155, 8, 272>;
      D.36162 = D.36161 & 64;
      if (D.36162 != 0) goto <D.36354>; else goto <D.36357>;
      <D.36357>:
      klass.155 = klass;
      D.36164 = klass.155->flags;
      D.36165 = D.36164 & 32;
      if (D.36165 != 0) goto <D.36354>; else goto <D.36353>;
      <D.36354>:
      {
        struct MonoMethod * mono_castclass;
        struct MonoInst * iargs[1];
        int costs;

        try
          {
            klass.155 = klass;
            mono_castclass = mono_marshal_get_castclass (klass.155);
            D.31680 = *sp;
            iargs[0] = D.31680;
            D.30841 = cfg->real_offset;
            D.36358 = mono_method_signature (mono_castclass);
            costs = inline_method (cfg, mono_castclass, D.36358, &iargs, ip, D.30841, dont_inline, 1);
            D.31231 = cfg->exception_type;
            if (D.31231 != 0) goto exception_exit; else goto <D.36359>;
            <D.36359>:
            D.36360 = costs <= 0;
            D.36361 = (long int) D.36360;
            D.36362 = __builtin_expect (D.36361, 0);
            if (D.36362 != 0) goto <D.36363>; else goto <D.36364>;
            <D.36363>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9658, "costs > 0");
            <D.36364>:
            ip = ip + 5;
            D.30841 = cfg->real_offset;
            D.33521 = D.30841 + 5;
            cfg->real_offset = D.33521;
            bblock.113 = cfg->cbb;
            bblock = bblock.113;
            sp.190 = sp;
            sp = sp.190 + 8;
            D.36366 = iargs[0];
            *sp.190 = D.36366;
            inline_costs = inline_costs + costs;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      goto <D.36355>;
      <D.36353>:
      D.31680 = *sp;
      klass.155 = klass;
      ins = handle_castclass (cfg, klass.155, D.31680, context_used);
      D.31231 = cfg->exception_type;
      if (D.31231 != 0) goto exception_exit; else goto <D.36367>;
      <D.36367>:
      bblock.113 = cfg->cbb;
      bblock = bblock.113;
      sp.191 = sp;
      sp = sp.191 + 8;
      *sp.191 = ins;
      ip = ip + 5;
      <D.36355>:
      <D.36307>:
      goto <D.27670>;
      <D.36305>:
      klass.155 = klass;
      D.36369 = mono_class_is_nullable (klass.155);
      if (D.36369 != 0) goto <D.36370>; else goto <D.36371>;
      <D.36370>:
      klass.155 = klass;
      D.31680 = *sp;
      ins = handle_unbox_nullable (cfg, D.31680, klass.155, context_used);
      sp.192 = sp;
      sp = sp.192 + 8;
      *sp.192 = ins;
      ip = ip + 5;
      goto <D.27670>;
      <D.36371>:
      klass.155 = klass;
      ins = handle_unbox (cfg, klass.155, sp, context_used);
      *sp = ins;
      ip = ip + 5;
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      klass.155 = klass;
      D.35462 = &klass.155->byval_arg;
      D.36373 = mono_type_to_load_membase (cfg, D.35462);
      D.36374 = (short unsigned int) D.36373;
      ins->opcode = D.36374;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ins->dreg = 0;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      klass.155 = klass;
      D.35462 = &klass.155->byval_arg;
      type_to_eval_stack_type (cfg, D.35462, ins);
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.36375 = alloc_dreg (cfg, D.31427);
      D.36376 = (int) D.36375;
      ins->dreg = D.36376;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.36377>; else goto <D.36378>;
      <D.36377>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.36379>;
      <D.36378>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.36379>:
      sp.193 = sp;
      sp = sp.193 + 8;
      *sp.193 = ins;
      inline_costs = inline_costs + 2;
      goto <D.27670>;
      <D.28088>:
      {
        struct MonoInst * val;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.36381>; else goto <D.36382>;
        <D.36381>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36383>; else goto <D.36384>;
        <D.36383>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36385>; else goto <D.36386>;
        <D.36385>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36386>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36384>:
        D.36387 = mini_get_debug_options ();
        D.36388 = D.36387->break_on_unverified;
        if (D.36388 != 0) goto <D.36389>; else goto unverified;
        <D.36389>:
        __asm__ __volatile__("int $03");
        <D.36382>:
        sp = sp + 18446744073709551608;
        val = *sp;
        D.32104 = ip + 5;
        if (D.32104 > end) goto <D.36390>; else goto <D.36391>;
        <D.36390>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36392>; else goto <D.36393>;
        <D.36392>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36394>; else goto <D.36395>;
        <D.36394>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36395>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36393>:
        D.36396 = mini_get_debug_options ();
        D.36397 = D.36396->break_on_unverified;
        if (D.36397 != 0) goto <D.36398>; else goto unverified;
        <D.36398>:
        __asm__ __volatile__("int $03");
        <D.36391>:
        token = MEM[(const guint32 *)ip + 1B];
        klass.194 = mini_get_class (method, token, generic_context);
        klass = klass.194;
        klass.155 = klass;
        if (klass.155 == 0B) goto <D.36400>; else goto <D.36402>;
        <D.36402>:
        klass.155 = klass;
        D.35388 = klass.155->exception_type;
        if (D.35388 != 0) goto <D.36400>; else goto <D.36401>;
        <D.36400>:
        klass.155 = klass;
        cfg->exception_ptr = klass.155;
        D.36403 = mini_get_debug_options ();
        D.36404 = D.36403->break_on_unverified;
        if (D.36404 != 0) goto <D.36405>; else goto load_error;
        <D.36405>:
        __asm__ __volatile__("int $03");
        <D.36401>:
        klass.155 = klass;
        mono_save_token_info (cfg, image, token, klass.155);
        klass.155 = klass;
        context_used = mini_class_check_context_used (cfg, klass.155);
        klass.155 = klass;
        D.36406 = generic_class_is_reference_type (cfg, klass.155);
        if (D.36406 != 0) goto <D.36407>; else goto <D.36408>;
        <D.36407>:
        sp.195 = sp;
        sp = sp.195 + 8;
        *sp.195 = val;
        ip = ip + 5;
        goto <D.27670>;
        <D.36408>:
        D.36410 = mono_defaults.void_class;
        klass.155 = klass;
        if (D.36410 == klass.155) goto <D.36411>; else goto <D.36412>;
        <D.36411>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36413>; else goto <D.36414>;
        <D.36413>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36415>; else goto <D.36416>;
        <D.36415>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36416>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36414>:
        D.36417 = mini_get_debug_options ();
        D.36418 = D.36417->break_on_unverified;
        if (D.36418 != 0) goto <D.36419>; else goto unverified;
        <D.36419>:
        __asm__ __volatile__("int $03");
        <D.36412>:
        D.31680 = *sp;
        klass.155 = klass;
        D.35462 = &klass.155->byval_arg;
        D.36420 = target_type_is_incompatible (cfg, D.35462, D.31680);
        if (D.36420 != 0) goto <D.36421>; else goto <D.36422>;
        <D.36421>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36423>; else goto <D.36424>;
        <D.36423>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36425>; else goto <D.36426>;
        <D.36425>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36426>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36424>:
        D.36427 = mini_get_debug_options ();
        D.36428 = D.36427->break_on_unverified;
        if (D.36428 != 0) goto <D.36429>; else goto unverified;
        <D.36429>:
        __asm__ __volatile__("int $03");
        <D.36422>:
        klass.155 = klass;
        D.36432 = mono_class_is_nullable (klass.155);
        if (D.36432 == 0) goto <D.36433>; else goto <D.36434>;
        <D.36433>:
        D.32104 = ip + 5;
        if (D.32104 < end) goto <D.36435>; else goto <D.36436>;
        <D.36435>:
        D.33574 = ip + 5;
        bblock.70 = bblock;
        D.36437 = ip_in_bb (cfg, bblock.70, D.33574);
        if (D.36437 != 0) goto <D.36438>; else goto <D.36439>;
        <D.36438>:
        D.32104 = ip + 5;
        D.36440 = *D.32104;
        D.36441 = D.36440 == 58;
        D.36442 = D.36440 == 45;
        D.36443 = D.36441 | D.36442;
        if (D.36443 != 0) goto <D.36430>; else goto <D.36444>;
        <D.36444>:
        D.32104 = ip + 5;
        D.33533 = *D.32104;
        if (D.33533 == 57) goto <D.36430>; else goto <D.36445>;
        <D.36445>:
        D.32104 = ip + 5;
        D.33533 = *D.32104;
        if (D.33533 == 44) goto <D.36430>; else goto <D.36431>;
        <D.36430>:
        {
          gboolean is_true;
          int dreg;
          struct MonoBasicBlock * true_bb;
          struct MonoBasicBlock * false_bb;

          D.32104 = ip + 5;
          D.36446 = *D.32104;
          D.36447 = D.36446 == 58;
          D.36448 = D.36446 == 45;
          D.36449 = D.36447 | D.36448;
          is_true = (gboolean) D.36449;
          ip = ip + 5;
          D.30753 = cfg->verbose_level;
          if (D.30753 > 3) goto <D.36450>; else goto <D.36451>;
          <D.36450>:
          D.36452 = mono_disasm_code_one (0B, method, ip, 0B);
          sp.77 = (long int) sp;
          stack_start.78 = (long int) stack_start;
          D.31451 = sp.77 - stack_start.78;
          D.31452 = D.31451 /[ex] 8;
          D.31453 = (int) D.31452;
          bblock.70 = bblock;
          D.31559 = bblock.70->block_num;
          printf ("converting (in B%d: stack: %d) %s", D.31559, D.31453, D.36452);
          printf ("<box+brtrue opt>\n");
          <D.36451>:
          D.31560 = *ip;
          D.31561 = (int) D.31560;
          switch (D.31561) <default: <D.28099>, case 44: <D.28095>, case 45: <D.28094>, case 57: <D.28098>, case 58: <D.28097>>
          <D.28094>:
          <D.28095>:
          D.31691 = ip + 2;
          if (D.31691 > end) goto <D.36453>; else goto <D.36454>;
          <D.36453>:
          D.30822 = cfg->gsharedvt;
          if (D.30822 != 0) goto <D.36455>; else goto <D.36456>;
          <D.36455>:
          D.30753 = cfg->verbose_level;
          if (D.30753 > 2) goto <D.36457>; else goto <D.36458>;
          <D.36457>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.36458>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.36456>:
          D.36459 = mini_get_debug_options ();
          D.36460 = D.36459->break_on_unverified;
          if (D.36460 != 0) goto <D.36461>; else goto unverified;
          <D.36461>:
          __asm__ __volatile__("int $03");
          <D.36454>:
          ip = ip + 1;
          D.31560 = *ip;
          D.34279 = (signed char) D.31560;
          D.34280 = (sizetype) D.34279;
          D.34281 = D.34280 + 1;
          target = ip + D.34281;
          ip = ip + 1;
          goto <D.28096>;
          <D.28097>:
          <D.28098>:
          D.32104 = ip + 5;
          if (D.32104 > end) goto <D.36462>; else goto <D.36463>;
          <D.36462>:
          D.30822 = cfg->gsharedvt;
          if (D.30822 != 0) goto <D.36464>; else goto <D.36465>;
          <D.36464>:
          D.30753 = cfg->verbose_level;
          if (D.30753 > 2) goto <D.36466>; else goto <D.36467>;
          <D.36466>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.36467>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.36465>:
          D.36468 = mini_get_debug_options ();
          D.36469 = D.36468->break_on_unverified;
          if (D.36469 != 0) goto <D.36470>; else goto unverified;
          <D.36470>:
          __asm__ __volatile__("int $03");
          <D.36463>:
          ip = ip + 1;
          D.32204 = MEM[(const guint32 *)ip];
          D.34420 = (int) D.32204;
          D.34421 = (sizetype) D.34420;
          D.34422 = D.34421 + 4;
          target = ip + D.34422;
          ip = ip + 4;
          goto <D.28096>;
          <D.28099>:
          monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9757);
          <D.28096>:
          D.30804 = cfg->cil_offset_to_bb;
          target.135 = (long int) target;
          D.30809 = cfg->cil_start;
          D.30810 = (long int) D.30809;
          D.34283 = target.135 - D.30810;
          D.34284 = (long unsigned int) D.34283;
          D.34285 = D.34284 * 8;
          D.34286 = D.30804 + D.34285;
          true_bb = *D.34286;
          if (true_bb == 0B) goto <D.36471>; else goto <D.36472>;
          <D.36471>:
          if (target >= end) goto <D.36473>; else goto <D.36475>;
          <D.36475>:
          D.30821 = header->code;
          if (D.30821 > target) goto <D.36473>; else goto <D.36474>;
          <D.36473>:
          D.30822 = cfg->gsharedvt;
          if (D.30822 != 0) goto <D.36476>; else goto <D.36477>;
          <D.36476>:
          D.30753 = cfg->verbose_level;
          if (D.30753 > 2) goto <D.36478>; else goto <D.36479>;
          <D.36478>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.36479>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.36477>:
          D.36480 = mini_get_debug_options ();
          D.36481 = D.36480->break_on_unverified;
          if (D.36481 != 0) goto <D.36482>; else goto unverified;
          <D.36482>:
          __asm__ __volatile__("int $03");
          <D.36474>:
          D.30673 = cfg->mempool;
          true_bb = mono_mempool_alloc0 (D.30673, 296);
          D.30781 = cfg->num_bblocks;
          D.36483 = D.30781;
          D.36484 = D.36483 + 1;
          cfg->num_bblocks = D.36484;
          D.36485 = (int) D.36483;
          true_bb->block_num = D.36485;
          true_bb->cil_code = target;
          D.36486 = true_bb->cil_code;
          if (D.36486 != 0B) goto <D.36487>; else goto <D.36488>;
          <D.36487>:
          D.30804 = cfg->cil_offset_to_bb;
          D.36486 = true_bb->cil_code;
          D.36489 = (long int) D.36486;
          D.30809 = cfg->cil_start;
          D.30810 = (long int) D.30809;
          D.36490 = D.36489 - D.30810;
          D.36491 = (long unsigned int) D.36490;
          D.36492 = D.36491 * 8;
          D.36493 = D.30804 + D.36492;
          *D.36493 = true_bb;
          <D.36488>:
          D.30841 = cfg->real_offset;
          true_bb->real_offset = D.30841;
          <D.36472>:
          D.30804 = cfg->cil_offset_to_bb;
          ip.75 = (long int) ip;
          D.30809 = cfg->cil_start;
          D.30810 = (long int) D.30809;
          D.31387 = ip.75 - D.30810;
          D.31388 = (long unsigned int) D.31387;
          D.31389 = D.31388 * 8;
          D.31390 = D.30804 + D.31389;
          false_bb = *D.31390;
          if (false_bb == 0B) goto <D.36494>; else goto <D.36495>;
          <D.36494>:
          if (ip >= end) goto <D.36496>; else goto <D.36498>;
          <D.36498>:
          D.30821 = header->code;
          if (D.30821 > ip) goto <D.36496>; else goto <D.36497>;
          <D.36496>:
          D.30822 = cfg->gsharedvt;
          if (D.30822 != 0) goto <D.36499>; else goto <D.36500>;
          <D.36499>:
          D.30753 = cfg->verbose_level;
          if (D.30753 > 2) goto <D.36501>; else goto <D.36502>;
          <D.36501>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.36502>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.36500>:
          D.36503 = mini_get_debug_options ();
          D.36504 = D.36503->break_on_unverified;
          if (D.36504 != 0) goto <D.36505>; else goto unverified;
          <D.36505>:
          __asm__ __volatile__("int $03");
          <D.36497>:
          D.30673 = cfg->mempool;
          false_bb = mono_mempool_alloc0 (D.30673, 296);
          D.30781 = cfg->num_bblocks;
          D.36506 = D.30781;
          D.36507 = D.36506 + 1;
          cfg->num_bblocks = D.36507;
          D.36508 = (int) D.36506;
          false_bb->block_num = D.36508;
          false_bb->cil_code = ip;
          D.36509 = false_bb->cil_code;
          if (D.36509 != 0B) goto <D.36510>; else goto <D.36511>;
          <D.36510>:
          D.30804 = cfg->cil_offset_to_bb;
          D.36509 = false_bb->cil_code;
          D.36512 = (long int) D.36509;
          D.30809 = cfg->cil_start;
          D.30810 = (long int) D.30809;
          D.36513 = D.36512 - D.30810;
          D.36514 = (long unsigned int) D.36513;
          D.36515 = D.36514 * 8;
          D.36516 = D.30804 + D.36515;
          *D.36516 = false_bb;
          <D.36511>:
          D.30841 = cfg->real_offset;
          false_bb->real_offset = D.30841;
          <D.36495>:
          bblock.113 = cfg->cbb;
          mono_link_bblock (cfg, bblock.113, true_bb);
          bblock.113 = cfg->cbb;
          mono_link_bblock (cfg, bblock.113, false_bb);
          if (sp != stack_start) goto <D.36517>; else goto <D.36518>;
          <D.36517>:
          sp.77 = (long int) sp;
          stack_start.78 = (long int) stack_start;
          D.31451 = sp.77 - stack_start.78;
          D.31452 = D.31451 /[ex] 8;
          D.31453 = (int) D.31452;
          handle_stack_args (cfg, stack_start, D.31453);
          sp = stack_start;
          D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
          D.31455 = D.31454 & 32;
          if (D.31455 != 0) goto <D.36519>; else goto <D.36520>;
          <D.36519>:
          D.30822 = cfg->gsharedvt;
          if (D.30822 != 0) goto <D.36521>; else goto <D.36522>;
          <D.36521>:
          D.30753 = cfg->verbose_level;
          if (D.30753 > 2) goto <D.36523>; else goto <D.36524>;
          <D.36523>:
          printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
          <D.36524>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.36522>:
          D.36525 = mini_get_debug_options ();
          D.36526 = D.36525->break_on_unverified;
          if (D.36526 != 0) goto <D.36527>; else goto unverified;
          <D.36527>:
          __asm__ __volatile__("int $03");
          <D.36520>:
          <D.36518>:
          if (0 != 0) goto <D.36528>; else goto <D.36529>;
          <D.36528>:
          D.36530 = alloc_ireg (cfg);
          dreg = (int) D.36530;
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.36531 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.36531;
            inst->prev = 0B;
            D.36532 = inst->prev;
            inst->next = D.36532;
            inst->opcode = 362;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.36533 = inst->sreg3;
            inst->sreg2 = D.36533;
            D.36534 = inst->sreg2;
            inst->sreg1 = D.36534;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->dreg = dreg;
            inst->data.op[0].const_val = 0;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36535>; else goto <D.36536>;
            <D.36535>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.36537>;
            <D.36536>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36537>:
          }
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.36538 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.36538;
            inst->prev = 0B;
            D.36539 = inst->prev;
            inst->next = D.36539;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.36540 = inst->sreg3;
            inst->sreg2 = D.36540;
            D.36541 = inst->sreg2;
            inst->sreg1 = D.36541;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->dreg = -1;
            inst->sreg1 = dreg;
            D.36542 = is_true == 0;
            D.36543 = (int) D.36542;
            D.36544 = (long int) D.36543;
            inst->data.op[1].const_val = D.36544;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36545>; else goto <D.36546>;
            <D.36545>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.36547>;
            <D.36546>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36547>:
          }
          {
            struct MonoInst * ins;

            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.36548 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.36548;
            ins->prev = 0B;
            D.36549 = ins->prev;
            ins->next = D.36549;
            ins->opcode = 652;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.36550 = ins->sreg3;
            ins->sreg2 = D.36550;
            D.36551 = ins->sreg2;
            ins->sreg1 = D.36551;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            D.30673 = cfg->mempool;
            D.36552 = mono_mempool_alloc (D.30673, 16);
            ins->data.op[1].many_blocks = D.36552;
            D.36553 = ins->data.op[1].many_blocks;
            *D.36553 = true_bb;
            D.36553 = ins->data.op[1].many_blocks;
            D.36554 = D.36553 + 8;
            *D.36554 = false_bb;
            bblock.113 = cfg->cbb;
            mono_link_bblock (cfg, bblock.113, true_bb);
            bblock.113 = cfg->cbb;
            mono_link_bblock (cfg, bblock.113, false_bb);
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36555>; else goto <D.36556>;
            <D.36555>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.36557>;
            <D.36556>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36557>:
          }
          goto <D.36558>;
          <D.36529>:
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          ins->opcode = 446;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          if (is_true != 0) goto <D.36560>; else goto <D.36561>;
          <D.36560>:
          iftmp.196 = true_bb;
          goto <D.36562>;
          <D.36561>:
          iftmp.196 = false_bb;
          <D.36562>:
          ins->data.op[0].target_block = iftmp.196;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.36563>; else goto <D.36564>;
          <D.36563>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.36565>;
          <D.36564>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.36565>:
          <D.36558>:
          start_new_bblock = 1;
          goto <D.27670>;
        }
        <D.36431>:
        <D.36439>:
        <D.36436>:
        <D.36434>:
        sp.197 = sp;
        sp = sp.197 + 8;
        klass.155 = klass;
        D.36567 = handle_box (cfg, val, klass.155, context_used, &bblock);
        *sp.197 = D.36567;
        D.31231 = cfg->exception_type;
        if (D.31231 != 0) goto exception_exit; else goto <D.36568>;
        <D.36568>:
        ip = ip + 5;
        inline_costs = inline_costs + 1;
        goto <D.27670>;
      }
      <D.28103>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.36569>; else goto <D.36570>;
      <D.36569>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.36571>; else goto <D.36572>;
      <D.36571>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.36573>; else goto <D.36574>;
      <D.36573>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36574>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36572>:
      D.36575 = mini_get_debug_options ();
      D.36576 = D.36575->break_on_unverified;
      if (D.36576 != 0) goto <D.36577>; else goto unverified;
      <D.36577>:
      __asm__ __volatile__("int $03");
      <D.36570>:
      sp = sp + 18446744073709551608;
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.36578>; else goto <D.36579>;
      <D.36578>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.36580>; else goto <D.36581>;
      <D.36580>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.36582>; else goto <D.36583>;
      <D.36582>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.36583>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.36581>:
      D.36584 = mini_get_debug_options ();
      D.36585 = D.36584->break_on_unverified;
      if (D.36585 != 0) goto <D.36586>; else goto unverified;
      <D.36586>:
      __asm__ __volatile__("int $03");
      <D.36579>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.198 = mini_get_class (method, token, generic_context);
      klass = klass.198;
      klass.155 = klass;
      if (klass.155 == 0B) goto <D.36588>; else goto <D.36590>;
      <D.36590>:
      klass.155 = klass;
      D.35388 = klass.155->exception_type;
      if (D.35388 != 0) goto <D.36588>; else goto <D.36589>;
      <D.36588>:
      klass.155 = klass;
      cfg->exception_ptr = klass.155;
      D.36591 = mini_get_debug_options ();
      D.36592 = D.36591->break_on_unverified;
      if (D.36592 != 0) goto <D.36593>; else goto load_error;
      <D.36593>:
      __asm__ __volatile__("int $03");
      <D.36589>:
      klass.155 = klass;
      mono_save_token_info (cfg, image, token, klass.155);
      klass.155 = klass;
      context_used = mini_class_check_context_used (cfg, klass.155);
      klass.155 = klass;
      D.36594 = mono_class_is_nullable (klass.155);
      if (D.36594 != 0) goto <D.36595>; else goto <D.36596>;
      <D.36595>:
      {
        struct MonoInst * val;

        klass.155 = klass;
        D.31680 = *sp;
        val = handle_unbox_nullable (cfg, D.31680, klass.155, context_used);
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.36598 = val->dreg;
        D.36599 = (unsigned int) D.36598;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.36599 < D.31781) goto <D.36600>; else goto <D.36601>;
        <D.36600>:
        D.31784 = cfg->vreg_to_inst;
        D.36598 = val->dreg;
        D.36602 = (long unsigned int) D.36598;
        D.36603 = D.36602 * 8;
        D.36604 = D.31784 + D.36603;
        iftmp.199 = *D.36604;
        goto <D.36605>;
        <D.36601>:
        iftmp.199 = 0B;
        <D.36605>:
        ins->data.op[0].p = iftmp.199;
        D.36598 = val->dreg;
        D.36599 = (unsigned int) D.36598;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.36599 < D.31781) goto <D.36607>; else goto <D.36608>;
        <D.36607>:
        D.31784 = cfg->vreg_to_inst;
        D.36598 = val->dreg;
        D.36602 = (long unsigned int) D.36598;
        D.36603 = D.36602 * 8;
        D.36604 = D.31784 + D.36603;
        iftmp.200 = *D.36604;
        goto <D.36609>;
        <D.36608>:
        iftmp.200 = 0B;
        <D.36609>:
        D.36598 = val->dreg;
        D.36599 = (unsigned int) D.36598;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.36599 < D.31781) goto <D.36611>; else goto <D.36612>;
        <D.36611>:
        D.31784 = cfg->vreg_to_inst;
        D.36598 = val->dreg;
        D.36602 = (long unsigned int) D.36598;
        D.36603 = D.36602 * 8;
        D.36604 = D.31784 + D.36603;
        iftmp.201 = *D.36604;
        goto <D.36613>;
        <D.36612>:
        iftmp.201 = 0B;
        <D.36613>:
        D.36614 = iftmp.201->flags;
        D.36615 = D.36614 | 16;
        iftmp.200->flags = D.36615;
        ins->type = 5;
        D.36598 = val->dreg;
        D.36599 = (unsigned int) D.36598;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.36599 < D.31781) goto <D.36617>; else goto <D.36618>;
        <D.36617>:
        D.31784 = cfg->vreg_to_inst;
        D.36598 = val->dreg;
        D.36602 = (long unsigned int) D.36598;
        D.36603 = D.36602 * 8;
        D.36604 = D.31784 + D.36603;
        iftmp.202 = *D.36604;
        goto <D.36619>;
        <D.36618>:
        iftmp.202 = 0B;
        <D.36619>:
        D.36620 = iftmp.202->klass;
        ins->klass = D.36620;
        D.36621 = alloc_dreg (cfg, 5);
        D.36622 = (int) D.36621;
        ins->dreg = D.36622;
        cfg->has_indirection = 1;
        D.30822 = cfg->gsharedvt;
        D.31766 = D.30822 != 0;
        D.31767 = (long int) D.31766;
        D.31768 = __builtin_expect (D.31767, 0);
        if (D.31768 != 0) goto <D.36623>; else goto <D.36624>;
        <D.36623>:
        D.36598 = val->dreg;
        D.36599 = (unsigned int) D.36598;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.36599 < D.31781) goto <D.36626>; else goto <D.36627>;
        <D.36626>:
        D.31784 = cfg->vreg_to_inst;
        D.36598 = val->dreg;
        D.36602 = (long unsigned int) D.36598;
        D.36603 = D.36602 * 8;
        D.36604 = D.31784 + D.36603;
        iftmp.203 = *D.36604;
        goto <D.36628>;
        <D.36627>:
        iftmp.203 = 0B;
        <D.36628>:
        D.36629 = iftmp.203->data.op[1].vtype;
        D.36630 = mini_is_gsharedvt_variable_type (cfg, D.36629);
        if (D.36630 != 0) goto <D.36631>; else goto <D.36632>;
        <D.36631>:
        handle_gsharedvt_ldaddr (cfg);
        <D.36632>:
        <D.36624>:
        if (0 != 0) goto <D.36633>; else goto <D.36634>;
        <D.36633>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.36598 = val->dreg;
          D.36599 = (unsigned int) D.36598;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.36599 < D.31781) goto <D.36637>; else goto <D.36638>;
          <D.36637>:
          D.31784 = cfg->vreg_to_inst;
          D.36598 = val->dreg;
          D.36602 = (long unsigned int) D.36598;
          D.36603 = D.36602 * 8;
          D.36604 = D.31784 + D.36603;
          iftmp.205 = *D.36604;
          goto <D.36639>;
          <D.36638>:
          iftmp.205 = 0B;
          <D.36639>:
          D.36640 = iftmp.205->dreg;
          D.36641 = D.36640 + 1;
          D.36642 = (unsigned int) D.36641;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.36642 < D.31781) goto <D.36643>; else goto <D.36644>;
          <D.36643>:
          D.31784 = cfg->vreg_to_inst;
          D.36598 = val->dreg;
          D.36599 = (unsigned int) D.36598;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.36599 < D.31781) goto <D.36646>; else goto <D.36647>;
          <D.36646>:
          D.31784 = cfg->vreg_to_inst;
          D.36598 = val->dreg;
          D.36602 = (long unsigned int) D.36598;
          D.36603 = D.36602 * 8;
          D.36604 = D.31784 + D.36603;
          iftmp.206 = *D.36604;
          goto <D.36648>;
          <D.36647>:
          iftmp.206 = 0B;
          <D.36648>:
          D.36649 = iftmp.206->dreg;
          D.36650 = (sizetype) D.36649;
          D.36651 = D.36650 + 1;
          D.36652 = D.36651 * 8;
          D.36653 = D.31784 + D.36652;
          iftmp.204 = *D.36653;
          goto <D.36654>;
          <D.36644>:
          iftmp.204 = 0B;
          <D.36654>:
          var1 = iftmp.204;
          D.36598 = val->dreg;
          D.36599 = (unsigned int) D.36598;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.36599 < D.31781) goto <D.36657>; else goto <D.36658>;
          <D.36657>:
          D.31784 = cfg->vreg_to_inst;
          D.36598 = val->dreg;
          D.36602 = (long unsigned int) D.36598;
          D.36603 = D.36602 * 8;
          D.36604 = D.31784 + D.36603;
          iftmp.208 = *D.36604;
          goto <D.36659>;
          <D.36658>:
          iftmp.208 = 0B;
          <D.36659>:
          D.36660 = iftmp.208->dreg;
          D.36661 = D.36660 + 2;
          D.36662 = (unsigned int) D.36661;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.36662 < D.31781) goto <D.36663>; else goto <D.36664>;
          <D.36663>:
          D.31784 = cfg->vreg_to_inst;
          D.36598 = val->dreg;
          D.36599 = (unsigned int) D.36598;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.36599 < D.31781) goto <D.36666>; else goto <D.36667>;
          <D.36666>:
          D.31784 = cfg->vreg_to_inst;
          D.36598 = val->dreg;
          D.36602 = (long unsigned int) D.36598;
          D.36603 = D.36602 * 8;
          D.36604 = D.31784 + D.36603;
          iftmp.209 = *D.36604;
          goto <D.36668>;
          <D.36667>:
          iftmp.209 = 0B;
          <D.36668>:
          D.36669 = iftmp.209->dreg;
          D.36670 = (sizetype) D.36669;
          D.36671 = D.36670 + 2;
          D.36672 = D.36671 * 8;
          D.36673 = D.31784 + D.36672;
          iftmp.207 = *D.36673;
          goto <D.36674>;
          <D.36664>:
          iftmp.207 = 0B;
          <D.36674>:
          var2 = iftmp.207;
          D.36675 = var1 == 0B;
          D.36676 = (long int) D.36675;
          D.36677 = __builtin_expect (D.36676, 0);
          if (D.36677 != 0) goto <D.36678>; else goto <D.36679>;
          <D.36678>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9818, "var1");
          <D.36679>:
          D.36680 = var2 == 0B;
          D.36681 = (long int) D.36680;
          D.36682 = __builtin_expect (D.36681, 0);
          if (D.36682 != 0) goto <D.36683>; else goto <D.36684>;
          <D.36683>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9818, "var2");
          <D.36684>:
          D.36685 = var1->flags;
          D.36686 = D.36685 | 16;
          var1->flags = D.36686;
          D.36687 = var2->flags;
          D.36688 = D.36687 | 16;
          var2->flags = D.36688;
        }
        <D.36634>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.36689>; else goto <D.36690>;
        <D.36689>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.36691>;
        <D.36690>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.36691>:
        sp.210 = sp;
        sp = sp.210 + 8;
        *sp.210 = ins;
      }
      goto <D.36693>;
      <D.36596>:
      klass.155 = klass;
      ins = handle_unbox (cfg, klass.155, sp, context_used);
      sp.211 = sp;
      sp = sp.211 + 8;
      *sp.211 = ins;
      <D.36693>:
      ip = ip + 5;
      inline_costs = inline_costs + 2;
      goto <D.27670>;
      <D.28107>:
      <D.28108>:
      <D.28109>:
      <D.28110>:
      <D.28111>:
      <D.28112>:
      {
        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.31560 = *ip;
        op = (int) D.31560;
        op.212 = (unsigned int) op;
        D.36696 = op.212 + 4294967173;
        D.36697 = D.36696 <= 2;
        is_instance = (gboolean) D.36697;
        if (is_instance != 0) goto <D.36698>; else goto <D.36699>;
        <D.36698>:
        if (op == 125) goto <D.36700>; else goto <D.36701>;
        <D.36700>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 15) goto <D.36702>; else goto <D.36703>;
        <D.36702>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36704>; else goto <D.36705>;
        <D.36704>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36706>; else goto <D.36707>;
        <D.36706>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36707>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36705>:
        D.36708 = mini_get_debug_options ();
        D.36709 = D.36708->break_on_unverified;
        if (D.36709 != 0) goto <D.36710>; else goto unverified;
        <D.36710>:
        __asm__ __volatile__("int $03");
        <D.36703>:
        sp = sp + 18446744073709551600;
        store_val = MEM[(struct MonoInst * *)sp + 8B];
        goto <D.36711>;
        <D.36701>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.36712>; else goto <D.36713>;
        <D.36712>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36714>; else goto <D.36715>;
        <D.36714>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36716>; else goto <D.36717>;
        <D.36716>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36717>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36715>:
        D.36718 = mini_get_debug_options ();
        D.36719 = D.36718->break_on_unverified;
        if (D.36719 != 0) goto <D.36720>; else goto unverified;
        <D.36720>:
        __asm__ __volatile__("int $03");
        <D.36713>:
        sp = sp + 18446744073709551608;
        <D.36711>:
        D.31680 = *sp;
        D.36721 = D.31680->type;
        D.36722 = D.36721 + 255;
        D.36723 = D.36722 <= 1;
        D.36724 = D.36721 == 4;
        D.36725 = D.36723 | D.36724;
        if (D.36725 != 0) goto <D.36726>; else goto <D.36727>;
        <D.36726>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36728>; else goto <D.36729>;
        <D.36728>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36730>; else goto <D.36731>;
        <D.36730>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36731>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36729>:
        D.36732 = mini_get_debug_options ();
        D.36733 = D.36732->break_on_unverified;
        if (D.36733 != 0) goto <D.36734>; else goto unverified;
        <D.36734>:
        __asm__ __volatile__("int $03");
        <D.36727>:
        D.31560 = *ip;
        if (D.31560 != 123) goto <D.36735>; else goto <D.36736>;
        <D.36735>:
        D.31680 = *sp;
        D.33383 = D.31680->type;
        if (D.33383 == 7) goto <D.36737>; else goto <D.36738>;
        <D.36737>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36739>; else goto <D.36740>;
        <D.36739>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36741>; else goto <D.36742>;
        <D.36741>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36742>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36740>:
        D.36743 = mini_get_debug_options ();
        D.36744 = D.36743->break_on_unverified;
        if (D.36744 != 0) goto <D.36745>; else goto unverified;
        <D.36745>:
        __asm__ __volatile__("int $03");
        <D.36738>:
        <D.36736>:
        goto <D.36746>;
        <D.36699>:
        if (op == 128) goto <D.36747>; else goto <D.36748>;
        <D.36747>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.36749>; else goto <D.36750>;
        <D.36749>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36751>; else goto <D.36752>;
        <D.36751>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36753>; else goto <D.36754>;
        <D.36753>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36754>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36752>:
        D.36755 = mini_get_debug_options ();
        D.36756 = D.36755->break_on_unverified;
        if (D.36756 != 0) goto <D.36757>; else goto unverified;
        <D.36757>:
        __asm__ __volatile__("int $03");
        <D.36750>:
        sp = sp + 18446744073709551608;
        store_val = *sp;
        <D.36748>:
        <D.36746>:
        D.32104 = ip + 5;
        if (D.32104 > end) goto <D.36758>; else goto <D.36759>;
        <D.36758>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36760>; else goto <D.36761>;
        <D.36760>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36762>; else goto <D.36763>;
        <D.36762>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36763>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36761>:
        D.36764 = mini_get_debug_options ();
        D.36765 = D.36764->break_on_unverified;
        if (D.36765 != 0) goto <D.36766>; else goto unverified;
        <D.36766>:
        __asm__ __volatile__("int $03");
        <D.36759>:
        token = MEM[(const guint32 *)ip + 1B];
        D.30614 = BIT_FIELD_REF <*method, 8, 256>;
        D.30615 = D.30614 & 124;
        if (D.30615 != 0) goto <D.36767>; else goto <D.36768>;
        <D.36767>:
        field = mono_method_get_wrapper_data (method, token);
        klass.213 = field->parent;
        klass = klass.213;
        goto <D.36770>;
        <D.36768>:
        field = mono_field_from_token (image, token, &klass, generic_context);
        <D.36770>:
        if (field == 0B) goto <D.36771>; else goto <D.36772>;
        <D.36771>:
        D.36773 = mini_get_debug_options ();
        D.36774 = D.36773->break_on_unverified;
        if (D.36774 != 0) goto <D.36775>; else goto load_error;
        <D.36775>:
        __asm__ __volatile__("int $03");
        <D.36772>:
        if (dont_verify == 0) goto <D.36776>; else goto <D.36777>;
        <D.36776>:
        D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
        D.32545 = D.31454 & 64;
        if (D.32545 == 0) goto <D.36778>; else goto <D.36779>;
        <D.36778>:
        D.36780 = mono_method_can_access_field (method, field);
        if (D.36780 == 0) goto <D.36781>; else goto <D.36782>;
        <D.36781>:
        {
          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.36783 = monoeg_g_strdup_printf ("Field `%s\' is inaccessible from method `%s\'\n", field_fname, method_fname);
          cfg->exception_message = D.36783;
          monoeg_g_free (method_fname);
          monoeg_g_free (field_fname);
          goto exception_exit;
        }
        <D.36782>:
        <D.36779>:
        <D.36777>:
        klass.155 = klass;
        mono_class_init (klass.155);
        if (is_instance != 0) goto <D.36784>; else goto <D.36785>;
        <D.36784>:
        D.31560 = *ip;
        if (D.31560 != 124) goto <D.36786>; else goto <D.36787>;
        <D.36786>:
        D.36788 = is_magic_tls_access (field);
        if (D.36788 != 0) goto <D.36789>; else goto <D.36790>;
        <D.36789>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36791>; else goto <D.36792>;
        <D.36791>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36793>; else goto <D.36794>;
        <D.36793>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36794>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36792>:
        D.36795 = mini_get_debug_options ();
        D.36796 = D.36795->break_on_unverified;
        if (D.36796 != 0) goto <D.36797>; else goto unverified;
        <D.36797>:
        __asm__ __volatile__("int $03");
        <D.36790>:
        <D.36787>:
        <D.36785>:
        if (is_instance == 0) goto <D.36798>; else goto <D.36799>;
        <D.36798>:
        D.36800 = mono_security_get_mode ();
        if (D.36800 == 1) goto <D.36801>; else goto <D.36802>;
        <D.36801>:
        bblock.70 = bblock;
        ensure_method_is_allowed_to_access_field (cfg, method, field, bblock.70, ip);
        <D.36802>:
        <D.36799>:
        if (is_instance != 0) goto <D.36803>; else goto <D.36804>;
        <D.36803>:
        D.36805 = field->type;
        D.36806 = D.36805->attrs;
        D.36807 = (int) D.36806;
        D.36808 = D.36807 & 16;
        if (D.36808 != 0) goto <D.36809>; else goto <D.36810>;
        <D.36809>:
        switch (op) <default: <D.28129>, case 123: <D.28125>, case 124: <D.28128>, case 125: <D.28127>>
        <D.28125>:
        op = 126;
        goto <D.28126>;
        <D.28127>:
        op = 128;
        goto <D.28126>;
        <D.28128>:
        op = 127;
        goto <D.28126>;
        <D.28129>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 9915);
        <D.28126>:
        is_instance = 0;
        <D.36810>:
        <D.36804>:
        klass.155 = klass;
        context_used = mini_class_check_context_used (cfg, klass.155);
        klass.155 = klass;
        D.36812 = BIT_FIELD_REF <*klass.155, 8, 256>;
        D.36813 = D.36812 & 8;
        if (D.36813 != 0) goto <D.36814>; else goto <D.36815>;
        <D.36814>:
        D.36816 = field->offset;
        D.36817 = (unsigned int) D.36816;
        iftmp.214 = D.36817 + 4294967280;
        goto <D.36818>;
        <D.36815>:
        D.36816 = field->offset;
        iftmp.214 = (guint) D.36816;
        <D.36818>:
        foffset = iftmp.214;
        if (op == 125) goto <D.36819>; else goto <D.36820>;
        <D.36819>:
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.36805 = field->type;
        D.36821 = target_type_is_incompatible (cfg, D.36805, D.32789);
        if (D.36821 != 0) goto <D.36822>; else goto <D.36823>;
        <D.36822>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.36824>; else goto <D.36825>;
        <D.36824>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.36826>; else goto <D.36827>;
        <D.36826>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.36827>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.36825>:
        D.36828 = mini_get_debug_options ();
        D.36829 = D.36828->break_on_unverified;
        if (D.36829 != 0) goto <D.36830>; else goto unverified;
        <D.36830>:
        __asm__ __volatile__("int $03");
        <D.36823>:
        klass.155 = klass;
        D.36161 = BIT_FIELD_REF <*klass.155, 8, 272>;
        D.36162 = D.36161 & 64;
        if (D.36162 != 0) goto <D.36835>; else goto <D.36831>;
        <D.36835>:
        D.30642 = cfg->method;
        D.36836 = mono_method_signature (D.30642);
        D.36837 = BIT_FIELD_REF <*D.36836, 8, 112>;
        D.36838 = D.36837 & 64;
        if (D.36838 == 0) goto <D.36832>; else goto <D.36839>;
        <D.36839>:
        D.31680 = *sp;
        D.33387 = D.31680->opcode;
        if (D.33387 != 428) goto <D.36832>; else goto <D.36840>;
        <D.36840>:
        D.31680 = *sp;
        D.36841 = D.31680->sreg1;
        D.31280 = cfg->args;
        D.31281 = *D.31280;
        D.31295 = D.31281->dreg;
        if (D.36841 != D.31295) goto <D.36832>; else goto <D.36831>;
        <D.36831>:
        klass.155 = klass;
        D.36161 = BIT_FIELD_REF <*klass.155, 8, 272>;
        D.36842 = D.36161 & 128;
        if (D.36842 != 0) goto <D.36832>; else goto <D.36843>;
        <D.36843>:
        D.36844 = mono_defaults.marshalbyrefobject_class;
        klass.155 = klass;
        if (D.36844 == klass.155) goto <D.36832>; else goto <D.36833>;
        <D.36832>:
        {
          struct MonoMethod * stfld_wrapper;
          struct MonoInst * iargs[5];

          try
            {
              D.36805 = field->type;
              stfld_wrapper = mono_marshal_get_stfld_wrapper (D.36805);
              D.30822 = cfg->gsharedvt;
              if (D.30822 != 0) goto <D.36845>; else goto <D.36846>;
              <D.36845>:
              D.36847 = mono_opcode_name (op);
              D.32333 = method->signature;
              D.32334 = D.32333->param_count;
              D.32335 = (int) D.32334;
              D.32336 = method->name;
              D.30609 = method->klass;
              D.32337 = D.30609->name;
              D.30609 = method->klass;
              D.32338 = D.30609->name_space;
              D.36848 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.36847, "method-to-ir.c", 9933);
              cfg->exception_message = D.36848;
              D.30753 = cfg->verbose_level;
              if (D.30753 > 1) goto <D.36849>; else goto <D.36850>;
              <D.36849>:
              D.32342 = cfg->exception_message;
              printf ("%s\n", D.32342);
              <D.36850>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.36846>:
              D.31680 = *sp;
              iargs[0] = D.31680;
              D.30673 = cfg->mempool;
              D.36851 = mono_mempool_alloc (D.30673, 80);
              iargs[1] = D.36851;
              D.36852 = iargs[1];
              D.36852 = iargs[1];
              D.36852->data.op[1].const_val = 0;
              D.36853 = D.36852->data.op[1].const_val;
              D.36852->data.op[0].const_val = D.36853;
              D.36852 = iargs[1];
              D.36852 = iargs[1];
              D.36852->prev = 0B;
              D.36854 = D.36852->prev;
              D.36852->next = D.36854;
              D.36852 = iargs[1];
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.36856>; else goto <D.36857>;
              <D.36856>:
              iftmp.215 = 736;
              goto <D.36858>;
              <D.36857>:
              iftmp.215 = 363;
              <D.36858>:
              D.36852->opcode = iftmp.215;
              D.36852 = iargs[1];
              D.36852->flags = 0;
              D.36852 = iargs[1];
              D.36852->type = 0;
              D.36852 = iargs[1];
              D.36852->dreg = -1;
              D.36852 = iargs[1];
              D.36852 = iargs[1];
              D.36852 = iargs[1];
              D.36852->sreg3 = -1;
              D.36859 = D.36852->sreg3;
              D.36852->sreg2 = D.36859;
              D.36860 = D.36852->sreg2;
              D.36852->sreg1 = D.36860;
              D.36852 = iargs[1];
              D.30898 = cfg->ip;
              D.36852->cil_code = D.30898;
              D.36852 = iargs[1];
              klass.155 = klass;
              D.36852->data.op[0].p = klass.155;
              D.36852 = iargs[1];
              D.36852->data.op[1].src = 11B;
              D.36852 = iargs[1];
              D.36852->type = 3;
              D.36852 = iargs[1];
              D.36861 = alloc_dreg (cfg, 3);
              D.36862 = (int) D.36861;
              D.36852->dreg = D.36862;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.36863>; else goto <D.36864>;
              <D.36863>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.36852 = iargs[1];
              D.30927->next = D.36852;
              D.36852 = iargs[1];
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.36852->prev = D.30927;
              bblock.113 = cfg->cbb;
              D.36852 = iargs[1];
              bblock.113->last_ins = D.36852;
              goto <D.36865>;
              <D.36864>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              D.36852 = iargs[1];
              bblock.113->last_ins = D.36852;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.36865>:
              D.30673 = cfg->mempool;
              D.36866 = mono_mempool_alloc (D.30673, 80);
              iargs[2] = D.36866;
              D.36867 = iargs[2];
              D.36867 = iargs[2];
              D.36867->data.op[1].const_val = 0;
              D.36868 = D.36867->data.op[1].const_val;
              D.36867->data.op[0].const_val = D.36868;
              D.36867 = iargs[2];
              D.36867 = iargs[2];
              D.36867->prev = 0B;
              D.36869 = D.36867->prev;
              D.36867->next = D.36869;
              D.36867 = iargs[2];
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.36871>; else goto <D.36872>;
              <D.36871>:
              iftmp.216 = 736;
              goto <D.36873>;
              <D.36872>:
              iftmp.216 = 363;
              <D.36873>:
              D.36867->opcode = iftmp.216;
              D.36867 = iargs[2];
              D.36867->flags = 0;
              D.36867 = iargs[2];
              D.36867->type = 0;
              D.36867 = iargs[2];
              D.36867->dreg = -1;
              D.36867 = iargs[2];
              D.36867 = iargs[2];
              D.36867 = iargs[2];
              D.36867->sreg3 = -1;
              D.36874 = D.36867->sreg3;
              D.36867->sreg2 = D.36874;
              D.36875 = D.36867->sreg2;
              D.36867->sreg1 = D.36875;
              D.36867 = iargs[2];
              D.30898 = cfg->ip;
              D.36867->cil_code = D.30898;
              D.36867 = iargs[2];
              D.36867->data.op[0].p = field;
              D.36867 = iargs[2];
              D.36867->data.op[1].src = 13B;
              D.36867 = iargs[2];
              D.36867->type = 3;
              D.36867 = iargs[2];
              D.36876 = alloc_dreg (cfg, 3);
              D.36877 = (int) D.36876;
              D.36867->dreg = D.36877;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.36878>; else goto <D.36879>;
              <D.36878>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.36867 = iargs[2];
              D.30927->next = D.36867;
              D.36867 = iargs[2];
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.36867->prev = D.30927;
              bblock.113 = cfg->cbb;
              D.36867 = iargs[2];
              bblock.113->last_ins = D.36867;
              goto <D.36880>;
              <D.36879>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              D.36867 = iargs[2];
              bblock.113->last_ins = D.36867;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.36880>:
              D.30673 = cfg->mempool;
              D.36881 = mono_mempool_alloc (D.30673, 80);
              iargs[3] = D.36881;
              D.36882 = iargs[3];
              D.36882 = iargs[3];
              D.36882->data.op[1].const_val = 0;
              D.36883 = D.36882->data.op[1].const_val;
              D.36882->data.op[0].const_val = D.36883;
              D.36882 = iargs[3];
              D.36882 = iargs[3];
              D.36882->prev = 0B;
              D.36884 = D.36882->prev;
              D.36882->next = D.36884;
              D.36882 = iargs[3];
              D.36882->opcode = 362;
              D.36882 = iargs[3];
              D.36882->flags = 0;
              D.36882 = iargs[3];
              D.36882->type = 0;
              D.36882 = iargs[3];
              D.36882->dreg = -1;
              D.36882 = iargs[3];
              D.36882 = iargs[3];
              D.36882 = iargs[3];
              D.36882->sreg3 = -1;
              D.36885 = D.36882->sreg3;
              D.36882->sreg2 = D.36885;
              D.36886 = D.36882->sreg2;
              D.36882->sreg1 = D.36886;
              D.36882 = iargs[3];
              D.30898 = cfg->ip;
              D.36882->cil_code = D.30898;
              D.36882 = iargs[3];
              klass.155 = klass;
              D.36812 = BIT_FIELD_REF <*klass.155, 8, 256>;
              D.36813 = D.36812 & 8;
              if (D.36813 != 0) goto <D.36888>; else goto <D.36889>;
              <D.36888>:
              D.36816 = field->offset;
              D.36890 = (long unsigned int) D.36816;
              D.36891 = D.36890 + 18446744073709551600;
              iftmp.217 = (mgreg_t) D.36891;
              goto <D.36892>;
              <D.36889>:
              D.36816 = field->offset;
              iftmp.217 = (mgreg_t) D.36816;
              <D.36892>:
              D.36882->data.op[0].const_val = iftmp.217;
              D.36882 = iargs[3];
              D.36882->type = 1;
              D.36882 = iargs[3];
              D.36893 = alloc_dreg (cfg, 1);
              D.36894 = (int) D.36893;
              D.36882->dreg = D.36894;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.36895>; else goto <D.36896>;
              <D.36895>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.36882 = iargs[3];
              D.30927->next = D.36882;
              D.36882 = iargs[3];
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.36882->prev = D.30927;
              bblock.113 = cfg->cbb;
              D.36882 = iargs[3];
              bblock.113->last_ins = D.36882;
              goto <D.36897>;
              <D.36896>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              D.36882 = iargs[3];
              bblock.113->last_ins = D.36882;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.36897>:
              D.35847 = MEM[(struct MonoInst * *)sp + 8B];
              iargs[4] = D.35847;
              D.31070 = cfg->opt;
              D.33494 = D.31070 & 4;
              if (D.33494 != 0) goto <D.36898>; else goto <D.36901>;
              <D.36901>:
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.36898>; else goto <D.36899>;
              <D.36898>:
              D.30841 = cfg->real_offset;
              D.36902 = mono_method_signature (stfld_wrapper);
              costs = inline_method (cfg, stfld_wrapper, D.36902, &iargs, ip, D.30841, dont_inline, 1);
              D.31231 = cfg->exception_type;
              if (D.31231 != 0) goto exception_exit; else goto <D.36903>;
              <D.36903>:
              D.36904 = costs <= 0;
              D.36905 = (long int) D.36904;
              D.36906 = __builtin_expect (D.36905, 0);
              if (D.36906 != 0) goto <D.36907>; else goto <D.36908>;
              <D.36907>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 9946, "costs > 0");
              <D.36908>:
              D.30841 = cfg->real_offset;
              D.33521 = D.30841 + 5;
              cfg->real_offset = D.33521;
              bblock.113 = cfg->cbb;
              bblock = bblock.113;
              inline_costs = inline_costs + costs;
              goto <D.36900>;
              <D.36899>:
              mono_emit_method_call (cfg, stfld_wrapper, &iargs, 0B);
              <D.36900>:
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.36834>;
        <D.36833>:
        {
          struct MonoInst * store;

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

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

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

            klass.155 = klass;
            context_used = mini_class_check_context_used (cfg, klass.155);
            offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
            D.36929 = alloc_ireg_mp (cfg);
            dreg = (int) D.36929;
            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.30894 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30894;
            ins->prev = 0B;
            D.30895 = ins->prev;
            ins->next = D.30895;
            ins->opcode = 483;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30896 = ins->sreg3;
            ins->sreg2 = D.30896;
            D.30897 = ins->sreg2;
            ins->sreg1 = D.30897;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            ins->dreg = dreg;
            D.31680 = *sp;
            D.31862 = D.31680->dreg;
            ins->sreg1 = D.31862;
            D.36930 = offset_ins->dreg;
            ins->sreg2 = D.36930;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36931>; else goto <D.36932>;
            <D.36931>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.36933>;
            <D.36932>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36933>:
            D.30673 = cfg->mempool;
            store = mono_mempool_alloc (D.30673, 80);
            store->data.op[1].const_val = 0;
            D.36934 = store->data.op[1].const_val;
            store->data.op[0].const_val = D.36934;
            store->prev = 0B;
            D.36935 = store->prev;
            store->next = D.36935;
            D.36805 = field->type;
            D.36936 = mono_type_to_store_membase (cfg, D.36805);
            D.36937 = (short unsigned int) D.36936;
            store->opcode = D.36937;
            store->flags = 0;
            store->type = 0;
            store->dreg = -1;
            store->sreg3 = -1;
            D.36938 = store->sreg3;
            store->sreg2 = D.36938;
            D.36939 = store->sreg2;
            store->sreg1 = D.36939;
            D.30898 = cfg->ip;
            store->cil_code = D.30898;
            D.32788 = sp + 8;
            D.32789 = *D.32788;
            D.32790 = D.32789->dreg;
            store->sreg1 = D.32790;
            store->dreg = dreg;
            store->data.op[0].const_val = 0;
            D.36805 = field->type;
            type_to_eval_stack_type (cfg, D.36805, store);
            D.36805 = field->type;
            D.36940 = mono_class_from_mono_type (D.36805);
            store->klass = D.36940;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36941>; else goto <D.36942>;
            <D.36941>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = store;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            store->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = store;
            goto <D.36943>;
            <D.36942>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = store;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36943>:
          }
          goto <D.36944>;
          <D.36928>:
          D.30673 = cfg->mempool;
          store = mono_mempool_alloc (D.30673, 80);
          store->data.op[1].const_val = 0;
          D.36934 = store->data.op[1].const_val;
          store->data.op[0].const_val = D.36934;
          store->prev = 0B;
          D.36935 = store->prev;
          store->next = D.36935;
          D.36805 = field->type;
          D.36945 = mono_type_to_store_membase (cfg, D.36805);
          D.36946 = (short unsigned int) D.36945;
          store->opcode = D.36946;
          store->flags = 0;
          store->type = 0;
          store->dreg = -1;
          store->sreg3 = -1;
          D.36938 = store->sreg3;
          store->sreg2 = D.36938;
          D.36939 = store->sreg2;
          store->sreg1 = D.36939;
          D.30898 = cfg->ip;
          store->cil_code = D.30898;
          D.32788 = sp + 8;
          D.32789 = *D.32788;
          D.32790 = D.32789->dreg;
          store->sreg1 = D.32790;
          D.31680 = *sp;
          D.31862 = D.31680->dreg;
          store->dreg = D.31862;
          D.36947 = (long int) foffset;
          store->data.op[0].const_val = D.36947;
          D.36805 = field->type;
          type_to_eval_stack_type (cfg, D.36805, store);
          D.36805 = field->type;
          D.36948 = mono_class_from_mono_type (D.36805);
          store->klass = D.36948;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.36949>; else goto <D.36950>;
          <D.36949>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = store;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          store->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = store;
          goto <D.36951>;
          <D.36950>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = store;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.36951>:
          <D.36944>:
          D.31680 = *sp;
          D.33387 = D.31680->opcode;
          if (D.33387 != 314) goto <D.36952>; else goto <D.36953>;
          <D.36952>:
          D.36954 = store->flags;
          D.36955 = D.36954 | 32;
          store->flags = D.36955;
          <D.36953>:
          D.33854 = BIT_FIELD_REF <*cfg, 8, 5624>;
          D.33855 = D.33854 & 16;
          if (D.33855 != 0) goto <D.36958>; else goto <D.36959>;
          <D.36958>:
          D.36805 = field->type;
          D.36960 = mini_type_to_stind (cfg, D.36805);
          if (D.36960 == 81) goto <D.36961>; else goto <D.36962>;
          <D.36961>:
          D.32788 = sp + 8;
          D.32789 = *D.32788;
          D.35033 = D.32789->opcode;
          if (D.35033 != 363) goto <D.36956>; else goto <D.36963>;
          <D.36963>:
          D.32788 = sp + 8;
          D.32789 = *D.32788;
          D.35058 = D.32789->data.op[0].const_val;
          if (D.35058 != 0) goto <D.36956>; else goto <D.36957>;
          <D.36956>:
          {
            struct MonoInst * ptr;
            int dreg;

            D.36964 = alloc_ireg_mp (cfg);
            dreg = (int) D.36964;
            D.30673 = cfg->mempool;
            ptr = mono_mempool_alloc (D.30673, 80);
            ptr->data.op[1].const_val = 0;
            D.36965 = ptr->data.op[1].const_val;
            ptr->data.op[0].const_val = D.36965;
            ptr->prev = 0B;
            D.36966 = ptr->prev;
            ptr->next = D.36966;
            ptr->opcode = 542;
            ptr->flags = 0;
            ptr->type = 0;
            ptr->dreg = -1;
            ptr->sreg3 = -1;
            D.36967 = ptr->sreg3;
            ptr->sreg2 = D.36967;
            D.36968 = ptr->sreg2;
            ptr->sreg1 = D.36968;
            D.30898 = cfg->ip;
            ptr->cil_code = D.30898;
            ptr->dreg = dreg;
            D.31680 = *sp;
            D.31862 = D.31680->dreg;
            ptr->sreg1 = D.31862;
            D.36947 = (long int) foffset;
            ptr->data.op[1].const_val = D.36947;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.36969>; else goto <D.36970>;
            <D.36969>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ptr;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ptr->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ptr;
            goto <D.36971>;
            <D.36970>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ptr;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.36971>:
            D.32788 = sp + 8;
            D.32789 = *D.32788;
            emit_write_barrier (cfg, ptr, D.32789);
          }
          <D.36957>:
          <D.36962>:
          <D.36959>:
          D.36954 = store->flags;
          D.34999 = (unsigned char) ins_flag;
          D.36972 = D.36954 | D.34999;
          store->flags = D.36972;
        }
        <D.36834>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.27670>;
        <D.36820>:
        if (is_instance != 0) goto <D.36977>; else goto <D.36973>;
        <D.36977>:
        klass.155 = klass;
        D.36161 = BIT_FIELD_REF <*klass.155, 8, 272>;
        D.36162 = D.36161 & 64;
        if (D.36162 != 0) goto <D.36978>; else goto <D.36974>;
        <D.36978>:
        D.30642 = cfg->method;
        D.36979 = mono_method_signature (D.30642);
        D.36980 = BIT_FIELD_REF <*D.36979, 8, 112>;
        D.36981 = D.36980 & 64;
        if (D.36981 == 0) goto <D.36975>; else goto <D.36982>;
        <D.36982>:
        D.31680 = *sp;
        D.33387 = D.31680->opcode;
        if (D.33387 != 428) goto <D.36975>; else goto <D.36983>;
        <D.36983>:
        D.31680 = *sp;
        D.36841 = D.31680->sreg1;
        D.31280 = cfg->args;
        D.31281 = *D.31280;
        D.31295 = D.31281->dreg;
        if (D.36841 != D.31295) goto <D.36975>; else goto <D.36974>;
        <D.36974>:
        klass.155 = klass;
        D.36161 = BIT_FIELD_REF <*klass.155, 8, 272>;
        D.36842 = D.36161 & 128;
        if (D.36842 != 0) goto <D.36975>; else goto <D.36984>;
        <D.36984>:
        D.36844 = mono_defaults.marshalbyrefobject_class;
        klass.155 = klass;
        if (D.36844 == klass.155) goto <D.36975>; else goto <D.36973>;
        <D.36975>:
        {
          struct MonoMethod * wrapper;
          struct MonoInst * iargs[4];

          try
            {
              if (op == 124) goto <D.36986>; else goto <D.36987>;
              <D.36986>:
              D.36805 = field->type;
              iftmp.218 = mono_marshal_get_ldflda_wrapper (D.36805);
              goto <D.36988>;
              <D.36987>:
              D.36805 = field->type;
              iftmp.218 = mono_marshal_get_ldfld_wrapper (D.36805);
              <D.36988>:
              wrapper = iftmp.218;
              D.30822 = cfg->gsharedvt;
              if (D.30822 != 0) goto <D.36989>; else goto <D.36990>;
              <D.36989>:
              D.36991 = mono_opcode_name (op);
              D.32333 = method->signature;
              D.32334 = D.32333->param_count;
              D.32335 = (int) D.32334;
              D.32336 = method->name;
              D.30609 = method->klass;
              D.32337 = D.30609->name;
              D.30609 = method->klass;
              D.32338 = D.30609->name_space;
              D.36992 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.36991, "method-to-ir.c", 10000);
              cfg->exception_message = D.36992;
              D.30753 = cfg->verbose_level;
              if (D.30753 > 1) goto <D.36993>; else goto <D.36994>;
              <D.36993>:
              D.32342 = cfg->exception_message;
              printf ("%s\n", D.32342);
              <D.36994>:
              mono_cfg_set_exception (cfg, 11);
              goto exception_exit;
              <D.36990>:
              D.31680 = *sp;
              iargs[0] = D.31680;
              D.30673 = cfg->mempool;
              D.36995 = mono_mempool_alloc (D.30673, 80);
              iargs[1] = D.36995;
              D.36996 = iargs[1];
              D.36996 = iargs[1];
              D.36996->data.op[1].const_val = 0;
              D.36997 = D.36996->data.op[1].const_val;
              D.36996->data.op[0].const_val = D.36997;
              D.36996 = iargs[1];
              D.36996 = iargs[1];
              D.36996->prev = 0B;
              D.36998 = D.36996->prev;
              D.36996->next = D.36998;
              D.36996 = iargs[1];
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.37000>; else goto <D.37001>;
              <D.37000>:
              iftmp.219 = 736;
              goto <D.37002>;
              <D.37001>:
              iftmp.219 = 363;
              <D.37002>:
              D.36996->opcode = iftmp.219;
              D.36996 = iargs[1];
              D.36996->flags = 0;
              D.36996 = iargs[1];
              D.36996->type = 0;
              D.36996 = iargs[1];
              D.36996->dreg = -1;
              D.36996 = iargs[1];
              D.36996 = iargs[1];
              D.36996 = iargs[1];
              D.36996->sreg3 = -1;
              D.37003 = D.36996->sreg3;
              D.36996->sreg2 = D.37003;
              D.37004 = D.36996->sreg2;
              D.36996->sreg1 = D.37004;
              D.36996 = iargs[1];
              D.30898 = cfg->ip;
              D.36996->cil_code = D.30898;
              D.36996 = iargs[1];
              klass.155 = klass;
              D.36996->data.op[0].p = klass.155;
              D.36996 = iargs[1];
              D.36996->data.op[1].src = 11B;
              D.36996 = iargs[1];
              D.36996->type = 3;
              D.36996 = iargs[1];
              D.37005 = alloc_dreg (cfg, 3);
              D.37006 = (int) D.37005;
              D.36996->dreg = D.37006;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37007>; else goto <D.37008>;
              <D.37007>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.36996 = iargs[1];
              D.30927->next = D.36996;
              D.36996 = iargs[1];
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.36996->prev = D.30927;
              bblock.113 = cfg->cbb;
              D.36996 = iargs[1];
              bblock.113->last_ins = D.36996;
              goto <D.37009>;
              <D.37008>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              D.36996 = iargs[1];
              bblock.113->last_ins = D.36996;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37009>:
              D.30673 = cfg->mempool;
              D.37010 = mono_mempool_alloc (D.30673, 80);
              iargs[2] = D.37010;
              D.37011 = iargs[2];
              D.37011 = iargs[2];
              D.37011->data.op[1].const_val = 0;
              D.37012 = D.37011->data.op[1].const_val;
              D.37011->data.op[0].const_val = D.37012;
              D.37011 = iargs[2];
              D.37011 = iargs[2];
              D.37011->prev = 0B;
              D.37013 = D.37011->prev;
              D.37011->next = D.37013;
              D.37011 = iargs[2];
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.37015>; else goto <D.37016>;
              <D.37015>:
              iftmp.220 = 736;
              goto <D.37017>;
              <D.37016>:
              iftmp.220 = 363;
              <D.37017>:
              D.37011->opcode = iftmp.220;
              D.37011 = iargs[2];
              D.37011->flags = 0;
              D.37011 = iargs[2];
              D.37011->type = 0;
              D.37011 = iargs[2];
              D.37011->dreg = -1;
              D.37011 = iargs[2];
              D.37011 = iargs[2];
              D.37011 = iargs[2];
              D.37011->sreg3 = -1;
              D.37018 = D.37011->sreg3;
              D.37011->sreg2 = D.37018;
              D.37019 = D.37011->sreg2;
              D.37011->sreg1 = D.37019;
              D.37011 = iargs[2];
              D.30898 = cfg->ip;
              D.37011->cil_code = D.30898;
              D.37011 = iargs[2];
              D.37011->data.op[0].p = field;
              D.37011 = iargs[2];
              D.37011->data.op[1].src = 13B;
              D.37011 = iargs[2];
              D.37011->type = 3;
              D.37011 = iargs[2];
              D.37020 = alloc_dreg (cfg, 3);
              D.37021 = (int) D.37020;
              D.37011->dreg = D.37021;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37022>; else goto <D.37023>;
              <D.37022>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37011 = iargs[2];
              D.30927->next = D.37011;
              D.37011 = iargs[2];
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37011->prev = D.30927;
              bblock.113 = cfg->cbb;
              D.37011 = iargs[2];
              bblock.113->last_ins = D.37011;
              goto <D.37024>;
              <D.37023>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              D.37011 = iargs[2];
              bblock.113->last_ins = D.37011;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37024>:
              D.30673 = cfg->mempool;
              D.37025 = mono_mempool_alloc (D.30673, 80);
              iargs[3] = D.37025;
              D.37026 = iargs[3];
              D.37026 = iargs[3];
              D.37026->data.op[1].const_val = 0;
              D.37027 = D.37026->data.op[1].const_val;
              D.37026->data.op[0].const_val = D.37027;
              D.37026 = iargs[3];
              D.37026 = iargs[3];
              D.37026->prev = 0B;
              D.37028 = D.37026->prev;
              D.37026->next = D.37028;
              D.37026 = iargs[3];
              D.37026->opcode = 362;
              D.37026 = iargs[3];
              D.37026->flags = 0;
              D.37026 = iargs[3];
              D.37026->type = 0;
              D.37026 = iargs[3];
              D.37026->dreg = -1;
              D.37026 = iargs[3];
              D.37026 = iargs[3];
              D.37026 = iargs[3];
              D.37026->sreg3 = -1;
              D.37029 = D.37026->sreg3;
              D.37026->sreg2 = D.37029;
              D.37030 = D.37026->sreg2;
              D.37026->sreg1 = D.37030;
              D.37026 = iargs[3];
              D.30898 = cfg->ip;
              D.37026->cil_code = D.30898;
              D.37026 = iargs[3];
              klass.155 = klass;
              D.36812 = BIT_FIELD_REF <*klass.155, 8, 256>;
              D.36813 = D.36812 & 8;
              if (D.36813 != 0) goto <D.37032>; else goto <D.37033>;
              <D.37032>:
              D.36816 = field->offset;
              D.36890 = (long unsigned int) D.36816;
              D.36891 = D.36890 + 18446744073709551600;
              iftmp.221 = (mgreg_t) D.36891;
              goto <D.37034>;
              <D.37033>:
              D.36816 = field->offset;
              iftmp.221 = (mgreg_t) D.36816;
              <D.37034>:
              D.37026->data.op[0].const_val = iftmp.221;
              D.37026 = iargs[3];
              D.37026->type = 1;
              D.37026 = iargs[3];
              D.37035 = alloc_dreg (cfg, 1);
              D.37036 = (int) D.37035;
              D.37026->dreg = D.37036;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37037>; else goto <D.37038>;
              <D.37037>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37026 = iargs[3];
              D.30927->next = D.37026;
              D.37026 = iargs[3];
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37026->prev = D.30927;
              bblock.113 = cfg->cbb;
              D.37026 = iargs[3];
              bblock.113->last_ins = D.37026;
              goto <D.37039>;
              <D.37038>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              D.37026 = iargs[3];
              bblock.113->last_ins = D.37026;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37039>:
              D.31070 = cfg->opt;
              D.33494 = D.31070 & 4;
              if (D.33494 != 0) goto <D.37040>; else goto <D.37043>;
              <D.37043>:
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.37040>; else goto <D.37041>;
              <D.37040>:
              D.30841 = cfg->real_offset;
              D.37044 = mono_method_signature (wrapper);
              costs = inline_method (cfg, wrapper, D.37044, &iargs, ip, D.30841, dont_inline, 1);
              D.31231 = cfg->exception_type;
              if (D.31231 != 0) goto exception_exit; else goto <D.37045>;
              <D.37045>:
              bblock.113 = cfg->cbb;
              bblock = bblock.113;
              D.36904 = costs <= 0;
              D.36905 = (long int) D.36904;
              D.36906 = __builtin_expect (D.36905, 0);
              if (D.36906 != 0) goto <D.37046>; else goto <D.37047>;
              <D.37046>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10011, "costs > 0");
              <D.37047>:
              D.30841 = cfg->real_offset;
              D.33521 = D.30841 + 5;
              cfg->real_offset = D.33521;
              sp.222 = sp;
              sp = sp.222 + 8;
              D.37049 = iargs[0];
              *sp.222 = D.37049;
              inline_costs = inline_costs + costs;
              goto <D.37042>;
              <D.37041>:
              ins = mono_emit_method_call (cfg, wrapper, &iargs, 0B);
              sp.223 = sp;
              sp = sp.223 + 8;
              *sp.223 = ins;
              <D.37042>:
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.36976>;
        <D.36973>:
        if (is_instance != 0) goto <D.37051>; else goto <D.37052>;
        <D.37051>:
        D.31680 = *sp;
        D.33383 = D.31680->type;
        if (D.33383 == 7) goto <D.37053>; else goto <D.37054>;
        <D.37053>:
        {
          struct MonoInst * var;

          D.31680 = *sp;
          D.31862 = D.31680->dreg;
          D.37056 = (unsigned int) D.31862;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.37056 < D.31781) goto <D.37057>; else goto <D.37058>;
          <D.37057>:
          D.31784 = cfg->vreg_to_inst;
          D.31680 = *sp;
          D.31862 = D.31680->dreg;
          D.37059 = (long unsigned int) D.31862;
          D.37060 = D.37059 * 8;
          D.37061 = D.31784 + D.37060;
          iftmp.224 = *D.37061;
          goto <D.37062>;
          <D.37058>:
          iftmp.224 = 0B;
          <D.37062>:
          var = iftmp.224;
          if (var == 0B) goto <D.37063>; else goto <D.37064>;
          <D.37063>:
          D.31680 = *sp;
          D.31862 = D.31680->dreg;
          klass.155 = klass;
          D.35462 = &klass.155->byval_arg;
          var = mono_compile_create_var_for_vreg (cfg, D.35462, 329, D.31862);
          goto <D.37065>;
          <D.37064>:
          D.37066 = var->klass;
          klass.155 = klass;
          D.37067 = D.37066 != klass.155;
          D.37068 = (long int) D.37067;
          D.37069 = __builtin_expect (D.37068, 0);
          if (D.37069 != 0) goto <D.37070>; else goto <D.37071>;
          <D.37070>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10034, "var->klass == klass");
          <D.37071>:
          <D.37065>:
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          ins->opcode = 314;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          ins->data.op[0].p = var;
          D.37072 = var->flags;
          D.37073 = D.37072 | 16;
          var->flags = D.37073;
          ins->type = 5;
          D.37066 = var->klass;
          ins->klass = D.37066;
          D.37074 = alloc_dreg (cfg, 5);
          D.37075 = (int) D.37074;
          ins->dreg = D.37075;
          cfg->has_indirection = 1;
          D.30822 = cfg->gsharedvt;
          D.31766 = D.30822 != 0;
          D.31767 = (long int) D.31766;
          D.31768 = __builtin_expect (D.31767, 0);
          if (D.31768 != 0) goto <D.37076>; else goto <D.37077>;
          <D.37076>:
          D.37078 = var->data.op[1].vtype;
          D.37079 = mini_is_gsharedvt_variable_type (cfg, D.37078);
          if (D.37079 != 0) goto <D.37080>; else goto <D.37081>;
          <D.37080>:
          handle_gsharedvt_ldaddr (cfg);
          <D.37081>:
          <D.37077>:
          if (0 != 0) goto <D.37082>; else goto <D.37083>;
          <D.37082>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.37085 = var->dreg;
            D.37086 = D.37085 + 1;
            D.37087 = (unsigned int) D.37086;
            D.31781 = cfg->vreg_to_inst_len;
            if (D.37087 < D.31781) goto <D.37088>; else goto <D.37089>;
            <D.37088>:
            D.31784 = cfg->vreg_to_inst;
            D.37085 = var->dreg;
            D.37090 = (sizetype) D.37085;
            D.37091 = D.37090 + 1;
            D.37092 = D.37091 * 8;
            D.37093 = D.31784 + D.37092;
            iftmp.225 = *D.37093;
            goto <D.37094>;
            <D.37089>:
            iftmp.225 = 0B;
            <D.37094>:
            var1 = iftmp.225;
            D.37085 = var->dreg;
            D.37096 = D.37085 + 2;
            D.37097 = (unsigned int) D.37096;
            D.31781 = cfg->vreg_to_inst_len;
            if (D.37097 < D.31781) goto <D.37098>; else goto <D.37099>;
            <D.37098>:
            D.31784 = cfg->vreg_to_inst;
            D.37085 = var->dreg;
            D.37090 = (sizetype) D.37085;
            D.37100 = D.37090 + 2;
            D.37101 = D.37100 * 8;
            D.37102 = D.31784 + D.37101;
            iftmp.226 = *D.37102;
            goto <D.37103>;
            <D.37099>:
            iftmp.226 = 0B;
            <D.37103>:
            var2 = iftmp.226;
            D.37104 = var1 == 0B;
            D.37105 = (long int) D.37104;
            D.37106 = __builtin_expect (D.37105, 0);
            if (D.37106 != 0) goto <D.37107>; else goto <D.37108>;
            <D.37107>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10036, "var1");
            <D.37108>:
            D.37109 = var2 == 0B;
            D.37110 = (long int) D.37109;
            D.37111 = __builtin_expect (D.37110, 0);
            if (D.37111 != 0) goto <D.37112>; else goto <D.37113>;
            <D.37112>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10036, "var2");
            <D.37113>:
            D.37114 = var1->flags;
            D.37115 = D.37114 | 16;
            var1->flags = D.37115;
            D.37116 = var2->flags;
            D.37117 = D.37116 | 16;
            var2->flags = D.37117;
          }
          <D.37083>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.37118>; else goto <D.37119>;
          <D.37118>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.37120>;
          <D.37119>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.37120>:
          *sp = ins;
        }
        <D.37054>:
        if (op == 124) goto <D.37121>; else goto <D.37122>;
        <D.37121>:
        D.37123 = is_magic_tls_access (field);
        if (D.37123 != 0) goto <D.37124>; else goto <D.37125>;
        <D.37124>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.37126>; else goto <D.37127>;
        <D.37126>:
        D.31560 = *ip;
        D.31561 = (int) D.31560;
        D.37128 = mono_opcode_name (D.31561);
        D.32333 = method->signature;
        D.32334 = D.32333->param_count;
        D.32335 = (int) D.32334;
        D.32336 = method->name;
        D.30609 = method->klass;
        D.32337 = D.30609->name;
        D.30609 = method->klass;
        D.32338 = D.30609->name_space;
        D.37129 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.37128, "method-to-ir.c", 10042);
        cfg->exception_message = D.37129;
        D.30753 = cfg->verbose_level;
        if (D.30753 > 1) goto <D.37130>; else goto <D.37131>;
        <D.37130>:
        D.32342 = cfg->exception_message;
        printf ("%s\n", D.32342);
        <D.37131>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37127>:
        ins = *sp;
        sp.227 = sp;
        sp = sp.227 + 8;
        D.37133 = create_magic_tls_access (cfg, field, &cached_tls_addr, ins);
        *sp.227 = D.37133;
        goto <D.37134>;
        <D.37125>:
        D.31680 = *sp;
        D.33383 = D.31680->type;
        if (D.33383 == 6) goto <D.37135>; else goto <D.37136>;
        <D.37135>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.37137 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37137;
          inst->prev = 0B;
          D.37138 = inst->prev;
          inst->next = D.37138;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37139 = inst->sreg3;
          inst->sreg2 = D.37139;
          D.37140 = inst->sreg2;
          inst->sreg1 = D.37140;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = -1;
          D.31680 = *sp;
          D.31862 = D.31680->dreg;
          inst->sreg1 = D.31862;
          inst->data.op[1].const_val = 0;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.37141>; else goto <D.37142>;
          <D.37141>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.37143>;
          <D.37142>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.37143>:
        }
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.37144 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.37144;
          inst->prev = 0B;
          D.37145 = inst->prev;
          inst->next = D.37145;
          inst->opcode = 455;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.37146 = inst->sreg3;
          inst->sreg2 = D.37146;
          D.37147 = inst->sreg2;
          inst->sreg1 = D.37147;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->data.op[1].p = "NullReferenceException";
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.37148>; else goto <D.37149>;
          <D.37148>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.37150>;
          <D.37149>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.37150>:
        }
        <D.37136>:
        D.37151 = alloc_ireg_mp (cfg);
        dreg = (int) D.37151;
        klass.155 = klass;
        D.37152 = mini_is_gsharedvt_klass (cfg, klass.155);
        if (D.37152 != 0) goto <D.37153>; else goto <D.37154>;
        <D.37153>:
        {
          struct MonoInst * offset_ins;

          offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          ins->opcode = 483;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          ins->dreg = dreg;
          D.31680 = *sp;
          D.31862 = D.31680->dreg;
          ins->sreg1 = D.31862;
          D.37155 = offset_ins->dreg;
          ins->sreg2 = D.37155;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.37156>; else goto <D.37157>;
          <D.37156>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.37158>;
          <D.37157>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.37158>:
        }
        goto <D.37159>;
        <D.37154>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 542;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->dreg = dreg;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        ins->sreg1 = D.31862;
        D.36947 = (long int) foffset;
        ins->data.op[1].const_val = D.36947;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.37160>; else goto <D.37161>;
        <D.37160>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.37162>;
        <D.37161>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.37162>:
        <D.37159>:
        D.36805 = field->type;
        D.37163 = mono_class_from_mono_type (D.36805);
        ins->klass = D.37163;
        ins->type = 5;
        sp.228 = sp;
        sp = sp.228 + 8;
        *sp.228 = ins;
        <D.37134>:
        goto <D.37165>;
        <D.37122>:
        {
          struct MonoInst * load;

          D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
          D.31308 = D.30660 & 64;
          if (D.31308 != 0) goto <D.37166>; else goto <D.37167>;
          <D.37166>:
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.37168 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37168;
            inst->prev = 0B;
            D.37169 = inst->prev;
            inst->next = D.37169;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37170 = inst->sreg3;
            inst->sreg2 = D.37170;
            D.37171 = inst->sreg2;
            inst->sreg1 = D.37171;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->dreg = -1;
            D.31680 = *sp;
            D.31862 = D.31680->dreg;
            inst->sreg1 = D.31862;
            inst->data.op[1].const_val = 0;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37172>; else goto <D.37173>;
            <D.37172>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.37174>;
            <D.37173>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37174>:
          }
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.37175 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37175;
            inst->prev = 0B;
            D.37176 = inst->prev;
            inst->next = D.37176;
            inst->opcode = 455;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37177 = inst->sreg3;
            inst->sreg2 = D.37177;
            D.37178 = inst->sreg2;
            inst->sreg1 = D.37178;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->data.op[1].p = "NullReferenceException";
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37179>; else goto <D.37180>;
            <D.37179>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.37181>;
            <D.37180>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37181>:
          }
          goto <D.37182>;
          <D.37167>:
          <D.37182>:
          klass.155 = klass;
          D.37183 = mini_is_gsharedvt_klass (cfg, klass.155);
          if (D.37183 != 0) goto <D.37184>; else goto <D.37185>;
          <D.37184>:
          {
            struct MonoInst * offset_ins;

            offset_ins = emit_get_gsharedvt_info (cfg, field, 15);
            D.37186 = alloc_ireg_mp (cfg);
            dreg = (int) D.37186;
            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.30894 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30894;
            ins->prev = 0B;
            D.30895 = ins->prev;
            ins->next = D.30895;
            ins->opcode = 483;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30896 = ins->sreg3;
            ins->sreg2 = D.30896;
            D.30897 = ins->sreg2;
            ins->sreg1 = D.30897;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            ins->dreg = dreg;
            D.31680 = *sp;
            D.31862 = D.31680->dreg;
            ins->sreg1 = D.31862;
            D.37187 = offset_ins->dreg;
            ins->sreg2 = D.37187;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37188>; else goto <D.37189>;
            <D.37188>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.37190>;
            <D.37189>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37190>:
            D.30673 = cfg->mempool;
            load = mono_mempool_alloc (D.30673, 80);
            load->data.op[1].const_val = 0;
            D.37191 = load->data.op[1].const_val;
            load->data.op[0].const_val = D.37191;
            load->prev = 0B;
            D.37192 = load->prev;
            load->next = D.37192;
            D.36805 = field->type;
            D.37193 = mono_type_to_load_membase (cfg, D.36805);
            D.37194 = (short unsigned int) D.37193;
            load->opcode = D.37194;
            load->flags = 0;
            load->type = 0;
            load->dreg = -1;
            load->sreg3 = -1;
            D.37195 = load->sreg3;
            load->sreg2 = D.37195;
            D.37196 = load->sreg2;
            load->sreg1 = D.37196;
            D.30898 = cfg->ip;
            load->cil_code = D.30898;
            load->dreg = 0;
            load->sreg1 = dreg;
            load->data.op[0].const_val = 0;
            load->type = 1;
            D.36805 = field->type;
            type_to_eval_stack_type (cfg, D.36805, load);
            D.37197 = load->type;
            D.37198 = (<unnamed type>) D.37197;
            D.37199 = alloc_dreg (cfg, D.37198);
            D.37200 = (int) D.37199;
            load->dreg = D.37200;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37201>; else goto <D.37202>;
            <D.37201>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = load;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            load->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = load;
            goto <D.37203>;
            <D.37202>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = load;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37203>:
          }
          goto <D.37204>;
          <D.37185>:
          D.30673 = cfg->mempool;
          load = mono_mempool_alloc (D.30673, 80);
          load->data.op[1].const_val = 0;
          D.37191 = load->data.op[1].const_val;
          load->data.op[0].const_val = D.37191;
          load->prev = 0B;
          D.37192 = load->prev;
          load->next = D.37192;
          D.36805 = field->type;
          D.37205 = mono_type_to_load_membase (cfg, D.36805);
          D.37206 = (short unsigned int) D.37205;
          load->opcode = D.37206;
          load->flags = 0;
          load->type = 0;
          load->dreg = -1;
          load->sreg3 = -1;
          D.37195 = load->sreg3;
          load->sreg2 = D.37195;
          D.37196 = load->sreg2;
          load->sreg1 = D.37196;
          D.30898 = cfg->ip;
          load->cil_code = D.30898;
          load->dreg = 0;
          D.31680 = *sp;
          D.31862 = D.31680->dreg;
          load->sreg1 = D.31862;
          D.36947 = (long int) foffset;
          load->data.op[0].const_val = D.36947;
          load->type = 1;
          D.36805 = field->type;
          type_to_eval_stack_type (cfg, D.36805, load);
          D.37197 = load->type;
          D.37198 = (<unnamed type>) D.37197;
          D.37207 = alloc_dreg (cfg, D.37198);
          D.37208 = (int) D.37207;
          load->dreg = D.37208;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.37209>; else goto <D.37210>;
          <D.37209>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = load;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          load->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = load;
          goto <D.37211>;
          <D.37210>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = load;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.37211>:
          <D.37204>:
          D.37212 = load->flags;
          D.34999 = (unsigned char) ins_flag;
          D.37213 = D.37212 | D.34999;
          load->flags = D.37213;
          D.31680 = *sp;
          D.33387 = D.31680->opcode;
          if (D.33387 != 314) goto <D.37214>; else goto <D.37215>;
          <D.37214>:
          D.37212 = load->flags;
          D.37216 = D.37212 | 32;
          load->flags = D.37216;
          <D.37215>:
          sp.229 = sp;
          sp = sp.229 + 8;
          *sp.229 = load;
        }
        <D.37165>:
        <D.37052>:
        <D.36976>:
        if (is_instance != 0) goto <D.37218>; else goto <D.37219>;
        <D.37218>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.27670>;
        <D.37219>:
        klass.155 = klass;
        context_used = mini_class_check_context_used (cfg, klass.155);
        ftype = mono_field_get_type (field);
        D.37220 = ftype->attrs;
        D.37221 = (int) D.37220;
        D.37222 = D.37221 & 64;
        if (D.37222 != 0) goto <D.37223>; else goto <D.37224>;
        <D.37223>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.37225>; else goto <D.37226>;
        <D.37225>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.37227>; else goto <D.37228>;
        <D.37227>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.37228>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.37226>:
        D.37229 = mini_get_debug_options ();
        D.37230 = D.37229->break_on_unverified;
        if (D.37230 != 0) goto <D.37231>; else goto unverified;
        <D.37231>:
        __asm__ __volatile__("int $03");
        <D.37224>:
        if (context_used == 0) goto <D.37232>; else goto <D.37233>;
        <D.37232>:
        D.31070 = cfg->opt;
        D.31071 = D.31070 & 512;
        if (D.31071 == 0) goto <D.37234>; else goto <D.37235>;
        <D.37234>:
        klass.155 = klass;
        D.30697 = cfg->domain;
        mono_class_vtable (D.30697, klass.155);
        klass.155 = klass;
        if (klass.155 == 0B) goto <D.37236>; else goto <D.37238>;
        <D.37238>:
        klass.155 = klass;
        D.35388 = klass.155->exception_type;
        if (D.35388 != 0) goto <D.37236>; else goto <D.37237>;
        <D.37236>:
        klass.155 = klass;
        cfg->exception_ptr = klass.155;
        D.37239 = mini_get_debug_options ();
        D.37240 = D.37239->break_on_unverified;
        if (D.37240 != 0) goto <D.37241>; else goto load_error;
        <D.37241>:
        __asm__ __volatile__("int $03");
        <D.37237>:
        <D.37235>:
        <D.37233>:
        {
          int ret;

          D.30697 = cfg->domain;
          D.37242 = &D.30697->lock.mutex;
          ret = pthread_mutex_lock (D.37242);
          if (ret != 0) goto <D.37243>; else goto <D.37244>;
          <D.37243>:
          monoeg_g_log (0B, 16, "Bad call to mono_mutex_lock result %d", ret);
          <D.37244>:
          D.37245 = ret != 0;
          D.37246 = (long int) D.37245;
          D.37247 = __builtin_expect (D.37246, 0);
          if (D.37247 != 0) goto <D.37248>; else goto <D.37249>;
          <D.37248>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10119, "ret == 0");
          <D.37249>:
        }
        D.30697 = cfg->domain;
        D.37250 = D.30697->special_static_fields;
        if (D.37250 != 0B) goto <D.37251>; else goto <D.37252>;
        <D.37251>:
        D.30697 = cfg->domain;
        D.37250 = D.30697->special_static_fields;
        addr = monoeg_g_hash_table_lookup (D.37250, field);
        <D.37252>:
        {
          int ret;

          D.30697 = cfg->domain;
          D.37242 = &D.30697->lock.mutex;
          ret = pthread_mutex_unlock (D.37242);
          if (ret != 0) goto <D.37253>; else goto <D.37254>;
          <D.37253>:
          monoeg_g_log (0B, 16, "Bad call to mono_mutex_unlock result %d", ret);
          <D.37254>:
          D.37255 = ret != 0;
          D.37256 = (long int) D.37255;
          D.37257 = __builtin_expect (D.37256, 0);
          if (D.37257 != 0) goto <D.37258>; else goto <D.37259>;
          <D.37258>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10122, "ret == 0");
          <D.37259>:
        }
        is_special_static = mono_class_field_is_special_static (field);
        if (is_special_static != 0) goto <D.37262>; else goto <D.37260>;
        <D.37262>:
        addr.230 = (long unsigned int) addr;
        D.37264 = addr.230 & 2147483648;
        if (D.37264 == 0) goto <D.37265>; else goto <D.37260>;
        <D.37265>:
        thread_ins = mono_get_thread_intrinsic (cfg);
        goto <D.37261>;
        <D.37260>:
        thread_ins = 0B;
        <D.37261>:
        if (is_special_static != 0) goto <D.37268>; else goto <D.37266>;
        <D.37268>:
        addr.230 = (long unsigned int) addr;
        D.37264 = addr.230 & 2147483648;
        if (D.37264 == 0) goto <D.37269>; else goto <D.37266>;
        <D.37269>:
        if (thread_ins != 0B) goto <D.37270>; else goto <D.37266>;
        <D.37270>:
        D.31070 = cfg->opt;
        D.31071 = D.31070 & 512;
        if (D.31071 == 0) goto <D.37271>; else goto <D.37266>;
        <D.37271>:
        if (context_used == 0) goto <D.37272>; else goto <D.37266>;
        <D.37272>:
        {
          guint32 offset;
          int idx;
          int static_data_reg;
          int array_reg;
          int dreg;

          D.30822 = cfg->gsharedvt;
          if (D.30822 != 0) goto <D.37273>; else goto <D.37274>;
          <D.37273>:
          D.37275 = mono_opcode_name (op);
          D.32333 = method->signature;
          D.32334 = D.32333->param_count;
          D.32335 = (int) D.32334;
          D.32336 = method->name;
          D.30609 = method->klass;
          D.32337 = D.30609->name;
          D.30609 = method->klass;
          D.32338 = D.30609->name_space;
          D.37276 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.37275, "method-to-ir.c", 10141);
          cfg->exception_message = D.37276;
          D.30753 = cfg->verbose_level;
          if (D.30753 > 1) goto <D.37277>; else goto <D.37278>;
          <D.37277>:
          D.32342 = cfg->exception_message;
          printf ("%s\n", D.32342);
          <D.37278>:
          mono_cfg_set_exception (cfg, 11);
          goto exception_exit;
          <D.37274>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.37279>; else goto <D.37280>;
          <D.37279>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = thread_ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          thread_ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = thread_ins;
          goto <D.37281>;
          <D.37280>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = thread_ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.37281>:
          D.37282 = alloc_ireg (cfg);
          static_data_reg = (int) D.37282;
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.37283 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37283;
            inst->prev = 0B;
            D.37284 = inst->prev;
            inst->next = D.37284;
            inst->opcode = 391;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37285 = inst->sreg3;
            inst->sreg2 = D.37285;
            D.37286 = inst->sreg2;
            inst->sreg1 = D.37286;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->dreg = static_data_reg;
            D.37287 = thread_ins->dreg;
            inst->sreg1 = D.37287;
            inst->data.op[0].const_val = 96;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37288>; else goto <D.37289>;
            <D.37288>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.37290>;
            <D.37289>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37290>:
          }
          D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.31073 = D.31072 & 64;
          if (D.31073 != 0) goto <D.37291>; else goto <D.37292>;
          <D.37291>:
          {
            int offset_reg;
            int offset2_reg;
            int idx_reg;

            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.30894 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30894;
            ins->prev = 0B;
            D.30895 = ins->prev;
            ins->next = D.30895;
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.37294>; else goto <D.37295>;
            <D.37294>:
            iftmp.231 = 736;
            goto <D.37296>;
            <D.37295>:
            iftmp.231 = 363;
            <D.37296>:
            ins->opcode = iftmp.231;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30896 = ins->sreg3;
            ins->sreg2 = D.30896;
            D.30897 = ins->sreg2;
            ins->sreg1 = D.30897;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            ins->data.op[0].p = field;
            ins->data.op[1].src = 16B;
            ins->type = 3;
            D.37297 = alloc_dreg (cfg, 3);
            D.37298 = (int) D.37297;
            ins->dreg = D.37298;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37299>; else goto <D.37300>;
            <D.37299>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.37301>;
            <D.37300>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37301>:
            offset_reg = ins->dreg;
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.37302 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37302;
              inst->prev = 0B;
              D.37303 = inst->prev;
              inst->next = D.37303;
              inst->opcode = 636;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37304 = inst->sreg3;
              inst->sreg2 = D.37304;
              D.37305 = inst->sreg2;
              inst->sreg1 = D.37305;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = offset_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 2147483647;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37306>; else goto <D.37307>;
              <D.37306>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.37308>;
              <D.37307>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37308>:
            }
            D.37309 = alloc_ireg (cfg);
            idx_reg = (int) D.37309;
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.37310 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37310;
              inst->prev = 0B;
              D.37311 = inst->prev;
              inst->next = D.37311;
              inst->opcode = 640;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37312 = inst->sreg3;
              inst->sreg2 = D.37312;
              D.37313 = inst->sreg2;
              inst->sreg1 = D.37313;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = idx_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 24;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37314>; else goto <D.37315>;
              <D.37314>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.37316>;
              <D.37315>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37316>:
            }
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.37317 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37317;
              inst->prev = 0B;
              D.37318 = inst->prev;
              inst->next = D.37318;
              inst->opcode = 630;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37319 = inst->sreg3;
              inst->sreg2 = D.37319;
              D.37320 = inst->sreg2;
              inst->sreg1 = D.37320;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = idx_reg;
              inst->sreg1 = idx_reg;
              inst->data.op[1].const_val = 1;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37321>; else goto <D.37322>;
              <D.37321>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.37323>;
              <D.37322>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37323>:
            }
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.37324 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37324;
              inst->prev = 0B;
              D.37325 = inst->prev;
              inst->next = D.37325;
              inst->opcode = 639;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37326 = inst->sreg3;
              inst->sreg2 = D.37326;
              D.37327 = inst->sreg2;
              inst->sreg1 = D.37327;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = idx_reg;
              inst->sreg1 = idx_reg;
              inst->data.op[1].const_val = 3;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37328>; else goto <D.37329>;
              <D.37328>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.37330>;
              <D.37329>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37330>:
            }
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.37331 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37331;
              inst->prev = 0B;
              D.37332 = inst->prev;
              inst->next = D.37332;
              inst->opcode = 483;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37333 = inst->sreg3;
              inst->sreg2 = D.37333;
              D.37334 = inst->sreg2;
              inst->sreg1 = D.37334;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = static_data_reg;
              inst->sreg1 = static_data_reg;
              inst->sreg2 = idx_reg;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37335>; else goto <D.37336>;
              <D.37335>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.37337>;
              <D.37336>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37337>:
            }
            D.37338 = alloc_ireg (cfg);
            array_reg = (int) D.37338;
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.37339 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37339;
              inst->prev = 0B;
              D.37340 = inst->prev;
              inst->next = D.37340;
              inst->opcode = 391;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37341 = inst->sreg3;
              inst->sreg2 = D.37341;
              D.37342 = inst->sreg2;
              inst->sreg1 = D.37342;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = array_reg;
              inst->sreg1 = static_data_reg;
              inst->data.op[0].const_val = 0;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37343>; else goto <D.37344>;
              <D.37343>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.37345>;
              <D.37344>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37345>:
            }
            D.37346 = alloc_ireg (cfg);
            offset2_reg = (int) D.37346;
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.37347 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.37347;
              inst->prev = 0B;
              D.37348 = inst->prev;
              inst->next = D.37348;
              inst->opcode = 636;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.37349 = inst->sreg3;
              inst->sreg2 = D.37349;
              D.37350 = inst->sreg2;
              inst->sreg1 = D.37350;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = offset2_reg;
              inst->sreg1 = offset_reg;
              inst->data.op[1].const_val = 16777215;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37351>; else goto <D.37352>;
              <D.37351>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.37353>;
              <D.37352>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37353>:
            }
            D.37354 = alloc_ireg (cfg);
            dreg = (int) D.37354;
            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.30894 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30894;
            ins->prev = 0B;
            D.30895 = ins->prev;
            ins->next = D.30895;
            ins->opcode = 483;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30896 = ins->sreg3;
            ins->sreg2 = D.30896;
            D.30897 = ins->sreg2;
            ins->sreg1 = D.30897;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            ins->dreg = dreg;
            ins->sreg1 = array_reg;
            ins->sreg2 = offset2_reg;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37355>; else goto <D.37356>;
            <D.37355>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.37357>;
            <D.37356>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37357>:
          }
          goto <D.37358>;
          <D.37292>:
          addr.232 = (long int) addr;
          D.37360 = (unsigned int) addr.232;
          offset = D.37360 & 2147483647;
          D.37361 = offset >> 24;
          D.37362 = D.37361 + 4294967295;
          idx = (int) D.37362;
          D.37363 = alloc_ireg (cfg);
          array_reg = (int) D.37363;
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.37364 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.37364;
            inst->prev = 0B;
            D.37365 = inst->prev;
            inst->next = D.37365;
            inst->opcode = 391;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.37366 = inst->sreg3;
            inst->sreg2 = D.37366;
            D.37367 = inst->sreg2;
            inst->sreg1 = D.37367;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->dreg = array_reg;
            inst->sreg1 = static_data_reg;
            D.37368 = (long unsigned int) idx;
            D.37369 = D.37368 * 8;
            D.37370 = (long int) D.37369;
            inst->data.op[0].const_val = D.37370;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37371>; else goto <D.37372>;
            <D.37371>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.37373>;
            <D.37372>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37373>:
          }
          D.37374 = alloc_ireg (cfg);
          dreg = (int) D.37374;
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          ins->opcode = 433;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          ins->dreg = dreg;
          ins->sreg1 = array_reg;
          D.37375 = (long int) offset;
          D.37376 = D.37375 & 16777215;
          ins->data.op[1].const_val = D.37376;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.37377>; else goto <D.37378>;
          <D.37377>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.37379>;
          <D.37378>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.37379>:
          <D.37358>:
        }
        goto <D.37267>;
        <D.37266>:
        D.31070 = cfg->opt;
        D.31071 = D.31070 & 512;
        if (D.31071 != 0) goto <D.37380>; else goto <D.37384>;
        <D.37384>:
        D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.31073 = D.31072 & 64;
        if (D.31073 != 0) goto <D.37385>; else goto <D.37381>;
        <D.37385>:
        if (is_special_static != 0) goto <D.37380>; else goto <D.37381>;
        <D.37381>:
        D.33675 = context_used != 0;
        D.37386 = is_special_static != 0;
        D.37387 = D.33675 & D.37386;
        if (D.37387 != 0) goto <D.37380>; else goto <D.37382>;
        <D.37380>:
        {
          struct MonoInst * iargs[2];

          try
            {
              klass.213 = field->parent;
              D.37388 = klass.213 == 0B;
              D.37389 = (long int) D.37388;
              D.37390 = __builtin_expect (D.37389, 0);
              if (D.37390 != 0) goto <D.37391>; else goto <D.37392>;
              <D.37391>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10182, "field->parent");
              <D.37392>:
              D.31070 = cfg->opt;
              D.31071 = D.31070 & 512;
              if (D.31071 != 0) goto <D.37393>; else goto <D.37396>;
              <D.37396>:
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.37393>; else goto <D.37394>;
              <D.37393>:
              {
                struct MonoInst * __domain_var;

                __domain_var = mono_get_domainvar (cfg);
                D.30673 = cfg->mempool;
                D.37397 = mono_mempool_alloc (D.30673, 80);
                iargs[0] = D.37397;
                D.37398 = iargs[0];
                D.37398 = iargs[0];
                D.37398->data.op[1].const_val = 0;
                D.37399 = D.37398->data.op[1].const_val;
                D.37398->data.op[0].const_val = D.37399;
                D.37398 = iargs[0];
                D.37398 = iargs[0];
                D.37398->prev = 0B;
                D.37400 = D.37398->prev;
                D.37398->next = D.37400;
                D.37398 = iargs[0];
                D.37398->opcode = 428;
                D.37398 = iargs[0];
                D.37398->flags = 0;
                D.37398 = iargs[0];
                D.37398->type = 0;
                D.37398 = iargs[0];
                D.37398->dreg = -1;
                D.37398 = iargs[0];
                D.37398 = iargs[0];
                D.37398 = iargs[0];
                D.37398->sreg3 = -1;
                D.37401 = D.37398->sreg3;
                D.37398->sreg2 = D.37401;
                D.37402 = D.37398->sreg2;
                D.37398->sreg1 = D.37402;
                D.37398 = iargs[0];
                D.30898 = cfg->ip;
                D.37398->cil_code = D.30898;
                D.37398 = iargs[0];
                D.31416 = cfg->varinfo;
                D.37403 = __domain_var->data.op[0].const_val;
                D.37404 = (long unsigned int) D.37403;
                D.37405 = D.37404 * 8;
                D.37406 = D.31416 + D.37405;
                D.37407 = *D.37406;
                D.37408 = D.37407->data.op[1].vtype;
                D.37409 = mono_type_to_regmove (cfg, D.37408);
                D.37410 = (short unsigned int) D.37409;
                D.37398->opcode = D.37410;
                D.37398 = iargs[0];
                D.31416 = cfg->varinfo;
                D.37403 = __domain_var->data.op[0].const_val;
                D.37404 = (long unsigned int) D.37403;
                D.37405 = D.37404 * 8;
                D.37406 = D.31416 + D.37405;
                D.37407 = *D.37406;
                D.37408 = D.37407->data.op[1].vtype;
                type_to_eval_stack_type (cfg, D.37408, D.37398);
                D.37398 = iargs[0];
                D.31416 = cfg->varinfo;
                D.37403 = __domain_var->data.op[0].const_val;
                D.37404 = (long unsigned int) D.37403;
                D.37405 = D.37404 * 8;
                D.37406 = D.31416 + D.37405;
                D.37407 = *D.37406;
                D.37411 = D.37407->klass;
                D.37398->klass = D.37411;
                D.37398 = iargs[0];
                D.31416 = cfg->varinfo;
                D.37403 = __domain_var->data.op[0].const_val;
                D.37404 = (long unsigned int) D.37403;
                D.37405 = D.37404 * 8;
                D.37406 = D.31416 + D.37405;
                D.37407 = *D.37406;
                D.37412 = D.37407->dreg;
                D.37398->sreg1 = D.37412;
                D.37398 = iargs[0];
                D.37398 = iargs[0];
                D.37413 = D.37398->type;
                D.37414 = (<unnamed type>) D.37413;
                D.37415 = alloc_dreg (cfg, D.37414);
                D.37416 = (int) D.37415;
                D.37398->dreg = D.37416;
                D.37398 = iargs[0];
                D.37417 = D.37398->opcode;
                if (D.37417 == 431) goto <D.37418>; else goto <D.37419>;
                <D.37418>:
                D.37398 = iargs[0];
                D.31416 = cfg->varinfo;
                D.37403 = __domain_var->data.op[0].const_val;
                D.37404 = (long unsigned int) D.37403;
                D.37405 = D.37404 * 8;
                D.37406 = D.31416 + D.37405;
                D.37407 = *D.37406;
                D.37408 = D.37407->data.op[1].vtype;
                D.37420 = mono_class_from_mono_type (D.37408);
                D.37398->klass = D.37420;
                <D.37419>:
              }
              goto <D.37395>;
              <D.37394>:
              D.30673 = cfg->mempool;
              D.37421 = mono_mempool_alloc (D.30673, 80);
              iargs[0] = D.37421;
              D.37398 = iargs[0];
              D.37398 = iargs[0];
              D.37398->data.op[1].const_val = 0;
              D.37399 = D.37398->data.op[1].const_val;
              D.37398->data.op[0].const_val = D.37399;
              D.37398 = iargs[0];
              D.37398 = iargs[0];
              D.37398->prev = 0B;
              D.37400 = D.37398->prev;
              D.37398->next = D.37400;
              D.37398 = iargs[0];
              D.37398->opcode = 363;
              D.37398 = iargs[0];
              D.37398->flags = 0;
              D.37398 = iargs[0];
              D.37398->type = 0;
              D.37398 = iargs[0];
              D.37398->dreg = -1;
              D.37398 = iargs[0];
              D.37398 = iargs[0];
              D.37398 = iargs[0];
              D.37398->sreg3 = -1;
              D.37401 = D.37398->sreg3;
              D.37398->sreg2 = D.37401;
              D.37402 = D.37398->sreg2;
              D.37398->sreg1 = D.37402;
              D.37398 = iargs[0];
              D.30898 = cfg->ip;
              D.37398->cil_code = D.30898;
              D.37398 = iargs[0];
              D.30697 = cfg->domain;
              D.37398->data.op[0].p = D.30697;
              D.37398 = iargs[0];
              D.37398->type = 3;
              D.37398 = iargs[0];
              D.37422 = alloc_dreg (cfg, 3);
              D.37423 = (int) D.37422;
              D.37398->dreg = D.37423;
              <D.37395>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37424>; else goto <D.37425>;
              <D.37424>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37398 = iargs[0];
              D.30927->next = D.37398;
              D.37398 = iargs[0];
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37398->prev = D.30927;
              bblock.113 = cfg->cbb;
              D.37398 = iargs[0];
              bblock.113->last_ins = D.37398;
              goto <D.37426>;
              <D.37425>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              D.37398 = iargs[0];
              bblock.113->last_ins = D.37398;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37426>:
              if (context_used != 0) goto <D.37427>; else goto <D.37428>;
              <D.37427>:
              D.37429 = emit_get_rgctx_field (cfg, context_used, field, 7);
              iargs[1] = D.37429;
              goto <D.37430>;
              <D.37428>:
              D.30673 = cfg->mempool;
              D.37431 = mono_mempool_alloc (D.30673, 80);
              iargs[1] = D.37431;
              D.37432 = iargs[1];
              D.37432 = iargs[1];
              D.37432->data.op[1].const_val = 0;
              D.37433 = D.37432->data.op[1].const_val;
              D.37432->data.op[0].const_val = D.37433;
              D.37432 = iargs[1];
              D.37432 = iargs[1];
              D.37432->prev = 0B;
              D.37434 = D.37432->prev;
              D.37432->next = D.37434;
              D.37432 = iargs[1];
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.37436>; else goto <D.37437>;
              <D.37436>:
              iftmp.233 = 736;
              goto <D.37438>;
              <D.37437>:
              iftmp.233 = 363;
              <D.37438>:
              D.37432->opcode = iftmp.233;
              D.37432 = iargs[1];
              D.37432->flags = 0;
              D.37432 = iargs[1];
              D.37432->type = 0;
              D.37432 = iargs[1];
              D.37432->dreg = -1;
              D.37432 = iargs[1];
              D.37432 = iargs[1];
              D.37432 = iargs[1];
              D.37432->sreg3 = -1;
              D.37439 = D.37432->sreg3;
              D.37432->sreg2 = D.37439;
              D.37440 = D.37432->sreg2;
              D.37432->sreg1 = D.37440;
              D.37432 = iargs[1];
              D.30898 = cfg->ip;
              D.37432->cil_code = D.30898;
              D.37432 = iargs[1];
              D.37432->data.op[0].p = field;
              D.37432 = iargs[1];
              D.37432->data.op[1].src = 13B;
              D.37432 = iargs[1];
              D.37432->type = 3;
              D.37432 = iargs[1];
              D.37441 = alloc_dreg (cfg, 3);
              D.37442 = (int) D.37441;
              D.37432->dreg = D.37442;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37443>; else goto <D.37444>;
              <D.37443>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37432 = iargs[1];
              D.30927->next = D.37432;
              D.37432 = iargs[1];
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37432->prev = D.30927;
              bblock.113 = cfg->cbb;
              D.37432 = iargs[1];
              bblock.113->last_ins = D.37432;
              goto <D.37445>;
              <D.37444>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              D.37432 = iargs[1];
              bblock.113->last_ins = D.37432;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37445>:
              <D.37430>:
              ins = mono_emit_jit_icall (cfg, mono_class_static_field_address, &iargs);
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.37383>;
        <D.37382>:
        if (context_used != 0) goto <D.37446>; else goto <D.37447>;
        <D.37446>:
        {
          struct MonoInst * static_data;

          klass.155 = klass;
          D.37448 = mono_class_needs_cctor_run (klass.155, method);
          if (D.37448 != 0) goto <D.37449>; else goto <D.37450>;
          <D.37449>:
          klass.155 = klass;
          emit_generic_class_init (cfg, klass.155);
          <D.37450>:
          klass.155 = klass;
          static_data = emit_get_rgctx_klass (cfg, context_used, klass.155, 0);
          klass.155 = klass;
          D.37451 = mini_is_gsharedvt_klass (cfg, klass.155);
          if (D.37451 != 0) goto <D.37452>; else goto <D.37453>;
          <D.37452>:
          {
            struct MonoInst * offset_ins;

            offset_ins = emit_get_rgctx_field (cfg, context_used, field, 15);
            D.37454 = alloc_ireg_mp (cfg);
            dreg = (int) D.37454;
            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.30894 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30894;
            ins->prev = 0B;
            D.30895 = ins->prev;
            ins->next = D.30895;
            ins->opcode = 483;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30896 = ins->sreg3;
            ins->sreg2 = D.30896;
            D.30897 = ins->sreg2;
            ins->sreg1 = D.30897;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            ins->dreg = dreg;
            D.37455 = static_data->dreg;
            ins->sreg1 = D.37455;
            D.37456 = offset_ins->dreg;
            ins->sreg2 = D.37456;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37457>; else goto <D.37458>;
            <D.37457>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.37459>;
            <D.37458>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37459>:
          }
          goto <D.37460>;
          <D.37453>:
          D.36816 = field->offset;
          if (D.36816 == 0) goto <D.37461>; else goto <D.37462>;
          <D.37461>:
          ins = static_data;
          goto <D.37463>;
          <D.37462>:
          {
            int addr_reg;

            D.37464 = mono_alloc_preg (cfg);
            addr_reg = (int) D.37464;
            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.30894 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30894;
            ins->prev = 0B;
            D.30895 = ins->prev;
            ins->next = D.30895;
            ins->opcode = 542;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30896 = ins->sreg3;
            ins->sreg2 = D.30896;
            D.30897 = ins->sreg2;
            ins->sreg1 = D.30897;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            ins->dreg = addr_reg;
            D.37455 = static_data->dreg;
            ins->sreg1 = D.37455;
            D.36816 = field->offset;
            D.37465 = (long int) D.36816;
            ins->data.op[1].const_val = D.37465;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37466>; else goto <D.37467>;
            <D.37466>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.37468>;
            <D.37467>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37468>:
          }
          <D.37463>:
          <D.37460>:
        }
        goto <D.37469>;
        <D.37447>:
        D.31070 = cfg->opt;
        D.31071 = D.31070 & 512;
        if (D.31071 != 0) goto <D.37470>; else goto <D.37473>;
        <D.37473>:
        D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.31073 = D.31072 & 64;
        if (D.31073 != 0) goto <D.37474>; else goto <D.37471>;
        <D.37474>:
        if (addr != 0B) goto <D.37470>; else goto <D.37471>;
        <D.37470>:
        {
          struct MonoInst * iargs[2];

          try
            {
              klass.213 = field->parent;
              D.37388 = klass.213 == 0B;
              D.37389 = (long int) D.37388;
              D.37390 = __builtin_expect (D.37389, 0);
              if (D.37390 != 0) goto <D.37475>; else goto <D.37476>;
              <D.37475>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10226, "field->parent");
              <D.37476>:
              D.31070 = cfg->opt;
              D.31071 = D.31070 & 512;
              if (D.31071 != 0) goto <D.37477>; else goto <D.37480>;
              <D.37480>:
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.37477>; else goto <D.37478>;
              <D.37477>:
              {
                struct MonoInst * __domain_var;

                __domain_var = mono_get_domainvar (cfg);
                D.30673 = cfg->mempool;
                D.37481 = mono_mempool_alloc (D.30673, 80);
                iargs[0] = D.37481;
                D.37482 = iargs[0];
                D.37482 = iargs[0];
                D.37482->data.op[1].const_val = 0;
                D.37483 = D.37482->data.op[1].const_val;
                D.37482->data.op[0].const_val = D.37483;
                D.37482 = iargs[0];
                D.37482 = iargs[0];
                D.37482->prev = 0B;
                D.37484 = D.37482->prev;
                D.37482->next = D.37484;
                D.37482 = iargs[0];
                D.37482->opcode = 428;
                D.37482 = iargs[0];
                D.37482->flags = 0;
                D.37482 = iargs[0];
                D.37482->type = 0;
                D.37482 = iargs[0];
                D.37482->dreg = -1;
                D.37482 = iargs[0];
                D.37482 = iargs[0];
                D.37482 = iargs[0];
                D.37482->sreg3 = -1;
                D.37485 = D.37482->sreg3;
                D.37482->sreg2 = D.37485;
                D.37486 = D.37482->sreg2;
                D.37482->sreg1 = D.37486;
                D.37482 = iargs[0];
                D.30898 = cfg->ip;
                D.37482->cil_code = D.30898;
                D.37482 = iargs[0];
                D.31416 = cfg->varinfo;
                D.37487 = __domain_var->data.op[0].const_val;
                D.37488 = (long unsigned int) D.37487;
                D.37489 = D.37488 * 8;
                D.37490 = D.31416 + D.37489;
                D.37491 = *D.37490;
                D.37492 = D.37491->data.op[1].vtype;
                D.37493 = mono_type_to_regmove (cfg, D.37492);
                D.37494 = (short unsigned int) D.37493;
                D.37482->opcode = D.37494;
                D.37482 = iargs[0];
                D.31416 = cfg->varinfo;
                D.37487 = __domain_var->data.op[0].const_val;
                D.37488 = (long unsigned int) D.37487;
                D.37489 = D.37488 * 8;
                D.37490 = D.31416 + D.37489;
                D.37491 = *D.37490;
                D.37492 = D.37491->data.op[1].vtype;
                type_to_eval_stack_type (cfg, D.37492, D.37482);
                D.37482 = iargs[0];
                D.31416 = cfg->varinfo;
                D.37487 = __domain_var->data.op[0].const_val;
                D.37488 = (long unsigned int) D.37487;
                D.37489 = D.37488 * 8;
                D.37490 = D.31416 + D.37489;
                D.37491 = *D.37490;
                D.37495 = D.37491->klass;
                D.37482->klass = D.37495;
                D.37482 = iargs[0];
                D.31416 = cfg->varinfo;
                D.37487 = __domain_var->data.op[0].const_val;
                D.37488 = (long unsigned int) D.37487;
                D.37489 = D.37488 * 8;
                D.37490 = D.31416 + D.37489;
                D.37491 = *D.37490;
                D.37496 = D.37491->dreg;
                D.37482->sreg1 = D.37496;
                D.37482 = iargs[0];
                D.37482 = iargs[0];
                D.37497 = D.37482->type;
                D.37498 = (<unnamed type>) D.37497;
                D.37499 = alloc_dreg (cfg, D.37498);
                D.37500 = (int) D.37499;
                D.37482->dreg = D.37500;
                D.37482 = iargs[0];
                D.37501 = D.37482->opcode;
                if (D.37501 == 431) goto <D.37502>; else goto <D.37503>;
                <D.37502>:
                D.37482 = iargs[0];
                D.31416 = cfg->varinfo;
                D.37487 = __domain_var->data.op[0].const_val;
                D.37488 = (long unsigned int) D.37487;
                D.37489 = D.37488 * 8;
                D.37490 = D.31416 + D.37489;
                D.37491 = *D.37490;
                D.37492 = D.37491->data.op[1].vtype;
                D.37504 = mono_class_from_mono_type (D.37492);
                D.37482->klass = D.37504;
                <D.37503>:
              }
              goto <D.37479>;
              <D.37478>:
              D.30673 = cfg->mempool;
              D.37505 = mono_mempool_alloc (D.30673, 80);
              iargs[0] = D.37505;
              D.37482 = iargs[0];
              D.37482 = iargs[0];
              D.37482->data.op[1].const_val = 0;
              D.37483 = D.37482->data.op[1].const_val;
              D.37482->data.op[0].const_val = D.37483;
              D.37482 = iargs[0];
              D.37482 = iargs[0];
              D.37482->prev = 0B;
              D.37484 = D.37482->prev;
              D.37482->next = D.37484;
              D.37482 = iargs[0];
              D.37482->opcode = 363;
              D.37482 = iargs[0];
              D.37482->flags = 0;
              D.37482 = iargs[0];
              D.37482->type = 0;
              D.37482 = iargs[0];
              D.37482->dreg = -1;
              D.37482 = iargs[0];
              D.37482 = iargs[0];
              D.37482 = iargs[0];
              D.37482->sreg3 = -1;
              D.37485 = D.37482->sreg3;
              D.37482->sreg2 = D.37485;
              D.37486 = D.37482->sreg2;
              D.37482->sreg1 = D.37486;
              D.37482 = iargs[0];
              D.30898 = cfg->ip;
              D.37482->cil_code = D.30898;
              D.37482 = iargs[0];
              D.30697 = cfg->domain;
              D.37482->data.op[0].p = D.30697;
              D.37482 = iargs[0];
              D.37482->type = 3;
              D.37482 = iargs[0];
              D.37506 = alloc_dreg (cfg, 3);
              D.37507 = (int) D.37506;
              D.37482->dreg = D.37507;
              <D.37479>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37508>; else goto <D.37509>;
              <D.37508>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37482 = iargs[0];
              D.30927->next = D.37482;
              D.37482 = iargs[0];
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37482->prev = D.30927;
              bblock.113 = cfg->cbb;
              D.37482 = iargs[0];
              bblock.113->last_ins = D.37482;
              goto <D.37510>;
              <D.37509>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              D.37482 = iargs[0];
              bblock.113->last_ins = D.37482;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37510>:
              D.30673 = cfg->mempool;
              D.37511 = mono_mempool_alloc (D.30673, 80);
              iargs[1] = D.37511;
              D.37512 = iargs[1];
              D.37512 = iargs[1];
              D.37512->data.op[1].const_val = 0;
              D.37513 = D.37512->data.op[1].const_val;
              D.37512->data.op[0].const_val = D.37513;
              D.37512 = iargs[1];
              D.37512 = iargs[1];
              D.37512->prev = 0B;
              D.37514 = D.37512->prev;
              D.37512->next = D.37514;
              D.37512 = iargs[1];
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.37516>; else goto <D.37517>;
              <D.37516>:
              iftmp.234 = 736;
              goto <D.37518>;
              <D.37517>:
              iftmp.234 = 363;
              <D.37518>:
              D.37512->opcode = iftmp.234;
              D.37512 = iargs[1];
              D.37512->flags = 0;
              D.37512 = iargs[1];
              D.37512->type = 0;
              D.37512 = iargs[1];
              D.37512->dreg = -1;
              D.37512 = iargs[1];
              D.37512 = iargs[1];
              D.37512 = iargs[1];
              D.37512->sreg3 = -1;
              D.37519 = D.37512->sreg3;
              D.37512->sreg2 = D.37519;
              D.37520 = D.37512->sreg2;
              D.37512->sreg1 = D.37520;
              D.37512 = iargs[1];
              D.30898 = cfg->ip;
              D.37512->cil_code = D.30898;
              D.37512 = iargs[1];
              D.37512->data.op[0].p = field;
              D.37512 = iargs[1];
              D.37512->data.op[1].src = 13B;
              D.37512 = iargs[1];
              D.37512->type = 3;
              D.37512 = iargs[1];
              D.37521 = alloc_dreg (cfg, 3);
              D.37522 = (int) D.37521;
              D.37512->dreg = D.37522;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37523>; else goto <D.37524>;
              <D.37523>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37512 = iargs[1];
              D.30927->next = D.37512;
              D.37512 = iargs[1];
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.37512->prev = D.30927;
              bblock.113 = cfg->cbb;
              D.37512 = iargs[1];
              bblock.113->last_ins = D.37512;
              goto <D.37525>;
              <D.37524>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              D.37512 = iargs[1];
              bblock.113->last_ins = D.37512;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37525>:
              ins = mono_emit_jit_icall (cfg, mono_class_static_field_address, &iargs);
            }
          finally
            {
              iargs = {CLOBBER};
            }
        }
        goto <D.37472>;
        <D.37471>:
        {
          struct MonoVTable * vtable;

          vtable = 0B;
          D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.31073 = D.31072 & 64;
          if (D.31073 == 0) goto <D.37526>; else goto <D.37527>;
          <D.37526>:
          klass.155 = klass;
          D.30697 = cfg->domain;
          vtable = mono_class_vtable (D.30697, klass.155);
          <D.37527>:
          klass.155 = klass;
          if (klass.155 == 0B) goto <D.37528>; else goto <D.37530>;
          <D.37530>:
          klass.155 = klass;
          D.35388 = klass.155->exception_type;
          if (D.35388 != 0) goto <D.37528>; else goto <D.37529>;
          <D.37528>:
          klass.155 = klass;
          cfg->exception_ptr = klass.155;
          D.37531 = mini_get_debug_options ();
          D.37532 = D.37531->break_on_unverified;
          if (D.37532 != 0) goto <D.37533>; else goto load_error;
          <D.37533>:
          __asm__ __volatile__("int $03");
          <D.37529>:
          if (addr == 0B) goto <D.37534>; else goto <D.37535>;
          <D.37534>:
          klass.155 = klass;
          D.37536 = mini_field_access_needs_cctor_run (cfg, method, klass.155, vtable);
          if (D.37536 != 0) goto <D.37537>; else goto <D.37538>;
          <D.37537>:
          klass.155 = klass;
          D.37539 = monoeg_g_slist_find (class_inits, klass.155);
          if (D.37539 == 0B) goto <D.37540>; else goto <D.37541>;
          <D.37540>:
          helper_sig_class_init_trampoline.171 = helper_sig_class_init_trampoline;
          klass.155 = klass;
          mono_emit_abs_call (cfg, 15, klass.155, helper_sig_class_init_trampoline.171, 0B);
          D.30753 = cfg->verbose_level;
          if (D.30753 > 2) goto <D.37542>; else goto <D.37543>;
          <D.37542>:
          D.37544 = mono_field_get_name (field);
          klass.155 = klass;
          D.37545 = klass.155->name;
          klass.155 = klass;
          D.37546 = klass.155->name_space;
          printf ("class %s.%s needs init call for %s\n", D.37546, D.37545, D.37544);
          <D.37543>:
          klass.155 = klass;
          class_inits = monoeg_g_slist_prepend (class_inits, klass.155);
          <D.37541>:
          goto <D.37547>;
          <D.37538>:
          D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.37548 = D.31072 & 16;
          if (D.37548 != 0) goto <D.37549>; else goto <D.37550>;
          <D.37549>:
          {
            struct MonoException * ex;

            D.37551 = vtable == 0B;
            D.37552 = (long int) D.37551;
            D.37553 = __builtin_expect (D.37552, 0);
            if (D.37553 != 0) goto <D.37554>; else goto <D.37555>;
            <D.37554>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10251, "vtable");
            <D.37555>:
            D.37556 = BIT_FIELD_REF <*vtable, 8, 344>;
            D.37557 = D.37556 & 2;
            if (D.37557 == 0) goto <D.37558>; else goto <D.37559>;
            <D.37558>:
            D.30642 = cfg->method;
            if (D.30642 != method) goto <D.37560>; else goto <D.37561>;
            <D.37560>:
            D.30614 = BIT_FIELD_REF <*method, 8, 256>;
            D.30615 = D.30614 & 124;
            if (D.30615 == 0) goto <D.37562>; else goto <D.37563>;
            <D.37562>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 1) goto <D.37564>; else goto <D.37565>;
            <D.37564>:
            printf ("inline failed: %s\n", "class init");
            <D.37565>:
            goto inline_failure;
            <D.37563>:
            <D.37561>:
            <D.37559>:
            ex = mono_runtime_class_init_full (vtable, 0);
            if (ex != 0B) goto <D.37566>; else goto <D.37567>;
            <D.37566>:
            set_exception_object (cfg, ex);
            goto exception_exit;
            <D.37567>:
          }
          <D.37550>:
          <D.37547>:
          D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.31073 = D.31072 & 64;
          if (D.31073 != 0) goto <D.37568>; else goto <D.37569>;
          <D.37568>:
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.31073 = D.31072 & 64;
          if (D.31073 != 0) goto <D.37571>; else goto <D.37572>;
          <D.37571>:
          iftmp.235 = 736;
          goto <D.37573>;
          <D.37572>:
          iftmp.235 = 363;
          <D.37573>:
          ins->opcode = iftmp.235;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          ins->data.op[0].p = field;
          ins->data.op[1].src = 16B;
          ins->type = 3;
          D.37574 = alloc_dreg (cfg, 3);
          D.37575 = (int) D.37574;
          ins->dreg = D.37575;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.37576>; else goto <D.37577>;
          <D.37576>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.37578>;
          <D.37577>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.37578>:
          goto <D.37579>;
          <D.37569>:
          D.37551 = vtable == 0B;
          D.37552 = (long int) D.37551;
          D.37553 = __builtin_expect (D.37552, 0);
          if (D.37553 != 0) goto <D.37580>; else goto <D.37581>;
          <D.37580>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10264, "vtable");
          <D.37581>:
          D.37582 = mono_vtable_get_static_field_data (vtable);
          D.36816 = field->offset;
          D.37583 = (sizetype) D.36816;
          addr = D.37582 + D.37583;
          D.37584 = addr == 0B;
          D.37585 = (long int) D.37584;
          D.37586 = __builtin_expect (D.37585, 0);
          if (D.37586 != 0) goto <D.37587>; else goto <D.37588>;
          <D.37587>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10266, "addr");
          <D.37588>:
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          ins->opcode = 363;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          ins->data.op[0].p = addr;
          ins->type = 3;
          D.37589 = alloc_dreg (cfg, 3);
          D.37590 = (int) D.37589;
          ins->dreg = D.37590;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.37591>; else goto <D.37592>;
          <D.37591>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.37593>;
          <D.37592>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.37593>:
          <D.37579>:
          goto <D.37594>;
          <D.37535>:
          {
            struct MonoInst * iargs[1];

            try
              {
                D.30673 = cfg->mempool;
                D.37595 = mono_mempool_alloc (D.30673, 80);
                iargs[0] = D.37595;
                D.37596 = iargs[0];
                D.37596 = iargs[0];
                D.37596->data.op[1].const_val = 0;
                D.37597 = D.37596->data.op[1].const_val;
                D.37596->data.op[0].const_val = D.37597;
                D.37596 = iargs[0];
                D.37596 = iargs[0];
                D.37596->prev = 0B;
                D.37598 = D.37596->prev;
                D.37596->next = D.37598;
                D.37596 = iargs[0];
                D.37596->opcode = 362;
                D.37596 = iargs[0];
                D.37596->flags = 0;
                D.37596 = iargs[0];
                D.37596->type = 0;
                D.37596 = iargs[0];
                D.37596->dreg = -1;
                D.37596 = iargs[0];
                D.37596 = iargs[0];
                D.37596 = iargs[0];
                D.37596->sreg3 = -1;
                D.37599 = D.37596->sreg3;
                D.37596->sreg2 = D.37599;
                D.37600 = D.37596->sreg2;
                D.37596->sreg1 = D.37600;
                D.37596 = iargs[0];
                D.30898 = cfg->ip;
                D.37596->cil_code = D.30898;
                D.37596 = iargs[0];
                addr.232 = (long int) addr;
                D.37601 = (unsigned int) addr.232;
                D.37602 = (long int) D.37601;
                D.37596->data.op[0].const_val = D.37602;
                D.37596 = iargs[0];
                D.37596->type = 1;
                D.37596 = iargs[0];
                D.37603 = alloc_dreg (cfg, 1);
                D.37604 = (int) D.37603;
                D.37596->dreg = D.37604;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                if (D.30927 != 0B) goto <D.37605>; else goto <D.37606>;
                <D.37605>:
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                D.37596 = iargs[0];
                D.30927->next = D.37596;
                D.37596 = iargs[0];
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                D.37596->prev = D.30927;
                bblock.113 = cfg->cbb;
                D.37596 = iargs[0];
                bblock.113->last_ins = D.37596;
                goto <D.37607>;
                <D.37606>:
                bblock.113 = cfg->cbb;
                bblock.113 = cfg->cbb;
                D.37596 = iargs[0];
                bblock.113->last_ins = D.37596;
                D.30927 = bblock.113->last_ins;
                bblock.113->code = D.30927;
                <D.37607>:
                ins = mono_emit_jit_icall (cfg, mono_get_special_static_data, &iargs);
              }
            finally
              {
                iargs = {CLOBBER};
              }
          }
          <D.37594>:
        }
        <D.37472>:
        <D.37469>:
        <D.37383>:
        <D.37267>:
        if (op == 127) goto <D.37608>; else goto <D.37609>;
        <D.37608>:
        D.37610 = mono_class_from_mono_type (ftype);
        ins->klass = D.37610;
        ins->type = 3;
        sp.236 = sp;
        sp = sp.236 + 8;
        *sp.236 = ins;
        goto <D.37612>;
        <D.37609>:
        if (op == 128) goto <D.37613>; else goto <D.37614>;
        <D.37613>:
        {
          struct MonoInst * store;

          D.30673 = cfg->mempool;
          store = mono_mempool_alloc (D.30673, 80);
          store->data.op[1].const_val = 0;
          D.37615 = store->data.op[1].const_val;
          store->data.op[0].const_val = D.37615;
          store->prev = 0B;
          D.37616 = store->prev;
          store->next = D.37616;
          D.37617 = mono_type_to_store_membase (cfg, ftype);
          D.37618 = (short unsigned int) D.37617;
          store->opcode = D.37618;
          store->flags = 0;
          store->type = 0;
          store->dreg = -1;
          store->sreg3 = -1;
          D.37619 = store->sreg3;
          store->sreg2 = D.37619;
          D.37620 = store->sreg2;
          store->sreg1 = D.37620;
          D.30898 = cfg->ip;
          store->cil_code = D.30898;
          D.37621 = store_val->dreg;
          store->sreg1 = D.37621;
          D.31092 = ins->dreg;
          store->dreg = D.31092;
          store->data.op[0].const_val = 0;
          type_to_eval_stack_type (cfg, ftype, store);
          D.37622 = mono_class_from_mono_type (ftype);
          store->klass = D.37622;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.37623>; else goto <D.37624>;
          <D.37623>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = store;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          store->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = store;
          goto <D.37625>;
          <D.37624>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = store;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.37625>:
          D.37626 = store->flags;
          D.34999 = (unsigned char) ins_flag;
          D.37627 = D.37626 | D.34999;
          store->flags = D.37627;
        }
        goto <D.37628>;
        <D.37614>:
        {
          gboolean is_const;
          struct MonoVTable * vtable;
          void * addr;

          is_const = 0;
          vtable = 0B;
          addr = 0B;
          if (context_used == 0) goto <D.37629>; else goto <D.37630>;
          <D.37629>:
          klass.155 = klass;
          D.30697 = cfg->domain;
          vtable = mono_class_vtable (D.30697, klass.155);
          klass.155 = klass;
          if (klass.155 == 0B) goto <D.37631>; else goto <D.37633>;
          <D.37633>:
          klass.155 = klass;
          D.35388 = klass.155->exception_type;
          if (D.35388 != 0) goto <D.37631>; else goto <D.37632>;
          <D.37631>:
          klass.155 = klass;
          cfg->exception_ptr = klass.155;
          D.37634 = mini_get_debug_options ();
          D.37635 = D.37634->break_on_unverified;
          if (D.37635 != 0) goto <D.37636>; else goto load_error;
          <D.37636>:
          __asm__ __volatile__("int $03");
          <D.37632>:
          <D.37630>:
          D.37220 = ftype->attrs;
          D.37221 = (int) D.37220;
          D.37639 = D.37221 & 32;
          if (D.37639 != 0) goto <D.37640>; else goto <D.37641>;
          <D.37640>:
          addr = mono_aot_readonly_field_override (field);
          if (addr != 0B) goto <D.37637>; else goto <D.37642>;
          <D.37642>:
          if (context_used == 0) goto <D.37643>; else goto <D.37638>;
          <D.37643>:
          D.31070 = cfg->opt;
          D.31071 = D.31070 & 512;
          if (D.31071 == 0) goto <D.37644>; else goto <D.37638>;
          <D.37644>:
          D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.31073 = D.31072 & 64;
          if (D.31073 == 0) goto <D.37645>; else goto <D.37638>;
          <D.37645>:
          D.37646 = BIT_FIELD_REF <*vtable, 8, 344>;
          D.37647 = D.37646 & 2;
          if (D.37647 != 0) goto <D.37637>; else goto <D.37638>;
          <D.37637>:
          {
            int ro_type;

            D.37648 = ftype->type;
            ro_type = (int) D.37648;
            if (addr == 0B) goto <D.37649>; else goto <D.37650>;
            <D.37649>:
            D.37651 = mono_vtable_get_static_field_data (vtable);
            D.36816 = field->offset;
            D.37583 = (sizetype) D.36816;
            addr = D.37651 + D.37583;
            <D.37650>:
            if (ro_type == 17) goto <D.37652>; else goto <D.37653>;
            <D.37652>:
            D.37654 = ftype->data.klass;
            D.37655 = BIT_FIELD_REF <*D.37654, 8, 256>;
            D.37656 = D.37655 & 16;
            if (D.37656 != 0) goto <D.37657>; else goto <D.37658>;
            <D.37657>:
            D.37654 = ftype->data.klass;
            D.37659 = mono_class_enum_basetype (D.37654);
            D.37660 = D.37659->type;
            ro_type = (int) D.37660;
            <D.37658>:
            <D.37653>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.37661>; else goto <D.37662>;
            <D.37661>:
            D.37663 = mono_opcode_name (op);
            D.32333 = method->signature;
            D.32334 = D.32333->param_count;
            D.32335 = (int) D.32334;
            D.32336 = method->name;
            D.30609 = method->klass;
            D.32337 = D.30609->name;
            D.30609 = method->klass;
            D.32338 = D.30609->name_space;
            D.37664 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.37663, "method-to-ir.c", 10305);
            cfg->exception_message = D.37664;
            D.30753 = cfg->verbose_level;
            if (D.30753 > 1) goto <D.37665>; else goto <D.37666>;
            <D.37665>:
            D.32342 = cfg->exception_message;
            printf ("%s\n", D.32342);
            <D.37666>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37662>:
            is_const = 1;
            switch (ro_type) <default: <D.28207>, case 2: <D.28184>, case 3: <D.28188>, case 4: <D.28187>, case 5: <D.28185>, case 6: <D.28190>, case 7: <D.28189>, case 8: <D.28191>, case 9: <D.28192>, case 10: <D.28202>, case 11: <D.28203>, case 12: <D.28204>, case 13: <D.28205>, case 14: <D.28197>, case 15: <D.28195>, case 17: <D.28206>, case 18: <D.28199>, case 20: <D.28201>, case 24: <D.28193>, case 25: <D.28194>, case 27: <D.28196>, case 28: <D.28198>, case 29: <D.28200>>
            <D.28184>:
            <D.28185>:
            D.30673 = cfg->mempool;
            D.37667 = mono_mempool_alloc (D.30673, 80);
            *sp = D.37667;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->data.op[1].const_val = 0;
            D.33377 = D.31680->data.op[1].const_val;
            D.31680->data.op[0].const_val = D.33377;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->prev = 0B;
            D.33378 = D.31680->prev;
            D.31680->next = D.33378;
            D.31680 = *sp;
            D.31680->opcode = 362;
            D.31680 = *sp;
            D.31680->flags = 0;
            D.31680 = *sp;
            D.31680->type = 0;
            D.31680 = *sp;
            D.31680->dreg = -1;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->sreg3 = -1;
            D.33379 = D.31680->sreg3;
            D.31680->sreg2 = D.33379;
            D.33380 = D.31680->sreg2;
            D.31680->sreg1 = D.33380;
            D.31680 = *sp;
            D.30898 = cfg->ip;
            D.31680->cil_code = D.30898;
            D.31680 = *sp;
            D.37668 = MEM[(guint8 *)addr];
            D.37669 = (long int) D.37668;
            D.31680->data.op[0].const_val = D.37669;
            D.31680 = *sp;
            D.31680->type = 1;
            D.31680 = *sp;
            D.37670 = alloc_dreg (cfg, 1);
            D.37671 = (int) D.37670;
            D.31680->dreg = D.37671;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37672>; else goto <D.37673>;
            <D.37672>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680 = *sp;
            D.30927->next = D.31680;
            D.31680 = *sp;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            goto <D.37674>;
            <D.37673>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37674>:
            sp = sp + 8;
            goto <D.28186>;
            <D.28187>:
            D.30673 = cfg->mempool;
            D.37675 = mono_mempool_alloc (D.30673, 80);
            *sp = D.37675;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->data.op[1].const_val = 0;
            D.33377 = D.31680->data.op[1].const_val;
            D.31680->data.op[0].const_val = D.33377;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->prev = 0B;
            D.33378 = D.31680->prev;
            D.31680->next = D.33378;
            D.31680 = *sp;
            D.31680->opcode = 362;
            D.31680 = *sp;
            D.31680->flags = 0;
            D.31680 = *sp;
            D.31680->type = 0;
            D.31680 = *sp;
            D.31680->dreg = -1;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->sreg3 = -1;
            D.33379 = D.31680->sreg3;
            D.31680->sreg2 = D.33379;
            D.33380 = D.31680->sreg2;
            D.31680->sreg1 = D.33380;
            D.31680 = *sp;
            D.30898 = cfg->ip;
            D.31680->cil_code = D.30898;
            D.31680 = *sp;
            D.37676 = MEM[(gint8 *)addr];
            D.37677 = (long int) D.37676;
            D.31680->data.op[0].const_val = D.37677;
            D.31680 = *sp;
            D.31680->type = 1;
            D.31680 = *sp;
            D.37678 = alloc_dreg (cfg, 1);
            D.37679 = (int) D.37678;
            D.31680->dreg = D.37679;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37680>; else goto <D.37681>;
            <D.37680>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680 = *sp;
            D.30927->next = D.31680;
            D.31680 = *sp;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            goto <D.37682>;
            <D.37681>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37682>:
            sp = sp + 8;
            goto <D.28186>;
            <D.28188>:
            <D.28189>:
            D.30673 = cfg->mempool;
            D.37683 = mono_mempool_alloc (D.30673, 80);
            *sp = D.37683;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->data.op[1].const_val = 0;
            D.33377 = D.31680->data.op[1].const_val;
            D.31680->data.op[0].const_val = D.33377;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->prev = 0B;
            D.33378 = D.31680->prev;
            D.31680->next = D.33378;
            D.31680 = *sp;
            D.31680->opcode = 362;
            D.31680 = *sp;
            D.31680->flags = 0;
            D.31680 = *sp;
            D.31680->type = 0;
            D.31680 = *sp;
            D.31680->dreg = -1;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->sreg3 = -1;
            D.33379 = D.31680->sreg3;
            D.31680->sreg2 = D.33379;
            D.33380 = D.31680->sreg2;
            D.31680->sreg1 = D.33380;
            D.31680 = *sp;
            D.30898 = cfg->ip;
            D.31680->cil_code = D.30898;
            D.31680 = *sp;
            D.37684 = MEM[(guint16 *)addr];
            D.37685 = (long int) D.37684;
            D.31680->data.op[0].const_val = D.37685;
            D.31680 = *sp;
            D.31680->type = 1;
            D.31680 = *sp;
            D.37686 = alloc_dreg (cfg, 1);
            D.37687 = (int) D.37686;
            D.31680->dreg = D.37687;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37688>; else goto <D.37689>;
            <D.37688>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680 = *sp;
            D.30927->next = D.31680;
            D.31680 = *sp;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            goto <D.37690>;
            <D.37689>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37690>:
            sp = sp + 8;
            goto <D.28186>;
            <D.28190>:
            D.30673 = cfg->mempool;
            D.37691 = mono_mempool_alloc (D.30673, 80);
            *sp = D.37691;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->data.op[1].const_val = 0;
            D.33377 = D.31680->data.op[1].const_val;
            D.31680->data.op[0].const_val = D.33377;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->prev = 0B;
            D.33378 = D.31680->prev;
            D.31680->next = D.33378;
            D.31680 = *sp;
            D.31680->opcode = 362;
            D.31680 = *sp;
            D.31680->flags = 0;
            D.31680 = *sp;
            D.31680->type = 0;
            D.31680 = *sp;
            D.31680->dreg = -1;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->sreg3 = -1;
            D.33379 = D.31680->sreg3;
            D.31680->sreg2 = D.33379;
            D.33380 = D.31680->sreg2;
            D.31680->sreg1 = D.33380;
            D.31680 = *sp;
            D.30898 = cfg->ip;
            D.31680->cil_code = D.30898;
            D.31680 = *sp;
            D.37692 = MEM[(gint16 *)addr];
            D.37693 = (long int) D.37692;
            D.31680->data.op[0].const_val = D.37693;
            D.31680 = *sp;
            D.31680->type = 1;
            D.31680 = *sp;
            D.37694 = alloc_dreg (cfg, 1);
            D.37695 = (int) D.37694;
            D.31680->dreg = D.37695;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37696>; else goto <D.37697>;
            <D.37696>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680 = *sp;
            D.30927->next = D.31680;
            D.31680 = *sp;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            goto <D.37698>;
            <D.37697>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37698>:
            sp = sp + 8;
            goto <D.28186>;
            <D.28191>:
            D.30673 = cfg->mempool;
            D.37699 = mono_mempool_alloc (D.30673, 80);
            *sp = D.37699;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->data.op[1].const_val = 0;
            D.33377 = D.31680->data.op[1].const_val;
            D.31680->data.op[0].const_val = D.33377;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->prev = 0B;
            D.33378 = D.31680->prev;
            D.31680->next = D.33378;
            D.31680 = *sp;
            D.31680->opcode = 362;
            D.31680 = *sp;
            D.31680->flags = 0;
            D.31680 = *sp;
            D.31680->type = 0;
            D.31680 = *sp;
            D.31680->dreg = -1;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->sreg3 = -1;
            D.33379 = D.31680->sreg3;
            D.31680->sreg2 = D.33379;
            D.33380 = D.31680->sreg2;
            D.31680->sreg1 = D.33380;
            D.31680 = *sp;
            D.30898 = cfg->ip;
            D.31680->cil_code = D.30898;
            D.31680 = *sp;
            D.37700 = MEM[(gint32 *)addr];
            D.37701 = (long int) D.37700;
            D.31680->data.op[0].const_val = D.37701;
            D.31680 = *sp;
            D.31680->type = 1;
            D.31680 = *sp;
            D.37702 = alloc_dreg (cfg, 1);
            D.37703 = (int) D.37702;
            D.31680->dreg = D.37703;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37704>; else goto <D.37705>;
            <D.37704>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680 = *sp;
            D.30927->next = D.31680;
            D.31680 = *sp;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            goto <D.37706>;
            <D.37705>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37706>:
            sp = sp + 8;
            goto <D.28186>;
            <D.28192>:
            D.30673 = cfg->mempool;
            D.37707 = mono_mempool_alloc (D.30673, 80);
            *sp = D.37707;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->data.op[1].const_val = 0;
            D.33377 = D.31680->data.op[1].const_val;
            D.31680->data.op[0].const_val = D.33377;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->prev = 0B;
            D.33378 = D.31680->prev;
            D.31680->next = D.33378;
            D.31680 = *sp;
            D.31680->opcode = 362;
            D.31680 = *sp;
            D.31680->flags = 0;
            D.31680 = *sp;
            D.31680->type = 0;
            D.31680 = *sp;
            D.31680->dreg = -1;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->sreg3 = -1;
            D.33379 = D.31680->sreg3;
            D.31680->sreg2 = D.33379;
            D.33380 = D.31680->sreg2;
            D.31680->sreg1 = D.33380;
            D.31680 = *sp;
            D.30898 = cfg->ip;
            D.31680->cil_code = D.30898;
            D.31680 = *sp;
            D.37708 = MEM[(guint32 *)addr];
            D.37709 = (long int) D.37708;
            D.31680->data.op[0].const_val = D.37709;
            D.31680 = *sp;
            D.31680->type = 1;
            D.31680 = *sp;
            D.37710 = alloc_dreg (cfg, 1);
            D.37711 = (int) D.37710;
            D.31680->dreg = D.37711;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37712>; else goto <D.37713>;
            <D.37712>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680 = *sp;
            D.30927->next = D.31680;
            D.31680 = *sp;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            goto <D.37714>;
            <D.37713>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37714>:
            sp = sp + 8;
            goto <D.28186>;
            <D.28193>:
            <D.28194>:
            <D.28195>:
            <D.28196>:
            D.30673 = cfg->mempool;
            D.37715 = mono_mempool_alloc (D.30673, 80);
            *sp = D.37715;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->data.op[1].const_val = 0;
            D.33377 = D.31680->data.op[1].const_val;
            D.31680->data.op[0].const_val = D.33377;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->prev = 0B;
            D.33378 = D.31680->prev;
            D.31680->next = D.33378;
            D.31680 = *sp;
            D.31680->opcode = 363;
            D.31680 = *sp;
            D.31680->flags = 0;
            D.31680 = *sp;
            D.31680->type = 0;
            D.31680 = *sp;
            D.31680->dreg = -1;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->sreg3 = -1;
            D.33379 = D.31680->sreg3;
            D.31680->sreg2 = D.33379;
            D.33380 = D.31680->sreg2;
            D.31680->sreg1 = D.33380;
            D.31680 = *sp;
            D.30898 = cfg->ip;
            D.31680->cil_code = D.30898;
            D.31680 = *sp;
            D.37716 = MEM[(void * *)addr];
            D.31680->data.op[0].p = D.37716;
            D.31680 = *sp;
            D.31680->type = 3;
            D.31680 = *sp;
            D.37717 = alloc_dreg (cfg, 3);
            D.37718 = (int) D.37717;
            D.31680->dreg = D.37718;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37719>; else goto <D.37720>;
            <D.37719>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680 = *sp;
            D.30927->next = D.31680;
            D.31680 = *sp;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            goto <D.37721>;
            <D.37720>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37721>:
            D.31680 = *sp;
            D.36805 = field->type;
            type_to_eval_stack_type (cfg, D.36805, D.31680);
            sp = sp + 8;
            goto <D.28186>;
            <D.28197>:
            <D.28198>:
            <D.28199>:
            <D.28200>:
            <D.28201>:
            D.37722 = mono_gc_is_moving ();
            if (D.37722 == 0) goto <D.37723>; else goto <D.37724>;
            <D.37723>:
            D.30673 = cfg->mempool;
            D.37725 = mono_mempool_alloc (D.30673, 80);
            *sp = D.37725;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->data.op[1].const_val = 0;
            D.33377 = D.31680->data.op[1].const_val;
            D.31680->data.op[0].const_val = D.33377;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->prev = 0B;
            D.33378 = D.31680->prev;
            D.31680->next = D.33378;
            D.31680 = *sp;
            D.31680->opcode = 363;
            D.31680 = *sp;
            D.31680->flags = 0;
            D.31680 = *sp;
            D.31680->type = 0;
            D.31680 = *sp;
            D.31680->dreg = -1;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->sreg3 = -1;
            D.33379 = D.31680->sreg3;
            D.31680->sreg2 = D.33379;
            D.33380 = D.31680->sreg2;
            D.31680->sreg1 = D.33380;
            D.31680 = *sp;
            D.30898 = cfg->ip;
            D.31680->cil_code = D.30898;
            D.31680 = *sp;
            D.37716 = MEM[(void * *)addr];
            D.31680->data.op[0].p = D.37716;
            D.31680 = *sp;
            D.31680->type = 3;
            D.31680 = *sp;
            D.37726 = alloc_dreg (cfg, 3);
            D.37727 = (int) D.37726;
            D.31680->dreg = D.37727;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37728>; else goto <D.37729>;
            <D.37728>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680 = *sp;
            D.30927->next = D.31680;
            D.31680 = *sp;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            goto <D.37730>;
            <D.37729>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37730>:
            D.31680 = *sp;
            D.36805 = field->type;
            type_to_eval_stack_type (cfg, D.36805, D.31680);
            sp = sp + 8;
            goto <D.37731>;
            <D.37724>:
            is_const = 0;
            <D.37731>:
            goto <D.28186>;
            <D.28202>:
            <D.28203>:
            D.30673 = cfg->mempool;
            D.37732 = mono_mempool_alloc (D.30673, 80);
            *sp = D.37732;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->data.op[1].const_val = 0;
            D.33377 = D.31680->data.op[1].const_val;
            D.31680->data.op[0].const_val = D.33377;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->prev = 0B;
            D.33378 = D.31680->prev;
            D.31680->next = D.33378;
            D.31680 = *sp;
            D.31680->opcode = 363;
            D.31680 = *sp;
            D.31680->flags = 0;
            D.31680 = *sp;
            D.31680->type = 0;
            D.31680 = *sp;
            D.31680->dreg = -1;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680 = *sp;
            D.31680->sreg3 = -1;
            D.33379 = D.31680->sreg3;
            D.31680->sreg2 = D.33379;
            D.33380 = D.31680->sreg2;
            D.31680->sreg1 = D.33380;
            D.31680 = *sp;
            D.30898 = cfg->ip;
            D.31680->cil_code = D.30898;
            D.31680 = *sp;
            D.37733 = alloc_lreg (cfg);
            D.37734 = (int) D.37733;
            D.31680->dreg = D.37734;
            D.31680 = *sp;
            D.31680->type = 2;
            D.31680 = *sp;
            D.37735 = MEM[(gint64 *)addr];
            D.31680->data.i8const = D.37735;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37736>; else goto <D.37737>;
            <D.37736>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680 = *sp;
            D.30927->next = D.31680;
            D.31680 = *sp;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.31680->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            goto <D.37738>;
            <D.37737>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.31680 = *sp;
            bblock.113->last_ins = D.31680;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37738>:
            sp = sp + 8;
            goto <D.28186>;
            <D.28204>:
            <D.28205>:
            <D.28206>:
            <D.28207>:
            is_const = 0;
            goto <D.28186>;
            <D.28186>:
          }
          <D.37638>:
          <D.37641>:
          if (is_const == 0) goto <D.37739>; else goto <D.37740>;
          <D.37739>:
          {
            struct MonoInst * load;

            sp.77 = (long int) sp;
            stack_start.78 = (long int) stack_start;
            D.31451 = sp.77 - stack_start.78;
            D.31452 = D.31451 /[ex] 8;
            D.31362 = header->max_stack;
            D.31586 = (long int) D.31362;
            if (D.31452 >= D.31586) goto <D.37741>; else goto <D.37742>;
            <D.37741>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.37743>; else goto <D.37744>;
            <D.37743>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.37745>; else goto <D.37746>;
            <D.37745>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.37746>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37744>:
            D.37747 = mini_get_debug_options ();
            D.37748 = D.37747->break_on_unverified;
            if (D.37748 != 0) goto <D.37749>; else goto unverified;
            <D.37749>:
            __asm__ __volatile__("int $03");
            <D.37742>:
            D.30673 = cfg->mempool;
            load = mono_mempool_alloc (D.30673, 80);
            load->data.op[1].const_val = 0;
            D.37750 = load->data.op[1].const_val;
            load->data.op[0].const_val = D.37750;
            load->prev = 0B;
            D.37751 = load->prev;
            load->next = D.37751;
            D.36805 = field->type;
            D.37752 = mono_type_to_load_membase (cfg, D.36805);
            D.37753 = (short unsigned int) D.37752;
            load->opcode = D.37753;
            load->flags = 0;
            load->type = 0;
            load->dreg = -1;
            load->sreg3 = -1;
            D.37754 = load->sreg3;
            load->sreg2 = D.37754;
            D.37755 = load->sreg2;
            load->sreg1 = D.37755;
            D.30898 = cfg->ip;
            load->cil_code = D.30898;
            load->dreg = 0;
            D.31092 = ins->dreg;
            load->sreg1 = D.31092;
            load->data.op[0].const_val = 0;
            load->type = 1;
            D.36805 = field->type;
            type_to_eval_stack_type (cfg, D.36805, load);
            D.37756 = load->type;
            D.37757 = (<unnamed type>) D.37756;
            D.37758 = alloc_dreg (cfg, D.37757);
            D.37759 = (int) D.37758;
            load->dreg = D.37759;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37760>; else goto <D.37761>;
            <D.37760>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = load;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            load->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = load;
            goto <D.37762>;
            <D.37761>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = load;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37762>:
            D.37763 = load->flags;
            D.34999 = (unsigned char) ins_flag;
            D.37764 = D.37763 | D.34999;
            load->flags = D.37764;
            ins_flag = 0;
            sp.237 = sp;
            sp = sp.237 + 8;
            *sp.237 = load;
          }
          <D.37740>:
        }
        <D.37628>:
        <D.37612>:
        ins_flag = 0;
        ip = ip + 5;
        goto <D.27670>;
      }
      <D.28209>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 15) goto <D.37766>; else goto <D.37767>;
      <D.37766>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.37768>; else goto <D.37769>;
      <D.37768>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.37770>; else goto <D.37771>;
      <D.37770>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37771>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37769>:
      D.37772 = mini_get_debug_options ();
      D.37773 = D.37772->break_on_unverified;
      if (D.37773 != 0) goto <D.37774>; else goto unverified;
      <D.37774>:
      __asm__ __volatile__("int $03");
      <D.37767>:
      sp = sp + 18446744073709551600;
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.37775>; else goto <D.37776>;
      <D.37775>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.37777>; else goto <D.37778>;
      <D.37777>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.37779>; else goto <D.37780>;
      <D.37779>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37780>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37778>:
      D.37781 = mini_get_debug_options ();
      D.37782 = D.37781->break_on_unverified;
      if (D.37782 != 0) goto <D.37783>; else goto unverified;
      <D.37783>:
      __asm__ __volatile__("int $03");
      <D.37776>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.238 = mini_get_class (method, token, generic_context);
      klass = klass.238;
      klass.155 = klass;
      if (klass.155 == 0B) goto <D.37785>; else goto <D.37787>;
      <D.37787>:
      klass.155 = klass;
      D.35388 = klass.155->exception_type;
      if (D.35388 != 0) goto <D.37785>; else goto <D.37786>;
      <D.37785>:
      klass.155 = klass;
      cfg->exception_ptr = klass.155;
      D.37788 = mini_get_debug_options ();
      D.37789 = D.37788->break_on_unverified;
      if (D.37789 != 0) goto <D.37790>; else goto load_error;
      <D.37790>:
      __asm__ __volatile__("int $03");
      <D.37786>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      klass.155 = klass;
      D.35462 = &klass.155->byval_arg;
      D.37791 = mono_type_to_store_membase (cfg, D.35462);
      D.37792 = (short unsigned int) D.37791;
      ins->opcode = D.37792;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.32790 = D.32789->dreg;
      ins->sreg1 = D.32790;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->dreg = D.31862;
      ins->data.op[0].const_val = 0;
      klass.155 = klass;
      D.35462 = &klass.155->byval_arg;
      type_to_eval_stack_type (cfg, D.35462, ins);
      klass.155 = klass;
      D.35462 = &klass.155->byval_arg;
      D.37793 = mono_class_from_mono_type (D.35462);
      ins->klass = D.37793;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.37794>; else goto <D.37795>;
      <D.37794>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.37796>;
      <D.37795>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.37796>:
      D.33854 = BIT_FIELD_REF <*cfg, 8, 5624>;
      D.33855 = D.33854 & 16;
      if (D.33855 != 0) goto <D.37797>; else goto <D.37798>;
      <D.37797>:
      D.30642 = cfg->method;
      D.32578 = BIT_FIELD_REF <*D.30642, 8, 256>;
      D.32579 = D.32578 & 124;
      if (D.32579 != 96) goto <D.37799>; else goto <D.37800>;
      <D.37799>:
      klass.155 = klass;
      D.37801 = generic_class_is_reference_type (cfg, klass.155);
      if (D.37801 != 0) goto <D.37802>; else goto <D.37803>;
      <D.37802>:
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.31680 = *sp;
      emit_write_barrier (cfg, D.31680, D.32789);
      <D.37803>:
      <D.37800>:
      <D.37798>:
      ins_flag = 0;
      ip = ip + 5;
      inline_costs = inline_costs + 1;
      goto <D.27670>;
      <D.28210>:
      {
        struct MonoInst * len_ins;
        const char * data_ptr;
        int data_size;
        guint32 field_token;

        try
          {
            data_size = 0;
            sp.77 = (long int) sp;
            stack_start.78 = (long int) stack_start;
            D.31451 = sp.77 - stack_start.78;
            if (D.31451 <= 7) goto <D.37804>; else goto <D.37805>;
            <D.37804>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.37806>; else goto <D.37807>;
            <D.37806>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.37808>; else goto <D.37809>;
            <D.37808>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.37809>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37807>:
            D.37810 = mini_get_debug_options ();
            D.37811 = D.37810->break_on_unverified;
            if (D.37811 != 0) goto <D.37812>; else goto unverified;
            <D.37812>:
            __asm__ __volatile__("int $03");
            <D.37805>:
            sp = sp + 18446744073709551608;
            D.32104 = ip + 5;
            if (D.32104 > end) goto <D.37813>; else goto <D.37814>;
            <D.37813>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.37815>; else goto <D.37816>;
            <D.37815>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.37817>; else goto <D.37818>;
            <D.37817>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.37818>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.37816>:
            D.37819 = mini_get_debug_options ();
            D.37820 = D.37819->break_on_unverified;
            if (D.37820 != 0) goto <D.37821>; else goto unverified;
            <D.37821>:
            __asm__ __volatile__("int $03");
            <D.37814>:
            token = MEM[(const guint32 *)ip + 1B];
            klass.239 = mini_get_class (method, token, generic_context);
            klass = klass.239;
            klass.155 = klass;
            if (klass.155 == 0B) goto <D.37823>; else goto <D.37825>;
            <D.37825>:
            klass.155 = klass;
            D.35388 = klass.155->exception_type;
            if (D.35388 != 0) goto <D.37823>; else goto <D.37824>;
            <D.37823>:
            klass.155 = klass;
            cfg->exception_ptr = klass.155;
            D.37826 = mini_get_debug_options ();
            D.37827 = D.37826->break_on_unverified;
            if (D.37827 != 0) goto <D.37828>; else goto load_error;
            <D.37828>:
            __asm__ __volatile__("int $03");
            <D.37824>:
            klass.155 = klass;
            context_used = mini_class_check_context_used (cfg, klass.155);
            D.31680 = *sp;
            D.33383 = D.31680->type;
            D.37829 = D.33383 + 254;
            if (D.37829 <= 1) goto <D.37830>; else goto <D.37831>;
            <D.37830>:
            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.30894 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30894;
            ins->prev = 0B;
            D.30895 = ins->prev;
            ins->next = D.30895;
            ins->opcode = 532;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30896 = ins->sreg3;
            ins->sreg2 = D.30896;
            D.30897 = ins->sreg2;
            ins->sreg1 = D.30897;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            D.31680 = *sp;
            D.31862 = D.31680->dreg;
            ins->sreg1 = D.31862;
            ins->type = 1;
            D.37832 = alloc_ireg (cfg);
            D.37833 = (int) D.37832;
            ins->dreg = D.37833;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.37834>; else goto <D.37835>;
            <D.37834>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.37836>;
            <D.37835>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.37836>:
            D.37837 = mono_decompose_opcode (cfg, ins);
            *sp = D.37837;
            <D.37831>:
            if (context_used != 0) goto <D.37838>; else goto <D.37839>;
            <D.37838>:
            {
              struct MonoInst * args[3];
              struct MonoClass * array_class;
              struct MonoMethod * managed_alloc;

              try
                {
                  klass.155 = klass;
                  array_class = mono_array_class_get (klass.155, 1);
                  managed_alloc = mono_gc_get_managed_array_allocator (array_class);
                  D.37840 = emit_get_rgctx_klass (cfg, context_used, array_class, 2);
                  args[0] = D.37840;
                  D.31680 = *sp;
                  args[1] = D.31680;
                  if (managed_alloc != 0B) goto <D.37841>; else goto <D.37842>;
                  <D.37841>:
                  ins = mono_emit_method_call (cfg, managed_alloc, &args, 0B);
                  goto <D.37843>;
                  <D.37842>:
                  ins = mono_emit_jit_icall (cfg, mono_array_new_specific, &args);
                  <D.37843>:
                }
              finally
                {
                  args = {CLOBBER};
                }
            }
            goto <D.37844>;
            <D.37839>:
            D.31070 = cfg->opt;
            D.31071 = D.31070 & 512;
            if (D.31071 != 0) goto <D.37845>; else goto <D.37846>;
            <D.37845>:
            {
              struct MonoInst * iargs[3];

              try
                {
                  D.31070 = cfg->opt;
                  D.31071 = D.31070 & 512;
                  if (D.31071 != 0) goto <D.37847>; else goto <D.37850>;
                  <D.37850>:
                  D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
                  D.31073 = D.31072 & 64;
                  if (D.31073 != 0) goto <D.37847>; else goto <D.37848>;
                  <D.37847>:
                  {
                    struct MonoInst * __domain_var;

                    __domain_var = mono_get_domainvar (cfg);
                    D.30673 = cfg->mempool;
                    D.37851 = mono_mempool_alloc (D.30673, 80);
                    iargs[0] = D.37851;
                    D.37852 = iargs[0];
                    D.37852 = iargs[0];
                    D.37852->data.op[1].const_val = 0;
                    D.37853 = D.37852->data.op[1].const_val;
                    D.37852->data.op[0].const_val = D.37853;
                    D.37852 = iargs[0];
                    D.37852 = iargs[0];
                    D.37852->prev = 0B;
                    D.37854 = D.37852->prev;
                    D.37852->next = D.37854;
                    D.37852 = iargs[0];
                    D.37852->opcode = 428;
                    D.37852 = iargs[0];
                    D.37852->flags = 0;
                    D.37852 = iargs[0];
                    D.37852->type = 0;
                    D.37852 = iargs[0];
                    D.37852->dreg = -1;
                    D.37852 = iargs[0];
                    D.37852 = iargs[0];
                    D.37852 = iargs[0];
                    D.37852->sreg3 = -1;
                    D.37855 = D.37852->sreg3;
                    D.37852->sreg2 = D.37855;
                    D.37856 = D.37852->sreg2;
                    D.37852->sreg1 = D.37856;
                    D.37852 = iargs[0];
                    D.30898 = cfg->ip;
                    D.37852->cil_code = D.30898;
                    D.37852 = iargs[0];
                    D.31416 = cfg->varinfo;
                    D.37857 = __domain_var->data.op[0].const_val;
                    D.37858 = (long unsigned int) D.37857;
                    D.37859 = D.37858 * 8;
                    D.37860 = D.31416 + D.37859;
                    D.37861 = *D.37860;
                    D.37862 = D.37861->data.op[1].vtype;
                    D.37863 = mono_type_to_regmove (cfg, D.37862);
                    D.37864 = (short unsigned int) D.37863;
                    D.37852->opcode = D.37864;
                    D.37852 = iargs[0];
                    D.31416 = cfg->varinfo;
                    D.37857 = __domain_var->data.op[0].const_val;
                    D.37858 = (long unsigned int) D.37857;
                    D.37859 = D.37858 * 8;
                    D.37860 = D.31416 + D.37859;
                    D.37861 = *D.37860;
                    D.37862 = D.37861->data.op[1].vtype;
                    type_to_eval_stack_type (cfg, D.37862, D.37852);
                    D.37852 = iargs[0];
                    D.31416 = cfg->varinfo;
                    D.37857 = __domain_var->data.op[0].const_val;
                    D.37858 = (long unsigned int) D.37857;
                    D.37859 = D.37858 * 8;
                    D.37860 = D.31416 + D.37859;
                    D.37861 = *D.37860;
                    D.37865 = D.37861->klass;
                    D.37852->klass = D.37865;
                    D.37852 = iargs[0];
                    D.31416 = cfg->varinfo;
                    D.37857 = __domain_var->data.op[0].const_val;
                    D.37858 = (long unsigned int) D.37857;
                    D.37859 = D.37858 * 8;
                    D.37860 = D.31416 + D.37859;
                    D.37861 = *D.37860;
                    D.37866 = D.37861->dreg;
                    D.37852->sreg1 = D.37866;
                    D.37852 = iargs[0];
                    D.37852 = iargs[0];
                    D.37867 = D.37852->type;
                    D.37868 = (<unnamed type>) D.37867;
                    D.37869 = alloc_dreg (cfg, D.37868);
                    D.37870 = (int) D.37869;
                    D.37852->dreg = D.37870;
                    D.37852 = iargs[0];
                    D.37871 = D.37852->opcode;
                    if (D.37871 == 431) goto <D.37872>; else goto <D.37873>;
                    <D.37872>:
                    D.37852 = iargs[0];
                    D.31416 = cfg->varinfo;
                    D.37857 = __domain_var->data.op[0].const_val;
                    D.37858 = (long unsigned int) D.37857;
                    D.37859 = D.37858 * 8;
                    D.37860 = D.31416 + D.37859;
                    D.37861 = *D.37860;
                    D.37862 = D.37861->data.op[1].vtype;
                    D.37874 = mono_class_from_mono_type (D.37862);
                    D.37852->klass = D.37874;
                    <D.37873>:
                  }
                  goto <D.37849>;
                  <D.37848>:
                  D.30673 = cfg->mempool;
                  D.37875 = mono_mempool_alloc (D.30673, 80);
                  iargs[0] = D.37875;
                  D.37852 = iargs[0];
                  D.37852 = iargs[0];
                  D.37852->data.op[1].const_val = 0;
                  D.37853 = D.37852->data.op[1].const_val;
                  D.37852->data.op[0].const_val = D.37853;
                  D.37852 = iargs[0];
                  D.37852 = iargs[0];
                  D.37852->prev = 0B;
                  D.37854 = D.37852->prev;
                  D.37852->next = D.37854;
                  D.37852 = iargs[0];
                  D.37852->opcode = 363;
                  D.37852 = iargs[0];
                  D.37852->flags = 0;
                  D.37852 = iargs[0];
                  D.37852->type = 0;
                  D.37852 = iargs[0];
                  D.37852->dreg = -1;
                  D.37852 = iargs[0];
                  D.37852 = iargs[0];
                  D.37852 = iargs[0];
                  D.37852->sreg3 = -1;
                  D.37855 = D.37852->sreg3;
                  D.37852->sreg2 = D.37855;
                  D.37856 = D.37852->sreg2;
                  D.37852->sreg1 = D.37856;
                  D.37852 = iargs[0];
                  D.30898 = cfg->ip;
                  D.37852->cil_code = D.30898;
                  D.37852 = iargs[0];
                  D.30697 = cfg->domain;
                  D.37852->data.op[0].p = D.30697;
                  D.37852 = iargs[0];
                  D.37852->type = 3;
                  D.37852 = iargs[0];
                  D.37876 = alloc_dreg (cfg, 3);
                  D.37877 = (int) D.37876;
                  D.37852->dreg = D.37877;
                  <D.37849>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.37878>; else goto <D.37879>;
                  <D.37878>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37852 = iargs[0];
                  D.30927->next = D.37852;
                  D.37852 = iargs[0];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37852->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.37852 = iargs[0];
                  bblock.113->last_ins = D.37852;
                  goto <D.37880>;
                  <D.37879>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.37852 = iargs[0];
                  bblock.113->last_ins = D.37852;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.37880>:
                  D.30673 = cfg->mempool;
                  D.37881 = mono_mempool_alloc (D.30673, 80);
                  iargs[1] = D.37881;
                  D.37882 = iargs[1];
                  D.37882 = iargs[1];
                  D.37882->data.op[1].const_val = 0;
                  D.37883 = D.37882->data.op[1].const_val;
                  D.37882->data.op[0].const_val = D.37883;
                  D.37882 = iargs[1];
                  D.37882 = iargs[1];
                  D.37882->prev = 0B;
                  D.37884 = D.37882->prev;
                  D.37882->next = D.37884;
                  D.37882 = iargs[1];
                  D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
                  D.31073 = D.31072 & 64;
                  if (D.31073 != 0) goto <D.37886>; else goto <D.37887>;
                  <D.37886>:
                  iftmp.240 = 736;
                  goto <D.37888>;
                  <D.37887>:
                  iftmp.240 = 363;
                  <D.37888>:
                  D.37882->opcode = iftmp.240;
                  D.37882 = iargs[1];
                  D.37882->flags = 0;
                  D.37882 = iargs[1];
                  D.37882->type = 0;
                  D.37882 = iargs[1];
                  D.37882->dreg = -1;
                  D.37882 = iargs[1];
                  D.37882 = iargs[1];
                  D.37882 = iargs[1];
                  D.37882->sreg3 = -1;
                  D.37889 = D.37882->sreg3;
                  D.37882->sreg2 = D.37889;
                  D.37890 = D.37882->sreg2;
                  D.37882->sreg1 = D.37890;
                  D.37882 = iargs[1];
                  D.30898 = cfg->ip;
                  D.37882->cil_code = D.30898;
                  D.37882 = iargs[1];
                  klass.155 = klass;
                  D.37882->data.op[0].p = klass.155;
                  D.37882 = iargs[1];
                  D.37882->data.op[1].src = 11B;
                  D.37882 = iargs[1];
                  D.37882->type = 3;
                  D.37882 = iargs[1];
                  D.37891 = alloc_dreg (cfg, 3);
                  D.37892 = (int) D.37891;
                  D.37882->dreg = D.37892;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.37893>; else goto <D.37894>;
                  <D.37893>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37882 = iargs[1];
                  D.30927->next = D.37882;
                  D.37882 = iargs[1];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37882->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.37882 = iargs[1];
                  bblock.113->last_ins = D.37882;
                  goto <D.37895>;
                  <D.37894>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.37882 = iargs[1];
                  bblock.113->last_ins = D.37882;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.37895>:
                  D.31680 = *sp;
                  iargs[2] = D.31680;
                  ins = mono_emit_jit_icall (cfg, mono_array_new, &iargs);
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            goto <D.37896>;
            <D.37846>:
            {
              struct MonoClass * array_type;

              klass.155 = klass;
              array_type = mono_array_class_get (klass.155, 1);
              D.30697 = cfg->domain;
              mono_class_vtable (D.30697, array_type);
              if (array_type == 0B) goto <D.37897>; else goto <D.37899>;
              <D.37899>:
              D.37900 = array_type->exception_type;
              if (D.37900 != 0) goto <D.37897>; else goto <D.37898>;
              <D.37897>:
              cfg->exception_ptr = array_type;
              D.37901 = mini_get_debug_options ();
              D.37902 = D.37901->break_on_unverified;
              if (D.37902 != 0) goto <D.37903>; else goto load_error;
              <D.37903>:
              __asm__ __volatile__("int $03");
              <D.37898>:
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 786;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              D.37904 = alloc_ireg_ref (cfg);
              D.37905 = (int) D.37904;
              ins->dreg = D.37905;
              D.31680 = *sp;
              D.31862 = D.31680->dreg;
              ins->sreg1 = D.31862;
              klass.155 = klass;
              ins->data.op[1].klass = klass.155;
              ins->type = 6;
              ins->klass = array_type;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.37906>; else goto <D.37907>;
              <D.37906>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.37908>;
              <D.37907>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.37908>:
              D.31108 = cfg->flags;
              D.37909 = D.31108 | 256;
              cfg->flags = D.37909;
              bblock.113 = cfg->cbb;
              bblock.113->has_array_access = 1;
              mono_get_got_var (cfg);
            }
            <D.37896>:
            <D.37844>:
            len_ins = *sp;
            ip = ip + 5;
            sp.241 = sp;
            sp = sp.241 + 8;
            *sp.241 = ins;
            inline_costs = inline_costs + 1;
            D.31070 = cfg->opt;
            D.33054 = D.31070 & 2048;
            if (D.33054 != 0) goto <D.37911>; else goto <D.37912>;
            <D.37911>:
            D.35445 = ip + 6;
            if (D.35445 < end) goto <D.37913>; else goto <D.37914>;
            <D.37913>:
            D.37915 = ip + 6;
            bblock.70 = bblock;
            D.37916 = ip_in_bb (cfg, bblock.70, D.37915);
            if (D.37916 != 0) goto <D.37917>; else goto <D.37918>;
            <D.37917>:
            D.37919 = len_ins->opcode;
            if (D.37919 == 362) goto <D.37920>; else goto <D.37921>;
            <D.37920>:
            D.37922 = len_ins->data.op[0].const_val;
            D.37923 = (unsigned int) D.37922;
            klass.155 = klass;
            D.32609 = cfg->compile_aot;
            D.32610 = (int) D.32609;
            data_ptr = initialize_array_data (method, D.32610, ip, klass.155, D.37923, &data_size, &field_token);
            if (data_ptr != 0B) goto <D.37924>; else goto <D.37925>;
            <D.37924>:
            {
              struct MonoMethod * memcpy_method;
              struct MonoInst * iargs[3];
              int add_reg;

              try
                {
                  memcpy_method = get_memcpy_method ();
                  D.37926 = alloc_ireg_mp (cfg);
                  add_reg = (int) D.37926;
                  D.30673 = cfg->mempool;
                  D.37927 = mono_mempool_alloc (D.30673, 80);
                  iargs[0] = D.37927;
                  D.37928 = iargs[0];
                  D.37928 = iargs[0];
                  D.37928->data.op[1].const_val = 0;
                  D.37929 = D.37928->data.op[1].const_val;
                  D.37928->data.op[0].const_val = D.37929;
                  D.37928 = iargs[0];
                  D.37928 = iargs[0];
                  D.37928->prev = 0B;
                  D.37930 = D.37928->prev;
                  D.37928->next = D.37930;
                  D.37928 = iargs[0];
                  D.37928->opcode = 542;
                  D.37928 = iargs[0];
                  D.37928->flags = 0;
                  D.37928 = iargs[0];
                  D.37928->type = 0;
                  D.37928 = iargs[0];
                  D.37928->dreg = -1;
                  D.37928 = iargs[0];
                  D.37928 = iargs[0];
                  D.37928 = iargs[0];
                  D.37928->sreg3 = -1;
                  D.37931 = D.37928->sreg3;
                  D.37928->sreg2 = D.37931;
                  D.37932 = D.37928->sreg2;
                  D.37928->sreg1 = D.37932;
                  D.37928 = iargs[0];
                  D.30898 = cfg->ip;
                  D.37928->cil_code = D.30898;
                  D.37928 = iargs[0];
                  D.37928->dreg = add_reg;
                  D.37928 = iargs[0];
                  D.31092 = ins->dreg;
                  D.37928->sreg1 = D.31092;
                  D.37928 = iargs[0];
                  D.37928->data.op[1].const_val = 32;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.37933>; else goto <D.37934>;
                  <D.37933>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37928 = iargs[0];
                  D.30927->next = D.37928;
                  D.37928 = iargs[0];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37928->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.37928 = iargs[0];
                  bblock.113->last_ins = D.37928;
                  goto <D.37935>;
                  <D.37934>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.37928 = iargs[0];
                  bblock.113->last_ins = D.37928;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.37935>:
                  D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
                  D.31073 = D.31072 & 64;
                  if (D.31073 != 0) goto <D.37936>; else goto <D.37937>;
                  <D.37936>:
                  D.30673 = cfg->mempool;
                  D.37938 = mono_mempool_alloc (D.30673, 80);
                  iargs[1] = D.37938;
                  D.37939 = iargs[1];
                  D.37939 = iargs[1];
                  D.37939->data.op[1].const_val = 0;
                  D.37940 = D.37939->data.op[1].const_val;
                  D.37939->data.op[0].const_val = D.37940;
                  D.37939 = iargs[1];
                  D.37939 = iargs[1];
                  D.37939->prev = 0B;
                  D.37941 = D.37939->prev;
                  D.37939->next = D.37941;
                  D.37939 = iargs[1];
                  D.37939->opcode = 736;
                  D.37939 = iargs[1];
                  D.37939->flags = 0;
                  D.37939 = iargs[1];
                  D.37939->type = 0;
                  D.37939 = iargs[1];
                  D.37939->dreg = -1;
                  D.37939 = iargs[1];
                  D.37939 = iargs[1];
                  D.37939 = iargs[1];
                  D.37939->sreg3 = -1;
                  D.37942 = D.37939->sreg3;
                  D.37939->sreg2 = D.37942;
                  D.37943 = D.37939->sreg2;
                  D.37939->sreg1 = D.37943;
                  D.37939 = iargs[1];
                  D.30898 = cfg->ip;
                  D.37939->cil_code = D.30898;
                  D.37939 = iargs[1];
                  field_token.242 = field_token;
                  D.30609 = method->klass;
                  D.30610 = D.30609->image;
                  D.30673 = cfg->mempool;
                  D.37945 = mono_jump_info_token_new2 (D.30673, D.30610, field_token.242, 0B);
                  D.37939->data.op[0].p = D.37945;
                  D.37939 = iargs[1];
                  D.37939->data.op[1].p = 29B;
                  D.37939 = iargs[1];
                  D.37939->type = 3;
                  D.37939 = iargs[1];
                  D.37939->klass = 0B;
                  D.37939 = iargs[1];
                  D.37946 = alloc_dreg (cfg, 3);
                  D.37947 = (int) D.37946;
                  D.37939->dreg = D.37947;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.37948>; else goto <D.37949>;
                  <D.37948>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37939 = iargs[1];
                  D.30927->next = D.37939;
                  D.37939 = iargs[1];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37939->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.37939 = iargs[1];
                  bblock.113->last_ins = D.37939;
                  goto <D.37950>;
                  <D.37949>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.37939 = iargs[1];
                  bblock.113->last_ins = D.37939;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.37950>:
                  goto <D.37951>;
                  <D.37937>:
                  D.30673 = cfg->mempool;
                  D.37952 = mono_mempool_alloc (D.30673, 80);
                  iargs[1] = D.37952;
                  D.37939 = iargs[1];
                  D.37939 = iargs[1];
                  D.37939->data.op[1].const_val = 0;
                  D.37940 = D.37939->data.op[1].const_val;
                  D.37939->data.op[0].const_val = D.37940;
                  D.37939 = iargs[1];
                  D.37939 = iargs[1];
                  D.37939->prev = 0B;
                  D.37941 = D.37939->prev;
                  D.37939->next = D.37941;
                  D.37939 = iargs[1];
                  D.37939->opcode = 363;
                  D.37939 = iargs[1];
                  D.37939->flags = 0;
                  D.37939 = iargs[1];
                  D.37939->type = 0;
                  D.37939 = iargs[1];
                  D.37939->dreg = -1;
                  D.37939 = iargs[1];
                  D.37939 = iargs[1];
                  D.37939 = iargs[1];
                  D.37939->sreg3 = -1;
                  D.37942 = D.37939->sreg3;
                  D.37939->sreg2 = D.37942;
                  D.37943 = D.37939->sreg2;
                  D.37939->sreg1 = D.37943;
                  D.37939 = iargs[1];
                  D.30898 = cfg->ip;
                  D.37939->cil_code = D.30898;
                  D.37939 = iargs[1];
                  D.37939->data.op[0].p = data_ptr;
                  D.37939 = iargs[1];
                  D.37939->type = 3;
                  D.37939 = iargs[1];
                  D.37953 = alloc_dreg (cfg, 3);
                  D.37954 = (int) D.37953;
                  D.37939->dreg = D.37954;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.37955>; else goto <D.37956>;
                  <D.37955>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37939 = iargs[1];
                  D.30927->next = D.37939;
                  D.37939 = iargs[1];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37939->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.37939 = iargs[1];
                  bblock.113->last_ins = D.37939;
                  goto <D.37957>;
                  <D.37956>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.37939 = iargs[1];
                  bblock.113->last_ins = D.37939;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.37957>:
                  <D.37951>:
                  D.30673 = cfg->mempool;
                  D.37958 = mono_mempool_alloc (D.30673, 80);
                  iargs[2] = D.37958;
                  D.37959 = iargs[2];
                  D.37959 = iargs[2];
                  D.37959->data.op[1].const_val = 0;
                  D.37960 = D.37959->data.op[1].const_val;
                  D.37959->data.op[0].const_val = D.37960;
                  D.37959 = iargs[2];
                  D.37959 = iargs[2];
                  D.37959->prev = 0B;
                  D.37961 = D.37959->prev;
                  D.37959->next = D.37961;
                  D.37959 = iargs[2];
                  D.37959->opcode = 362;
                  D.37959 = iargs[2];
                  D.37959->flags = 0;
                  D.37959 = iargs[2];
                  D.37959->type = 0;
                  D.37959 = iargs[2];
                  D.37959->dreg = -1;
                  D.37959 = iargs[2];
                  D.37959 = iargs[2];
                  D.37959 = iargs[2];
                  D.37959->sreg3 = -1;
                  D.37962 = D.37959->sreg3;
                  D.37959->sreg2 = D.37962;
                  D.37963 = D.37959->sreg2;
                  D.37959->sreg1 = D.37963;
                  D.37959 = iargs[2];
                  D.30898 = cfg->ip;
                  D.37959->cil_code = D.30898;
                  D.37959 = iargs[2];
                  data_size.243 = data_size;
                  D.37965 = (long int) data_size.243;
                  D.37959->data.op[0].const_val = D.37965;
                  D.37959 = iargs[2];
                  D.37959->type = 1;
                  D.37959 = iargs[2];
                  D.37966 = alloc_dreg (cfg, 1);
                  D.37967 = (int) D.37966;
                  D.37959->dreg = D.37967;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.37968>; else goto <D.37969>;
                  <D.37968>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37959 = iargs[2];
                  D.30927->next = D.37959;
                  D.37959 = iargs[2];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.37959->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.37959 = iargs[2];
                  bblock.113->last_ins = D.37959;
                  goto <D.37970>;
                  <D.37969>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.37959 = iargs[2];
                  bblock.113->last_ins = D.37959;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.37970>:
                  mono_emit_method_call (cfg, memcpy_method, &iargs, 0B);
                  ip = ip + 11;
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            <D.37925>:
            <D.37921>:
            <D.37918>:
            <D.37914>:
            <D.37912>:
            goto <D.27670>;
          }
        finally
          {
            data_size = {CLOBBER};
            field_token = {CLOBBER};
          }
      }
      <D.28224>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.37971>; else goto <D.37972>;
      <D.37971>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.37973>; else goto <D.37974>;
      <D.37973>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.37975>; else goto <D.37976>;
      <D.37975>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37976>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37974>:
      D.37977 = mini_get_debug_options ();
      D.37978 = D.37977->break_on_unverified;
      if (D.37978 != 0) goto <D.37979>; else goto unverified;
      <D.37979>:
      __asm__ __volatile__("int $03");
      <D.37972>:
      sp = sp + 18446744073709551608;
      D.31680 = *sp;
      D.33383 = D.31680->type;
      if (D.33383 != 6) goto <D.37980>; else goto <D.37981>;
      <D.37980>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.37982>; else goto <D.37983>;
      <D.37982>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.37984>; else goto <D.37985>;
      <D.37984>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.37985>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37983>:
      D.37986 = mini_get_debug_options ();
      D.37987 = D.37986->break_on_unverified;
      if (D.37987 != 0) goto <D.37988>; else goto unverified;
      <D.37988>:
      __asm__ __volatile__("int $03");
      <D.37981>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 787;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.37989 = alloc_preg (cfg);
      D.37990 = (int) D.37989;
      ins->dreg = D.37990;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      ins->type = 1;
      D.31527 = ins->flags;
      D.37991 = D.31527 | 32;
      ins->flags = D.37991;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.37992>; else goto <D.37993>;
      <D.37992>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.37994>;
      <D.37993>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.37994>:
      D.31108 = cfg->flags;
      D.37909 = D.31108 | 256;
      cfg->flags = D.37909;
      bblock.113 = cfg->cbb;
      bblock.113->has_array_access = 1;
      ip = ip + 1;
      sp.244 = sp;
      sp = sp.244 + 8;
      *sp.244 = ins;
      goto <D.27670>;
      <D.28225>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 15) goto <D.37996>; else goto <D.37997>;
      <D.37996>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.37998>; else goto <D.37999>;
      <D.37998>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.38000>; else goto <D.38001>;
      <D.38000>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38001>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.37999>:
      D.38002 = mini_get_debug_options ();
      D.38003 = D.38002->break_on_unverified;
      if (D.38003 != 0) goto <D.38004>; else goto unverified;
      <D.38004>:
      __asm__ __volatile__("int $03");
      <D.37997>:
      sp = sp + 18446744073709551600;
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.38005>; else goto <D.38006>;
      <D.38005>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.38007>; else goto <D.38008>;
      <D.38007>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.38009>; else goto <D.38010>;
      <D.38009>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38010>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38008>:
      D.38011 = mini_get_debug_options ();
      D.38012 = D.38011->break_on_unverified;
      if (D.38012 != 0) goto <D.38013>; else goto unverified;
      <D.38013>:
      __asm__ __volatile__("int $03");
      <D.38006>:
      D.31680 = *sp;
      D.33383 = D.31680->type;
      if (D.33383 != 6) goto <D.38014>; else goto <D.38015>;
      <D.38014>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.38016>; else goto <D.38017>;
      <D.38016>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.38018>; else goto <D.38019>;
      <D.38018>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38019>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38017>:
      D.38020 = mini_get_debug_options ();
      D.38021 = D.38020->break_on_unverified;
      if (D.38021 != 0) goto <D.38022>; else goto unverified;
      <D.38022>:
      __asm__ __volatile__("int $03");
      <D.38015>:
      D.31108 = cfg->flags;
      D.38023 = D.31108 | 4;
      cfg->flags = D.38023;
      D.32123 = ip + 1;
      D.32124 = *D.32123;
      klass.245 = mini_get_class (method, D.32124, generic_context);
      klass = klass.245;
      klass.155 = klass;
      if (klass.155 == 0B) goto <D.38025>; else goto <D.38027>;
      <D.38027>:
      klass.155 = klass;
      D.35388 = klass.155->exception_type;
      if (D.35388 != 0) goto <D.38025>; else goto <D.38026>;
      <D.38025>:
      klass.155 = klass;
      cfg->exception_ptr = klass.155;
      D.38028 = mini_get_debug_options ();
      D.38029 = D.38028->break_on_unverified;
      if (D.38029 != 0) goto <D.38030>; else goto load_error;
      <D.38030>:
      __asm__ __volatile__("int $03");
      <D.38026>:
      klass.155 = klass;
      D.36812 = BIT_FIELD_REF <*klass.155, 8, 256>;
      D.36813 = D.36812 & 8;
      if (D.36813 == 0) goto <D.38031>; else goto <D.38032>;
      <D.38031>:
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      if (D.30615 == 0) goto <D.38033>; else goto <D.38034>;
      <D.38033>:
      if (readonly == 0) goto <D.38035>; else goto <D.38036>;
      <D.38035>:
      {
        struct MonoClass * array_class;

        klass.155 = klass;
        array_class = mono_array_class_get (klass.155, 1);
        D.31680 = *sp;
        mini_emit_check_array_type (cfg, D.31680, array_class);
        if (array_class == 0B) goto <D.38037>; else goto <D.38039>;
        <D.38039>:
        D.38040 = array_class->exception_type;
        if (D.38040 != 0) goto <D.38037>; else goto <D.38038>;
        <D.38037>:
        cfg->exception_ptr = array_class;
        D.38041 = mini_get_debug_options ();
        D.38042 = D.38041->break_on_unverified;
        if (D.38042 != 0) goto <D.38043>; else goto load_error;
        <D.38043>:
        __asm__ __volatile__("int $03");
        <D.38038>:
      }
      <D.38036>:
      <D.38034>:
      <D.38032>:
      readonly = 0;
      D.32788 = sp + 8;
      D.32789 = *D.32788;
      D.31680 = *sp;
      klass.155 = klass;
      ins = mini_emit_ldelema_1_ins (cfg, klass.155, D.31680, D.32789, 1);
      sp.246 = sp;
      sp = sp.246 + 8;
      *sp.246 = ins;
      ip = ip + 5;
      goto <D.27670>;
      <D.28227>:
      <D.28228>:
      <D.28229>:
      <D.28230>:
      <D.28231>:
      <D.28232>:
      <D.28233>:
      <D.28234>:
      <D.28235>:
      <D.28236>:
      <D.28237>:
      <D.28238>:
      {
        struct MonoInst * addr;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 15) goto <D.38045>; else goto <D.38046>;
        <D.38045>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.38047>; else goto <D.38048>;
        <D.38047>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.38049>; else goto <D.38050>;
        <D.38049>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38050>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38048>:
        D.38051 = mini_get_debug_options ();
        D.38052 = D.38051->break_on_unverified;
        if (D.38052 != 0) goto <D.38053>; else goto unverified;
        <D.38053>:
        __asm__ __volatile__("int $03");
        <D.38046>:
        sp = sp + 18446744073709551600;
        D.31560 = *ip;
        if (D.31560 == 163) goto <D.38054>; else goto <D.38055>;
        <D.38054>:
        D.32104 = ip + 5;
        if (D.32104 > end) goto <D.38056>; else goto <D.38057>;
        <D.38056>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.38058>; else goto <D.38059>;
        <D.38058>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.38060>; else goto <D.38061>;
        <D.38060>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38061>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38059>:
        D.38062 = mini_get_debug_options ();
        D.38063 = D.38062->break_on_unverified;
        if (D.38063 != 0) goto <D.38064>; else goto unverified;
        <D.38064>:
        __asm__ __volatile__("int $03");
        <D.38057>:
        token = MEM[(const guint32 *)ip + 1B];
        klass.247 = mini_get_class (method, token, generic_context);
        klass = klass.247;
        klass.155 = klass;
        if (klass.155 == 0B) goto <D.38066>; else goto <D.38068>;
        <D.38068>:
        klass.155 = klass;
        D.35388 = klass.155->exception_type;
        if (D.35388 != 0) goto <D.38066>; else goto <D.38067>;
        <D.38066>:
        klass.155 = klass;
        cfg->exception_ptr = klass.155;
        D.38069 = mini_get_debug_options ();
        D.38070 = D.38069->break_on_unverified;
        if (D.38070 != 0) goto <D.38071>; else goto load_error;
        <D.38071>:
        __asm__ __volatile__("int $03");
        <D.38067>:
        klass.155 = klass;
        mono_class_init (klass.155);
        goto <D.38072>;
        <D.38055>:
        D.31560 = *ip;
        D.31561 = (int) D.31560;
        klass.248 = array_access_to_klass (D.31561);
        klass = klass.248;
        <D.38072>:
        D.31680 = *sp;
        D.33383 = D.31680->type;
        if (D.33383 != 6) goto <D.38074>; else goto <D.38075>;
        <D.38074>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.38076>; else goto <D.38077>;
        <D.38076>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.38078>; else goto <D.38079>;
        <D.38078>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38079>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38077>:
        D.38080 = mini_get_debug_options ();
        D.38081 = D.38080->break_on_unverified;
        if (D.38081 != 0) goto <D.38082>; else goto unverified;
        <D.38082>:
        __asm__ __volatile__("int $03");
        <D.38075>:
        D.31108 = cfg->flags;
        D.38023 = D.31108 | 4;
        cfg->flags = D.38023;
        klass.155 = klass;
        D.38083 = mini_is_gsharedvt_variable_klass (cfg, klass.155);
        if (D.38083 != 0) goto <D.38084>; else goto <D.38085>;
        <D.38084>:
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.31680 = *sp;
        klass.155 = klass;
        addr = mini_emit_ldelema_1_ins (cfg, klass.155, D.31680, D.32789, 1);
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        klass.155 = klass;
        D.35462 = &klass.155->byval_arg;
        D.38086 = mono_type_to_load_membase (cfg, D.35462);
        D.38087 = (short unsigned int) D.38086;
        ins->opcode = D.38087;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->dreg = 0;
        D.38088 = addr->dreg;
        ins->sreg1 = D.38088;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.155 = klass;
        D.35462 = &klass.155->byval_arg;
        type_to_eval_stack_type (cfg, D.35462, ins);
        D.31426 = ins->type;
        D.31427 = (<unnamed type>) D.31426;
        D.38089 = alloc_dreg (cfg, D.31427);
        D.38090 = (int) D.38089;
        ins->dreg = D.38090;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.38091>; else goto <D.38092>;
        <D.38091>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.38093>;
        <D.38092>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.38093>:
        ins->opcode = 403;
        goto <D.38094>;
        <D.38085>:
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.35033 = D.32789->opcode;
        if (D.35033 == 362) goto <D.38095>; else goto <D.38096>;
        <D.38095>:
        {
          int array_reg;
          int index_reg;
          int offset;

          D.31680 = *sp;
          array_reg = D.31680->dreg;
          D.32788 = sp + 8;
          D.32789 = *D.32788;
          index_reg = D.32789->dreg;
          klass.155 = klass;
          D.38097 = mono_class_array_element_size (klass.155);
          D.38098 = (unsigned int) D.38097;
          D.32788 = sp + 8;
          D.32789 = *D.32788;
          D.35058 = D.32789->data.op[0].const_val;
          D.38099 = (unsigned int) D.35058;
          D.38100 = D.38098 * D.38099;
          D.38101 = D.38100 + 32;
          offset = (int) D.38101;
          D.31070 = cfg->opt;
          D.38102 = D.31070 & 134217728;
          if (D.38102 == 0) goto <D.38103>; else goto <D.38104>;
          <D.38103>:
          D.31070 = cfg->opt;
          D.38105 = D.31070 & 262144;
          if (D.38105 == 0) goto <D.38106>; else goto <D.38107>;
          <D.38106>:
          D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
          D.31308 = D.30660 & 64;
          if (D.31308 != 0) goto <D.38108>; else goto <D.38109>;
          <D.38108>:
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38110 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38110;
            inst->prev = 0B;
            D.38111 = inst->prev;
            inst->next = D.38111;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38112 = inst->sreg3;
            inst->sreg2 = D.38112;
            D.38113 = inst->sreg2;
            inst->sreg1 = D.38113;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38114>; else goto <D.38115>;
            <D.38114>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38116>;
            <D.38115>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38116>:
          }
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38117 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38117;
            inst->prev = 0B;
            D.38118 = inst->prev;
            inst->next = D.38118;
            inst->opcode = 455;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38119 = inst->sreg3;
            inst->sreg2 = D.38119;
            D.38120 = inst->sreg2;
            inst->sreg1 = D.38120;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->data.op[1].p = "NullReferenceException";
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38121>; else goto <D.38122>;
            <D.38121>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38123>;
            <D.38122>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38123>:
          }
          goto <D.38124>;
          <D.38109>:
          <D.38124>:
          if (0 != 0) goto <D.38125>; else goto <D.38126>;
          <D.38125>:
          {
            int _length_reg;

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

              __ins_flags = 32;
              D.38130 = __ins_flags & 32;
              if (D.38130 != 0) goto <D.38131>; else goto <D.38132>;
              <D.38131>:
              D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
              D.31308 = D.30660 & 64;
              if (D.31308 != 0) goto <D.38133>; else goto <D.38134>;
              <D.38133>:
              {
                struct MonoInst * inst;

                D.30673 = cfg->mempool;
                inst = mono_mempool_alloc (D.30673, 80);
                inst->data.op[1].const_val = 0;
                D.38135 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.38135;
                inst->prev = 0B;
                D.38136 = inst->prev;
                inst->next = D.38136;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.38137 = inst->sreg3;
                inst->sreg2 = D.38137;
                D.38138 = inst->sreg2;
                inst->sreg1 = D.38138;
                D.30898 = cfg->ip;
                inst->cil_code = D.30898;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                if (D.30927 != 0B) goto <D.38139>; else goto <D.38140>;
                <D.38139>:
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                D.30927->next = inst;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                inst->prev = D.30927;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                goto <D.38141>;
                <D.38140>:
                bblock.113 = cfg->cbb;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                D.30927 = bblock.113->last_ins;
                bblock.113->code = D.30927;
                <D.38141>:
              }
              {
                struct MonoInst * inst;

                D.30673 = cfg->mempool;
                inst = mono_mempool_alloc (D.30673, 80);
                inst->data.op[1].const_val = 0;
                D.38142 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.38142;
                inst->prev = 0B;
                D.38143 = inst->prev;
                inst->next = D.38143;
                inst->opcode = 455;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.38144 = inst->sreg3;
                inst->sreg2 = D.38144;
                D.38145 = inst->sreg2;
                inst->sreg1 = D.38145;
                D.30898 = cfg->ip;
                inst->cil_code = D.30898;
                inst->data.op[1].p = "NullReferenceException";
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                if (D.30927 != 0B) goto <D.38146>; else goto <D.38147>;
                <D.38146>:
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                D.30927->next = inst;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                inst->prev = D.30927;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                goto <D.38148>;
                <D.38147>:
                bblock.113 = cfg->cbb;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                D.30927 = bblock.113->last_ins;
                bblock.113->code = D.30927;
                <D.38148>:
              }
              goto <D.38149>;
              <D.38134>:
              <D.38149>:
              <D.38132>:
              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.38150 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38150;
              inst->prev = 0B;
              D.38151 = inst->prev;
              inst->next = D.38151;
              inst->opcode = 396;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38152 = inst->sreg3;
              inst->sreg2 = D.38152;
              D.38153 = inst->sreg2;
              inst->sreg1 = D.38153;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 24;
              inst->type = 1;
              D.38154 = (unsigned char) __ins_flags;
              inst->flags = D.38154;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38155>; else goto <D.38156>;
              <D.38155>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.38157>;
              <D.38156>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38157>:
            }
            goto <D.38158>;
            <D.38129>:
            {
              struct MonoInst * inst;
              int __ins_flags;

              __ins_flags = 64;
              D.38159 = __ins_flags & 32;
              if (D.38159 != 0) goto <D.38160>; else goto <D.38161>;
              <D.38160>:
              D.30660 = BIT_FIELD_REF <*cfg, 8, 5632>;
              D.31308 = D.30660 & 64;
              if (D.31308 != 0) goto <D.38162>; else goto <D.38163>;
              <D.38162>:
              {
                struct MonoInst * inst;

                D.30673 = cfg->mempool;
                inst = mono_mempool_alloc (D.30673, 80);
                inst->data.op[1].const_val = 0;
                D.38164 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.38164;
                inst->prev = 0B;
                D.38165 = inst->prev;
                inst->next = D.38165;
                inst->opcode = 323;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.38166 = inst->sreg3;
                inst->sreg2 = D.38166;
                D.38167 = inst->sreg2;
                inst->sreg1 = D.38167;
                D.30898 = cfg->ip;
                inst->cil_code = D.30898;
                inst->dreg = -1;
                inst->sreg1 = array_reg;
                inst->data.op[1].const_val = 0;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                if (D.30927 != 0B) goto <D.38168>; else goto <D.38169>;
                <D.38168>:
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                D.30927->next = inst;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                inst->prev = D.30927;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                goto <D.38170>;
                <D.38169>:
                bblock.113 = cfg->cbb;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                D.30927 = bblock.113->last_ins;
                bblock.113->code = D.30927;
                <D.38170>:
              }
              {
                struct MonoInst * inst;

                D.30673 = cfg->mempool;
                inst = mono_mempool_alloc (D.30673, 80);
                inst->data.op[1].const_val = 0;
                D.38171 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.38171;
                inst->prev = 0B;
                D.38172 = inst->prev;
                inst->next = D.38172;
                inst->opcode = 455;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.38173 = inst->sreg3;
                inst->sreg2 = D.38173;
                D.38174 = inst->sreg2;
                inst->sreg1 = D.38174;
                D.30898 = cfg->ip;
                inst->cil_code = D.30898;
                inst->data.op[1].p = "NullReferenceException";
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                if (D.30927 != 0B) goto <D.38175>; else goto <D.38176>;
                <D.38175>:
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                D.30927->next = inst;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                inst->prev = D.30927;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                goto <D.38177>;
                <D.38176>:
                bblock.113 = cfg->cbb;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                D.30927 = bblock.113->last_ins;
                bblock.113->code = D.30927;
                <D.38177>:
              }
              goto <D.38178>;
              <D.38163>:
              <D.38178>:
              <D.38161>:
              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.38179 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38179;
              inst->prev = 0B;
              D.38180 = inst->prev;
              inst->next = D.38180;
              inst->opcode = 396;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38181 = inst->sreg3;
              inst->sreg2 = D.38181;
              D.38182 = inst->sreg2;
              inst->sreg1 = D.38182;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = _length_reg;
              inst->sreg1 = array_reg;
              inst->data.op[0].const_val = 24;
              inst->type = 1;
              D.38183 = (unsigned char) __ins_flags;
              inst->flags = D.38183;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38184>; else goto <D.38185>;
              <D.38184>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.38186>;
              <D.38185>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38186>:
            }
            <D.38158>:
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.38187 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38187;
              inst->prev = 0B;
              D.38188 = inst->prev;
              inst->next = D.38188;
              inst->opcode = 322;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38189 = inst->sreg3;
              inst->sreg2 = D.38189;
              D.38190 = inst->sreg2;
              inst->sreg1 = D.38190;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = -1;
              inst->sreg1 = _length_reg;
              inst->sreg2 = index_reg;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38191>; else goto <D.38192>;
              <D.38191>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.38193>;
              <D.38192>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38193>:
            }
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.38194 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38194;
              inst->prev = 0B;
              D.38195 = inst->prev;
              inst->next = D.38195;
              inst->opcode = 463;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38196 = inst->sreg3;
              inst->sreg2 = D.38196;
              D.38197 = inst->sreg2;
              inst->sreg1 = D.38197;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->data.op[1].p = "IndexOutOfRangeException";
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38198>; else goto <D.38199>;
              <D.38198>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.38200>;
              <D.38199>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38200>:
            }
          }
          goto <D.38201>;
          <D.38126>:
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38202 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38202;
            inst->prev = 0B;
            D.38203 = inst->prev;
            inst->next = D.38203;
            inst->opcode = 1049;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38204 = inst->sreg3;
            inst->sreg2 = D.38204;
            D.38205 = inst->sreg2;
            inst->sreg1 = D.38205;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->sreg1 = array_reg;
            inst->data.op[0].const_val = 24;
            inst->sreg2 = index_reg;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38206>; else goto <D.38207>;
            <D.38206>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38208>;
            <D.38207>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38208>:
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.38209 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.38209;
              inst->prev = 0B;
              D.38210 = inst->prev;
              inst->next = D.38210;
              inst->opcode = 463;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.38211 = inst->sreg3;
              inst->sreg2 = D.38211;
              D.38212 = inst->sreg2;
              inst->sreg1 = D.38212;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->data.op[1].p = "IndexOutOfRangeException";
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38213>; else goto <D.38214>;
              <D.38213>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.38215>;
              <D.38214>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38215>:
            }
          }
          <D.38201>:
          goto <D.38216>;
          <D.38107>:
          {
            struct MonoInst * ins;

            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.38217 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.38217;
            ins->prev = 0B;
            D.38218 = ins->prev;
            ins->next = D.38218;
            ins->opcode = 788;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.38219 = ins->sreg3;
            ins->sreg2 = D.38219;
            D.38220 = ins->sreg2;
            ins->sreg1 = D.38220;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            ins->sreg1 = array_reg;
            ins->sreg2 = index_reg;
            ins->data.op[1].const_val = 24;
            D.38221 = ins->flags;
            D.38222 = D.38221 | 32;
            ins->flags = D.38222;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38223>; else goto <D.38224>;
            <D.38223>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.38225>;
            <D.38224>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38225>:
            D.31108 = cfg->flags;
            D.37909 = D.31108 | 256;
            cfg->flags = D.37909;
            bblock.113 = cfg->cbb;
            bblock.113->has_array_access = 1;
          }
          <D.38216>:
          <D.38104>:
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          klass.155 = klass;
          D.35462 = &klass.155->byval_arg;
          D.38226 = mono_type_to_load_membase (cfg, D.35462);
          D.38227 = (short unsigned int) D.38226;
          ins->opcode = D.38227;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          ins->dreg = 0;
          ins->sreg1 = array_reg;
          D.38228 = (long int) offset;
          ins->data.op[0].const_val = D.38228;
          ins->type = 1;
          klass.155 = klass;
          D.35462 = &klass.155->byval_arg;
          type_to_eval_stack_type (cfg, D.35462, ins);
          D.31426 = ins->type;
          D.31427 = (<unnamed type>) D.31426;
          D.38229 = alloc_dreg (cfg, D.31427);
          D.38230 = (int) D.38229;
          ins->dreg = D.38230;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.38231>; else goto <D.38232>;
          <D.38231>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = ins;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          ins->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          goto <D.38233>;
          <D.38232>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = ins;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.38233>:
        }
        goto <D.38234>;
        <D.38096>:
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.31680 = *sp;
        klass.155 = klass;
        addr = mini_emit_ldelema_1_ins (cfg, klass.155, D.31680, D.32789, 1);
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        klass.155 = klass;
        D.35462 = &klass.155->byval_arg;
        D.38235 = mono_type_to_load_membase (cfg, D.35462);
        D.38236 = (short unsigned int) D.38235;
        ins->opcode = D.38236;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->dreg = 0;
        D.38088 = addr->dreg;
        ins->sreg1 = D.38088;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        klass.155 = klass;
        D.35462 = &klass.155->byval_arg;
        type_to_eval_stack_type (cfg, D.35462, ins);
        D.31426 = ins->type;
        D.31427 = (<unnamed type>) D.31426;
        D.38237 = alloc_dreg (cfg, D.31427);
        D.38238 = (int) D.38237;
        ins->dreg = D.38238;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.38239>; else goto <D.38240>;
        <D.38239>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.38241>;
        <D.38240>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.38241>:
        <D.38234>:
        <D.38094>:
        sp.249 = sp;
        sp = sp.249 + 8;
        *sp.249 = ins;
        D.31560 = *ip;
        if (D.31560 == 163) goto <D.38243>; else goto <D.38244>;
        <D.38243>:
        ip = ip + 5;
        goto <D.38245>;
        <D.38244>:
        ip = ip + 1;
        <D.38245>:
        goto <D.27670>;
      }
      <D.28259>:
      <D.28260>:
      <D.28261>:
      <D.28262>:
      <D.28263>:
      <D.28264>:
      <D.28265>:
      <D.28266>:
      <D.28267>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 23) goto <D.38246>; else goto <D.38247>;
      <D.38246>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.38248>; else goto <D.38249>;
      <D.38248>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.38250>; else goto <D.38251>;
      <D.38250>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38251>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38249>:
      D.38252 = mini_get_debug_options ();
      D.38253 = D.38252->break_on_unverified;
      if (D.38253 != 0) goto <D.38254>; else goto unverified;
      <D.38254>:
      __asm__ __volatile__("int $03");
      <D.38247>:
      sp = sp + 18446744073709551592;
      D.31108 = cfg->flags;
      D.38023 = D.31108 | 4;
      cfg->flags = D.38023;
      D.31560 = *ip;
      if (D.31560 == 164) goto <D.38255>; else goto <D.38256>;
      <D.38255>:
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.38257>; else goto <D.38258>;
      <D.38257>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.38259>; else goto <D.38260>;
      <D.38259>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.38261>; else goto <D.38262>;
      <D.38261>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38262>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38260>:
      D.38263 = mini_get_debug_options ();
      D.38264 = D.38263->break_on_unverified;
      if (D.38264 != 0) goto <D.38265>; else goto unverified;
      <D.38265>:
      __asm__ __volatile__("int $03");
      <D.38258>:
      token = MEM[(const guint32 *)ip + 1B];
      klass.250 = mini_get_class (method, token, generic_context);
      klass = klass.250;
      klass.155 = klass;
      if (klass.155 == 0B) goto <D.38267>; else goto <D.38269>;
      <D.38269>:
      klass.155 = klass;
      D.35388 = klass.155->exception_type;
      if (D.35388 != 0) goto <D.38267>; else goto <D.38268>;
      <D.38267>:
      klass.155 = klass;
      cfg->exception_ptr = klass.155;
      D.38270 = mini_get_debug_options ();
      D.38271 = D.38270->break_on_unverified;
      if (D.38271 != 0) goto <D.38272>; else goto load_error;
      <D.38272>:
      __asm__ __volatile__("int $03");
      <D.38268>:
      klass.155 = klass;
      mono_class_init (klass.155);
      goto <D.38273>;
      <D.38256>:
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      klass.251 = array_access_to_klass (D.31561);
      klass = klass.251;
      <D.38273>:
      D.31680 = *sp;
      D.33383 = D.31680->type;
      if (D.33383 != 6) goto <D.38275>; else goto <D.38276>;
      <D.38275>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.38277>; else goto <D.38278>;
      <D.38277>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.38279>; else goto <D.38280>;
      <D.38279>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38280>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38278>:
      D.38281 = mini_get_debug_options ();
      D.38282 = D.38281->break_on_unverified;
      if (D.38282 != 0) goto <D.38283>; else goto unverified;
      <D.38283>:
      __asm__ __volatile__("int $03");
      <D.38276>:
      klass.155 = klass;
      emit_array_store (cfg, klass.155, sp, 1);
      D.31560 = *ip;
      if (D.31560 == 164) goto <D.38284>; else goto <D.38285>;
      <D.38284>:
      ip = ip + 5;
      goto <D.38286>;
      <D.38285>:
      ip = ip + 1;
      <D.38286>:
      inline_costs = inline_costs + 1;
      goto <D.27670>;
      <D.28268>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.38287>; else goto <D.38288>;
      <D.38287>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.38289>; else goto <D.38290>;
      <D.38289>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.38291>; else goto <D.38292>;
      <D.38291>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.38292>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.38290>:
      D.38293 = mini_get_debug_options ();
      D.38294 = D.38293->break_on_unverified;
      if (D.38294 != 0) goto <D.38295>; else goto unverified;
      <D.38295>:
      __asm__ __volatile__("int $03");
      <D.38288>:
      sp = sp + 18446744073709551608;
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 732;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.38296 = alloc_freg (cfg);
      D.38297 = (int) D.38296;
      ins->dreg = D.38297;
      ins->type = 4;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.38298>; else goto <D.38299>;
      <D.38298>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.38300>;
      <D.38299>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.38300>:
      sp.252 = sp;
      sp = sp.252 + 8;
      D.38302 = mono_decompose_opcode (cfg, ins);
      *sp.252 = D.38302;
      ip = ip + 1;
      goto <D.27670>;
      <D.28269>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;
        int klass_reg;
        int dreg;

        D.38303 = alloc_preg (cfg);
        klass_reg = (int) D.38303;
        D.38304 = alloc_preg (cfg);
        dreg = (int) D.38304;
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.38305>; else goto <D.38306>;
        <D.38305>:
        D.31560 = *ip;
        D.31561 = (int) D.31560;
        D.38307 = mono_opcode_name (D.31561);
        D.32333 = method->signature;
        D.32334 = D.32333->param_count;
        D.32335 = (int) D.32334;
        D.32336 = method->name;
        D.30609 = method->klass;
        D.32337 = D.30609->name;
        D.30609 = method->klass;
        D.32338 = D.30609->name_space;
        D.38308 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.38307, "method-to-ir.c", 10668);
        cfg->exception_message = D.38308;
        D.30753 = cfg->verbose_level;
        if (D.30753 > 1) goto <D.38309>; else goto <D.38310>;
        <D.38309>:
        D.32342 = cfg->exception_message;
        printf ("%s\n", D.32342);
        <D.38310>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38306>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.38311>; else goto <D.38312>;
        <D.38311>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.38313>; else goto <D.38314>;
        <D.38313>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.38315>; else goto <D.38316>;
        <D.38315>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38316>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38314>:
        D.38317 = mini_get_debug_options ();
        D.38318 = D.38317->break_on_unverified;
        if (D.38318 != 0) goto <D.38319>; else goto unverified;
        <D.38319>:
        __asm__ __volatile__("int $03");
        <D.38312>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        D.31560 = *ip;
        D.34336 = (short unsigned int) D.31560;
        ins->opcode = D.34336;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        sp = sp + 18446744073709551608;
        D.32104 = ip + 5;
        if (D.32104 > end) goto <D.38320>; else goto <D.38321>;
        <D.38320>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.38322>; else goto <D.38323>;
        <D.38322>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.38324>; else goto <D.38325>;
        <D.38324>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38325>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38323>:
        D.38326 = mini_get_debug_options ();
        D.38327 = D.38326->break_on_unverified;
        if (D.38327 != 0) goto <D.38328>; else goto unverified;
        <D.38328>:
        __asm__ __volatile__("int $03");
        <D.38321>:
        D.32123 = ip + 1;
        D.32124 = *D.32123;
        klass.253 = mono_class_get_full (image, D.32124, generic_context);
        klass = klass.253;
        klass.155 = klass;
        if (klass.155 == 0B) goto <D.38330>; else goto <D.38332>;
        <D.38332>:
        klass.155 = klass;
        D.35388 = klass.155->exception_type;
        if (D.35388 != 0) goto <D.38330>; else goto <D.38331>;
        <D.38330>:
        klass.155 = klass;
        cfg->exception_ptr = klass.155;
        D.38333 = mini_get_debug_options ();
        D.38334 = D.38333->break_on_unverified;
        if (D.38334 != 0) goto <D.38335>; else goto load_error;
        <D.38335>:
        __asm__ __volatile__("int $03");
        <D.38331>:
        klass.155 = klass;
        mono_class_init (klass.155);
        klass.155 = klass;
        context_used = mini_class_check_context_used (cfg, klass.155);
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        D.37056 = (unsigned int) D.31862;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.37056 < D.31781) goto <D.38337>; else goto <D.38338>;
        <D.38337>:
        D.31784 = cfg->vreg_to_inst;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        D.37059 = (long unsigned int) D.31862;
        D.37060 = D.37059 * 8;
        D.37061 = D.31784 + D.37060;
        iftmp.254 = *D.37061;
        goto <D.38339>;
        <D.38338>:
        iftmp.254 = 0B;
        <D.38339>:
        src_var = iftmp.254;
        if (src_var == 0B) goto <D.38340>; else goto <D.38341>;
        <D.38340>:
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        D.38342 = mono_defaults.typed_reference_class;
        D.38343 = &D.38342->byval_arg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.38343, 329, D.31862);
        <D.38341>:
        D.30673 = cfg->mempool;
        src = mono_mempool_alloc (D.30673, 80);
        src->data.op[1].const_val = 0;
        D.38344 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.38344;
        src->prev = 0B;
        D.38345 = src->prev;
        src->next = D.38345;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.38346 = src->sreg3;
        src->sreg2 = D.38346;
        D.38347 = src->sreg2;
        src->sreg1 = D.38347;
        D.30898 = cfg->ip;
        src->cil_code = D.30898;
        src->data.op[0].p = src_var;
        D.38348 = src_var->flags;
        D.38349 = D.38348 | 16;
        src_var->flags = D.38349;
        src->type = 5;
        D.38350 = src_var->klass;
        src->klass = D.38350;
        D.38351 = alloc_dreg (cfg, 5);
        D.38352 = (int) D.38351;
        src->dreg = D.38352;
        cfg->has_indirection = 1;
        D.30822 = cfg->gsharedvt;
        D.31766 = D.30822 != 0;
        D.31767 = (long int) D.31766;
        D.31768 = __builtin_expect (D.31767, 0);
        if (D.31768 != 0) goto <D.38353>; else goto <D.38354>;
        <D.38353>:
        D.38355 = src_var->data.op[1].vtype;
        D.38356 = mini_is_gsharedvt_variable_type (cfg, D.38355);
        if (D.38356 != 0) goto <D.38357>; else goto <D.38358>;
        <D.38357>:
        handle_gsharedvt_ldaddr (cfg);
        <D.38358>:
        <D.38354>:
        if (0 != 0) goto <D.38359>; else goto <D.38360>;
        <D.38359>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.38362 = src_var->dreg;
          D.38363 = D.38362 + 1;
          D.38364 = (unsigned int) D.38363;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.38364 < D.31781) goto <D.38365>; else goto <D.38366>;
          <D.38365>:
          D.31784 = cfg->vreg_to_inst;
          D.38362 = src_var->dreg;
          D.38367 = (sizetype) D.38362;
          D.38368 = D.38367 + 1;
          D.38369 = D.38368 * 8;
          D.38370 = D.31784 + D.38369;
          iftmp.255 = *D.38370;
          goto <D.38371>;
          <D.38366>:
          iftmp.255 = 0B;
          <D.38371>:
          var1 = iftmp.255;
          D.38362 = src_var->dreg;
          D.38373 = D.38362 + 2;
          D.38374 = (unsigned int) D.38373;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.38374 < D.31781) goto <D.38375>; else goto <D.38376>;
          <D.38375>:
          D.31784 = cfg->vreg_to_inst;
          D.38362 = src_var->dreg;
          D.38367 = (sizetype) D.38362;
          D.38377 = D.38367 + 2;
          D.38378 = D.38377 * 8;
          D.38379 = D.31784 + D.38378;
          iftmp.256 = *D.38379;
          goto <D.38380>;
          <D.38376>:
          iftmp.256 = 0B;
          <D.38380>:
          var2 = iftmp.256;
          D.38381 = var1 == 0B;
          D.38382 = (long int) D.38381;
          D.38383 = __builtin_expect (D.38382, 0);
          if (D.38383 != 0) goto <D.38384>; else goto <D.38385>;
          <D.38384>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10684, "var1");
          <D.38385>:
          D.38386 = var2 == 0B;
          D.38387 = (long int) D.38386;
          D.38388 = __builtin_expect (D.38387, 0);
          if (D.38388 != 0) goto <D.38389>; else goto <D.38390>;
          <D.38389>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10684, "var2");
          <D.38390>:
          D.38391 = var1->flags;
          D.38392 = D.38391 | 16;
          var1->flags = D.38392;
          D.38393 = var2->flags;
          D.38394 = D.38393 | 16;
          var2->flags = D.38394;
        }
        <D.38360>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.38395>; else goto <D.38396>;
        <D.38395>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = src;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        src->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = src;
        goto <D.38397>;
        <D.38396>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = src;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.38397>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.38398 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.38398;
          inst->prev = 0B;
          D.38399 = inst->prev;
          inst->next = D.38399;
          inst->opcode = 391;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.38400 = inst->sreg3;
          inst->sreg2 = D.38400;
          D.38401 = inst->sreg2;
          inst->sreg1 = D.38401;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          inst->dreg = klass_reg;
          D.38402 = src->dreg;
          inst->sreg1 = D.38402;
          inst->data.op[0].const_val = 16;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.38403>; else goto <D.38404>;
          <D.38403>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.38405>;
          <D.38404>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.38405>:
        }
        if (context_used != 0) goto <D.38406>; else goto <D.38407>;
        <D.38406>:
        {
          struct MonoInst * klass_ins;

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

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38408 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38408;
            inst->prev = 0B;
            D.38409 = inst->prev;
            inst->next = D.38409;
            inst->opcode = 322;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38410 = inst->sreg3;
            inst->sreg2 = D.38410;
            D.38411 = inst->sreg2;
            inst->sreg1 = D.38411;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->dreg = -1;
            inst->sreg1 = klass_reg;
            D.38412 = klass_ins->dreg;
            inst->sreg2 = D.38412;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38413>; else goto <D.38414>;
            <D.38413>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38415>;
            <D.38414>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38415>:
          }
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38416 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38416;
            inst->prev = 0B;
            D.38417 = inst->prev;
            inst->next = D.38417;
            inst->opcode = 460;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38418 = inst->sreg3;
            inst->sreg2 = D.38418;
            D.38419 = inst->sreg2;
            inst->sreg1 = D.38419;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->data.op[1].p = "InvalidCastException";
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38420>; else goto <D.38421>;
            <D.38420>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38422>;
            <D.38421>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38422>:
          }
        }
        goto <D.38423>;
        <D.38407>:
        klass.155 = klass;
        mini_emit_class_check (cfg, klass_reg, klass.155);
        <D.38423>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 391;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->dreg = dreg;
        D.38402 = src->dreg;
        ins->sreg1 = D.38402;
        ins->data.op[0].const_val = 8;
        ins->type = 1;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.38424>; else goto <D.38425>;
        <D.38424>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.38426>;
        <D.38425>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.38426>:
        ins->type = 5;
        sp.257 = sp;
        sp = sp.257 + 8;
        *sp.257 = ins;
        ip = ip + 5;
        goto <D.27670>;
      }
      <D.28280>:
      {
        struct MonoInst * loc;
        struct MonoInst * addr;

        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.38428>; else goto <D.38429>;
        <D.38428>:
        D.31560 = *ip;
        D.31561 = (int) D.31560;
        D.38430 = mono_opcode_name (D.31561);
        D.32333 = method->signature;
        D.32334 = D.32333->param_count;
        D.32335 = (int) D.32334;
        D.32336 = method->name;
        D.30609 = method->klass;
        D.32337 = D.30609->name;
        D.30609 = method->klass;
        D.32338 = D.30609->name_space;
        D.38431 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.38430, "method-to-ir.c", 10708);
        cfg->exception_message = D.38431;
        D.30753 = cfg->verbose_level;
        if (D.30753 > 1) goto <D.38432>; else goto <D.38433>;
        <D.38432>:
        D.32342 = cfg->exception_message;
        printf ("%s\n", D.32342);
        <D.38433>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38429>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.38434>; else goto <D.38435>;
        <D.38434>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.38436>; else goto <D.38437>;
        <D.38436>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.38438>; else goto <D.38439>;
        <D.38438>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38439>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38437>:
        D.38440 = mini_get_debug_options ();
        D.38441 = D.38440->break_on_unverified;
        if (D.38441 != 0) goto <D.38442>; else goto unverified;
        <D.38442>:
        __asm__ __volatile__("int $03");
        <D.38435>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        D.31560 = *ip;
        D.34336 = (short unsigned int) D.31560;
        ins->opcode = D.34336;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        sp = sp + 18446744073709551608;
        D.32104 = ip + 5;
        if (D.32104 > end) goto <D.38443>; else goto <D.38444>;
        <D.38443>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.38445>; else goto <D.38446>;
        <D.38445>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.38447>; else goto <D.38448>;
        <D.38447>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.38448>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.38446>:
        D.38449 = mini_get_debug_options ();
        D.38450 = D.38449->break_on_unverified;
        if (D.38450 != 0) goto <D.38451>; else goto unverified;
        <D.38451>:
        __asm__ __volatile__("int $03");
        <D.38444>:
        D.32123 = ip + 1;
        D.32124 = *D.32123;
        klass.258 = mono_class_get_full (image, D.32124, generic_context);
        klass = klass.258;
        klass.155 = klass;
        if (klass.155 == 0B) goto <D.38453>; else goto <D.38455>;
        <D.38455>:
        klass.155 = klass;
        D.35388 = klass.155->exception_type;
        if (D.35388 != 0) goto <D.38453>; else goto <D.38454>;
        <D.38453>:
        klass.155 = klass;
        cfg->exception_ptr = klass.155;
        D.38456 = mini_get_debug_options ();
        D.38457 = D.38456->break_on_unverified;
        if (D.38457 != 0) goto <D.38458>; else goto load_error;
        <D.38458>:
        __asm__ __volatile__("int $03");
        <D.38454>:
        klass.155 = klass;
        mono_class_init (klass.155);
        klass.155 = klass;
        context_used = mini_class_check_context_used (cfg, klass.155);
        D.38342 = mono_defaults.typed_reference_class;
        D.38343 = &D.38342->byval_arg;
        loc = mono_compile_create_var (cfg, D.38343, 329);
        D.30673 = cfg->mempool;
        addr = mono_mempool_alloc (D.30673, 80);
        addr->data.op[1].const_val = 0;
        D.38459 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.38459;
        addr->prev = 0B;
        D.38460 = addr->prev;
        addr->next = D.38460;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.38461 = addr->sreg3;
        addr->sreg2 = D.38461;
        D.38462 = addr->sreg2;
        addr->sreg1 = D.38462;
        D.30898 = cfg->ip;
        addr->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.38463 = loc->data.op[0].const_val;
        D.38464 = (long unsigned int) D.38463;
        D.38465 = D.38464 * 8;
        D.38466 = D.31416 + D.38465;
        D.38467 = *D.38466;
        addr->data.op[0].p = D.38467;
        D.31416 = cfg->varinfo;
        D.38463 = loc->data.op[0].const_val;
        D.38464 = (long unsigned int) D.38463;
        D.38465 = D.38464 * 8;
        D.38466 = D.31416 + D.38465;
        D.38467 = *D.38466;
        D.31416 = cfg->varinfo;
        D.38463 = loc->data.op[0].const_val;
        D.38464 = (long unsigned int) D.38463;
        D.38465 = D.38464 * 8;
        D.38466 = D.31416 + D.38465;
        D.38467 = *D.38466;
        D.38468 = D.38467->flags;
        D.38469 = D.38468 | 16;
        D.38467->flags = D.38469;
        addr->type = 5;
        D.31416 = cfg->varinfo;
        D.38463 = loc->data.op[0].const_val;
        D.38464 = (long unsigned int) D.38463;
        D.38465 = D.38464 * 8;
        D.38466 = D.31416 + D.38465;
        D.38467 = *D.38466;
        D.38470 = D.38467->klass;
        addr->klass = D.38470;
        D.38471 = alloc_dreg (cfg, 5);
        D.38472 = (int) D.38471;
        addr->dreg = D.38472;
        cfg->has_indirection = 1;
        D.30822 = cfg->gsharedvt;
        D.31766 = D.30822 != 0;
        D.31767 = (long int) D.31766;
        D.31768 = __builtin_expect (D.31767, 0);
        if (D.31768 != 0) goto <D.38473>; else goto <D.38474>;
        <D.38473>:
        D.31416 = cfg->varinfo;
        D.38463 = loc->data.op[0].const_val;
        D.38464 = (long unsigned int) D.38463;
        D.38465 = D.38464 * 8;
        D.38466 = D.31416 + D.38465;
        D.38467 = *D.38466;
        D.38475 = D.38467->data.op[1].vtype;
        D.38476 = mini_is_gsharedvt_variable_type (cfg, D.38475);
        if (D.38476 != 0) goto <D.38477>; else goto <D.38478>;
        <D.38477>:
        handle_gsharedvt_ldaddr (cfg);
        <D.38478>:
        <D.38474>:
        if (0 != 0) goto <D.38479>; else goto <D.38480>;
        <D.38479>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.31416 = cfg->varinfo;
          D.38463 = loc->data.op[0].const_val;
          D.38464 = (long unsigned int) D.38463;
          D.38465 = D.38464 * 8;
          D.38466 = D.31416 + D.38465;
          D.38467 = *D.38466;
          D.38482 = D.38467->dreg;
          D.38483 = D.38482 + 1;
          D.38484 = (unsigned int) D.38483;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.38484 < D.31781) goto <D.38485>; else goto <D.38486>;
          <D.38485>:
          D.31784 = cfg->vreg_to_inst;
          D.31416 = cfg->varinfo;
          D.38463 = loc->data.op[0].const_val;
          D.38464 = (long unsigned int) D.38463;
          D.38465 = D.38464 * 8;
          D.38466 = D.31416 + D.38465;
          D.38467 = *D.38466;
          D.38482 = D.38467->dreg;
          D.38487 = (sizetype) D.38482;
          D.38488 = D.38487 + 1;
          D.38489 = D.38488 * 8;
          D.38490 = D.31784 + D.38489;
          iftmp.259 = *D.38490;
          goto <D.38491>;
          <D.38486>:
          iftmp.259 = 0B;
          <D.38491>:
          var1 = iftmp.259;
          D.31416 = cfg->varinfo;
          D.38463 = loc->data.op[0].const_val;
          D.38464 = (long unsigned int) D.38463;
          D.38465 = D.38464 * 8;
          D.38466 = D.31416 + D.38465;
          D.38467 = *D.38466;
          D.38482 = D.38467->dreg;
          D.38493 = D.38482 + 2;
          D.38494 = (unsigned int) D.38493;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.38494 < D.31781) goto <D.38495>; else goto <D.38496>;
          <D.38495>:
          D.31784 = cfg->vreg_to_inst;
          D.31416 = cfg->varinfo;
          D.38463 = loc->data.op[0].const_val;
          D.38464 = (long unsigned int) D.38463;
          D.38465 = D.38464 * 8;
          D.38466 = D.31416 + D.38465;
          D.38467 = *D.38466;
          D.38482 = D.38467->dreg;
          D.38487 = (sizetype) D.38482;
          D.38497 = D.38487 + 2;
          D.38498 = D.38497 * 8;
          D.38499 = D.31784 + D.38498;
          iftmp.260 = *D.38499;
          goto <D.38500>;
          <D.38496>:
          iftmp.260 = 0B;
          <D.38500>:
          var2 = iftmp.260;
          D.38501 = var1 == 0B;
          D.38502 = (long int) D.38501;
          D.38503 = __builtin_expect (D.38502, 0);
          if (D.38503 != 0) goto <D.38504>; else goto <D.38505>;
          <D.38504>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10721, "var1");
          <D.38505>:
          D.38506 = var2 == 0B;
          D.38507 = (long int) D.38506;
          D.38508 = __builtin_expect (D.38507, 0);
          if (D.38508 != 0) goto <D.38509>; else goto <D.38510>;
          <D.38509>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10721, "var2");
          <D.38510>:
          D.38511 = var1->flags;
          D.38512 = D.38511 | 16;
          var1->flags = D.38512;
          D.38513 = var2->flags;
          D.38514 = D.38513 | 16;
          var2->flags = D.38514;
        }
        <D.38480>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.38515>; else goto <D.38516>;
        <D.38515>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = addr;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        addr->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = addr;
        goto <D.38517>;
        <D.38516>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = addr;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.38517>:
        if (context_used != 0) goto <D.38518>; else goto <D.38519>;
        <D.38518>:
        {
          struct MonoInst * const_ins;
          int type_reg;

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

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38521 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38521;
            inst->prev = 0B;
            D.38522 = inst->prev;
            inst->next = D.38522;
            inst->opcode = 378;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38523 = inst->sreg3;
            inst->sreg2 = D.38523;
            D.38524 = inst->sreg2;
            inst->sreg1 = D.38524;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            D.38525 = const_ins->dreg;
            inst->sreg1 = D.38525;
            D.38526 = addr->dreg;
            inst->dreg = D.38526;
            inst->data.op[0].const_val = 16;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38527>; else goto <D.38528>;
            <D.38527>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38529>;
            <D.38528>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38529>:
          }
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38530 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38530;
            inst->prev = 0B;
            D.38531 = inst->prev;
            inst->next = D.38531;
            inst->opcode = 433;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38532 = inst->sreg3;
            inst->sreg2 = D.38532;
            D.38533 = inst->sreg2;
            inst->sreg1 = D.38533;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->dreg = type_reg;
            D.38525 = const_ins->dreg;
            inst->sreg1 = D.38525;
            inst->data.op[1].const_val = 200;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38534>; else goto <D.38535>;
            <D.38534>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38536>;
            <D.38535>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38536>:
          }
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38537 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38537;
            inst->prev = 0B;
            D.38538 = inst->prev;
            inst->next = D.38538;
            inst->opcode = 378;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38539 = inst->sreg3;
            inst->sreg2 = D.38539;
            D.38540 = inst->sreg2;
            inst->sreg1 = D.38540;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->sreg1 = type_reg;
            D.38526 = addr->dreg;
            inst->dreg = D.38526;
            inst->data.op[0].const_val = 0;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38541>; else goto <D.38542>;
            <D.38541>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38543>;
            <D.38542>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38543>:
          }
        }
        goto <D.38544>;
        <D.38519>:
        D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.31073 = D.31072 & 64;
        if (D.31073 != 0) goto <D.38545>; else goto <D.38546>;
        <D.38545>:
        {
          int const_reg;
          int type_reg;

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

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38549 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38549;
            inst->prev = 0B;
            D.38550 = inst->prev;
            inst->next = D.38550;
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.38552>; else goto <D.38553>;
            <D.38552>:
            iftmp.261 = 736;
            goto <D.38554>;
            <D.38553>:
            iftmp.261 = 363;
            <D.38554>:
            inst->opcode = iftmp.261;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38555 = inst->sreg3;
            inst->sreg2 = D.38555;
            D.38556 = inst->sreg2;
            inst->sreg1 = D.38556;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->dreg = const_reg;
            klass.155 = klass;
            inst->data.op[0].p = klass.155;
            inst->data.op[1].const_val = 11;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38557>; else goto <D.38558>;
            <D.38557>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38559>;
            <D.38558>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38559>:
          }
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38560 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38560;
            inst->prev = 0B;
            D.38561 = inst->prev;
            inst->next = D.38561;
            inst->opcode = 378;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38562 = inst->sreg3;
            inst->sreg2 = D.38562;
            D.38563 = inst->sreg2;
            inst->sreg1 = D.38563;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->sreg1 = const_reg;
            D.38526 = addr->dreg;
            inst->dreg = D.38526;
            inst->data.op[0].const_val = 16;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38564>; else goto <D.38565>;
            <D.38564>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38566>;
            <D.38565>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38566>:
          }
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38567 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38567;
            inst->prev = 0B;
            D.38568 = inst->prev;
            inst->next = D.38568;
            inst->opcode = 433;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38569 = inst->sreg3;
            inst->sreg2 = D.38569;
            D.38570 = inst->sreg2;
            inst->sreg1 = D.38570;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->dreg = type_reg;
            inst->sreg1 = const_reg;
            inst->data.op[1].const_val = 200;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38571>; else goto <D.38572>;
            <D.38571>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38573>;
            <D.38572>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38573>:
          }
          {
            struct MonoInst * inst;

            D.30673 = cfg->mempool;
            inst = mono_mempool_alloc (D.30673, 80);
            inst->data.op[1].const_val = 0;
            D.38574 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.38574;
            inst->prev = 0B;
            D.38575 = inst->prev;
            inst->next = D.38575;
            inst->opcode = 378;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.38576 = inst->sreg3;
            inst->sreg2 = D.38576;
            D.38577 = inst->sreg2;
            inst->sreg1 = D.38577;
            D.30898 = cfg->ip;
            inst->cil_code = D.30898;
            inst->sreg1 = type_reg;
            D.38526 = addr->dreg;
            inst->dreg = D.38526;
            inst->data.op[0].const_val = 0;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.38578>; else goto <D.38579>;
            <D.38578>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = inst;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            inst->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            goto <D.38580>;
            <D.38579>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = inst;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.38580>:
          }
        }
        goto <D.38581>;
        <D.38546>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.38582 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.38582;
          inst->prev = 0B;
          D.38583 = inst->prev;
          inst->next = D.38583;
          inst->opcode = 388;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.38584 = inst->sreg3;
          inst->sreg2 = D.38584;
          D.38585 = inst->sreg2;
          inst->sreg1 = D.38585;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          D.38526 = addr->dreg;
          inst->dreg = D.38526;
          inst->data.op[0].const_val = 0;
          klass.155 = klass;
          D.35462 = &klass.155->byval_arg;
          D.38586 = (long int) D.35462;
          inst->data.op[1].const_val = D.38586;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.38587>; else goto <D.38588>;
          <D.38587>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.38589>;
          <D.38588>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.38589>:
        }
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.38590 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.38590;
          inst->prev = 0B;
          D.38591 = inst->prev;
          inst->next = D.38591;
          inst->opcode = 388;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.38592 = inst->sreg3;
          inst->sreg2 = D.38592;
          D.38593 = inst->sreg2;
          inst->sreg1 = D.38593;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          D.38526 = addr->dreg;
          inst->dreg = D.38526;
          inst->data.op[0].const_val = 16;
          klass.155 = klass;
          klass.262 = (long int) klass.155;
          inst->data.op[1].const_val = klass.262;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.38595>; else goto <D.38596>;
          <D.38595>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.38597>;
          <D.38596>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.38597>:
        }
        <D.38581>:
        <D.38544>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.38598 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.38598;
          inst->prev = 0B;
          D.38599 = inst->prev;
          inst->next = D.38599;
          inst->opcode = 378;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.38600 = inst->sreg3;
          inst->sreg2 = D.38600;
          D.38601 = inst->sreg2;
          inst->sreg1 = D.38601;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          D.31680 = *sp;
          D.31862 = D.31680->dreg;
          inst->sreg1 = D.31862;
          D.38526 = addr->dreg;
          inst->dreg = D.38526;
          inst->data.op[0].const_val = 8;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.38602>; else goto <D.38603>;
          <D.38602>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.38604>;
          <D.38603>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.38604>:
        }
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 428;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.38463 = loc->data.op[0].const_val;
        D.38464 = (long unsigned int) D.38463;
        D.38465 = D.38464 * 8;
        D.38466 = D.31416 + D.38465;
        D.38467 = *D.38466;
        D.38475 = D.38467->data.op[1].vtype;
        D.38605 = mono_type_to_regmove (cfg, D.38475);
        D.38606 = (short unsigned int) D.38605;
        ins->opcode = D.38606;
        D.31416 = cfg->varinfo;
        D.38463 = loc->data.op[0].const_val;
        D.38464 = (long unsigned int) D.38463;
        D.38465 = D.38464 * 8;
        D.38466 = D.31416 + D.38465;
        D.38467 = *D.38466;
        D.38475 = D.38467->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.38475, ins);
        D.31416 = cfg->varinfo;
        D.38463 = loc->data.op[0].const_val;
        D.38464 = (long unsigned int) D.38463;
        D.38465 = D.38464 * 8;
        D.38466 = D.31416 + D.38465;
        D.38467 = *D.38466;
        D.38470 = D.38467->klass;
        ins->klass = D.38470;
        D.31416 = cfg->varinfo;
        D.38463 = loc->data.op[0].const_val;
        D.38464 = (long unsigned int) D.38463;
        D.38465 = D.38464 * 8;
        D.38466 = D.31416 + D.38465;
        D.38467 = *D.38466;
        D.38482 = D.38467->dreg;
        ins->sreg1 = D.38482;
        D.31426 = ins->type;
        D.31427 = (<unnamed type>) D.31426;
        D.38607 = alloc_dreg (cfg, D.31427);
        D.38608 = (int) D.38607;
        ins->dreg = D.38608;
        D.31430 = ins->opcode;
        if (D.31430 == 431) goto <D.38609>; else goto <D.38610>;
        <D.38609>:
        D.31416 = cfg->varinfo;
        D.38463 = loc->data.op[0].const_val;
        D.38464 = (long unsigned int) D.38463;
        D.38465 = D.38464 * 8;
        D.38466 = D.31416 + D.38465;
        D.38467 = *D.38466;
        D.38475 = D.38467->data.op[1].vtype;
        D.38611 = mono_class_from_mono_type (D.38475);
        ins->klass = D.38611;
        <D.38610>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.38612>; else goto <D.38613>;
        <D.38612>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.38614>;
        <D.38613>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.38614>:
        ins->type = 7;
        D.38342 = mono_defaults.typed_reference_class;
        ins->klass = D.38342;
        sp.263 = sp;
        sp = sp.263 + 8;
        *sp.263 = ins;
        ip = ip + 5;
        goto <D.27670>;
      }
      <D.28299>:
      {
        void * handle;
        struct MonoClass * handle_class;

        try
          {
            sp.77 = (long int) sp;
            stack_start.78 = (long int) stack_start;
            D.31451 = sp.77 - stack_start.78;
            D.31452 = D.31451 /[ex] 8;
            D.31362 = header->max_stack;
            D.31586 = (long int) D.31362;
            if (D.31452 >= D.31586) goto <D.38616>; else goto <D.38617>;
            <D.38616>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.38618>; else goto <D.38619>;
            <D.38618>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.38620>; else goto <D.38621>;
            <D.38620>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.38621>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.38619>:
            D.38622 = mini_get_debug_options ();
            D.38623 = D.38622->break_on_unverified;
            if (D.38623 != 0) goto <D.38624>; else goto unverified;
            <D.38624>:
            __asm__ __volatile__("int $03");
            <D.38617>:
            D.32104 = ip + 5;
            if (D.32104 > end) goto <D.38625>; else goto <D.38626>;
            <D.38625>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.38627>; else goto <D.38628>;
            <D.38627>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.38629>; else goto <D.38630>;
            <D.38629>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.38630>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.38628>:
            D.38631 = mini_get_debug_options ();
            D.38632 = D.38631->break_on_unverified;
            if (D.38632 != 0) goto <D.38633>; else goto unverified;
            <D.38633>:
            __asm__ __volatile__("int $03");
            <D.38626>:
            D.32123 = ip + 1;
            D.32124 = *D.32123;
            n = (int) D.32124;
            D.30614 = BIT_FIELD_REF <*method, 8, 256>;
            D.38634 = D.30614 & 124;
            D.38635 = D.38634 == 68;
            D.38636 = D.38634 == 64;
            D.38637 = D.38635 | D.38636;
            if (D.38637 != 0) goto <D.38638>; else goto <D.38639>;
            <D.38638>:
            n.159 = (unsigned int) n;
            handle = mono_method_get_wrapper_data (method, n.159);
            D.38640 = n + 1;
            D.38641 = (unsigned int) D.38640;
            handle_class.264 = mono_method_get_wrapper_data (method, D.38641);
            handle_class = handle_class.264;
            D.38643 = mono_defaults.typehandle_class;
            handle_class.265 = handle_class;
            if (D.38643 == handle_class.265) goto <D.38645>; else goto <D.38646>;
            <D.38645>:
            handle = &MEM[(struct MonoClass *)handle].byval_arg;
            <D.38646>:
            goto <D.38647>;
            <D.38639>:
            n.161 = (unsigned int) n;
            handle = mono_ldtoken (image, n.161, &handle_class, generic_context);
            <D.38647>:
            if (handle == 0B) goto <D.38648>; else goto <D.38649>;
            <D.38648>:
            D.38650 = mini_get_debug_options ();
            D.38651 = D.38650->break_on_unverified;
            if (D.38651 != 0) goto <D.38652>; else goto load_error;
            <D.38652>:
            __asm__ __volatile__("int $03");
            <D.38649>:
            handle_class.265 = handle_class;
            mono_class_init (handle_class.265);
            D.30708 = cfg->generic_sharing_context;
            if (D.30708 != 0B) goto <D.38653>; else goto <D.38654>;
            <D.38653>:
            D.38655 = n >> 24;
            D.38656 = (unsigned int) D.38655;
            D.38657 = D.38656 + 4294967295;
            if (D.38657 <= 1) goto <D.38658>; else goto <D.38659>;
            <D.38658>:
            context_used = 0;
            goto <D.38660>;
            <D.38659>:
            D.38643 = mono_defaults.typehandle_class;
            handle_class.265 = handle_class;
            if (D.38643 == handle_class.265) goto <D.38661>; else goto <D.38662>;
            <D.38661>:
            D.38663 = mono_type_get_type (handle);
            if (D.38663 == 18) goto <D.38664>; else goto <D.38665>;
            <D.38664>:
            context_used = 0;
            goto <D.38666>;
            <D.38665>:
            D.38667 = mono_class_from_mono_type (handle);
            context_used = mini_class_check_context_used (cfg, D.38667);
            <D.38666>:
            goto <D.38668>;
            <D.38662>:
            D.38669 = mono_defaults.fieldhandle_class;
            handle_class.265 = handle_class;
            if (D.38669 == handle_class.265) goto <D.38670>; else goto <D.38671>;
            <D.38670>:
            D.38672 = MEM[(struct MonoClassField *)handle].parent;
            context_used = mini_class_check_context_used (cfg, D.38672);
            goto <D.38673>;
            <D.38671>:
            D.38674 = mono_defaults.methodhandle_class;
            handle_class.265 = handle_class;
            if (D.38674 == handle_class.265) goto <D.38675>; else goto <D.38676>;
            <D.38675>:
            context_used = mini_method_check_context_used (cfg, handle);
            goto <D.38677>;
            <D.38676>:
            monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 10795);
            <D.38677>:
            <D.38673>:
            <D.38668>:
            <D.38660>:
            <D.38654>:
            D.31070 = cfg->opt;
            D.31071 = D.31070 & 512;
            if (D.31071 != 0) goto <D.38680>; else goto <D.38678>;
            <D.38680>:
            D.30614 = BIT_FIELD_REF <*method, 8, 256>;
            D.30615 = D.30614 & 124;
            if (D.30615 != 68) goto <D.38681>; else goto <D.38678>;
            <D.38681>:
            D.30614 = BIT_FIELD_REF <*method, 8, 256>;
            D.30615 = D.30614 & 124;
            if (D.30615 != 64) goto <D.38682>; else goto <D.38678>;
            <D.38682>:
            {
              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.265 = handle_class;
                  D.38683 = &handle_class.265->byval_arg;
                  vtvar = mono_compile_create_var (cfg, D.38683, 329);
                  D.30673 = cfg->mempool;
                  D.38684 = mono_mempool_alloc (D.30673, 80);
                  iargs[0] = D.38684;
                  D.38685 = iargs[0];
                  D.38685 = iargs[0];
                  D.38685->data.op[1].const_val = 0;
                  D.38686 = D.38685->data.op[1].const_val;
                  D.38685->data.op[0].const_val = D.38686;
                  D.38685 = iargs[0];
                  D.38685 = iargs[0];
                  D.38685->prev = 0B;
                  D.38687 = D.38685->prev;
                  D.38685->next = D.38687;
                  D.38685 = iargs[0];
                  D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
                  D.31073 = D.31072 & 64;
                  if (D.31073 != 0) goto <D.38689>; else goto <D.38690>;
                  <D.38689>:
                  iftmp.266 = 736;
                  goto <D.38691>;
                  <D.38690>:
                  iftmp.266 = 363;
                  <D.38691>:
                  D.38685->opcode = iftmp.266;
                  D.38685 = iargs[0];
                  D.38685->flags = 0;
                  D.38685 = iargs[0];
                  D.38685->type = 0;
                  D.38685 = iargs[0];
                  D.38685->dreg = -1;
                  D.38685 = iargs[0];
                  D.38685 = iargs[0];
                  D.38685 = iargs[0];
                  D.38685->sreg3 = -1;
                  D.38692 = D.38685->sreg3;
                  D.38685->sreg2 = D.38692;
                  D.38693 = D.38685->sreg2;
                  D.38685->sreg1 = D.38693;
                  D.38685 = iargs[0];
                  D.30898 = cfg->ip;
                  D.38685->cil_code = D.30898;
                  D.38685 = iargs[0];
                  D.38685->data.op[0].p = image;
                  D.38685 = iargs[0];
                  D.38685->data.op[1].src = 12B;
                  D.38685 = iargs[0];
                  D.38685->type = 3;
                  D.38685 = iargs[0];
                  D.38694 = alloc_dreg (cfg, 3);
                  D.38695 = (int) D.38694;
                  D.38685->dreg = D.38695;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.38696>; else goto <D.38697>;
                  <D.38696>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.38685 = iargs[0];
                  D.30927->next = D.38685;
                  D.38685 = iargs[0];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.38685->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.38685 = iargs[0];
                  bblock.113->last_ins = D.38685;
                  goto <D.38698>;
                  <D.38697>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.38685 = iargs[0];
                  bblock.113->last_ins = D.38685;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.38698>:
                  D.30673 = cfg->mempool;
                  D.38699 = mono_mempool_alloc (D.30673, 80);
                  iargs[1] = D.38699;
                  D.38700 = iargs[1];
                  D.38700 = iargs[1];
                  D.38700->data.op[1].const_val = 0;
                  D.38701 = D.38700->data.op[1].const_val;
                  D.38700->data.op[0].const_val = D.38701;
                  D.38700 = iargs[1];
                  D.38700 = iargs[1];
                  D.38700->prev = 0B;
                  D.38702 = D.38700->prev;
                  D.38700->next = D.38702;
                  D.38700 = iargs[1];
                  D.38700->opcode = 362;
                  D.38700 = iargs[1];
                  D.38700->flags = 0;
                  D.38700 = iargs[1];
                  D.38700->type = 0;
                  D.38700 = iargs[1];
                  D.38700->dreg = -1;
                  D.38700 = iargs[1];
                  D.38700 = iargs[1];
                  D.38700 = iargs[1];
                  D.38700->sreg3 = -1;
                  D.38703 = D.38700->sreg3;
                  D.38700->sreg2 = D.38703;
                  D.38704 = D.38700->sreg2;
                  D.38700->sreg1 = D.38704;
                  D.38700 = iargs[1];
                  D.30898 = cfg->ip;
                  D.38700->cil_code = D.30898;
                  D.38700 = iargs[1];
                  D.35611 = (long int) n;
                  D.38700->data.op[0].const_val = D.35611;
                  D.38700 = iargs[1];
                  D.38700->type = 1;
                  D.38700 = iargs[1];
                  D.38705 = alloc_dreg (cfg, 1);
                  D.38706 = (int) D.38705;
                  D.38700->dreg = D.38706;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.38707>; else goto <D.38708>;
                  <D.38707>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.38700 = iargs[1];
                  D.30927->next = D.38700;
                  D.38700 = iargs[1];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.38700->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.38700 = iargs[1];
                  bblock.113->last_ins = D.38700;
                  goto <D.38709>;
                  <D.38708>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.38700 = iargs[1];
                  bblock.113->last_ins = D.38700;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.38709>:
                  if (method_context_used != 0) goto <D.38710>; else goto <D.38711>;
                  <D.38710>:
                  D.38712 = emit_get_rgctx_method (cfg, method_context_used, method, 5);
                  iargs[2] = D.38712;
                  ins = mono_emit_jit_icall (cfg, mono_ldtoken_wrapper_generic_shared, &iargs);
                  goto <D.38713>;
                  <D.38711>:
                  D.30673 = cfg->mempool;
                  D.38714 = mono_mempool_alloc (D.30673, 80);
                  iargs[2] = D.38714;
                  D.38715 = iargs[2];
                  D.38715 = iargs[2];
                  D.38715->data.op[1].const_val = 0;
                  D.38716 = D.38715->data.op[1].const_val;
                  D.38715->data.op[0].const_val = D.38716;
                  D.38715 = iargs[2];
                  D.38715 = iargs[2];
                  D.38715->prev = 0B;
                  D.38717 = D.38715->prev;
                  D.38715->next = D.38717;
                  D.38715 = iargs[2];
                  D.38715->opcode = 363;
                  D.38715 = iargs[2];
                  D.38715->flags = 0;
                  D.38715 = iargs[2];
                  D.38715->type = 0;
                  D.38715 = iargs[2];
                  D.38715->dreg = -1;
                  D.38715 = iargs[2];
                  D.38715 = iargs[2];
                  D.38715 = iargs[2];
                  D.38715->sreg3 = -1;
                  D.38718 = D.38715->sreg3;
                  D.38715->sreg2 = D.38718;
                  D.38719 = D.38715->sreg2;
                  D.38715->sreg1 = D.38719;
                  D.38715 = iargs[2];
                  D.30898 = cfg->ip;
                  D.38715->cil_code = D.30898;
                  D.38715 = iargs[2];
                  D.38715->data.op[0].p = generic_context;
                  D.38715 = iargs[2];
                  D.38715->type = 3;
                  D.38715 = iargs[2];
                  D.38720 = alloc_dreg (cfg, 3);
                  D.38721 = (int) D.38720;
                  D.38715->dreg = D.38721;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.38722>; else goto <D.38723>;
                  <D.38722>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.38715 = iargs[2];
                  D.30927->next = D.38715;
                  D.38715 = iargs[2];
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.38715->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  D.38715 = iargs[2];
                  bblock.113->last_ins = D.38715;
                  goto <D.38724>;
                  <D.38723>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  D.38715 = iargs[2];
                  bblock.113->last_ins = D.38715;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.38724>:
                  ins = mono_emit_jit_icall (cfg, mono_ldtoken_wrapper, &iargs);
                  <D.38713>:
                  D.30673 = cfg->mempool;
                  addr = mono_mempool_alloc (D.30673, 80);
                  addr->data.op[1].const_val = 0;
                  D.38725 = addr->data.op[1].const_val;
                  addr->data.op[0].const_val = D.38725;
                  addr->prev = 0B;
                  D.38726 = addr->prev;
                  addr->next = D.38726;
                  addr->opcode = 314;
                  addr->flags = 0;
                  addr->type = 0;
                  addr->dreg = -1;
                  addr->sreg3 = -1;
                  D.38727 = addr->sreg3;
                  addr->sreg2 = D.38727;
                  D.38728 = addr->sreg2;
                  addr->sreg1 = D.38728;
                  D.30898 = cfg->ip;
                  addr->cil_code = D.30898;
                  D.31416 = cfg->varinfo;
                  D.38729 = vtvar->data.op[0].const_val;
                  D.38730 = (long unsigned int) D.38729;
                  D.38731 = D.38730 * 8;
                  D.38732 = D.31416 + D.38731;
                  D.38733 = *D.38732;
                  addr->data.op[0].p = D.38733;
                  D.31416 = cfg->varinfo;
                  D.38729 = vtvar->data.op[0].const_val;
                  D.38730 = (long unsigned int) D.38729;
                  D.38731 = D.38730 * 8;
                  D.38732 = D.31416 + D.38731;
                  D.38733 = *D.38732;
                  D.31416 = cfg->varinfo;
                  D.38729 = vtvar->data.op[0].const_val;
                  D.38730 = (long unsigned int) D.38729;
                  D.38731 = D.38730 * 8;
                  D.38732 = D.31416 + D.38731;
                  D.38733 = *D.38732;
                  D.38734 = D.38733->flags;
                  D.38735 = D.38734 | 16;
                  D.38733->flags = D.38735;
                  addr->type = 5;
                  D.31416 = cfg->varinfo;
                  D.38729 = vtvar->data.op[0].const_val;
                  D.38730 = (long unsigned int) D.38729;
                  D.38731 = D.38730 * 8;
                  D.38732 = D.31416 + D.38731;
                  D.38733 = *D.38732;
                  D.38736 = D.38733->klass;
                  addr->klass = D.38736;
                  D.38737 = alloc_dreg (cfg, 5);
                  D.38738 = (int) D.38737;
                  addr->dreg = D.38738;
                  cfg->has_indirection = 1;
                  D.30822 = cfg->gsharedvt;
                  D.31766 = D.30822 != 0;
                  D.31767 = (long int) D.31766;
                  D.31768 = __builtin_expect (D.31767, 0);
                  if (D.31768 != 0) goto <D.38739>; else goto <D.38740>;
                  <D.38739>:
                  D.31416 = cfg->varinfo;
                  D.38729 = vtvar->data.op[0].const_val;
                  D.38730 = (long unsigned int) D.38729;
                  D.38731 = D.38730 * 8;
                  D.38732 = D.31416 + D.38731;
                  D.38733 = *D.38732;
                  D.38741 = D.38733->data.op[1].vtype;
                  D.38742 = mini_is_gsharedvt_variable_type (cfg, D.38741);
                  if (D.38742 != 0) goto <D.38743>; else goto <D.38744>;
                  <D.38743>:
                  handle_gsharedvt_ldaddr (cfg);
                  <D.38744>:
                  <D.38740>:
                  if (0 != 0) goto <D.38745>; else goto <D.38746>;
                  <D.38745>:
                  {
                    struct MonoInst * var1;
                    struct MonoInst * var2;

                    D.31416 = cfg->varinfo;
                    D.38729 = vtvar->data.op[0].const_val;
                    D.38730 = (long unsigned int) D.38729;
                    D.38731 = D.38730 * 8;
                    D.38732 = D.31416 + D.38731;
                    D.38733 = *D.38732;
                    D.38748 = D.38733->dreg;
                    D.38749 = D.38748 + 1;
                    D.38750 = (unsigned int) D.38749;
                    D.31781 = cfg->vreg_to_inst_len;
                    if (D.38750 < D.31781) goto <D.38751>; else goto <D.38752>;
                    <D.38751>:
                    D.31784 = cfg->vreg_to_inst;
                    D.31416 = cfg->varinfo;
                    D.38729 = vtvar->data.op[0].const_val;
                    D.38730 = (long unsigned int) D.38729;
                    D.38731 = D.38730 * 8;
                    D.38732 = D.31416 + D.38731;
                    D.38733 = *D.38732;
                    D.38748 = D.38733->dreg;
                    D.38753 = (sizetype) D.38748;
                    D.38754 = D.38753 + 1;
                    D.38755 = D.38754 * 8;
                    D.38756 = D.31784 + D.38755;
                    iftmp.267 = *D.38756;
                    goto <D.38757>;
                    <D.38752>:
                    iftmp.267 = 0B;
                    <D.38757>:
                    var1 = iftmp.267;
                    D.31416 = cfg->varinfo;
                    D.38729 = vtvar->data.op[0].const_val;
                    D.38730 = (long unsigned int) D.38729;
                    D.38731 = D.38730 * 8;
                    D.38732 = D.31416 + D.38731;
                    D.38733 = *D.38732;
                    D.38748 = D.38733->dreg;
                    D.38759 = D.38748 + 2;
                    D.38760 = (unsigned int) D.38759;
                    D.31781 = cfg->vreg_to_inst_len;
                    if (D.38760 < D.31781) goto <D.38761>; else goto <D.38762>;
                    <D.38761>:
                    D.31784 = cfg->vreg_to_inst;
                    D.31416 = cfg->varinfo;
                    D.38729 = vtvar->data.op[0].const_val;
                    D.38730 = (long unsigned int) D.38729;
                    D.38731 = D.38730 * 8;
                    D.38732 = D.31416 + D.38731;
                    D.38733 = *D.38732;
                    D.38748 = D.38733->dreg;
                    D.38753 = (sizetype) D.38748;
                    D.38763 = D.38753 + 2;
                    D.38764 = D.38763 * 8;
                    D.38765 = D.31784 + D.38764;
                    iftmp.268 = *D.38765;
                    goto <D.38766>;
                    <D.38762>:
                    iftmp.268 = 0B;
                    <D.38766>:
                    var2 = iftmp.268;
                    D.38767 = var1 == 0B;
                    D.38768 = (long int) D.38767;
                    D.38769 = __builtin_expect (D.38768, 0);
                    if (D.38769 != 0) goto <D.38770>; else goto <D.38771>;
                    <D.38770>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10818, "var1");
                    <D.38771>:
                    D.38772 = var2 == 0B;
                    D.38773 = (long int) D.38772;
                    D.38774 = __builtin_expect (D.38773, 0);
                    if (D.38774 != 0) goto <D.38775>; else goto <D.38776>;
                    <D.38775>:
                    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10818, "var2");
                    <D.38776>:
                    D.38777 = var1->flags;
                    D.38778 = D.38777 | 16;
                    var1->flags = D.38778;
                    D.38779 = var2->flags;
                    D.38780 = D.38779 | 16;
                    var2->flags = D.38780;
                  }
                  <D.38746>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.38781>; else goto <D.38782>;
                  <D.38781>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.30927->next = addr;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  addr->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = addr;
                  goto <D.38783>;
                  <D.38782>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = addr;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.38783>:
                  {
                    struct MonoInst * inst;

                    D.30673 = cfg->mempool;
                    inst = mono_mempool_alloc (D.30673, 80);
                    inst->data.op[1].const_val = 0;
                    D.38784 = inst->data.op[1].const_val;
                    inst->data.op[0].const_val = D.38784;
                    inst->prev = 0B;
                    D.38785 = inst->prev;
                    inst->next = D.38785;
                    inst->opcode = 374;
                    inst->flags = 0;
                    inst->type = 0;
                    inst->dreg = -1;
                    inst->sreg3 = -1;
                    D.38786 = inst->sreg3;
                    inst->sreg2 = D.38786;
                    D.38787 = inst->sreg2;
                    inst->sreg1 = D.38787;
                    D.30898 = cfg->ip;
                    inst->cil_code = D.30898;
                    D.31092 = ins->dreg;
                    inst->sreg1 = D.31092;
                    D.38788 = addr->dreg;
                    inst->dreg = D.38788;
                    inst->data.op[0].const_val = 0;
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    if (D.30927 != 0B) goto <D.38789>; else goto <D.38790>;
                    <D.38789>:
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    D.30927->next = inst;
                    bblock.113 = cfg->cbb;
                    D.30927 = bblock.113->last_ins;
                    inst->prev = D.30927;
                    bblock.113 = cfg->cbb;
                    bblock.113->last_ins = inst;
                    goto <D.38791>;
                    <D.38790>:
                    bblock.113 = cfg->cbb;
                    bblock.113 = cfg->cbb;
                    bblock.113->last_ins = inst;
                    D.30927 = bblock.113->last_ins;
                    bblock.113->code = D.30927;
                    <D.38791>:
                  }
                  D.30673 = cfg->mempool;
                  ins = mono_mempool_alloc (D.30673, 80);
                  ins->data.op[1].const_val = 0;
                  D.30894 = ins->data.op[1].const_val;
                  ins->data.op[0].const_val = D.30894;
                  ins->prev = 0B;
                  D.30895 = ins->prev;
                  ins->next = D.30895;
                  ins->opcode = 428;
                  ins->flags = 0;
                  ins->type = 0;
                  ins->dreg = -1;
                  ins->sreg3 = -1;
                  D.30896 = ins->sreg3;
                  ins->sreg2 = D.30896;
                  D.30897 = ins->sreg2;
                  ins->sreg1 = D.30897;
                  D.30898 = cfg->ip;
                  ins->cil_code = D.30898;
                  D.31416 = cfg->varinfo;
                  D.38729 = vtvar->data.op[0].const_val;
                  D.38730 = (long unsigned int) D.38729;
                  D.38731 = D.38730 * 8;
                  D.38732 = D.31416 + D.38731;
                  D.38733 = *D.38732;
                  D.38741 = D.38733->data.op[1].vtype;
                  D.38792 = mono_type_to_regmove (cfg, D.38741);
                  D.38793 = (short unsigned int) D.38792;
                  ins->opcode = D.38793;
                  D.31416 = cfg->varinfo;
                  D.38729 = vtvar->data.op[0].const_val;
                  D.38730 = (long unsigned int) D.38729;
                  D.38731 = D.38730 * 8;
                  D.38732 = D.31416 + D.38731;
                  D.38733 = *D.38732;
                  D.38741 = D.38733->data.op[1].vtype;
                  type_to_eval_stack_type (cfg, D.38741, ins);
                  D.31416 = cfg->varinfo;
                  D.38729 = vtvar->data.op[0].const_val;
                  D.38730 = (long unsigned int) D.38729;
                  D.38731 = D.38730 * 8;
                  D.38732 = D.31416 + D.38731;
                  D.38733 = *D.38732;
                  D.38736 = D.38733->klass;
                  ins->klass = D.38736;
                  D.31416 = cfg->varinfo;
                  D.38729 = vtvar->data.op[0].const_val;
                  D.38730 = (long unsigned int) D.38729;
                  D.38731 = D.38730 * 8;
                  D.38732 = D.31416 + D.38731;
                  D.38733 = *D.38732;
                  D.38748 = D.38733->dreg;
                  ins->sreg1 = D.38748;
                  D.31426 = ins->type;
                  D.31427 = (<unnamed type>) D.31426;
                  D.38794 = alloc_dreg (cfg, D.31427);
                  D.38795 = (int) D.38794;
                  ins->dreg = D.38795;
                  D.31430 = ins->opcode;
                  if (D.31430 == 431) goto <D.38796>; else goto <D.38797>;
                  <D.38796>:
                  D.31416 = cfg->varinfo;
                  D.38729 = vtvar->data.op[0].const_val;
                  D.38730 = (long unsigned int) D.38729;
                  D.38731 = D.38730 * 8;
                  D.38732 = D.31416 + D.38731;
                  D.38733 = *D.38732;
                  D.38741 = D.38733->data.op[1].vtype;
                  D.38798 = mono_class_from_mono_type (D.38741);
                  ins->klass = D.38798;
                  <D.38797>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.38799>; else goto <D.38800>;
                  <D.38799>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.30927->next = ins;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  ins->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = ins;
                  goto <D.38801>;
                  <D.38800>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = ins;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.38801>:
                }
              finally
                {
                  iargs = {CLOBBER};
                }
            }
            goto <D.38679>;
            <D.38678>:
            D.32104 = ip + 5;
            if (D.32104 < end) goto <D.38804>; else goto <D.38802>;
            <D.38804>:
            D.33574 = ip + 5;
            bblock.70 = bblock;
            D.38805 = ip_in_bb (cfg, bblock.70, D.33574);
            if (D.38805 != 0) goto <D.38806>; else goto <D.38802>;
            <D.38806>:
            D.32104 = ip + 5;
            D.38807 = *D.32104;
            D.38808 = D.38807 == 40;
            D.38809 = D.38807 == 111;
            D.38810 = D.38808 | D.38809;
            if (D.38810 != 0) goto <D.38811>; else goto <D.38802>;
            <D.38811>:
            D.35481 = ip + 6;
            D.35482 = *D.35481;
            cmethod = mini_get_method (cfg, method, D.35482, 0B, generic_context);
            if (cmethod != 0B) goto <D.38812>; else goto <D.38802>;
            <D.38812>:
            D.32528 = cmethod->klass;
            D.38813 = mono_defaults.systemtype_class;
            if (D.32528 == D.38813) goto <D.38814>; else goto <D.38802>;
            <D.38814>:
            {
              size_t __s1_len;
              size_t __s2_len;

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

                __s2 = cmethod->name;
                D.38818 = "GetTypeFromHandle";
                D.38819 = MEM[(const unsigned char *)D.38818];
                D.38820 = (int) D.38819;
                D.38821 = *__s2;
                D.38822 = (int) D.38821;
                __result = D.38820 - D.38822;
                {
                  D.38823 = __s2_len != 0;
                  D.38824 = __result == 0;
                  D.38825 = D.38823 & D.38824;
                  if (D.38825 != 0) goto <D.38826>; else goto <D.38827>;
                  <D.38826>:
                  D.38828 = &MEM[(void *)"GetTypeFromHandle" + 1B];
                  D.38829 = *D.38828;
                  D.38830 = (int) D.38829;
                  D.38831 = __s2 + 1;
                  D.38832 = *D.38831;
                  D.38833 = (int) D.38832;
                  __result = D.38830 - D.38833;
                  D.38834 = __s2_len > 1;
                  D.38824 = __result == 0;
                  D.38835 = D.38834 & D.38824;
                  if (D.38835 != 0) goto <D.38836>; else goto <D.38837>;
                  <D.38836>:
                  D.38838 = &MEM[(void *)"GetTypeFromHandle" + 2B];
                  D.38839 = *D.38838;
                  D.38840 = (int) D.38839;
                  D.38841 = __s2 + 2;
                  D.38842 = *D.38841;
                  D.38843 = (int) D.38842;
                  __result = D.38840 - D.38843;
                  D.38844 = __s2_len > 2;
                  D.38824 = __result == 0;
                  D.38845 = D.38844 & D.38824;
                  if (D.38845 != 0) goto <D.38846>; else goto <D.38847>;
                  <D.38846>:
                  D.38848 = &MEM[(void *)"GetTypeFromHandle" + 3B];
                  D.38849 = *D.38848;
                  D.38850 = (int) D.38849;
                  D.38851 = __s2 + 3;
                  D.38852 = *D.38851;
                  D.38853 = (int) D.38852;
                  __result = D.38850 - D.38853;
                  <D.38847>:
                  <D.38837>:
                  <D.38827>:
                }
                D.28316 = __result;
              }
              iftmp.269 = -D.28316;
              goto <D.38854>;
              <D.38817>:
              D.33049 = cmethod->name;
              iftmp.269 = __builtin_strcmp (D.33049, "GetTypeFromHandle");
              <D.38854>:
              D.28317 = iftmp.269;
            }
            if (D.28317 == 0) goto <D.38855>; else goto <D.38802>;
            <D.38855>:
            {
              struct MonoClass * tclass;

              tclass = mono_class_from_mono_type (handle);
              mono_class_init (tclass);
              if (context_used != 0) goto <D.38856>; else goto <D.38857>;
              <D.38856>:
              ins = emit_get_rgctx_klass (cfg, context_used, tclass, 4);
              goto <D.38858>;
              <D.38857>:
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.38859>; else goto <D.38860>;
              <D.38859>:
              D.30614 = BIT_FIELD_REF <*method, 8, 256>;
              D.30615 = D.30614 & 124;
              if (D.30615 != 0) goto <D.38861>; else goto <D.38862>;
              <D.38861>:
              D.38865 = tclass->type_token;
              D.38866 = tclass->image;
              D.38867 = mono_class_get (D.38866, D.38865);
              if (D.38867 == tclass) goto <D.38868>; else goto <D.38863>;
              <D.38868>:
              if (generic_context == 0B) goto <D.38869>; else goto <D.38863>;
              <D.38869>:
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 736;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              D.38865 = tclass->type_token;
              D.38866 = tclass->image;
              D.30673 = cfg->mempool;
              D.38870 = mono_jump_info_token_new2 (D.30673, D.38866, D.38865, generic_context);
              ins->data.op[0].p = D.38870;
              ins->data.op[1].p = 19B;
              ins->type = 6;
              D.38871 = mono_defaults.monotype_class;
              ins->klass = D.38871;
              D.38872 = alloc_dreg (cfg, 6);
              D.38873 = (int) D.38872;
              ins->dreg = D.38873;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38874>; else goto <D.38875>;
              <D.38874>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.38876>;
              <D.38875>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38876>:
              goto <D.38864>;
              <D.38863>:
              D.30753 = cfg->verbose_level;
              if (D.30753 > 1) goto <D.38877>; else goto <D.38878>;
              <D.38877>:
              printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 10842);
              <D.38878>:
              cfg->disable_aot = 1;
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 363;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              ins->data.op[0].p = 0B;
              ins->type = 3;
              D.38879 = alloc_dreg (cfg, 3);
              D.38880 = (int) D.38879;
              ins->dreg = D.38880;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38881>; else goto <D.38882>;
              <D.38881>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.38883>;
              <D.38882>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38883>:
              <D.38864>:
              goto <D.38884>;
              <D.38862>:
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 736;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              n.159 = (unsigned int) n;
              D.30673 = cfg->mempool;
              D.38885 = mono_jump_info_token_new2 (D.30673, image, n.159, generic_context);
              ins->data.op[0].p = D.38885;
              ins->data.op[1].p = 19B;
              ins->type = 6;
              D.38871 = mono_defaults.monotype_class;
              ins->klass = D.38871;
              D.38886 = alloc_dreg (cfg, 6);
              D.38887 = (int) D.38886;
              ins->dreg = D.38887;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38888>; else goto <D.38889>;
              <D.38888>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.38890>;
              <D.38889>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38890>:
              <D.38884>:
              goto <D.38891>;
              <D.38860>:
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 363;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              D.30697 = cfg->domain;
              D.38892 = mono_type_get_object (D.30697, handle);
              ins->data.op[0].p = D.38892;
              ins->type = 3;
              D.38893 = alloc_dreg (cfg, 3);
              D.38894 = (int) D.38893;
              ins->dreg = D.38894;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38895>; else goto <D.38896>;
              <D.38895>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.38897>;
              <D.38896>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38897>:
              <D.38891>:
              <D.38858>:
              ins->type = 6;
              D.32528 = cmethod->klass;
              ins->klass = D.32528;
              ip = ip + 5;
            }
            goto <D.38803>;
            <D.38802>:
            {
              struct MonoInst * addr;
              struct MonoInst * vtvar;

              handle_class.265 = handle_class;
              D.38683 = &handle_class.265->byval_arg;
              vtvar = mono_compile_create_var (cfg, D.38683, 329);
              if (context_used != 0) goto <D.38898>; else goto <D.38899>;
              <D.38898>:
              D.38643 = mono_defaults.typehandle_class;
              handle_class.265 = handle_class;
              if (D.38643 == handle_class.265) goto <D.38900>; else goto <D.38901>;
              <D.38900>:
              D.38902 = mono_class_from_mono_type (handle);
              ins = emit_get_rgctx_klass (cfg, context_used, D.38902, 3);
              goto <D.38903>;
              <D.38901>:
              D.38674 = mono_defaults.methodhandle_class;
              handle_class.265 = handle_class;
              if (D.38674 == handle_class.265) goto <D.38904>; else goto <D.38905>;
              <D.38904>:
              ins = emit_get_rgctx_method (cfg, context_used, handle, 5);
              goto <D.38906>;
              <D.38905>:
              D.38669 = mono_defaults.fieldhandle_class;
              handle_class.265 = handle_class;
              if (D.38669 == handle_class.265) goto <D.38907>; else goto <D.38908>;
              <D.38907>:
              ins = emit_get_rgctx_field (cfg, context_used, handle, 7);
              goto <D.38909>;
              <D.38908>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 10871);
              <D.38909>:
              <D.38906>:
              <D.38903>:
              goto <D.38910>;
              <D.38899>:
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.31073 = D.31072 & 64;
              if (D.31073 != 0) goto <D.38911>; else goto <D.38912>;
              <D.38911>:
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 736;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              n.159 = (unsigned int) n;
              D.30673 = cfg->mempool;
              D.38913 = mono_jump_info_token_new2 (D.30673, image, n.159, generic_context);
              ins->data.op[0].p = D.38913;
              ins->data.op[1].p = 18B;
              ins->type = 3;
              ins->klass = 0B;
              D.38914 = alloc_dreg (cfg, 3);
              D.38915 = (int) D.38914;
              ins->dreg = D.38915;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38916>; else goto <D.38917>;
              <D.38916>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.38918>;
              <D.38917>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38918>:
              goto <D.38919>;
              <D.38912>:
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 363;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              ins->data.op[0].p = handle;
              ins->type = 3;
              D.38920 = alloc_dreg (cfg, 3);
              D.38921 = (int) D.38920;
              ins->dreg = D.38921;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38922>; else goto <D.38923>;
              <D.38922>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.38924>;
              <D.38923>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38924>:
              <D.38919>:
              <D.38910>:
              D.30673 = cfg->mempool;
              addr = mono_mempool_alloc (D.30673, 80);
              addr->data.op[1].const_val = 0;
              D.38925 = addr->data.op[1].const_val;
              addr->data.op[0].const_val = D.38925;
              addr->prev = 0B;
              D.38926 = addr->prev;
              addr->next = D.38926;
              addr->opcode = 314;
              addr->flags = 0;
              addr->type = 0;
              addr->dreg = -1;
              addr->sreg3 = -1;
              D.38927 = addr->sreg3;
              addr->sreg2 = D.38927;
              D.38928 = addr->sreg2;
              addr->sreg1 = D.38928;
              D.30898 = cfg->ip;
              addr->cil_code = D.30898;
              D.31416 = cfg->varinfo;
              D.38929 = vtvar->data.op[0].const_val;
              D.38930 = (long unsigned int) D.38929;
              D.38931 = D.38930 * 8;
              D.38932 = D.31416 + D.38931;
              D.38933 = *D.38932;
              addr->data.op[0].p = D.38933;
              D.31416 = cfg->varinfo;
              D.38929 = vtvar->data.op[0].const_val;
              D.38930 = (long unsigned int) D.38929;
              D.38931 = D.38930 * 8;
              D.38932 = D.31416 + D.38931;
              D.38933 = *D.38932;
              D.31416 = cfg->varinfo;
              D.38929 = vtvar->data.op[0].const_val;
              D.38930 = (long unsigned int) D.38929;
              D.38931 = D.38930 * 8;
              D.38932 = D.31416 + D.38931;
              D.38933 = *D.38932;
              D.38934 = D.38933->flags;
              D.38935 = D.38934 | 16;
              D.38933->flags = D.38935;
              addr->type = 5;
              D.31416 = cfg->varinfo;
              D.38929 = vtvar->data.op[0].const_val;
              D.38930 = (long unsigned int) D.38929;
              D.38931 = D.38930 * 8;
              D.38932 = D.31416 + D.38931;
              D.38933 = *D.38932;
              D.38936 = D.38933->klass;
              addr->klass = D.38936;
              D.38937 = alloc_dreg (cfg, 5);
              D.38938 = (int) D.38937;
              addr->dreg = D.38938;
              cfg->has_indirection = 1;
              D.30822 = cfg->gsharedvt;
              D.31766 = D.30822 != 0;
              D.31767 = (long int) D.31766;
              D.31768 = __builtin_expect (D.31767, 0);
              if (D.31768 != 0) goto <D.38939>; else goto <D.38940>;
              <D.38939>:
              D.31416 = cfg->varinfo;
              D.38929 = vtvar->data.op[0].const_val;
              D.38930 = (long unsigned int) D.38929;
              D.38931 = D.38930 * 8;
              D.38932 = D.31416 + D.38931;
              D.38933 = *D.38932;
              D.38941 = D.38933->data.op[1].vtype;
              D.38942 = mini_is_gsharedvt_variable_type (cfg, D.38941);
              if (D.38942 != 0) goto <D.38943>; else goto <D.38944>;
              <D.38943>:
              handle_gsharedvt_ldaddr (cfg);
              <D.38944>:
              <D.38940>:
              if (0 != 0) goto <D.38945>; else goto <D.38946>;
              <D.38945>:
              {
                struct MonoInst * var1;
                struct MonoInst * var2;

                D.31416 = cfg->varinfo;
                D.38929 = vtvar->data.op[0].const_val;
                D.38930 = (long unsigned int) D.38929;
                D.38931 = D.38930 * 8;
                D.38932 = D.31416 + D.38931;
                D.38933 = *D.38932;
                D.38948 = D.38933->dreg;
                D.38949 = D.38948 + 1;
                D.38950 = (unsigned int) D.38949;
                D.31781 = cfg->vreg_to_inst_len;
                if (D.38950 < D.31781) goto <D.38951>; else goto <D.38952>;
                <D.38951>:
                D.31784 = cfg->vreg_to_inst;
                D.31416 = cfg->varinfo;
                D.38929 = vtvar->data.op[0].const_val;
                D.38930 = (long unsigned int) D.38929;
                D.38931 = D.38930 * 8;
                D.38932 = D.31416 + D.38931;
                D.38933 = *D.38932;
                D.38948 = D.38933->dreg;
                D.38953 = (sizetype) D.38948;
                D.38954 = D.38953 + 1;
                D.38955 = D.38954 * 8;
                D.38956 = D.31784 + D.38955;
                iftmp.270 = *D.38956;
                goto <D.38957>;
                <D.38952>:
                iftmp.270 = 0B;
                <D.38957>:
                var1 = iftmp.270;
                D.31416 = cfg->varinfo;
                D.38929 = vtvar->data.op[0].const_val;
                D.38930 = (long unsigned int) D.38929;
                D.38931 = D.38930 * 8;
                D.38932 = D.31416 + D.38931;
                D.38933 = *D.38932;
                D.38948 = D.38933->dreg;
                D.38959 = D.38948 + 2;
                D.38960 = (unsigned int) D.38959;
                D.31781 = cfg->vreg_to_inst_len;
                if (D.38960 < D.31781) goto <D.38961>; else goto <D.38962>;
                <D.38961>:
                D.31784 = cfg->vreg_to_inst;
                D.31416 = cfg->varinfo;
                D.38929 = vtvar->data.op[0].const_val;
                D.38930 = (long unsigned int) D.38929;
                D.38931 = D.38930 * 8;
                D.38932 = D.31416 + D.38931;
                D.38933 = *D.38932;
                D.38948 = D.38933->dreg;
                D.38953 = (sizetype) D.38948;
                D.38963 = D.38953 + 2;
                D.38964 = D.38963 * 8;
                D.38965 = D.31784 + D.38964;
                iftmp.271 = *D.38965;
                goto <D.38966>;
                <D.38962>:
                iftmp.271 = 0B;
                <D.38966>:
                var2 = iftmp.271;
                D.38967 = var1 == 0B;
                D.38968 = (long int) D.38967;
                D.38969 = __builtin_expect (D.38968, 0);
                if (D.38969 != 0) goto <D.38970>; else goto <D.38971>;
                <D.38970>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10878, "var1");
                <D.38971>:
                D.38972 = var2 == 0B;
                D.38973 = (long int) D.38972;
                D.38974 = __builtin_expect (D.38973, 0);
                if (D.38974 != 0) goto <D.38975>; else goto <D.38976>;
                <D.38975>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10878, "var2");
                <D.38976>:
                D.38977 = var1->flags;
                D.38978 = D.38977 | 16;
                var1->flags = D.38978;
                D.38979 = var2->flags;
                D.38980 = D.38979 | 16;
                var2->flags = D.38980;
              }
              <D.38946>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38981>; else goto <D.38982>;
              <D.38981>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = addr;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              addr->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = addr;
              goto <D.38983>;
              <D.38982>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = addr;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.38983>:
              {
                struct MonoInst * inst;

                D.30673 = cfg->mempool;
                inst = mono_mempool_alloc (D.30673, 80);
                inst->data.op[1].const_val = 0;
                D.38984 = inst->data.op[1].const_val;
                inst->data.op[0].const_val = D.38984;
                inst->prev = 0B;
                D.38985 = inst->prev;
                inst->next = D.38985;
                inst->opcode = 374;
                inst->flags = 0;
                inst->type = 0;
                inst->dreg = -1;
                inst->sreg3 = -1;
                D.38986 = inst->sreg3;
                inst->sreg2 = D.38986;
                D.38987 = inst->sreg2;
                inst->sreg1 = D.38987;
                D.30898 = cfg->ip;
                inst->cil_code = D.30898;
                D.31092 = ins->dreg;
                inst->sreg1 = D.31092;
                D.38988 = addr->dreg;
                inst->dreg = D.38988;
                inst->data.op[0].const_val = 0;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                if (D.30927 != 0B) goto <D.38989>; else goto <D.38990>;
                <D.38989>:
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                D.30927->next = inst;
                bblock.113 = cfg->cbb;
                D.30927 = bblock.113->last_ins;
                inst->prev = D.30927;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                goto <D.38991>;
                <D.38990>:
                bblock.113 = cfg->cbb;
                bblock.113 = cfg->cbb;
                bblock.113->last_ins = inst;
                D.30927 = bblock.113->last_ins;
                bblock.113->code = D.30927;
                <D.38991>:
              }
              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.30894 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.30894;
              ins->prev = 0B;
              D.30895 = ins->prev;
              ins->next = D.30895;
              ins->opcode = 428;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.30896 = ins->sreg3;
              ins->sreg2 = D.30896;
              D.30897 = ins->sreg2;
              ins->sreg1 = D.30897;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              D.31416 = cfg->varinfo;
              D.38929 = vtvar->data.op[0].const_val;
              D.38930 = (long unsigned int) D.38929;
              D.38931 = D.38930 * 8;
              D.38932 = D.31416 + D.38931;
              D.38933 = *D.38932;
              D.38941 = D.38933->data.op[1].vtype;
              D.38992 = mono_type_to_regmove (cfg, D.38941);
              D.38993 = (short unsigned int) D.38992;
              ins->opcode = D.38993;
              D.31416 = cfg->varinfo;
              D.38929 = vtvar->data.op[0].const_val;
              D.38930 = (long unsigned int) D.38929;
              D.38931 = D.38930 * 8;
              D.38932 = D.31416 + D.38931;
              D.38933 = *D.38932;
              D.38941 = D.38933->data.op[1].vtype;
              type_to_eval_stack_type (cfg, D.38941, ins);
              D.31416 = cfg->varinfo;
              D.38929 = vtvar->data.op[0].const_val;
              D.38930 = (long unsigned int) D.38929;
              D.38931 = D.38930 * 8;
              D.38932 = D.31416 + D.38931;
              D.38933 = *D.38932;
              D.38936 = D.38933->klass;
              ins->klass = D.38936;
              D.31416 = cfg->varinfo;
              D.38929 = vtvar->data.op[0].const_val;
              D.38930 = (long unsigned int) D.38929;
              D.38931 = D.38930 * 8;
              D.38932 = D.31416 + D.38931;
              D.38933 = *D.38932;
              D.38948 = D.38933->dreg;
              ins->sreg1 = D.38948;
              D.31426 = ins->type;
              D.31427 = (<unnamed type>) D.31426;
              D.38994 = alloc_dreg (cfg, D.31427);
              D.38995 = (int) D.38994;
              ins->dreg = D.38995;
              D.31430 = ins->opcode;
              if (D.31430 == 431) goto <D.38996>; else goto <D.38997>;
              <D.38996>:
              D.31416 = cfg->varinfo;
              D.38929 = vtvar->data.op[0].const_val;
              D.38930 = (long unsigned int) D.38929;
              D.38931 = D.38930 * 8;
              D.38932 = D.31416 + D.38931;
              D.38933 = *D.38932;
              D.38941 = D.38933->data.op[1].vtype;
              D.38998 = mono_class_from_mono_type (D.38941);
              ins->klass = D.38998;
              <D.38997>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.38999>; else goto <D.39000>;
              <D.38999>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.39001>;
              <D.39000>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.39001>:
            }
            <D.38803>:
            <D.38679>:
            sp.272 = sp;
            sp = sp.272 + 8;
            *sp.272 = ins;
            ip = ip + 5;
            goto <D.27670>;
          }
        finally
          {
            handle_class = {CLOBBER};
          }
      }
      <D.28324>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.39003>; else goto <D.39004>;
      <D.39003>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.39005>; else goto <D.39006>;
      <D.39005>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.39007>; else goto <D.39008>;
      <D.39007>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39008>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39006>:
      D.39009 = mini_get_debug_options ();
      D.39010 = D.39009->break_on_unverified;
      if (D.39010 != 0) goto <D.39011>; else goto unverified;
      <D.39011>:
      __asm__ __volatile__("int $03");
      <D.39004>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 371;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      sp = sp + 18446744073709551608;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      ip = ip + 1;
      bblock.70 = bblock;
      bblock.70->out_of_line = 1;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.39012>; else goto <D.39013>;
      <D.39012>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.39014>;
      <D.39013>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.39014>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 802;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.39015>; else goto <D.39016>;
      <D.39015>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.39017>;
      <D.39016>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.39017>:
      sp = stack_start;
      bblock.70 = bblock;
      link_bblock (cfg, bblock.70, end_bblock);
      start_new_bblock = 1;
      goto <D.27670>;
      <D.28325>:
      if (sp != stack_start) goto <D.39018>; else goto <D.39019>;
      <D.39018>:
      emit_seq_point (cfg, method, ip, 0, 0);
      <D.39019>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 742;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.39020>; else goto <D.39021>;
      <D.39020>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.39022>;
      <D.39021>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.39022>:
      ip = ip + 1;
      start_new_bblock = 1;
      goto <D.28327>;
      <D.28326>:
      sp = sp + 18446744073709551608;
      <D.28327>:
      if (sp != stack_start) goto <D.28326>; else goto <D.28328>;
      <D.28328>:
      goto <D.27670>;
      <D.28329>:
      <D.28330>:
      {
        struct GList * handlers;

        D.31560 = *ip;
        if (D.31560 == 221) goto <D.39023>; else goto <D.39024>;
        <D.39023>:
        D.32104 = ip + 5;
        if (D.32104 > end) goto <D.39025>; else goto <D.39026>;
        <D.39025>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39027>; else goto <D.39028>;
        <D.39027>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39029>; else goto <D.39030>;
        <D.39029>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39030>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39028>:
        D.39031 = mini_get_debug_options ();
        D.39032 = D.39031->break_on_unverified;
        if (D.39032 != 0) goto <D.39033>; else goto unverified;
        <D.39033>:
        __asm__ __volatile__("int $03");
        <D.39026>:
        D.32123 = ip + 1;
        D.32124 = *D.32123;
        D.32125 = (int) D.32124;
        D.39034 = (sizetype) D.32125;
        D.39035 = D.39034 + 5;
        target = ip + D.39035;
        goto <D.39036>;
        <D.39024>:
        D.31691 = ip + 2;
        if (D.31691 > end) goto <D.39037>; else goto <D.39038>;
        <D.39037>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39039>; else goto <D.39040>;
        <D.39039>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39041>; else goto <D.39042>;
        <D.39041>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39042>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39040>:
        D.39043 = mini_get_debug_options ();
        D.39044 = D.39043->break_on_unverified;
        if (D.39044 != 0) goto <D.39045>; else goto unverified;
        <D.39045>:
        __asm__ __volatile__("int $03");
        <D.39038>:
        D.31710 = ip + 1;
        D.31711 = *D.31710;
        D.39046 = (signed char) D.31711;
        D.39047 = (sizetype) D.39046;
        D.39048 = D.39047 + 2;
        target = ip + D.39048;
        <D.39036>:
        goto <D.28333>;
        <D.28332>:
        sp = sp + 18446744073709551608;
        <D.28333>:
        if (sp != stack_start) goto <D.28332>; else goto <D.28334>;
        <D.28334>:
        i = 0;
        goto <D.28343>;
        <D.28342>:
        {
          struct MonoExceptionClause * clause;

          D.30801 = header->clauses;
          D.30802 = (long unsigned int) i;
          D.30803 = D.30802 * 32;
          clause = D.30801 + D.30803;
          D.39049 = clause->handler_offset;
          D.39050 = (long int) D.39049;
          ip.75 = (long int) ip;
          D.30821 = header->code;
          D.31371 = (long int) D.30821;
          D.31372 = ip.75 - D.31371;
          if (D.39050 <= D.31372) goto <D.39051>; else goto <D.39052>;
          <D.39051>:
          ip.75 = (long int) ip;
          D.30821 = header->code;
          D.31371 = (long int) D.30821;
          D.31372 = ip.75 - D.31371;
          D.39049 = clause->handler_offset;
          D.39053 = clause->handler_len;
          D.39054 = D.39049 + D.39053;
          D.39055 = (long int) D.39054;
          if (D.31372 < D.39055) goto <D.39056>; else goto <D.39057>;
          <D.39056>:
          D.39058 = clause->flags;
          if (D.39058 == 0) goto <D.39059>; else goto <D.39060>;
          <D.39059>:
          ip.75 = (long int) ip;
          D.30821 = header->code;
          D.31371 = (long int) D.30821;
          D.31372 = ip.75 - D.31371;
          D.31560 = *ip;
          if (D.31560 == 221) goto <D.39062>; else goto <D.39063>;
          <D.39062>:
          iftmp.273 = 5;
          goto <D.39064>;
          <D.39063>:
          iftmp.273 = 2;
          <D.39064>:
          D.39065 = D.31372 + iftmp.273;
          D.39049 = clause->handler_offset;
          D.39053 = clause->handler_len;
          D.39054 = D.39049 + D.39053;
          D.39055 = (long int) D.39054;
          if (D.39065 <= D.39055) goto <D.39066>; else goto <D.39067>;
          <D.39066>:
          D.30614 = BIT_FIELD_REF <*method, 8, 256>;
          D.30615 = D.30614 & 124;
          if (D.30615 != 16) goto <D.39068>; else goto <D.39069>;
          <D.39068>:
          {
            struct MonoInst * exc_ins;
            struct MonoBasicBlock * dont_throw;

            exc_ins = mono_emit_jit_icall (cfg, mono_thread_get_undeniable_exception, 0B);
            D.30673 = cfg->mempool;
            dont_throw = mono_mempool_alloc0 (D.30673, 296);
            D.30781 = cfg->num_bblocks;
            D.39070 = D.30781;
            D.39071 = D.39070 + 1;
            cfg->num_bblocks = D.39071;
            D.39072 = (int) D.39070;
            dont_throw->block_num = D.39072;
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.39073 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39073;
              inst->prev = 0B;
              D.39074 = inst->prev;
              inst->next = D.39074;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39075 = inst->sreg3;
              inst->sreg2 = D.39075;
              D.39076 = inst->sreg2;
              inst->sreg1 = D.39076;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = -1;
              D.39077 = exc_ins->dreg;
              inst->sreg1 = D.39077;
              inst->data.op[1].const_val = 0;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.39078>; else goto <D.39079>;
              <D.39078>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.39080>;
              <D.39079>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.39080>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.39081 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.39081;
              ins->prev = 0B;
              D.39082 = ins->prev;
              ins->next = D.39082;
              ins->opcode = 555;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.39083 = ins->sreg3;
              ins->sreg2 = D.39083;
              D.39084 = ins->sreg2;
              ins->sreg1 = D.39084;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              if (0 != 0) goto <D.39085>; else goto <D.39086>;
              <D.39085>:
              D.30673 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30673, 296);
              D.30781 = cfg->num_bblocks;
              D.39087 = D.30781;
              D.39088 = D.39087 + 1;
              cfg->num_bblocks = D.39088;
              D.39089 = (int) D.39087;
              falsebb->block_num = D.39089;
              ins->data.op[0].target_block = dont_throw;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, dont_throw);
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.39090>; else goto <D.39091>;
              <D.39090>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.39092>;
              <D.39091>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.39092>:
              D.39093 = falsebb->cil_code;
              if (D.39093 != 0B) goto <D.39094>; else goto <D.39095>;
              <D.39094>:
              D.30804 = cfg->cil_offset_to_bb;
              D.39093 = falsebb->cil_code;
              D.39096 = (long int) D.39093;
              D.30809 = cfg->cil_start;
              D.30810 = (long int) D.30809;
              D.39097 = D.39096 - D.30810;
              D.39098 = (long unsigned int) D.39097;
              D.39099 = D.39098 * 8;
              D.39100 = D.30804 + D.39099;
              *D.39100 = falsebb;
              <D.39095>:
              D.30841 = cfg->real_offset;
              falsebb->real_offset = D.30841;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.39104>; else goto <D.39101>;
              <D.39104>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.39105 = D.30927->opcode;
              D.39106 = D.39105 + 64981;
              D.39107 = D.39106 <= 9;
              D.39108 = D.39105 + 64874;
              D.39109 = D.39108 <= 9;
              D.39110 = D.39107 | D.39109;
              if (D.39110 != 0) goto <D.39102>; else goto <D.39111>;
              <D.39111>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 <= 9) goto <D.39102>; else goto <D.39101>;
              <D.39102>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              D.34850 = *D.34849;
              if (D.34850 == 0B) goto <D.39112>; else goto <D.39101>;
              <D.39112>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              *D.34849 = falsebb;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              goto <D.39103>;
              <D.39101>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 == 0B) goto <D.39113>; else goto <D.39115>;
              <D.39115>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.39116 = D.30927->opcode;
              D.39117 = D.39116 != 446;
              D.39118 = D.39116 != 763;
              D.39119 = D.39117 & D.39118;
              if (D.39119 != 0) goto <D.39120>; else goto <D.39114>;
              <D.39120>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.39121 = D.30927->opcode;
              D.39122 = D.39121 + 64981;
              D.39123 = D.39122 > 9;
              D.39124 = D.39121 + 64874;
              D.39125 = D.39124 > 9;
              D.39126 = D.39123 & D.39125;
              if (D.39126 != 0) goto <D.39127>; else goto <D.39114>;
              <D.39127>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 > 9) goto <D.39113>; else goto <D.39114>;
              <D.39113>:
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              <D.39114>:
              <D.39103>:
              bblock.113 = cfg->cbb;
              bblock.113->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.39128>;
              <D.39086>:
              D.30673 = cfg->mempool;
              D.39129 = mono_mempool_alloc (D.30673, 16);
              ins->data.op[1].many_blocks = D.39129;
              D.39130 = ins->data.op[1].many_blocks;
              *D.39130 = dont_throw;
              D.39130 = ins->data.op[1].many_blocks;
              D.39131 = D.39130 + 8;
              *D.39131 = 0B;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, dont_throw);
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.39132>; else goto <D.39133>;
              <D.39132>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.39134>;
              <D.39133>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.39134>:
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.34874 = D.31072 & 8;
              if (D.34874 == 0) goto <D.39135>; else goto <D.39136>;
              <D.39135>:
              D.30673 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30673, 296);
              D.30781 = cfg->num_bblocks;
              D.39137 = D.30781;
              D.39138 = D.39137 + 1;
              cfg->num_bblocks = D.39138;
              D.39139 = (int) D.39137;
              falsebb->block_num = D.39139;
              D.39130 = ins->data.op[1].many_blocks;
              D.39131 = D.39130 + 8;
              *D.39131 = falsebb;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              D.39093 = falsebb->cil_code;
              if (D.39093 != 0B) goto <D.39140>; else goto <D.39141>;
              <D.39140>:
              D.30804 = cfg->cil_offset_to_bb;
              D.39093 = falsebb->cil_code;
              D.39096 = (long int) D.39093;
              D.30809 = cfg->cil_start;
              D.30810 = (long int) D.30809;
              D.39097 = D.39096 - D.30810;
              D.39098 = (long unsigned int) D.39097;
              D.39099 = D.39098 * 8;
              D.39100 = D.30804 + D.39099;
              *D.39100 = falsebb;
              <D.39141>:
              D.30841 = cfg->real_offset;
              falsebb->real_offset = D.30841;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.39145>; else goto <D.39142>;
              <D.39145>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.39146 = D.30927->opcode;
              D.39147 = D.39146 + 64981;
              D.39148 = D.39147 <= 9;
              D.39149 = D.39146 + 64874;
              D.39150 = D.39149 <= 9;
              D.39151 = D.39148 | D.39150;
              if (D.39151 != 0) goto <D.39143>; else goto <D.39152>;
              <D.39152>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 <= 9) goto <D.39143>; else goto <D.39142>;
              <D.39143>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              D.34850 = *D.34849;
              if (D.34850 == 0B) goto <D.39153>; else goto <D.39142>;
              <D.39153>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              *D.34849 = falsebb;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              goto <D.39144>;
              <D.39142>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 == 0B) goto <D.39154>; else goto <D.39156>;
              <D.39156>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.39157 = D.30927->opcode;
              D.39158 = D.39157 != 446;
              D.39159 = D.39157 != 763;
              D.39160 = D.39158 & D.39159;
              if (D.39160 != 0) goto <D.39161>; else goto <D.39155>;
              <D.39161>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.39162 = D.30927->opcode;
              D.39163 = D.39162 + 64981;
              D.39164 = D.39163 > 9;
              D.39165 = D.39162 + 64874;
              D.39166 = D.39165 > 9;
              D.39167 = D.39164 & D.39166;
              if (D.39167 != 0) goto <D.39168>; else goto <D.39155>;
              <D.39168>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 > 9) goto <D.39154>; else goto <D.39155>;
              <D.39154>:
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              <D.39155>:
              <D.39144>:
              bblock.113 = cfg->cbb;
              bblock.113->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.39169>;
              <D.39136>:
              bblock.113 = cfg->cbb;
              bblock.113->extended = 1;
              <D.39169>:
              <D.39128>:
            }
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.39170 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39170;
              inst->prev = 0B;
              D.39171 = inst->prev;
              inst->next = D.39171;
              inst->opcode = 371;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39172 = inst->sreg3;
              inst->sreg2 = D.39172;
              D.39173 = inst->sreg2;
              inst->sreg1 = D.39173;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = -1;
              D.39077 = exc_ins->dreg;
              inst->sreg1 = D.39077;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.39174>; else goto <D.39175>;
              <D.39174>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.39176>;
              <D.39175>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.39176>:
            }
            D.39177 = dont_throw->cil_code;
            if (D.39177 != 0B) goto <D.39178>; else goto <D.39179>;
            <D.39178>:
            D.30804 = cfg->cil_offset_to_bb;
            D.39177 = dont_throw->cil_code;
            D.39180 = (long int) D.39177;
            D.30809 = cfg->cil_start;
            D.30810 = (long int) D.30809;
            D.39181 = D.39180 - D.30810;
            D.39182 = (long unsigned int) D.39181;
            D.39183 = D.39182 * 8;
            D.39184 = D.30804 + D.39183;
            *D.39184 = dont_throw;
            <D.39179>:
            D.30841 = cfg->real_offset;
            dont_throw->real_offset = D.30841;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.39188>; else goto <D.39185>;
            <D.39188>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.39189 = D.30927->opcode;
            D.39190 = D.39189 + 64981;
            D.39191 = D.39190 <= 9;
            D.39192 = D.39189 + 64874;
            D.39193 = D.39192 <= 9;
            D.39194 = D.39191 | D.39193;
            if (D.39194 != 0) goto <D.39186>; else goto <D.39195>;
            <D.39195>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.34846 = D.30927->opcode;
            D.34847 = D.34846 + 64884;
            if (D.34847 <= 9) goto <D.39186>; else goto <D.39185>;
            <D.39186>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.34848 = D.30927->data.op[1].many_blocks;
            D.34849 = D.34848 + 8;
            D.34850 = *D.34849;
            if (D.34850 == 0B) goto <D.39196>; else goto <D.39185>;
            <D.39196>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.34848 = D.30927->data.op[1].many_blocks;
            D.34849 = D.34848 + 8;
            *D.34849 = dont_throw;
            bblock.113 = cfg->cbb;
            mono_link_bblock (cfg, bblock.113, dont_throw);
            goto <D.39187>;
            <D.39185>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 == 0B) goto <D.39197>; else goto <D.39199>;
            <D.39199>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.39200 = D.30927->opcode;
            D.39201 = D.39200 != 446;
            D.39202 = D.39200 != 763;
            D.39203 = D.39201 & D.39202;
            if (D.39203 != 0) goto <D.39204>; else goto <D.39198>;
            <D.39204>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.39205 = D.30927->opcode;
            D.39206 = D.39205 + 64981;
            D.39207 = D.39206 > 9;
            D.39208 = D.39205 + 64874;
            D.39209 = D.39208 > 9;
            D.39210 = D.39207 & D.39209;
            if (D.39210 != 0) goto <D.39211>; else goto <D.39198>;
            <D.39211>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.34846 = D.30927->opcode;
            D.34847 = D.34846 + 64884;
            if (D.34847 > 9) goto <D.39197>; else goto <D.39198>;
            <D.39197>:
            bblock.113 = cfg->cbb;
            mono_link_bblock (cfg, bblock.113, dont_throw);
            <D.39198>:
            <D.39187>:
            bblock.113 = cfg->cbb;
            bblock.113->next_bb = dont_throw;
            cfg->cbb = dont_throw;
            bblock.113 = cfg->cbb;
            bblock = bblock.113;
          }
          <D.39069>:
          <D.39067>:
          <D.39060>:
          <D.39057>:
          <D.39052>:
        }
        i = i + 1;
        <D.28343>:
        D.30993 = header->num_clauses;
        D.30994 = (int) D.30993;
        if (D.30994 > i) goto <D.28342>; else goto <D.28344>;
        <D.28344>:
        handlers = mono_find_final_block (cfg, ip, target, 2);
        if (handlers != 0B) goto <D.39212>; else goto <D.39213>;
        <D.39212>:
        {
          struct GList * tmp;
          struct MonoExceptionClause * clause;

          tmp = handlers;
          goto <D.28349>;
          <D.28348>:
          clause = tmp->data;
          D.30804 = cfg->cil_offset_to_bb;
          D.39214 = clause->handler_offset;
          D.39215 = (long unsigned int) D.39214;
          D.39216 = D.39215 * 8;
          D.39217 = D.30804 + D.39216;
          tblock = *D.39217;
          D.39218 = tblock == 0B;
          D.39219 = (long int) D.39218;
          D.39220 = __builtin_expect (D.39219, 0);
          if (D.39220 != 0) goto <D.39221>; else goto <D.39222>;
          <D.39221>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 10988, "tblock");
          <D.39222>:
          bblock.70 = bblock;
          link_bblock (cfg, bblock.70, tblock);
          D.30673 = cfg->mempool;
          ins = mono_mempool_alloc (D.30673, 80);
          ins->data.op[1].const_val = 0;
          D.30894 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.30894;
          ins->prev = 0B;
          D.30895 = ins->prev;
          ins->next = D.30895;
          ins->opcode = 739;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.30896 = ins->sreg3;
          ins->sreg2 = D.30896;
          D.30897 = ins->sreg2;
          ins->sreg1 = D.30897;
          D.30898 = cfg->ip;
          ins->cil_code = D.30898;
          ins->data.op[0].target_block = tblock;
          ins->data.op[1].exception_clause = clause;
          bblock.70 = bblock;
          D.31015 = bblock.70->last_ins;
          if (D.31015 != 0B) goto <D.39223>; else goto <D.39224>;
          <D.39223>:
          bblock.70 = bblock;
          D.31015 = bblock.70->last_ins;
          D.31015->next = ins;
          bblock.70 = bblock;
          D.31015 = bblock.70->last_ins;
          ins->prev = D.31015;
          bblock.70 = bblock;
          bblock.70->last_ins = ins;
          goto <D.39225>;
          <D.39224>:
          bblock.70 = bblock;
          bblock.70 = bblock;
          bblock.70->last_ins = ins;
          D.31015 = bblock.70->last_ins;
          bblock.70->code = D.31015;
          <D.39225>:
          bblock.70 = bblock;
          bblock.70->has_call_handler = 1;
          if (0 != 0) goto <D.39226>; else goto <D.39227>;
          <D.39226>:
          {
            struct MonoBasicBlock * target_bb;

            D.30804 = cfg->cil_offset_to_bb;
            target.135 = (long int) target;
            D.30809 = cfg->cil_start;
            D.30810 = (long int) D.30809;
            D.34283 = target.135 - D.30810;
            D.34284 = (long unsigned int) D.34283;
            D.34285 = D.34284 * 8;
            D.34286 = D.30804 + D.34285;
            target_bb = *D.34286;
            if (target_bb == 0B) goto <D.39228>; else goto <D.39229>;
            <D.39228>:
            if (target >= end) goto <D.39230>; else goto <D.39232>;
            <D.39232>:
            D.30821 = header->code;
            if (D.30821 > target) goto <D.39230>; else goto <D.39231>;
            <D.39230>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.39233>; else goto <D.39234>;
            <D.39233>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.39235>; else goto <D.39236>;
            <D.39235>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39236>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39234>:
            D.39237 = mini_get_debug_options ();
            D.39238 = D.39237->break_on_unverified;
            if (D.39238 != 0) goto <D.39239>; else goto unverified;
            <D.39239>:
            __asm__ __volatile__("int $03");
            <D.39231>:
            D.30673 = cfg->mempool;
            target_bb = mono_mempool_alloc0 (D.30673, 296);
            D.30781 = cfg->num_bblocks;
            D.39240 = D.30781;
            D.39241 = D.39240 + 1;
            cfg->num_bblocks = D.39241;
            D.39242 = (int) D.39240;
            target_bb->block_num = D.39242;
            target_bb->cil_code = target;
            D.39243 = target_bb->cil_code;
            if (D.39243 != 0B) goto <D.39244>; else goto <D.39245>;
            <D.39244>:
            D.30804 = cfg->cil_offset_to_bb;
            D.39243 = target_bb->cil_code;
            D.39246 = (long int) D.39243;
            D.30809 = cfg->cil_start;
            D.30810 = (long int) D.30809;
            D.39247 = D.39246 - D.30810;
            D.39248 = (long unsigned int) D.39247;
            D.39249 = D.39248 * 8;
            D.39250 = D.30804 + D.39249;
            *D.39250 = target_bb;
            <D.39245>:
            D.30841 = cfg->real_offset;
            target_bb->real_offset = D.30841;
            <D.39229>:
            link_bblock (cfg, tblock, target_bb);
          }
          <D.39227>:
          tmp = tmp->next;
          <D.28349>:
          if (tmp != 0B) goto <D.28348>; else goto <D.28350>;
          <D.28350>:
          monoeg_g_list_free (handlers);
        }
        <D.39213>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.39251>; else goto <D.39252>;
        <D.39251>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.39253>;
        <D.39252>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.39253>:
        D.30804 = cfg->cil_offset_to_bb;
        target.135 = (long int) target;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.34283 = target.135 - D.30810;
        D.34284 = (long unsigned int) D.34283;
        D.34285 = D.34284 * 8;
        D.34286 = D.30804 + D.34285;
        tblock = *D.34286;
        if (tblock == 0B) goto <D.39254>; else goto <D.39255>;
        <D.39254>:
        if (target >= end) goto <D.39256>; else goto <D.39258>;
        <D.39258>:
        D.30821 = header->code;
        if (D.30821 > target) goto <D.39256>; else goto <D.39257>;
        <D.39256>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39259>; else goto <D.39260>;
        <D.39259>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39261>; else goto <D.39262>;
        <D.39261>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39262>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39260>:
        D.39263 = mini_get_debug_options ();
        D.39264 = D.39263->break_on_unverified;
        if (D.39264 != 0) goto <D.39265>; else goto unverified;
        <D.39265>:
        __asm__ __volatile__("int $03");
        <D.39257>:
        D.30673 = cfg->mempool;
        tblock = mono_mempool_alloc0 (D.30673, 296);
        D.30781 = cfg->num_bblocks;
        D.39266 = D.30781;
        D.39267 = D.39266 + 1;
        cfg->num_bblocks = D.39267;
        D.39268 = (int) D.39266;
        tblock->block_num = D.39268;
        tblock->cil_code = target;
        D.30871 = tblock->cil_code;
        if (D.30871 != 0B) goto <D.39269>; else goto <D.39270>;
        <D.39269>:
        D.30804 = cfg->cil_offset_to_bb;
        D.30871 = tblock->cil_code;
        D.30874 = (long int) D.30871;
        D.30809 = cfg->cil_start;
        D.30810 = (long int) D.30809;
        D.30875 = D.30874 - D.30810;
        D.30876 = (long unsigned int) D.30875;
        D.30877 = D.30876 * 8;
        D.30878 = D.30804 + D.30877;
        *D.30878 = tblock;
        <D.39270>:
        D.30841 = cfg->real_offset;
        tblock->real_offset = D.30841;
        <D.39255>:
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, tblock);
        ins->data.op[0].target_block = tblock;
        start_new_bblock = 1;
        D.31560 = *ip;
        if (D.31560 == 221) goto <D.39271>; else goto <D.39272>;
        <D.39271>:
        ip = ip + 5;
        goto <D.39273>;
        <D.39272>:
        ip = ip + 2;
        <D.39273>:
        goto <D.27670>;
      }
      <D.28351>:
      D.30614 = BIT_FIELD_REF <*method, 8, 256>;
      D.30615 = D.30614 & 124;
      D.39274 = D.30615 == 0;
      D.39275 = (long int) D.39274;
      D.39276 = __builtin_expect (D.39275, 0);
      if (D.39276 != 0) goto <D.39277>; else goto <D.39278>;
      <D.39277>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11030, "method->wrapper_type != MONO_WRAPPER_NONE");
      <D.39278>:
      D.31691 = ip + 2;
      if (D.31691 > end) goto <D.39279>; else goto <D.39280>;
      <D.39279>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.39281>; else goto <D.39282>;
      <D.39281>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.39283>; else goto <D.39284>;
      <D.39283>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39284>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39282>:
      D.39285 = mini_get_debug_options ();
      D.39286 = D.39285->break_on_unverified;
      if (D.39286 != 0) goto <D.39287>; else goto unverified;
      <D.39287>:
      __asm__ __volatile__("int $03");
      <D.39280>:
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      D.32019 = (int) D.31711;
      switch (D.32019) <default: <D.28410>, case 0: <D.28352>, case 1: <D.28373>, case 2: <D.28357>, case 3: <D.28365>, case 4: <D.28370>, case 5: <D.28380>, case 6: <D.28374>, case 7: <D.28383>, case 8: <D.28384>, case 9: <D.28386>, case 10: <D.28387>, case 11: <D.28388>, case 12: <D.28389>, case 13: <D.28390>, case 14: <D.28362>, case 15: <D.28392>, case 16: <D.28394>, case 17: <D.28395>, case 18: <D.28408>, case 19: <D.28359>>
      <D.28352>:
      {
        void * func;
        struct MonoJitICallInfo * info;

        token = MEM[(const guint32 *)ip + 2B];
        func = mono_method_get_wrapper_data (method, token);
        info = mono_find_jit_icall_by_addr (func);
        if (info == 0B) goto <D.39288>; else goto <D.39289>;
        <D.39288>:
        D.39290 = mono_method_full_name (method, 1);
        monoeg_g_log (0B, 4, "Could not find icall address in wrapper %s", D.39290);
        <D.28355>:
        goto <D.28355>;
        <D.39289>:
        D.39291 = info == 0B;
        D.39292 = (long int) D.39291;
        D.39293 = __builtin_expect (D.39292, 0);
        if (D.39293 != 0) goto <D.39294>; else goto <D.39295>;
        <D.39294>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11043, "info");
        <D.39295>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.39296 = info->sig;
        D.39297 = D.39296->param_count;
        D.39298 = (long int) D.39297;
        if (D.31452 < D.39298) goto <D.39299>; else goto <D.39300>;
        <D.39299>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39301>; else goto <D.39302>;
        <D.39301>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39303>; else goto <D.39304>;
        <D.39303>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39304>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39302>:
        D.39305 = mini_get_debug_options ();
        D.39306 = D.39305->break_on_unverified;
        if (D.39306 != 0) goto <D.39307>; else goto unverified;
        <D.39307>:
        __asm__ __volatile__("int $03");
        <D.39300>:
        D.39296 = info->sig;
        D.39297 = D.39296->param_count;
        D.39308 = (long unsigned int) D.39297;
        D.39309 = D.39308 * 8;
        D.39310 = -D.39309;
        sp = sp + D.39310;
        D.39311 = info->func;
        ins = mono_emit_jit_icall (cfg, D.39311, sp);
        D.39296 = info->sig;
        D.39312 = D.39296->ret;
        D.39313 = mono_type_is_void (D.39312);
        if (D.39313 == 0) goto <D.39314>; else goto <D.39315>;
        <D.39314>:
        sp.274 = sp;
        sp = sp.274 + 8;
        *sp.274 = ins;
        <D.39315>:
        ip = ip + 6;
        num_calls.275 = num_calls;
        num_calls = num_calls.275 + 1;
        D.39318 = num_calls.275 * 10;
        inline_costs = D.39318 + inline_costs;
        goto <D.28356>;
      }
      <D.28357>:
      {
        void * ptr;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31362 = header->max_stack;
        D.31586 = (long int) D.31362;
        if (D.31452 >= D.31586) goto <D.39319>; else goto <D.39320>;
        <D.39319>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39321>; else goto <D.39322>;
        <D.39321>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39323>; else goto <D.39324>;
        <D.39323>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39324>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39322>:
        D.39325 = mini_get_debug_options ();
        D.39326 = D.39325->break_on_unverified;
        if (D.39326 != 0) goto <D.39327>; else goto unverified;
        <D.39327>:
        __asm__ __volatile__("int $03");
        <D.39320>:
        D.35445 = ip + 6;
        if (D.35445 > end) goto <D.39328>; else goto <D.39329>;
        <D.39328>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39330>; else goto <D.39331>;
        <D.39330>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39332>; else goto <D.39333>;
        <D.39332>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39333>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39331>:
        D.39334 = mini_get_debug_options ();
        D.39335 = D.39334->break_on_unverified;
        if (D.39335 != 0) goto <D.39336>; else goto unverified;
        <D.39336>:
        __asm__ __volatile__("int $03");
        <D.39329>:
        token = MEM[(const guint32 *)ip + 2B];
        ptr = mono_method_get_wrapper_data (method, token);
        D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.31073 = D.31072 & 64;
        if (D.31073 != 0) goto <D.39337>; else goto <D.39338>;
        <D.39337>:
        D.39339 = mono_thread_interruption_request_flag ();
        if (D.39339 == ptr) goto <D.39340>; else goto <D.39341>;
        <D.39340>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.31073 = D.31072 & 64;
        if (D.31073 != 0) goto <D.39343>; else goto <D.39344>;
        <D.39343>:
        iftmp.276 = 736;
        goto <D.39345>;
        <D.39344>:
        iftmp.276 = 363;
        <D.39345>:
        ins->opcode = iftmp.276;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->data.op[0].p = 0B;
        ins->data.op[1].src = 33B;
        ins->type = 3;
        D.39346 = alloc_dreg (cfg, 3);
        D.39347 = (int) D.39346;
        ins->dreg = D.39347;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.39348>; else goto <D.39349>;
        <D.39348>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.39350>;
        <D.39349>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.39350>:
        sp.277 = sp;
        sp = sp.277 + 8;
        *sp.277 = ins;
        ip = ip + 6;
        goto <D.28356>;
        <D.39341>:
        <D.39338>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 363;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->data.op[0].p = ptr;
        ins->type = 3;
        D.39352 = alloc_dreg (cfg, 3);
        D.39353 = (int) D.39352;
        ins->dreg = D.39353;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.39354>; else goto <D.39355>;
        <D.39354>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.39356>;
        <D.39355>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.39356>:
        sp.278 = sp;
        sp = sp.278 + 8;
        *sp.278 = ins;
        ip = ip + 6;
        num_calls.279 = num_calls;
        num_calls = num_calls.279 + 1;
        D.39359 = num_calls.279 * 10;
        inline_costs = D.39359 + inline_costs;
        D.30753 = cfg->verbose_level;
        if (D.30753 > 1) goto <D.39360>; else goto <D.39361>;
        <D.39360>:
        printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 11077);
        <D.39361>:
        cfg->disable_aot = 1;
        goto <D.28356>;
      }
      <D.28359>:
      {
        struct MonoJitICallInfo * callinfo;
        void * ptr;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31362 = header->max_stack;
        D.31586 = (long int) D.31362;
        if (D.31452 >= D.31586) goto <D.39362>; else goto <D.39363>;
        <D.39362>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39364>; else goto <D.39365>;
        <D.39364>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39366>; else goto <D.39367>;
        <D.39366>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39367>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39365>:
        D.39368 = mini_get_debug_options ();
        D.39369 = D.39368->break_on_unverified;
        if (D.39369 != 0) goto <D.39370>; else goto unverified;
        <D.39370>:
        __asm__ __volatile__("int $03");
        <D.39363>:
        D.35445 = ip + 6;
        if (D.35445 > end) goto <D.39371>; else goto <D.39372>;
        <D.39371>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39373>; else goto <D.39374>;
        <D.39373>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39375>; else goto <D.39376>;
        <D.39375>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39376>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39374>:
        D.39377 = mini_get_debug_options ();
        D.39378 = D.39377->break_on_unverified;
        if (D.39378 != 0) goto <D.39379>; else goto unverified;
        <D.39379>:
        __asm__ __volatile__("int $03");
        <D.39372>:
        token = MEM[(const guint32 *)ip + 2B];
        ptr = mono_method_get_wrapper_data (method, token);
        callinfo = mono_find_jit_icall_by_addr (ptr);
        D.39380 = callinfo == 0B;
        D.39381 = (long int) D.39380;
        D.39382 = __builtin_expect (D.39381, 0);
        if (D.39382 != 0) goto <D.39383>; else goto <D.39384>;
        <D.39383>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11090, "callinfo");
        <D.39384>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.31073 = D.31072 & 64;
        if (D.31073 != 0) goto <D.39386>; else goto <D.39387>;
        <D.39386>:
        iftmp.280 = 736;
        goto <D.39388>;
        <D.39387>:
        iftmp.280 = 363;
        <D.39388>:
        ins->opcode = iftmp.280;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.39389 = callinfo->name;
        ins->data.op[0].p = D.39389;
        ins->data.op[1].src = 32B;
        ins->type = 3;
        D.39390 = alloc_dreg (cfg, 3);
        D.39391 = (int) D.39390;
        ins->dreg = D.39391;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.39392>; else goto <D.39393>;
        <D.39392>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.39394>;
        <D.39393>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.39394>:
        sp.281 = sp;
        sp = sp.281 + 8;
        *sp.281 = ins;
        ip = ip + 6;
        num_calls.282 = num_calls;
        num_calls = num_calls.282 + 1;
        D.39397 = num_calls.282 * 10;
        inline_costs = D.39397 + inline_costs;
        goto <D.28356>;
      }
      <D.28362>:
      {
        struct MonoMethod * cmethod;
        void * ptr;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31362 = header->max_stack;
        D.31586 = (long int) D.31362;
        if (D.31452 >= D.31586) goto <D.39398>; else goto <D.39399>;
        <D.39398>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39400>; else goto <D.39401>;
        <D.39400>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39402>; else goto <D.39403>;
        <D.39402>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39403>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39401>:
        D.39404 = mini_get_debug_options ();
        D.39405 = D.39404->break_on_unverified;
        if (D.39405 != 0) goto <D.39406>; else goto unverified;
        <D.39406>:
        __asm__ __volatile__("int $03");
        <D.39399>:
        D.35445 = ip + 6;
        if (D.35445 > end) goto <D.39407>; else goto <D.39408>;
        <D.39407>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39409>; else goto <D.39410>;
        <D.39409>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39411>; else goto <D.39412>;
        <D.39411>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39412>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39410>:
        D.39413 = mini_get_debug_options ();
        D.39414 = D.39413->break_on_unverified;
        if (D.39414 != 0) goto <D.39415>; else goto unverified;
        <D.39415>:
        __asm__ __volatile__("int $03");
        <D.39408>:
        token = MEM[(const guint32 *)ip + 2B];
        cmethod = mono_method_get_wrapper_data (method, token);
        D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.31073 = D.31072 & 64;
        if (D.31073 != 0) goto <D.39416>; else goto <D.39417>;
        <D.39416>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.31073 = D.31072 & 64;
        if (D.31073 != 0) goto <D.39419>; else goto <D.39420>;
        <D.39419>:
        iftmp.283 = 736;
        goto <D.39421>;
        <D.39420>:
        iftmp.283 = 363;
        <D.39421>:
        ins->opcode = iftmp.283;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->data.op[0].p = cmethod;
        ins->data.op[1].src = 31B;
        ins->type = 3;
        D.39422 = alloc_dreg (cfg, 3);
        D.39423 = (int) D.39422;
        ins->dreg = D.39423;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.39424>; else goto <D.39425>;
        <D.39424>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.39426>;
        <D.39425>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.39426>:
        goto <D.39427>;
        <D.39417>:
        ptr = mono_lookup_internal_call (cmethod);
        D.39428 = ptr == 0B;
        D.39429 = (long int) D.39428;
        D.39430 = __builtin_expect (D.39429, 0);
        if (D.39430 != 0) goto <D.39431>; else goto <D.39432>;
        <D.39431>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11111, "ptr");
        <D.39432>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 363;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->data.op[0].p = ptr;
        ins->type = 3;
        D.39433 = alloc_dreg (cfg, 3);
        D.39434 = (int) D.39433;
        ins->dreg = D.39434;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.39435>; else goto <D.39436>;
        <D.39435>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.39437>;
        <D.39436>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.39437>:
        <D.39427>:
        sp.284 = sp;
        sp = sp.284 + 8;
        *sp.284 = ins;
        ip = ip + 6;
        goto <D.28356>;
      }
      <D.28365>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.39439>; else goto <D.39440>;
        <D.39439>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39441>; else goto <D.39442>;
        <D.39441>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39443>; else goto <D.39444>;
        <D.39443>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39444>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39442>:
        D.39445 = mini_get_debug_options ();
        D.39446 = D.39445->break_on_unverified;
        if (D.39446 != 0) goto <D.39447>; else goto unverified;
        <D.39447>:
        __asm__ __volatile__("int $03");
        <D.39440>:
        sp = sp + 18446744073709551608;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        D.37056 = (unsigned int) D.31862;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.37056 < D.31781) goto <D.39449>; else goto <D.39450>;
        <D.39449>:
        D.31784 = cfg->vreg_to_inst;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        D.37059 = (long unsigned int) D.31862;
        D.37060 = D.37059 * 8;
        D.37061 = D.31784 + D.37060;
        iftmp.285 = *D.37061;
        goto <D.39451>;
        <D.39450>:
        iftmp.285 = 0B;
        <D.39451>:
        src_var = iftmp.285;
        D.30673 = cfg->mempool;
        src = mono_mempool_alloc (D.30673, 80);
        src->data.op[1].const_val = 0;
        D.39452 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.39452;
        src->prev = 0B;
        D.39453 = src->prev;
        src->next = D.39453;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.39454 = src->sreg3;
        src->sreg2 = D.39454;
        D.39455 = src->sreg2;
        src->sreg1 = D.39455;
        D.30898 = cfg->ip;
        src->cil_code = D.30898;
        src->data.op[0].p = src_var;
        D.39456 = src_var->flags;
        D.39457 = D.39456 | 16;
        src_var->flags = D.39457;
        src->type = 5;
        D.39458 = src_var->klass;
        src->klass = D.39458;
        D.39459 = alloc_dreg (cfg, 5);
        D.39460 = (int) D.39459;
        src->dreg = D.39460;
        cfg->has_indirection = 1;
        D.30822 = cfg->gsharedvt;
        D.31766 = D.30822 != 0;
        D.31767 = (long int) D.31766;
        D.31768 = __builtin_expect (D.31767, 0);
        if (D.31768 != 0) goto <D.39461>; else goto <D.39462>;
        <D.39461>:
        D.39463 = src_var->data.op[1].vtype;
        D.39464 = mini_is_gsharedvt_variable_type (cfg, D.39463);
        if (D.39464 != 0) goto <D.39465>; else goto <D.39466>;
        <D.39465>:
        handle_gsharedvt_ldaddr (cfg);
        <D.39466>:
        <D.39462>:
        if (0 != 0) goto <D.39467>; else goto <D.39468>;
        <D.39467>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.39470 = src_var->dreg;
          D.39471 = D.39470 + 1;
          D.39472 = (unsigned int) D.39471;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.39472 < D.31781) goto <D.39473>; else goto <D.39474>;
          <D.39473>:
          D.31784 = cfg->vreg_to_inst;
          D.39470 = src_var->dreg;
          D.39475 = (sizetype) D.39470;
          D.39476 = D.39475 + 1;
          D.39477 = D.39476 * 8;
          D.39478 = D.31784 + D.39477;
          iftmp.286 = *D.39478;
          goto <D.39479>;
          <D.39474>:
          iftmp.286 = 0B;
          <D.39479>:
          var1 = iftmp.286;
          D.39470 = src_var->dreg;
          D.39481 = D.39470 + 2;
          D.39482 = (unsigned int) D.39481;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.39482 < D.31781) goto <D.39483>; else goto <D.39484>;
          <D.39483>:
          D.31784 = cfg->vreg_to_inst;
          D.39470 = src_var->dreg;
          D.39475 = (sizetype) D.39470;
          D.39485 = D.39475 + 2;
          D.39486 = D.39485 * 8;
          D.39487 = D.31784 + D.39486;
          iftmp.287 = *D.39487;
          goto <D.39488>;
          <D.39484>:
          iftmp.287 = 0B;
          <D.39488>:
          var2 = iftmp.287;
          D.39489 = var1 == 0B;
          D.39490 = (long int) D.39489;
          D.39491 = __builtin_expect (D.39490, 0);
          if (D.39491 != 0) goto <D.39492>; else goto <D.39493>;
          <D.39492>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11126, "var1");
          <D.39493>:
          D.39494 = var2 == 0B;
          D.39495 = (long int) D.39494;
          D.39496 = __builtin_expect (D.39495, 0);
          if (D.39496 != 0) goto <D.39497>; else goto <D.39498>;
          <D.39497>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11126, "var2");
          <D.39498>:
          D.39499 = var1->flags;
          D.39500 = D.39499 | 16;
          var1->flags = D.39500;
          D.39501 = var2->flags;
          D.39502 = D.39501 | 16;
          var2->flags = D.39502;
        }
        <D.39468>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.39503>; else goto <D.39504>;
        <D.39503>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = src;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        src->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = src;
        goto <D.39505>;
        <D.39504>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = src;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.39505>:
        sp.288 = sp;
        sp = sp.288 + 8;
        *sp.288 = src;
        ip = ip + 2;
        goto <D.28356>;
      }
      <D.28370>:
      {
        struct MonoInst * iargs[2];

        try
          {
            sp.77 = (long int) sp;
            stack_start.78 = (long int) stack_start;
            D.31451 = sp.77 - stack_start.78;
            D.31452 = D.31451 /[ex] 8;
            D.31362 = header->max_stack;
            D.31586 = (long int) D.31362;
            if (D.31452 >= D.31586) goto <D.39507>; else goto <D.39508>;
            <D.39507>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.39509>; else goto <D.39510>;
            <D.39509>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.39511>; else goto <D.39512>;
            <D.39511>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39512>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39510>:
            D.39513 = mini_get_debug_options ();
            D.39514 = D.39513->break_on_unverified;
            if (D.39514 != 0) goto <D.39515>; else goto unverified;
            <D.39515>:
            __asm__ __volatile__("int $03");
            <D.39508>:
            D.35445 = ip + 6;
            if (D.35445 > end) goto <D.39516>; else goto <D.39517>;
            <D.39516>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.39518>; else goto <D.39519>;
            <D.39518>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.39520>; else goto <D.39521>;
            <D.39520>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.39521>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.39519>:
            D.39522 = mini_get_debug_options ();
            D.39523 = D.39522->break_on_unverified;
            if (D.39523 != 0) goto <D.39524>; else goto unverified;
            <D.39524>:
            __asm__ __volatile__("int $03");
            <D.39517>:
            token = MEM[(const guint32 *)ip + 2B];
            klass.289 = mono_method_get_wrapper_data (method, token);
            klass = klass.289;
            klass.155 = klass;
            mono_class_init (klass.155);
            D.31070 = cfg->opt;
            D.31071 = D.31070 & 512;
            if (D.31071 != 0) goto <D.39526>; else goto <D.39529>;
            <D.39529>:
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.39526>; else goto <D.39527>;
            <D.39526>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.30673 = cfg->mempool;
              D.39530 = mono_mempool_alloc (D.30673, 80);
              iargs[0] = D.39530;
              D.39531 = iargs[0];
              D.39531 = iargs[0];
              D.39531->data.op[1].const_val = 0;
              D.39532 = D.39531->data.op[1].const_val;
              D.39531->data.op[0].const_val = D.39532;
              D.39531 = iargs[0];
              D.39531 = iargs[0];
              D.39531->prev = 0B;
              D.39533 = D.39531->prev;
              D.39531->next = D.39533;
              D.39531 = iargs[0];
              D.39531->opcode = 428;
              D.39531 = iargs[0];
              D.39531->flags = 0;
              D.39531 = iargs[0];
              D.39531->type = 0;
              D.39531 = iargs[0];
              D.39531->dreg = -1;
              D.39531 = iargs[0];
              D.39531 = iargs[0];
              D.39531 = iargs[0];
              D.39531->sreg3 = -1;
              D.39534 = D.39531->sreg3;
              D.39531->sreg2 = D.39534;
              D.39535 = D.39531->sreg2;
              D.39531->sreg1 = D.39535;
              D.39531 = iargs[0];
              D.30898 = cfg->ip;
              D.39531->cil_code = D.30898;
              D.39531 = iargs[0];
              D.31416 = cfg->varinfo;
              D.39536 = __domain_var->data.op[0].const_val;
              D.39537 = (long unsigned int) D.39536;
              D.39538 = D.39537 * 8;
              D.39539 = D.31416 + D.39538;
              D.39540 = *D.39539;
              D.39541 = D.39540->data.op[1].vtype;
              D.39542 = mono_type_to_regmove (cfg, D.39541);
              D.39543 = (short unsigned int) D.39542;
              D.39531->opcode = D.39543;
              D.39531 = iargs[0];
              D.31416 = cfg->varinfo;
              D.39536 = __domain_var->data.op[0].const_val;
              D.39537 = (long unsigned int) D.39536;
              D.39538 = D.39537 * 8;
              D.39539 = D.31416 + D.39538;
              D.39540 = *D.39539;
              D.39541 = D.39540->data.op[1].vtype;
              type_to_eval_stack_type (cfg, D.39541, D.39531);
              D.39531 = iargs[0];
              D.31416 = cfg->varinfo;
              D.39536 = __domain_var->data.op[0].const_val;
              D.39537 = (long unsigned int) D.39536;
              D.39538 = D.39537 * 8;
              D.39539 = D.31416 + D.39538;
              D.39540 = *D.39539;
              D.39544 = D.39540->klass;
              D.39531->klass = D.39544;
              D.39531 = iargs[0];
              D.31416 = cfg->varinfo;
              D.39536 = __domain_var->data.op[0].const_val;
              D.39537 = (long unsigned int) D.39536;
              D.39538 = D.39537 * 8;
              D.39539 = D.31416 + D.39538;
              D.39540 = *D.39539;
              D.39545 = D.39540->dreg;
              D.39531->sreg1 = D.39545;
              D.39531 = iargs[0];
              D.39531 = iargs[0];
              D.39546 = D.39531->type;
              D.39547 = (<unnamed type>) D.39546;
              D.39548 = alloc_dreg (cfg, D.39547);
              D.39549 = (int) D.39548;
              D.39531->dreg = D.39549;
              D.39531 = iargs[0];
              D.39550 = D.39531->opcode;
              if (D.39550 == 431) goto <D.39551>; else goto <D.39552>;
              <D.39551>:
              D.39531 = iargs[0];
              D.31416 = cfg->varinfo;
              D.39536 = __domain_var->data.op[0].const_val;
              D.39537 = (long unsigned int) D.39536;
              D.39538 = D.39537 * 8;
              D.39539 = D.31416 + D.39538;
              D.39540 = *D.39539;
              D.39541 = D.39540->data.op[1].vtype;
              D.39553 = mono_class_from_mono_type (D.39541);
              D.39531->klass = D.39553;
              <D.39552>:
            }
            goto <D.39528>;
            <D.39527>:
            D.30673 = cfg->mempool;
            D.39554 = mono_mempool_alloc (D.30673, 80);
            iargs[0] = D.39554;
            D.39531 = iargs[0];
            D.39531 = iargs[0];
            D.39531->data.op[1].const_val = 0;
            D.39532 = D.39531->data.op[1].const_val;
            D.39531->data.op[0].const_val = D.39532;
            D.39531 = iargs[0];
            D.39531 = iargs[0];
            D.39531->prev = 0B;
            D.39533 = D.39531->prev;
            D.39531->next = D.39533;
            D.39531 = iargs[0];
            D.39531->opcode = 363;
            D.39531 = iargs[0];
            D.39531->flags = 0;
            D.39531 = iargs[0];
            D.39531->type = 0;
            D.39531 = iargs[0];
            D.39531->dreg = -1;
            D.39531 = iargs[0];
            D.39531 = iargs[0];
            D.39531 = iargs[0];
            D.39531->sreg3 = -1;
            D.39534 = D.39531->sreg3;
            D.39531->sreg2 = D.39534;
            D.39535 = D.39531->sreg2;
            D.39531->sreg1 = D.39535;
            D.39531 = iargs[0];
            D.30898 = cfg->ip;
            D.39531->cil_code = D.30898;
            D.39531 = iargs[0];
            D.30697 = cfg->domain;
            D.39531->data.op[0].p = D.30697;
            D.39531 = iargs[0];
            D.39531->type = 3;
            D.39531 = iargs[0];
            D.39555 = alloc_dreg (cfg, 3);
            D.39556 = (int) D.39555;
            D.39531->dreg = D.39556;
            <D.39528>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.39557>; else goto <D.39558>;
            <D.39557>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.39531 = iargs[0];
            D.30927->next = D.39531;
            D.39531 = iargs[0];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.39531->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.39531 = iargs[0];
            bblock.113->last_ins = D.39531;
            goto <D.39559>;
            <D.39558>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.39531 = iargs[0];
            bblock.113->last_ins = D.39531;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.39559>:
            D.30673 = cfg->mempool;
            D.39560 = mono_mempool_alloc (D.30673, 80);
            iargs[1] = D.39560;
            D.39561 = iargs[1];
            D.39561 = iargs[1];
            D.39561->data.op[1].const_val = 0;
            D.39562 = D.39561->data.op[1].const_val;
            D.39561->data.op[0].const_val = D.39562;
            D.39561 = iargs[1];
            D.39561 = iargs[1];
            D.39561->prev = 0B;
            D.39563 = D.39561->prev;
            D.39561->next = D.39563;
            D.39561 = iargs[1];
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.39565>; else goto <D.39566>;
            <D.39565>:
            iftmp.290 = 736;
            goto <D.39567>;
            <D.39566>:
            iftmp.290 = 363;
            <D.39567>:
            D.39561->opcode = iftmp.290;
            D.39561 = iargs[1];
            D.39561->flags = 0;
            D.39561 = iargs[1];
            D.39561->type = 0;
            D.39561 = iargs[1];
            D.39561->dreg = -1;
            D.39561 = iargs[1];
            D.39561 = iargs[1];
            D.39561 = iargs[1];
            D.39561->sreg3 = -1;
            D.39568 = D.39561->sreg3;
            D.39561->sreg2 = D.39568;
            D.39569 = D.39561->sreg2;
            D.39561->sreg1 = D.39569;
            D.39561 = iargs[1];
            D.30898 = cfg->ip;
            D.39561->cil_code = D.30898;
            D.39561 = iargs[1];
            klass.155 = klass;
            D.39561->data.op[0].p = klass.155;
            D.39561 = iargs[1];
            D.39561->data.op[1].src = 11B;
            D.39561 = iargs[1];
            D.39561->type = 3;
            D.39561 = iargs[1];
            D.39570 = alloc_dreg (cfg, 3);
            D.39571 = (int) D.39570;
            D.39561->dreg = D.39571;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.39572>; else goto <D.39573>;
            <D.39572>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.39561 = iargs[1];
            D.30927->next = D.39561;
            D.39561 = iargs[1];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.39561->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.39561 = iargs[1];
            bblock.113->last_ins = D.39561;
            goto <D.39574>;
            <D.39573>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.39561 = iargs[1];
            bblock.113->last_ins = D.39561;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.39574>:
            sp.291 = sp;
            sp = sp.291 + 8;
            D.39576 = mono_emit_jit_icall (cfg, mono_object_new, &iargs);
            *sp.291 = D.39576;
            ip = ip + 6;
            num_calls.292 = num_calls;
            num_calls = num_calls.292 + 1;
            D.39578 = num_calls.292 * 10;
            inline_costs = D.39578 + inline_costs;
            goto <D.28356>;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.28373>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.39579>; else goto <D.39580>;
      <D.39579>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.39581>; else goto <D.39582>;
      <D.39581>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.39583>; else goto <D.39584>;
      <D.39583>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39584>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39582>:
      D.39585 = mini_get_debug_options ();
      D.39586 = D.39585->break_on_unverified;
      if (D.39586 != 0) goto <D.39587>; else goto unverified;
      <D.39587>:
      __asm__ __volatile__("int $03");
      <D.39580>:
      sp = sp + 18446744073709551608;
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.39588 = alloc_ireg_mp (cfg);
      D.39589 = (int) D.39588;
      ins->dreg = D.39589;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      ins->type = 5;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.39590>; else goto <D.39591>;
      <D.39590>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.39592>;
      <D.39591>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.39592>:
      sp.293 = sp;
      sp = sp.293 + 8;
      *sp.293 = ins;
      ip = ip + 2;
      goto <D.28356>;
      <D.28374>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.39594>; else goto <D.39595>;
      <D.39594>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.39596>; else goto <D.39597>;
      <D.39596>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.39598>; else goto <D.39599>;
      <D.39598>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39599>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39597>:
      D.39600 = mini_get_debug_options ();
      D.39601 = D.39600->break_on_unverified;
      if (D.39601 != 0) goto <D.39602>; else goto unverified;
      <D.39602>:
      __asm__ __volatile__("int $03");
      <D.39595>:
      D.35445 = ip + 6;
      if (D.35445 > end) goto <D.39603>; else goto <D.39604>;
      <D.39603>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.39605>; else goto <D.39606>;
      <D.39605>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.39607>; else goto <D.39608>;
      <D.39607>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39608>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39606>:
      D.39609 = mini_get_debug_options ();
      D.39610 = D.39609->break_on_unverified;
      if (D.39610 != 0) goto <D.39611>; else goto unverified;
      <D.39611>:
      __asm__ __volatile__("int $03");
      <D.39604>:
      sp = sp + 18446744073709551608;
      token = MEM[(const guint32 *)ip + 2B];
      klass.294 = mono_method_get_wrapper_data (method, token);
      klass = klass.294;
      klass.155 = klass;
      D.36812 = BIT_FIELD_REF <*klass.155, 8, 256>;
      D.36813 = D.36812 & 8;
      D.39613 = D.36813 == 0;
      D.39614 = (long int) D.39613;
      D.39615 = __builtin_expect (D.39614, 0);
      if (D.39615 != 0) goto <D.39616>; else goto <D.39617>;
      <D.39616>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11169, "klass->valuetype");
      <D.39617>:
      klass.155 = klass;
      mono_class_init (klass.155);
      {
        struct MonoInst * src;
        struct MonoInst * dest;
        struct MonoInst * temp;

        src = *sp;
        klass.155 = klass;
        D.35462 = &klass.155->byval_arg;
        temp = mono_compile_create_var (cfg, D.35462, 329);
        temp->backend.is_pinvoke = 1;
        D.30673 = cfg->mempool;
        dest = mono_mempool_alloc (D.30673, 80);
        dest->data.op[1].const_val = 0;
        D.39618 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.39618;
        dest->prev = 0B;
        D.39619 = dest->prev;
        dest->next = D.39619;
        dest->opcode = 314;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.39620 = dest->sreg3;
        dest->sreg2 = D.39620;
        D.39621 = dest->sreg2;
        dest->sreg1 = D.39621;
        D.30898 = cfg->ip;
        dest->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.39622 = temp->data.op[0].const_val;
        D.39623 = (long unsigned int) D.39622;
        D.39624 = D.39623 * 8;
        D.39625 = D.31416 + D.39624;
        D.39626 = *D.39625;
        dest->data.op[0].p = D.39626;
        D.31416 = cfg->varinfo;
        D.39622 = temp->data.op[0].const_val;
        D.39623 = (long unsigned int) D.39622;
        D.39624 = D.39623 * 8;
        D.39625 = D.31416 + D.39624;
        D.39626 = *D.39625;
        D.31416 = cfg->varinfo;
        D.39622 = temp->data.op[0].const_val;
        D.39623 = (long unsigned int) D.39622;
        D.39624 = D.39623 * 8;
        D.39625 = D.31416 + D.39624;
        D.39626 = *D.39625;
        D.39627 = D.39626->flags;
        D.39628 = D.39627 | 16;
        D.39626->flags = D.39628;
        dest->type = 5;
        D.31416 = cfg->varinfo;
        D.39622 = temp->data.op[0].const_val;
        D.39623 = (long unsigned int) D.39622;
        D.39624 = D.39623 * 8;
        D.39625 = D.31416 + D.39624;
        D.39626 = *D.39625;
        D.39629 = D.39626->klass;
        dest->klass = D.39629;
        D.39630 = alloc_dreg (cfg, 5);
        D.39631 = (int) D.39630;
        dest->dreg = D.39631;
        cfg->has_indirection = 1;
        D.30822 = cfg->gsharedvt;
        D.31766 = D.30822 != 0;
        D.31767 = (long int) D.31766;
        D.31768 = __builtin_expect (D.31767, 0);
        if (D.31768 != 0) goto <D.39632>; else goto <D.39633>;
        <D.39632>:
        D.31416 = cfg->varinfo;
        D.39622 = temp->data.op[0].const_val;
        D.39623 = (long unsigned int) D.39622;
        D.39624 = D.39623 * 8;
        D.39625 = D.31416 + D.39624;
        D.39626 = *D.39625;
        D.39634 = D.39626->data.op[1].vtype;
        D.39635 = mini_is_gsharedvt_variable_type (cfg, D.39634);
        if (D.39635 != 0) goto <D.39636>; else goto <D.39637>;
        <D.39636>:
        handle_gsharedvt_ldaddr (cfg);
        <D.39637>:
        <D.39633>:
        if (0 != 0) goto <D.39638>; else goto <D.39639>;
        <D.39638>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.31416 = cfg->varinfo;
          D.39622 = temp->data.op[0].const_val;
          D.39623 = (long unsigned int) D.39622;
          D.39624 = D.39623 * 8;
          D.39625 = D.31416 + D.39624;
          D.39626 = *D.39625;
          D.39641 = D.39626->dreg;
          D.39642 = D.39641 + 1;
          D.39643 = (unsigned int) D.39642;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.39643 < D.31781) goto <D.39644>; else goto <D.39645>;
          <D.39644>:
          D.31784 = cfg->vreg_to_inst;
          D.31416 = cfg->varinfo;
          D.39622 = temp->data.op[0].const_val;
          D.39623 = (long unsigned int) D.39622;
          D.39624 = D.39623 * 8;
          D.39625 = D.31416 + D.39624;
          D.39626 = *D.39625;
          D.39641 = D.39626->dreg;
          D.39646 = (sizetype) D.39641;
          D.39647 = D.39646 + 1;
          D.39648 = D.39647 * 8;
          D.39649 = D.31784 + D.39648;
          iftmp.295 = *D.39649;
          goto <D.39650>;
          <D.39645>:
          iftmp.295 = 0B;
          <D.39650>:
          var1 = iftmp.295;
          D.31416 = cfg->varinfo;
          D.39622 = temp->data.op[0].const_val;
          D.39623 = (long unsigned int) D.39622;
          D.39624 = D.39623 * 8;
          D.39625 = D.31416 + D.39624;
          D.39626 = *D.39625;
          D.39641 = D.39626->dreg;
          D.39652 = D.39641 + 2;
          D.39653 = (unsigned int) D.39652;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.39653 < D.31781) goto <D.39654>; else goto <D.39655>;
          <D.39654>:
          D.31784 = cfg->vreg_to_inst;
          D.31416 = cfg->varinfo;
          D.39622 = temp->data.op[0].const_val;
          D.39623 = (long unsigned int) D.39622;
          D.39624 = D.39623 * 8;
          D.39625 = D.31416 + D.39624;
          D.39626 = *D.39625;
          D.39641 = D.39626->dreg;
          D.39646 = (sizetype) D.39641;
          D.39656 = D.39646 + 2;
          D.39657 = D.39656 * 8;
          D.39658 = D.31784 + D.39657;
          iftmp.296 = *D.39658;
          goto <D.39659>;
          <D.39655>:
          iftmp.296 = 0B;
          <D.39659>:
          var2 = iftmp.296;
          D.39660 = var1 == 0B;
          D.39661 = (long int) D.39660;
          D.39662 = __builtin_expect (D.39661, 0);
          if (D.39662 != 0) goto <D.39663>; else goto <D.39664>;
          <D.39663>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11178, "var1");
          <D.39664>:
          D.39665 = var2 == 0B;
          D.39666 = (long int) D.39665;
          D.39667 = __builtin_expect (D.39666, 0);
          if (D.39667 != 0) goto <D.39668>; else goto <D.39669>;
          <D.39668>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11178, "var2");
          <D.39669>:
          D.39670 = var1->flags;
          D.39671 = D.39670 | 16;
          var1->flags = D.39671;
          D.39672 = var2->flags;
          D.39673 = D.39672 | 16;
          var2->flags = D.39673;
        }
        <D.39639>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.39674>; else goto <D.39675>;
        <D.39674>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = dest;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        dest->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = dest;
        goto <D.39676>;
        <D.39675>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = dest;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.39676>:
        klass.155 = klass;
        mini_emit_stobj (cfg, dest, src, klass.155, 1);
        D.30673 = cfg->mempool;
        dest = mono_mempool_alloc (D.30673, 80);
        dest->data.op[1].const_val = 0;
        D.39618 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.39618;
        dest->prev = 0B;
        D.39619 = dest->prev;
        dest->next = D.39619;
        dest->opcode = 428;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.39620 = dest->sreg3;
        dest->sreg2 = D.39620;
        D.39621 = dest->sreg2;
        dest->sreg1 = D.39621;
        D.30898 = cfg->ip;
        dest->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.39622 = temp->data.op[0].const_val;
        D.39623 = (long unsigned int) D.39622;
        D.39624 = D.39623 * 8;
        D.39625 = D.31416 + D.39624;
        D.39626 = *D.39625;
        D.39634 = D.39626->data.op[1].vtype;
        D.39677 = mono_type_to_regmove (cfg, D.39634);
        D.39678 = (short unsigned int) D.39677;
        dest->opcode = D.39678;
        D.31416 = cfg->varinfo;
        D.39622 = temp->data.op[0].const_val;
        D.39623 = (long unsigned int) D.39622;
        D.39624 = D.39623 * 8;
        D.39625 = D.31416 + D.39624;
        D.39626 = *D.39625;
        D.39634 = D.39626->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.39634, dest);
        D.31416 = cfg->varinfo;
        D.39622 = temp->data.op[0].const_val;
        D.39623 = (long unsigned int) D.39622;
        D.39624 = D.39623 * 8;
        D.39625 = D.31416 + D.39624;
        D.39626 = *D.39625;
        D.39629 = D.39626->klass;
        dest->klass = D.39629;
        D.31416 = cfg->varinfo;
        D.39622 = temp->data.op[0].const_val;
        D.39623 = (long unsigned int) D.39622;
        D.39624 = D.39623 * 8;
        D.39625 = D.31416 + D.39624;
        D.39626 = *D.39625;
        D.39641 = D.39626->dreg;
        dest->sreg1 = D.39641;
        D.39679 = dest->type;
        D.39680 = (<unnamed type>) D.39679;
        D.39681 = alloc_dreg (cfg, D.39680);
        D.39682 = (int) D.39681;
        dest->dreg = D.39682;
        D.39683 = dest->opcode;
        if (D.39683 == 431) goto <D.39684>; else goto <D.39685>;
        <D.39684>:
        D.31416 = cfg->varinfo;
        D.39622 = temp->data.op[0].const_val;
        D.39623 = (long unsigned int) D.39622;
        D.39624 = D.39623 * 8;
        D.39625 = D.31416 + D.39624;
        D.39626 = *D.39625;
        D.39634 = D.39626->data.op[1].vtype;
        D.39686 = mono_class_from_mono_type (D.39634);
        dest->klass = D.39686;
        <D.39685>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.39687>; else goto <D.39688>;
        <D.39687>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = dest;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        dest->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = dest;
        goto <D.39689>;
        <D.39688>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = dest;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.39689>:
        dest->type = 7;
        klass.155 = klass;
        dest->klass = klass.155;
        sp.297 = sp;
        sp = sp.297 + 8;
        *sp.297 = dest;
        ip = ip + 6;
      }
      goto <D.28356>;
      <D.28380>:
      D.34178 = cfg->ret;
      D.39691 = D.34178 == 0B;
      D.39692 = (long int) D.39691;
      D.39693 = __builtin_expect (D.39692, 0);
      if (D.39693 != 0) goto <D.39694>; else goto <D.39695>;
      <D.39694>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11194, "cfg->ret");
      <D.39695>:
      D.39696 = mono_method_signature (method);
      D.39697 = BIT_FIELD_REF <*D.39696, 8, 120>;
      D.39698 = D.39697 & 1;
      D.39699 = D.39698 == 0;
      D.39700 = (long int) D.39699;
      D.39701 = __builtin_expect (D.39700, 0);
      if (D.39701 != 0) goto <D.39702>; else goto <D.39703>;
      <D.39702>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11195, "mono_method_signature (method)->pinvoke");
      <D.39703>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.39704>; else goto <D.39705>;
      <D.39704>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.39706>; else goto <D.39707>;
      <D.39706>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.39708>; else goto <D.39709>;
      <D.39708>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39709>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39707>:
      D.39710 = mini_get_debug_options ();
      D.39711 = D.39710->break_on_unverified;
      if (D.39711 != 0) goto <D.39712>; else goto unverified;
      <D.39712>:
      __asm__ __volatile__("int $03");
      <D.39705>:
      sp = sp + 18446744073709551608;
      D.35445 = ip + 6;
      if (D.35445 > end) goto <D.39713>; else goto <D.39714>;
      <D.39713>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.39715>; else goto <D.39716>;
      <D.39715>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.39717>; else goto <D.39718>;
      <D.39717>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39718>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39716>:
      D.39719 = mini_get_debug_options ();
      D.39720 = D.39719->break_on_unverified;
      if (D.39720 != 0) goto <D.39721>; else goto unverified;
      <D.39721>:
      __asm__ __volatile__("int $03");
      <D.39714>:
      token = MEM[(const guint32 *)ip + 2B];
      klass.298 = mono_method_get_wrapper_data (method, token);
      klass = klass.298;
      D.34221 = cfg->vret_addr;
      if (D.34221 == 0B) goto <D.39723>; else goto <D.39724>;
      <D.39723>:
      D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
      D.39725 = D.31454 & 4;
      D.39726 = D.39725 == 0;
      D.39727 = (long int) D.39726;
      D.39728 = __builtin_expect (D.39727, 0);
      if (D.39728 != 0) goto <D.39729>; else goto <D.39730>;
      <D.39729>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11204, "cfg->ret_var_is_local");
      <D.39730>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.34178 = cfg->ret;
      ins->data.op[0].p = D.34178;
      D.34178 = cfg->ret;
      D.34178 = cfg->ret;
      D.39731 = D.34178->flags;
      D.39732 = D.39731 | 16;
      D.34178->flags = D.39732;
      ins->type = 5;
      D.34178 = cfg->ret;
      D.34230 = D.34178->klass;
      ins->klass = D.34230;
      D.39733 = alloc_dreg (cfg, 5);
      D.39734 = (int) D.39733;
      ins->dreg = D.39734;
      cfg->has_indirection = 1;
      D.30822 = cfg->gsharedvt;
      D.31766 = D.30822 != 0;
      D.31767 = (long int) D.31766;
      D.31768 = __builtin_expect (D.31767, 0);
      if (D.31768 != 0) goto <D.39735>; else goto <D.39736>;
      <D.39735>:
      D.34178 = cfg->ret;
      D.39737 = D.34178->data.op[1].vtype;
      D.39738 = mini_is_gsharedvt_variable_type (cfg, D.39737);
      if (D.39738 != 0) goto <D.39739>; else goto <D.39740>;
      <D.39739>:
      handle_gsharedvt_ldaddr (cfg);
      <D.39740>:
      <D.39736>:
      if (0 != 0) goto <D.39741>; else goto <D.39742>;
      <D.39741>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        D.34178 = cfg->ret;
        D.34231 = D.34178->dreg;
        D.39744 = D.34231 + 1;
        D.39745 = (unsigned int) D.39744;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.39745 < D.31781) goto <D.39746>; else goto <D.39747>;
        <D.39746>:
        D.31784 = cfg->vreg_to_inst;
        D.34178 = cfg->ret;
        D.34231 = D.34178->dreg;
        D.39748 = (sizetype) D.34231;
        D.39749 = D.39748 + 1;
        D.39750 = D.39749 * 8;
        D.39751 = D.31784 + D.39750;
        iftmp.299 = *D.39751;
        goto <D.39752>;
        <D.39747>:
        iftmp.299 = 0B;
        <D.39752>:
        var1 = iftmp.299;
        D.34178 = cfg->ret;
        D.34231 = D.34178->dreg;
        D.39754 = D.34231 + 2;
        D.39755 = (unsigned int) D.39754;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.39755 < D.31781) goto <D.39756>; else goto <D.39757>;
        <D.39756>:
        D.31784 = cfg->vreg_to_inst;
        D.34178 = cfg->ret;
        D.34231 = D.34178->dreg;
        D.39748 = (sizetype) D.34231;
        D.39758 = D.39748 + 2;
        D.39759 = D.39758 * 8;
        D.39760 = D.31784 + D.39759;
        iftmp.300 = *D.39760;
        goto <D.39761>;
        <D.39757>:
        iftmp.300 = 0B;
        <D.39761>:
        var2 = iftmp.300;
        D.39762 = var1 == 0B;
        D.39763 = (long int) D.39762;
        D.39764 = __builtin_expect (D.39763, 0);
        if (D.39764 != 0) goto <D.39765>; else goto <D.39766>;
        <D.39765>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11206, "var1");
        <D.39766>:
        D.39767 = var2 == 0B;
        D.39768 = (long int) D.39767;
        D.39769 = __builtin_expect (D.39768, 0);
        if (D.39769 != 0) goto <D.39770>; else goto <D.39771>;
        <D.39770>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11206, "var2");
        <D.39771>:
        D.39772 = var1->flags;
        D.39773 = D.39772 | 16;
        var1->flags = D.39773;
        D.39774 = var2->flags;
        D.39775 = D.39774 | 16;
        var2->flags = D.39775;
      }
      <D.39742>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.39776>; else goto <D.39777>;
      <D.39776>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.39778>;
      <D.39777>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.39778>:
      goto <D.39779>;
      <D.39724>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ins->type = 5;
      D.34178 = cfg->ret;
      D.34230 = D.34178->klass;
      ins->klass = D.34230;
      D.34221 = cfg->vret_addr;
      D.34244 = D.34221->dreg;
      ins->sreg1 = D.34244;
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.39780 = alloc_dreg (cfg, D.31427);
      D.39781 = (int) D.39780;
      ins->dreg = D.39781;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.39782>; else goto <D.39783>;
      <D.39782>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.39784>;
      <D.39783>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.39784>:
      <D.39779>:
      klass.155 = klass;
      D.31680 = *sp;
      mini_emit_stobj (cfg, ins, D.31680, klass.155, 1);
      if (sp != stack_start) goto <D.39785>; else goto <D.39786>;
      <D.39785>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.39787>; else goto <D.39788>;
      <D.39787>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.39789>; else goto <D.39790>;
      <D.39789>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39790>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39788>:
      D.39791 = mini_get_debug_options ();
      D.39792 = D.39791->break_on_unverified;
      if (D.39792 != 0) goto <D.39793>; else goto unverified;
      <D.39793>:
      __asm__ __volatile__("int $03");
      <D.39786>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ins->data.op[0].target_block = end_bblock;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      if (D.31015 != 0B) goto <D.39794>; else goto <D.39795>;
      <D.39794>:
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      D.31015->next = ins;
      bblock.70 = bblock;
      D.31015 = bblock.70->last_ins;
      ins->prev = D.31015;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      goto <D.39796>;
      <D.39795>:
      bblock.70 = bblock;
      bblock.70 = bblock;
      bblock.70->last_ins = ins;
      D.31015 = bblock.70->last_ins;
      bblock.70->code = D.31015;
      <D.39796>:
      bblock.70 = bblock;
      link_bblock (cfg, bblock.70, end_bblock);
      start_new_bblock = 1;
      ip = ip + 6;
      goto <D.28356>;
      <D.28383>:
      <D.28384>:
      {
        int token;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.39797>; else goto <D.39798>;
        <D.39797>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39799>; else goto <D.39800>;
        <D.39799>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39801>; else goto <D.39802>;
        <D.39801>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39802>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39800>:
        D.39803 = mini_get_debug_options ();
        D.39804 = D.39803->break_on_unverified;
        if (D.39804 != 0) goto <D.39805>; else goto unverified;
        <D.39805>:
        __asm__ __volatile__("int $03");
        <D.39798>:
        sp = sp + 18446744073709551608;
        D.35445 = ip + 6;
        if (D.35445 > end) goto <D.39806>; else goto <D.39807>;
        <D.39806>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39808>; else goto <D.39809>;
        <D.39808>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39810>; else goto <D.39811>;
        <D.39810>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39811>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39809>:
        D.39812 = mini_get_debug_options ();
        D.39813 = D.39812->break_on_unverified;
        if (D.39813 != 0) goto <D.39814>; else goto unverified;
        <D.39814>:
        __asm__ __volatile__("int $03");
        <D.39807>:
        D.39815 = ip + 2;
        D.39816 = *D.39815;
        token = (int) D.39816;
        token.301 = (unsigned int) token;
        klass.302 = mono_method_get_wrapper_data (method, token.301);
        klass = klass.302;
        D.31710 = ip + 1;
        D.31711 = *D.31710;
        if (D.31711 == 7) goto <D.39819>; else goto <D.39820>;
        <D.39819>:
        D.31680 = *sp;
        klass.155 = klass;
        ins = handle_cisinst (cfg, klass.155, D.31680);
        goto <D.39821>;
        <D.39820>:
        D.31680 = *sp;
        klass.155 = klass;
        ins = handle_ccastclass (cfg, klass.155, D.31680);
        <D.39821>:
        bblock.113 = cfg->cbb;
        bblock = bblock.113;
        sp.303 = sp;
        sp = sp.303 + 8;
        *sp.303 = ins;
        ip = ip + 6;
        goto <D.28356>;
      }
      <D.28386>:
      <D.28387>:
      ip = ip + 2;
      goto <D.28356>;
      <D.28388>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.39823>; else goto <D.39824>;
      <D.39823>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.39825>; else goto <D.39826>;
      <D.39825>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.39827>; else goto <D.39828>;
      <D.39827>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39828>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39826>:
      D.39829 = mini_get_debug_options ();
      D.39830 = D.39829->break_on_unverified;
      if (D.39830 != 0) goto <D.39831>; else goto unverified;
      <D.39831>:
      __asm__ __volatile__("int $03");
      <D.39824>:
      D.35445 = ip + 6;
      if (D.35445 > end) goto <D.39832>; else goto <D.39833>;
      <D.39832>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.39834>; else goto <D.39835>;
      <D.39834>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.39836>; else goto <D.39837>;
      <D.39836>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39837>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39835>:
      D.39838 = mini_get_debug_options ();
      D.39839 = D.39838->break_on_unverified;
      if (D.39839 != 0) goto <D.39840>; else goto unverified;
      <D.39840>:
      __asm__ __volatile__("int $03");
      <D.39833>:
      token = MEM[(const guint32 *)ip + 2B];
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.31073 = D.31072 & 64;
      if (D.31073 != 0) goto <D.39842>; else goto <D.39843>;
      <D.39842>:
      iftmp.304 = 736;
      goto <D.39844>;
      <D.39843>:
      iftmp.304 = 363;
      <D.39844>:
      ins->opcode = iftmp.304;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.39845 = mono_method_get_wrapper_data (method, token);
      ins->data.op[0].p = D.39845;
      ins->data.op[1].src = 11B;
      ins->type = 3;
      D.39846 = alloc_dreg (cfg, 3);
      D.39847 = (int) D.39846;
      ins->dreg = D.39847;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.39848>; else goto <D.39849>;
      <D.39848>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.39850>;
      <D.39849>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.39850>:
      sp.305 = sp;
      sp = sp.305 + 8;
      *sp.305 = ins;
      ip = ip + 6;
      num_calls.306 = num_calls;
      num_calls = num_calls.306 + 1;
      D.39853 = num_calls.306 * 10;
      inline_costs = D.39853 + inline_costs;
      goto <D.28356>;
      <D.28389>:
      bblock.70 = bblock;
      bblock.70->out_of_line = 1;
      ip = ip + 2;
      goto <D.28356>;
      <D.28390>:
      {
        int key;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31362 = header->max_stack;
        D.31586 = (long int) D.31362;
        if (D.31452 >= D.31586) goto <D.39854>; else goto <D.39855>;
        <D.39854>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39856>; else goto <D.39857>;
        <D.39856>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39858>; else goto <D.39859>;
        <D.39858>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39859>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39857>:
        D.39860 = mini_get_debug_options ();
        D.39861 = D.39860->break_on_unverified;
        if (D.39861 != 0) goto <D.39862>; else goto unverified;
        <D.39862>:
        __asm__ __volatile__("int $03");
        <D.39855>:
        D.35445 = ip + 6;
        if (D.35445 > end) goto <D.39863>; else goto <D.39864>;
        <D.39863>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.39865>; else goto <D.39866>;
        <D.39865>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.39867>; else goto <D.39868>;
        <D.39867>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.39868>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.39866>:
        D.39869 = mini_get_debug_options ();
        D.39870 = D.39869->break_on_unverified;
        if (D.39870 != 0) goto <D.39871>; else goto unverified;
        <D.39871>:
        __asm__ __volatile__("int $03");
        <D.39864>:
        D.39815 = ip + 2;
        D.39816 = *D.39815;
        key = (int) D.39816;
        D.39872 = key > 8;
        D.39873 = (long int) D.39872;
        D.39874 = __builtin_expect (D.39873, 0);
        if (D.39874 != 0) goto <D.39875>; else goto <D.39876>;
        <D.39875>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11268, "key < TLS_KEY_NUM");
        <D.39876>:
        key.307 = (<unnamed type>) key;
        ins = mono_create_tls_get (cfg, key.307);
        if (ins == 0B) goto <D.39878>; else goto <D.39879>;
        <D.39878>:
        D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.31073 = D.31072 & 64;
        if (D.31073 != 0) goto <D.39880>; else goto <D.39881>;
        <D.39880>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 1) goto <D.39882>; else goto <D.39883>;
        <D.39882>:
        printf ("AOT disabled: %s:%d\n", "method-to-ir.c", 11273);
        <D.39883>:
        cfg->disable_aot = 1;
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 795;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.39884 = alloc_preg (cfg);
        D.39885 = (int) D.39884;
        ins->dreg = D.39885;
        ins->type = 3;
        goto <D.39886>;
        <D.39881>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 11278);
        <D.39886>:
        <D.39879>:
        ins->type = 3;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.39887>; else goto <D.39888>;
        <D.39887>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.39889>;
        <D.39888>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.39889>:
        sp.308 = sp;
        sp = sp.308 + 8;
        *sp.308 = ins;
        ip = ip + 6;
        goto <D.28356>;
      }
      <D.28392>:
      {
        struct MonoCallInst * call;

        D.39891 = cfg->dyn_call_var;
        if (D.39891 == 0B) goto <D.39892>; else goto <D.39893>;
        <D.39892>:
        D.31084 = mono_defaults.int_class;
        D.31085 = &D.31084->byval_arg;
        D.39894 = mono_compile_create_var (cfg, D.31085, 329);
        cfg->dyn_call_var = D.39894;
        D.39891 = cfg->dyn_call_var;
        D.39891 = cfg->dyn_call_var;
        D.39895 = D.39891->flags;
        D.39896 = D.39895 | 4;
        D.39891->flags = D.39896;
        <D.39893>:
        D.30673 = cfg->mempool;
        call = mono_mempool_alloc0 (D.30673, 192);
        call->inst.opcode = 361;
        call->inst.dreg = -1;
        call->inst.sreg3 = -1;
        D.39897 = call->inst.sreg3;
        call->inst.sreg2 = D.39897;
        D.39898 = call->inst.sreg2;
        call->inst.sreg1 = D.39898;
        D.30898 = cfg->ip;
        call->inst.cil_code = D.30898;
        ins = call;
        sp = sp + 18446744073709551600;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        ins->sreg1 = D.31862;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.32790 = D.32789->dreg;
        ins->sreg2 = D.32790;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.39899>; else goto <D.39900>;
        <D.39899>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.39901>;
        <D.39900>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.39901>:
        D.39902 = cfg->param_area;
        cfg->param_area = D.39902;
        ip = ip + 2;
        num_calls.309 = num_calls;
        num_calls = num_calls.309 + 1;
        D.39904 = num_calls.309 * 10;
        inline_costs = D.39904 + inline_costs;
        goto <D.28356>;
      }
      <D.28394>:
      D.32104 = ip + 5;
      if (D.32104 > end) goto <D.39905>; else goto <D.39906>;
      <D.39905>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.39907>; else goto <D.39908>;
      <D.39907>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.39909>; else goto <D.39910>;
      <D.39909>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.39910>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.39908>:
      D.39911 = mini_get_debug_options ();
      D.39912 = D.39911->break_on_unverified;
      if (D.39912 != 0) goto <D.39913>; else goto unverified;
      <D.39913>:
      __asm__ __volatile__("int $03");
      <D.39906>:
      D.32123 = ip + 1;
      D.32124 = *D.32123;
      D.32125 = (int) D.32124;
      emit_memory_barrier (cfg, D.32125);
      ip = ip + 5;
      goto <D.28356>;
      <D.28395>:
      {
        struct MonoInst * args[16];
        struct MonoInst * ad_ins;
        struct MonoInst * lmf_ins;
        struct MonoBasicBlock * next_bb;

        try
          {
            next_bb = 0B;
            D.31084 = mono_defaults.int_class;
            D.31085 = &D.31084->byval_arg;
            D.39914 = mono_compile_create_var (cfg, D.31085, 329);
            cfg->orig_domain_var = D.39914;
            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.30894 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30894;
            ins->prev = 0B;
            D.30895 = ins->prev;
            ins->next = D.30895;
            ins->opcode = 363;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30896 = ins->sreg3;
            ins->sreg2 = D.30896;
            D.30897 = ins->sreg2;
            ins->sreg1 = D.30897;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            ins->data.op[0].p = 0B;
            ins->type = 3;
            D.39915 = alloc_dreg (cfg, 3);
            D.39916 = (int) D.39915;
            ins->dreg = D.39916;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.39917>; else goto <D.39918>;
            <D.39917>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.39919>;
            <D.39918>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.39919>:
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.39920 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39920;
              inst->prev = 0B;
              D.39921 = inst->prev;
              inst->next = D.39921;
              inst->opcode = 428;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39922 = inst->sreg3;
              inst->sreg2 = D.39922;
              D.39923 = inst->sreg2;
              inst->sreg1 = D.39923;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              D.39924 = cfg->orig_domain_var;
              D.39925 = D.39924->dreg;
              inst->dreg = D.39925;
              D.31092 = ins->dreg;
              inst->sreg1 = D.31092;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.39926>; else goto <D.39927>;
              <D.39926>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.39928>;
              <D.39927>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.39928>:
            }
            ad_ins = mono_get_domain_intrinsic (cfg);
            lmf_ins = mono_get_lmf_intrinsic (cfg);
            D.39929 = mono_amd64_have_tls_get ();
            if (D.39929 != 0) goto <D.39930>; else goto <D.39931>;
            <D.39930>:
            D.39932 = ad_ins != 0B;
            D.39933 = lmf_ins != 0B;
            D.39934 = D.39932 & D.39933;
            if (D.39934 != 0) goto <D.39935>; else goto <D.39936>;
            <D.39935>:
            D.30673 = cfg->mempool;
            next_bb = mono_mempool_alloc0 (D.30673, 296);
            D.30781 = cfg->num_bblocks;
            D.39937 = D.30781;
            D.39938 = D.39937 + 1;
            cfg->num_bblocks = D.39938;
            D.39939 = (int) D.39937;
            next_bb->block_num = D.39939;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.39940>; else goto <D.39941>;
            <D.39940>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ad_ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ad_ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ad_ins;
            goto <D.39942>;
            <D.39941>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ad_ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.39942>:
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.39943 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.39943;
              inst->prev = 0B;
              D.39944 = inst->prev;
              inst->next = D.39944;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.39945 = inst->sreg3;
              inst->sreg2 = D.39945;
              D.39946 = inst->sreg2;
              inst->sreg1 = D.39946;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = -1;
              D.39947 = ad_ins->dreg;
              inst->sreg1 = D.39947;
              inst->data.op[1].const_val = 0;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.39948>; else goto <D.39949>;
              <D.39948>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.39950>;
              <D.39949>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.39950>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.39951 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.39951;
              ins->prev = 0B;
              D.39952 = ins->prev;
              ins->next = D.39952;
              ins->opcode = 560;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.39953 = ins->sreg3;
              ins->sreg2 = D.39953;
              D.39954 = ins->sreg2;
              ins->sreg1 = D.39954;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              if (0 != 0) goto <D.39955>; else goto <D.39956>;
              <D.39955>:
              D.30673 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30673, 296);
              D.30781 = cfg->num_bblocks;
              D.39957 = D.30781;
              D.39958 = D.39957 + 1;
              cfg->num_bblocks = D.39958;
              D.39959 = (int) D.39957;
              falsebb->block_num = D.39959;
              ins->data.op[0].target_block = next_bb;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, next_bb);
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.39960>; else goto <D.39961>;
              <D.39960>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.39962>;
              <D.39961>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.39962>:
              D.39963 = falsebb->cil_code;
              if (D.39963 != 0B) goto <D.39964>; else goto <D.39965>;
              <D.39964>:
              D.30804 = cfg->cil_offset_to_bb;
              D.39963 = falsebb->cil_code;
              D.39966 = (long int) D.39963;
              D.30809 = cfg->cil_start;
              D.30810 = (long int) D.30809;
              D.39967 = D.39966 - D.30810;
              D.39968 = (long unsigned int) D.39967;
              D.39969 = D.39968 * 8;
              D.39970 = D.30804 + D.39969;
              *D.39970 = falsebb;
              <D.39965>:
              D.30841 = cfg->real_offset;
              falsebb->real_offset = D.30841;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.39974>; else goto <D.39971>;
              <D.39974>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.39975 = D.30927->opcode;
              D.39976 = D.39975 + 64981;
              D.39977 = D.39976 <= 9;
              D.39978 = D.39975 + 64874;
              D.39979 = D.39978 <= 9;
              D.39980 = D.39977 | D.39979;
              if (D.39980 != 0) goto <D.39972>; else goto <D.39981>;
              <D.39981>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 <= 9) goto <D.39972>; else goto <D.39971>;
              <D.39972>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              D.34850 = *D.34849;
              if (D.34850 == 0B) goto <D.39982>; else goto <D.39971>;
              <D.39982>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              *D.34849 = falsebb;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              goto <D.39973>;
              <D.39971>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 == 0B) goto <D.39983>; else goto <D.39985>;
              <D.39985>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.39986 = D.30927->opcode;
              D.39987 = D.39986 != 446;
              D.39988 = D.39986 != 763;
              D.39989 = D.39987 & D.39988;
              if (D.39989 != 0) goto <D.39990>; else goto <D.39984>;
              <D.39990>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.39991 = D.30927->opcode;
              D.39992 = D.39991 + 64981;
              D.39993 = D.39992 > 9;
              D.39994 = D.39991 + 64874;
              D.39995 = D.39994 > 9;
              D.39996 = D.39993 & D.39995;
              if (D.39996 != 0) goto <D.39997>; else goto <D.39984>;
              <D.39997>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 > 9) goto <D.39983>; else goto <D.39984>;
              <D.39983>:
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              <D.39984>:
              <D.39973>:
              bblock.113 = cfg->cbb;
              bblock.113->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.39998>;
              <D.39956>:
              D.30673 = cfg->mempool;
              D.39999 = mono_mempool_alloc (D.30673, 16);
              ins->data.op[1].many_blocks = D.39999;
              D.40000 = ins->data.op[1].many_blocks;
              *D.40000 = next_bb;
              D.40000 = ins->data.op[1].many_blocks;
              D.40001 = D.40000 + 8;
              *D.40001 = 0B;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, next_bb);
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.40002>; else goto <D.40003>;
              <D.40002>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.40004>;
              <D.40003>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.40004>:
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.34874 = D.31072 & 8;
              if (D.34874 == 0) goto <D.40005>; else goto <D.40006>;
              <D.40005>:
              D.30673 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30673, 296);
              D.30781 = cfg->num_bblocks;
              D.40007 = D.30781;
              D.40008 = D.40007 + 1;
              cfg->num_bblocks = D.40008;
              D.40009 = (int) D.40007;
              falsebb->block_num = D.40009;
              D.40000 = ins->data.op[1].many_blocks;
              D.40001 = D.40000 + 8;
              *D.40001 = falsebb;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              D.39963 = falsebb->cil_code;
              if (D.39963 != 0B) goto <D.40010>; else goto <D.40011>;
              <D.40010>:
              D.30804 = cfg->cil_offset_to_bb;
              D.39963 = falsebb->cil_code;
              D.39966 = (long int) D.39963;
              D.30809 = cfg->cil_start;
              D.30810 = (long int) D.30809;
              D.39967 = D.39966 - D.30810;
              D.39968 = (long unsigned int) D.39967;
              D.39969 = D.39968 * 8;
              D.39970 = D.30804 + D.39969;
              *D.39970 = falsebb;
              <D.40011>:
              D.30841 = cfg->real_offset;
              falsebb->real_offset = D.30841;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.40015>; else goto <D.40012>;
              <D.40015>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.40016 = D.30927->opcode;
              D.40017 = D.40016 + 64981;
              D.40018 = D.40017 <= 9;
              D.40019 = D.40016 + 64874;
              D.40020 = D.40019 <= 9;
              D.40021 = D.40018 | D.40020;
              if (D.40021 != 0) goto <D.40013>; else goto <D.40022>;
              <D.40022>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 <= 9) goto <D.40013>; else goto <D.40012>;
              <D.40013>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              D.34850 = *D.34849;
              if (D.34850 == 0B) goto <D.40023>; else goto <D.40012>;
              <D.40023>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              *D.34849 = falsebb;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              goto <D.40014>;
              <D.40012>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 == 0B) goto <D.40024>; else goto <D.40026>;
              <D.40026>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.40027 = D.30927->opcode;
              D.40028 = D.40027 != 446;
              D.40029 = D.40027 != 763;
              D.40030 = D.40028 & D.40029;
              if (D.40030 != 0) goto <D.40031>; else goto <D.40025>;
              <D.40031>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.40032 = D.30927->opcode;
              D.40033 = D.40032 + 64981;
              D.40034 = D.40033 > 9;
              D.40035 = D.40032 + 64874;
              D.40036 = D.40035 > 9;
              D.40037 = D.40034 & D.40036;
              if (D.40037 != 0) goto <D.40038>; else goto <D.40025>;
              <D.40038>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 > 9) goto <D.40024>; else goto <D.40025>;
              <D.40024>:
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              <D.40025>:
              <D.40014>:
              bblock.113 = cfg->cbb;
              bblock.113->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.40039>;
              <D.40006>:
              bblock.113 = cfg->cbb;
              bblock.113->extended = 1;
              <D.40039>:
              <D.39998>:
            }
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.40040>; else goto <D.40041>;
            <D.40040>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = lmf_ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            lmf_ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = lmf_ins;
            goto <D.40042>;
            <D.40041>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = lmf_ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.40042>:
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.40043 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40043;
              inst->prev = 0B;
              D.40044 = inst->prev;
              inst->next = D.40044;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40045 = inst->sreg3;
              inst->sreg2 = D.40045;
              D.40046 = inst->sreg2;
              inst->sreg1 = D.40046;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              inst->dreg = -1;
              D.40047 = lmf_ins->dreg;
              inst->sreg1 = D.40047;
              inst->data.op[1].const_val = 0;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.40048>; else goto <D.40049>;
              <D.40048>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.40050>;
              <D.40049>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.40050>:
            }
            {
              struct MonoInst * ins;
              struct MonoBasicBlock * falsebb;

              D.30673 = cfg->mempool;
              ins = mono_mempool_alloc (D.30673, 80);
              ins->data.op[1].const_val = 0;
              D.40051 = ins->data.op[1].const_val;
              ins->data.op[0].const_val = D.40051;
              ins->prev = 0B;
              D.40052 = ins->prev;
              ins->next = D.40052;
              ins->opcode = 560;
              ins->flags = 0;
              ins->type = 0;
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.40053 = ins->sreg3;
              ins->sreg2 = D.40053;
              D.40054 = ins->sreg2;
              ins->sreg1 = D.40054;
              D.30898 = cfg->ip;
              ins->cil_code = D.30898;
              if (0 != 0) goto <D.40055>; else goto <D.40056>;
              <D.40055>:
              D.30673 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30673, 296);
              D.30781 = cfg->num_bblocks;
              D.40057 = D.30781;
              D.40058 = D.40057 + 1;
              cfg->num_bblocks = D.40058;
              D.40059 = (int) D.40057;
              falsebb->block_num = D.40059;
              ins->data.op[0].target_block = next_bb;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, next_bb);
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.40060>; else goto <D.40061>;
              <D.40060>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.40062>;
              <D.40061>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.40062>:
              D.40063 = falsebb->cil_code;
              if (D.40063 != 0B) goto <D.40064>; else goto <D.40065>;
              <D.40064>:
              D.30804 = cfg->cil_offset_to_bb;
              D.40063 = falsebb->cil_code;
              D.40066 = (long int) D.40063;
              D.30809 = cfg->cil_start;
              D.30810 = (long int) D.30809;
              D.40067 = D.40066 - D.30810;
              D.40068 = (long unsigned int) D.40067;
              D.40069 = D.40068 * 8;
              D.40070 = D.30804 + D.40069;
              *D.40070 = falsebb;
              <D.40065>:
              D.30841 = cfg->real_offset;
              falsebb->real_offset = D.30841;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.40074>; else goto <D.40071>;
              <D.40074>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.40075 = D.30927->opcode;
              D.40076 = D.40075 + 64981;
              D.40077 = D.40076 <= 9;
              D.40078 = D.40075 + 64874;
              D.40079 = D.40078 <= 9;
              D.40080 = D.40077 | D.40079;
              if (D.40080 != 0) goto <D.40072>; else goto <D.40081>;
              <D.40081>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 <= 9) goto <D.40072>; else goto <D.40071>;
              <D.40072>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              D.34850 = *D.34849;
              if (D.34850 == 0B) goto <D.40082>; else goto <D.40071>;
              <D.40082>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              *D.34849 = falsebb;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              goto <D.40073>;
              <D.40071>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 == 0B) goto <D.40083>; else goto <D.40085>;
              <D.40085>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.40086 = D.30927->opcode;
              D.40087 = D.40086 != 446;
              D.40088 = D.40086 != 763;
              D.40089 = D.40087 & D.40088;
              if (D.40089 != 0) goto <D.40090>; else goto <D.40084>;
              <D.40090>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.40091 = D.30927->opcode;
              D.40092 = D.40091 + 64981;
              D.40093 = D.40092 > 9;
              D.40094 = D.40091 + 64874;
              D.40095 = D.40094 > 9;
              D.40096 = D.40093 & D.40095;
              if (D.40096 != 0) goto <D.40097>; else goto <D.40084>;
              <D.40097>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 > 9) goto <D.40083>; else goto <D.40084>;
              <D.40083>:
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              <D.40084>:
              <D.40073>:
              bblock.113 = cfg->cbb;
              bblock.113->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.40098>;
              <D.40056>:
              D.30673 = cfg->mempool;
              D.40099 = mono_mempool_alloc (D.30673, 16);
              ins->data.op[1].many_blocks = D.40099;
              D.40100 = ins->data.op[1].many_blocks;
              *D.40100 = next_bb;
              D.40100 = ins->data.op[1].many_blocks;
              D.40101 = D.40100 + 8;
              *D.40101 = 0B;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, next_bb);
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.40102>; else goto <D.40103>;
              <D.40102>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = ins;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              ins->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              goto <D.40104>;
              <D.40103>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = ins;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.40104>:
              D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.34874 = D.31072 & 8;
              if (D.34874 == 0) goto <D.40105>; else goto <D.40106>;
              <D.40105>:
              D.30673 = cfg->mempool;
              falsebb = mono_mempool_alloc0 (D.30673, 296);
              D.30781 = cfg->num_bblocks;
              D.40107 = D.30781;
              D.40108 = D.40107 + 1;
              cfg->num_bblocks = D.40108;
              D.40109 = (int) D.40107;
              falsebb->block_num = D.40109;
              D.40100 = ins->data.op[1].many_blocks;
              D.40101 = D.40100 + 8;
              *D.40101 = falsebb;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              D.40063 = falsebb->cil_code;
              if (D.40063 != 0B) goto <D.40110>; else goto <D.40111>;
              <D.40110>:
              D.30804 = cfg->cil_offset_to_bb;
              D.40063 = falsebb->cil_code;
              D.40066 = (long int) D.40063;
              D.30809 = cfg->cil_start;
              D.30810 = (long int) D.30809;
              D.40067 = D.40066 - D.30810;
              D.40068 = (long unsigned int) D.40067;
              D.40069 = D.40068 * 8;
              D.40070 = D.30804 + D.40069;
              *D.40070 = falsebb;
              <D.40111>:
              D.30841 = cfg->real_offset;
              falsebb->real_offset = D.30841;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.40115>; else goto <D.40112>;
              <D.40115>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.40116 = D.30927->opcode;
              D.40117 = D.40116 + 64981;
              D.40118 = D.40117 <= 9;
              D.40119 = D.40116 + 64874;
              D.40120 = D.40119 <= 9;
              D.40121 = D.40118 | D.40120;
              if (D.40121 != 0) goto <D.40113>; else goto <D.40122>;
              <D.40122>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 <= 9) goto <D.40113>; else goto <D.40112>;
              <D.40113>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              D.34850 = *D.34849;
              if (D.34850 == 0B) goto <D.40123>; else goto <D.40112>;
              <D.40123>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34848 = D.30927->data.op[1].many_blocks;
              D.34849 = D.34848 + 8;
              *D.34849 = falsebb;
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              goto <D.40114>;
              <D.40112>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 == 0B) goto <D.40124>; else goto <D.40126>;
              <D.40126>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.40127 = D.30927->opcode;
              D.40128 = D.40127 != 446;
              D.40129 = D.40127 != 763;
              D.40130 = D.40128 & D.40129;
              if (D.40130 != 0) goto <D.40131>; else goto <D.40125>;
              <D.40131>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.40132 = D.30927->opcode;
              D.40133 = D.40132 + 64981;
              D.40134 = D.40133 > 9;
              D.40135 = D.40132 + 64874;
              D.40136 = D.40135 > 9;
              D.40137 = D.40134 & D.40136;
              if (D.40137 != 0) goto <D.40138>; else goto <D.40125>;
              <D.40138>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.34846 = D.30927->opcode;
              D.34847 = D.34846 + 64884;
              if (D.34847 > 9) goto <D.40124>; else goto <D.40125>;
              <D.40124>:
              bblock.113 = cfg->cbb;
              mono_link_bblock (cfg, bblock.113, falsebb);
              <D.40125>:
              <D.40114>:
              bblock.113 = cfg->cbb;
              bblock.113->next_bb = falsebb;
              cfg->cbb = falsebb;
              goto <D.40139>;
              <D.40106>:
              bblock.113 = cfg->cbb;
              bblock.113->extended = 1;
              <D.40139>:
              <D.40098>:
            }
            <D.39936>:
            <D.39931>:
            D.31072 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.31073 = D.31072 & 64;
            if (D.31073 != 0) goto <D.40140>; else goto <D.40141>;
            <D.40140>:
            D.30673 = cfg->mempool;
            D.40142 = mono_mempool_alloc (D.30673, 80);
            args[0] = D.40142;
            D.40143 = args[0];
            D.40143 = args[0];
            D.40143->data.op[1].const_val = 0;
            D.40144 = D.40143->data.op[1].const_val;
            D.40143->data.op[0].const_val = D.40144;
            D.40143 = args[0];
            D.40143 = args[0];
            D.40143->prev = 0B;
            D.40145 = D.40143->prev;
            D.40143->next = D.40145;
            D.40143 = args[0];
            D.40143->opcode = 363;
            D.40143 = args[0];
            D.40143->flags = 0;
            D.40143 = args[0];
            D.40143->type = 0;
            D.40143 = args[0];
            D.40143->dreg = -1;
            D.40143 = args[0];
            D.40143 = args[0];
            D.40143 = args[0];
            D.40143->sreg3 = -1;
            D.40146 = D.40143->sreg3;
            D.40143->sreg2 = D.40146;
            D.40147 = D.40143->sreg2;
            D.40143->sreg1 = D.40147;
            D.40143 = args[0];
            D.30898 = cfg->ip;
            D.40143->cil_code = D.30898;
            D.40143 = args[0];
            D.40143->data.op[0].p = 0B;
            D.40143 = args[0];
            D.40143->type = 3;
            D.40143 = args[0];
            D.40148 = alloc_dreg (cfg, 3);
            D.40149 = (int) D.40148;
            D.40143->dreg = D.40149;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.40150>; else goto <D.40151>;
            <D.40150>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.40143 = args[0];
            D.30927->next = D.40143;
            D.40143 = args[0];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.40143->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.40143 = args[0];
            bblock.113->last_ins = D.40143;
            goto <D.40152>;
            <D.40151>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.40143 = args[0];
            bblock.113->last_ins = D.40143;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.40152>:
            goto <D.40153>;
            <D.40141>:
            D.30673 = cfg->mempool;
            D.40154 = mono_mempool_alloc (D.30673, 80);
            args[0] = D.40154;
            D.40143 = args[0];
            D.40143 = args[0];
            D.40143->data.op[1].const_val = 0;
            D.40144 = D.40143->data.op[1].const_val;
            D.40143->data.op[0].const_val = D.40144;
            D.40143 = args[0];
            D.40143 = args[0];
            D.40143->prev = 0B;
            D.40145 = D.40143->prev;
            D.40143->next = D.40145;
            D.40143 = args[0];
            D.40143->opcode = 363;
            D.40143 = args[0];
            D.40143->flags = 0;
            D.40143 = args[0];
            D.40143->type = 0;
            D.40143 = args[0];
            D.40143->dreg = -1;
            D.40143 = args[0];
            D.40143 = args[0];
            D.40143 = args[0];
            D.40143->sreg3 = -1;
            D.40146 = D.40143->sreg3;
            D.40143->sreg2 = D.40146;
            D.40147 = D.40143->sreg2;
            D.40143->sreg1 = D.40147;
            D.40143 = args[0];
            D.30898 = cfg->ip;
            D.40143->cil_code = D.30898;
            D.40143 = args[0];
            D.30697 = cfg->domain;
            D.40143->data.op[0].p = D.30697;
            D.40143 = args[0];
            D.40143->type = 3;
            D.40143 = args[0];
            D.40155 = alloc_dreg (cfg, 3);
            D.40156 = (int) D.40155;
            D.40143->dreg = D.40156;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.40157>; else goto <D.40158>;
            <D.40157>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.40143 = args[0];
            D.30927->next = D.40143;
            D.40143 = args[0];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.40143->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.40143 = args[0];
            bblock.113->last_ins = D.40143;
            goto <D.40159>;
            <D.40158>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.40143 = args[0];
            bblock.113->last_ins = D.40143;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.40159>:
            <D.40153>:
            ins = mono_emit_jit_icall (cfg, mono_jit_thread_attach, &args);
            {
              struct MonoInst * inst;

              D.30673 = cfg->mempool;
              inst = mono_mempool_alloc (D.30673, 80);
              inst->data.op[1].const_val = 0;
              D.40160 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.40160;
              inst->prev = 0B;
              D.40161 = inst->prev;
              inst->next = D.40161;
              inst->opcode = 428;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.40162 = inst->sreg3;
              inst->sreg2 = D.40162;
              D.40163 = inst->sreg2;
              inst->sreg1 = D.40163;
              D.30898 = cfg->ip;
              inst->cil_code = D.30898;
              D.39924 = cfg->orig_domain_var;
              D.39925 = D.39924->dreg;
              inst->dreg = D.39925;
              D.31092 = ins->dreg;
              inst->sreg1 = D.31092;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              if (D.30927 != 0B) goto <D.40164>; else goto <D.40165>;
              <D.40164>:
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              D.30927->next = inst;
              bblock.113 = cfg->cbb;
              D.30927 = bblock.113->last_ins;
              inst->prev = D.30927;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              goto <D.40166>;
              <D.40165>:
              bblock.113 = cfg->cbb;
              bblock.113 = cfg->cbb;
              bblock.113->last_ins = inst;
              D.30927 = bblock.113->last_ins;
              bblock.113->code = D.30927;
              <D.40166>:
            }
            if (next_bb != 0B) goto <D.40167>; else goto <D.40168>;
            <D.40167>:
            D.40169 = next_bb->cil_code;
            if (D.40169 != 0B) goto <D.40170>; else goto <D.40171>;
            <D.40170>:
            D.30804 = cfg->cil_offset_to_bb;
            D.40169 = next_bb->cil_code;
            D.40172 = (long int) D.40169;
            D.30809 = cfg->cil_start;
            D.30810 = (long int) D.30809;
            D.40173 = D.40172 - D.30810;
            D.40174 = (long unsigned int) D.40173;
            D.40175 = D.40174 * 8;
            D.40176 = D.30804 + D.40175;
            *D.40176 = next_bb;
            <D.40171>:
            D.30841 = cfg->real_offset;
            next_bb->real_offset = D.30841;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.40180>; else goto <D.40177>;
            <D.40180>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.40181 = D.30927->opcode;
            D.40182 = D.40181 + 64981;
            D.40183 = D.40182 <= 9;
            D.40184 = D.40181 + 64874;
            D.40185 = D.40184 <= 9;
            D.40186 = D.40183 | D.40185;
            if (D.40186 != 0) goto <D.40178>; else goto <D.40187>;
            <D.40187>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.34846 = D.30927->opcode;
            D.34847 = D.34846 + 64884;
            if (D.34847 <= 9) goto <D.40178>; else goto <D.40177>;
            <D.40178>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.34848 = D.30927->data.op[1].many_blocks;
            D.34849 = D.34848 + 8;
            D.34850 = *D.34849;
            if (D.34850 == 0B) goto <D.40188>; else goto <D.40177>;
            <D.40188>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.34848 = D.30927->data.op[1].many_blocks;
            D.34849 = D.34848 + 8;
            *D.34849 = next_bb;
            bblock.113 = cfg->cbb;
            mono_link_bblock (cfg, bblock.113, next_bb);
            goto <D.40179>;
            <D.40177>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 == 0B) goto <D.40189>; else goto <D.40191>;
            <D.40191>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.40192 = D.30927->opcode;
            D.40193 = D.40192 != 446;
            D.40194 = D.40192 != 763;
            D.40195 = D.40193 & D.40194;
            if (D.40195 != 0) goto <D.40196>; else goto <D.40190>;
            <D.40196>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.40197 = D.30927->opcode;
            D.40198 = D.40197 + 64981;
            D.40199 = D.40198 > 9;
            D.40200 = D.40197 + 64874;
            D.40201 = D.40200 > 9;
            D.40202 = D.40199 & D.40201;
            if (D.40202 != 0) goto <D.40203>; else goto <D.40190>;
            <D.40203>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.34846 = D.30927->opcode;
            D.34847 = D.34846 + 64884;
            if (D.34847 > 9) goto <D.40189>; else goto <D.40190>;
            <D.40189>:
            bblock.113 = cfg->cbb;
            mono_link_bblock (cfg, bblock.113, next_bb);
            <D.40190>:
            <D.40179>:
            bblock.113 = cfg->cbb;
            bblock.113->next_bb = next_bb;
            cfg->cbb = next_bb;
            bblock.113 = cfg->cbb;
            bblock = bblock.113;
            <D.40168>:
            ip = ip + 2;
            goto <D.28356>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.28408>:
      {
        struct MonoInst * args[16];

        try
          {
            D.40204 = alloc_ireg (cfg);
            dreg = (int) D.40204;
            D.30673 = cfg->mempool;
            D.40205 = mono_mempool_alloc (D.30673, 80);
            args[0] = D.40205;
            D.40206 = args[0];
            D.40206 = args[0];
            D.40206->data.op[1].const_val = 0;
            D.40207 = D.40206->data.op[1].const_val;
            D.40206->data.op[0].const_val = D.40207;
            D.40206 = args[0];
            D.40206 = args[0];
            D.40206->prev = 0B;
            D.40208 = D.40206->prev;
            D.40206->next = D.40208;
            D.40206 = args[0];
            D.40206->opcode = 428;
            D.40206 = args[0];
            D.40206->flags = 0;
            D.40206 = args[0];
            D.40206->type = 0;
            D.40206 = args[0];
            D.40206->dreg = -1;
            D.40206 = args[0];
            D.40206 = args[0];
            D.40206 = args[0];
            D.40206->sreg3 = -1;
            D.40209 = D.40206->sreg3;
            D.40206->sreg2 = D.40209;
            D.40210 = D.40206->sreg2;
            D.40206->sreg1 = D.40210;
            D.40206 = args[0];
            D.30898 = cfg->ip;
            D.40206->cil_code = D.30898;
            D.40206 = args[0];
            D.40206->dreg = dreg;
            D.40206 = args[0];
            D.39924 = cfg->orig_domain_var;
            D.39925 = D.39924->dreg;
            D.40206->sreg1 = D.39925;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.40211>; else goto <D.40212>;
            <D.40211>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.40206 = args[0];
            D.30927->next = D.40206;
            D.40206 = args[0];
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.40206->prev = D.30927;
            bblock.113 = cfg->cbb;
            D.40206 = args[0];
            bblock.113->last_ins = D.40206;
            goto <D.40213>;
            <D.40212>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            D.40206 = args[0];
            bblock.113->last_ins = D.40206;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.40213>:
            mono_emit_jit_icall (cfg, mono_jit_set_domain, &args);
            ip = ip + 2;
            goto <D.28356>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.28410>:
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      D.32019 = (int) D.31711;
      monoeg_g_log (0B, 4, "opcode 0x%02x 0x%02x not handled", 240, D.32019);
      <D.28411>:
      goto <D.28411>;
      <D.28356>:
      goto <D.27670>;
      <D.28412>:
      D.31691 = ip + 2;
      if (D.31691 > end) goto <D.40214>; else goto <D.40215>;
      <D.40214>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40216>; else goto <D.40217>;
      <D.40216>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40218>; else goto <D.40219>;
      <D.40218>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40219>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40217>:
      D.40220 = mini_get_debug_options ();
      D.40221 = D.40220->break_on_unverified;
      if (D.40221 != 0) goto <D.40222>; else goto unverified;
      <D.40222>:
      __asm__ __volatile__("int $03");
      <D.40215>:
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      D.32019 = (int) D.31711;
      switch (D.32019) <default: <D.28493>, case 0: <D.28413>, case 1: <D.28419>, case 2: <D.28420>, case 3: <D.28421>, case 4: <D.28422>, case 5: <D.28423>, case 6: <D.28425>, case 7: <D.28436>, case 8: <D.28488>, case 9: <D.28438>, case 10: <D.28439>, case 11: <D.28442>, case 12: <D.28443>, case 13: <D.28444>, case 14: <D.28448>, case 15: <D.28449>, case 16: <D.28489>, case 17: <D.28450>, case 18: <D.28458>, case 19: <D.28459>, case 20: <D.28460>, case 21: <D.28461>, case 22: <D.28463>, case 23: <D.28464>, case 24: <D.28465>, case 25: <D.28469>, case 26: <D.28470>, case 27: <D.28491>, case 28: <D.28477>, case 29: <D.28482>, case 30: <D.28487>, case 34: <D.28490>, case 36: <D.28492>>
      <D.28413>:
      {
        struct MonoInst * addr;
        struct MonoInst * vtvar;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31362 = header->max_stack;
        D.31586 = (long int) D.31362;
        if (D.31452 >= D.31586) goto <D.40223>; else goto <D.40224>;
        <D.40223>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.40225>; else goto <D.40226>;
        <D.40225>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.40227>; else goto <D.40228>;
        <D.40227>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40228>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40226>:
        D.40229 = mini_get_debug_options ();
        D.40230 = D.40229->break_on_unverified;
        if (D.40230 != 0) goto <D.40231>; else goto unverified;
        <D.40231>:
        __asm__ __volatile__("int $03");
        <D.40224>:
        D.40232 = mono_defaults.argumenthandle_class;
        D.40233 = &D.40232->byval_arg;
        vtvar = mono_compile_create_var (cfg, D.40233, 329);
        D.30673 = cfg->mempool;
        addr = mono_mempool_alloc (D.30673, 80);
        addr->data.op[1].const_val = 0;
        D.40234 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.40234;
        addr->prev = 0B;
        D.40235 = addr->prev;
        addr->next = D.40235;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.40236 = addr->sreg3;
        addr->sreg2 = D.40236;
        D.40237 = addr->sreg2;
        addr->sreg1 = D.40237;
        D.30898 = cfg->ip;
        addr->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.40238 = vtvar->data.op[0].const_val;
        D.40239 = (long unsigned int) D.40238;
        D.40240 = D.40239 * 8;
        D.40241 = D.31416 + D.40240;
        D.40242 = *D.40241;
        addr->data.op[0].p = D.40242;
        D.31416 = cfg->varinfo;
        D.40238 = vtvar->data.op[0].const_val;
        D.40239 = (long unsigned int) D.40238;
        D.40240 = D.40239 * 8;
        D.40241 = D.31416 + D.40240;
        D.40242 = *D.40241;
        D.31416 = cfg->varinfo;
        D.40238 = vtvar->data.op[0].const_val;
        D.40239 = (long unsigned int) D.40238;
        D.40240 = D.40239 * 8;
        D.40241 = D.31416 + D.40240;
        D.40242 = *D.40241;
        D.40243 = D.40242->flags;
        D.40244 = D.40243 | 16;
        D.40242->flags = D.40244;
        addr->type = 5;
        D.31416 = cfg->varinfo;
        D.40238 = vtvar->data.op[0].const_val;
        D.40239 = (long unsigned int) D.40238;
        D.40240 = D.40239 * 8;
        D.40241 = D.31416 + D.40240;
        D.40242 = *D.40241;
        D.40245 = D.40242->klass;
        addr->klass = D.40245;
        D.40246 = alloc_dreg (cfg, 5);
        D.40247 = (int) D.40246;
        addr->dreg = D.40247;
        cfg->has_indirection = 1;
        D.30822 = cfg->gsharedvt;
        D.31766 = D.30822 != 0;
        D.31767 = (long int) D.31766;
        D.31768 = __builtin_expect (D.31767, 0);
        if (D.31768 != 0) goto <D.40248>; else goto <D.40249>;
        <D.40248>:
        D.31416 = cfg->varinfo;
        D.40238 = vtvar->data.op[0].const_val;
        D.40239 = (long unsigned int) D.40238;
        D.40240 = D.40239 * 8;
        D.40241 = D.31416 + D.40240;
        D.40242 = *D.40241;
        D.40250 = D.40242->data.op[1].vtype;
        D.40251 = mini_is_gsharedvt_variable_type (cfg, D.40250);
        if (D.40251 != 0) goto <D.40252>; else goto <D.40253>;
        <D.40252>:
        handle_gsharedvt_ldaddr (cfg);
        <D.40253>:
        <D.40249>:
        if (0 != 0) goto <D.40254>; else goto <D.40255>;
        <D.40254>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.31416 = cfg->varinfo;
          D.40238 = vtvar->data.op[0].const_val;
          D.40239 = (long unsigned int) D.40238;
          D.40240 = D.40239 * 8;
          D.40241 = D.31416 + D.40240;
          D.40242 = *D.40241;
          D.40257 = D.40242->dreg;
          D.40258 = D.40257 + 1;
          D.40259 = (unsigned int) D.40258;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.40259 < D.31781) goto <D.40260>; else goto <D.40261>;
          <D.40260>:
          D.31784 = cfg->vreg_to_inst;
          D.31416 = cfg->varinfo;
          D.40238 = vtvar->data.op[0].const_val;
          D.40239 = (long unsigned int) D.40238;
          D.40240 = D.40239 * 8;
          D.40241 = D.31416 + D.40240;
          D.40242 = *D.40241;
          D.40257 = D.40242->dreg;
          D.40262 = (sizetype) D.40257;
          D.40263 = D.40262 + 1;
          D.40264 = D.40263 * 8;
          D.40265 = D.31784 + D.40264;
          iftmp.310 = *D.40265;
          goto <D.40266>;
          <D.40261>:
          iftmp.310 = 0B;
          <D.40266>:
          var1 = iftmp.310;
          D.31416 = cfg->varinfo;
          D.40238 = vtvar->data.op[0].const_val;
          D.40239 = (long unsigned int) D.40238;
          D.40240 = D.40239 * 8;
          D.40241 = D.31416 + D.40240;
          D.40242 = *D.40241;
          D.40257 = D.40242->dreg;
          D.40268 = D.40257 + 2;
          D.40269 = (unsigned int) D.40268;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.40269 < D.31781) goto <D.40270>; else goto <D.40271>;
          <D.40270>:
          D.31784 = cfg->vreg_to_inst;
          D.31416 = cfg->varinfo;
          D.40238 = vtvar->data.op[0].const_val;
          D.40239 = (long unsigned int) D.40238;
          D.40240 = D.40239 * 8;
          D.40241 = D.31416 + D.40240;
          D.40242 = *D.40241;
          D.40257 = D.40242->dreg;
          D.40262 = (sizetype) D.40257;
          D.40272 = D.40262 + 2;
          D.40273 = D.40272 * 8;
          D.40274 = D.31784 + D.40273;
          iftmp.311 = *D.40274;
          goto <D.40275>;
          <D.40271>:
          iftmp.311 = 0B;
          <D.40275>:
          var2 = iftmp.311;
          D.40276 = var1 == 0B;
          D.40277 = (long int) D.40276;
          D.40278 = __builtin_expect (D.40277, 0);
          if (D.40278 != 0) goto <D.40279>; else goto <D.40280>;
          <D.40279>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11394, "var1");
          <D.40280>:
          D.40281 = var2 == 0B;
          D.40282 = (long int) D.40281;
          D.40283 = __builtin_expect (D.40282, 0);
          if (D.40283 != 0) goto <D.40284>; else goto <D.40285>;
          <D.40284>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11394, "var2");
          <D.40285>:
          D.40286 = var1->flags;
          D.40287 = D.40286 | 16;
          var1->flags = D.40287;
          D.40288 = var2->flags;
          D.40289 = D.40288 | 16;
          var2->flags = D.40289;
        }
        <D.40255>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.40290>; else goto <D.40291>;
        <D.40290>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = addr;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        addr->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = addr;
        goto <D.40292>;
        <D.40291>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = addr;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.40292>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 373;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->dreg = -1;
        D.40293 = addr->dreg;
        ins->sreg1 = D.40293;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.40294>; else goto <D.40295>;
        <D.40294>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.40296>;
        <D.40295>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.40296>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 428;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.40238 = vtvar->data.op[0].const_val;
        D.40239 = (long unsigned int) D.40238;
        D.40240 = D.40239 * 8;
        D.40241 = D.31416 + D.40240;
        D.40242 = *D.40241;
        D.40250 = D.40242->data.op[1].vtype;
        D.40297 = mono_type_to_regmove (cfg, D.40250);
        D.40298 = (short unsigned int) D.40297;
        ins->opcode = D.40298;
        D.31416 = cfg->varinfo;
        D.40238 = vtvar->data.op[0].const_val;
        D.40239 = (long unsigned int) D.40238;
        D.40240 = D.40239 * 8;
        D.40241 = D.31416 + D.40240;
        D.40242 = *D.40241;
        D.40250 = D.40242->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.40250, ins);
        D.31416 = cfg->varinfo;
        D.40238 = vtvar->data.op[0].const_val;
        D.40239 = (long unsigned int) D.40238;
        D.40240 = D.40239 * 8;
        D.40241 = D.31416 + D.40240;
        D.40242 = *D.40241;
        D.40245 = D.40242->klass;
        ins->klass = D.40245;
        D.31416 = cfg->varinfo;
        D.40238 = vtvar->data.op[0].const_val;
        D.40239 = (long unsigned int) D.40238;
        D.40240 = D.40239 * 8;
        D.40241 = D.31416 + D.40240;
        D.40242 = *D.40241;
        D.40257 = D.40242->dreg;
        ins->sreg1 = D.40257;
        D.31426 = ins->type;
        D.31427 = (<unnamed type>) D.31426;
        D.40299 = alloc_dreg (cfg, D.31427);
        D.40300 = (int) D.40299;
        ins->dreg = D.40300;
        D.31430 = ins->opcode;
        if (D.31430 == 431) goto <D.40301>; else goto <D.40302>;
        <D.40301>:
        D.31416 = cfg->varinfo;
        D.40238 = vtvar->data.op[0].const_val;
        D.40239 = (long unsigned int) D.40238;
        D.40240 = D.40239 * 8;
        D.40241 = D.31416 + D.40240;
        D.40242 = *D.40241;
        D.40250 = D.40242->data.op[1].vtype;
        D.40303 = mono_class_from_mono_type (D.40250);
        ins->klass = D.40303;
        <D.40302>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.40304>; else goto <D.40305>;
        <D.40304>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.40306>;
        <D.40305>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.40306>:
        ins->type = 7;
        D.40232 = mono_defaults.argumenthandle_class;
        ins->klass = D.40232;
        sp.312 = sp;
        sp = sp.312 + 8;
        *sp.312 = ins;
        ip = ip + 2;
        goto <D.28418>;
      }
      <D.28419>:
      <D.28420>:
      <D.28421>:
      <D.28422>:
      <D.28423>:
      {
        struct MonoInst * cmp;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 15) goto <D.40308>; else goto <D.40309>;
        <D.40308>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.40310>; else goto <D.40311>;
        <D.40310>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.40312>; else goto <D.40313>;
        <D.40312>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40313>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40311>:
        D.40314 = mini_get_debug_options ();
        D.40315 = D.40314->break_on_unverified;
        if (D.40315 != 0) goto <D.40316>; else goto unverified;
        <D.40316>:
        __asm__ __volatile__("int $03");
        <D.40309>:
        D.30673 = cfg->mempool;
        cmp = mono_mempool_alloc (D.30673, 80);
        cmp->data.op[1].const_val = 0;
        D.40317 = cmp->data.op[1].const_val;
        cmp->data.op[0].const_val = D.40317;
        cmp->prev = 0B;
        D.40318 = cmp->prev;
        cmp->next = D.40318;
        D.31710 = ip + 1;
        D.31711 = *D.31710;
        D.40319 = (short unsigned int) D.31711;
        D.40320 = D.40319 + 449;
        cmp->opcode = D.40320;
        cmp->flags = 0;
        cmp->type = 0;
        cmp->dreg = -1;
        cmp->sreg3 = -1;
        D.40321 = cmp->sreg3;
        cmp->sreg2 = D.40321;
        D.40322 = cmp->sreg2;
        cmp->sreg1 = D.40322;
        D.30898 = cfg->ip;
        cmp->cil_code = D.30898;
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        D.40323 = cmp->opcode;
        ins->opcode = D.40323;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        sp = sp + 18446744073709551600;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        cmp->sreg1 = D.31862;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.32790 = D.32789->dreg;
        cmp->sreg2 = D.32790;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.31680 = *sp;
        type_from_op (cmp, D.31680, D.32789);
        D.40324 = cmp->type;
        if (D.40324 == 0) goto <D.40325>; else goto <D.40326>;
        <D.40325>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.40327>; else goto <D.40328>;
        <D.40327>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.40329>; else goto <D.40330>;
        <D.40329>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40330>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40328>:
        D.40331 = mini_get_debug_options ();
        D.40332 = D.40331->break_on_unverified;
        if (D.40332 != 0) goto <D.40333>; else goto unverified;
        <D.40333>:
        __asm__ __volatile__("int $03");
        <D.40326>:
        D.31680 = *sp;
        D.33383 = D.31680->type;
        if (D.33383 == 2) goto <D.40334>; else goto <D.40337>;
        <D.40337>:
        D.31680 = *sp;
        D.40338 = D.31680->type;
        D.40339 = D.40338 == 3;
        D.40340 = D.40338 == 6;
        D.40341 = D.40339 | D.40340;
        if (D.40341 != 0) goto <D.40334>; else goto <D.40342>;
        <D.40342>:
        D.31680 = *sp;
        D.33383 = D.31680->type;
        if (D.33383 == 5) goto <D.40334>; else goto <D.40335>;
        <D.40334>:
        cmp->opcode = 325;
        goto <D.40336>;
        <D.40335>:
        D.31680 = *sp;
        D.33383 = D.31680->type;
        if (D.33383 == 4) goto <D.40343>; else goto <D.40344>;
        <D.40343>:
        cmp->opcode = 324;
        goto <D.40345>;
        <D.40344>:
        cmp->opcode = 326;
        <D.40345>:
        <D.40336>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.40346>; else goto <D.40347>;
        <D.40346>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = cmp;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        cmp->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = cmp;
        goto <D.40348>;
        <D.40347>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = cmp;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.40348>:
        ins->type = 1;
        D.31426 = ins->type;
        D.31427 = (<unnamed type>) D.31426;
        D.40349 = alloc_dreg (cfg, D.31427);
        D.40350 = (int) D.40349;
        ins->dreg = D.40350;
        D.32788 = sp + 8;
        D.32789 = *D.32788;
        D.31680 = *sp;
        type_from_op (ins, D.31680, D.32789);
        D.40323 = cmp->opcode;
        if (D.40323 == 324) goto <D.40351>; else goto <D.40352>;
        <D.40351>:
        cmp->opcode = 316;
        D.40353 = cmp->sreg1;
        ins->sreg1 = D.40353;
        D.40322 = cmp->sreg2;
        ins->sreg2 = D.40322;
        <D.40352>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.40354>; else goto <D.40355>;
        <D.40354>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.40356>;
        <D.40355>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.40356>:
        sp.313 = sp;
        sp = sp.313 + 8;
        *sp.313 = ins;
        ip = ip + 2;
        goto <D.28418>;
      }
      <D.28425>:
      {
        struct MonoInst * argconst;
        struct MonoMethod * cil_method;

        try
          {
            sp.77 = (long int) sp;
            stack_start.78 = (long int) stack_start;
            D.31451 = sp.77 - stack_start.78;
            D.31452 = D.31451 /[ex] 8;
            D.31362 = header->max_stack;
            D.31586 = (long int) D.31362;
            if (D.31452 >= D.31586) goto <D.40358>; else goto <D.40359>;
            <D.40358>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.40360>; else goto <D.40361>;
            <D.40360>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.40362>; else goto <D.40363>;
            <D.40362>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40363>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40361>:
            D.40364 = mini_get_debug_options ();
            D.40365 = D.40364->break_on_unverified;
            if (D.40365 != 0) goto <D.40366>; else goto unverified;
            <D.40366>:
            __asm__ __volatile__("int $03");
            <D.40359>:
            D.35445 = ip + 6;
            if (D.35445 > end) goto <D.40367>; else goto <D.40368>;
            <D.40367>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.40369>; else goto <D.40370>;
            <D.40369>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.40371>; else goto <D.40372>;
            <D.40371>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40372>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40370>:
            D.40373 = mini_get_debug_options ();
            D.40374 = D.40373->break_on_unverified;
            if (D.40374 != 0) goto <D.40375>; else goto unverified;
            <D.40375>:
            __asm__ __volatile__("int $03");
            <D.40368>:
            D.39815 = ip + 2;
            D.39816 = *D.39815;
            n = (int) D.39816;
            n.159 = (unsigned int) n;
            cmethod = mini_get_method (cfg, method, n.159, 0B, generic_context);
            if (cmethod == 0B) goto <D.40376>; else goto <D.40378>;
            <D.40378>:
            D.40379 = mono_loader_get_last_error ();
            if (D.40379 != 0B) goto <D.40376>; else goto <D.40377>;
            <D.40376>:
            D.40380 = mini_get_debug_options ();
            D.40381 = D.40380->break_on_unverified;
            if (D.40381 != 0) goto <D.40382>; else goto load_error;
            <D.40382>:
            __asm__ __volatile__("int $03");
            <D.40377>:
            D.32528 = cmethod->klass;
            mono_class_init (D.32528);
            n.159 = (unsigned int) n;
            mono_save_token_info (cfg, image, n.159, cmethod);
            context_used = mini_method_check_context_used (cfg, cmethod);
            cil_method = cmethod;
            if (dont_verify == 0) goto <D.40383>; else goto <D.40384>;
            <D.40383>:
            D.31454 = BIT_FIELD_REF <*cfg, 8, 5608>;
            D.32545 = D.31454 & 64;
            if (D.32545 == 0) goto <D.40385>; else goto <D.40386>;
            <D.40385>:
            D.40387 = mono_method_can_access_method (method, cmethod);
            if (D.40387 == 0) goto <D.40388>; else goto <D.40389>;
            <D.40388>:
            {
              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.40390 = monoeg_g_strdup_printf ("Method `%s\' is inaccessible from method `%s\'\n", cil_method_fname, method_fname);
              cfg->exception_message = D.40390;
              monoeg_g_free (method_fname);
              monoeg_g_free (cil_method_fname);
              goto exception_exit;
            }
            <D.40389>:
            <D.40386>:
            <D.40384>:
            D.40391 = mono_security_get_mode ();
            if (D.40391 == 2) goto <D.40392>; else goto <D.40393>;
            <D.40392>:
            D.40394 = check_linkdemand (cfg, method, cmethod);
            if (D.40394 != 0) goto <D.40395>; else goto <D.40396>;
            <D.40395>:
            D.30642 = cfg->method;
            if (D.30642 != method) goto <D.40397>; else goto <D.40398>;
            <D.40397>:
            D.30614 = BIT_FIELD_REF <*method, 8, 256>;
            D.30615 = D.30614 & 124;
            if (D.30615 == 0) goto <D.40399>; else goto <D.40400>;
            <D.40399>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 1) goto <D.40401>; else goto <D.40402>;
            <D.40401>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.40402>:
            goto inline_failure;
            <D.40400>:
            <D.40398>:
            <D.40396>:
            D.31231 = cfg->exception_type;
            if (D.31231 != 0) goto exception_exit; else goto <D.40403>;
            <D.40403>:
            goto <D.40404>;
            <D.40393>:
            D.40405 = mono_security_get_mode ();
            if (D.40405 == 1) goto <D.40406>; else goto <D.40407>;
            <D.40406>:
            bblock.70 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.70, ip);
            <D.40407>:
            <D.40404>:
            if (sp > stack_start) goto <D.40408>; else goto <D.40409>;
            <D.40408>:
            D.40410 = ip + 11;
            if (D.40410 < end) goto <D.40411>; else goto <D.40412>;
            <D.40411>:
            D.37915 = ip + 6;
            bblock.70 = bblock;
            D.40413 = ip_in_bb (cfg, bblock.70, D.37915);
            if (D.40413 != 0) goto <D.40414>; else goto <D.40415>;
            <D.40414>:
            D.35445 = ip + 6;
            D.35446 = *D.35445;
            if (D.35446 == 115) goto <D.40416>; else goto <D.40417>;
            <D.40416>:
            {
              struct MonoMethod * ctor_method;

              D.40418 = ip + 7;
              D.40419 = *D.40418;
              ctor_method = mini_get_method (cfg, method, D.40419, 0B, generic_context);
              if (ctor_method != 0B) goto <D.40420>; else goto <D.40421>;
              <D.40420>:
              D.40422 = ctor_method->klass;
              D.40423 = D.40422->parent;
              D.33006 = mono_defaults.multicastdelegate_class;
              if (D.40423 == D.33006) goto <D.40424>; else goto <D.40425>;
              <D.40424>:
              {
                struct MonoInst * target_ins;
                struct MonoMethod * invoke;
                int invoke_context_used;

                D.40422 = ctor_method->klass;
                invoke = mono_get_delegate_invoke (D.40422);
                if (invoke == 0B) goto <D.40426>; else goto <D.40428>;
                <D.40428>:
                D.40429 = mono_method_signature (invoke);
                if (D.40429 == 0B) goto <D.40426>; else goto <D.40427>;
                <D.40426>:
                D.40430 = mini_get_debug_options ();
                D.40431 = D.40430->break_on_unverified;
                if (D.40431 != 0) goto <D.40432>; else goto load_error;
                <D.40432>:
                __asm__ __volatile__("int $03");
                <D.40427>:
                invoke_context_used = mini_method_check_context_used (cfg, invoke);
                target_ins = MEM[(struct MonoInst * *)sp + -8B];
                D.40433 = mono_security_get_mode ();
                if (D.40433 == 1) goto <D.40434>; else goto <D.40435>;
                <D.40434>:
                bblock.70 = bblock;
                ensure_method_is_allowed_to_call_method (cfg, method, ctor_method, bblock.70, ip);
                <D.40435>:
                D.32564 = cmethod->flags;
                D.32565 = (int) D.32564;
                D.40436 = D.32565 & 16;
                if (D.40436 == 0) goto <D.40437>; else goto <D.40438>;
                <D.40437>:
                D.40439 = mono_method_signature (invoke);
                D.40440 = D.40439->param_count;
                D.40441 = mono_method_signature (cmethod);
                D.40442 = D.40441->param_count;
                if (D.40440 == D.40442) goto <D.40443>; else goto <D.40444>;
                <D.40443>:
                {
                  struct MonoInst * inst;

                  D.30673 = cfg->mempool;
                  inst = mono_mempool_alloc (D.30673, 80);
                  inst->data.op[1].const_val = 0;
                  D.40445 = inst->data.op[1].const_val;
                  inst->data.op[0].const_val = D.40445;
                  inst->prev = 0B;
                  D.40446 = inst->prev;
                  inst->next = D.40446;
                  inst->opcode = 323;
                  inst->flags = 0;
                  inst->type = 0;
                  inst->dreg = -1;
                  inst->sreg3 = -1;
                  D.40447 = inst->sreg3;
                  inst->sreg2 = D.40447;
                  D.40448 = inst->sreg2;
                  inst->sreg1 = D.40448;
                  D.30898 = cfg->ip;
                  inst->cil_code = D.30898;
                  inst->dreg = -1;
                  D.40449 = target_ins->dreg;
                  inst->sreg1 = D.40449;
                  inst->data.op[1].const_val = 0;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.40450>; else goto <D.40451>;
                  <D.40450>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.30927->next = inst;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  inst->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = inst;
                  goto <D.40452>;
                  <D.40451>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = inst;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.40452>:
                }
                {
                  struct MonoInst * inst;

                  D.30673 = cfg->mempool;
                  inst = mono_mempool_alloc (D.30673, 80);
                  inst->data.op[1].const_val = 0;
                  D.40453 = inst->data.op[1].const_val;
                  inst->data.op[0].const_val = D.40453;
                  inst->prev = 0B;
                  D.40454 = inst->prev;
                  inst->next = D.40454;
                  inst->opcode = 455;
                  inst->flags = 0;
                  inst->type = 0;
                  inst->dreg = -1;
                  inst->sreg3 = -1;
                  D.40455 = inst->sreg3;
                  inst->sreg2 = D.40455;
                  D.40456 = inst->sreg2;
                  inst->sreg1 = D.40456;
                  D.30898 = cfg->ip;
                  inst->cil_code = D.30898;
                  inst->data.op[1].p = "ArgumentException";
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  if (D.30927 != 0B) goto <D.40457>; else goto <D.40458>;
                  <D.40457>:
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  D.30927->next = inst;
                  bblock.113 = cfg->cbb;
                  D.30927 = bblock.113->last_ins;
                  inst->prev = D.30927;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = inst;
                  goto <D.40459>;
                  <D.40458>:
                  bblock.113 = cfg->cbb;
                  bblock.113 = cfg->cbb;
                  bblock.113->last_ins = inst;
                  D.30927 = bblock.113->last_ins;
                  bblock.113->code = D.30927;
                  <D.40459>:
                }
                <D.40444>:
                <D.40438>:
                if (invoke_context_used == 0) goto <D.40460>; else goto <D.40461>;
                <D.40460>:
                ip = ip + 6;
                D.30753 = cfg->verbose_level;
                if (D.30753 > 3) goto <D.40462>; else goto <D.40463>;
                <D.40462>:
                D.40464 = mono_disasm_code_one (0B, method, ip, 0B);
                sp.77 = (long int) sp;
                stack_start.78 = (long int) stack_start;
                D.31451 = sp.77 - stack_start.78;
                D.31452 = D.31451 /[ex] 8;
                D.31453 = (int) D.31452;
                bblock.70 = bblock;
                D.31559 = bblock.70->block_num;
                monoeg_g_print ("converting (in B%d: stack: %d) %s", D.31559, D.31453, D.40464);
                <D.40463>:
                sp = sp + 18446744073709551608;
                D.40422 = ctor_method->klass;
                D.40465 = handle_delegate_ctor (cfg, D.40422, target_ins, cmethod, context_used);
                *sp = D.40465;
                D.31231 = cfg->exception_type;
                if (D.31231 != 0) goto exception_exit; else goto <D.40466>;
                <D.40466>:
                ip = ip + 5;
                sp = sp + 8;
                goto <D.28418>;
                <D.40461>:
              }
              <D.40425>:
              <D.40421>:
            }
            <D.40417>:
            <D.40415>:
            <D.40412>:
            <D.40409>:
            argconst.314 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            argconst = argconst.314;
            ins = mono_emit_jit_icall (cfg, mono_ldftn, &argconst);
            sp.315 = sp;
            sp = sp.315 + 8;
            *sp.315 = ins;
            ip = ip + 6;
            num_calls.316 = num_calls;
            num_calls = num_calls.316 + 1;
            D.40470 = num_calls.316 * 10;
            inline_costs = D.40470 + inline_costs;
            goto <D.28418>;
          }
        finally
          {
            argconst = {CLOBBER};
          }
      }
      <D.28436>:
      {
        struct MonoInst * args[2];

        try
          {
            sp.77 = (long int) sp;
            stack_start.78 = (long int) stack_start;
            D.31451 = sp.77 - stack_start.78;
            if (D.31451 <= 7) goto <D.40471>; else goto <D.40472>;
            <D.40471>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.40473>; else goto <D.40474>;
            <D.40473>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.40475>; else goto <D.40476>;
            <D.40475>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40476>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40474>:
            D.40477 = mini_get_debug_options ();
            D.40478 = D.40477->break_on_unverified;
            if (D.40478 != 0) goto <D.40479>; else goto unverified;
            <D.40479>:
            __asm__ __volatile__("int $03");
            <D.40472>:
            D.35445 = ip + 6;
            if (D.35445 > end) goto <D.40480>; else goto <D.40481>;
            <D.40480>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.40482>; else goto <D.40483>;
            <D.40482>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.40484>; else goto <D.40485>;
            <D.40484>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40485>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40483>:
            D.40486 = mini_get_debug_options ();
            D.40487 = D.40486->break_on_unverified;
            if (D.40487 != 0) goto <D.40488>; else goto unverified;
            <D.40488>:
            __asm__ __volatile__("int $03");
            <D.40481>:
            D.39815 = ip + 2;
            D.39816 = *D.39815;
            n = (int) D.39816;
            n.159 = (unsigned int) n;
            cmethod = mini_get_method (cfg, method, n.159, 0B, generic_context);
            if (cmethod == 0B) goto <D.40489>; else goto <D.40491>;
            <D.40491>:
            D.40492 = mono_loader_get_last_error ();
            if (D.40492 != 0B) goto <D.40489>; else goto <D.40490>;
            <D.40489>:
            D.40493 = mini_get_debug_options ();
            D.40494 = D.40493->break_on_unverified;
            if (D.40494 != 0) goto <D.40495>; else goto load_error;
            <D.40495>:
            __asm__ __volatile__("int $03");
            <D.40490>:
            D.32528 = cmethod->klass;
            mono_class_init (D.32528);
            context_used = mini_method_check_context_used (cfg, cmethod);
            D.40496 = mono_security_get_mode ();
            if (D.40496 == 2) goto <D.40497>; else goto <D.40498>;
            <D.40497>:
            D.40499 = check_linkdemand (cfg, method, cmethod);
            if (D.40499 != 0) goto <D.40500>; else goto <D.40501>;
            <D.40500>:
            D.30642 = cfg->method;
            if (D.30642 != method) goto <D.40502>; else goto <D.40503>;
            <D.40502>:
            D.30614 = BIT_FIELD_REF <*method, 8, 256>;
            D.30615 = D.30614 & 124;
            if (D.30615 == 0) goto <D.40504>; else goto <D.40505>;
            <D.40504>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 1) goto <D.40506>; else goto <D.40507>;
            <D.40506>:
            printf ("inline failed: %s\n", "linkdemand");
            <D.40507>:
            goto inline_failure;
            <D.40505>:
            <D.40503>:
            <D.40501>:
            D.31231 = cfg->exception_type;
            if (D.31231 != 0) goto exception_exit; else goto <D.40508>;
            <D.40508>:
            goto <D.40509>;
            <D.40498>:
            D.40510 = mono_security_get_mode ();
            if (D.40510 == 1) goto <D.40511>; else goto <D.40512>;
            <D.40511>:
            bblock.70 = bblock;
            ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock.70, ip);
            <D.40512>:
            <D.40509>:
            sp = sp + 18446744073709551608;
            D.31680 = *sp;
            args[0] = D.31680;
            D.40513 = emit_get_rgctx_method (cfg, context_used, cmethod, 5);
            args[1] = D.40513;
            if (context_used != 0) goto <D.40514>; else goto <D.40515>;
            <D.40514>:
            sp.317 = sp;
            sp = sp.317 + 8;
            D.40517 = mono_emit_jit_icall (cfg, mono_ldvirtfn_gshared, &args);
            *sp.317 = D.40517;
            goto <D.40518>;
            <D.40515>:
            sp.318 = sp;
            sp = sp.318 + 8;
            D.40520 = mono_emit_jit_icall (cfg, mono_ldvirtfn, &args);
            *sp.318 = D.40520;
            <D.40518>:
            ip = ip + 6;
            num_calls.319 = num_calls;
            num_calls = num_calls.319 + 1;
            D.40522 = num_calls.319 * 10;
            inline_costs = D.40522 + inline_costs;
            goto <D.28418>;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.28438>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.40523>; else goto <D.40524>;
      <D.40523>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40525>; else goto <D.40526>;
      <D.40525>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40527>; else goto <D.40528>;
      <D.40527>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40528>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40526>:
      D.40529 = mini_get_debug_options ();
      D.40530 = D.40529->break_on_unverified;
      if (D.40530 != 0) goto <D.40531>; else goto unverified;
      <D.40531>:
      __asm__ __volatile__("int $03");
      <D.40524>:
      D.40532 = ip + 4;
      if (D.40532 > end) goto <D.40533>; else goto <D.40534>;
      <D.40533>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40535>; else goto <D.40536>;
      <D.40535>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40537>; else goto <D.40538>;
      <D.40537>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40538>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40536>:
      D.40539 = mini_get_debug_options ();
      D.40540 = D.40539->break_on_unverified;
      if (D.40540 != 0) goto <D.40541>; else goto unverified;
      <D.40541>:
      __asm__ __volatile__("int $03");
      <D.40534>:
      D.40542 = ip + 2;
      D.40543 = *D.40542;
      n = (int) D.40543;
      n.81 = (unsigned int) n;
      if (n.81 >= num_args) goto <D.40544>; else goto <D.40545>;
      <D.40544>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40546>; else goto <D.40547>;
      <D.40546>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40548>; else goto <D.40549>;
      <D.40548>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40549>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40547>:
      D.40550 = mini_get_debug_options ();
      D.40551 = D.40550->break_on_unverified;
      if (D.40551 != 0) goto <D.40552>; else goto unverified;
      <D.40552>:
      __asm__ __volatile__("int $03");
      <D.40545>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      D.40553 = mono_type_to_regmove (cfg, D.31609);
      D.40554 = (short unsigned int) D.40553;
      ins->opcode = D.40554;
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      type_to_eval_stack_type (cfg, D.31609, ins);
      D.31280 = cfg->args;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31612 = D.31280 + D.31607;
      D.31613 = *D.31612;
      D.31614 = D.31613->klass;
      ins->klass = D.31614;
      D.31280 = cfg->args;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31612 = D.31280 + D.31607;
      D.31613 = *D.31612;
      D.31615 = D.31613->dreg;
      ins->sreg1 = D.31615;
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.40555 = alloc_dreg (cfg, D.31427);
      D.40556 = (int) D.40555;
      ins->dreg = D.40556;
      D.31430 = ins->opcode;
      if (D.31430 == 431) goto <D.40557>; else goto <D.40558>;
      <D.40557>:
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      D.40559 = mono_class_from_mono_type (D.31609);
      ins->klass = D.40559;
      <D.40558>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.40560>; else goto <D.40561>;
      <D.40560>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.40562>;
      <D.40561>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.40562>:
      sp.320 = sp;
      sp = sp.320 + 8;
      *sp.320 = ins;
      ip = ip + 4;
      goto <D.28418>;
      <D.28439>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.40564>; else goto <D.40565>;
      <D.40564>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40566>; else goto <D.40567>;
      <D.40566>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40568>; else goto <D.40569>;
      <D.40568>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40569>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40567>:
      D.40570 = mini_get_debug_options ();
      D.40571 = D.40570->break_on_unverified;
      if (D.40571 != 0) goto <D.40572>; else goto unverified;
      <D.40572>:
      __asm__ __volatile__("int $03");
      <D.40565>:
      D.40532 = ip + 4;
      if (D.40532 > end) goto <D.40573>; else goto <D.40574>;
      <D.40573>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40575>; else goto <D.40576>;
      <D.40575>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40577>; else goto <D.40578>;
      <D.40577>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40578>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40576>:
      D.40579 = mini_get_debug_options ();
      D.40580 = D.40579->break_on_unverified;
      if (D.40580 != 0) goto <D.40581>; else goto unverified;
      <D.40581>:
      __asm__ __volatile__("int $03");
      <D.40574>:
      D.40542 = ip + 2;
      D.40543 = *D.40542;
      n = (int) D.40543;
      n.81 = (unsigned int) n;
      if (n.81 >= num_args) goto <D.40582>; else goto <D.40583>;
      <D.40582>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40584>; else goto <D.40585>;
      <D.40584>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40586>; else goto <D.40587>;
      <D.40586>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40587>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40585>:
      D.40588 = mini_get_debug_options ();
      D.40589 = D.40588->break_on_unverified;
      if (D.40589 != 0) goto <D.40590>; else goto unverified;
      <D.40590>:
      __asm__ __volatile__("int $03");
      <D.40583>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 314;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31759 = arg_array + D.31607;
      D.31760 = *D.31759;
      ins->data.op[0].p = D.31760;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31759 = arg_array + D.31607;
      D.31760 = *D.31759;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31759 = arg_array + D.31607;
      D.31760 = *D.31759;
      D.31761 = D.31760->flags;
      D.31762 = D.31761 | 16;
      D.31760->flags = D.31762;
      ins->type = 5;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31759 = arg_array + D.31607;
      D.31760 = *D.31759;
      D.31763 = D.31760->klass;
      ins->klass = D.31763;
      D.40591 = alloc_dreg (cfg, 5);
      D.40592 = (int) D.40591;
      ins->dreg = D.40592;
      cfg->has_indirection = 1;
      D.30822 = cfg->gsharedvt;
      D.31766 = D.30822 != 0;
      D.31767 = (long int) D.31766;
      D.31768 = __builtin_expect (D.31767, 0);
      if (D.31768 != 0) goto <D.40593>; else goto <D.40594>;
      <D.40593>:
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31759 = arg_array + D.31607;
      D.31760 = *D.31759;
      D.31771 = D.31760->data.op[1].vtype;
      D.40595 = mini_is_gsharedvt_variable_type (cfg, D.31771);
      if (D.40595 != 0) goto <D.40596>; else goto <D.40597>;
      <D.40596>:
      handle_gsharedvt_ldaddr (cfg);
      <D.40597>:
      <D.40594>:
      if (0 != 0) goto <D.40598>; else goto <D.40599>;
      <D.40598>:
      {
        struct MonoInst * var1;
        struct MonoInst * var2;

        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31759 = arg_array + D.31607;
        D.31760 = *D.31759;
        D.31778 = D.31760->dreg;
        D.31779 = D.31778 + 1;
        D.31780 = (unsigned int) D.31779;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.31780 < D.31781) goto <D.40601>; else goto <D.40602>;
        <D.40601>:
        D.31784 = cfg->vreg_to_inst;
        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31759 = arg_array + D.31607;
        D.31760 = *D.31759;
        D.31778 = D.31760->dreg;
        D.31785 = (sizetype) D.31778;
        D.31786 = D.31785 + 1;
        D.31787 = D.31786 * 8;
        D.31788 = D.31784 + D.31787;
        iftmp.321 = *D.31788;
        goto <D.40603>;
        <D.40602>:
        iftmp.321 = 0B;
        <D.40603>:
        var1 = iftmp.321;
        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31759 = arg_array + D.31607;
        D.31760 = *D.31759;
        D.31778 = D.31760->dreg;
        D.31791 = D.31778 + 2;
        D.31792 = (unsigned int) D.31791;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.31792 < D.31781) goto <D.40605>; else goto <D.40606>;
        <D.40605>:
        D.31784 = cfg->vreg_to_inst;
        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31759 = arg_array + D.31607;
        D.31760 = *D.31759;
        D.31778 = D.31760->dreg;
        D.31785 = (sizetype) D.31778;
        D.31795 = D.31785 + 2;
        D.31796 = D.31795 * 8;
        D.31797 = D.31784 + D.31796;
        iftmp.322 = *D.31797;
        goto <D.40607>;
        <D.40606>:
        iftmp.322 = 0B;
        <D.40607>:
        var2 = iftmp.322;
        D.40608 = var1 == 0B;
        D.40609 = (long int) D.40608;
        D.40610 = __builtin_expect (D.40609, 0);
        if (D.40610 != 0) goto <D.40611>; else goto <D.40612>;
        <D.40611>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11584, "var1");
        <D.40612>:
        D.40613 = var2 == 0B;
        D.40614 = (long int) D.40613;
        D.40615 = __builtin_expect (D.40614, 0);
        if (D.40615 != 0) goto <D.40616>; else goto <D.40617>;
        <D.40616>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11584, "var2");
        <D.40617>:
        D.40618 = var1->flags;
        D.40619 = D.40618 | 16;
        var1->flags = D.40619;
        D.40620 = var2->flags;
        D.40621 = D.40620 | 16;
        var2->flags = D.40621;
      }
      <D.40599>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.40622>; else goto <D.40623>;
      <D.40622>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.40624>;
      <D.40623>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.40624>:
      sp.323 = sp;
      sp = sp.323 + 8;
      *sp.323 = ins;
      ip = ip + 4;
      goto <D.28418>;
      <D.28442>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.40626>; else goto <D.40627>;
      <D.40626>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40628>; else goto <D.40629>;
      <D.40628>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40630>; else goto <D.40631>;
      <D.40630>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40631>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40629>:
      D.40632 = mini_get_debug_options ();
      D.40633 = D.40632->break_on_unverified;
      if (D.40633 != 0) goto <D.40634>; else goto unverified;
      <D.40634>:
      __asm__ __volatile__("int $03");
      <D.40627>:
      sp = sp + 18446744073709551608;
      D.40532 = ip + 4;
      if (D.40532 > end) goto <D.40635>; else goto <D.40636>;
      <D.40635>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40637>; else goto <D.40638>;
      <D.40637>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40639>; else goto <D.40640>;
      <D.40639>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40640>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40638>:
      D.40641 = mini_get_debug_options ();
      D.40642 = D.40641->break_on_unverified;
      if (D.40642 != 0) goto <D.40643>; else goto unverified;
      <D.40643>:
      __asm__ __volatile__("int $03");
      <D.40636>:
      D.40542 = ip + 2;
      D.40543 = *D.40542;
      n = (int) D.40543;
      n.81 = (unsigned int) n;
      if (n.81 >= num_args) goto <D.40644>; else goto <D.40645>;
      <D.40644>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40646>; else goto <D.40647>;
      <D.40646>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40648>; else goto <D.40649>;
      <D.40648>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40649>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40647>:
      D.40650 = mini_get_debug_options ();
      D.40651 = D.40650->break_on_unverified;
      if (D.40651 != 0) goto <D.40652>; else goto unverified;
      <D.40652>:
      __asm__ __volatile__("int $03");
      <D.40645>:
      if (dont_verify_stloc == 0) goto <D.40653>; else goto <D.40654>;
      <D.40653>:
      D.31680 = *sp;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.40655 = param_types + D.31607;
      D.40656 = *D.40655;
      D.40657 = target_type_is_incompatible (cfg, D.40656, D.31680);
      if (D.40657 != 0) goto <D.40658>; else goto <D.40659>;
      <D.40658>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40660>; else goto <D.40661>;
      <D.40660>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 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.40661>:
      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>:
      __asm__ __volatile__("int $03");
      <D.40659>:
      <D.40654>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      D.40667 = mono_type_to_regmove (cfg, D.31609);
      D.40668 = (short unsigned int) D.40667;
      ins->opcode = D.40668;
      D.31280 = cfg->args;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31612 = D.31280 + D.31607;
      D.31613 = *D.31612;
      D.31614 = D.31613->klass;
      ins->klass = D.31614;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      D.31280 = cfg->args;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31612 = D.31280 + D.31607;
      D.31613 = *D.31612;
      D.31615 = D.31613->dreg;
      ins->dreg = D.31615;
      D.31430 = ins->opcode;
      if (D.31430 == 431) goto <D.40669>; else goto <D.40670>;
      <D.40669>:
      D.31290 = cfg->arg_types;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31608 = D.31290 + D.31607;
      D.31609 = *D.31608;
      D.40671 = mono_class_from_mono_type (D.31609);
      ins->klass = D.40671;
      <D.40670>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.40672>; else goto <D.40673>;
      <D.40672>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.40674>;
      <D.40673>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.40674>:
      ip = ip + 4;
      goto <D.28418>;
      <D.28443>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      D.31452 = D.31451 /[ex] 8;
      D.31362 = header->max_stack;
      D.31586 = (long int) D.31362;
      if (D.31452 >= D.31586) goto <D.40675>; else goto <D.40676>;
      <D.40675>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40677>; else goto <D.40678>;
      <D.40677>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40679>; else goto <D.40680>;
      <D.40679>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40680>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40678>:
      D.40681 = mini_get_debug_options ();
      D.40682 = D.40681->break_on_unverified;
      if (D.40682 != 0) goto <D.40683>; else goto unverified;
      <D.40683>:
      __asm__ __volatile__("int $03");
      <D.40676>:
      D.40532 = ip + 4;
      if (D.40532 > end) goto <D.40684>; else goto <D.40685>;
      <D.40684>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40686>; else goto <D.40687>;
      <D.40686>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40688>; else goto <D.40689>;
      <D.40688>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40689>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40687>:
      D.40690 = mini_get_debug_options ();
      D.40691 = D.40690->break_on_unverified;
      if (D.40691 != 0) goto <D.40692>; else goto unverified;
      <D.40692>:
      __asm__ __volatile__("int $03");
      <D.40685>:
      D.40542 = ip + 2;
      D.40543 = *D.40542;
      n = (int) D.40543;
      n.81 = (unsigned int) n;
      D.31267 = header->num_locals;
      D.31634 = (unsigned int) D.31267;
      if (n.81 >= D.31634) goto <D.40693>; else goto <D.40694>;
      <D.40693>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40695>; else goto <D.40696>;
      <D.40695>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40697>; else goto <D.40698>;
      <D.40697>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40698>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40696>:
      D.40699 = mini_get_debug_options ();
      D.40700 = D.40699->break_on_unverified;
      if (D.40700 != 0) goto <D.40701>; else goto unverified;
      <D.40701>:
      __asm__ __volatile__("int $03");
      <D.40694>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 428;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.31255 = header->locals[n];
      D.40702 = mono_type_to_regmove (cfg, D.31255);
      D.40703 = (short unsigned int) D.40702;
      ins->opcode = D.40703;
      D.31255 = header->locals[n];
      type_to_eval_stack_type (cfg, D.31255, ins);
      D.31646 = cfg->locals;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31647 = D.31646 + D.31607;
      D.31648 = *D.31647;
      D.31649 = D.31648->klass;
      ins->klass = D.31649;
      D.31646 = cfg->locals;
      D.31606 = (long unsigned int) n;
      D.31607 = D.31606 * 8;
      D.31647 = D.31646 + D.31607;
      D.31648 = *D.31647;
      D.31650 = D.31648->dreg;
      ins->sreg1 = D.31650;
      D.31426 = ins->type;
      D.31427 = (<unnamed type>) D.31426;
      D.40704 = alloc_dreg (cfg, D.31427);
      D.40705 = (int) D.40704;
      ins->dreg = D.40705;
      D.31430 = ins->opcode;
      if (D.31430 == 431) goto <D.40706>; else goto <D.40707>;
      <D.40706>:
      D.31255 = header->locals[n];
      D.40708 = mono_class_from_mono_type (D.31255);
      ins->klass = D.40708;
      <D.40707>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.40709>; else goto <D.40710>;
      <D.40709>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.40711>;
      <D.40710>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.40711>:
      sp.324 = sp;
      sp = sp.324 + 8;
      *sp.324 = ins;
      ip = ip + 4;
      goto <D.28418>;
      <D.28444>:
      {
        unsigned char * tmp_ip;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        D.31452 = D.31451 /[ex] 8;
        D.31362 = header->max_stack;
        D.31586 = (long int) D.31362;
        if (D.31452 >= D.31586) goto <D.40713>; else goto <D.40714>;
        <D.40713>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.40715>; else goto <D.40716>;
        <D.40715>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.40717>; else goto <D.40718>;
        <D.40717>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40718>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40716>:
        D.40719 = mini_get_debug_options ();
        D.40720 = D.40719->break_on_unverified;
        if (D.40720 != 0) goto <D.40721>; else goto unverified;
        <D.40721>:
        __asm__ __volatile__("int $03");
        <D.40714>:
        D.40532 = ip + 4;
        if (D.40532 > end) goto <D.40722>; else goto <D.40723>;
        <D.40722>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.40724>; else goto <D.40725>;
        <D.40724>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 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>:
        __asm__ __volatile__("int $03");
        <D.40723>:
        D.40542 = ip + 2;
        D.40543 = *D.40542;
        n = (int) D.40543;
        n.81 = (unsigned int) n;
        D.31267 = header->num_locals;
        D.31634 = (unsigned int) D.31267;
        if (n.81 >= D.31634) goto <D.40731>; else goto <D.40732>;
        <D.40731>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.40733>; else goto <D.40734>;
        <D.40733>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.40735>; else goto <D.40736>;
        <D.40735>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40736>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40734>:
        D.40737 = mini_get_debug_options ();
        D.40738 = D.40737->break_on_unverified;
        if (D.40738 != 0) goto <D.40739>; else goto unverified;
        <D.40739>:
        __asm__ __volatile__("int $03");
        <D.40732>:
        tmp_ip = emit_optimized_ldloca_ir (cfg, ip, end, 2);
        if (tmp_ip != 0B) goto <D.40740>; else goto <D.40741>;
        <D.40740>:
        ip = tmp_ip;
        inline_costs = inline_costs + 1;
        goto <D.28418>;
        <D.40741>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 314;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.31646 = cfg->locals;
        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31647 = D.31646 + D.31607;
        D.31648 = *D.31647;
        ins->data.op[0].p = D.31648;
        D.31646 = cfg->locals;
        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31647 = D.31646 + D.31607;
        D.31648 = *D.31647;
        D.31646 = cfg->locals;
        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31647 = D.31646 + D.31607;
        D.31648 = *D.31647;
        D.40742 = D.31648->flags;
        D.40743 = D.40742 | 16;
        D.31648->flags = D.40743;
        ins->type = 5;
        D.31646 = cfg->locals;
        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31647 = D.31646 + D.31607;
        D.31648 = *D.31647;
        D.31649 = D.31648->klass;
        ins->klass = D.31649;
        D.40744 = alloc_dreg (cfg, 5);
        D.40745 = (int) D.40744;
        ins->dreg = D.40745;
        cfg->has_indirection = 1;
        D.30822 = cfg->gsharedvt;
        D.31766 = D.30822 != 0;
        D.31767 = (long int) D.31766;
        D.31768 = __builtin_expect (D.31767, 0);
        if (D.31768 != 0) goto <D.40746>; else goto <D.40747>;
        <D.40746>:
        D.31646 = cfg->locals;
        D.31606 = (long unsigned int) n;
        D.31607 = D.31606 * 8;
        D.31647 = D.31646 + D.31607;
        D.31648 = *D.31647;
        D.40748 = D.31648->data.op[1].vtype;
        D.40749 = mini_is_gsharedvt_variable_type (cfg, D.40748);
        if (D.40749 != 0) goto <D.40750>; else goto <D.40751>;
        <D.40750>:
        handle_gsharedvt_ldaddr (cfg);
        <D.40751>:
        <D.40747>:
        if (0 != 0) goto <D.40752>; else goto <D.40753>;
        <D.40752>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.31646 = cfg->locals;
          D.31606 = (long unsigned int) n;
          D.31607 = D.31606 * 8;
          D.31647 = D.31646 + D.31607;
          D.31648 = *D.31647;
          D.31650 = D.31648->dreg;
          D.40755 = D.31650 + 1;
          D.40756 = (unsigned int) D.40755;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.40756 < D.31781) goto <D.40757>; else goto <D.40758>;
          <D.40757>:
          D.31784 = cfg->vreg_to_inst;
          D.31646 = cfg->locals;
          D.31606 = (long unsigned int) n;
          D.31607 = D.31606 * 8;
          D.31647 = D.31646 + D.31607;
          D.31648 = *D.31647;
          D.31650 = D.31648->dreg;
          D.40759 = (sizetype) D.31650;
          D.40760 = D.40759 + 1;
          D.40761 = D.40760 * 8;
          D.40762 = D.31784 + D.40761;
          iftmp.325 = *D.40762;
          goto <D.40763>;
          <D.40758>:
          iftmp.325 = 0B;
          <D.40763>:
          var1 = iftmp.325;
          D.31646 = cfg->locals;
          D.31606 = (long unsigned int) n;
          D.31607 = D.31606 * 8;
          D.31647 = D.31646 + D.31607;
          D.31648 = *D.31647;
          D.31650 = D.31648->dreg;
          D.40765 = D.31650 + 2;
          D.40766 = (unsigned int) D.40765;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.40766 < D.31781) goto <D.40767>; else goto <D.40768>;
          <D.40767>:
          D.31784 = cfg->vreg_to_inst;
          D.31646 = cfg->locals;
          D.31606 = (long unsigned int) n;
          D.31607 = D.31606 * 8;
          D.31647 = D.31646 + D.31607;
          D.31648 = *D.31647;
          D.31650 = D.31648->dreg;
          D.40759 = (sizetype) D.31650;
          D.40769 = D.40759 + 2;
          D.40770 = D.40769 * 8;
          D.40771 = D.31784 + D.40770;
          iftmp.326 = *D.40771;
          goto <D.40772>;
          <D.40768>:
          iftmp.326 = 0B;
          <D.40772>:
          var2 = iftmp.326;
          D.40773 = var1 == 0B;
          D.40774 = (long int) D.40773;
          D.40775 = __builtin_expect (D.40774, 0);
          if (D.40775 != 0) goto <D.40776>; else goto <D.40777>;
          <D.40776>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11622, "var1");
          <D.40777>:
          D.40778 = var2 == 0B;
          D.40779 = (long int) D.40778;
          D.40780 = __builtin_expect (D.40779, 0);
          if (D.40780 != 0) goto <D.40781>; else goto <D.40782>;
          <D.40781>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11622, "var2");
          <D.40782>:
          D.40783 = var1->flags;
          D.40784 = D.40783 | 16;
          var1->flags = D.40784;
          D.40785 = var2->flags;
          D.40786 = D.40785 | 16;
          var2->flags = D.40786;
        }
        <D.40753>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.40787>; else goto <D.40788>;
        <D.40787>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.40789>;
        <D.40788>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.40789>:
        sp.327 = sp;
        sp = sp.327 + 8;
        *sp.327 = ins;
        ip = ip + 4;
        goto <D.28418>;
      }
      <D.28448>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.40791>; else goto <D.40792>;
      <D.40791>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40793>; else goto <D.40794>;
      <D.40793>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40795>; else goto <D.40796>;
      <D.40795>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40796>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40794>:
      D.40797 = mini_get_debug_options ();
      D.40798 = D.40797->break_on_unverified;
      if (D.40798 != 0) goto <D.40799>; else goto unverified;
      <D.40799>:
      __asm__ __volatile__("int $03");
      <D.40792>:
      sp = sp + 18446744073709551608;
      D.40532 = ip + 4;
      if (D.40532 > end) goto <D.40800>; else goto <D.40801>;
      <D.40800>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40802>; else goto <D.40803>;
      <D.40802>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 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>:
      __asm__ __volatile__("int $03");
      <D.40801>:
      D.40542 = ip + 2;
      D.40543 = *D.40542;
      n = (int) D.40543;
      n.81 = (unsigned int) n;
      D.31267 = header->num_locals;
      D.31634 = (unsigned int) D.31267;
      if (n.81 >= D.31634) goto <D.40809>; else goto <D.40810>;
      <D.40809>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40811>; else goto <D.40812>;
      <D.40811>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40813>; else goto <D.40814>;
      <D.40813>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40814>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40812>:
      D.40815 = mini_get_debug_options ();
      D.40816 = D.40815->break_on_unverified;
      if (D.40816 != 0) goto <D.40817>; else goto unverified;
      <D.40817>:
      __asm__ __volatile__("int $03");
      <D.40810>:
      if (dont_verify_stloc == 0) goto <D.40818>; else goto <D.40819>;
      <D.40818>:
      D.31680 = *sp;
      D.31255 = header->locals[n];
      D.40820 = target_type_is_incompatible (cfg, D.31255, D.31680);
      if (D.40820 != 0) goto <D.40821>; else goto <D.40822>;
      <D.40821>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40823>; else goto <D.40824>;
      <D.40823>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40825>; else goto <D.40826>;
      <D.40825>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40826>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40824>:
      D.40827 = mini_get_debug_options ();
      D.40828 = D.40827->break_on_unverified;
      if (D.40828 != 0) goto <D.40829>; else goto unverified;
      <D.40829>:
      __asm__ __volatile__("int $03");
      <D.40822>:
      <D.40819>:
      emit_stloc_ir (cfg, sp, header, n);
      ip = ip + 4;
      inline_costs = inline_costs + 1;
      goto <D.28418>;
      <D.28449>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.40830>; else goto <D.40831>;
      <D.40830>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40832>; else goto <D.40833>;
      <D.40832>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40834>; else goto <D.40835>;
      <D.40834>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40835>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40833>:
      D.40836 = mini_get_debug_options ();
      D.40837 = D.40836->break_on_unverified;
      if (D.40837 != 0) goto <D.40838>; else goto unverified;
      <D.40838>:
      __asm__ __volatile__("int $03");
      <D.40831>:
      sp = sp + 18446744073709551608;
      if (sp != stack_start) goto <D.40839>; else goto <D.40840>;
      <D.40839>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40841>; else goto <D.40842>;
      <D.40841>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40843>; else goto <D.40844>;
      <D.40843>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40844>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40842>:
      D.40845 = mini_get_debug_options ();
      D.40846 = D.40845->break_on_unverified;
      if (D.40846 != 0) goto <D.40847>; else goto unverified;
      <D.40847>:
      __asm__ __volatile__("int $03");
      <D.40840>:
      D.30642 = cfg->method;
      if (D.30642 != method) goto inline_failure; else goto <D.40848>;
      <D.40848>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 338;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      D.40849 = alloc_preg (cfg);
      D.40850 = (int) D.40849;
      ins->dreg = D.40850;
      D.31680 = *sp;
      D.31862 = D.31680->dreg;
      ins->sreg1 = D.31862;
      ins->type = 3;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      if (D.30927 != 0B) goto <D.40851>; else goto <D.40852>;
      <D.40851>:
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      D.30927->next = ins;
      bblock.113 = cfg->cbb;
      D.30927 = bblock.113->last_ins;
      ins->prev = D.30927;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      goto <D.40853>;
      <D.40852>:
      bblock.113 = cfg->cbb;
      bblock.113 = cfg->cbb;
      bblock.113->last_ins = ins;
      D.30927 = bblock.113->last_ins;
      bblock.113->code = D.30927;
      <D.40853>:
      D.31108 = cfg->flags;
      D.31109 = D.31108 | 1;
      cfg->flags = D.31109;
      if (init_locals != 0) goto <D.40854>; else goto <D.40855>;
      <D.40854>:
      D.31527 = ins->flags;
      D.40856 = D.31527 | 1;
      ins->flags = D.40856;
      <D.40855>:
      sp.328 = sp;
      sp = sp.328 + 8;
      *sp.328 = ins;
      ip = ip + 2;
      goto <D.28418>;
      <D.28450>:
      {
        struct MonoExceptionClause * clause;
        struct MonoExceptionClause * nearest;
        int cc;
        int nearest_num;

        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.40858>; else goto <D.40859>;
        <D.40858>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.40860>; else goto <D.40861>;
        <D.40860>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.40862>; else goto <D.40863>;
        <D.40862>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40863>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40861>:
        D.40864 = mini_get_debug_options ();
        D.40865 = D.40864->break_on_unverified;
        if (D.40865 != 0) goto <D.40866>; else goto unverified;
        <D.40866>:
        __asm__ __volatile__("int $03");
        <D.40859>:
        sp = sp + 18446744073709551608;
        if (sp != stack_start) goto <D.40867>; else goto <D.40869>;
        <D.40869>:
        D.31680 = *sp;
        D.33383 = D.31680->type;
        if (D.33383 != 1) goto <D.40867>; else goto <D.40868>;
        <D.40867>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.40870>; else goto <D.40871>;
        <D.40870>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.40872>; else goto <D.40873>;
        <D.40872>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40873>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40871>:
        D.40874 = mini_get_debug_options ();
        D.40875 = D.40874->break_on_unverified;
        if (D.40875 != 0) goto <D.40876>; else goto unverified;
        <D.40876>:
        __asm__ __volatile__("int $03");
        <D.40868>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 741;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        ins->sreg1 = D.31862;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.40877>; else goto <D.40878>;
        <D.40877>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.40879>;
        <D.40878>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.40879>:
        start_new_bblock = 1;
        ip = ip + 2;
        nearest = 0B;
        nearest_num = 0;
        cc = 0;
        goto <D.28456>;
        <D.28455>:
        D.30801 = header->clauses;
        D.40880 = (long unsigned int) cc;
        D.40881 = D.40880 * 32;
        clause = D.30801 + D.40881;
        D.40884 = clause->flags;
        D.40885 = D.40884 & 1;
        if (D.40885 != 0) goto <D.40886>; else goto <D.40887>;
        <D.40886>:
        ip.75 = (long int) ip;
        D.30821 = header->code;
        D.31371 = (long int) D.30821;
        D.31372 = ip.75 - D.31371;
        D.40888 = clause->data.filter_offset;
        D.40889 = (long int) D.40888;
        if (D.31372 > D.40889) goto <D.40890>; else goto <D.40891>;
        <D.40890>:
        ip.75 = (long int) ip;
        D.30821 = header->code;
        D.31371 = (long int) D.30821;
        D.31372 = ip.75 - D.31371;
        D.40892 = clause->handler_offset;
        D.40893 = (long int) D.40892;
        if (D.31372 <= D.40893) goto <D.40894>; else goto <D.40895>;
        <D.40894>:
        if (nearest == 0B) goto <D.40882>; else goto <D.40896>;
        <D.40896>:
        D.40888 = clause->data.filter_offset;
        D.40897 = nearest->data.filter_offset;
        if (D.40888 < D.40897) goto <D.40882>; else goto <D.40883>;
        <D.40882>:
        nearest = clause;
        nearest_num = cc;
        <D.40883>:
        <D.40895>:
        <D.40891>:
        <D.40887>:
        cc = cc + 1;
        <D.28456>:
        D.30993 = header->num_clauses;
        D.30994 = (int) D.30993;
        if (D.30994 > cc) goto <D.28455>; else goto <D.28457>;
        <D.28457>:
        D.40898 = nearest == 0B;
        D.40899 = (long int) D.40898;
        D.40900 = __builtin_expect (D.40899, 0);
        if (D.40900 != 0) goto <D.40901>; else goto <D.40902>;
        <D.40901>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11690, "nearest");
        <D.40902>:
        ip.75 = (long int) ip;
        D.30821 = header->code;
        D.31371 = (long int) D.30821;
        D.31372 = ip.75 - D.31371;
        D.40903 = nearest->handler_offset;
        D.40904 = (long int) D.40903;
        if (D.31372 != D.40904) goto <D.40905>; else goto <D.40906>;
        <D.40905>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.40907>; else goto <D.40908>;
        <D.40907>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.40909>; else goto <D.40910>;
        <D.40909>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.40910>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.40908>:
        D.40911 = mini_get_debug_options ();
        D.40912 = D.40911->break_on_unverified;
        if (D.40912 != 0) goto <D.40913>; else goto unverified;
        <D.40913>:
        __asm__ __volatile__("int $03");
        <D.40906>:
        goto <D.28418>;
      }
      <D.28458>:
      ins_flag = ins_flag | 8;
      D.40914 = ip + 3;
      if (D.40914 > end) goto <D.40915>; else goto <D.40916>;
      <D.40915>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40917>; else goto <D.40918>;
      <D.40917>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40919>; else goto <D.40920>;
      <D.40919>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40920>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40918>:
      D.40921 = mini_get_debug_options ();
      D.40922 = D.40921->break_on_unverified;
      if (D.40922 != 0) goto <D.40923>; else goto unverified;
      <D.40923>:
      __asm__ __volatile__("int $03");
      <D.40916>:
      ip = ip + 3;
      goto <D.28418>;
      <D.28459>:
      ins_flag = ins_flag | 4;
      ip = ip + 2;
      goto <D.28418>;
      <D.28460>:
      ins_flag = ins_flag | 4;
      D.31108 = cfg->flags;
      D.40924 = D.31108 | 16;
      cfg->flags = D.40924;
      inline_costs = inline_costs + 100000;
      ip = ip + 2;
      goto <D.28418>;
      <D.28461>:
      sp.77 = (long int) sp;
      stack_start.78 = (long int) stack_start;
      D.31451 = sp.77 - stack_start.78;
      if (D.31451 <= 7) goto <D.40925>; else goto <D.40926>;
      <D.40925>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40927>; else goto <D.40928>;
      <D.40927>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40929>; else goto <D.40930>;
      <D.40929>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40930>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40928>:
      D.40931 = mini_get_debug_options ();
      D.40932 = D.40931->break_on_unverified;
      if (D.40932 != 0) goto <D.40933>; else goto unverified;
      <D.40933>:
      __asm__ __volatile__("int $03");
      <D.40926>:
      sp = sp + 18446744073709551608;
      D.35445 = ip + 6;
      if (D.35445 > end) goto <D.40934>; else goto <D.40935>;
      <D.40934>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40936>; else goto <D.40937>;
      <D.40936>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40938>; else goto <D.40939>;
      <D.40938>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40939>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40937>:
      D.40940 = mini_get_debug_options ();
      D.40941 = D.40940->break_on_unverified;
      if (D.40941 != 0) goto <D.40942>; else goto unverified;
      <D.40942>:
      __asm__ __volatile__("int $03");
      <D.40935>:
      token = MEM[(const guint32 *)ip + 2B];
      klass.329 = mini_get_class (method, token, generic_context);
      klass = klass.329;
      klass.155 = klass;
      if (klass.155 == 0B) goto <D.40944>; else goto <D.40946>;
      <D.40946>:
      klass.155 = klass;
      D.35388 = klass.155->exception_type;
      if (D.35388 != 0) goto <D.40944>; else goto <D.40945>;
      <D.40944>:
      klass.155 = klass;
      cfg->exception_ptr = klass.155;
      D.40947 = mini_get_debug_options ();
      D.40948 = D.40947->break_on_unverified;
      if (D.40948 != 0) goto <D.40949>; else goto load_error;
      <D.40949>:
      __asm__ __volatile__("int $03");
      <D.40945>:
      klass.155 = klass;
      D.40950 = generic_class_is_reference_type (cfg, klass.155);
      if (D.40950 != 0) goto <D.40951>; else goto <D.40952>;
      <D.40951>:
      {
        struct MonoInst * inst;

        D.30673 = cfg->mempool;
        inst = mono_mempool_alloc (D.30673, 80);
        inst->data.op[1].const_val = 0;
        D.40953 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.40953;
        inst->prev = 0B;
        D.40954 = inst->prev;
        inst->next = D.40954;
        inst->opcode = 384;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.40955 = inst->sreg3;
        inst->sreg2 = D.40955;
        D.40956 = inst->sreg2;
        inst->sreg1 = D.40956;
        D.30898 = cfg->ip;
        inst->cil_code = D.30898;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        inst->dreg = D.31862;
        inst->data.op[0].const_val = 0;
        inst->data.op[1].const_val = 0;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.40957>; else goto <D.40958>;
        <D.40957>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = inst;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        inst->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = inst;
        goto <D.40959>;
        <D.40958>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = inst;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.40959>:
      }
      goto <D.40960>;
      <D.40952>:
      klass.155 = klass;
      D.31680 = *sp;
      mini_emit_initobj (cfg, D.31680, 0B, klass.155);
      <D.40960>:
      ip = ip + 6;
      inline_costs = inline_costs + 1;
      goto <D.28418>;
      <D.28463>:
      D.35445 = ip + 6;
      if (D.35445 > end) goto <D.40961>; else goto <D.40962>;
      <D.40961>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.40963>; else goto <D.40964>;
      <D.40963>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.40965>; else goto <D.40966>;
      <D.40965>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.40966>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.40964>:
      D.40967 = mini_get_debug_options ();
      D.40968 = D.40967->break_on_unverified;
      if (D.40968 != 0) goto <D.40969>; else goto unverified;
      <D.40969>:
      __asm__ __volatile__("int $03");
      <D.40962>:
      token = MEM[(const guint32 *)ip + 2B];
      constrained_call = mini_get_class (method, token, generic_context);
      if (constrained_call == 0B) goto <D.40970>; else goto <D.40972>;
      <D.40972>:
      D.32956 = constrained_call->exception_type;
      if (D.32956 != 0) goto <D.40970>; else goto <D.40971>;
      <D.40970>:
      cfg->exception_ptr = constrained_call;
      D.40973 = mini_get_debug_options ();
      D.40974 = D.40973->break_on_unverified;
      if (D.40974 != 0) goto <D.40975>; else goto load_error;
      <D.40975>:
      __asm__ __volatile__("int $03");
      <D.40971>:
      ip = ip + 6;
      goto <D.28418>;
      <D.28464>:
      <D.28465>:
      {
        struct MonoInst * iargs[3];

        try
          {
            sp.77 = (long int) sp;
            stack_start.78 = (long int) stack_start;
            D.31451 = sp.77 - stack_start.78;
            if (D.31451 <= 23) goto <D.40976>; else goto <D.40977>;
            <D.40976>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.40978>; else goto <D.40979>;
            <D.40978>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.40980>; else goto <D.40981>;
            <D.40980>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.40981>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.40979>:
            D.40982 = mini_get_debug_options ();
            D.40983 = D.40982->break_on_unverified;
            if (D.40983 != 0) goto <D.40984>; else goto unverified;
            <D.40984>:
            __asm__ __volatile__("int $03");
            <D.40977>:
            sp = sp + 18446744073709551592;
            D.31710 = ip + 1;
            D.31711 = *D.31710;
            if (D.31711 == 23) goto <D.40987>; else goto <D.40985>;
            <D.40987>:
            D.31070 = cfg->opt;
            D.33054 = D.31070 & 2048;
            if (D.33054 != 0) goto <D.40988>; else goto <D.40985>;
            <D.40988>:
            D.40989 = sp + 16;
            D.40990 = *D.40989;
            D.40991 = D.40990->opcode;
            if (D.40991 == 362) goto <D.40992>; else goto <D.40985>;
            <D.40992>:
            D.40989 = sp + 16;
            D.40990 = *D.40989;
            D.40993 = D.40990->data.op[0].const_val;
            n = (int) D.40993;
            n.81 = (unsigned int) n;
            if (n.81 <= 40) goto <D.40994>; else goto <D.40985>;
            <D.40994>:
            D.40989 = sp + 16;
            D.40990 = *D.40989;
            D.40993 = D.40990->data.op[0].const_val;
            D.40995 = (int) D.40993;
            D.32788 = sp + 8;
            D.32789 = *D.32788;
            D.32790 = D.32789->dreg;
            D.31680 = *sp;
            D.31862 = D.31680->dreg;
            mini_emit_memcpy (cfg, D.31862, 0, D.32790, 0, D.40995, 0);
            goto <D.40986>;
            <D.40985>:
            D.31710 = ip + 1;
            D.31711 = *D.31710;
            if (D.31711 == 24) goto <D.40998>; else goto <D.40996>;
            <D.40998>:
            D.31070 = cfg->opt;
            D.33054 = D.31070 & 2048;
            if (D.33054 != 0) goto <D.40999>; else goto <D.40996>;
            <D.40999>:
            D.40989 = sp + 16;
            D.40990 = *D.40989;
            D.40991 = D.40990->opcode;
            if (D.40991 == 362) goto <D.41000>; else goto <D.40996>;
            <D.41000>:
            D.40989 = sp + 16;
            D.40990 = *D.40989;
            D.40993 = D.40990->data.op[0].const_val;
            n = (int) D.40993;
            n.81 = (unsigned int) n;
            if (n.81 <= 40) goto <D.41001>; else goto <D.40996>;
            <D.41001>:
            D.32788 = sp + 8;
            D.32789 = *D.32788;
            D.35033 = D.32789->opcode;
            if (D.35033 == 362) goto <D.41002>; else goto <D.40996>;
            <D.41002>:
            D.32788 = sp + 8;
            D.32789 = *D.32788;
            D.35058 = D.32789->data.op[0].const_val;
            if (D.35058 == 0) goto <D.41003>; else goto <D.40996>;
            <D.41003>:
            D.32788 = sp + 8;
            D.32789 = *D.32788;
            D.35058 = D.32789->data.op[0].const_val;
            D.41004 = (int) D.35058;
            D.40989 = sp + 16;
            D.40990 = *D.40989;
            D.40993 = D.40990->data.op[0].const_val;
            D.40995 = (int) D.40993;
            D.31680 = *sp;
            D.31862 = D.31680->dreg;
            mini_emit_memset (cfg, D.31862, 0, D.40995, D.41004, 0);
            goto <D.40997>;
            <D.40996>:
            D.31680 = *sp;
            iargs[0] = D.31680;
            D.35847 = MEM[(struct MonoInst * *)sp + 8B];
            iargs[1] = D.35847;
            D.41005 = MEM[(struct MonoInst * *)sp + 16B];
            iargs[2] = D.41005;
            D.31710 = ip + 1;
            D.31711 = *D.31710;
            if (D.31711 == 23) goto <D.41006>; else goto <D.41007>;
            <D.41006>:
            {
              struct MonoMethod * memcpy_method;

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

              memset_method = get_memset_method ();
              mono_emit_method_call (cfg, memset_method, &iargs, 0B);
            }
            <D.41008>:
            <D.40997>:
            <D.40986>:
            ip = ip + 2;
            inline_costs = inline_costs + 1;
            goto <D.28418>;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.28469>:
      D.40914 = ip + 3;
      if (D.40914 > end) goto <D.41009>; else goto <D.41010>;
      <D.41009>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.41011>; else goto <D.41012>;
      <D.41011>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.41013>; else goto <D.41014>;
      <D.41013>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41014>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41012>:
      D.41015 = mini_get_debug_options ();
      D.41016 = D.41015->break_on_unverified;
      if (D.41016 != 0) goto <D.41017>; else goto unverified;
      <D.41017>:
      __asm__ __volatile__("int $03");
      <D.41010>:
      D.31691 = ip + 2;
      D.41018 = *D.31691;
      D.41019 = (int) D.41018;
      D.41020 = D.41019 & 1;
      if (D.41020 != 0) goto <D.41021>; else goto <D.41022>;
      <D.41021>:
      ins_flag = ins_flag | 4;
      <D.41022>:
      D.31691 = ip + 2;
      D.41018 = *D.31691;
      D.41019 = (int) D.41018;
      D.41023 = D.41019 & 2;
      if (D.41023 != 0) goto <D.41024>; else goto <D.41025>;
      <D.41024>:
      ins_flag = ins_flag | 16;
      <D.41025>:
      ip = ip + 3;
      goto <D.28418>;
      <D.28470>:
      {
        struct MonoInst * load;
        int handler_offset;

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

          D.30801 = header->clauses;
          D.30802 = (long unsigned int) i;
          D.30803 = D.30802 * 32;
          clause = D.30801 + D.30803;
          D.41026 = clause->handler_offset;
          D.41027 = (long int) D.41026;
          ip.75 = (long int) ip;
          D.30821 = header->code;
          D.31371 = (long int) D.30821;
          D.31372 = ip.75 - D.31371;
          if (D.41027 <= D.31372) goto <D.41028>; else goto <D.41029>;
          <D.41028>:
          ip.75 = (long int) ip;
          D.30821 = header->code;
          D.31371 = (long int) D.30821;
          D.31372 = ip.75 - D.31371;
          D.41026 = clause->handler_offset;
          D.41030 = clause->handler_len;
          D.41031 = D.41026 + D.41030;
          D.41032 = (long int) D.41031;
          if (D.31372 < D.41032) goto <D.41033>; else goto <D.41034>;
          <D.41033>:
          D.41035 = clause->flags;
          D.41036 = D.41035 & 2;
          if (D.41036 == 0) goto <D.41037>; else goto <D.41038>;
          <D.41037>:
          D.41026 = clause->handler_offset;
          handler_offset = (int) D.41026;
          goto <D.28474>;
          <D.41038>:
          <D.41034>:
          <D.41029>:
        }
        i = i + 1;
        <D.28476>:
        D.30993 = header->num_clauses;
        D.30994 = (int) D.30993;
        if (D.30994 > i) goto <D.28475>; else goto <D.28474>;
        <D.28474>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        D.41039 = bblock.70->flags;
        D.41040 = D.41039 | 8;
        bblock.70->flags = D.41040;
        D.41041 = handler_offset == -1;
        D.41042 = (long int) D.41041;
        D.41043 = __builtin_expect (D.41042, 0);
        if (D.41043 != 0) goto <D.41044>; else goto <D.41045>;
        <D.41044>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11786, "handler_offset != -1");
        <D.41045>:
        D.30673 = cfg->mempool;
        load = mono_mempool_alloc (D.30673, 80);
        load->data.op[1].const_val = 0;
        D.41046 = load->data.op[1].const_val;
        load->data.op[0].const_val = D.41046;
        load->prev = 0B;
        D.41047 = load->prev;
        load->next = D.41047;
        load->opcode = 428;
        load->flags = 0;
        load->type = 0;
        load->dreg = -1;
        load->sreg3 = -1;
        D.41048 = load->sreg3;
        load->sreg2 = D.41048;
        D.41049 = load->sreg2;
        load->sreg1 = D.41049;
        D.30898 = cfg->ip;
        load->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.41050 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.41051 = D.41050->data.op[0].const_val;
        D.41052 = (long unsigned int) D.41051;
        D.41053 = D.41052 * 8;
        D.41054 = D.31416 + D.41053;
        D.41055 = *D.41054;
        D.41056 = D.41055->data.op[1].vtype;
        D.41057 = mono_type_to_regmove (cfg, D.41056);
        D.41058 = (short unsigned int) D.41057;
        load->opcode = D.41058;
        D.31416 = cfg->varinfo;
        D.41059 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.41060 = D.41059->data.op[0].const_val;
        D.41061 = (long unsigned int) D.41060;
        D.41062 = D.41061 * 8;
        D.41063 = D.31416 + D.41062;
        D.41064 = *D.41063;
        D.41065 = D.41064->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.41065, load);
        D.31416 = cfg->varinfo;
        D.41066 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.41067 = D.41066->data.op[0].const_val;
        D.41068 = (long unsigned int) D.41067;
        D.41069 = D.41068 * 8;
        D.41070 = D.31416 + D.41069;
        D.41071 = *D.41070;
        D.41072 = D.41071->klass;
        load->klass = D.41072;
        D.31416 = cfg->varinfo;
        D.41073 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.41074 = D.41073->data.op[0].const_val;
        D.41075 = (long unsigned int) D.41074;
        D.41076 = D.41075 * 8;
        D.41077 = D.31416 + D.41076;
        D.41078 = *D.41077;
        D.41079 = D.41078->dreg;
        load->sreg1 = D.41079;
        D.41080 = load->type;
        D.41081 = (<unnamed type>) D.41080;
        D.41082 = alloc_dreg (cfg, D.41081);
        D.41083 = (int) D.41082;
        load->dreg = D.41083;
        D.41084 = load->opcode;
        if (D.41084 == 431) goto <D.41085>; else goto <D.41086>;
        <D.41085>:
        D.31416 = cfg->varinfo;
        D.41087 = mono_find_exvar_for_offset (cfg, handler_offset);
        D.41088 = D.41087->data.op[0].const_val;
        D.41089 = (long unsigned int) D.41088;
        D.41090 = D.41089 * 8;
        D.41091 = D.31416 + D.41090;
        D.41092 = *D.41091;
        D.41093 = D.41092->data.op[1].vtype;
        D.41094 = mono_class_from_mono_type (D.41093);
        load->klass = D.41094;
        <D.41086>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.41095>; else goto <D.41096>;
        <D.41095>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = load;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        load->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = load;
        goto <D.41097>;
        <D.41096>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = load;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.41097>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 372;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.41098 = load->dreg;
        ins->sreg1 = D.41098;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.41099>; else goto <D.41100>;
        <D.41099>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.41101>;
        <D.41100>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.41101>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        ins->opcode = 802;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        if (D.31015 != 0B) goto <D.41102>; else goto <D.41103>;
        <D.41102>:
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        D.31015->next = ins;
        bblock.70 = bblock;
        D.31015 = bblock.70->last_ins;
        ins->prev = D.31015;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        goto <D.41104>;
        <D.41103>:
        bblock.70 = bblock;
        bblock.70 = bblock;
        bblock.70->last_ins = ins;
        D.31015 = bblock.70->last_ins;
        bblock.70->code = D.31015;
        <D.41104>:
        sp = stack_start;
        bblock.70 = bblock;
        link_bblock (cfg, bblock.70, end_bblock);
        start_new_bblock = 1;
        ip = ip + 2;
        goto <D.28418>;
      }
      <D.28477>:
      {
        guint32 val;
        int ialign;

        try
          {
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.41105>; else goto <D.41106>;
            <D.41105>:
            D.31560 = *ip;
            D.31561 = (int) D.31560;
            D.41107 = mono_opcode_name (D.31561);
            D.32333 = method->signature;
            D.32334 = D.32333->param_count;
            D.32335 = (int) D.32334;
            D.32336 = method->name;
            D.30609 = method->klass;
            D.32337 = D.30609->name;
            D.30609 = method->klass;
            D.32338 = D.30609->name_space;
            D.41108 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.41107, "method-to-ir.c", 11806);
            cfg->exception_message = D.41108;
            D.30753 = cfg->verbose_level;
            if (D.30753 > 1) goto <D.41109>; else goto <D.41110>;
            <D.41109>:
            D.32342 = cfg->exception_message;
            printf ("%s\n", D.32342);
            <D.41110>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.41106>:
            sp.77 = (long int) sp;
            stack_start.78 = (long int) stack_start;
            D.31451 = sp.77 - stack_start.78;
            D.31452 = D.31451 /[ex] 8;
            D.31362 = header->max_stack;
            D.31586 = (long int) D.31362;
            if (D.31452 >= D.31586) goto <D.41111>; else goto <D.41112>;
            <D.41111>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.41113>; else goto <D.41114>;
            <D.41113>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.41115>; else goto <D.41116>;
            <D.41115>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.41116>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.41114>:
            D.41117 = mini_get_debug_options ();
            D.41118 = D.41117->break_on_unverified;
            if (D.41118 != 0) goto <D.41119>; else goto unverified;
            <D.41119>:
            __asm__ __volatile__("int $03");
            <D.41112>:
            D.35445 = ip + 6;
            if (D.35445 > end) goto <D.41120>; else goto <D.41121>;
            <D.41120>:
            D.30822 = cfg->gsharedvt;
            if (D.30822 != 0) goto <D.41122>; else goto <D.41123>;
            <D.41122>:
            D.30753 = cfg->verbose_level;
            if (D.30753 > 2) goto <D.41124>; else goto <D.41125>;
            <D.41124>:
            printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
            <D.41125>:
            mono_cfg_set_exception (cfg, 11);
            goto exception_exit;
            <D.41123>:
            D.41126 = mini_get_debug_options ();
            D.41127 = D.41126->break_on_unverified;
            if (D.41127 != 0) goto <D.41128>; else goto unverified;
            <D.41128>:
            __asm__ __volatile__("int $03");
            <D.41121>:
            token = MEM[(const guint32 *)ip + 2B];
            D.41131 = token >> 24;
            if (D.41131 == 27) goto <D.41132>; else goto <D.41129>;
            <D.41132>:
            D.30609 = method->klass;
            D.30610 = D.30609->image;
            D.41133 = BIT_FIELD_REF <*D.30610, 8, 224>;
            D.41134 = D.41133 & 8;
            if (D.41134 == 0) goto <D.41135>; else goto <D.41129>;
            <D.41135>:
            if (generic_context == 0B) goto <D.41136>; else goto <D.41129>;
            <D.41136>:
            {
              struct MonoType * type;

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

              klass = mono_class_get_full (image, token, generic_context);
              if (klass == 0B) goto <D.41138>; else goto <D.41140>;
              <D.41140>:
              D.41141 = klass->exception_type;
              if (D.41141 != 0) goto <D.41138>; else goto <D.41139>;
              <D.41138>:
              cfg->exception_ptr = klass;
              D.41142 = mini_get_debug_options ();
              D.41143 = D.41142->break_on_unverified;
              if (D.41143 != 0) goto <D.41144>; else goto load_error;
              <D.41144>:
              __asm__ __volatile__("int $03");
              <D.41139>:
              mono_class_init (klass);
              D.41145 = &klass->byval_arg;
              D.41146 = mono_type_size (D.41145, &ialign);
              val = (guint32) D.41146;
            }
            <D.41130>:
            D.30673 = cfg->mempool;
            ins = mono_mempool_alloc (D.30673, 80);
            ins->data.op[1].const_val = 0;
            D.30894 = ins->data.op[1].const_val;
            ins->data.op[0].const_val = D.30894;
            ins->prev = 0B;
            D.30895 = ins->prev;
            ins->next = D.30895;
            ins->opcode = 362;
            ins->flags = 0;
            ins->type = 0;
            ins->dreg = -1;
            ins->sreg3 = -1;
            D.30896 = ins->sreg3;
            ins->sreg2 = D.30896;
            D.30897 = ins->sreg2;
            ins->sreg1 = D.30897;
            D.30898 = cfg->ip;
            ins->cil_code = D.30898;
            D.41147 = (long int) val;
            ins->data.op[0].const_val = D.41147;
            ins->type = 1;
            D.41148 = alloc_dreg (cfg, 1);
            D.41149 = (int) D.41148;
            ins->dreg = D.41149;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            if (D.30927 != 0B) goto <D.41150>; else goto <D.41151>;
            <D.41150>:
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            D.30927->next = ins;
            bblock.113 = cfg->cbb;
            D.30927 = bblock.113->last_ins;
            ins->prev = D.30927;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            goto <D.41152>;
            <D.41151>:
            bblock.113 = cfg->cbb;
            bblock.113 = cfg->cbb;
            bblock.113->last_ins = ins;
            D.30927 = bblock.113->last_ins;
            bblock.113->code = D.30927;
            <D.41152>:
            sp.330 = sp;
            sp = sp.330 + 8;
            *sp.330 = ins;
            ip = ip + 6;
            goto <D.28418>;
          }
        finally
          {
            ialign = {CLOBBER};
          }
      }
      <D.28482>:
      {
        struct MonoInst * src_var;
        struct MonoInst * src;

        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.41154>; else goto <D.41155>;
        <D.41154>:
        D.31560 = *ip;
        D.31561 = (int) D.31560;
        D.41156 = mono_opcode_name (D.31561);
        D.32333 = method->signature;
        D.32334 = D.32333->param_count;
        D.32335 = (int) D.32334;
        D.32336 = method->name;
        D.30609 = method->klass;
        D.32337 = D.30609->name;
        D.30609 = method->klass;
        D.32338 = D.30609->name_space;
        D.41157 = monoeg_g_strdup_printf ("gsharedvt failed for method %s.%s.%s/%d opcode %s %s:%d", D.32338, D.32337, D.32336, D.32335, D.41156, "method-to-ir.c", 11828);
        cfg->exception_message = D.41157;
        D.30753 = cfg->verbose_level;
        if (D.30753 > 1) goto <D.41158>; else goto <D.41159>;
        <D.41158>:
        D.32342 = cfg->exception_message;
        printf ("%s\n", D.32342);
        <D.41159>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41155>:
        sp.77 = (long int) sp;
        stack_start.78 = (long int) stack_start;
        D.31451 = sp.77 - stack_start.78;
        if (D.31451 <= 7) goto <D.41160>; else goto <D.41161>;
        <D.41160>:
        D.30822 = cfg->gsharedvt;
        if (D.30822 != 0) goto <D.41162>; else goto <D.41163>;
        <D.41162>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.41164>; else goto <D.41165>;
        <D.41164>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41165>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41163>:
        D.41166 = mini_get_debug_options ();
        D.41167 = D.41166->break_on_unverified;
        if (D.41167 != 0) goto <D.41168>; else goto unverified;
        <D.41168>:
        __asm__ __volatile__("int $03");
        <D.41161>:
        sp = sp + 18446744073709551608;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        D.37056 = (unsigned int) D.31862;
        D.31781 = cfg->vreg_to_inst_len;
        if (D.37056 < D.31781) goto <D.41170>; else goto <D.41171>;
        <D.41170>:
        D.31784 = cfg->vreg_to_inst;
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        D.37059 = (long unsigned int) D.31862;
        D.37060 = D.37059 * 8;
        D.37061 = D.31784 + D.37060;
        iftmp.331 = *D.37061;
        goto <D.41172>;
        <D.41171>:
        iftmp.331 = 0B;
        <D.41172>:
        src_var = iftmp.331;
        if (src_var == 0B) goto <D.41173>; else goto <D.41174>;
        <D.41173>:
        D.31680 = *sp;
        D.31862 = D.31680->dreg;
        D.38342 = mono_defaults.typed_reference_class;
        D.38343 = &D.38342->byval_arg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.38343, 329, D.31862);
        <D.41174>:
        D.30673 = cfg->mempool;
        src = mono_mempool_alloc (D.30673, 80);
        src->data.op[1].const_val = 0;
        D.41175 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.41175;
        src->prev = 0B;
        D.41176 = src->prev;
        src->next = D.41176;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.41177 = src->sreg3;
        src->sreg2 = D.41177;
        D.41178 = src->sreg2;
        src->sreg1 = D.41178;
        D.30898 = cfg->ip;
        src->cil_code = D.30898;
        src->data.op[0].p = src_var;
        D.41179 = src_var->flags;
        D.41180 = D.41179 | 16;
        src_var->flags = D.41180;
        src->type = 5;
        D.41181 = src_var->klass;
        src->klass = D.41181;
        D.41182 = alloc_dreg (cfg, 5);
        D.41183 = (int) D.41182;
        src->dreg = D.41183;
        cfg->has_indirection = 1;
        D.30822 = cfg->gsharedvt;
        D.31766 = D.30822 != 0;
        D.31767 = (long int) D.31766;
        D.31768 = __builtin_expect (D.31767, 0);
        if (D.31768 != 0) goto <D.41184>; else goto <D.41185>;
        <D.41184>:
        D.41186 = src_var->data.op[1].vtype;
        D.41187 = mini_is_gsharedvt_variable_type (cfg, D.41186);
        if (D.41187 != 0) goto <D.41188>; else goto <D.41189>;
        <D.41188>:
        handle_gsharedvt_ldaddr (cfg);
        <D.41189>:
        <D.41185>:
        if (0 != 0) goto <D.41190>; else goto <D.41191>;
        <D.41190>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.41193 = src_var->dreg;
          D.41194 = D.41193 + 1;
          D.41195 = (unsigned int) D.41194;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.41195 < D.31781) goto <D.41196>; else goto <D.41197>;
          <D.41196>:
          D.31784 = cfg->vreg_to_inst;
          D.41193 = src_var->dreg;
          D.41198 = (sizetype) D.41193;
          D.41199 = D.41198 + 1;
          D.41200 = D.41199 * 8;
          D.41201 = D.31784 + D.41200;
          iftmp.332 = *D.41201;
          goto <D.41202>;
          <D.41197>:
          iftmp.332 = 0B;
          <D.41202>:
          var1 = iftmp.332;
          D.41193 = src_var->dreg;
          D.41204 = D.41193 + 2;
          D.41205 = (unsigned int) D.41204;
          D.31781 = cfg->vreg_to_inst_len;
          if (D.41205 < D.31781) goto <D.41206>; else goto <D.41207>;
          <D.41206>:
          D.31784 = cfg->vreg_to_inst;
          D.41193 = src_var->dreg;
          D.41198 = (sizetype) D.41193;
          D.41208 = D.41198 + 2;
          D.41209 = D.41208 * 8;
          D.41210 = D.31784 + D.41209;
          iftmp.333 = *D.41210;
          goto <D.41211>;
          <D.41207>:
          iftmp.333 = 0B;
          <D.41211>:
          var2 = iftmp.333;
          D.41212 = var1 == 0B;
          D.41213 = (long int) D.41212;
          D.41214 = __builtin_expect (D.41213, 0);
          if (D.41214 != 0) goto <D.41215>; else goto <D.41216>;
          <D.41215>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11837, "var1");
          <D.41216>:
          D.41217 = var2 == 0B;
          D.41218 = (long int) D.41217;
          D.41219 = __builtin_expect (D.41218, 0);
          if (D.41219 != 0) goto <D.41220>; else goto <D.41221>;
          <D.41220>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 11837, "var2");
          <D.41221>:
          D.41222 = var1->flags;
          D.41223 = D.41222 | 16;
          var1->flags = D.41223;
          D.41224 = var2->flags;
          D.41225 = D.41224 | 16;
          var2->flags = D.41225;
        }
        <D.41191>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.41226>; else goto <D.41227>;
        <D.41226>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = src;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        src->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = src;
        goto <D.41228>;
        <D.41227>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = src;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.41228>:
        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.30894 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.30894;
        ins->prev = 0B;
        D.30895 = ins->prev;
        ins->next = D.30895;
        D.38643 = mono_defaults.typehandle_class;
        D.41229 = &D.38643->byval_arg;
        D.41230 = mono_type_to_load_membase (cfg, D.41229);
        D.41231 = (short unsigned int) D.41230;
        ins->opcode = D.41231;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.30896 = ins->sreg3;
        ins->sreg2 = D.30896;
        D.30897 = ins->sreg2;
        ins->sreg1 = D.30897;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        ins->dreg = 0;
        D.41232 = src->dreg;
        ins->sreg1 = D.41232;
        ins->data.op[0].const_val = 0;
        ins->type = 1;
        D.38643 = mono_defaults.typehandle_class;
        D.41229 = &D.38643->byval_arg;
        type_to_eval_stack_type (cfg, D.41229, ins);
        D.31426 = ins->type;
        D.31427 = (<unnamed type>) D.31426;
        D.41233 = alloc_dreg (cfg, D.31427);
        D.41234 = (int) D.41233;
        ins->dreg = D.41234;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.41235>; else goto <D.41236>;
        <D.41235>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = ins;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        ins->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        goto <D.41237>;
        <D.41236>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = ins;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.41237>:
        sp.334 = sp;
        sp = sp.334 + 8;
        *sp.334 = ins;
        ip = ip + 2;
        goto <D.28418>;
      }
      <D.28487>:
      readonly = 1;
      ip = ip + 2;
      goto <D.28418>;
      <D.28488>:
      <D.28489>:
      <D.28490>:
      <D.28491>:
      <D.28492>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.41239>; else goto <D.41240>;
      <D.41239>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.41241>; else goto <D.41242>;
      <D.41241>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41242>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41240>:
      D.41243 = mini_get_debug_options ();
      D.41244 = D.41243->break_on_unverified;
      if (D.41244 != 0) goto <D.41245>; else goto unverified;
      <D.41245>:
      __asm__ __volatile__("int $03");
      <D.28493>:
      D.31710 = ip + 1;
      D.31711 = *D.31710;
      D.32019 = (int) D.31711;
      monoeg_g_log (0B, 16, "opcode 0xfe 0x%02x not handled", D.32019);
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.41246>; else goto <D.41247>;
      <D.41246>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.41248>; else goto <D.41249>;
      <D.41248>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41249>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41247>:
      D.41250 = mini_get_debug_options ();
      D.41251 = D.41250->break_on_unverified;
      if (D.41251 != 0) goto <D.41252>; else goto unverified;
      <D.41252>:
      __asm__ __volatile__("int $03");
      <D.28418>:
      goto <D.27670>;
      <D.28494>:
      <D.28495>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.41253>; else goto <D.41254>;
      <D.41253>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.41255>; else goto <D.41256>;
      <D.41255>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41256>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41254>:
      D.41257 = mini_get_debug_options ();
      D.41258 = D.41257->break_on_unverified;
      if (D.41258 != 0) goto <D.41259>; else goto unverified;
      <D.41259>:
      __asm__ __volatile__("int $03");
      <D.28496>:
      D.31560 = *ip;
      D.31561 = (int) D.31560;
      monoeg_g_log (0B, 16, "opcode 0x%02x not handled", D.31561);
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.41260>; else goto <D.41261>;
      <D.41260>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.41262>; else goto <D.41263>;
      <D.41262>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41263>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41261>:
      D.41264 = mini_get_debug_options ();
      D.41265 = D.41264->break_on_unverified;
      if (D.41265 != 0) goto <D.41266>; else goto unverified;
      <D.41266>:
      __asm__ __volatile__("int $03");
      <D.27670>:
      <D.27665>:
      if (ip < end) goto <D.28497>; else goto <D.28498>;
      <D.28498>:
      if (start_new_bblock != 1) goto <D.41267>; else goto <D.41268>;
      <D.41267>:
      D.30822 = cfg->gsharedvt;
      if (D.30822 != 0) goto <D.41269>; else goto <D.41270>;
      <D.41269>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.41271>; else goto <D.41272>;
      <D.41271>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41272>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41270>:
      D.41273 = mini_get_debug_options ();
      D.41274 = D.41273->break_on_unverified;
      if (D.41274 != 0) goto <D.41275>; else goto unverified;
      <D.41275>:
      __asm__ __volatile__("int $03");
      <D.41268>:
      bblock.70 = bblock;
      ip.75 = (long int) ip;
      bblock.70 = bblock;
      D.31003 = bblock.70->cil_code;
      D.31006 = (long int) D.31003;
      D.31377 = ip.75 - D.31006;
      D.31378 = (int) D.31377;
      bblock.70->cil_length = D.31378;
      bblock.70 = bblock;
      D.41276 = bblock.70->next_bb;
      if (D.41276 != 0B) goto <D.41277>; else goto <D.41278>;
      <D.41277>:
      {
        struct MonoBasicBlock * bb;

        bb = bblock;
        goto <D.28501>;
        <D.28500>:
        bb = bb->next_bb;
        <D.28501>:
        D.41279 = bb->next_bb;
        if (D.41279 != 0B) goto <D.28500>; else goto <D.28502>;
        <D.28502>:
        bb->next_bb = end_bblock;
      }
      goto <D.41280>;
      <D.41278>:
      bblock.70 = bblock;
      bblock.70->next_bb = end_bblock;
      <D.41280>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.41281>; else goto <D.41282>;
      <D.41281>:
      D.41283 = cfg->domainvar;
      if (D.41283 != 0B) goto <D.41284>; else goto <D.41285>;
      <D.41284>:
      {
        struct MonoInst * store;
        struct MonoInst * get_domain;

        cfg->cbb = init_localsbb;
        get_domain = mono_get_domain_intrinsic (cfg);
        if (get_domain != 0B) goto <D.41286>; else goto <D.41287>;
        <D.41286>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.41288>; else goto <D.41289>;
        <D.41288>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = get_domain;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        get_domain->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = get_domain;
        goto <D.41290>;
        <D.41289>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = get_domain;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.41290>:
        goto <D.41291>;
        <D.41287>:
        get_domain = mono_emit_jit_icall (cfg, mono_domain_get, 0B);
        <D.41291>:
        D.30673 = cfg->mempool;
        store = mono_mempool_alloc (D.30673, 80);
        store->data.op[1].const_val = 0;
        D.41292 = store->data.op[1].const_val;
        store->data.op[0].const_val = D.41292;
        store->prev = 0B;
        D.41293 = store->prev;
        store->next = D.41293;
        store->opcode = 428;
        store->flags = 0;
        store->type = 0;
        store->dreg = -1;
        store->sreg3 = -1;
        D.41294 = store->sreg3;
        store->sreg2 = D.41294;
        D.41295 = store->sreg2;
        store->sreg1 = D.41295;
        D.30898 = cfg->ip;
        store->cil_code = D.30898;
        D.31416 = cfg->varinfo;
        D.41283 = cfg->domainvar;
        D.41296 = D.41283->data.op[0].const_val;
        D.41297 = (long unsigned int) D.41296;
        D.41298 = D.41297 * 8;
        D.41299 = D.31416 + D.41298;
        D.41300 = *D.41299;
        D.41301 = D.41300->data.op[1].vtype;
        D.41302 = mono_type_to_regmove (cfg, D.41301);
        D.41303 = (short unsigned int) D.41302;
        store->opcode = D.41303;
        D.31416 = cfg->varinfo;
        D.41283 = cfg->domainvar;
        D.41296 = D.41283->data.op[0].const_val;
        D.41297 = (long unsigned int) D.41296;
        D.41298 = D.41297 * 8;
        D.41299 = D.31416 + D.41298;
        D.41300 = *D.41299;
        D.41304 = D.41300->klass;
        store->klass = D.41304;
        D.41305 = get_domain->dreg;
        store->sreg1 = D.41305;
        D.31416 = cfg->varinfo;
        D.41283 = cfg->domainvar;
        D.41296 = D.41283->data.op[0].const_val;
        D.41297 = (long unsigned int) D.41296;
        D.41298 = D.41297 * 8;
        D.41299 = D.31416 + D.41298;
        D.41300 = *D.41299;
        D.41306 = D.41300->dreg;
        store->dreg = D.41306;
        D.41307 = store->opcode;
        if (D.41307 == 431) goto <D.41308>; else goto <D.41309>;
        <D.41308>:
        D.31416 = cfg->varinfo;
        D.41283 = cfg->domainvar;
        D.41296 = D.41283->data.op[0].const_val;
        D.41297 = (long unsigned int) D.41296;
        D.41298 = D.41297 * 8;
        D.41299 = D.31416 + D.41298;
        D.41300 = *D.41299;
        D.41301 = D.41300->data.op[1].vtype;
        D.41310 = mono_class_from_mono_type (D.41301);
        store->klass = D.41310;
        <D.41309>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        if (D.30927 != 0B) goto <D.41311>; else goto <D.41312>;
        <D.41311>:
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        D.30927->next = store;
        bblock.113 = cfg->cbb;
        D.30927 = bblock.113->last_ins;
        store->prev = D.30927;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = store;
        goto <D.41313>;
        <D.41312>:
        bblock.113 = cfg->cbb;
        bblock.113 = cfg->cbb;
        bblock.113->last_ins = store;
        D.30927 = bblock.113->last_ins;
        bblock.113->code = D.30927;
        <D.41313>:
      }
      <D.41285>:
      <D.41282>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.41314>; else goto <D.41315>;
      <D.41314>:
      D.41316 = cfg->got_var;
      if (D.41316 != 0B) goto <D.41317>; else goto <D.41318>;
      <D.41317>:
      mono_emit_load_got_addr (cfg);
      <D.41318>:
      <D.41315>:
      if (init_locals != 0) goto <D.41319>; else goto <D.41320>;
      <D.41319>:
      cfg->cbb = init_localsbb;
      cfg->ip = 0B;
      i = 0;
      goto <D.28506>;
      <D.28505>:
      D.41321 = header->locals[i];
      emit_init_local (cfg, i, D.41321);
      i = i + 1;
      <D.28506>:
      D.31267 = header->num_locals;
      D.31268 = (int) D.31267;
      if (D.31268 > i) goto <D.28505>; else goto <D.28507>;
      <D.28507>:
      <D.41320>:
      D.33854 = BIT_FIELD_REF <*cfg, 8, 5624>;
      D.41322 = D.33854 & 32;
      if (D.41322 != 0) goto <D.41323>; else goto <D.41324>;
      <D.41323>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.41325>; else goto <D.41326>;
      <D.41325>:
      i = 0;
      goto <D.28511>;
      <D.28510>:
      {
        struct MonoInst * ins;

        D.31416 = cfg->varinfo;
        D.30802 = (long unsigned int) i;
        D.31411 = D.30802 * 8;
        D.41327 = D.31416 + D.31411;
        ins = *D.41327;
        D.41328 = BIT_FIELD_REF <*ins, 32, 0>;
        D.41329 = D.41328 & 16777215;
        if (D.41329 == 393545) goto <D.41330>; else goto <D.41331>;
        <D.41330>:
        {
          struct MonoInst * inst;

          D.30673 = cfg->mempool;
          inst = mono_mempool_alloc (D.30673, 80);
          inst->data.op[1].const_val = 0;
          D.41332 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.41332;
          inst->prev = 0B;
          D.41333 = inst->prev;
          inst->next = D.41333;
          inst->opcode = 363;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.41334 = inst->sreg3;
          inst->sreg2 = D.41334;
          D.41335 = inst->sreg2;
          inst->sreg1 = D.41335;
          D.30898 = cfg->ip;
          inst->cil_code = D.30898;
          D.41336 = ins->dreg;
          inst->dreg = D.41336;
          inst->data.op[0].p = 0B;
          inst->type = 3;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          if (D.30927 != 0B) goto <D.41337>; else goto <D.41338>;
          <D.41337>:
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          D.30927->next = inst;
          bblock.113 = cfg->cbb;
          D.30927 = bblock.113->last_ins;
          inst->prev = D.30927;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          goto <D.41339>;
          <D.41338>:
          bblock.113 = cfg->cbb;
          bblock.113 = cfg->cbb;
          bblock.113->last_ins = inst;
          D.30927 = bblock.113->last_ins;
          bblock.113->code = D.30927;
          <D.41339>:
        }
        <D.41331>:
      }
      i = i + 1;
      <D.28511>:
      i.104 = (unsigned int) i;
      D.41340 = cfg->num_varinfo;
      if (i.104 < D.41340) goto <D.28510>; else goto <D.28512>;
      <D.28512>:
      <D.41326>:
      <D.41324>:
      D.34173 = cfg->lmf_var;
      if (D.34173 != 0B) goto <D.41341>; else goto <D.41342>;
      <D.41341>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.41343>; else goto <D.41344>;
      <D.41343>:
      cfg->cbb = init_localsbb;
      emit_push_lmf (cfg);
      <D.41344>:
      <D.41342>:
      if (seq_points != 0) goto <D.41345>; else goto <D.41346>;
      <D.41345>:
      {
        struct MonoBasicBlock * bb;

        bb = cfg->bb_entry;
        goto <D.28515>;
        <D.28514>:
        D.41347 = bb->code;
        if (D.41347 != 0B) goto <D.41348>; else goto <D.41349>;
        <D.41348>:
        D.41350 = bb->in_count;
        if (D.41350 > 1) goto <D.41351>; else goto <D.41352>;
        <D.41351>:
        D.41347 = bb->code;
        D.41353 = D.41347->opcode;
        if (D.41353 == 341) goto <D.41354>; else goto <D.41355>;
        <D.41354>:
        D.41347 = bb->code;
        D.41347 = bb->code;
        D.41356 = D.41347->flags;
        D.41357 = D.41356 | 1;
        D.41347->flags = D.41357;
        <D.41355>:
        <D.41352>:
        <D.41349>:
        bb = bb->next_bb;
        <D.28515>:
        if (bb != 0B) goto <D.28514>; else goto <D.28516>;
        <D.28516>:
      }
      <D.41346>:
      if (seq_points != 0) goto <D.41358>; else goto <D.41359>;
      <D.41358>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ins->data.op[1].const_val = -1;
      ins->flags = 0;
      D.41360 = init_localsbb->last_ins;
      if (D.41360 != 0B) goto <D.41361>; else goto <D.41362>;
      <D.41361>:
      D.41360 = init_localsbb->last_ins;
      D.41360->next = ins;
      D.41360 = init_localsbb->last_ins;
      ins->prev = D.41360;
      init_localsbb->last_ins = ins;
      goto <D.41363>;
      <D.41362>:
      init_localsbb->last_ins = ins;
      D.41360 = init_localsbb->last_ins;
      init_localsbb->code = D.41360;
      <D.41363>:
      D.30673 = cfg->mempool;
      ins = mono_mempool_alloc (D.30673, 80);
      ins->data.op[1].const_val = 0;
      D.30894 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.30894;
      ins->prev = 0B;
      D.30895 = ins->prev;
      ins->next = D.30895;
      ins->opcode = 341;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.30896 = ins->sreg3;
      ins->sreg2 = D.30896;
      D.30897 = ins->sreg2;
      ins->sreg1 = D.30897;
      D.30898 = cfg->ip;
      ins->cil_code = D.30898;
      ins->data.op[1].const_val = 16777215;
      ins->flags = 0;
      D.41364 = cfg->bb_exit;
      D.41365 = D.41364->last_ins;
      if (D.41365 != 0B) goto <D.41366>; else goto <D.41367>;
      <D.41366>:
      D.41364 = cfg->bb_exit;
      D.41365 = D.41364->last_ins;
      D.41365->next = ins;
      D.41364 = cfg->bb_exit;
      D.41365 = D.41364->last_ins;
      ins->prev = D.41365;
      D.41364 = cfg->bb_exit;
      D.41364->last_ins = ins;
      goto <D.41368>;
      <D.41367>:
      D.41364 = cfg->bb_exit;
      D.41364 = cfg->bb_exit;
      D.41364->last_ins = ins;
      D.41365 = D.41364->last_ins;
      D.41364->code = D.41365;
      <D.41368>:
      <D.41359>:
      if (sym_seq_points != 0) goto <D.41369>; else goto <D.41370>;
      <D.41369>:
      i = 0;
      goto <D.28519>;
      <D.28518>:
      D.30802 = (long unsigned int) i;
      D.41371 = D.30802 / 64;
      D.41372 = seq_point_locs->data[D.41371];
      D.41373 = i & 63;
      D.41374 = D.41372 >> D.41373;
      D.41375 = D.41374 & 1;
      if (D.41375 != 0) goto <D.41376>; else goto <D.41377>;
      <D.41376>:
      D.30802 = (long unsigned int) i;
      D.41371 = D.30802 / 64;
      D.41378 = seq_point_set_locs->data[D.41371];
      D.41373 = i & 63;
      D.41379 = D.41378 >> D.41373;
      D.41380 = D.41379 & 1;
      if (D.41380 == 0) goto <D.41381>; else goto <D.41382>;
      <D.41381>:
      {
        struct MonoInst * ins;

        D.30673 = cfg->mempool;
        ins = mono_mempool_alloc (D.30673, 80);
        ins->data.op[1].const_val = 0;
        D.41383 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.41383;
        ins->prev = 0B;
        D.41384 = ins->prev;
        ins->next = D.41384;
        ins->opcode = 341;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.41385 = ins->sreg3;
        ins->sreg2 = D.41385;
        D.41386 = ins->sreg2;
        ins->sreg1 = D.41386;
        D.30898 = cfg->ip;
        ins->cil_code = D.30898;
        D.41387 = (long int) i;
        ins->data.op[1].const_val = D.41387;
        ins->flags = 0;
        mono_add_seq_point (cfg, 0B, ins, -1);
      }
      <D.41382>:
      <D.41377>:
      i = i + 1;
      <D.28519>:
      i.335 = (unsigned int) i;
      D.30650 = header->code_size;
      if (i.335 < D.30650) goto <D.28518>; else goto <D.28520>;
      <D.28520>:
      <D.41370>:
      cfg->ip = 0B;
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.41389>; else goto <D.41390>;
      <D.41389>:
      {
        struct MonoBasicBlock * bb;

        bb = cfg->bb_entry;
        goto <D.28523>;
        <D.28522>:
        D.41391 = bb->real_offset;
        D.41392 = (int) D.41391;
        D.41393 = mono_find_block_region (cfg, D.41392);
        D.41394 = (unsigned int) D.41393;
        bb->region = D.41394;
        D.41395 = cfg->spvars;
        if (D.41395 != 0B) goto <D.41396>; else goto <D.41397>;
        <D.41396>:
        D.41398 = bb->region;
        D.41399 = (int) D.41398;
        mono_create_spvar_for_region (cfg, D.41399);
        <D.41397>:
        D.30753 = cfg->verbose_level;
        if (D.30753 > 2) goto <D.41400>; else goto <D.41401>;
        <D.41400>:
        D.41398 = bb->region;
        D.41391 = bb->real_offset;
        D.41402 = bb->block_num;
        printf ("REGION BB%d IL_%04x ID_%08X\n", D.41402, D.41391, D.41398);
        <D.41401>:
        bb = bb->next_bb;
        <D.28523>:
        if (bb != 0B) goto <D.28522>; else goto <D.28524>;
        <D.28524>:
      }
      <D.41390>:
      monoeg_g_slist_free (class_inits);
      dont_inline = monoeg_g_list_remove (dont_inline, method);
      if (inline_costs < 0) goto <D.41403>; else goto <D.41404>;
      <D.41403>:
      {
        char * mname;

        mname = mono_method_full_name (method, 1);
        mono_cfg_set_exception (cfg, 3);
        D.41405 = monoeg_g_strdup_printf ("Method %s is too complex.", mname);
        cfg->exception_message = D.41405;
        monoeg_g_free (mname);
        D.41406 = cfg->headers_to_free;
        D.30673 = cfg->mempool;
        D.41407 = g_slist_prepend_mempool (D.30673, D.41406, header);
        cfg->headers_to_free = D.41407;
        mono_basic_block_free (original_bb);
        D.41408 = -1;
        return D.41408;
      }
      <D.41404>:
      D.30753 = cfg->verbose_level;
      if (D.30753 > 2) goto <D.41409>; else goto <D.41410>;
      <D.41409>:
      D.30642 = cfg->method;
      if (D.30642 == method) goto <D.41411>; else goto <D.41412>;
      <D.41411>:
      mono_print_code (cfg, "AFTER METHOD-TO-IR");
      <D.41412>:
      <D.41410>:
      D.41406 = cfg->headers_to_free;
      D.30673 = cfg->mempool;
      D.41413 = g_slist_prepend_mempool (D.30673, D.41406, header);
      cfg->headers_to_free = D.41413;
      mono_basic_block_free (original_bb);
      D.41408 = inline_costs;
      return D.41408;
      exception_exit:
      D.31231 = cfg->exception_type;
      D.41414 = D.31231 == 0;
      D.41415 = (long int) D.41414;
      D.41416 = __builtin_expect (D.41415, 0);
      if (D.41416 != 0) goto <D.41417>; else goto <D.41418>;
      <D.41417>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12004, "cfg->exception_type != MONO_EXCEPTION_NONE");
      <D.41418>:
      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.41406 = cfg->headers_to_free;
      D.30673 = cfg->mempool;
      D.41419 = g_slist_prepend_mempool (D.30673, D.41406, header);
      cfg->headers_to_free = D.41419;
      D.41408 = -1;
      return D.41408;
    }
  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.41482;
  struct MonoImage * D.41483;
  _Bool D.41484;
  long int D.41485;
  long int D.41486;
  unsigned char D.41489;
  gboolean D.41492;
  unsigned char D.41493;
  struct MonoClass * klass.336;
  struct MonoImage * D.41497;
  struct MonoClass * klass.337;
  struct MonoMethod * D.41505;
  struct MonoClass * D.41507;
  unsigned int D.41508;
  short unsigned int D.41509;
  _Bool D.41510;
  long int D.41511;
  long int D.41512;
  short unsigned int D.41517;
  struct MonoType * D.41519;
  unsigned char D.41520;
  struct MonoType * D.41522;
  unsigned char D.41523;
  char D.41524;
  int D.41525;
  unsigned char D.41526;
  struct MonoAssembly * ass;
  struct MonoCustomAttrInfo * attrs;
  static struct MonoClass * klass;
  int i;
  gboolean val;

  D.41482 = m->klass;
  D.41483 = D.41482->image;
  ass = D.41483->assembly;
  val = 0;
  D.41484 = ass == 0B;
  D.41485 = (long int) D.41484;
  D.41486 = __builtin_expect (D.41485, 0);
  if (D.41486 != 0) goto <D.41487>; else goto <D.41488>;
  <D.41487>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6422, "ass");
  <D.41488>:
  D.41489 = ass->jit_optimizer_disabled_inited;
  if (D.41489 != 0) goto <D.41490>; else goto <D.41491>;
  <D.41490>:
  D.41493 = ass->jit_optimizer_disabled;
  D.41492 = (gboolean) D.41493;
  return D.41492;
  <D.41491>:
  klass.336 = klass;
  if (klass.336 == 0B) goto <D.41495>; else goto <D.41496>;
  <D.41495>:
  D.41497 = mono_defaults.corlib;
  klass.337 = mono_class_from_name (D.41497, "System.Diagnostics", "DebuggableAttribute");
  klass = klass.337;
  <D.41496>:
  klass.336 = klass;
  if (klass.336 == 0B) goto <D.41499>; else goto <D.41500>;
  <D.41499>:
  ass->jit_optimizer_disabled = 0;
  mono_memory_barrier ();
  ass->jit_optimizer_disabled_inited = 1;
  D.41492 = 0;
  return D.41492;
  <D.41500>:
  attrs = mono_custom_attrs_from_assembly (ass);
  if (attrs != 0B) goto <D.41501>; else goto <D.41502>;
  <D.41501>:
  i = 0;
  goto <D.27483>;
  <D.27482>:
  {
    struct MonoCustomAttrEntry * attr;
    const gchar * p;
    int len;
    struct MonoMethodSignature * sig;

    attr = &attrs->attrs[i];
    D.41505 = attr->ctor;
    if (D.41505 == 0B) goto <D.41503>; else goto <D.41506>;
    <D.41506>:
    D.41505 = attr->ctor;
    D.41507 = D.41505->klass;
    klass.336 = klass;
    if (D.41507 != klass.336) goto <D.41503>; else goto <D.41504>;
    <D.41503>:
    // predicted unlikely by continue predictor.
    goto <D.27481>;
    <D.41504>:
    D.41508 = attr->data_size;
    len = (int) D.41508;
    p = attr->data;
    D.41509 = MEM[(const guint16 *)p];
    D.41510 = D.41509 != 1;
    D.41511 = (long int) D.41510;
    D.41512 = __builtin_expect (D.41511, 0);
    if (D.41512 != 0) goto <D.41513>; else goto <D.41514>;
    <D.41513>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6449, "read16 (p) == 0x0001");
    <D.41514>:
    p = p + 2;
    D.41505 = attr->ctor;
    sig = mono_method_signature (D.41505);
    D.41517 = sig->param_count;
    if (D.41517 != 2) goto <D.41515>; else goto <D.41518>;
    <D.41518>:
    D.41519 = sig->params[0];
    D.41520 = D.41519->type;
    if (D.41520 != 2) goto <D.41515>; else goto <D.41521>;
    <D.41521>:
    D.41522 = sig->params[1];
    D.41523 = D.41522->type;
    if (D.41523 != 2) goto <D.41515>; else goto <D.41516>;
    <D.41515>:
    // predicted unlikely by continue predictor.
    goto <D.27481>;
    <D.41516>:
    p = p + 1;
    D.41524 = *p;
    val = (gboolean) D.41524;
  }
  <D.27481>:
  i = i + 1;
  <D.27483>:
  D.41525 = attrs->num_attrs;
  if (D.41525 > i) goto <D.27482>; else goto <D.27484>;
  <D.27484>:
  mono_custom_attrs_free (attrs);
  <D.41502>:
  D.41526 = (unsigned char) val;
  ass->jit_optimizer_disabled = D.41526;
  mono_memory_barrier ();
  ass->jit_optimizer_disabled_inited = 1;
  D.41492 = val;
  return D.41492;
}


mono_memory_barrier ()
{
  __sync_synchronize ();
}


mono_create_exvar_for_offset (struct MonoCompile * cfg, int offset)
{
  long int D.41528;
  const void * D.41529;
  struct GHashTable * D.41530;
  struct MonoInst * D.41533;
  struct MonoClass * D.41534;
  struct MonoType * D.41535;
  unsigned char D.41536;
  unsigned char D.41537;
  void * D.41538;
  struct MonoInst * var;

  D.41528 = (long int) offset;
  D.41529 = (const void *) D.41528;
  D.41530 = cfg->exvars;
  var = monoeg_g_hash_table_lookup (D.41530, D.41529);
  if (var != 0B) goto <D.41531>; else goto <D.41532>;
  <D.41531>:
  D.41533 = var;
  return D.41533;
  <D.41532>:
  D.41534 = mono_defaults.object_class;
  D.41535 = &D.41534->byval_arg;
  var = mono_compile_create_var (cfg, D.41535, 329);
  D.41536 = var->flags;
  D.41537 = D.41536 | 4;
  var->flags = D.41537;
  D.41528 = (long int) offset;
  D.41538 = (void *) D.41528;
  D.41530 = cfg->exvars;
  monoeg_g_hash_table_insert_replace (D.41530, D.41538, var, 0);
  D.41533 = var;
  return D.41533;
}


mono_save_args (struct MonoCompile * cfg, struct MonoMethodSignature * sig, struct MonoInst * * sp)
{
  struct MonoType * iftmp.338;
  unsigned char D.41543;
  unsigned char D.41544;
  struct MonoInst * D.41547;
  <unnamed-unsigned:1> D.41548;
  int D.41549;
  int D.41550;
  struct MonoInst * * D.41551;
  long unsigned int D.41552;
  long unsigned int D.41553;
  struct MonoInst * * D.41554;
  struct MonoMemPool * D.41555;
  long int D.41556;
  struct MonoInst * D.41557;
  int D.41558;
  int D.41559;
  const unsigned char * D.41560;
  struct MonoType * * D.41561;
  struct MonoType * * D.41562;
  struct MonoType * D.41563;
  unsigned int D.41564;
  short unsigned int D.41565;
  struct MonoInst * D.41566;
  struct MonoClass * D.41567;
  int D.41568;
  int D.41569;
  short unsigned int D.41570;
  struct MonoClass * D.41573;
  struct MonoBasicBlock * D.41574;
  struct MonoInst * D.41575;
  const unsigned char * D.41579;
  short unsigned int D.41580;
  int D.41581;
  int D.41582;
  struct MonoInst * store;
  struct MonoInst * temp;
  int i;

  i = 0;
  goto <D.27165>;
  <D.27164>:
  {
    struct MonoType * argtype;

    D.41543 = BIT_FIELD_REF <*sig, 8, 112>;
    D.41544 = D.41543 & 64;
    if (D.41544 != 0) goto <D.41545>; else goto <D.41541>;
    <D.41545>:
    if (i == 0) goto <D.41546>; else goto <D.41541>;
    <D.41546>:
    D.41547 = *sp;
    iftmp.338 = type_from_stack_type (D.41547);
    goto <D.41542>;
    <D.41541>:
    D.41548 = sig->hasthis;
    D.41549 = (int) D.41548;
    D.41550 = i - D.41549;
    iftmp.338 = sig->params[D.41550];
    <D.41542>:
    argtype = iftmp.338;
    temp = mono_compile_create_var (cfg, argtype, 329);
    D.41551 = cfg->args;
    D.41552 = (long unsigned int) i;
    D.41553 = D.41552 * 8;
    D.41554 = D.41551 + D.41553;
    *D.41554 = temp;
    D.41555 = cfg->mempool;
    store = mono_mempool_alloc (D.41555, 80);
    store->data.op[1].const_val = 0;
    D.41556 = store->data.op[1].const_val;
    store->data.op[0].const_val = D.41556;
    store->prev = 0B;
    D.41557 = store->prev;
    store->next = D.41557;
    store->opcode = 428;
    store->flags = 0;
    store->type = 0;
    store->dreg = -1;
    store->sreg3 = -1;
    D.41558 = store->sreg3;
    store->sreg2 = D.41558;
    D.41559 = store->sreg2;
    store->sreg1 = D.41559;
    D.41560 = cfg->ip;
    store->cil_code = D.41560;
    D.41561 = cfg->arg_types;
    D.41552 = (long unsigned int) i;
    D.41553 = D.41552 * 8;
    D.41562 = D.41561 + D.41553;
    D.41563 = *D.41562;
    D.41564 = mono_type_to_regmove (cfg, D.41563);
    D.41565 = (short unsigned int) D.41564;
    store->opcode = D.41565;
    D.41551 = cfg->args;
    D.41552 = (long unsigned int) i;
    D.41553 = D.41552 * 8;
    D.41554 = D.41551 + D.41553;
    D.41566 = *D.41554;
    D.41567 = D.41566->klass;
    store->klass = D.41567;
    D.41547 = *sp;
    D.41568 = D.41547->dreg;
    store->sreg1 = D.41568;
    D.41551 = cfg->args;
    D.41552 = (long unsigned int) i;
    D.41553 = D.41552 * 8;
    D.41554 = D.41551 + D.41553;
    D.41566 = *D.41554;
    D.41569 = D.41566->dreg;
    store->dreg = D.41569;
    D.41570 = store->opcode;
    if (D.41570 == 431) goto <D.41571>; else goto <D.41572>;
    <D.41571>:
    D.41561 = cfg->arg_types;
    D.41552 = (long unsigned int) i;
    D.41553 = D.41552 * 8;
    D.41562 = D.41561 + D.41553;
    D.41563 = *D.41562;
    D.41573 = mono_class_from_mono_type (D.41563);
    store->klass = D.41573;
    <D.41572>:
    D.41574 = cfg->cbb;
    D.41575 = D.41574->last_ins;
    if (D.41575 != 0B) goto <D.41576>; else goto <D.41577>;
    <D.41576>:
    D.41574 = cfg->cbb;
    D.41575 = D.41574->last_ins;
    D.41575->next = store;
    D.41574 = cfg->cbb;
    D.41575 = D.41574->last_ins;
    store->prev = D.41575;
    D.41574 = cfg->cbb;
    D.41574->last_ins = store;
    goto <D.41578>;
    <D.41577>:
    D.41574 = cfg->cbb;
    D.41574 = cfg->cbb;
    D.41574->last_ins = store;
    D.41575 = D.41574->last_ins;
    D.41574->code = D.41575;
    <D.41578>:
    D.41547 = *sp;
    D.41579 = D.41547->cil_code;
    store->cil_code = D.41579;
    sp = sp + 8;
  }
  i = i + 1;
  <D.27165>:
  D.41580 = sig->param_count;
  D.41581 = (int) D.41580;
  D.41548 = sig->hasthis;
  D.41549 = (int) D.41548;
  D.41582 = D.41581 + D.41549;
  if (D.41582 > i) goto <D.27164>; else goto <D.27166>;
  <D.27166>:
}


emit_get_rgctx_gsharedvt_method (struct MonoCompile * cfg, int context_used, struct MonoMethod * cmethod, struct MonoGSharedVtMethodInfo * info)
{
  int D.41583;
  struct MonoMethod * D.41584;
  struct MonoMemPool * D.41585;
  struct MonoInst * D.41586;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.41583 = context_used & 2;
  D.41584 = cfg->current_method;
  D.41585 = cfg->mempool;
  entry = mono_patch_info_rgctx_entry_new (D.41585, D.41584, D.41583, 46, info, 20);
  D.41584 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.41584, context_used);
  D.41586 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.41586;
}


emit_throw_exception (struct MonoCompile * cfg, struct MonoException * ex)
{
  struct MonoMemPool * D.41588;
  void * D.41589;
  struct MonoInst * D.41590;
  long int D.41591;
  struct MonoInst * D.41592;
  int D.41593;
  int D.41594;
  const unsigned char * D.41595;
  unsigned int D.41596;
  int D.41597;
  struct MonoBasicBlock * D.41598;
  struct MonoInst * D.41599;
  struct MonoMethod * thrower;
  struct MonoInst * args[1];

  try
    {
      thrower = throw_exception ();
      D.41588 = cfg->mempool;
      D.41589 = mono_mempool_alloc (D.41588, 80);
      args[0] = D.41589;
      D.41590 = args[0];
      D.41590 = args[0];
      D.41590->data.op[1].const_val = 0;
      D.41591 = D.41590->data.op[1].const_val;
      D.41590->data.op[0].const_val = D.41591;
      D.41590 = args[0];
      D.41590 = args[0];
      D.41590->prev = 0B;
      D.41592 = D.41590->prev;
      D.41590->next = D.41592;
      D.41590 = args[0];
      D.41590->opcode = 363;
      D.41590 = args[0];
      D.41590->flags = 0;
      D.41590 = args[0];
      D.41590->type = 0;
      D.41590 = args[0];
      D.41590->dreg = -1;
      D.41590 = args[0];
      D.41590 = args[0];
      D.41590 = args[0];
      D.41590->sreg3 = -1;
      D.41593 = D.41590->sreg3;
      D.41590->sreg2 = D.41593;
      D.41594 = D.41590->sreg2;
      D.41590->sreg1 = D.41594;
      D.41590 = args[0];
      D.41595 = cfg->ip;
      D.41590->cil_code = D.41595;
      D.41590 = args[0];
      D.41590->data.op[0].p = ex;
      D.41590 = args[0];
      D.41590->type = 3;
      D.41590 = args[0];
      D.41596 = alloc_dreg (cfg, 3);
      D.41597 = (int) D.41596;
      D.41590->dreg = D.41597;
      D.41598 = cfg->cbb;
      D.41599 = D.41598->last_ins;
      if (D.41599 != 0B) goto <D.41600>; else goto <D.41601>;
      <D.41600>:
      D.41598 = cfg->cbb;
      D.41599 = D.41598->last_ins;
      D.41590 = args[0];
      D.41599->next = D.41590;
      D.41590 = args[0];
      D.41598 = cfg->cbb;
      D.41599 = D.41598->last_ins;
      D.41590->prev = D.41599;
      D.41598 = cfg->cbb;
      D.41590 = args[0];
      D.41598->last_ins = D.41590;
      goto <D.41602>;
      <D.41601>:
      D.41598 = cfg->cbb;
      D.41598 = cfg->cbb;
      D.41590 = args[0];
      D.41598->last_ins = D.41590;
      D.41599 = D.41598->last_ins;
      D.41598->code = D.41599;
      <D.41602>:
      mono_emit_method_call (cfg, thrower, &args, 0B);
    }
  finally
    {
      args = {CLOBBER};
    }
}


throw_exception ()
{
  struct MonoMethod * method.339;
  struct MonoClass * D.41606;
  struct MonoMethod * method.340;
  _Bool D.41608;
  long int D.41609;
  long int D.41610;
  struct MonoMethod * D.41613;
  static struct MonoMethod * method = 0B;

  method.339 = method;
  if (method.339 == 0B) goto <D.41604>; else goto <D.41605>;
  <D.41604>:
  {
    struct MonoSecurityManager * secman;

    secman = mono_security_manager_get_methods ();
    D.41606 = secman->securitymanager;
    method.340 = mono_class_get_method_from_name (D.41606, "ThrowException", 1);
    method = method.340;
  }
  <D.41605>:
  method.339 = method;
  D.41608 = method.339 == 0B;
  D.41609 = (long int) D.41608;
  D.41610 = __builtin_expect (D.41609, 0);
  if (D.41610 != 0) goto <D.41611>; else goto <D.41612>;
  <D.41611>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6187, "method");
  <D.41612>:
  D.41613 = method;
  return D.41613;
}


get_basic_blocks (struct MonoCompile * cfg, struct MonoMethodHeader * header, guint real_offset, unsigned char * start, unsigned char * end, unsigned char * * pos)
{
  unsigned char * ip.341;
  long int ip.342;
  long int start.343;
  long int D.41618;
  <unnamed type> D.41619;
  int D.41622;
  unsigned int D.41625;
  struct MonoDebugOptions * D.41628;
  int D.41629;
  unsigned char D.41631;
  int D.41632;
  unsigned char * ip.344;
  unsigned char * ip.345;
  unsigned char * ip.346;
  unsigned char * ip.347;
  sizetype D.41637;
  unsigned char D.41638;
  signed char D.41639;
  sizetype D.41640;
  sizetype D.41641;
  sizetype D.41642;
  struct MonoBasicBlock * * D.41643;
  long int target.348;
  unsigned char * D.41645;
  long int D.41646;
  long int D.41647;
  long unsigned int D.41648;
  long unsigned int D.41649;
  struct MonoBasicBlock * * D.41650;
  const unsigned char * D.41656;
  struct MonoDebugOptions * D.41661;
  int D.41662;
  struct MonoMemPool * D.41664;
  unsigned int D.41665;
  unsigned int D.41666;
  unsigned int D.41667;
  int D.41668;
  unsigned char * D.41669;
  long int D.41672;
  long int D.41673;
  long unsigned int D.41674;
  long unsigned int D.41675;
  struct MonoBasicBlock * * D.41676;
  unsigned int D.41677;
  long int D.41680;
  long unsigned int D.41681;
  long unsigned int D.41682;
  struct MonoBasicBlock * * D.41683;
  struct MonoDebugOptions * D.41693;
  int D.41694;
  unsigned int D.41696;
  unsigned int D.41697;
  int D.41698;
  const guint32 * D.41701;
  unsigned int D.41702;
  int D.41703;
  sizetype D.41704;
  sizetype D.41705;
  sizetype D.41706;
  struct MonoDebugOptions * D.41716;
  int D.41717;
  unsigned int D.41719;
  unsigned int D.41720;
  int D.41721;
  struct MonoDebugOptions * D.41735;
  int D.41736;
  unsigned int D.41738;
  unsigned int D.41739;
  int D.41740;
  unsigned int D.41743;
  unsigned int D.41744;
  struct MonoDebugOptions * D.41754;
  int D.41755;
  unsigned int D.41757;
  unsigned int D.41758;
  int D.41759;
  unsigned int D.41762;
  int D.41763;
  sizetype D.41764;
  sizetype D.41765;
  struct MonoDebugOptions * D.41775;
  int D.41776;
  unsigned int D.41778;
  unsigned int D.41779;
  int D.41780;
  unsigned char * ip.349;
  unsigned char * ip.350;
  long int bb_start.351;
  long int D.41788;
  long unsigned int D.41789;
  long unsigned int D.41790;
  struct MonoBasicBlock * * D.41791;
  _Bool D.41792;
  _Bool D.41793;
  _Bool D.41794;
  int D.41797;
  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.27313>;
      <D.27312>:
      ip.341 = ip;
      ip.342 = (long int) ip.341;
      start.343 = (long int) start;
      D.41618 = ip.342 - start.343;
      cli_addr = (guint) D.41618;
      D.41619 = mono_opcode_value (&ip, end);
      i = (int) D.41619;
      if (i < 0) goto <D.41620>; else goto <D.41621>;
      <D.41620>:
      D.41622 = cfg->gsharedvt;
      if (D.41622 != 0) goto <D.41623>; else goto <D.41624>;
      <D.41623>:
      D.41625 = cfg->verbose_level;
      if (D.41625 > 2) goto <D.41626>; else goto <D.41627>;
      <D.41626>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41627>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41624>:
      D.41628 = mini_get_debug_options ();
      D.41629 = D.41628->break_on_unverified;
      if (D.41629 != 0) goto <D.41630>; else goto unverified;
      <D.41630>:
      __asm__ __volatile__("int $03");
      <D.41621>:
      opcode = &mono_opcodes[i];
      D.41631 = opcode->argument;
      D.41632 = (int) D.41631;
      switch (D.41632) <default: <D.27307>, case 0: <D.27284>, case 1: <D.27287>, case 2: <D.27288>, case 3: <D.27289>, case 4: <D.27290>, case 5: <D.27286>, case 6: <D.27291>, case 7: <D.27294>, case 8: <D.27295>, case 9: <D.27298>, case 10: <D.27297>, case 11: <D.27299>, case 12: <D.27305>, case 13: <D.27292>, case 14: <D.27293>, case 15: <D.27296>, case 16: <D.27306>>
      <D.27284>:
      ip.341 = ip;
      ip.344 = ip.341 + 1;
      ip = ip.344;
      goto <D.27285>;
      <D.27286>:
      <D.27287>:
      <D.27288>:
      <D.27289>:
      <D.27290>:
      <D.27291>:
      <D.27292>:
      <D.27293>:
      ip.341 = ip;
      ip.345 = ip.341 + 5;
      ip = ip.345;
      goto <D.27285>;
      <D.27294>:
      ip.341 = ip;
      ip.346 = ip.341 + 3;
      ip = ip.346;
      goto <D.27285>;
      <D.27295>:
      <D.27296>:
      ip.341 = ip;
      ip.347 = ip.341 + 2;
      ip = ip.347;
      goto <D.27285>;
      <D.27297>:
      D.41637 = (sizetype) cli_addr;
      ip.341 = ip;
      ip.344 = ip.341 + 1;
      D.41638 = *ip.344;
      D.41639 = (signed char) D.41638;
      D.41640 = (sizetype) D.41639;
      D.41641 = D.41637 + D.41640;
      D.41642 = D.41641 + 2;
      target = start + D.41642;
      D.41643 = cfg->cil_offset_to_bb;
      target.348 = (long int) target;
      D.41645 = cfg->cil_start;
      D.41646 = (long int) D.41645;
      D.41647 = target.348 - D.41646;
      D.41648 = (long unsigned int) D.41647;
      D.41649 = D.41648 * 8;
      D.41650 = D.41643 + D.41649;
      bblock = *D.41650;
      if (bblock == 0B) goto <D.41651>; else goto <D.41652>;
      <D.41651>:
      if (target >= end) goto <D.41653>; else goto <D.41655>;
      <D.41655>:
      D.41656 = header->code;
      if (D.41656 > target) goto <D.41653>; else goto <D.41654>;
      <D.41653>:
      D.41622 = cfg->gsharedvt;
      if (D.41622 != 0) goto <D.41657>; else goto <D.41658>;
      <D.41657>:
      D.41625 = cfg->verbose_level;
      if (D.41625 > 2) goto <D.41659>; else goto <D.41660>;
      <D.41659>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41660>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41658>:
      D.41661 = mini_get_debug_options ();
      D.41662 = D.41661->break_on_unverified;
      if (D.41662 != 0) goto <D.41663>; else goto unverified;
      <D.41663>:
      __asm__ __volatile__("int $03");
      <D.41654>:
      D.41664 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.41664, 296);
      D.41665 = cfg->num_bblocks;
      D.41666 = D.41665;
      D.41667 = D.41666 + 1;
      cfg->num_bblocks = D.41667;
      D.41668 = (int) D.41666;
      bblock->block_num = D.41668;
      bblock->cil_code = target;
      D.41669 = bblock->cil_code;
      if (D.41669 != 0B) goto <D.41670>; else goto <D.41671>;
      <D.41670>:
      D.41643 = cfg->cil_offset_to_bb;
      D.41669 = bblock->cil_code;
      D.41672 = (long int) D.41669;
      D.41645 = cfg->cil_start;
      D.41646 = (long int) D.41645;
      D.41673 = D.41672 - D.41646;
      D.41674 = (long unsigned int) D.41673;
      D.41675 = D.41674 * 8;
      D.41676 = D.41643 + D.41675;
      *D.41676 = bblock;
      <D.41671>:
      D.41677 = cfg->real_offset;
      bblock->real_offset = D.41677;
      <D.41652>:
      ip.341 = ip;
      ip.347 = ip.341 + 2;
      ip = ip.347;
      ip.341 = ip;
      if (ip.341 < end) goto <D.41678>; else goto <D.41679>;
      <D.41678>:
      D.41643 = cfg->cil_offset_to_bb;
      ip.341 = ip;
      ip.342 = (long int) ip.341;
      D.41645 = cfg->cil_start;
      D.41646 = (long int) D.41645;
      D.41680 = ip.342 - D.41646;
      D.41681 = (long unsigned int) D.41680;
      D.41682 = D.41681 * 8;
      D.41683 = D.41643 + D.41682;
      bblock = *D.41683;
      if (bblock == 0B) goto <D.41684>; else goto <D.41685>;
      <D.41684>:
      ip.341 = ip;
      if (ip.341 >= end) goto <D.41686>; else goto <D.41688>;
      <D.41688>:
      D.41656 = header->code;
      ip.341 = ip;
      if (D.41656 > ip.341) goto <D.41686>; else goto <D.41687>;
      <D.41686>:
      D.41622 = cfg->gsharedvt;
      if (D.41622 != 0) goto <D.41689>; else goto <D.41690>;
      <D.41689>:
      D.41625 = cfg->verbose_level;
      if (D.41625 > 2) goto <D.41691>; else goto <D.41692>;
      <D.41691>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41692>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41690>:
      D.41693 = mini_get_debug_options ();
      D.41694 = D.41693->break_on_unverified;
      if (D.41694 != 0) goto <D.41695>; else goto unverified;
      <D.41695>:
      __asm__ __volatile__("int $03");
      <D.41687>:
      D.41664 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.41664, 296);
      D.41665 = cfg->num_bblocks;
      D.41696 = D.41665;
      D.41697 = D.41696 + 1;
      cfg->num_bblocks = D.41697;
      D.41698 = (int) D.41696;
      bblock->block_num = D.41698;
      ip.341 = ip;
      bblock->cil_code = ip.341;
      D.41669 = bblock->cil_code;
      if (D.41669 != 0B) goto <D.41699>; else goto <D.41700>;
      <D.41699>:
      D.41643 = cfg->cil_offset_to_bb;
      D.41669 = bblock->cil_code;
      D.41672 = (long int) D.41669;
      D.41645 = cfg->cil_start;
      D.41646 = (long int) D.41645;
      D.41673 = D.41672 - D.41646;
      D.41674 = (long unsigned int) D.41673;
      D.41675 = D.41674 * 8;
      D.41676 = D.41643 + D.41675;
      *D.41676 = bblock;
      <D.41700>:
      D.41677 = cfg->real_offset;
      bblock->real_offset = D.41677;
      <D.41685>:
      <D.41679>:
      goto <D.27285>;
      <D.27298>:
      D.41637 = (sizetype) cli_addr;
      ip.341 = ip;
      D.41701 = ip.341 + 1;
      D.41702 = *D.41701;
      D.41703 = (int) D.41702;
      D.41704 = (sizetype) D.41703;
      D.41705 = D.41637 + D.41704;
      D.41706 = D.41705 + 5;
      target = start + D.41706;
      D.41643 = cfg->cil_offset_to_bb;
      target.348 = (long int) target;
      D.41645 = cfg->cil_start;
      D.41646 = (long int) D.41645;
      D.41647 = target.348 - D.41646;
      D.41648 = (long unsigned int) D.41647;
      D.41649 = D.41648 * 8;
      D.41650 = D.41643 + D.41649;
      bblock = *D.41650;
      if (bblock == 0B) goto <D.41707>; else goto <D.41708>;
      <D.41707>:
      if (target >= end) goto <D.41709>; else goto <D.41711>;
      <D.41711>:
      D.41656 = header->code;
      if (D.41656 > target) goto <D.41709>; else goto <D.41710>;
      <D.41709>:
      D.41622 = cfg->gsharedvt;
      if (D.41622 != 0) goto <D.41712>; else goto <D.41713>;
      <D.41712>:
      D.41625 = cfg->verbose_level;
      if (D.41625 > 2) goto <D.41714>; else goto <D.41715>;
      <D.41714>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41715>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41713>:
      D.41716 = mini_get_debug_options ();
      D.41717 = D.41716->break_on_unverified;
      if (D.41717 != 0) goto <D.41718>; else goto unverified;
      <D.41718>:
      __asm__ __volatile__("int $03");
      <D.41710>:
      D.41664 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.41664, 296);
      D.41665 = cfg->num_bblocks;
      D.41719 = D.41665;
      D.41720 = D.41719 + 1;
      cfg->num_bblocks = D.41720;
      D.41721 = (int) D.41719;
      bblock->block_num = D.41721;
      bblock->cil_code = target;
      D.41669 = bblock->cil_code;
      if (D.41669 != 0B) goto <D.41722>; else goto <D.41723>;
      <D.41722>:
      D.41643 = cfg->cil_offset_to_bb;
      D.41669 = bblock->cil_code;
      D.41672 = (long int) D.41669;
      D.41645 = cfg->cil_start;
      D.41646 = (long int) D.41645;
      D.41673 = D.41672 - D.41646;
      D.41674 = (long unsigned int) D.41673;
      D.41675 = D.41674 * 8;
      D.41676 = D.41643 + D.41675;
      *D.41676 = bblock;
      <D.41723>:
      D.41677 = cfg->real_offset;
      bblock->real_offset = D.41677;
      <D.41708>:
      ip.341 = ip;
      ip.345 = ip.341 + 5;
      ip = ip.345;
      ip.341 = ip;
      if (ip.341 < end) goto <D.41724>; else goto <D.41725>;
      <D.41724>:
      D.41643 = cfg->cil_offset_to_bb;
      ip.341 = ip;
      ip.342 = (long int) ip.341;
      D.41645 = cfg->cil_start;
      D.41646 = (long int) D.41645;
      D.41680 = ip.342 - D.41646;
      D.41681 = (long unsigned int) D.41680;
      D.41682 = D.41681 * 8;
      D.41683 = D.41643 + D.41682;
      bblock = *D.41683;
      if (bblock == 0B) goto <D.41726>; else goto <D.41727>;
      <D.41726>:
      ip.341 = ip;
      if (ip.341 >= end) goto <D.41728>; else goto <D.41730>;
      <D.41730>:
      D.41656 = header->code;
      ip.341 = ip;
      if (D.41656 > ip.341) goto <D.41728>; else goto <D.41729>;
      <D.41728>:
      D.41622 = cfg->gsharedvt;
      if (D.41622 != 0) goto <D.41731>; else goto <D.41732>;
      <D.41731>:
      D.41625 = cfg->verbose_level;
      if (D.41625 > 2) goto <D.41733>; else goto <D.41734>;
      <D.41733>:
      printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
      <D.41734>:
      mono_cfg_set_exception (cfg, 11);
      goto exception_exit;
      <D.41732>:
      D.41735 = mini_get_debug_options ();
      D.41736 = D.41735->break_on_unverified;
      if (D.41736 != 0) goto <D.41737>; else goto unverified;
      <D.41737>:
      __asm__ __volatile__("int $03");
      <D.41729>:
      D.41664 = cfg->mempool;
      bblock = mono_mempool_alloc0 (D.41664, 296);
      D.41665 = cfg->num_bblocks;
      D.41738 = D.41665;
      D.41739 = D.41738 + 1;
      cfg->num_bblocks = D.41739;
      D.41740 = (int) D.41738;
      bblock->block_num = D.41740;
      ip.341 = ip;
      bblock->cil_code = ip.341;
      D.41669 = bblock->cil_code;
      if (D.41669 != 0B) goto <D.41741>; else goto <D.41742>;
      <D.41741>:
      D.41643 = cfg->cil_offset_to_bb;
      D.41669 = bblock->cil_code;
      D.41672 = (long int) D.41669;
      D.41645 = cfg->cil_start;
      D.41646 = (long int) D.41645;
      D.41673 = D.41672 - D.41646;
      D.41674 = (long unsigned int) D.41673;
      D.41675 = D.41674 * 8;
      D.41676 = D.41643 + D.41675;
      *D.41676 = bblock;
      <D.41742>:
      D.41677 = cfg->real_offset;
      bblock->real_offset = D.41677;
      <D.41727>:
      <D.41725>:
      goto <D.27285>;
      <D.27299>:
      {
        guint32 n;
        guint32 j;

        ip.341 = ip;
        n = MEM[(const guint32 *)ip.341 + 1B];
        ip.341 = ip;
        ip.345 = ip.341 + 5;
        ip = ip.345;
        D.41743 = n * 4;
        D.41744 = D.41743 + cli_addr;
        cli_addr = D.41744 + 5;
        D.41637 = (sizetype) cli_addr;
        target = start + D.41637;
        D.41643 = cfg->cil_offset_to_bb;
        target.348 = (long int) target;
        D.41645 = cfg->cil_start;
        D.41646 = (long int) D.41645;
        D.41647 = target.348 - D.41646;
        D.41648 = (long unsigned int) D.41647;
        D.41649 = D.41648 * 8;
        D.41650 = D.41643 + D.41649;
        bblock = *D.41650;
        if (bblock == 0B) goto <D.41745>; else goto <D.41746>;
        <D.41745>:
        if (target >= end) goto <D.41747>; else goto <D.41749>;
        <D.41749>:
        D.41656 = header->code;
        if (D.41656 > target) goto <D.41747>; else goto <D.41748>;
        <D.41747>:
        D.41622 = cfg->gsharedvt;
        if (D.41622 != 0) goto <D.41750>; else goto <D.41751>;
        <D.41750>:
        D.41625 = cfg->verbose_level;
        if (D.41625 > 2) goto <D.41752>; else goto <D.41753>;
        <D.41752>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41753>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41751>:
        D.41754 = mini_get_debug_options ();
        D.41755 = D.41754->break_on_unverified;
        if (D.41755 != 0) goto <D.41756>; else goto unverified;
        <D.41756>:
        __asm__ __volatile__("int $03");
        <D.41748>:
        D.41664 = cfg->mempool;
        bblock = mono_mempool_alloc0 (D.41664, 296);
        D.41665 = cfg->num_bblocks;
        D.41757 = D.41665;
        D.41758 = D.41757 + 1;
        cfg->num_bblocks = D.41758;
        D.41759 = (int) D.41757;
        bblock->block_num = D.41759;
        bblock->cil_code = target;
        D.41669 = bblock->cil_code;
        if (D.41669 != 0B) goto <D.41760>; else goto <D.41761>;
        <D.41760>:
        D.41643 = cfg->cil_offset_to_bb;
        D.41669 = bblock->cil_code;
        D.41672 = (long int) D.41669;
        D.41645 = cfg->cil_start;
        D.41646 = (long int) D.41645;
        D.41673 = D.41672 - D.41646;
        D.41674 = (long unsigned int) D.41673;
        D.41675 = D.41674 * 8;
        D.41676 = D.41643 + D.41675;
        *D.41676 = bblock;
        <D.41761>:
        D.41677 = cfg->real_offset;
        bblock->real_offset = D.41677;
        <D.41746>:
        j = 0;
        goto <D.27303>;
        <D.27302>:
        D.41637 = (sizetype) cli_addr;
        ip.341 = ip;
        D.41762 = MEM[(const guint32 *)ip.341];
        D.41763 = (int) D.41762;
        D.41764 = (sizetype) D.41763;
        D.41765 = D.41637 + D.41764;
        target = start + D.41765;
        D.41643 = cfg->cil_offset_to_bb;
        target.348 = (long int) target;
        D.41645 = cfg->cil_start;
        D.41646 = (long int) D.41645;
        D.41647 = target.348 - D.41646;
        D.41648 = (long unsigned int) D.41647;
        D.41649 = D.41648 * 8;
        D.41650 = D.41643 + D.41649;
        bblock = *D.41650;
        if (bblock == 0B) goto <D.41766>; else goto <D.41767>;
        <D.41766>:
        if (target >= end) goto <D.41768>; else goto <D.41770>;
        <D.41770>:
        D.41656 = header->code;
        if (D.41656 > target) goto <D.41768>; else goto <D.41769>;
        <D.41768>:
        D.41622 = cfg->gsharedvt;
        if (D.41622 != 0) goto <D.41771>; else goto <D.41772>;
        <D.41771>:
        D.41625 = cfg->verbose_level;
        if (D.41625 > 2) goto <D.41773>; else goto <D.41774>;
        <D.41773>:
        printf ("gsharedvt method failed to verify, falling back to instantiation.\n");
        <D.41774>:
        mono_cfg_set_exception (cfg, 11);
        goto exception_exit;
        <D.41772>:
        D.41775 = mini_get_debug_options ();
        D.41776 = D.41775->break_on_unverified;
        if (D.41776 != 0) goto <D.41777>; else goto unverified;
        <D.41777>:
        __asm__ __volatile__("int $03");
        <D.41769>:
        D.41664 = cfg->mempool;
        bblock = mono_mempool_alloc0 (D.41664, 296);
        D.41665 = cfg->num_bblocks;
        D.41778 = D.41665;
        D.41779 = D.41778 + 1;
        cfg->num_bblocks = D.41779;
        D.41780 = (int) D.41778;
        bblock->block_num = D.41780;
        bblock->cil_code = target;
        D.41669 = bblock->cil_code;
        if (D.41669 != 0B) goto <D.41781>; else goto <D.41782>;
        <D.41781>:
        D.41643 = cfg->cil_offset_to_bb;
        D.41669 = bblock->cil_code;
        D.41672 = (long int) D.41669;
        D.41645 = cfg->cil_start;
        D.41646 = (long int) D.41645;
        D.41673 = D.41672 - D.41646;
        D.41674 = (long unsigned int) D.41673;
        D.41675 = D.41674 * 8;
        D.41676 = D.41643 + D.41675;
        *D.41676 = bblock;
        <D.41782>:
        D.41677 = cfg->real_offset;
        bblock->real_offset = D.41677;
        <D.41767>:
        ip.341 = ip;
        ip.349 = ip.341 + 4;
        ip = ip.349;
        j = j + 1;
        <D.27303>:
        if (j < n) goto <D.27302>; else goto <D.27304>;
        <D.27304>:
        goto <D.27285>;
      }
      <D.27305>:
      <D.27306>:
      ip.341 = ip;
      ip.350 = ip.341 + 9;
      ip = ip.350;
      goto <D.27285>;
      <D.27307>:
      monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 6056);
      <D.27285>:
      if (i == 122) goto <D.41785>; else goto <D.41786>;
      <D.41785>:
      {
        unsigned char * bb_start;

        ip.341 = ip;
        bb_start = ip.341 + 18446744073709551615;
        bblock = 0B;
        goto <D.27310>;
        <D.27309>:
        D.41643 = cfg->cil_offset_to_bb;
        bb_start.351 = (long int) bb_start;
        start.343 = (long int) start;
        D.41788 = bb_start.351 - start.343;
        D.41789 = (long unsigned int) D.41788;
        D.41790 = D.41789 * 8;
        D.41791 = D.41643 + D.41790;
        bblock = *D.41791;
        bb_start = bb_start + 18446744073709551615;
        <D.27310>:
        D.41792 = bb_start >= start;
        D.41793 = bblock == 0B;
        D.41794 = D.41792 & D.41793;
        if (D.41794 != 0) goto <D.27309>; else goto <D.27311>;
        <D.27311>:
        if (bblock != 0B) goto <D.41795>; else goto <D.41796>;
        <D.41795>:
        bblock->out_of_line = 1;
        <D.41796>:
      }
      <D.41786>:
      <D.27313>:
      ip.341 = ip;
      if (ip.341 < end) goto <D.27312>; else goto <D.27314>;
      <D.27314>:
      D.41797 = 0;
      return D.41797;
      unverified:
      exception_exit:
      ip.341 = ip;
      *pos = ip.341;
      D.41797 = 1;
      return D.41797;
    }
  finally
    {
      ip = {CLOBBER};
    }
}


should_insert_brekpoint (struct MonoMethod * method)
{
  MonoBreakPolicy (*<T3500>) (struct MonoMethod *) break_policy_func.352;
  <unnamed type> D.41801;
  gboolean D.41802;

  break_policy_func.352 = break_policy_func;
  D.41801 = break_policy_func.352 (method);
  switch (D.41801) <default: <D.26571>, case 0: <D.26568>, case 1: <D.26569>, case 2: <D.26570>>
  <D.26568>:
  D.41802 = 1;
  return D.41802;
  <D.26569>:
  D.41802 = 0;
  return D.41802;
  <D.26570>:
  monoeg_g_log (0B, 16, "mdb no longer supported");
  D.41802 = 0;
  return D.41802;
  <D.26571>:
  monoeg_g_log (0B, 16, "Incorrect value returned from break policy callback");
  D.41802 = 0;
  return D.41802;
}


mini_get_signature (struct MonoMethod * method, guint32 token, struct MonoGenericContext * context)
{
  unsigned char D.41804;
  unsigned char D.41805;
  int D.41810;
  _Bool D.41811;
  long int D.41812;
  long int D.41813;
  struct MonoClass * D.41817;
  struct MonoImage * D.41818;
  struct MonoMethodSignature * D.41819;
  struct MonoMethodSignature * fsig;

  D.41804 = BIT_FIELD_REF <*method, 8, 256>;
  D.41805 = D.41804 & 124;
  if (D.41805 != 0) goto <D.41806>; else goto <D.41807>;
  <D.41806>:
  {
    struct MonoError error;

    try
      {
        fsig = mono_method_get_wrapper_data (method, token);
        if (context != 0B) goto <D.41808>; else goto <D.41809>;
        <D.41808>:
        fsig = mono_inflate_generic_signature (fsig, context, &error);
        D.41810 = mono_error_ok (&error);
        D.41811 = D.41810 == 0;
        D.41812 = (long int) D.41811;
        D.41813 = __builtin_expect (D.41812, 0);
        if (D.41813 != 0) goto <D.41814>; else goto <D.41815>;
        <D.41814>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6135, "mono_error_ok (&error)");
        <D.41815>:
        <D.41809>:
      }
    finally
      {
        error = {CLOBBER};
      }
  }
  goto <D.41816>;
  <D.41807>:
  D.41817 = method->klass;
  D.41818 = D.41817->image;
  fsig = mono_metadata_parse_signature (D.41818, token);
  <D.41816>:
  D.41819 = fsig;
  return D.41819;
}


mini_get_method_allow_open (struct MonoMethod * m, guint32 token, struct MonoClass * klass, struct MonoGenericContext * context)
{
  unsigned char D.41821;
  unsigned char D.41822;
  struct MonoClass * D.41828;
  struct MonoImage * D.41829;
  struct MonoMethod * D.41830;
  struct MonoMethod * method;

  D.41821 = BIT_FIELD_REF <*m, 8, 256>;
  D.41822 = D.41821 & 124;
  if (D.41822 != 0) goto <D.41823>; else goto <D.41824>;
  <D.41823>:
  method = mono_method_get_wrapper_data (m, token);
  if (context != 0B) goto <D.41825>; else goto <D.41826>;
  <D.41825>:
  method = mono_class_inflate_generic_method (method, context);
  <D.41826>:
  goto <D.41827>;
  <D.41824>:
  D.41828 = m->klass;
  D.41829 = D.41828->image;
  method = mono_get_method_full (D.41829, token, klass, context);
  <D.41827>:
  D.41830 = method;
  return D.41830;
}


mini_emit_inst_for_sharable_method (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * args)
{
  struct MonoClass * D.41832;
  struct MonoClass * D.41833;
  int D.26716;
  int iftmp.353;
  int D.26715;
  const char[12] * D.41839;
  unsigned char D.41840;
  int D.41841;
  unsigned char D.41842;
  int D.41843;
  _Bool D.41844;
  _Bool D.41845;
  _Bool D.41846;
  const unsigned char * D.41849;
  unsigned char D.41850;
  int D.41851;
  const unsigned char * D.41852;
  unsigned char D.41853;
  int D.41854;
  _Bool D.41855;
  _Bool D.41856;
  const unsigned char * D.41859;
  unsigned char D.41860;
  int D.41861;
  const unsigned char * D.41862;
  unsigned char D.41863;
  int D.41864;
  _Bool D.41865;
  _Bool D.41866;
  const unsigned char * D.41869;
  unsigned char D.41870;
  int D.41871;
  const unsigned char * D.41872;
  unsigned char D.41873;
  int D.41874;
  const char * D.41876;
  struct MonoInst * D.41879;
  int D.26725;
  int iftmp.354;
  int D.26724;
  const char[11] * D.41883;
  unsigned char D.41884;
  int D.41885;
  unsigned char D.41886;
  int D.41887;
  _Bool D.41888;
  _Bool D.41889;
  _Bool D.41890;
  const unsigned char * D.41893;
  unsigned char D.41894;
  int D.41895;
  const unsigned char * D.41896;
  unsigned char D.41897;
  int D.41898;
  _Bool D.41899;
  _Bool D.41900;
  const unsigned char * D.41903;
  unsigned char D.41904;
  int D.41905;
  const unsigned char * D.41906;
  unsigned char D.41907;
  int D.41908;
  _Bool D.41909;
  _Bool D.41910;
  const unsigned char * D.41913;
  unsigned char D.41914;
  int D.41915;
  const unsigned char * D.41916;
  unsigned char D.41917;
  int D.41918;

  D.41832 = cmethod->klass;
  D.41833 = mono_defaults.array_class;
  if (D.41832 == D.41833) goto <D.41834>; else goto <D.41835>;
  <D.41834>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.41839 = "UnsafeStore";
      D.41840 = MEM[(const unsigned char *)D.41839];
      D.41841 = (int) D.41840;
      D.41842 = *__s2;
      D.41843 = (int) D.41842;
      __result = D.41841 - D.41843;
      {
        D.41844 = __s2_len != 0;
        D.41845 = __result == 0;
        D.41846 = D.41844 & D.41845;
        if (D.41846 != 0) goto <D.41847>; else goto <D.41848>;
        <D.41847>:
        D.41849 = &MEM[(void *)"UnsafeStore" + 1B];
        D.41850 = *D.41849;
        D.41851 = (int) D.41850;
        D.41852 = __s2 + 1;
        D.41853 = *D.41852;
        D.41854 = (int) D.41853;
        __result = D.41851 - D.41854;
        D.41855 = __s2_len > 1;
        D.41845 = __result == 0;
        D.41856 = D.41855 & D.41845;
        if (D.41856 != 0) goto <D.41857>; else goto <D.41858>;
        <D.41857>:
        D.41859 = &MEM[(void *)"UnsafeStore" + 2B];
        D.41860 = *D.41859;
        D.41861 = (int) D.41860;
        D.41862 = __s2 + 2;
        D.41863 = *D.41862;
        D.41864 = (int) D.41863;
        __result = D.41861 - D.41864;
        D.41865 = __s2_len > 2;
        D.41845 = __result == 0;
        D.41866 = D.41865 & D.41845;
        if (D.41866 != 0) goto <D.41867>; else goto <D.41868>;
        <D.41867>:
        D.41869 = &MEM[(void *)"UnsafeStore" + 3B];
        D.41870 = *D.41869;
        D.41871 = (int) D.41870;
        D.41872 = __s2 + 3;
        D.41873 = *D.41872;
        D.41874 = (int) D.41873;
        __result = D.41871 - D.41874;
        <D.41868>:
        <D.41858>:
        <D.41848>:
      }
      D.26715 = __result;
    }
    iftmp.353 = -D.26715;
    goto <D.41875>;
    <D.41838>:
    D.41876 = cmethod->name;
    iftmp.353 = __builtin_strcmp (D.41876, "UnsafeStore");
    <D.41875>:
    D.26716 = iftmp.353;
  }
  if (D.26716 == 0) goto <D.41877>; else goto <D.41878>;
  <D.41877>:
  D.41879 = emit_array_unsafe_access (cfg, fsig, args, 1);
  return D.41879;
  <D.41878>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.41883 = "UnsafeLoad";
      D.41884 = MEM[(const unsigned char *)D.41883];
      D.41885 = (int) D.41884;
      D.41886 = *__s2;
      D.41887 = (int) D.41886;
      __result = D.41885 - D.41887;
      {
        D.41888 = __s2_len != 0;
        D.41889 = __result == 0;
        D.41890 = D.41888 & D.41889;
        if (D.41890 != 0) goto <D.41891>; else goto <D.41892>;
        <D.41891>:
        D.41893 = &MEM[(void *)"UnsafeLoad" + 1B];
        D.41894 = *D.41893;
        D.41895 = (int) D.41894;
        D.41896 = __s2 + 1;
        D.41897 = *D.41896;
        D.41898 = (int) D.41897;
        __result = D.41895 - D.41898;
        D.41899 = __s2_len > 1;
        D.41889 = __result == 0;
        D.41900 = D.41899 & D.41889;
        if (D.41900 != 0) goto <D.41901>; else goto <D.41902>;
        <D.41901>:
        D.41903 = &MEM[(void *)"UnsafeLoad" + 2B];
        D.41904 = *D.41903;
        D.41905 = (int) D.41904;
        D.41906 = __s2 + 2;
        D.41907 = *D.41906;
        D.41908 = (int) D.41907;
        __result = D.41905 - D.41908;
        D.41909 = __s2_len > 2;
        D.41889 = __result == 0;
        D.41910 = D.41909 & D.41889;
        if (D.41910 != 0) goto <D.41911>; else goto <D.41912>;
        <D.41911>:
        D.41913 = &MEM[(void *)"UnsafeLoad" + 3B];
        D.41914 = *D.41913;
        D.41915 = (int) D.41914;
        D.41916 = __s2 + 3;
        D.41917 = *D.41916;
        D.41918 = (int) D.41917;
        __result = D.41915 - D.41918;
        <D.41912>:
        <D.41902>:
        <D.41892>:
      }
      D.26724 = __result;
    }
    iftmp.354 = -D.26724;
    goto <D.41919>;
    <D.41882>:
    D.41876 = cmethod->name;
    iftmp.354 = __builtin_strcmp (D.41876, "UnsafeLoad");
    <D.41919>:
    D.26725 = iftmp.354;
  }
  if (D.26725 == 0) goto <D.41920>; else goto <D.41921>;
  <D.41920>:
  D.41879 = emit_array_unsafe_access (cfg, fsig, args, 0);
  return D.41879;
  <D.41921>:
  <D.41835>:
  D.41879 = 0B;
  return D.41879;
}


emit_array_unsafe_access (struct MonoCompile * cfg, struct MonoMethodSignature * fsig, struct MonoInst * * args, int is_set)
{
  struct MonoType * D.41925;
  struct MonoType * D.41927;
  struct MonoInst * D.41930;
  struct MonoInst * * D.41931;
  struct MonoInst * D.41932;
  struct MonoInst * D.41933;
  struct MonoMemPool * D.41934;
  long int D.41935;
  struct MonoInst * D.41936;
  struct MonoType * D.41937;
  unsigned int D.41938;
  short unsigned int D.41939;
  int D.41940;
  int D.41941;
  const unsigned char * D.41942;
  int D.41943;
  unsigned char D.41944;
  <unnamed type> D.41945;
  unsigned int D.41946;
  int D.41947;
  struct MonoBasicBlock * D.41948;
  struct MonoInst * D.41949;
  struct MonoClass * eklass;

  if (is_set != 0) goto <D.41923>; else goto <D.41924>;
  <D.41923>:
  D.41925 = fsig->params[2];
  eklass = mono_class_from_mono_type (D.41925);
  goto <D.41926>;
  <D.41924>:
  D.41927 = fsig->ret;
  eklass = mono_class_from_mono_type (D.41927);
  <D.41926>:
  if (is_set != 0) goto <D.41928>; else goto <D.41929>;
  <D.41928>:
  D.41930 = emit_array_store (cfg, eklass, args, 0);
  return D.41930;
  <D.41929>:
  {
    struct MonoInst * ins;
    struct MonoInst * addr;

    D.41931 = args + 8;
    D.41932 = *D.41931;
    D.41933 = *args;
    addr = mini_emit_ldelema_1_ins (cfg, eklass, D.41933, D.41932, 0);
    D.41934 = cfg->mempool;
    ins = mono_mempool_alloc (D.41934, 80);
    ins->data.op[1].const_val = 0;
    D.41935 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.41935;
    ins->prev = 0B;
    D.41936 = ins->prev;
    ins->next = D.41936;
    D.41937 = &eklass->byval_arg;
    D.41938 = mono_type_to_load_membase (cfg, D.41937);
    D.41939 = (short unsigned int) D.41938;
    ins->opcode = D.41939;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.41940 = ins->sreg3;
    ins->sreg2 = D.41940;
    D.41941 = ins->sreg2;
    ins->sreg1 = D.41941;
    D.41942 = cfg->ip;
    ins->cil_code = D.41942;
    ins->dreg = 0;
    D.41943 = addr->dreg;
    ins->sreg1 = D.41943;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.41937 = &eklass->byval_arg;
    type_to_eval_stack_type (cfg, D.41937, ins);
    D.41944 = ins->type;
    D.41945 = (<unnamed type>) D.41944;
    D.41946 = alloc_dreg (cfg, D.41945);
    D.41947 = (int) D.41946;
    ins->dreg = D.41947;
    D.41948 = cfg->cbb;
    D.41949 = D.41948->last_ins;
    if (D.41949 != 0B) goto <D.41950>; else goto <D.41951>;
    <D.41950>:
    D.41948 = cfg->cbb;
    D.41949 = D.41948->last_ins;
    D.41949->next = ins;
    D.41948 = cfg->cbb;
    D.41949 = D.41948->last_ins;
    ins->prev = D.41949;
    D.41948 = cfg->cbb;
    D.41948->last_ins = ins;
    goto <D.41952>;
    <D.41951>:
    D.41948 = cfg->cbb;
    D.41948 = cfg->cbb;
    D.41948->last_ins = ins;
    D.41949 = D.41948->last_ins;
    D.41948->code = D.41949;
    <D.41952>:
    D.41930 = ins;
    return D.41930;
  }
}


check_method_sharing (struct MonoCompile * cfg, struct MonoMethod * cmethod, gboolean * out_pass_vtable, gboolean * out_pass_mrgctx)
{
  short unsigned int D.41957;
  int D.41958;
  int D.41959;
  struct MonoClass * D.41961;
  unsigned char D.41962;
  unsigned char D.41963;
  struct MonoGenericClass * D.41964;
  struct MonoGenericContainer * D.41966;
  int D.41967;
  _Bool D.41971;
  _Bool D.41972;
  _Bool D.41973;
  struct MonoGenericContext * D.41978;
  struct MonoGenericContext * D.41980;
  struct MonoGenericInst * D.41981;
  struct MonoGenericContext * D.41982;
  struct MonoGenericContext * D.41985;
  struct MonoGenericInst * D.41986;
  _Bool D.41989;
  long int D.41990;
  long int D.41991;
  int D.41994;
  _Bool D.41998;
  _Bool D.41999;
  _Bool D.42000;
  int D.42003;
  struct MonoMethodSignature * D.42006;
  int D.42007;
  gboolean pass_vtable;
  gboolean pass_mrgctx;

  pass_vtable = 0;
  pass_mrgctx = 0;
  D.41957 = cmethod->flags;
  D.41958 = (int) D.41957;
  D.41959 = D.41958 & 16;
  if (D.41959 != 0) goto <D.41956>; else goto <D.41960>;
  <D.41960>:
  D.41961 = cmethod->klass;
  D.41962 = BIT_FIELD_REF <*D.41961, 8, 256>;
  D.41963 = D.41962 & 8;
  if (D.41963 != 0) goto <D.41956>; else goto <D.41955>;
  <D.41956>:
  D.41961 = cmethod->klass;
  D.41964 = D.41961->generic_class;
  if (D.41964 != 0B) goto <D.41954>; else goto <D.41965>;
  <D.41965>:
  D.41961 = cmethod->klass;
  D.41966 = D.41961->generic_container;
  if (D.41966 != 0B) goto <D.41954>; else goto <D.41955>;
  <D.41954>:
  {
    gboolean sharable;

    sharable = 0;
    D.41967 = mono_method_is_generic_sharable (cmethod, 1);
    if (D.41967 != 0) goto <D.41968>; else goto <D.41969>;
    <D.41968>:
    sharable = 1;
    goto <D.41970>;
    <D.41969>:
    {
      gboolean sharing_enabled;
      struct MonoGenericContext * context;
      gboolean context_sharable;

      D.41961 = cmethod->klass;
      sharing_enabled = mono_class_generic_sharing_enabled (D.41961);
      D.41961 = cmethod->klass;
      context = mini_class_get_context (D.41961);
      context_sharable = mono_generic_context_is_sharable (context, 1);
      D.41971 = sharing_enabled != 0;
      D.41972 = context_sharable != 0;
      D.41973 = D.41971 & D.41972;
      sharable = (gboolean) D.41973;
    }
    <D.41970>:
    if (sharable != 0) goto <D.41976>; else goto <D.41977>;
    <D.41976>:
    D.41978 = mini_method_get_context (cmethod);
    if (D.41978 == 0B) goto <D.41974>; else goto <D.41979>;
    <D.41979>:
    D.41980 = mini_method_get_context (cmethod);
    D.41981 = D.41980->method_inst;
    if (D.41981 == 0B) goto <D.41974>; else goto <D.41975>;
    <D.41974>:
    pass_vtable = 1;
    <D.41975>:
    <D.41977>:
  }
  <D.41955>:
  D.41982 = mini_method_get_context (cmethod);
  if (D.41982 != 0B) goto <D.41983>; else goto <D.41984>;
  <D.41983>:
  D.41985 = mini_method_get_context (cmethod);
  D.41986 = D.41985->method_inst;
  if (D.41986 != 0B) goto <D.41987>; else goto <D.41988>;
  <D.41987>:
  D.41989 = pass_vtable != 0;
  D.41990 = (long int) D.41989;
  D.41991 = __builtin_expect (D.41990, 0);
  if (D.41991 != 0) goto <D.41992>; else goto <D.41993>;
  <D.41992>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2418, "!pass_vtable");
  <D.41993>:
  D.41994 = mono_method_is_generic_sharable (cmethod, 1);
  if (D.41994 != 0) goto <D.41995>; else goto <D.41996>;
  <D.41995>:
  pass_mrgctx = 1;
  goto <D.41997>;
  <D.41996>:
  {
    gboolean sharing_enabled;
    struct MonoGenericContext * context;
    gboolean context_sharable;

    D.41961 = cmethod->klass;
    sharing_enabled = mono_class_generic_sharing_enabled (D.41961);
    context = mini_method_get_context (cmethod);
    context_sharable = mono_generic_context_is_sharable (context, 1);
    D.41998 = sharing_enabled != 0;
    D.41999 = context_sharable != 0;
    D.42000 = D.41998 & D.41999;
    if (D.42000 != 0) goto <D.42001>; else goto <D.42002>;
    <D.42001>:
    pass_mrgctx = 1;
    <D.42002>:
    D.42003 = cfg->gsharedvt;
    if (D.42003 != 0) goto <D.42004>; else goto <D.42005>;
    <D.42004>:
    D.42006 = mono_method_signature (cmethod);
    D.42007 = mini_is_gsharedvt_signature (cfg, D.42006);
    if (D.42007 != 0) goto <D.42008>; else goto <D.42009>;
    <D.42008>:
    pass_mrgctx = 1;
    <D.42009>:
    <D.42005>:
  }
  <D.41997>:
  <D.41988>:
  <D.41984>:
  if (out_pass_vtable != 0B) goto <D.42010>; else goto <D.42011>;
  <D.42010>:
  *out_pass_vtable = pass_vtable;
  <D.42011>:
  if (out_pass_mrgctx != 0B) goto <D.42012>; else goto <D.42013>;
  <D.42012>:
  *out_pass_mrgctx = pass_mrgctx;
  <D.42013>:
}


type_from_stack_type (struct MonoInst * ins)
{
  unsigned char D.42014;
  int D.42015;
  struct MonoType * D.42016;
  struct MonoClass * D.42017;
  struct MonoClass * D.42018;
  struct MonoClass * D.42019;
  struct MonoClass * D.42020;
  struct MonoClass * D.42021;
  struct MonoClass * D.42022;

  D.42014 = ins->type;
  D.42015 = (int) D.42014;
  switch (D.42015) <default: <D.25108>, case 1: <D.25101>, case 2: <D.25102>, case 3: <D.25103>, case 4: <D.25104>, case 5: <D.25105>, case 6: <D.25106>, case 7: <D.25107>>
  <D.25101>:
  D.42017 = mono_defaults.int32_class;
  D.42016 = &D.42017->byval_arg;
  return D.42016;
  <D.25102>:
  D.42018 = mono_defaults.int64_class;
  D.42016 = &D.42018->byval_arg;
  return D.42016;
  <D.25103>:
  D.42019 = mono_defaults.int_class;
  D.42016 = &D.42019->byval_arg;
  return D.42016;
  <D.25104>:
  D.42020 = mono_defaults.double_class;
  D.42016 = &D.42020->byval_arg;
  return D.42016;
  <D.25105>:
  D.42021 = ins->klass;
  D.42016 = &D.42021->this_arg;
  return D.42016;
  <D.25106>:
  D.42022 = mono_defaults.object_class;
  D.42016 = &D.42022->byval_arg;
  return D.42016;
  <D.25107>:
  D.42021 = ins->klass;
  D.42016 = &D.42021->byval_arg;
  return D.42016;
  <D.25108>:
  D.42014 = ins->type;
  D.42015 = (int) D.42014;
  monoeg_g_log (0B, 4, "stack type %d to monotype not handled\n", D.42015);
  <D.25109>:
  goto <D.25109>;
  D.42016 = 0B;
  return D.42016;
}


mini_emit_inst_for_method (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * args)
{
  struct MonoClass * runtime_helpers_class.355;
  struct MonoImage * D.42027;
  struct MonoClass * runtime_helpers_class.356;
  struct MonoClass * D.42029;
  struct MonoClass * D.42030;
  int D.26742;
  int iftmp.357;
  int D.26741;
  const char[10] * D.42036;
  unsigned char D.42037;
  int D.42038;
  unsigned char D.42039;
  int D.42040;
  _Bool D.42041;
  _Bool D.42042;
  _Bool D.42043;
  const unsigned char * D.42046;
  unsigned char D.42047;
  int D.42048;
  const unsigned char * D.42049;
  unsigned char D.42050;
  int D.42051;
  _Bool D.42052;
  _Bool D.42053;
  const unsigned char * D.42056;
  unsigned char D.42057;
  int D.42058;
  const unsigned char * D.42059;
  unsigned char D.42060;
  int D.42061;
  _Bool D.42062;
  _Bool D.42063;
  const unsigned char * D.42066;
  unsigned char D.42067;
  int D.42068;
  const unsigned char * D.42069;
  unsigned char D.42070;
  int D.42071;
  const char * D.42073;
  unsigned int D.42076;
  unsigned int D.42077;
  unsigned int D.42078;
  unsigned int D.42079;
  struct MonoMemPool * D.42080;
  long int D.42081;
  struct MonoInst * D.42082;
  int D.42083;
  int D.42084;
  const unsigned char * D.42085;
  struct MonoInst * * D.42086;
  struct MonoInst * D.42087;
  int D.42088;
  struct MonoBasicBlock * D.42089;
  struct MonoInst * D.42090;
  unsigned int D.42094;
  unsigned int D.42095;
  unsigned int D.42098;
  unsigned char D.42101;
  unsigned char D.42102;
  long int D.42105;
  struct MonoInst * D.42106;
  int D.42107;
  int D.42108;
  struct MonoInst * D.42109;
  int D.42110;
  long int D.42114;
  struct MonoInst * D.42115;
  int D.42116;
  int D.42117;
  unsigned int D.42124;
  int D.42127;
  long int D.42132;
  struct MonoInst * D.42133;
  int D.42134;
  int D.42135;
  long int D.42139;
  struct MonoInst * D.42140;
  int D.42141;
  int D.42142;
  long int D.42147;
  struct MonoInst * D.42148;
  int D.42149;
  int D.42150;
  unsigned char D.42151;
  int D.42156;
  long int D.42161;
  struct MonoInst * D.42162;
  int D.42163;
  int D.42164;
  long int D.42168;
  struct MonoInst * D.42169;
  int D.42170;
  int D.42171;
  long int D.42176;
  struct MonoInst * D.42177;
  int D.42178;
  int D.42179;
  unsigned char D.42180;
  long int D.42184;
  struct MonoInst * D.42185;
  int D.42186;
  int D.42187;
  long int D.42191;
  struct MonoInst * D.42192;
  int D.42193;
  int D.42194;
  long int D.42199;
  struct MonoInst * D.42200;
  int D.42201;
  int D.42202;
  long int D.42206;
  struct MonoInst * D.42207;
  int D.42208;
  int D.42209;
  long int D.42214;
  struct MonoInst * D.42215;
  int D.42216;
  int D.42217;
  unsigned char D.42218;
  unsigned char D.42219;
  unsigned int D.42223;
  unsigned int D.42224;
  long int D.42225;
  struct MonoInst * D.42226;
  int D.42227;
  int D.42228;
  unsigned int D.42229;
  int D.42230;
  struct MonoInst * D.42237;
  int D.26772;
  int iftmp.358;
  int D.26771;
  const char[11] * D.42241;
  unsigned char D.42242;
  int D.42243;
  unsigned char D.42244;
  int D.42245;
  _Bool D.42246;
  _Bool D.42247;
  _Bool D.42248;
  const unsigned char * D.42251;
  unsigned char D.42252;
  int D.42253;
  const unsigned char * D.42254;
  unsigned char D.42255;
  int D.42256;
  _Bool D.42257;
  _Bool D.42258;
  const unsigned char * D.42261;
  unsigned char D.42262;
  int D.42263;
  const unsigned char * D.42264;
  unsigned char D.42265;
  int D.42266;
  _Bool D.42267;
  _Bool D.42268;
  const unsigned char * D.42271;
  unsigned char D.42272;
  int D.42273;
  const unsigned char * D.42274;
  unsigned char D.42275;
  int D.42276;
  unsigned int D.42280;
  unsigned char D.42284;
  unsigned char D.42285;
  int D.26782;
  int iftmp.359;
  int D.26781;
  const char[16] * D.42289;
  unsigned char D.42290;
  int D.42291;
  unsigned char D.42292;
  int D.42293;
  _Bool D.42294;
  _Bool D.42295;
  _Bool D.42296;
  const unsigned char * D.42299;
  unsigned char D.42300;
  int D.42301;
  const unsigned char * D.42302;
  unsigned char D.42303;
  int D.42304;
  _Bool D.42305;
  _Bool D.42306;
  const unsigned char * D.42309;
  unsigned char D.42310;
  int D.42311;
  const unsigned char * D.42312;
  unsigned char D.42313;
  int D.42314;
  _Bool D.42315;
  _Bool D.42316;
  const unsigned char * D.42319;
  unsigned char D.42320;
  int D.42321;
  const unsigned char * D.42322;
  unsigned char D.42323;
  int D.42324;
  unsigned int D.42328;
  unsigned int D.42329;
  long int D.42330;
  struct MonoInst * D.42331;
  int D.42332;
  int D.42333;
  long int D.42337;
  struct MonoInst * D.42338;
  int D.42339;
  int D.42340;
  long int D.42344;
  struct MonoInst * D.42345;
  int D.42346;
  int D.42347;
  struct MonoInst * * D.42348;
  struct MonoInst * D.42349;
  int D.42350;
  struct MonoClass * D.42354;
  int D.26796;
  int iftmp.360;
  int D.26795;
  const char[8] * D.42360;
  unsigned char D.42361;
  int D.42362;
  unsigned char D.42363;
  int D.42364;
  _Bool D.42365;
  _Bool D.42366;
  _Bool D.42367;
  const unsigned char * D.42370;
  unsigned char D.42371;
  int D.42372;
  const unsigned char * D.42373;
  unsigned char D.42374;
  int D.42375;
  _Bool D.42376;
  _Bool D.42377;
  const unsigned char * D.42380;
  unsigned char D.42381;
  int D.42382;
  const unsigned char * D.42383;
  unsigned char D.42384;
  int D.42385;
  _Bool D.42386;
  _Bool D.42387;
  const unsigned char * D.42390;
  unsigned char D.42391;
  int D.42392;
  const unsigned char * D.42393;
  unsigned char D.42394;
  int D.42395;
  unsigned int D.42399;
  unsigned int D.42400;
  int D.42401;
  long int D.42406;
  struct MonoInst * D.42407;
  int D.42408;
  int D.42409;
  long int D.42413;
  struct MonoInst * D.42414;
  int D.42415;
  int D.42416;
  long int D.42421;
  struct MonoInst * D.42422;
  int D.42423;
  int D.42424;
  unsigned char D.42425;
  int D.26811;
  int iftmp.361;
  int D.26810;
  const char[20] * D.42436;
  unsigned char D.42437;
  int D.42438;
  unsigned char D.42439;
  int D.42440;
  _Bool D.42441;
  _Bool D.42442;
  _Bool D.42443;
  const unsigned char * D.42446;
  unsigned char D.42447;
  int D.42448;
  const unsigned char * D.42449;
  unsigned char D.42450;
  int D.42451;
  _Bool D.42452;
  _Bool D.42453;
  const unsigned char * D.42456;
  unsigned char D.42457;
  int D.42458;
  const unsigned char * D.42459;
  unsigned char D.42460;
  int D.42461;
  _Bool D.42462;
  _Bool D.42463;
  const unsigned char * D.42466;
  unsigned char D.42467;
  int D.42468;
  const unsigned char * D.42469;
  unsigned char D.42470;
  int D.42471;
  int D.42474;
  unsigned int D.42476;
  unsigned int D.42477;
  long int D.42478;
  struct MonoInst * D.42479;
  int D.42480;
  int D.42481;
  int D.26823;
  int iftmp.362;
  int D.26822;
  const char[6] * D.42491;
  unsigned char D.42492;
  int D.42493;
  unsigned char D.42494;
  int D.42495;
  _Bool D.42496;
  _Bool D.42497;
  _Bool D.42498;
  const unsigned char * D.42501;
  unsigned char D.42502;
  int D.42503;
  const unsigned char * D.42504;
  unsigned char D.42505;
  int D.42506;
  _Bool D.42507;
  _Bool D.42508;
  const unsigned char * D.42511;
  unsigned char D.42512;
  int D.42513;
  const unsigned char * D.42514;
  unsigned char D.42515;
  int D.42516;
  _Bool D.42517;
  _Bool D.42518;
  const unsigned char * D.42521;
  unsigned char D.42522;
  int D.42523;
  const unsigned char * D.42524;
  unsigned char D.42525;
  int D.42526;
  struct MonoClass * D.42533;
  int D.42536;
  int D.26832;
  int iftmp.363;
  int D.26831;
  const char[19] * D.42542;
  unsigned char D.42543;
  int D.42544;
  unsigned char D.42545;
  int D.42546;
  _Bool D.42547;
  _Bool D.42548;
  _Bool D.42549;
  const unsigned char * D.42552;
  unsigned char D.42553;
  int D.42554;
  const unsigned char * D.42555;
  unsigned char D.42556;
  int D.42557;
  _Bool D.42558;
  _Bool D.42559;
  const unsigned char * D.42562;
  unsigned char D.42563;
  int D.42564;
  const unsigned char * D.42565;
  unsigned char D.42566;
  int D.42567;
  _Bool D.42568;
  _Bool D.42569;
  const unsigned char * D.42572;
  unsigned char D.42573;
  int D.42574;
  const unsigned char * D.42575;
  unsigned char D.42576;
  int D.42577;
  const char * D.42579;
  char D.42582;
  _Bool D.42583;
  int D.42584;
  int D.26841;
  int iftmp.364;
  int D.26840;
  const char[10] * D.42590;
  unsigned char D.42591;
  int D.42592;
  unsigned char D.42593;
  int D.42594;
  _Bool D.42595;
  _Bool D.42596;
  _Bool D.42597;
  const unsigned char * D.42600;
  unsigned char D.42601;
  int D.42602;
  const unsigned char * D.42603;
  unsigned char D.42604;
  int D.42605;
  _Bool D.42606;
  _Bool D.42607;
  const unsigned char * D.42610;
  unsigned char D.42611;
  int D.42612;
  const unsigned char * D.42613;
  unsigned char D.42614;
  int D.42615;
  _Bool D.42616;
  _Bool D.42617;
  const unsigned char * D.42620;
  unsigned char D.42621;
  int D.42622;
  const unsigned char * D.42623;
  unsigned char D.42624;
  int D.42625;
  int D.26850;
  int iftmp.365;
  int D.26849;
  const char[14] * D.42631;
  unsigned char D.42632;
  int D.42633;
  unsigned char D.42634;
  int D.42635;
  _Bool D.42636;
  _Bool D.42637;
  _Bool D.42638;
  const unsigned char * D.42641;
  unsigned char D.42642;
  int D.42643;
  const unsigned char * D.42644;
  unsigned char D.42645;
  int D.42646;
  _Bool D.42647;
  _Bool D.42648;
  const unsigned char * D.42651;
  unsigned char D.42652;
  int D.42653;
  const unsigned char * D.42654;
  unsigned char D.42655;
  int D.42656;
  _Bool D.42657;
  _Bool D.42658;
  const unsigned char * D.42661;
  unsigned char D.42662;
  int D.42663;
  const unsigned char * D.42664;
  unsigned char D.42665;
  int D.42666;
  short unsigned int D.42668;
  long int D.42671;
  unsigned int D.42674;
  unsigned int D.42675;
  int D.26864;
  int iftmp.366;
  int D.26863;
  unsigned char D.42679;
  int D.42680;
  _Bool D.42681;
  _Bool D.42682;
  _Bool D.42683;
  const unsigned char * D.42686;
  unsigned char D.42687;
  int D.42688;
  _Bool D.42689;
  _Bool D.42690;
  const unsigned char * D.42693;
  unsigned char D.42694;
  int D.42695;
  _Bool D.42696;
  _Bool D.42697;
  const unsigned char * D.42700;
  unsigned char D.42701;
  int D.42702;
  _Bool D.42704;
  unsigned int D.42705;
  unsigned int D.42706;
  unsigned int D.42707;
  int D.42708;
  unsigned int D.42709;
  unsigned int D.42710;
  int D.42711;
  int D.42712;
  long int D.42717;
  struct MonoInst * D.42718;
  int D.42719;
  int D.42720;
  long int D.42724;
  struct MonoInst * D.42725;
  int D.42726;
  int D.42727;
  unsigned char D.42732;
  long int D.42736;
  struct MonoInst * D.42737;
  int D.42738;
  int D.42739;
  long int D.42743;
  struct MonoInst * D.42744;
  int D.42745;
  int D.42746;
  unsigned int D.42749;
  unsigned int D.42750;
  int D.42751;
  unsigned char * D.42755;
  struct MonoBasicBlock * * D.42758;
  long int D.42759;
  unsigned char * D.42760;
  long int D.42761;
  long int D.42762;
  long unsigned int D.42763;
  long unsigned int D.42764;
  struct MonoBasicBlock * * D.42765;
  unsigned int D.42766;
  short unsigned int D.42771;
  short unsigned int D.42772;
  _Bool D.42773;
  short unsigned int D.42774;
  _Bool D.42775;
  _Bool D.42776;
  short unsigned int D.42778;
  short unsigned int D.42779;
  struct MonoBasicBlock * * D.42780;
  struct MonoBasicBlock * * D.42781;
  struct MonoBasicBlock * D.42782;
  short unsigned int D.42787;
  _Bool D.42788;
  _Bool D.42789;
  _Bool D.42790;
  short unsigned int D.42792;
  short unsigned int D.42793;
  _Bool D.42794;
  short unsigned int D.42795;
  _Bool D.42796;
  _Bool D.42797;
  void * D.42800;
  struct MonoBasicBlock * * D.42801;
  struct MonoBasicBlock * * D.42802;
  unsigned char D.42806;
  unsigned char D.42807;
  unsigned int D.42810;
  unsigned int D.42811;
  int D.42812;
  short unsigned int D.42819;
  short unsigned int D.42820;
  _Bool D.42821;
  short unsigned int D.42822;
  _Bool D.42823;
  _Bool D.42824;
  short unsigned int D.42830;
  _Bool D.42831;
  _Bool D.42832;
  _Bool D.42833;
  short unsigned int D.42835;
  short unsigned int D.42836;
  _Bool D.42837;
  short unsigned int D.42838;
  _Bool D.42839;
  _Bool D.42840;
  long int D.42852;
  struct MonoInst * D.42853;
  int D.42854;
  int D.42855;
  unsigned int D.42858;
  unsigned int D.42859;
  int D.42860;
  unsigned char * D.42864;
  long int D.42867;
  long int D.42868;
  long unsigned int D.42869;
  long unsigned int D.42870;
  struct MonoBasicBlock * * D.42871;
  short unsigned int D.42876;
  short unsigned int D.42877;
  _Bool D.42878;
  short unsigned int D.42879;
  _Bool D.42880;
  _Bool D.42881;
  short unsigned int D.42887;
  _Bool D.42888;
  _Bool D.42889;
  _Bool D.42890;
  short unsigned int D.42892;
  short unsigned int D.42893;
  _Bool D.42894;
  short unsigned int D.42895;
  _Bool D.42896;
  _Bool D.42897;
  void * D.42900;
  struct MonoBasicBlock * * D.42901;
  struct MonoBasicBlock * * D.42902;
  unsigned int D.42908;
  unsigned int D.42909;
  int D.42910;
  short unsigned int D.42917;
  short unsigned int D.42918;
  _Bool D.42919;
  short unsigned int D.42920;
  _Bool D.42921;
  _Bool D.42922;
  short unsigned int D.42928;
  _Bool D.42929;
  _Bool D.42930;
  _Bool D.42931;
  short unsigned int D.42933;
  short unsigned int D.42934;
  _Bool D.42935;
  short unsigned int D.42936;
  _Bool D.42937;
  _Bool D.42938;
  unsigned char * D.42941;
  long int D.42944;
  long int D.42945;
  long unsigned int D.42946;
  long unsigned int D.42947;
  struct MonoBasicBlock * * D.42948;
  short unsigned int D.42953;
  short unsigned int D.42954;
  _Bool D.42955;
  short unsigned int D.42956;
  _Bool D.42957;
  _Bool D.42958;
  short unsigned int D.42964;
  _Bool D.42965;
  _Bool D.42966;
  _Bool D.42967;
  short unsigned int D.42969;
  short unsigned int D.42970;
  _Bool D.42971;
  short unsigned int D.42972;
  _Bool D.42973;
  _Bool D.42974;
  long int D.42982;
  struct MonoInst * D.42983;
  int D.42984;
  int D.42985;
  unsigned char * D.42989;
  long int D.42992;
  long int D.42993;
  long unsigned int D.42994;
  long unsigned int D.42995;
  struct MonoBasicBlock * * D.42996;
  short unsigned int D.43001;
  short unsigned int D.43002;
  _Bool D.43003;
  short unsigned int D.43004;
  _Bool D.43005;
  _Bool D.43006;
  short unsigned int D.43012;
  _Bool D.43013;
  _Bool D.43014;
  _Bool D.43015;
  short unsigned int D.43017;
  short unsigned int D.43018;
  _Bool D.43019;
  short unsigned int D.43020;
  _Bool D.43021;
  _Bool D.43022;
  int D.26882;
  int iftmp.367;
  int D.26881;
  const char[9] * D.43032;
  unsigned char D.43033;
  int D.43034;
  unsigned char D.43035;
  int D.43036;
  _Bool D.43037;
  _Bool D.43038;
  _Bool D.43039;
  const unsigned char * D.43042;
  unsigned char D.43043;
  int D.43044;
  const unsigned char * D.43045;
  unsigned char D.43046;
  int D.43047;
  _Bool D.43048;
  _Bool D.43049;
  const unsigned char * D.43052;
  unsigned char D.43053;
  int D.43054;
  const unsigned char * D.43055;
  unsigned char D.43056;
  int D.43057;
  _Bool D.43058;
  _Bool D.43059;
  const unsigned char * D.43062;
  unsigned char D.43063;
  int D.43064;
  const unsigned char * D.43065;
  unsigned char D.43066;
  int D.43067;
  unsigned int D.43071;
  unsigned int D.43072;
  int D.43073;
  long int D.43078;
  struct MonoInst * D.43079;
  int D.43080;
  int D.43081;
  long int D.43085;
  struct MonoInst * D.43086;
  int D.43087;
  int D.43088;
  long int D.43093;
  struct MonoInst * D.43094;
  int D.43095;
  int D.43096;
  unsigned char D.43097;
  int D.26897;
  int iftmp.368;
  int D.26896;
  unsigned char D.43107;
  int D.43108;
  _Bool D.43109;
  _Bool D.43110;
  _Bool D.43111;
  const unsigned char * D.43114;
  unsigned char D.43115;
  int D.43116;
  _Bool D.43117;
  _Bool D.43118;
  const unsigned char * D.43121;
  unsigned char D.43122;
  int D.43123;
  _Bool D.43124;
  _Bool D.43125;
  const unsigned char * D.43128;
  unsigned char D.43129;
  int D.43130;
  unsigned int D.43134;
  int D.43135;
  long int D.43140;
  struct MonoInst * D.43141;
  int D.43142;
  int D.43143;
  long int D.43147;
  struct MonoInst * D.43148;
  int D.43149;
  int D.43150;
  unsigned char D.43155;
  int D.26910;
  int iftmp.369;
  int D.26909;
  const char[23] * D.43164;
  unsigned char D.43165;
  int D.43166;
  unsigned char D.43167;
  int D.43168;
  _Bool D.43169;
  _Bool D.43170;
  _Bool D.43171;
  const unsigned char * D.43174;
  unsigned char D.43175;
  int D.43176;
  const unsigned char * D.43177;
  unsigned char D.43178;
  int D.43179;
  _Bool D.43180;
  _Bool D.43181;
  const unsigned char * D.43184;
  unsigned char D.43185;
  int D.43186;
  const unsigned char * D.43187;
  unsigned char D.43188;
  int D.43189;
  _Bool D.43190;
  _Bool D.43191;
  const unsigned char * D.43194;
  unsigned char D.43195;
  int D.43196;
  const unsigned char * D.43197;
  unsigned char D.43198;
  int D.43199;
  unsigned int D.43203;
  int D.43204;
  struct MonoClass * D.43208;
  int D.26919;
  int iftmp.370;
  int D.26918;
  const char[13] * D.43214;
  unsigned char D.43215;
  int D.43216;
  unsigned char D.43217;
  int D.43218;
  _Bool D.43219;
  _Bool D.43220;
  _Bool D.43221;
  const unsigned char * D.43224;
  unsigned char D.43225;
  int D.43226;
  const unsigned char * D.43227;
  unsigned char D.43228;
  int D.43229;
  _Bool D.43230;
  _Bool D.43231;
  const unsigned char * D.43234;
  unsigned char D.43235;
  int D.43236;
  const unsigned char * D.43237;
  unsigned char D.43238;
  int D.43239;
  _Bool D.43240;
  _Bool D.43241;
  const unsigned char * D.43244;
  unsigned char D.43245;
  int D.43246;
  const unsigned char * D.43247;
  unsigned char D.43248;
  int D.43249;
  int D.26928;
  int iftmp.371;
  int D.26927;
  const char[14] * D.43259;
  unsigned char D.43260;
  int D.43261;
  unsigned char D.43262;
  int D.43263;
  _Bool D.43264;
  _Bool D.43265;
  _Bool D.43266;
  const unsigned char * D.43269;
  unsigned char D.43270;
  int D.43271;
  const unsigned char * D.43272;
  unsigned char D.43273;
  int D.43274;
  _Bool D.43275;
  _Bool D.43276;
  const unsigned char * D.43279;
  unsigned char D.43280;
  int D.43281;
  const unsigned char * D.43282;
  unsigned char D.43283;
  int D.43284;
  _Bool D.43285;
  _Bool D.43286;
  const unsigned char * D.43289;
  unsigned char D.43290;
  int D.43291;
  const unsigned char * D.43292;
  unsigned char D.43293;
  int D.43294;
  struct MonoClass * D.43299;
  int D.26937;
  int iftmp.372;
  int D.26936;
  const char[6] * D.43305;
  unsigned char D.43306;
  int D.43307;
  unsigned char D.43308;
  int D.43309;
  _Bool D.43310;
  _Bool D.43311;
  _Bool D.43312;
  const unsigned char * D.43315;
  unsigned char D.43316;
  int D.43317;
  const unsigned char * D.43318;
  unsigned char D.43319;
  int D.43320;
  _Bool D.43321;
  _Bool D.43322;
  const unsigned char * D.43325;
  unsigned char D.43326;
  int D.43327;
  const unsigned char * D.43328;
  unsigned char D.43329;
  int D.43330;
  _Bool D.43331;
  _Bool D.43332;
  const unsigned char * D.43335;
  unsigned char D.43336;
  int D.43337;
  const unsigned char * D.43338;
  unsigned char D.43339;
  int D.43340;
  short unsigned int D.43344;
  struct MonoMethod * D.43347;
  unsigned char D.43348;
  unsigned char D.43349;
  int D.26947;
  int iftmp.373;
  int D.26946;
  const char[19] * D.43355;
  unsigned char D.43356;
  int D.43357;
  unsigned char D.43358;
  int D.43359;
  _Bool D.43360;
  _Bool D.43361;
  _Bool D.43362;
  const unsigned char * D.43365;
  unsigned char D.43366;
  int D.43367;
  const unsigned char * D.43368;
  unsigned char D.43369;
  int D.43370;
  _Bool D.43371;
  _Bool D.43372;
  const unsigned char * D.43375;
  unsigned char D.43376;
  int D.43377;
  const unsigned char * D.43378;
  unsigned char D.43379;
  int D.43380;
  _Bool D.43381;
  _Bool D.43382;
  const unsigned char * D.43385;
  unsigned char D.43386;
  int D.43387;
  const unsigned char * D.43388;
  unsigned char D.43389;
  int D.43390;
  const char * D.43392;
  int D.26956;
  int iftmp.374;
  int D.26955;
  unsigned char D.43401;
  int D.43402;
  _Bool D.43403;
  _Bool D.43404;
  _Bool D.43405;
  const unsigned char * D.43408;
  unsigned char D.43409;
  int D.43410;
  _Bool D.43411;
  _Bool D.43412;
  const unsigned char * D.43415;
  unsigned char D.43416;
  int D.43417;
  _Bool D.43418;
  _Bool D.43419;
  const unsigned char * D.43422;
  unsigned char D.43423;
  int D.43424;
  struct MonoMethodSignature * helper_sig_monitor_enter_exit_trampoline_llvm.375;
  struct MonoMethodSignature * helper_sig_monitor_enter_exit_trampoline.376;
  int D.26966;
  int iftmp.377;
  int D.26965;
  const char[5] * D.43436;
  unsigned char D.43437;
  int D.43438;
  unsigned char D.43439;
  int D.43440;
  _Bool D.43441;
  _Bool D.43442;
  _Bool D.43443;
  const unsigned char * D.43446;
  unsigned char D.43447;
  int D.43448;
  const unsigned char * D.43449;
  unsigned char D.43450;
  int D.43451;
  _Bool D.43452;
  _Bool D.43453;
  const unsigned char * D.43456;
  unsigned char D.43457;
  int D.43458;
  const unsigned char * D.43459;
  unsigned char D.43460;
  int D.43461;
  _Bool D.43462;
  _Bool D.43463;
  const unsigned char * D.43466;
  unsigned char D.43467;
  int D.43468;
  const unsigned char * D.43469;
  unsigned char D.43470;
  int D.43471;
  struct MonoImage * D.43481;
  int D.26976;
  int iftmp.378;
  int D.26975;
  const char[17] * D.43486;
  unsigned char D.43487;
  int D.43488;
  unsigned char D.43489;
  int D.43490;
  _Bool D.43491;
  _Bool D.43492;
  _Bool D.43493;
  const unsigned char * D.43496;
  unsigned char D.43497;
  int D.43498;
  const unsigned char * D.43499;
  unsigned char D.43500;
  int D.43501;
  _Bool D.43502;
  _Bool D.43503;
  const unsigned char * D.43506;
  unsigned char D.43507;
  int D.43508;
  const unsigned char * D.43509;
  unsigned char D.43510;
  int D.43511;
  _Bool D.43512;
  _Bool D.43513;
  const unsigned char * D.43516;
  unsigned char D.43517;
  int D.43518;
  const unsigned char * D.43519;
  unsigned char D.43520;
  int D.43521;
  const char * D.43523;
  int D.26985;
  int iftmp.379;
  int D.26984;
  const char[12] * D.43528;
  unsigned char D.43529;
  int D.43530;
  unsigned char D.43531;
  int D.43532;
  _Bool D.43533;
  _Bool D.43534;
  _Bool D.43535;
  const unsigned char * D.43538;
  unsigned char D.43539;
  int D.43540;
  const unsigned char * D.43541;
  unsigned char D.43542;
  int D.43543;
  _Bool D.43544;
  _Bool D.43545;
  const unsigned char * D.43548;
  unsigned char D.43549;
  int D.43550;
  const unsigned char * D.43551;
  unsigned char D.43552;
  int D.43553;
  _Bool D.43554;
  _Bool D.43555;
  const unsigned char * D.43558;
  unsigned char D.43559;
  int D.43560;
  const unsigned char * D.43561;
  unsigned char D.43562;
  int D.43563;
  const char * D.43565;
  int D.26994;
  int iftmp.380;
  int D.26993;
  const char[5] * D.43570;
  unsigned char D.43571;
  int D.43572;
  unsigned char D.43573;
  int D.43574;
  _Bool D.43575;
  _Bool D.43576;
  _Bool D.43577;
  const unsigned char * D.43580;
  unsigned char D.43581;
  int D.43582;
  const unsigned char * D.43583;
  unsigned char D.43584;
  int D.43585;
  _Bool D.43586;
  _Bool D.43587;
  const unsigned char * D.43590;
  unsigned char D.43591;
  int D.43592;
  const unsigned char * D.43593;
  unsigned char D.43594;
  int D.43595;
  _Bool D.43596;
  _Bool D.43597;
  const unsigned char * D.43600;
  unsigned char D.43601;
  int D.43602;
  const unsigned char * D.43603;
  unsigned char D.43604;
  int D.43605;
  struct MonoType * D.43609;
  unsigned char D.43610;
  unsigned int D.43613;
  int D.43614;
  int D.27003;
  int iftmp.381;
  int D.27002;
  const char[10] * D.43621;
  unsigned char D.43622;
  int D.43623;
  unsigned char D.43624;
  int D.43625;
  _Bool D.43626;
  _Bool D.43627;
  _Bool D.43628;
  const unsigned char * D.43631;
  unsigned char D.43632;
  int D.43633;
  const unsigned char * D.43634;
  unsigned char D.43635;
  int D.43636;
  _Bool D.43637;
  _Bool D.43638;
  const unsigned char * D.43641;
  unsigned char D.43642;
  int D.43643;
  const unsigned char * D.43644;
  unsigned char D.43645;
  int D.43646;
  _Bool D.43647;
  _Bool D.43648;
  const unsigned char * D.43651;
  unsigned char D.43652;
  int D.43653;
  const unsigned char * D.43654;
  unsigned char D.43655;
  int D.43656;
  long int D.43667;
  struct MonoInst * D.43668;
  int D.43669;
  int D.43670;
  unsigned int D.43671;
  int D.43672;
  short unsigned int D.43676;
  unsigned int D.43677;
  int D.43678;
  int D.43679;
  guint8 iftmp.382;
  int D.27014;
  int iftmp.383;
  int D.27013;
  const char[10] * D.43691;
  unsigned char D.43692;
  int D.43693;
  unsigned char D.43694;
  int D.43695;
  _Bool D.43696;
  _Bool D.43697;
  _Bool D.43698;
  const unsigned char * D.43701;
  unsigned char D.43702;
  int D.43703;
  const unsigned char * D.43704;
  unsigned char D.43705;
  int D.43706;
  _Bool D.43707;
  _Bool D.43708;
  const unsigned char * D.43711;
  unsigned char D.43712;
  int D.43713;
  const unsigned char * D.43714;
  unsigned char D.43715;
  int D.43716;
  _Bool D.43717;
  _Bool D.43718;
  const unsigned char * D.43721;
  unsigned char D.43722;
  int D.43723;
  const unsigned char * D.43724;
  unsigned char D.43725;
  int D.43726;
  long int D.43737;
  struct MonoInst * D.43738;
  int D.43739;
  int D.43740;
  unsigned int D.43741;
  int D.43742;
  short unsigned int D.43746;
  unsigned int D.43747;
  int D.43748;
  int D.43749;
  guint8 iftmp.384;
  int D.27025;
  int iftmp.385;
  int D.27024;
  const char[4] * D.43761;
  unsigned char D.43762;
  int D.43763;
  unsigned char D.43764;
  int D.43765;
  _Bool D.43766;
  _Bool D.43767;
  _Bool D.43768;
  const unsigned char * D.43771;
  unsigned char D.43772;
  int D.43773;
  const unsigned char * D.43774;
  unsigned char D.43775;
  int D.43776;
  _Bool D.43777;
  _Bool D.43778;
  const unsigned char * D.43781;
  unsigned char D.43782;
  int D.43783;
  const unsigned char * D.43784;
  unsigned char D.43785;
  int D.43786;
  _Bool D.43787;
  _Bool D.43788;
  const unsigned char * D.43791;
  unsigned char D.43792;
  int D.43793;
  const unsigned char * D.43794;
  unsigned char D.43795;
  int D.43796;
  short unsigned int D.43807;
  unsigned int D.43808;
  int D.43809;
  guint8 iftmp.386;
  int D.27035;
  int iftmp.387;
  int D.27034;
  const char[9] * D.43820;
  unsigned char D.43821;
  int D.43822;
  unsigned char D.43823;
  int D.43824;
  _Bool D.43825;
  _Bool D.43826;
  _Bool D.43827;
  const unsigned char * D.43830;
  unsigned char D.43831;
  int D.43832;
  const unsigned char * D.43833;
  unsigned char D.43834;
  int D.43835;
  _Bool D.43836;
  _Bool D.43837;
  const unsigned char * D.43840;
  unsigned char D.43841;
  int D.43842;
  const unsigned char * D.43843;
  unsigned char D.43844;
  int D.43845;
  _Bool D.43846;
  _Bool D.43847;
  const unsigned char * D.43850;
  unsigned char D.43851;
  int D.43852;
  const unsigned char * D.43853;
  unsigned char D.43854;
  int D.43855;
  _Bool D.43859;
  short unsigned int D.43868;
  gint32 iftmp.388;
  unsigned int D.43872;
  unsigned int D.43874;
  int D.43878;
  unsigned char D.43879;
  unsigned char D.43880;
  int D.27052;
  int iftmp.389;
  int D.27051;
  const char[16] * D.43888;
  unsigned char D.43889;
  int D.43890;
  unsigned char D.43891;
  int D.43892;
  _Bool D.43893;
  _Bool D.43894;
  _Bool D.43895;
  const unsigned char * D.43898;
  unsigned char D.43899;
  int D.43900;
  const unsigned char * D.43901;
  unsigned char D.43902;
  int D.43903;
  _Bool D.43904;
  _Bool D.43905;
  const unsigned char * D.43908;
  unsigned char D.43909;
  int D.43910;
  const unsigned char * D.43911;
  unsigned char D.43912;
  int D.43913;
  _Bool D.43914;
  _Bool D.43915;
  const unsigned char * D.43918;
  unsigned char D.43919;
  int D.43920;
  const unsigned char * D.43921;
  unsigned char D.43922;
  int D.43923;
  struct MonoType * D.43927;
  unsigned char D.43928;
  gint32 iftmp.390;
  unsigned int D.43943;
  unsigned int D.43945;
  gint32 iftmp.391;
  unsigned int D.43955;
  unsigned int D.43957;
  int D.27063;
  int iftmp.392;
  int D.27062;
  unsigned char D.43969;
  int D.43970;
  _Bool D.43971;
  _Bool D.43972;
  _Bool D.43973;
  const unsigned char * D.43976;
  unsigned char D.43977;
  int D.43978;
  _Bool D.43979;
  _Bool D.43980;
  const unsigned char * D.43983;
  unsigned char D.43984;
  int D.43985;
  _Bool D.43986;
  _Bool D.43987;
  const unsigned char * D.43990;
  unsigned char D.43991;
  int D.43992;
  int D.27072;
  int iftmp.393;
  int D.27071;
  const char[6] * D.44005;
  unsigned char D.44006;
  int D.44007;
  unsigned char D.44008;
  int D.44009;
  _Bool D.44010;
  _Bool D.44011;
  _Bool D.44012;
  const unsigned char * D.44015;
  unsigned char D.44016;
  int D.44017;
  const unsigned char * D.44018;
  unsigned char D.44019;
  int D.44020;
  _Bool D.44021;
  _Bool D.44022;
  const unsigned char * D.44025;
  unsigned char D.44026;
  int D.44027;
  const unsigned char * D.44028;
  unsigned char D.44029;
  int D.44030;
  _Bool D.44031;
  _Bool D.44032;
  const unsigned char * D.44035;
  unsigned char D.44036;
  int D.44037;
  const unsigned char * D.44038;
  unsigned char D.44039;
  int D.44040;
  int D.27081;
  int iftmp.394;
  int D.27080;
  const char[9] * D.44047;
  unsigned char D.44048;
  int D.44049;
  unsigned char D.44050;
  int D.44051;
  _Bool D.44052;
  _Bool D.44053;
  _Bool D.44054;
  const unsigned char * D.44057;
  unsigned char D.44058;
  int D.44059;
  const unsigned char * D.44060;
  unsigned char D.44061;
  int D.44062;
  _Bool D.44063;
  _Bool D.44064;
  const unsigned char * D.44067;
  unsigned char D.44068;
  int D.44069;
  const unsigned char * D.44070;
  unsigned char D.44071;
  int D.44072;
  _Bool D.44073;
  _Bool D.44074;
  const unsigned char * D.44077;
  unsigned char D.44078;
  int D.44079;
  const unsigned char * D.44080;
  unsigned char D.44081;
  int D.44082;
  int D.44086;
  int D.27090;
  int iftmp.395;
  int D.27089;
  const char[23] * D.44098;
  unsigned char D.44099;
  int D.44100;
  unsigned char D.44101;
  int D.44102;
  _Bool D.44103;
  _Bool D.44104;
  _Bool D.44105;
  const unsigned char * D.44108;
  unsigned char D.44109;
  int D.44110;
  const unsigned char * D.44111;
  unsigned char D.44112;
  int D.44113;
  _Bool D.44114;
  _Bool D.44115;
  const unsigned char * D.44118;
  unsigned char D.44119;
  int D.44120;
  const unsigned char * D.44121;
  unsigned char D.44122;
  int D.44123;
  _Bool D.44124;
  _Bool D.44125;
  const unsigned char * D.44128;
  unsigned char D.44129;
  int D.44130;
  const unsigned char * D.44131;
  unsigned char D.44132;
  int D.44133;
  int D.27099;
  int iftmp.396;
  int D.27098;
  const char[12] * D.44140;
  unsigned char D.44141;
  int D.44142;
  unsigned char D.44143;
  int D.44144;
  _Bool D.44145;
  _Bool D.44146;
  _Bool D.44147;
  const unsigned char * D.44150;
  unsigned char D.44151;
  int D.44152;
  const unsigned char * D.44153;
  unsigned char D.44154;
  int D.44155;
  _Bool D.44156;
  _Bool D.44157;
  const unsigned char * D.44160;
  unsigned char D.44161;
  int D.44162;
  const unsigned char * D.44163;
  unsigned char D.44164;
  int D.44165;
  _Bool D.44166;
  _Bool D.44167;
  const unsigned char * D.44170;
  unsigned char D.44171;
  int D.44172;
  const unsigned char * D.44173;
  unsigned char D.44174;
  int D.44175;
  unsigned int D.44179;
  int D.44180;
  struct MonoClass * D.44185;
  int D.27108;
  int iftmp.397;
  int D.27107;
  struct MonoAssembly * D.44194;
  const char[8] * D.44195;
  unsigned char D.44196;
  int D.44197;
  unsigned char D.44198;
  int D.44199;
  _Bool D.44200;
  _Bool D.44201;
  _Bool D.44202;
  const unsigned char * D.44205;
  unsigned char D.44206;
  int D.44207;
  const unsigned char * D.44208;
  unsigned char D.44209;
  int D.44210;
  _Bool D.44211;
  _Bool D.44212;
  const unsigned char * D.44215;
  unsigned char D.44216;
  int D.44217;
  const unsigned char * D.44218;
  unsigned char D.44219;
  int D.44220;
  _Bool D.44221;
  _Bool D.44222;
  const unsigned char * D.44225;
  unsigned char D.44226;
  int D.44227;
  const unsigned char * D.44228;
  unsigned char D.44229;
  int D.44230;
  const char * D.44232;
  int D.27117;
  int iftmp.398;
  int D.27116;
  const char[10] * D.44237;
  unsigned char D.44238;
  int D.44239;
  unsigned char D.44240;
  int D.44241;
  _Bool D.44242;
  _Bool D.44243;
  _Bool D.44244;
  const unsigned char * D.44247;
  unsigned char D.44248;
  int D.44249;
  const unsigned char * D.44250;
  unsigned char D.44251;
  int D.44252;
  _Bool D.44253;
  _Bool D.44254;
  const unsigned char * D.44257;
  unsigned char D.44258;
  int D.44259;
  const unsigned char * D.44260;
  unsigned char D.44261;
  int D.44262;
  _Bool D.44263;
  _Bool D.44264;
  const unsigned char * D.44267;
  unsigned char D.44268;
  int D.44269;
  const unsigned char * D.44270;
  unsigned char D.44271;
  int D.44272;
  int D.27126;
  int iftmp.399;
  int D.27125;
  const char[9] * D.44277;
  unsigned char D.44278;
  int D.44279;
  unsigned char D.44280;
  int D.44281;
  _Bool D.44282;
  _Bool D.44283;
  _Bool D.44284;
  const unsigned char * D.44287;
  unsigned char D.44288;
  int D.44289;
  const unsigned char * D.44290;
  unsigned char D.44291;
  int D.44292;
  _Bool D.44293;
  _Bool D.44294;
  const unsigned char * D.44297;
  unsigned char D.44298;
  int D.44299;
  const unsigned char * D.44300;
  unsigned char D.44301;
  int D.44302;
  _Bool D.44303;
  _Bool D.44304;
  const unsigned char * D.44307;
  unsigned char D.44308;
  int D.44309;
  const unsigned char * D.44310;
  unsigned char D.44311;
  int D.44312;
  int D.27135;
  int iftmp.400;
  int D.27134;
  const char[10] * D.44319;
  unsigned char D.44320;
  int D.44321;
  unsigned char D.44322;
  int D.44323;
  _Bool D.44324;
  _Bool D.44325;
  _Bool D.44326;
  const unsigned char * D.44329;
  unsigned char D.44330;
  int D.44331;
  const unsigned char * D.44332;
  unsigned char D.44333;
  int D.44334;
  _Bool D.44335;
  _Bool D.44336;
  const unsigned char * D.44339;
  unsigned char D.44340;
  int D.44341;
  const unsigned char * D.44342;
  unsigned char D.44343;
  int D.44344;
  _Bool D.44345;
  _Bool D.44346;
  const unsigned char * D.44349;
  unsigned char D.44350;
  int D.44351;
  const unsigned char * D.44352;
  unsigned char D.44353;
  int D.44354;
  unsigned char D.44358;
  short unsigned int D.44361;
  _Bool D.44362;
  _Bool D.44363;
  _Bool D.44364;
  unsigned int D.44367;
  struct MonoInst * ins;
  static struct MonoClass * runtime_helpers_class = 0B;

  ins = 0B;
  runtime_helpers_class.355 = runtime_helpers_class;
  if (runtime_helpers_class.355 == 0B) goto <D.42025>; else goto <D.42026>;
  <D.42025>:
  D.42027 = mono_defaults.corlib;
  runtime_helpers_class.356 = mono_class_from_name (D.42027, "System.Runtime.CompilerServices", "RuntimeHelpers");
  runtime_helpers_class = runtime_helpers_class.356;
  <D.42026>:
  D.42029 = cmethod->klass;
  D.42030 = mono_defaults.string_class;
  if (D.42029 == D.42030) goto <D.42031>; else goto <D.42032>;
  <D.42031>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 9;
    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_Chars";
      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;
      {
        D.42041 = __s2_len != 0;
        D.42042 = __result == 0;
        D.42043 = D.42041 & D.42042;
        if (D.42043 != 0) goto <D.42044>; else goto <D.42045>;
        <D.42044>:
        D.42046 = &MEM[(void *)"get_Chars" + 1B];
        D.42047 = *D.42046;
        D.42048 = (int) D.42047;
        D.42049 = __s2 + 1;
        D.42050 = *D.42049;
        D.42051 = (int) D.42050;
        __result = D.42048 - D.42051;
        D.42052 = __s2_len > 1;
        D.42042 = __result == 0;
        D.42053 = D.42052 & D.42042;
        if (D.42053 != 0) goto <D.42054>; else goto <D.42055>;
        <D.42054>:
        D.42056 = &MEM[(void *)"get_Chars" + 2B];
        D.42057 = *D.42056;
        D.42058 = (int) D.42057;
        D.42059 = __s2 + 2;
        D.42060 = *D.42059;
        D.42061 = (int) D.42060;
        __result = D.42058 - D.42061;
        D.42062 = __s2_len > 2;
        D.42042 = __result == 0;
        D.42063 = D.42062 & D.42042;
        if (D.42063 != 0) goto <D.42064>; else goto <D.42065>;
        <D.42064>:
        D.42066 = &MEM[(void *)"get_Chars" + 3B];
        D.42067 = *D.42066;
        D.42068 = (int) D.42067;
        D.42069 = __s2 + 3;
        D.42070 = *D.42069;
        D.42071 = (int) D.42070;
        __result = D.42068 - D.42071;
        <D.42065>:
        <D.42055>:
        <D.42045>:
      }
      D.26741 = __result;
    }
    iftmp.357 = -D.26741;
    goto <D.42072>;
    <D.42035>:
    D.42073 = cmethod->name;
    iftmp.357 = __builtin_strcmp (D.42073, "get_Chars");
    <D.42072>:
    D.26742 = iftmp.357;
  }
  if (D.26742 == 0) goto <D.42074>; else goto <D.42075>;
  <D.42074>:
  {
    int dreg;
    int index_reg;
    int mult_reg;
    int add_reg;

    D.42076 = alloc_ireg (cfg);
    dreg = (int) D.42076;
    D.42077 = alloc_preg (cfg);
    index_reg = (int) D.42077;
    D.42078 = alloc_preg (cfg);
    mult_reg = (int) D.42078;
    D.42079 = alloc_preg (cfg);
    add_reg = (int) D.42079;
    {
      struct MonoInst * inst;

      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      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 = 766;
      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.42085 = cfg->ip;
      inst->cil_code = D.42085;
      inst->dreg = index_reg;
      D.42086 = args + 8;
      D.42087 = *D.42086;
      D.42088 = D.42087->dreg;
      inst->sreg1 = D.42088;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42091>; else goto <D.42092>;
      <D.42091>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.42093>;
      <D.42092>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42093>:
    }
    D.42094 = cfg->opt;
    D.42095 = D.42094 & 134217728;
    if (D.42095 == 0) goto <D.42096>; else goto <D.42097>;
    <D.42096>:
    D.42094 = cfg->opt;
    D.42098 = D.42094 & 262144;
    if (D.42098 == 0) goto <D.42099>; else goto <D.42100>;
    <D.42099>:
    D.42101 = BIT_FIELD_REF <*cfg, 8, 5632>;
    D.42102 = D.42101 & 64;
    if (D.42102 != 0) goto <D.42103>; else goto <D.42104>;
    <D.42103>:
    {
      struct MonoInst * inst;

      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      inst->data.op[1].const_val = 0;
      D.42105 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42105;
      inst->prev = 0B;
      D.42106 = inst->prev;
      inst->next = D.42106;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42107 = inst->sreg3;
      inst->sreg2 = D.42107;
      D.42108 = inst->sreg2;
      inst->sreg1 = D.42108;
      D.42085 = cfg->ip;
      inst->cil_code = D.42085;
      inst->dreg = -1;
      D.42109 = *args;
      D.42110 = D.42109->dreg;
      inst->sreg1 = D.42110;
      inst->data.op[1].const_val = 0;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42111>; else goto <D.42112>;
      <D.42111>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.42113>;
      <D.42112>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42113>:
    }
    {
      struct MonoInst * inst;

      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      inst->data.op[1].const_val = 0;
      D.42114 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42114;
      inst->prev = 0B;
      D.42115 = inst->prev;
      inst->next = D.42115;
      inst->opcode = 455;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42116 = inst->sreg3;
      inst->sreg2 = D.42116;
      D.42117 = inst->sreg2;
      inst->sreg1 = D.42117;
      D.42085 = cfg->ip;
      inst->cil_code = D.42085;
      inst->data.op[1].p = "NullReferenceException";
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42118>; else goto <D.42119>;
      <D.42118>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.42120>;
      <D.42119>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42120>:
    }
    goto <D.42121>;
    <D.42104>:
    <D.42121>:
    if (0 != 0) goto <D.42122>; else goto <D.42123>;
    <D.42122>:
    {
      int _length_reg;

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

        __ins_flags = 32;
        D.42127 = __ins_flags & 32;
        if (D.42127 != 0) goto <D.42128>; else goto <D.42129>;
        <D.42128>:
        D.42101 = BIT_FIELD_REF <*cfg, 8, 5632>;
        D.42102 = D.42101 & 64;
        if (D.42102 != 0) goto <D.42130>; else goto <D.42131>;
        <D.42130>:
        {
          struct MonoInst * inst;

          D.42080 = cfg->mempool;
          inst = mono_mempool_alloc (D.42080, 80);
          inst->data.op[1].const_val = 0;
          D.42132 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.42132;
          inst->prev = 0B;
          D.42133 = inst->prev;
          inst->next = D.42133;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.42134 = inst->sreg3;
          inst->sreg2 = D.42134;
          D.42135 = inst->sreg2;
          inst->sreg1 = D.42135;
          D.42085 = cfg->ip;
          inst->cil_code = D.42085;
          inst->dreg = -1;
          D.42109 = *args;
          D.42110 = D.42109->dreg;
          inst->sreg1 = D.42110;
          inst->data.op[1].const_val = 0;
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          if (D.42090 != 0B) goto <D.42136>; else goto <D.42137>;
          <D.42136>:
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          D.42090->next = inst;
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          inst->prev = D.42090;
          D.42089 = cfg->cbb;
          D.42089->last_ins = inst;
          goto <D.42138>;
          <D.42137>:
          D.42089 = cfg->cbb;
          D.42089 = cfg->cbb;
          D.42089->last_ins = inst;
          D.42090 = D.42089->last_ins;
          D.42089->code = D.42090;
          <D.42138>:
        }
        {
          struct MonoInst * inst;

          D.42080 = cfg->mempool;
          inst = mono_mempool_alloc (D.42080, 80);
          inst->data.op[1].const_val = 0;
          D.42139 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.42139;
          inst->prev = 0B;
          D.42140 = inst->prev;
          inst->next = D.42140;
          inst->opcode = 455;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.42141 = inst->sreg3;
          inst->sreg2 = D.42141;
          D.42142 = inst->sreg2;
          inst->sreg1 = D.42142;
          D.42085 = cfg->ip;
          inst->cil_code = D.42085;
          inst->data.op[1].p = "NullReferenceException";
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          if (D.42090 != 0B) goto <D.42143>; else goto <D.42144>;
          <D.42143>:
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          D.42090->next = inst;
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          inst->prev = D.42090;
          D.42089 = cfg->cbb;
          D.42089->last_ins = inst;
          goto <D.42145>;
          <D.42144>:
          D.42089 = cfg->cbb;
          D.42089 = cfg->cbb;
          D.42089->last_ins = inst;
          D.42090 = D.42089->last_ins;
          D.42089->code = D.42090;
          <D.42145>:
        }
        goto <D.42146>;
        <D.42131>:
        <D.42146>:
        <D.42129>:
        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.42147 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42147;
        inst->prev = 0B;
        D.42148 = inst->prev;
        inst->next = D.42148;
        inst->opcode = 396;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42149 = inst->sreg3;
        inst->sreg2 = D.42149;
        D.42150 = inst->sreg2;
        inst->sreg1 = D.42150;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->dreg = _length_reg;
        D.42109 = *args;
        D.42110 = D.42109->dreg;
        inst->sreg1 = D.42110;
        inst->data.op[0].const_val = 16;
        inst->type = 1;
        D.42151 = (unsigned char) __ins_flags;
        inst->flags = D.42151;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.42152>; else goto <D.42153>;
        <D.42152>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.42154>;
        <D.42153>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.42154>:
      }
      goto <D.42155>;
      <D.42126>:
      {
        struct MonoInst * inst;
        int __ins_flags;

        __ins_flags = 64;
        D.42156 = __ins_flags & 32;
        if (D.42156 != 0) goto <D.42157>; else goto <D.42158>;
        <D.42157>:
        D.42101 = BIT_FIELD_REF <*cfg, 8, 5632>;
        D.42102 = D.42101 & 64;
        if (D.42102 != 0) goto <D.42159>; else goto <D.42160>;
        <D.42159>:
        {
          struct MonoInst * inst;

          D.42080 = cfg->mempool;
          inst = mono_mempool_alloc (D.42080, 80);
          inst->data.op[1].const_val = 0;
          D.42161 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.42161;
          inst->prev = 0B;
          D.42162 = inst->prev;
          inst->next = D.42162;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.42163 = inst->sreg3;
          inst->sreg2 = D.42163;
          D.42164 = inst->sreg2;
          inst->sreg1 = D.42164;
          D.42085 = cfg->ip;
          inst->cil_code = D.42085;
          inst->dreg = -1;
          D.42109 = *args;
          D.42110 = D.42109->dreg;
          inst->sreg1 = D.42110;
          inst->data.op[1].const_val = 0;
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          if (D.42090 != 0B) goto <D.42165>; else goto <D.42166>;
          <D.42165>:
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          D.42090->next = inst;
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          inst->prev = D.42090;
          D.42089 = cfg->cbb;
          D.42089->last_ins = inst;
          goto <D.42167>;
          <D.42166>:
          D.42089 = cfg->cbb;
          D.42089 = cfg->cbb;
          D.42089->last_ins = inst;
          D.42090 = D.42089->last_ins;
          D.42089->code = D.42090;
          <D.42167>:
        }
        {
          struct MonoInst * inst;

          D.42080 = cfg->mempool;
          inst = mono_mempool_alloc (D.42080, 80);
          inst->data.op[1].const_val = 0;
          D.42168 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.42168;
          inst->prev = 0B;
          D.42169 = inst->prev;
          inst->next = D.42169;
          inst->opcode = 455;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.42170 = inst->sreg3;
          inst->sreg2 = D.42170;
          D.42171 = inst->sreg2;
          inst->sreg1 = D.42171;
          D.42085 = cfg->ip;
          inst->cil_code = D.42085;
          inst->data.op[1].p = "NullReferenceException";
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          if (D.42090 != 0B) goto <D.42172>; else goto <D.42173>;
          <D.42172>:
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          D.42090->next = inst;
          D.42089 = cfg->cbb;
          D.42090 = D.42089->last_ins;
          inst->prev = D.42090;
          D.42089 = cfg->cbb;
          D.42089->last_ins = inst;
          goto <D.42174>;
          <D.42173>:
          D.42089 = cfg->cbb;
          D.42089 = cfg->cbb;
          D.42089->last_ins = inst;
          D.42090 = D.42089->last_ins;
          D.42089->code = D.42090;
          <D.42174>:
        }
        goto <D.42175>;
        <D.42160>:
        <D.42175>:
        <D.42158>:
        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.42176 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42176;
        inst->prev = 0B;
        D.42177 = inst->prev;
        inst->next = D.42177;
        inst->opcode = 396;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42178 = inst->sreg3;
        inst->sreg2 = D.42178;
        D.42179 = inst->sreg2;
        inst->sreg1 = D.42179;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->dreg = _length_reg;
        D.42109 = *args;
        D.42110 = D.42109->dreg;
        inst->sreg1 = D.42110;
        inst->data.op[0].const_val = 16;
        inst->type = 1;
        D.42180 = (unsigned char) __ins_flags;
        inst->flags = D.42180;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.42181>; else goto <D.42182>;
        <D.42181>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.42183>;
        <D.42182>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.42183>:
      }
      <D.42155>:
      {
        struct MonoInst * inst;

        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.42184 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42184;
        inst->prev = 0B;
        D.42185 = inst->prev;
        inst->next = D.42185;
        inst->opcode = 322;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42186 = inst->sreg3;
        inst->sreg2 = D.42186;
        D.42187 = inst->sreg2;
        inst->sreg1 = D.42187;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->dreg = -1;
        inst->sreg1 = _length_reg;
        inst->sreg2 = index_reg;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.42188>; else goto <D.42189>;
        <D.42188>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.42190>;
        <D.42189>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.42190>:
      }
      {
        struct MonoInst * inst;

        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.42191 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42191;
        inst->prev = 0B;
        D.42192 = inst->prev;
        inst->next = D.42192;
        inst->opcode = 463;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42193 = inst->sreg3;
        inst->sreg2 = D.42193;
        D.42194 = inst->sreg2;
        inst->sreg1 = D.42194;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->data.op[1].p = "IndexOutOfRangeException";
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.42195>; else goto <D.42196>;
        <D.42195>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.42197>;
        <D.42196>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.42197>:
      }
    }
    goto <D.42198>;
    <D.42123>:
    {
      struct MonoInst * inst;

      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      inst->data.op[1].const_val = 0;
      D.42199 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42199;
      inst->prev = 0B;
      D.42200 = inst->prev;
      inst->next = D.42200;
      inst->opcode = 1049;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42201 = inst->sreg3;
      inst->sreg2 = D.42201;
      D.42202 = inst->sreg2;
      inst->sreg1 = D.42202;
      D.42085 = cfg->ip;
      inst->cil_code = D.42085;
      D.42109 = *args;
      D.42110 = D.42109->dreg;
      inst->sreg1 = D.42110;
      inst->data.op[0].const_val = 16;
      inst->sreg2 = index_reg;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42203>; else goto <D.42204>;
      <D.42203>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.42205>;
      <D.42204>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42205>:
      {
        struct MonoInst * inst;

        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.42206 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42206;
        inst->prev = 0B;
        D.42207 = inst->prev;
        inst->next = D.42207;
        inst->opcode = 463;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42208 = inst->sreg3;
        inst->sreg2 = D.42208;
        D.42209 = inst->sreg2;
        inst->sreg1 = D.42209;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->data.op[1].p = "IndexOutOfRangeException";
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.42210>; else goto <D.42211>;
        <D.42210>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.42212>;
        <D.42211>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.42212>:
      }
    }
    <D.42198>:
    goto <D.42213>;
    <D.42100>:
    {
      struct MonoInst * ins;

      D.42080 = cfg->mempool;
      ins = mono_mempool_alloc (D.42080, 80);
      ins->data.op[1].const_val = 0;
      D.42214 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.42214;
      ins->prev = 0B;
      D.42215 = ins->prev;
      ins->next = D.42215;
      ins->opcode = 788;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.42216 = ins->sreg3;
      ins->sreg2 = D.42216;
      D.42217 = ins->sreg2;
      ins->sreg1 = D.42217;
      D.42085 = cfg->ip;
      ins->cil_code = D.42085;
      D.42109 = *args;
      D.42110 = D.42109->dreg;
      ins->sreg1 = D.42110;
      ins->sreg2 = index_reg;
      ins->data.op[1].const_val = 16;
      D.42218 = ins->flags;
      D.42219 = D.42218 | 32;
      ins->flags = D.42219;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42220>; else goto <D.42221>;
      <D.42220>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = ins;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      ins->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = ins;
      goto <D.42222>;
      <D.42221>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = ins;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42222>:
      D.42223 = cfg->flags;
      D.42224 = D.42223 | 256;
      cfg->flags = D.42224;
      D.42089 = cfg->cbb;
      D.42089->has_array_access = 1;
    }
    <D.42213>:
    <D.42097>:
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 1037;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    D.42229 = alloc_ireg_mp (cfg);
    D.42230 = (int) D.42229;
    ins->dreg = D.42230;
    D.42109 = *args;
    D.42110 = D.42109->dreg;
    ins->sreg1 = D.42110;
    ins->sreg2 = index_reg;
    ins->data.op[1].const_val = 20;
    ins->backend.shift_amount = 1;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.42231>; else goto <D.42232>;
    <D.42231>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.42233>;
    <D.42232>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.42233>:
    add_reg = ins->dreg;
    mult_reg = 0;
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 395;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    ins->dreg = dreg;
    ins->sreg1 = add_reg;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.42234>; else goto <D.42235>;
    <D.42234>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.42236>;
    <D.42235>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.42236>:
    type_from_op (ins, 0B, 0B);
    D.42237 = ins;
    return D.42237;
  }
  <D.42075>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42241 = "get_Length";
      D.42242 = MEM[(const unsigned char *)D.42241];
      D.42243 = (int) D.42242;
      D.42244 = *__s2;
      D.42245 = (int) D.42244;
      __result = D.42243 - D.42245;
      {
        D.42246 = __s2_len != 0;
        D.42247 = __result == 0;
        D.42248 = D.42246 & D.42247;
        if (D.42248 != 0) goto <D.42249>; else goto <D.42250>;
        <D.42249>:
        D.42251 = &MEM[(void *)"get_Length" + 1B];
        D.42252 = *D.42251;
        D.42253 = (int) D.42252;
        D.42254 = __s2 + 1;
        D.42255 = *D.42254;
        D.42256 = (int) D.42255;
        __result = D.42253 - D.42256;
        D.42257 = __s2_len > 1;
        D.42247 = __result == 0;
        D.42258 = D.42257 & D.42247;
        if (D.42258 != 0) goto <D.42259>; else goto <D.42260>;
        <D.42259>:
        D.42261 = &MEM[(void *)"get_Length" + 2B];
        D.42262 = *D.42261;
        D.42263 = (int) D.42262;
        D.42264 = __s2 + 2;
        D.42265 = *D.42264;
        D.42266 = (int) D.42265;
        __result = D.42263 - D.42266;
        D.42267 = __s2_len > 2;
        D.42247 = __result == 0;
        D.42268 = D.42267 & D.42247;
        if (D.42268 != 0) goto <D.42269>; else goto <D.42270>;
        <D.42269>:
        D.42271 = &MEM[(void *)"get_Length" + 3B];
        D.42272 = *D.42271;
        D.42273 = (int) D.42272;
        D.42274 = __s2 + 3;
        D.42275 = *D.42274;
        D.42276 = (int) D.42275;
        __result = D.42273 - D.42276;
        <D.42270>:
        <D.42260>:
        <D.42250>:
      }
      D.26771 = __result;
    }
    iftmp.358 = -D.26771;
    goto <D.42277>;
    <D.42240>:
    D.42073 = cmethod->name;
    iftmp.358 = __builtin_strcmp (D.42073, "get_Length");
    <D.42277>:
    D.26772 = iftmp.358;
  }
  if (D.26772 == 0) goto <D.42278>; else goto <D.42279>;
  <D.42278>:
  {
    int dreg;

    D.42280 = alloc_ireg (cfg);
    dreg = (int) D.42280;
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 785;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    ins->dreg = dreg;
    D.42109 = *args;
    D.42110 = D.42109->dreg;
    ins->sreg1 = D.42110;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.42281>; else goto <D.42282>;
    <D.42281>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.42283>;
    <D.42282>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.42283>:
    ins->type = 1;
    D.42284 = ins->flags;
    D.42285 = D.42284 | 32;
    ins->flags = D.42285;
    D.42089 = cfg->cbb;
    D.42089->has_array_access = 1;
    D.42223 = cfg->flags;
    D.42224 = D.42223 | 256;
    cfg->flags = D.42224;
    D.42237 = ins;
    return D.42237;
  }
  <D.42279>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42289 = "InternalSetChar";
      D.42290 = MEM[(const unsigned char *)D.42289];
      D.42291 = (int) D.42290;
      D.42292 = *__s2;
      D.42293 = (int) D.42292;
      __result = D.42291 - D.42293;
      {
        D.42294 = __s2_len != 0;
        D.42295 = __result == 0;
        D.42296 = D.42294 & D.42295;
        if (D.42296 != 0) goto <D.42297>; else goto <D.42298>;
        <D.42297>:
        D.42299 = &MEM[(void *)"InternalSetChar" + 1B];
        D.42300 = *D.42299;
        D.42301 = (int) D.42300;
        D.42302 = __s2 + 1;
        D.42303 = *D.42302;
        D.42304 = (int) D.42303;
        __result = D.42301 - D.42304;
        D.42305 = __s2_len > 1;
        D.42295 = __result == 0;
        D.42306 = D.42305 & D.42295;
        if (D.42306 != 0) goto <D.42307>; else goto <D.42308>;
        <D.42307>:
        D.42309 = &MEM[(void *)"InternalSetChar" + 2B];
        D.42310 = *D.42309;
        D.42311 = (int) D.42310;
        D.42312 = __s2 + 2;
        D.42313 = *D.42312;
        D.42314 = (int) D.42313;
        __result = D.42311 - D.42314;
        D.42315 = __s2_len > 2;
        D.42295 = __result == 0;
        D.42316 = D.42315 & D.42295;
        if (D.42316 != 0) goto <D.42317>; else goto <D.42318>;
        <D.42317>:
        D.42319 = &MEM[(void *)"InternalSetChar" + 3B];
        D.42320 = *D.42319;
        D.42321 = (int) D.42320;
        D.42322 = __s2 + 3;
        D.42323 = *D.42322;
        D.42324 = (int) D.42323;
        __result = D.42321 - D.42324;
        <D.42318>:
        <D.42308>:
        <D.42298>:
      }
      D.26781 = __result;
    }
    iftmp.359 = -D.26781;
    goto <D.42325>;
    <D.42288>:
    D.42073 = cmethod->name;
    iftmp.359 = __builtin_strcmp (D.42073, "InternalSetChar");
    <D.42325>:
    D.26782 = iftmp.359;
  }
  if (D.26782 == 0) goto <D.42326>; else goto <D.42327>;
  <D.42326>:
  {
    int mult_reg;
    int add_reg;

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

      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      inst->data.op[1].const_val = 0;
      D.42330 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42330;
      inst->prev = 0B;
      D.42331 = inst->prev;
      inst->next = D.42331;
      inst->opcode = 443;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42332 = inst->sreg3;
      inst->sreg2 = D.42332;
      D.42333 = inst->sreg2;
      inst->sreg1 = D.42333;
      D.42085 = cfg->ip;
      inst->cil_code = D.42085;
      inst->dreg = mult_reg;
      D.42086 = args + 8;
      D.42087 = *D.42086;
      D.42088 = D.42087->dreg;
      inst->sreg1 = D.42088;
      inst->data.op[1].const_val = 1;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42334>; else goto <D.42335>;
      <D.42334>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.42336>;
      <D.42335>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42336>:
    }
    {
      struct MonoInst * inst;

      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      inst->data.op[1].const_val = 0;
      D.42337 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42337;
      inst->prev = 0B;
      D.42338 = inst->prev;
      inst->next = D.42338;
      inst->opcode = 483;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42339 = inst->sreg3;
      inst->sreg2 = D.42339;
      D.42340 = inst->sreg2;
      inst->sreg1 = D.42340;
      D.42085 = cfg->ip;
      inst->cil_code = D.42085;
      inst->dreg = add_reg;
      inst->sreg1 = mult_reg;
      D.42109 = *args;
      D.42110 = D.42109->dreg;
      inst->sreg2 = D.42110;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42341>; else goto <D.42342>;
      <D.42341>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.42343>;
      <D.42342>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42343>:
    }
    {
      struct MonoInst * inst;

      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      inst->data.op[1].const_val = 0;
      D.42344 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42344;
      inst->prev = 0B;
      D.42345 = inst->prev;
      inst->next = D.42345;
      inst->opcode = 376;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42346 = inst->sreg3;
      inst->sreg2 = D.42346;
      D.42347 = inst->sreg2;
      inst->sreg1 = D.42347;
      D.42085 = cfg->ip;
      inst->cil_code = D.42085;
      D.42348 = args + 16;
      D.42349 = *D.42348;
      D.42350 = D.42349->dreg;
      inst->sreg1 = D.42350;
      inst->dreg = add_reg;
      inst->data.op[0].const_val = 20;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42351>; else goto <D.42352>;
      <D.42351>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.42353>;
      <D.42352>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42353>:
    }
    D.42089 = cfg->cbb;
    D.42237 = D.42089->last_ins;
    return D.42237;
  }
  <D.42327>:
  D.42237 = 0B;
  return D.42237;
  <D.42032>:
  D.42029 = cmethod->klass;
  D.42354 = mono_defaults.object_class;
  if (D.42029 == D.42354) goto <D.42355>; else goto <D.42356>;
  <D.42355>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42360 = "GetType";
      D.42361 = MEM[(const unsigned char *)D.42360];
      D.42362 = (int) D.42361;
      D.42363 = *__s2;
      D.42364 = (int) D.42363;
      __result = D.42362 - D.42364;
      {
        D.42365 = __s2_len != 0;
        D.42366 = __result == 0;
        D.42367 = D.42365 & D.42366;
        if (D.42367 != 0) goto <D.42368>; else goto <D.42369>;
        <D.42368>:
        D.42370 = &MEM[(void *)"GetType" + 1B];
        D.42371 = *D.42370;
        D.42372 = (int) D.42371;
        D.42373 = __s2 + 1;
        D.42374 = *D.42373;
        D.42375 = (int) D.42374;
        __result = D.42372 - D.42375;
        D.42376 = __s2_len > 1;
        D.42366 = __result == 0;
        D.42377 = D.42376 & D.42366;
        if (D.42377 != 0) goto <D.42378>; else goto <D.42379>;
        <D.42378>:
        D.42380 = &MEM[(void *)"GetType" + 2B];
        D.42381 = *D.42380;
        D.42382 = (int) D.42381;
        D.42383 = __s2 + 2;
        D.42384 = *D.42383;
        D.42385 = (int) D.42384;
        __result = D.42382 - D.42385;
        D.42386 = __s2_len > 2;
        D.42366 = __result == 0;
        D.42387 = D.42386 & D.42366;
        if (D.42387 != 0) goto <D.42388>; else goto <D.42389>;
        <D.42388>:
        D.42390 = &MEM[(void *)"GetType" + 3B];
        D.42391 = *D.42390;
        D.42392 = (int) D.42391;
        D.42393 = __s2 + 3;
        D.42394 = *D.42393;
        D.42395 = (int) D.42394;
        __result = D.42392 - D.42395;
        <D.42389>:
        <D.42379>:
        <D.42369>:
      }
      D.26795 = __result;
    }
    iftmp.360 = -D.26795;
    goto <D.42396>;
    <D.42359>:
    D.42073 = cmethod->name;
    iftmp.360 = __builtin_strcmp (D.42073, "GetType");
    <D.42396>:
    D.26796 = iftmp.360;
  }
  if (D.26796 == 0) goto <D.42397>; else goto <D.42398>;
  <D.42397>:
  {
    int dreg;
    int vt_reg;

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

      __ins_flags = 32;
      D.42401 = __ins_flags & 32;
      if (D.42401 != 0) goto <D.42402>; else goto <D.42403>;
      <D.42402>:
      D.42101 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.42102 = D.42101 & 64;
      if (D.42102 != 0) goto <D.42404>; else goto <D.42405>;
      <D.42404>:
      {
        struct MonoInst * inst;

        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.42406 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42406;
        inst->prev = 0B;
        D.42407 = inst->prev;
        inst->next = D.42407;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42408 = inst->sreg3;
        inst->sreg2 = D.42408;
        D.42409 = inst->sreg2;
        inst->sreg1 = D.42409;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->dreg = -1;
        D.42109 = *args;
        D.42110 = D.42109->dreg;
        inst->sreg1 = D.42110;
        inst->data.op[1].const_val = 0;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.42410>; else goto <D.42411>;
        <D.42410>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.42412>;
        <D.42411>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.42412>:
      }
      {
        struct MonoInst * inst;

        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.42413 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42413;
        inst->prev = 0B;
        D.42414 = inst->prev;
        inst->next = D.42414;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42415 = inst->sreg3;
        inst->sreg2 = D.42415;
        D.42416 = inst->sreg2;
        inst->sreg1 = D.42416;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->data.op[1].p = "NullReferenceException";
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.42417>; else goto <D.42418>;
        <D.42417>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.42419>;
        <D.42418>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.42419>:
      }
      goto <D.42420>;
      <D.42405>:
      <D.42420>:
      <D.42403>:
      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      inst->data.op[1].const_val = 0;
      D.42421 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42421;
      inst->prev = 0B;
      D.42422 = inst->prev;
      inst->next = D.42422;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42423 = inst->sreg3;
      inst->sreg2 = D.42423;
      D.42424 = inst->sreg2;
      inst->sreg1 = D.42424;
      D.42085 = cfg->ip;
      inst->cil_code = D.42085;
      inst->dreg = vt_reg;
      D.42109 = *args;
      D.42110 = D.42109->dreg;
      inst->sreg1 = D.42110;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.42425 = (unsigned char) __ins_flags;
      inst->flags = D.42425;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42426>; else goto <D.42427>;
      <D.42426>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.42428>;
      <D.42427>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42428>:
    }
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 391;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    ins->dreg = dreg;
    ins->sreg1 = vt_reg;
    ins->data.op[0].const_val = 24;
    ins->type = 1;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.42429>; else goto <D.42430>;
    <D.42429>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.42431>;
    <D.42430>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.42431>:
    type_from_op (ins, 0B, 0B);
    D.42237 = ins;
    return D.42237;
  }
  <D.42398>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42436 = "InternalGetHashCode";
      D.42437 = MEM[(const unsigned char *)D.42436];
      D.42438 = (int) D.42437;
      D.42439 = *__s2;
      D.42440 = (int) D.42439;
      __result = D.42438 - D.42440;
      {
        D.42441 = __s2_len != 0;
        D.42442 = __result == 0;
        D.42443 = D.42441 & D.42442;
        if (D.42443 != 0) goto <D.42444>; else goto <D.42445>;
        <D.42444>:
        D.42446 = &MEM[(void *)"InternalGetHashCode" + 1B];
        D.42447 = *D.42446;
        D.42448 = (int) D.42447;
        D.42449 = __s2 + 1;
        D.42450 = *D.42449;
        D.42451 = (int) D.42450;
        __result = D.42448 - D.42451;
        D.42452 = __s2_len > 1;
        D.42442 = __result == 0;
        D.42453 = D.42452 & D.42442;
        if (D.42453 != 0) goto <D.42454>; else goto <D.42455>;
        <D.42454>:
        D.42456 = &MEM[(void *)"InternalGetHashCode" + 2B];
        D.42457 = *D.42456;
        D.42458 = (int) D.42457;
        D.42459 = __s2 + 2;
        D.42460 = *D.42459;
        D.42461 = (int) D.42460;
        __result = D.42458 - D.42461;
        D.42462 = __s2_len > 2;
        D.42442 = __result == 0;
        D.42463 = D.42462 & D.42442;
        if (D.42463 != 0) goto <D.42464>; else goto <D.42465>;
        <D.42464>:
        D.42466 = &MEM[(void *)"InternalGetHashCode" + 3B];
        D.42467 = *D.42466;
        D.42468 = (int) D.42467;
        D.42469 = __s2 + 3;
        D.42470 = *D.42469;
        D.42471 = (int) D.42470;
        __result = D.42468 - D.42471;
        <D.42465>:
        <D.42455>:
        <D.42445>:
      }
      D.26810 = __result;
    }
    iftmp.361 = -D.26810;
    goto <D.42472>;
    <D.42435>:
    D.42073 = cmethod->name;
    iftmp.361 = __builtin_strcmp (D.42073, "InternalGetHashCode");
    <D.42472>:
    D.26811 = iftmp.361;
  }
  if (D.26811 == 0) goto <D.42473>; else goto <D.42432>;
  <D.42473>:
  D.42474 = mono_gc_is_moving ();
  if (D.42474 == 0) goto <D.42475>; else goto <D.42432>;
  <D.42475>:
  {
    int dreg;
    int t1;

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

      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      inst->data.op[1].const_val = 0;
      D.42478 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42478;
      inst->prev = 0B;
      D.42479 = inst->prev;
      inst->next = D.42479;
      inst->opcode = 443;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42480 = inst->sreg3;
      inst->sreg2 = D.42480;
      D.42481 = inst->sreg2;
      inst->sreg1 = D.42481;
      D.42085 = cfg->ip;
      inst->cil_code = D.42085;
      inst->dreg = t1;
      D.42109 = *args;
      D.42110 = D.42109->dreg;
      inst->sreg1 = D.42110;
      inst->data.op[1].const_val = 3;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42482>; else goto <D.42483>;
      <D.42482>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.42484>;
      <D.42483>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42484>:
    }
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 435;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    ins->dreg = dreg;
    ins->sreg1 = t1;
    ins->data.op[1].const_val = 2654435761;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.42485>; else goto <D.42486>;
    <D.42485>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.42487>;
    <D.42486>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.42487>:
    ins->type = 1;
    D.42237 = ins;
    return D.42237;
  }
  <D.42432>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42491 = ".ctor";
      D.42492 = MEM[(const unsigned char *)D.42491];
      D.42493 = (int) D.42492;
      D.42494 = *__s2;
      D.42495 = (int) D.42494;
      __result = D.42493 - D.42495;
      {
        D.42496 = __s2_len != 0;
        D.42497 = __result == 0;
        D.42498 = D.42496 & D.42497;
        if (D.42498 != 0) goto <D.42499>; else goto <D.42500>;
        <D.42499>:
        D.42501 = &MEM[(void *)".ctor" + 1B];
        D.42502 = *D.42501;
        D.42503 = (int) D.42502;
        D.42504 = __s2 + 1;
        D.42505 = *D.42504;
        D.42506 = (int) D.42505;
        __result = D.42503 - D.42506;
        D.42507 = __s2_len > 1;
        D.42497 = __result == 0;
        D.42508 = D.42507 & D.42497;
        if (D.42508 != 0) goto <D.42509>; else goto <D.42510>;
        <D.42509>:
        D.42511 = &MEM[(void *)".ctor" + 2B];
        D.42512 = *D.42511;
        D.42513 = (int) D.42512;
        D.42514 = __s2 + 2;
        D.42515 = *D.42514;
        D.42516 = (int) D.42515;
        __result = D.42513 - D.42516;
        D.42517 = __s2_len > 2;
        D.42497 = __result == 0;
        D.42518 = D.42517 & D.42497;
        if (D.42518 != 0) goto <D.42519>; else goto <D.42520>;
        <D.42519>:
        D.42521 = &MEM[(void *)".ctor" + 3B];
        D.42522 = *D.42521;
        D.42523 = (int) D.42522;
        D.42524 = __s2 + 3;
        D.42525 = *D.42524;
        D.42526 = (int) D.42525;
        __result = D.42523 - D.42526;
        <D.42520>:
        <D.42510>:
        <D.42500>:
      }
      D.26822 = __result;
    }
    iftmp.362 = -D.26822;
    goto <D.42527>;
    <D.42490>:
    D.42073 = cmethod->name;
    iftmp.362 = __builtin_strcmp (D.42073, ".ctor");
    <D.42527>:
    D.26823 = iftmp.362;
  }
  if (D.26823 == 0) goto <D.42528>; else goto <D.42529>;
  <D.42528>:
  D.42080 = cfg->mempool;
  ins = mono_mempool_alloc (D.42080, 80);
  ins->data.op[1].const_val = 0;
  D.42225 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42225;
  ins->prev = 0B;
  D.42226 = ins->prev;
  ins->next = D.42226;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42227 = ins->sreg3;
  ins->sreg2 = D.42227;
  D.42228 = ins->sreg2;
  ins->sreg1 = D.42228;
  D.42085 = cfg->ip;
  ins->cil_code = D.42085;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  if (D.42090 != 0B) goto <D.42530>; else goto <D.42531>;
  <D.42530>:
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  D.42090->next = ins;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  ins->prev = D.42090;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  goto <D.42532>;
  <D.42531>:
  D.42089 = cfg->cbb;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  D.42090 = D.42089->last_ins;
  D.42089->code = D.42090;
  <D.42532>:
  D.42237 = ins;
  return D.42237;
  <D.42529>:
  D.42237 = 0B;
  return D.42237;
  <D.42356>:
  D.42029 = cmethod->klass;
  D.42533 = mono_defaults.array_class;
  if (D.42029 == D.42533) goto <D.42534>; else goto <D.42535>;
  <D.42534>:
  D.42536 = cfg->gsharedvt;
  if (D.42536 == 0) goto <D.42537>; else goto <D.42538>;
  <D.42537>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.42073 = cmethod->name;
      __s2 = D.42073 + 1;
      D.42542 = "etGenericValueImpl";
      D.42543 = MEM[(const unsigned char *)D.42542];
      D.42544 = (int) D.42543;
      D.42545 = *__s2;
      D.42546 = (int) D.42545;
      __result = D.42544 - D.42546;
      {
        D.42547 = __s2_len != 0;
        D.42548 = __result == 0;
        D.42549 = D.42547 & D.42548;
        if (D.42549 != 0) goto <D.42550>; else goto <D.42551>;
        <D.42550>:
        D.42552 = &MEM[(void *)"etGenericValueImpl" + 1B];
        D.42553 = *D.42552;
        D.42554 = (int) D.42553;
        D.42555 = __s2 + 1;
        D.42556 = *D.42555;
        D.42557 = (int) D.42556;
        __result = D.42554 - D.42557;
        D.42558 = __s2_len > 1;
        D.42548 = __result == 0;
        D.42559 = D.42558 & D.42548;
        if (D.42559 != 0) goto <D.42560>; else goto <D.42561>;
        <D.42560>:
        D.42562 = &MEM[(void *)"etGenericValueImpl" + 2B];
        D.42563 = *D.42562;
        D.42564 = (int) D.42563;
        D.42565 = __s2 + 2;
        D.42566 = *D.42565;
        D.42567 = (int) D.42566;
        __result = D.42564 - D.42567;
        D.42568 = __s2_len > 2;
        D.42548 = __result == 0;
        D.42569 = D.42568 & D.42548;
        if (D.42569 != 0) goto <D.42570>; else goto <D.42571>;
        <D.42570>:
        D.42572 = &MEM[(void *)"etGenericValueImpl" + 3B];
        D.42573 = *D.42572;
        D.42574 = (int) D.42573;
        D.42575 = __s2 + 3;
        D.42576 = *D.42575;
        D.42577 = (int) D.42576;
        __result = D.42574 - D.42577;
        <D.42571>:
        <D.42561>:
        <D.42551>:
      }
      D.26831 = __result;
    }
    iftmp.363 = -D.26831;
    goto <D.42578>;
    <D.42541>:
    D.42073 = cmethod->name;
    D.42579 = D.42073 + 1;
    iftmp.363 = __builtin_strcmp (D.42579, "etGenericValueImpl");
    <D.42578>:
    D.26832 = iftmp.363;
  }
  if (D.26832 == 0) goto <D.42580>; else goto <D.42581>;
  <D.42580>:
  D.42073 = cmethod->name;
  D.42582 = *D.42073;
  D.42583 = D.42582 == 83;
  D.42584 = (int) D.42583;
  D.42237 = emit_array_generic_access (cfg, fsig, args, D.42584);
  return D.42237;
  <D.42581>:
  <D.42538>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

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

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

      __s2 = cmethod->name;
      D.42631 = "GetLowerBound";
      D.42632 = MEM[(const unsigned char *)D.42631];
      D.42633 = (int) D.42632;
      D.42634 = *__s2;
      D.42635 = (int) D.42634;
      __result = D.42633 - D.42635;
      {
        D.42636 = __s2_len != 0;
        D.42637 = __result == 0;
        D.42638 = D.42636 & D.42637;
        if (D.42638 != 0) goto <D.42639>; else goto <D.42640>;
        <D.42639>:
        D.42641 = &MEM[(void *)"GetLowerBound" + 1B];
        D.42642 = *D.42641;
        D.42643 = (int) D.42642;
        D.42644 = __s2 + 1;
        D.42645 = *D.42644;
        D.42646 = (int) D.42645;
        __result = D.42643 - D.42646;
        D.42647 = __s2_len > 1;
        D.42637 = __result == 0;
        D.42648 = D.42647 & D.42637;
        if (D.42648 != 0) goto <D.42649>; else goto <D.42650>;
        <D.42649>:
        D.42651 = &MEM[(void *)"GetLowerBound" + 2B];
        D.42652 = *D.42651;
        D.42653 = (int) D.42652;
        D.42654 = __s2 + 2;
        D.42655 = *D.42654;
        D.42656 = (int) D.42655;
        __result = D.42653 - D.42656;
        D.42657 = __s2_len > 2;
        D.42637 = __result == 0;
        D.42658 = D.42657 & D.42637;
        if (D.42658 != 0) goto <D.42659>; else goto <D.42660>;
        <D.42659>:
        D.42661 = &MEM[(void *)"GetLowerBound" + 3B];
        D.42662 = *D.42661;
        D.42663 = (int) D.42662;
        D.42664 = __s2 + 3;
        D.42665 = *D.42664;
        D.42666 = (int) D.42665;
        __result = D.42663 - D.42666;
        <D.42660>:
        <D.42650>:
        <D.42640>:
      }
      D.26849 = __result;
    }
    iftmp.365 = -D.26849;
    goto <D.42667>;
    <D.42630>:
    D.42073 = cmethod->name;
    iftmp.365 = __builtin_strcmp (D.42073, "GetLowerBound");
    <D.42667>:
    D.26850 = iftmp.365;
  }
  if (D.26850 == 0) goto <D.42585>; else goto <D.42586>;
  <D.42585>:
  D.42086 = args + 8;
  D.42087 = *D.42086;
  D.42668 = D.42087->opcode;
  if (D.42668 == 362) goto <D.42669>; else goto <D.42670>;
  <D.42669>:
  D.42086 = args + 8;
  D.42087 = *D.42086;
  D.42671 = D.42087->data.op[0].const_val;
  if (D.42671 == 0) goto <D.42672>; else goto <D.42673>;
  <D.42672>:
  {
    int dreg;
    int bounds_reg;
    struct MonoBasicBlock * end_bb;
    struct MonoBasicBlock * szarray_bb;
    gboolean get_length;

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

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

        __s2 = cmethod->name;
        D.42590 = "GetLength";
        D.42591 = MEM[(const unsigned char *)D.42590];
        D.42592 = (int) D.42591;
        D.42679 = *__s2;
        D.42680 = (int) D.42679;
        __result = D.42592 - D.42680;
        {
          D.42681 = __s2_len != 0;
          D.42682 = __result == 0;
          D.42683 = D.42681 & D.42682;
          if (D.42683 != 0) goto <D.42684>; else goto <D.42685>;
          <D.42684>:
          D.42600 = &MEM[(void *)"GetLength" + 1B];
          D.42601 = *D.42600;
          D.42602 = (int) D.42601;
          D.42686 = __s2 + 1;
          D.42687 = *D.42686;
          D.42688 = (int) D.42687;
          __result = D.42602 - D.42688;
          D.42689 = __s2_len > 1;
          D.42682 = __result == 0;
          D.42690 = D.42689 & D.42682;
          if (D.42690 != 0) goto <D.42691>; else goto <D.42692>;
          <D.42691>:
          D.42610 = &MEM[(void *)"GetLength" + 2B];
          D.42611 = *D.42610;
          D.42612 = (int) D.42611;
          D.42693 = __s2 + 2;
          D.42694 = *D.42693;
          D.42695 = (int) D.42694;
          __result = D.42612 - D.42695;
          D.42696 = __s2_len > 2;
          D.42682 = __result == 0;
          D.42697 = D.42696 & D.42682;
          if (D.42697 != 0) goto <D.42698>; else goto <D.42699>;
          <D.42698>:
          D.42620 = &MEM[(void *)"GetLength" + 3B];
          D.42621 = *D.42620;
          D.42622 = (int) D.42621;
          D.42700 = __s2 + 3;
          D.42701 = *D.42700;
          D.42702 = (int) D.42701;
          __result = D.42622 - D.42702;
          <D.42699>:
          <D.42692>:
          <D.42685>:
        }
        D.26863 = __result;
      }
      iftmp.366 = -D.26863;
      goto <D.42703>;
      <D.42678>:
      D.42073 = cmethod->name;
      iftmp.366 = __builtin_strcmp (D.42073, "GetLength");
      <D.42703>:
      D.26864 = iftmp.366;
    }
    D.42704 = D.26864 == 0;
    get_length = (gboolean) D.42704;
    D.42080 = cfg->mempool;
    end_bb = mono_mempool_alloc0 (D.42080, 296);
    D.42705 = cfg->num_bblocks;
    D.42706 = D.42705;
    D.42707 = D.42706 + 1;
    cfg->num_bblocks = D.42707;
    D.42708 = (int) D.42706;
    end_bb->block_num = D.42708;
    D.42080 = cfg->mempool;
    szarray_bb = mono_mempool_alloc0 (D.42080, 296);
    D.42705 = cfg->num_bblocks;
    D.42709 = D.42705;
    D.42710 = D.42709 + 1;
    cfg->num_bblocks = D.42710;
    D.42711 = (int) D.42709;
    szarray_bb->block_num = D.42711;
    {
      int __ins_flags;

      __ins_flags = 32;
      D.42712 = __ins_flags & 32;
      if (D.42712 != 0) goto <D.42713>; else goto <D.42714>;
      <D.42713>:
      D.42101 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.42102 = D.42101 & 64;
      if (D.42102 != 0) goto <D.42715>; else goto <D.42716>;
      <D.42715>:
      {
        struct MonoInst * inst;

        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.42717 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42717;
        inst->prev = 0B;
        D.42718 = inst->prev;
        inst->next = D.42718;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42719 = inst->sreg3;
        inst->sreg2 = D.42719;
        D.42720 = inst->sreg2;
        inst->sreg1 = D.42720;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->dreg = -1;
        D.42109 = *args;
        D.42110 = D.42109->dreg;
        inst->sreg1 = D.42110;
        inst->data.op[1].const_val = 0;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.42721>; else goto <D.42722>;
        <D.42721>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.42723>;
        <D.42722>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.42723>:
      }
      {
        struct MonoInst * inst;

        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.42724 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.42724;
        inst->prev = 0B;
        D.42725 = inst->prev;
        inst->next = D.42725;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.42726 = inst->sreg3;
        inst->sreg2 = D.42726;
        D.42727 = inst->sreg2;
        inst->sreg1 = D.42727;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->data.op[1].p = "NullReferenceException";
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.42728>; else goto <D.42729>;
        <D.42728>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.42730>;
        <D.42729>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.42730>:
      }
      goto <D.42731>;
      <D.42716>:
      <D.42731>:
      <D.42714>:
      D.42080 = cfg->mempool;
      ins = mono_mempool_alloc (D.42080, 80);
      ins->data.op[1].const_val = 0;
      D.42225 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.42225;
      ins->prev = 0B;
      D.42226 = ins->prev;
      ins->next = D.42226;
      ins->opcode = 391;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.42227 = ins->sreg3;
      ins->sreg2 = D.42227;
      D.42228 = ins->sreg2;
      ins->sreg1 = D.42228;
      D.42085 = cfg->ip;
      ins->cil_code = D.42085;
      ins->dreg = bounds_reg;
      D.42109 = *args;
      D.42110 = D.42109->dreg;
      ins->sreg1 = D.42110;
      ins->data.op[0].const_val = 16;
      ins->type = 1;
      D.42732 = (unsigned char) __ins_flags;
      ins->flags = D.42732;
    }
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.42733>; else goto <D.42734>;
    <D.42733>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.42735>;
    <D.42734>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.42735>:
    {
      struct MonoInst * inst;

      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      inst->data.op[1].const_val = 0;
      D.42736 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42736;
      inst->prev = 0B;
      D.42737 = inst->prev;
      inst->next = D.42737;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42738 = inst->sreg3;
      inst->sreg2 = D.42738;
      D.42739 = inst->sreg2;
      inst->sreg1 = D.42739;
      D.42085 = cfg->ip;
      inst->cil_code = D.42085;
      inst->dreg = -1;
      inst->sreg1 = bounds_reg;
      inst->data.op[1].const_val = 0;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42740>; else goto <D.42741>;
      <D.42740>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.42742>;
      <D.42741>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42742>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.42080 = cfg->mempool;
      ins = mono_mempool_alloc (D.42080, 80);
      ins->data.op[1].const_val = 0;
      D.42743 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.42743;
      ins->prev = 0B;
      D.42744 = ins->prev;
      ins->next = D.42744;
      ins->opcode = 652;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.42745 = ins->sreg3;
      ins->sreg2 = D.42745;
      D.42746 = ins->sreg2;
      ins->sreg1 = D.42746;
      D.42085 = cfg->ip;
      ins->cil_code = D.42085;
      if (0 != 0) goto <D.42747>; else goto <D.42748>;
      <D.42747>:
      D.42080 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.42080, 296);
      D.42705 = cfg->num_bblocks;
      D.42749 = D.42705;
      D.42750 = D.42749 + 1;
      cfg->num_bblocks = D.42750;
      D.42751 = (int) D.42749;
      falsebb->block_num = D.42751;
      ins->data.op[0].target_block = szarray_bb;
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, szarray_bb);
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42752>; else goto <D.42753>;
      <D.42752>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = ins;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      ins->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = ins;
      goto <D.42754>;
      <D.42753>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = ins;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42754>:
      D.42755 = falsebb->cil_code;
      if (D.42755 != 0B) goto <D.42756>; else goto <D.42757>;
      <D.42756>:
      D.42758 = cfg->cil_offset_to_bb;
      D.42755 = falsebb->cil_code;
      D.42759 = (long int) D.42755;
      D.42760 = cfg->cil_start;
      D.42761 = (long int) D.42760;
      D.42762 = D.42759 - D.42761;
      D.42763 = (long unsigned int) D.42762;
      D.42764 = D.42763 * 8;
      D.42765 = D.42758 + D.42764;
      *D.42765 = falsebb;
      <D.42757>:
      D.42766 = cfg->real_offset;
      falsebb->real_offset = D.42766;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42770>; else goto <D.42767>;
      <D.42770>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42771 = D.42090->opcode;
      D.42772 = D.42771 + 64981;
      D.42773 = D.42772 <= 9;
      D.42774 = D.42771 + 64874;
      D.42775 = D.42774 <= 9;
      D.42776 = D.42773 | D.42775;
      if (D.42776 != 0) goto <D.42768>; else goto <D.42777>;
      <D.42777>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42778 = D.42090->opcode;
      D.42779 = D.42778 + 64884;
      if (D.42779 <= 9) goto <D.42768>; else goto <D.42767>;
      <D.42768>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42780 = D.42090->data.op[1].many_blocks;
      D.42781 = D.42780 + 8;
      D.42782 = *D.42781;
      if (D.42782 == 0B) goto <D.42783>; else goto <D.42767>;
      <D.42783>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42780 = D.42090->data.op[1].many_blocks;
      D.42781 = D.42780 + 8;
      *D.42781 = falsebb;
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, falsebb);
      goto <D.42769>;
      <D.42767>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 == 0B) goto <D.42784>; else goto <D.42786>;
      <D.42786>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42787 = D.42090->opcode;
      D.42788 = D.42787 != 446;
      D.42789 = D.42787 != 763;
      D.42790 = D.42788 & D.42789;
      if (D.42790 != 0) goto <D.42791>; else goto <D.42785>;
      <D.42791>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42792 = D.42090->opcode;
      D.42793 = D.42792 + 64981;
      D.42794 = D.42793 > 9;
      D.42795 = D.42792 + 64874;
      D.42796 = D.42795 > 9;
      D.42797 = D.42794 & D.42796;
      if (D.42797 != 0) goto <D.42798>; else goto <D.42785>;
      <D.42798>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42778 = D.42090->opcode;
      D.42779 = D.42778 + 64884;
      if (D.42779 > 9) goto <D.42784>; else goto <D.42785>;
      <D.42784>:
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, falsebb);
      <D.42785>:
      <D.42769>:
      D.42089 = cfg->cbb;
      D.42089->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.42799>;
      <D.42748>:
      D.42080 = cfg->mempool;
      D.42800 = mono_mempool_alloc (D.42080, 16);
      ins->data.op[1].many_blocks = D.42800;
      D.42801 = ins->data.op[1].many_blocks;
      *D.42801 = szarray_bb;
      D.42801 = ins->data.op[1].many_blocks;
      D.42802 = D.42801 + 8;
      *D.42802 = 0B;
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, szarray_bb);
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42803>; else goto <D.42804>;
      <D.42803>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = ins;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      ins->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = ins;
      goto <D.42805>;
      <D.42804>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = ins;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42805>:
      D.42806 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.42807 = D.42806 & 8;
      if (D.42807 == 0) goto <D.42808>; else goto <D.42809>;
      <D.42808>:
      D.42080 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.42080, 296);
      D.42705 = cfg->num_bblocks;
      D.42810 = D.42705;
      D.42811 = D.42810 + 1;
      cfg->num_bblocks = D.42811;
      D.42812 = (int) D.42810;
      falsebb->block_num = D.42812;
      D.42801 = ins->data.op[1].many_blocks;
      D.42802 = D.42801 + 8;
      *D.42802 = falsebb;
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, falsebb);
      D.42755 = falsebb->cil_code;
      if (D.42755 != 0B) goto <D.42813>; else goto <D.42814>;
      <D.42813>:
      D.42758 = cfg->cil_offset_to_bb;
      D.42755 = falsebb->cil_code;
      D.42759 = (long int) D.42755;
      D.42760 = cfg->cil_start;
      D.42761 = (long int) D.42760;
      D.42762 = D.42759 - D.42761;
      D.42763 = (long unsigned int) D.42762;
      D.42764 = D.42763 * 8;
      D.42765 = D.42758 + D.42764;
      *D.42765 = falsebb;
      <D.42814>:
      D.42766 = cfg->real_offset;
      falsebb->real_offset = D.42766;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42818>; else goto <D.42815>;
      <D.42818>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42819 = D.42090->opcode;
      D.42820 = D.42819 + 64981;
      D.42821 = D.42820 <= 9;
      D.42822 = D.42819 + 64874;
      D.42823 = D.42822 <= 9;
      D.42824 = D.42821 | D.42823;
      if (D.42824 != 0) goto <D.42816>; else goto <D.42825>;
      <D.42825>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42778 = D.42090->opcode;
      D.42779 = D.42778 + 64884;
      if (D.42779 <= 9) goto <D.42816>; else goto <D.42815>;
      <D.42816>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42780 = D.42090->data.op[1].many_blocks;
      D.42781 = D.42780 + 8;
      D.42782 = *D.42781;
      if (D.42782 == 0B) goto <D.42826>; else goto <D.42815>;
      <D.42826>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42780 = D.42090->data.op[1].many_blocks;
      D.42781 = D.42780 + 8;
      *D.42781 = falsebb;
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, falsebb);
      goto <D.42817>;
      <D.42815>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 == 0B) goto <D.42827>; else goto <D.42829>;
      <D.42829>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42830 = D.42090->opcode;
      D.42831 = D.42830 != 446;
      D.42832 = D.42830 != 763;
      D.42833 = D.42831 & D.42832;
      if (D.42833 != 0) goto <D.42834>; else goto <D.42828>;
      <D.42834>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42835 = D.42090->opcode;
      D.42836 = D.42835 + 64981;
      D.42837 = D.42836 > 9;
      D.42838 = D.42835 + 64874;
      D.42839 = D.42838 > 9;
      D.42840 = D.42837 & D.42839;
      if (D.42840 != 0) goto <D.42841>; else goto <D.42828>;
      <D.42841>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42778 = D.42090->opcode;
      D.42779 = D.42778 + 64884;
      if (D.42779 > 9) goto <D.42827>; else goto <D.42828>;
      <D.42827>:
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, falsebb);
      <D.42828>:
      <D.42817>:
      D.42089 = cfg->cbb;
      D.42089->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.42842>;
      <D.42809>:
      D.42089 = cfg->cbb;
      D.42089->extended = 1;
      <D.42842>:
      <D.42799>:
    }
    if (get_length != 0) goto <D.42843>; else goto <D.42844>;
    <D.42843>:
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 396;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    ins->dreg = dreg;
    ins->sreg1 = bounds_reg;
    ins->data.op[0].const_val = 0;
    ins->type = 1;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.42845>; else goto <D.42846>;
    <D.42845>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.42847>;
    <D.42846>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.42847>:
    goto <D.42848>;
    <D.42844>:
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 396;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    ins->dreg = dreg;
    ins->sreg1 = bounds_reg;
    ins->data.op[0].const_val = 4;
    ins->type = 1;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.42849>; else goto <D.42850>;
    <D.42849>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.42851>;
    <D.42850>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.42851>:
    <D.42848>:
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.42080 = cfg->mempool;
      ins = mono_mempool_alloc (D.42080, 80);
      ins->data.op[1].const_val = 0;
      D.42852 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.42852;
      ins->prev = 0B;
      D.42853 = ins->prev;
      ins->next = D.42853;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.42854 = ins->sreg3;
      ins->sreg2 = D.42854;
      D.42855 = ins->sreg2;
      ins->sreg1 = D.42855;
      D.42085 = cfg->ip;
      ins->cil_code = D.42085;
      if (1 != 0) goto <D.42856>; else goto <D.42857>;
      <D.42856>:
      D.42080 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.42080, 296);
      D.42705 = cfg->num_bblocks;
      D.42858 = D.42705;
      D.42859 = D.42858 + 1;
      cfg->num_bblocks = D.42859;
      D.42860 = (int) D.42858;
      falsebb->block_num = D.42860;
      ins->data.op[0].target_block = end_bb;
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, end_bb);
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42861>; else goto <D.42862>;
      <D.42861>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = ins;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      ins->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = ins;
      goto <D.42863>;
      <D.42862>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = ins;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42863>:
      D.42864 = falsebb->cil_code;
      if (D.42864 != 0B) goto <D.42865>; else goto <D.42866>;
      <D.42865>:
      D.42758 = cfg->cil_offset_to_bb;
      D.42864 = falsebb->cil_code;
      D.42867 = (long int) D.42864;
      D.42760 = cfg->cil_start;
      D.42761 = (long int) D.42760;
      D.42868 = D.42867 - D.42761;
      D.42869 = (long unsigned int) D.42868;
      D.42870 = D.42869 * 8;
      D.42871 = D.42758 + D.42870;
      *D.42871 = falsebb;
      <D.42866>:
      D.42766 = cfg->real_offset;
      falsebb->real_offset = D.42766;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42875>; else goto <D.42872>;
      <D.42875>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42876 = D.42090->opcode;
      D.42877 = D.42876 + 64981;
      D.42878 = D.42877 <= 9;
      D.42879 = D.42876 + 64874;
      D.42880 = D.42879 <= 9;
      D.42881 = D.42878 | D.42880;
      if (D.42881 != 0) goto <D.42873>; else goto <D.42882>;
      <D.42882>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42778 = D.42090->opcode;
      D.42779 = D.42778 + 64884;
      if (D.42779 <= 9) goto <D.42873>; else goto <D.42872>;
      <D.42873>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42780 = D.42090->data.op[1].many_blocks;
      D.42781 = D.42780 + 8;
      D.42782 = *D.42781;
      if (D.42782 == 0B) goto <D.42883>; else goto <D.42872>;
      <D.42883>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42780 = D.42090->data.op[1].many_blocks;
      D.42781 = D.42780 + 8;
      *D.42781 = falsebb;
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, falsebb);
      goto <D.42874>;
      <D.42872>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 == 0B) goto <D.42884>; else goto <D.42886>;
      <D.42886>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42887 = D.42090->opcode;
      D.42888 = D.42887 != 446;
      D.42889 = D.42887 != 763;
      D.42890 = D.42888 & D.42889;
      if (D.42890 != 0) goto <D.42891>; else goto <D.42885>;
      <D.42891>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42892 = D.42090->opcode;
      D.42893 = D.42892 + 64981;
      D.42894 = D.42893 > 9;
      D.42895 = D.42892 + 64874;
      D.42896 = D.42895 > 9;
      D.42897 = D.42894 & D.42896;
      if (D.42897 != 0) goto <D.42898>; else goto <D.42885>;
      <D.42898>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42778 = D.42090->opcode;
      D.42779 = D.42778 + 64884;
      if (D.42779 > 9) goto <D.42884>; else goto <D.42885>;
      <D.42884>:
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, falsebb);
      <D.42885>:
      <D.42874>:
      D.42089 = cfg->cbb;
      D.42089->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.42899>;
      <D.42857>:
      D.42080 = cfg->mempool;
      D.42900 = mono_mempool_alloc (D.42080, 16);
      ins->data.op[1].many_blocks = D.42900;
      D.42901 = ins->data.op[1].many_blocks;
      *D.42901 = end_bb;
      D.42901 = ins->data.op[1].many_blocks;
      D.42902 = D.42901 + 8;
      *D.42902 = 0B;
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, end_bb);
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42903>; else goto <D.42904>;
      <D.42903>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = ins;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      ins->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = ins;
      goto <D.42905>;
      <D.42904>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = ins;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42905>:
      D.42806 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.42807 = D.42806 & 8;
      if (D.42807 == 0) goto <D.42906>; else goto <D.42907>;
      <D.42906>:
      D.42080 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.42080, 296);
      D.42705 = cfg->num_bblocks;
      D.42908 = D.42705;
      D.42909 = D.42908 + 1;
      cfg->num_bblocks = D.42909;
      D.42910 = (int) D.42908;
      falsebb->block_num = D.42910;
      D.42901 = ins->data.op[1].many_blocks;
      D.42902 = D.42901 + 8;
      *D.42902 = falsebb;
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, falsebb);
      D.42864 = falsebb->cil_code;
      if (D.42864 != 0B) goto <D.42911>; else goto <D.42912>;
      <D.42911>:
      D.42758 = cfg->cil_offset_to_bb;
      D.42864 = falsebb->cil_code;
      D.42867 = (long int) D.42864;
      D.42760 = cfg->cil_start;
      D.42761 = (long int) D.42760;
      D.42868 = D.42867 - D.42761;
      D.42869 = (long unsigned int) D.42868;
      D.42870 = D.42869 * 8;
      D.42871 = D.42758 + D.42870;
      *D.42871 = falsebb;
      <D.42912>:
      D.42766 = cfg->real_offset;
      falsebb->real_offset = D.42766;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42916>; else goto <D.42913>;
      <D.42916>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42917 = D.42090->opcode;
      D.42918 = D.42917 + 64981;
      D.42919 = D.42918 <= 9;
      D.42920 = D.42917 + 64874;
      D.42921 = D.42920 <= 9;
      D.42922 = D.42919 | D.42921;
      if (D.42922 != 0) goto <D.42914>; else goto <D.42923>;
      <D.42923>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42778 = D.42090->opcode;
      D.42779 = D.42778 + 64884;
      if (D.42779 <= 9) goto <D.42914>; else goto <D.42913>;
      <D.42914>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42780 = D.42090->data.op[1].many_blocks;
      D.42781 = D.42780 + 8;
      D.42782 = *D.42781;
      if (D.42782 == 0B) goto <D.42924>; else goto <D.42913>;
      <D.42924>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42780 = D.42090->data.op[1].many_blocks;
      D.42781 = D.42780 + 8;
      *D.42781 = falsebb;
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, falsebb);
      goto <D.42915>;
      <D.42913>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 == 0B) goto <D.42925>; else goto <D.42927>;
      <D.42927>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42928 = D.42090->opcode;
      D.42929 = D.42928 != 446;
      D.42930 = D.42928 != 763;
      D.42931 = D.42929 & D.42930;
      if (D.42931 != 0) goto <D.42932>; else goto <D.42926>;
      <D.42932>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42933 = D.42090->opcode;
      D.42934 = D.42933 + 64981;
      D.42935 = D.42934 > 9;
      D.42936 = D.42933 + 64874;
      D.42937 = D.42936 > 9;
      D.42938 = D.42935 & D.42937;
      if (D.42938 != 0) goto <D.42939>; else goto <D.42926>;
      <D.42939>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42778 = D.42090->opcode;
      D.42779 = D.42778 + 64884;
      if (D.42779 > 9) goto <D.42925>; else goto <D.42926>;
      <D.42925>:
      D.42089 = cfg->cbb;
      mono_link_bblock (cfg, D.42089, falsebb);
      <D.42926>:
      <D.42915>:
      D.42089 = cfg->cbb;
      D.42089->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.42940>;
      <D.42907>:
      D.42089 = cfg->cbb;
      D.42089->extended = 1;
      <D.42940>:
      <D.42899>:
    }
    D.42941 = szarray_bb->cil_code;
    if (D.42941 != 0B) goto <D.42942>; else goto <D.42943>;
    <D.42942>:
    D.42758 = cfg->cil_offset_to_bb;
    D.42941 = szarray_bb->cil_code;
    D.42944 = (long int) D.42941;
    D.42760 = cfg->cil_start;
    D.42761 = (long int) D.42760;
    D.42945 = D.42944 - D.42761;
    D.42946 = (long unsigned int) D.42945;
    D.42947 = D.42946 * 8;
    D.42948 = D.42758 + D.42947;
    *D.42948 = szarray_bb;
    <D.42943>:
    D.42766 = cfg->real_offset;
    szarray_bb->real_offset = D.42766;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.42952>; else goto <D.42949>;
    <D.42952>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42953 = D.42090->opcode;
    D.42954 = D.42953 + 64981;
    D.42955 = D.42954 <= 9;
    D.42956 = D.42953 + 64874;
    D.42957 = D.42956 <= 9;
    D.42958 = D.42955 | D.42957;
    if (D.42958 != 0) goto <D.42950>; else goto <D.42959>;
    <D.42959>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42778 = D.42090->opcode;
    D.42779 = D.42778 + 64884;
    if (D.42779 <= 9) goto <D.42950>; else goto <D.42949>;
    <D.42950>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42780 = D.42090->data.op[1].many_blocks;
    D.42781 = D.42780 + 8;
    D.42782 = *D.42781;
    if (D.42782 == 0B) goto <D.42960>; else goto <D.42949>;
    <D.42960>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42780 = D.42090->data.op[1].many_blocks;
    D.42781 = D.42780 + 8;
    *D.42781 = szarray_bb;
    D.42089 = cfg->cbb;
    mono_link_bblock (cfg, D.42089, szarray_bb);
    goto <D.42951>;
    <D.42949>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 == 0B) goto <D.42961>; else goto <D.42963>;
    <D.42963>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42964 = D.42090->opcode;
    D.42965 = D.42964 != 446;
    D.42966 = D.42964 != 763;
    D.42967 = D.42965 & D.42966;
    if (D.42967 != 0) goto <D.42968>; else goto <D.42962>;
    <D.42968>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42969 = D.42090->opcode;
    D.42970 = D.42969 + 64981;
    D.42971 = D.42970 > 9;
    D.42972 = D.42969 + 64874;
    D.42973 = D.42972 > 9;
    D.42974 = D.42971 & D.42973;
    if (D.42974 != 0) goto <D.42975>; else goto <D.42962>;
    <D.42975>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42778 = D.42090->opcode;
    D.42779 = D.42778 + 64884;
    if (D.42779 > 9) goto <D.42961>; else goto <D.42962>;
    <D.42961>:
    D.42089 = cfg->cbb;
    mono_link_bblock (cfg, D.42089, szarray_bb);
    <D.42962>:
    <D.42951>:
    D.42089 = cfg->cbb;
    D.42089->next_bb = szarray_bb;
    cfg->cbb = szarray_bb;
    if (get_length != 0) goto <D.42976>; else goto <D.42977>;
    <D.42976>:
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 396;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    ins->dreg = dreg;
    D.42109 = *args;
    D.42110 = D.42109->dreg;
    ins->sreg1 = D.42110;
    ins->data.op[0].const_val = 24;
    ins->type = 1;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.42978>; else goto <D.42979>;
    <D.42978>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.42980>;
    <D.42979>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.42980>:
    goto <D.42981>;
    <D.42977>:
    {
      struct MonoInst * inst;

      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      inst->data.op[1].const_val = 0;
      D.42982 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.42982;
      inst->prev = 0B;
      D.42983 = inst->prev;
      inst->next = D.42983;
      inst->opcode = 362;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.42984 = inst->sreg3;
      inst->sreg2 = D.42984;
      D.42985 = inst->sreg2;
      inst->sreg1 = D.42985;
      D.42085 = cfg->ip;
      inst->cil_code = D.42085;
      inst->dreg = dreg;
      inst->data.op[0].const_val = 0;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.42986>; else goto <D.42987>;
      <D.42986>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.42988>;
      <D.42987>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.42988>:
    }
    <D.42981>:
    D.42989 = end_bb->cil_code;
    if (D.42989 != 0B) goto <D.42990>; else goto <D.42991>;
    <D.42990>:
    D.42758 = cfg->cil_offset_to_bb;
    D.42989 = end_bb->cil_code;
    D.42992 = (long int) D.42989;
    D.42760 = cfg->cil_start;
    D.42761 = (long int) D.42760;
    D.42993 = D.42992 - D.42761;
    D.42994 = (long unsigned int) D.42993;
    D.42995 = D.42994 * 8;
    D.42996 = D.42758 + D.42995;
    *D.42996 = end_bb;
    <D.42991>:
    D.42766 = cfg->real_offset;
    end_bb->real_offset = D.42766;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43000>; else goto <D.42997>;
    <D.43000>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.43001 = D.42090->opcode;
    D.43002 = D.43001 + 64981;
    D.43003 = D.43002 <= 9;
    D.43004 = D.43001 + 64874;
    D.43005 = D.43004 <= 9;
    D.43006 = D.43003 | D.43005;
    if (D.43006 != 0) goto <D.42998>; else goto <D.43007>;
    <D.43007>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42778 = D.42090->opcode;
    D.42779 = D.42778 + 64884;
    if (D.42779 <= 9) goto <D.42998>; else goto <D.42997>;
    <D.42998>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42780 = D.42090->data.op[1].many_blocks;
    D.42781 = D.42780 + 8;
    D.42782 = *D.42781;
    if (D.42782 == 0B) goto <D.43008>; else goto <D.42997>;
    <D.43008>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42780 = D.42090->data.op[1].many_blocks;
    D.42781 = D.42780 + 8;
    *D.42781 = end_bb;
    D.42089 = cfg->cbb;
    mono_link_bblock (cfg, D.42089, end_bb);
    goto <D.42999>;
    <D.42997>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 == 0B) goto <D.43009>; else goto <D.43011>;
    <D.43011>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.43012 = D.42090->opcode;
    D.43013 = D.43012 != 446;
    D.43014 = D.43012 != 763;
    D.43015 = D.43013 & D.43014;
    if (D.43015 != 0) goto <D.43016>; else goto <D.43010>;
    <D.43016>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.43017 = D.42090->opcode;
    D.43018 = D.43017 + 64981;
    D.43019 = D.43018 > 9;
    D.43020 = D.43017 + 64874;
    D.43021 = D.43020 > 9;
    D.43022 = D.43019 & D.43021;
    if (D.43022 != 0) goto <D.43023>; else goto <D.43010>;
    <D.43023>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42778 = D.42090->opcode;
    D.42779 = D.42778 + 64884;
    if (D.42779 > 9) goto <D.43009>; else goto <D.43010>;
    <D.43009>:
    D.42089 = cfg->cbb;
    mono_link_bblock (cfg, D.42089, end_bb);
    <D.43010>:
    <D.42999>:
    D.42089 = cfg->cbb;
    D.42089->next_bb = end_bb;
    cfg->cbb = end_bb;
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 428;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    ins->dreg = dreg;
    ins->sreg1 = dreg;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43024>; else goto <D.43025>;
    <D.43024>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.43026>;
    <D.43025>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.43026>:
    ins->type = 1;
    D.42237 = ins;
    return D.42237;
  }
  <D.42673>:
  <D.42670>:
  <D.42586>:
  D.42073 = cmethod->name;
  D.42582 = *D.42073;
  if (D.42582 != 103) goto <D.43027>; else goto <D.43028>;
  <D.43027>:
  D.42237 = 0B;
  return D.42237;
  <D.43028>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43032 = "get_Rank";
      D.43033 = MEM[(const unsigned char *)D.43032];
      D.43034 = (int) D.43033;
      D.43035 = *__s2;
      D.43036 = (int) D.43035;
      __result = D.43034 - D.43036;
      {
        D.43037 = __s2_len != 0;
        D.43038 = __result == 0;
        D.43039 = D.43037 & D.43038;
        if (D.43039 != 0) goto <D.43040>; else goto <D.43041>;
        <D.43040>:
        D.43042 = &MEM[(void *)"get_Rank" + 1B];
        D.43043 = *D.43042;
        D.43044 = (int) D.43043;
        D.43045 = __s2 + 1;
        D.43046 = *D.43045;
        D.43047 = (int) D.43046;
        __result = D.43044 - D.43047;
        D.43048 = __s2_len > 1;
        D.43038 = __result == 0;
        D.43049 = D.43048 & D.43038;
        if (D.43049 != 0) goto <D.43050>; else goto <D.43051>;
        <D.43050>:
        D.43052 = &MEM[(void *)"get_Rank" + 2B];
        D.43053 = *D.43052;
        D.43054 = (int) D.43053;
        D.43055 = __s2 + 2;
        D.43056 = *D.43055;
        D.43057 = (int) D.43056;
        __result = D.43054 - D.43057;
        D.43058 = __s2_len > 2;
        D.43038 = __result == 0;
        D.43059 = D.43058 & D.43038;
        if (D.43059 != 0) goto <D.43060>; else goto <D.43061>;
        <D.43060>:
        D.43062 = &MEM[(void *)"get_Rank" + 3B];
        D.43063 = *D.43062;
        D.43064 = (int) D.43063;
        D.43065 = __s2 + 3;
        D.43066 = *D.43065;
        D.43067 = (int) D.43066;
        __result = D.43064 - D.43067;
        <D.43061>:
        <D.43051>:
        <D.43041>:
      }
      D.26881 = __result;
    }
    iftmp.367 = -D.26881;
    goto <D.43068>;
    <D.43031>:
    D.42073 = cmethod->name;
    iftmp.367 = __builtin_strcmp (D.42073, "get_Rank");
    <D.43068>:
    D.26882 = iftmp.367;
  }
  if (D.26882 == 0) goto <D.43069>; else goto <D.43070>;
  <D.43069>:
  {
    int dreg;
    int vtable_reg;

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

      __ins_flags = 32;
      D.43073 = __ins_flags & 32;
      if (D.43073 != 0) goto <D.43074>; else goto <D.43075>;
      <D.43074>:
      D.42101 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.42102 = D.42101 & 64;
      if (D.42102 != 0) goto <D.43076>; else goto <D.43077>;
      <D.43076>:
      {
        struct MonoInst * inst;

        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.43078 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.43078;
        inst->prev = 0B;
        D.43079 = inst->prev;
        inst->next = D.43079;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.43080 = inst->sreg3;
        inst->sreg2 = D.43080;
        D.43081 = inst->sreg2;
        inst->sreg1 = D.43081;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->dreg = -1;
        D.42109 = *args;
        D.42110 = D.42109->dreg;
        inst->sreg1 = D.42110;
        inst->data.op[1].const_val = 0;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.43082>; else goto <D.43083>;
        <D.43082>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.43084>;
        <D.43083>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.43084>:
      }
      {
        struct MonoInst * inst;

        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.43085 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.43085;
        inst->prev = 0B;
        D.43086 = inst->prev;
        inst->next = D.43086;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.43087 = inst->sreg3;
        inst->sreg2 = D.43087;
        D.43088 = inst->sreg2;
        inst->sreg1 = D.43088;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->data.op[1].p = "NullReferenceException";
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.43089>; else goto <D.43090>;
        <D.43089>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.43091>;
        <D.43090>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.43091>:
      }
      goto <D.43092>;
      <D.43077>:
      <D.43092>:
      <D.43075>:
      D.42080 = cfg->mempool;
      inst = mono_mempool_alloc (D.42080, 80);
      inst->data.op[1].const_val = 0;
      D.43093 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.43093;
      inst->prev = 0B;
      D.43094 = inst->prev;
      inst->next = D.43094;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.43095 = inst->sreg3;
      inst->sreg2 = D.43095;
      D.43096 = inst->sreg2;
      inst->sreg1 = D.43096;
      D.42085 = cfg->ip;
      inst->cil_code = D.42085;
      inst->dreg = vtable_reg;
      D.42109 = *args;
      D.42110 = D.42109->dreg;
      inst->sreg1 = D.42110;
      inst->data.op[0].const_val = 0;
      inst->type = 1;
      D.43097 = (unsigned char) __ins_flags;
      inst->flags = D.43097;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      if (D.42090 != 0B) goto <D.43098>; else goto <D.43099>;
      <D.43098>:
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      D.42090->next = inst;
      D.42089 = cfg->cbb;
      D.42090 = D.42089->last_ins;
      inst->prev = D.42090;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      goto <D.43100>;
      <D.43099>:
      D.42089 = cfg->cbb;
      D.42089 = cfg->cbb;
      D.42089->last_ins = inst;
      D.42090 = D.42089->last_ins;
      D.42089->code = D.42090;
      <D.43100>:
    }
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 393;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    ins->dreg = dreg;
    ins->sreg1 = vtable_reg;
    ins->data.op[0].const_val = 42;
    ins->type = 1;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43101>; else goto <D.43102>;
    <D.43101>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.43103>;
    <D.43102>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.43103>:
    type_from_op (ins, 0B, 0B);
    D.42237 = ins;
    return D.42237;
  }
  <D.43070>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.42241 = "get_Length";
      D.42242 = MEM[(const unsigned char *)D.42241];
      D.42243 = (int) D.42242;
      D.43107 = *__s2;
      D.43108 = (int) D.43107;
      __result = D.42243 - D.43108;
      {
        D.43109 = __s2_len != 0;
        D.43110 = __result == 0;
        D.43111 = D.43109 & D.43110;
        if (D.43111 != 0) goto <D.43112>; else goto <D.43113>;
        <D.43112>:
        D.42251 = &MEM[(void *)"get_Length" + 1B];
        D.42252 = *D.42251;
        D.42253 = (int) D.42252;
        D.43114 = __s2 + 1;
        D.43115 = *D.43114;
        D.43116 = (int) D.43115;
        __result = D.42253 - D.43116;
        D.43117 = __s2_len > 1;
        D.43110 = __result == 0;
        D.43118 = D.43117 & D.43110;
        if (D.43118 != 0) goto <D.43119>; else goto <D.43120>;
        <D.43119>:
        D.42261 = &MEM[(void *)"get_Length" + 2B];
        D.42262 = *D.42261;
        D.42263 = (int) D.42262;
        D.43121 = __s2 + 2;
        D.43122 = *D.43121;
        D.43123 = (int) D.43122;
        __result = D.42263 - D.43123;
        D.43124 = __s2_len > 2;
        D.43110 = __result == 0;
        D.43125 = D.43124 & D.43110;
        if (D.43125 != 0) goto <D.43126>; else goto <D.43127>;
        <D.43126>:
        D.42271 = &MEM[(void *)"get_Length" + 3B];
        D.42272 = *D.42271;
        D.42273 = (int) D.42272;
        D.43128 = __s2 + 3;
        D.43129 = *D.43128;
        D.43130 = (int) D.43129;
        __result = D.42273 - D.43130;
        <D.43127>:
        <D.43120>:
        <D.43113>:
      }
      D.26896 = __result;
    }
    iftmp.368 = -D.26896;
    goto <D.43131>;
    <D.43106>:
    D.42073 = cmethod->name;
    iftmp.368 = __builtin_strcmp (D.42073, "get_Length");
    <D.43131>:
    D.26897 = iftmp.368;
  }
  if (D.26897 == 0) goto <D.43132>; else goto <D.43133>;
  <D.43132>:
  {
    int dreg;

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

      __ins_flags = 32;
      D.43135 = __ins_flags & 32;
      if (D.43135 != 0) goto <D.43136>; else goto <D.43137>;
      <D.43136>:
      D.42101 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.42102 = D.42101 & 64;
      if (D.42102 != 0) goto <D.43138>; else goto <D.43139>;
      <D.43138>:
      {
        struct MonoInst * inst;

        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.43140 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.43140;
        inst->prev = 0B;
        D.43141 = inst->prev;
        inst->next = D.43141;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.43142 = inst->sreg3;
        inst->sreg2 = D.43142;
        D.43143 = inst->sreg2;
        inst->sreg1 = D.43143;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->dreg = -1;
        D.42109 = *args;
        D.42110 = D.42109->dreg;
        inst->sreg1 = D.42110;
        inst->data.op[1].const_val = 0;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.43144>; else goto <D.43145>;
        <D.43144>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.43146>;
        <D.43145>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.43146>:
      }
      {
        struct MonoInst * inst;

        D.42080 = cfg->mempool;
        inst = mono_mempool_alloc (D.42080, 80);
        inst->data.op[1].const_val = 0;
        D.43147 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.43147;
        inst->prev = 0B;
        D.43148 = inst->prev;
        inst->next = D.43148;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.43149 = inst->sreg3;
        inst->sreg2 = D.43149;
        D.43150 = inst->sreg2;
        inst->sreg1 = D.43150;
        D.42085 = cfg->ip;
        inst->cil_code = D.42085;
        inst->data.op[1].p = "NullReferenceException";
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        if (D.42090 != 0B) goto <D.43151>; else goto <D.43152>;
        <D.43151>:
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        D.42090->next = inst;
        D.42089 = cfg->cbb;
        D.42090 = D.42089->last_ins;
        inst->prev = D.42090;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        goto <D.43153>;
        <D.43152>:
        D.42089 = cfg->cbb;
        D.42089 = cfg->cbb;
        D.42089->last_ins = inst;
        D.42090 = D.42089->last_ins;
        D.42089->code = D.42090;
        <D.43153>:
      }
      goto <D.43154>;
      <D.43139>:
      <D.43154>:
      <D.43137>:
      D.42080 = cfg->mempool;
      ins = mono_mempool_alloc (D.42080, 80);
      ins->data.op[1].const_val = 0;
      D.42225 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.42225;
      ins->prev = 0B;
      D.42226 = ins->prev;
      ins->next = D.42226;
      ins->opcode = 396;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.42227 = ins->sreg3;
      ins->sreg2 = D.42227;
      D.42228 = ins->sreg2;
      ins->sreg1 = D.42228;
      D.42085 = cfg->ip;
      ins->cil_code = D.42085;
      ins->dreg = dreg;
      D.42109 = *args;
      D.42110 = D.42109->dreg;
      ins->sreg1 = D.42110;
      ins->data.op[0].const_val = 24;
      ins->type = 1;
      D.43155 = (unsigned char) __ins_flags;
      ins->flags = D.43155;
    }
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43156>; else goto <D.43157>;
    <D.43156>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.43158>;
    <D.43157>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.43158>:
    type_from_op (ins, 0B, 0B);
    D.42237 = ins;
    return D.42237;
  }
  <D.43133>:
  D.42237 = 0B;
  return D.42237;
  <D.42535>:
  D.42029 = cmethod->klass;
  runtime_helpers_class.355 = runtime_helpers_class;
  if (D.42029 == runtime_helpers_class.355) goto <D.43159>; else goto <D.43160>;
  <D.43159>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43164 = "get_OffsetToStringData";
      D.43165 = MEM[(const unsigned char *)D.43164];
      D.43166 = (int) D.43165;
      D.43167 = *__s2;
      D.43168 = (int) D.43167;
      __result = D.43166 - D.43168;
      {
        D.43169 = __s2_len != 0;
        D.43170 = __result == 0;
        D.43171 = D.43169 & D.43170;
        if (D.43171 != 0) goto <D.43172>; else goto <D.43173>;
        <D.43172>:
        D.43174 = &MEM[(void *)"get_OffsetToStringData" + 1B];
        D.43175 = *D.43174;
        D.43176 = (int) D.43175;
        D.43177 = __s2 + 1;
        D.43178 = *D.43177;
        D.43179 = (int) D.43178;
        __result = D.43176 - D.43179;
        D.43180 = __s2_len > 1;
        D.43170 = __result == 0;
        D.43181 = D.43180 & D.43170;
        if (D.43181 != 0) goto <D.43182>; else goto <D.43183>;
        <D.43182>:
        D.43184 = &MEM[(void *)"get_OffsetToStringData" + 2B];
        D.43185 = *D.43184;
        D.43186 = (int) D.43185;
        D.43187 = __s2 + 2;
        D.43188 = *D.43187;
        D.43189 = (int) D.43188;
        __result = D.43186 - D.43189;
        D.43190 = __s2_len > 2;
        D.43170 = __result == 0;
        D.43191 = D.43190 & D.43170;
        if (D.43191 != 0) goto <D.43192>; else goto <D.43193>;
        <D.43192>:
        D.43194 = &MEM[(void *)"get_OffsetToStringData" + 3B];
        D.43195 = *D.43194;
        D.43196 = (int) D.43195;
        D.43197 = __s2 + 3;
        D.43198 = *D.43197;
        D.43199 = (int) D.43198;
        __result = D.43196 - D.43199;
        <D.43193>:
        <D.43183>:
        <D.43173>:
      }
      D.26909 = __result;
    }
    iftmp.369 = -D.26909;
    goto <D.43200>;
    <D.43163>:
    D.42073 = cmethod->name;
    iftmp.369 = __builtin_strcmp (D.42073, "get_OffsetToStringData");
    <D.43200>:
    D.26910 = iftmp.369;
  }
  if (D.26910 == 0) goto <D.43201>; else goto <D.43202>;
  <D.43201>:
  D.42080 = cfg->mempool;
  ins = mono_mempool_alloc (D.42080, 80);
  ins->data.op[1].const_val = 0;
  D.42225 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42225;
  ins->prev = 0B;
  D.42226 = ins->prev;
  ins->next = D.42226;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42227 = ins->sreg3;
  ins->sreg2 = D.42227;
  D.42228 = ins->sreg2;
  ins->sreg1 = D.42228;
  D.42085 = cfg->ip;
  ins->cil_code = D.42085;
  ins->data.op[0].const_val = 20;
  ins->type = 1;
  D.43203 = alloc_dreg (cfg, 1);
  D.43204 = (int) D.43203;
  ins->dreg = D.43204;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  if (D.42090 != 0B) goto <D.43205>; else goto <D.43206>;
  <D.43205>:
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  D.42090->next = ins;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  ins->prev = D.42090;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  goto <D.43207>;
  <D.43206>:
  D.42089 = cfg->cbb;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  D.42090 = D.42089->last_ins;
  D.42089->code = D.42090;
  <D.43207>:
  D.42237 = ins;
  return D.42237;
  <D.43202>:
  D.42237 = 0B;
  return D.42237;
  <D.43160>:
  D.42029 = cmethod->klass;
  D.43208 = mono_defaults.thread_class;
  if (D.42029 == D.43208) goto <D.43209>; else goto <D.43210>;
  <D.43209>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43214 = "SpinWait_nop";
      D.43215 = MEM[(const unsigned char *)D.43214];
      D.43216 = (int) D.43215;
      D.43217 = *__s2;
      D.43218 = (int) D.43217;
      __result = D.43216 - D.43218;
      {
        D.43219 = __s2_len != 0;
        D.43220 = __result == 0;
        D.43221 = D.43219 & D.43220;
        if (D.43221 != 0) goto <D.43222>; else goto <D.43223>;
        <D.43222>:
        D.43224 = &MEM[(void *)"SpinWait_nop" + 1B];
        D.43225 = *D.43224;
        D.43226 = (int) D.43225;
        D.43227 = __s2 + 1;
        D.43228 = *D.43227;
        D.43229 = (int) D.43228;
        __result = D.43226 - D.43229;
        D.43230 = __s2_len > 1;
        D.43220 = __result == 0;
        D.43231 = D.43230 & D.43220;
        if (D.43231 != 0) goto <D.43232>; else goto <D.43233>;
        <D.43232>:
        D.43234 = &MEM[(void *)"SpinWait_nop" + 2B];
        D.43235 = *D.43234;
        D.43236 = (int) D.43235;
        D.43237 = __s2 + 2;
        D.43238 = *D.43237;
        D.43239 = (int) D.43238;
        __result = D.43236 - D.43239;
        D.43240 = __s2_len > 2;
        D.43220 = __result == 0;
        D.43241 = D.43240 & D.43220;
        if (D.43241 != 0) goto <D.43242>; else goto <D.43243>;
        <D.43242>:
        D.43244 = &MEM[(void *)"SpinWait_nop" + 3B];
        D.43245 = *D.43244;
        D.43246 = (int) D.43245;
        D.43247 = __s2 + 3;
        D.43248 = *D.43247;
        D.43249 = (int) D.43248;
        __result = D.43246 - D.43249;
        <D.43243>:
        <D.43233>:
        <D.43223>:
      }
      D.26918 = __result;
    }
    iftmp.370 = -D.26918;
    goto <D.43250>;
    <D.43213>:
    D.42073 = cmethod->name;
    iftmp.370 = __builtin_strcmp (D.42073, "SpinWait_nop");
    <D.43250>:
    D.26919 = iftmp.370;
  }
  if (D.26919 == 0) goto <D.43251>; else goto <D.43252>;
  <D.43251>:
  D.42080 = cfg->mempool;
  ins = mono_mempool_alloc (D.42080, 80);
  ins->data.op[1].const_val = 0;
  D.42225 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42225;
  ins->prev = 0B;
  D.42226 = ins->prev;
  ins->next = D.42226;
  ins->opcode = 318;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42227 = ins->sreg3;
  ins->sreg2 = D.42227;
  D.42228 = ins->sreg2;
  ins->sreg1 = D.42228;
  D.42085 = cfg->ip;
  ins->cil_code = D.42085;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  if (D.42090 != 0B) goto <D.43253>; else goto <D.43254>;
  <D.43253>:
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  D.42090->next = ins;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  ins->prev = D.42090;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  goto <D.43255>;
  <D.43254>:
  D.42089 = cfg->cbb;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  D.42090 = D.42089->last_ins;
  D.42089->code = D.42090;
  <D.43255>:
  D.42237 = ins;
  return D.42237;
  <D.43252>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43259 = "MemoryBarrier";
      D.43260 = MEM[(const unsigned char *)D.43259];
      D.43261 = (int) D.43260;
      D.43262 = *__s2;
      D.43263 = (int) D.43262;
      __result = D.43261 - D.43263;
      {
        D.43264 = __s2_len != 0;
        D.43265 = __result == 0;
        D.43266 = D.43264 & D.43265;
        if (D.43266 != 0) goto <D.43267>; else goto <D.43268>;
        <D.43267>:
        D.43269 = &MEM[(void *)"MemoryBarrier" + 1B];
        D.43270 = *D.43269;
        D.43271 = (int) D.43270;
        D.43272 = __s2 + 1;
        D.43273 = *D.43272;
        D.43274 = (int) D.43273;
        __result = D.43271 - D.43274;
        D.43275 = __s2_len > 1;
        D.43265 = __result == 0;
        D.43276 = D.43275 & D.43265;
        if (D.43276 != 0) goto <D.43277>; else goto <D.43278>;
        <D.43277>:
        D.43279 = &MEM[(void *)"MemoryBarrier" + 2B];
        D.43280 = *D.43279;
        D.43281 = (int) D.43280;
        D.43282 = __s2 + 2;
        D.43283 = *D.43282;
        D.43284 = (int) D.43283;
        __result = D.43281 - D.43284;
        D.43285 = __s2_len > 2;
        D.43265 = __result == 0;
        D.43286 = D.43285 & D.43265;
        if (D.43286 != 0) goto <D.43287>; else goto <D.43288>;
        <D.43287>:
        D.43289 = &MEM[(void *)"MemoryBarrier" + 3B];
        D.43290 = *D.43289;
        D.43291 = (int) D.43290;
        D.43292 = __s2 + 3;
        D.43293 = *D.43292;
        D.43294 = (int) D.43293;
        __result = D.43291 - D.43294;
        <D.43288>:
        <D.43278>:
        <D.43268>:
      }
      D.26927 = __result;
    }
    iftmp.371 = -D.26927;
    goto <D.43295>;
    <D.43258>:
    D.42073 = cmethod->name;
    iftmp.371 = __builtin_strcmp (D.42073, "MemoryBarrier");
    <D.43295>:
    D.26928 = iftmp.371;
  }
  if (D.26928 == 0) goto <D.43296>; else goto <D.43297>;
  <D.43296>:
  D.42237 = emit_memory_barrier (cfg, 4);
  return D.42237;
  <D.43297>:
  goto <D.43298>;
  <D.43210>:
  D.42029 = cmethod->klass;
  D.43299 = mono_defaults.monitor_class;
  if (D.42029 == D.43299) goto <D.43300>; else goto <D.43301>;
  <D.43300>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43305 = "Enter";
      D.43306 = MEM[(const unsigned char *)D.43305];
      D.43307 = (int) D.43306;
      D.43308 = *__s2;
      D.43309 = (int) D.43308;
      __result = D.43307 - D.43309;
      {
        D.43310 = __s2_len != 0;
        D.43311 = __result == 0;
        D.43312 = D.43310 & D.43311;
        if (D.43312 != 0) goto <D.43313>; else goto <D.43314>;
        <D.43313>:
        D.43315 = &MEM[(void *)"Enter" + 1B];
        D.43316 = *D.43315;
        D.43317 = (int) D.43316;
        D.43318 = __s2 + 1;
        D.43319 = *D.43318;
        D.43320 = (int) D.43319;
        __result = D.43317 - D.43320;
        D.43321 = __s2_len > 1;
        D.43311 = __result == 0;
        D.43322 = D.43321 & D.43311;
        if (D.43322 != 0) goto <D.43323>; else goto <D.43324>;
        <D.43323>:
        D.43325 = &MEM[(void *)"Enter" + 2B];
        D.43326 = *D.43325;
        D.43327 = (int) D.43326;
        D.43328 = __s2 + 2;
        D.43329 = *D.43328;
        D.43330 = (int) D.43329;
        __result = D.43327 - D.43330;
        D.43331 = __s2_len > 2;
        D.43311 = __result == 0;
        D.43332 = D.43331 & D.43311;
        if (D.43332 != 0) goto <D.43333>; else goto <D.43334>;
        <D.43333>:
        D.43335 = &MEM[(void *)"Enter" + 3B];
        D.43336 = *D.43335;
        D.43337 = (int) D.43336;
        D.43338 = __s2 + 3;
        D.43339 = *D.43338;
        D.43340 = (int) D.43339;
        __result = D.43337 - D.43340;
        <D.43334>:
        <D.43324>:
        <D.43314>:
      }
      D.26936 = __result;
    }
    iftmp.372 = -D.26936;
    goto <D.43341>;
    <D.43304>:
    D.42073 = cmethod->name;
    iftmp.372 = __builtin_strcmp (D.42073, "Enter");
    <D.43341>:
    D.26937 = iftmp.372;
  }
  if (D.26937 == 0) goto <D.43342>; else goto <D.43343>;
  <D.43342>:
  D.43344 = fsig->param_count;
  if (D.43344 == 2) goto <D.43345>; else goto <D.43346>;
  <D.43345>:
  {
    struct MonoMethod * fast_method;

    fast_method = 0B;
    D.43347 = cfg->method;
    D.43348 = BIT_FIELD_REF <*D.43347, 8, 256>;
    D.43349 = D.43348 & 124;
    if (D.43349 == 100) goto <D.43350>; else goto <D.43351>;
    <D.43350>:
    {
      size_t __s1_len;
      size_t __s2_len;

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

        D.43347 = cfg->method;
        __s2 = D.43347->name;
        D.43355 = "FastMonitorEnterV4";
        D.43356 = MEM[(const unsigned char *)D.43355];
        D.43357 = (int) D.43356;
        D.43358 = *__s2;
        D.43359 = (int) D.43358;
        __result = D.43357 - D.43359;
        {
          D.43360 = __s2_len != 0;
          D.43361 = __result == 0;
          D.43362 = D.43360 & D.43361;
          if (D.43362 != 0) goto <D.43363>; else goto <D.43364>;
          <D.43363>:
          D.43365 = &MEM[(void *)"FastMonitorEnterV4" + 1B];
          D.43366 = *D.43365;
          D.43367 = (int) D.43366;
          D.43368 = __s2 + 1;
          D.43369 = *D.43368;
          D.43370 = (int) D.43369;
          __result = D.43367 - D.43370;
          D.43371 = __s2_len > 1;
          D.43361 = __result == 0;
          D.43372 = D.43371 & D.43361;
          if (D.43372 != 0) goto <D.43373>; else goto <D.43374>;
          <D.43373>:
          D.43375 = &MEM[(void *)"FastMonitorEnterV4" + 2B];
          D.43376 = *D.43375;
          D.43377 = (int) D.43376;
          D.43378 = __s2 + 2;
          D.43379 = *D.43378;
          D.43380 = (int) D.43379;
          __result = D.43377 - D.43380;
          D.43381 = __s2_len > 2;
          D.43361 = __result == 0;
          D.43382 = D.43381 & D.43361;
          if (D.43382 != 0) goto <D.43383>; else goto <D.43384>;
          <D.43383>:
          D.43385 = &MEM[(void *)"FastMonitorEnterV4" + 3B];
          D.43386 = *D.43385;
          D.43387 = (int) D.43386;
          D.43388 = __s2 + 3;
          D.43389 = *D.43388;
          D.43390 = (int) D.43389;
          __result = D.43387 - D.43390;
          <D.43384>:
          <D.43374>:
          <D.43364>:
        }
        D.26946 = __result;
      }
      iftmp.373 = -D.26946;
      goto <D.43391>;
      <D.43354>:
      D.43347 = cfg->method;
      D.43392 = D.43347->name;
      iftmp.373 = __builtin_strcmp (D.43392, "FastMonitorEnterV4");
      <D.43391>:
      D.26947 = iftmp.373;
    }
    if (D.26947 == 0) goto <D.43393>; else goto <D.43394>;
    <D.43393>:
    D.42237 = 0B;
    return D.42237;
    <D.43394>:
    <D.43351>:
    fast_method = mono_monitor_get_fast_path (cmethod);
    if (fast_method == 0B) goto <D.43395>; else goto <D.43396>;
    <D.43395>:
    D.42237 = 0B;
    return D.42237;
    <D.43396>:
    D.42237 = mono_emit_method_call (cfg, fast_method, args, 0B);
    return D.42237;
  }
  <D.43346>:
  <D.43343>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43305 = "Enter";
      D.43306 = MEM[(const unsigned char *)D.43305];
      D.43307 = (int) D.43306;
      D.43401 = *__s2;
      D.43402 = (int) D.43401;
      __result = D.43307 - D.43402;
      {
        D.43403 = __s2_len != 0;
        D.43404 = __result == 0;
        D.43405 = D.43403 & D.43404;
        if (D.43405 != 0) goto <D.43406>; else goto <D.43407>;
        <D.43406>:
        D.43315 = &MEM[(void *)"Enter" + 1B];
        D.43316 = *D.43315;
        D.43317 = (int) D.43316;
        D.43408 = __s2 + 1;
        D.43409 = *D.43408;
        D.43410 = (int) D.43409;
        __result = D.43317 - D.43410;
        D.43411 = __s2_len > 1;
        D.43404 = __result == 0;
        D.43412 = D.43411 & D.43404;
        if (D.43412 != 0) goto <D.43413>; else goto <D.43414>;
        <D.43413>:
        D.43325 = &MEM[(void *)"Enter" + 2B];
        D.43326 = *D.43325;
        D.43327 = (int) D.43326;
        D.43415 = __s2 + 2;
        D.43416 = *D.43415;
        D.43417 = (int) D.43416;
        __result = D.43327 - D.43417;
        D.43418 = __s2_len > 2;
        D.43404 = __result == 0;
        D.43419 = D.43418 & D.43404;
        if (D.43419 != 0) goto <D.43420>; else goto <D.43421>;
        <D.43420>:
        D.43335 = &MEM[(void *)"Enter" + 3B];
        D.43336 = *D.43335;
        D.43337 = (int) D.43336;
        D.43422 = __s2 + 3;
        D.43423 = *D.43422;
        D.43424 = (int) D.43423;
        __result = D.43337 - D.43424;
        <D.43421>:
        <D.43414>:
        <D.43407>:
      }
      D.26955 = __result;
    }
    iftmp.374 = -D.26955;
    goto <D.43425>;
    <D.43400>:
    D.42073 = cmethod->name;
    iftmp.374 = __builtin_strcmp (D.42073, "Enter");
    <D.43425>:
    D.26956 = iftmp.374;
  }
  if (D.26956 == 0) goto <D.43426>; else goto <D.43397>;
  <D.43426>:
  D.43344 = fsig->param_count;
  if (D.43344 == 1) goto <D.43427>; else goto <D.43397>;
  <D.43427>:
  {
    struct MonoCallInst * call;

    if (0 != 0) goto <D.43428>; else goto <D.43429>;
    <D.43428>:
    helper_sig_monitor_enter_exit_trampoline_llvm.375 = helper_sig_monitor_enter_exit_trampoline_llvm;
    call = mono_emit_abs_call (cfg, 37, 0B, helper_sig_monitor_enter_exit_trampoline_llvm.375, args);
    goto <D.43431>;
    <D.43429>:
    helper_sig_monitor_enter_exit_trampoline.376 = helper_sig_monitor_enter_exit_trampoline;
    call = mono_emit_abs_call (cfg, 37, 0B, helper_sig_monitor_enter_exit_trampoline.376, 0B);
    D.42109 = *args;
    D.42110 = D.42109->dreg;
    mono_call_inst_add_outarg_reg (cfg, call, D.42110, 7, 0);
    <D.43431>:
    D.42237 = call;
    return D.42237;
  }
  <D.43397>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43436 = "Exit";
      D.43437 = MEM[(const unsigned char *)D.43436];
      D.43438 = (int) D.43437;
      D.43439 = *__s2;
      D.43440 = (int) D.43439;
      __result = D.43438 - D.43440;
      {
        D.43441 = __s2_len != 0;
        D.43442 = __result == 0;
        D.43443 = D.43441 & D.43442;
        if (D.43443 != 0) goto <D.43444>; else goto <D.43445>;
        <D.43444>:
        D.43446 = &MEM[(void *)"Exit" + 1B];
        D.43447 = *D.43446;
        D.43448 = (int) D.43447;
        D.43449 = __s2 + 1;
        D.43450 = *D.43449;
        D.43451 = (int) D.43450;
        __result = D.43448 - D.43451;
        D.43452 = __s2_len > 1;
        D.43442 = __result == 0;
        D.43453 = D.43452 & D.43442;
        if (D.43453 != 0) goto <D.43454>; else goto <D.43455>;
        <D.43454>:
        D.43456 = &MEM[(void *)"Exit" + 2B];
        D.43457 = *D.43456;
        D.43458 = (int) D.43457;
        D.43459 = __s2 + 2;
        D.43460 = *D.43459;
        D.43461 = (int) D.43460;
        __result = D.43458 - D.43461;
        D.43462 = __s2_len > 2;
        D.43442 = __result == 0;
        D.43463 = D.43462 & D.43442;
        if (D.43463 != 0) goto <D.43464>; else goto <D.43465>;
        <D.43464>:
        D.43466 = &MEM[(void *)"Exit" + 3B];
        D.43467 = *D.43466;
        D.43468 = (int) D.43467;
        D.43469 = __s2 + 3;
        D.43470 = *D.43469;
        D.43471 = (int) D.43470;
        __result = D.43468 - D.43471;
        <D.43465>:
        <D.43455>:
        <D.43445>:
      }
      D.26965 = __result;
    }
    iftmp.377 = -D.26965;
    goto <D.43472>;
    <D.43435>:
    D.42073 = cmethod->name;
    iftmp.377 = __builtin_strcmp (D.42073, "Exit");
    <D.43472>:
    D.26966 = iftmp.377;
  }
  if (D.26966 == 0) goto <D.43473>; else goto <D.43474>;
  <D.43473>:
  {
    struct MonoCallInst * call;

    if (0 != 0) goto <D.43475>; else goto <D.43476>;
    <D.43475>:
    helper_sig_monitor_enter_exit_trampoline_llvm.375 = helper_sig_monitor_enter_exit_trampoline_llvm;
    call = mono_emit_abs_call (cfg, 38, 0B, helper_sig_monitor_enter_exit_trampoline_llvm.375, args);
    goto <D.43477>;
    <D.43476>:
    helper_sig_monitor_enter_exit_trampoline.376 = helper_sig_monitor_enter_exit_trampoline;
    call = mono_emit_abs_call (cfg, 38, 0B, helper_sig_monitor_enter_exit_trampoline.376, 0B);
    D.42109 = *args;
    D.42110 = D.42109->dreg;
    mono_call_inst_add_outarg_reg (cfg, call, D.42110, 7, 0);
    <D.43477>:
    D.42237 = call;
    return D.42237;
  }
  <D.43474>:
  goto <D.43478>;
  <D.43301>:
  D.42029 = cmethod->klass;
  D.43481 = D.42029->image;
  D.42027 = mono_defaults.corlib;
  if (D.43481 == D.42027) goto <D.43482>; else goto <D.43479>;
  <D.43482>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.42029 = cmethod->klass;
      __s2 = D.42029->name_space;
      D.43486 = "System.Threading";
      D.43487 = MEM[(const unsigned char *)D.43486];
      D.43488 = (int) D.43487;
      D.43489 = *__s2;
      D.43490 = (int) D.43489;
      __result = D.43488 - D.43490;
      {
        D.43491 = __s2_len != 0;
        D.43492 = __result == 0;
        D.43493 = D.43491 & D.43492;
        if (D.43493 != 0) goto <D.43494>; else goto <D.43495>;
        <D.43494>:
        D.43496 = &MEM[(void *)"System.Threading" + 1B];
        D.43497 = *D.43496;
        D.43498 = (int) D.43497;
        D.43499 = __s2 + 1;
        D.43500 = *D.43499;
        D.43501 = (int) D.43500;
        __result = D.43498 - D.43501;
        D.43502 = __s2_len > 1;
        D.43492 = __result == 0;
        D.43503 = D.43502 & D.43492;
        if (D.43503 != 0) goto <D.43504>; else goto <D.43505>;
        <D.43504>:
        D.43506 = &MEM[(void *)"System.Threading" + 2B];
        D.43507 = *D.43506;
        D.43508 = (int) D.43507;
        D.43509 = __s2 + 2;
        D.43510 = *D.43509;
        D.43511 = (int) D.43510;
        __result = D.43508 - D.43511;
        D.43512 = __s2_len > 2;
        D.43492 = __result == 0;
        D.43513 = D.43512 & D.43492;
        if (D.43513 != 0) goto <D.43514>; else goto <D.43515>;
        <D.43514>:
        D.43516 = &MEM[(void *)"System.Threading" + 3B];
        D.43517 = *D.43516;
        D.43518 = (int) D.43517;
        D.43519 = __s2 + 3;
        D.43520 = *D.43519;
        D.43521 = (int) D.43520;
        __result = D.43518 - D.43521;
        <D.43515>:
        <D.43505>:
        <D.43495>:
      }
      D.26975 = __result;
    }
    iftmp.378 = -D.26975;
    goto <D.43522>;
    <D.43485>:
    D.42029 = cmethod->klass;
    D.43523 = D.42029->name_space;
    iftmp.378 = __builtin_strcmp (D.43523, "System.Threading");
    <D.43522>:
    D.26976 = iftmp.378;
  }
  if (D.26976 == 0) goto <D.43524>; else goto <D.43479>;
  <D.43524>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.42029 = cmethod->klass;
      __s2 = D.42029->name;
      D.43528 = "Interlocked";
      D.43529 = MEM[(const unsigned char *)D.43528];
      D.43530 = (int) D.43529;
      D.43531 = *__s2;
      D.43532 = (int) D.43531;
      __result = D.43530 - D.43532;
      {
        D.43533 = __s2_len != 0;
        D.43534 = __result == 0;
        D.43535 = D.43533 & D.43534;
        if (D.43535 != 0) goto <D.43536>; else goto <D.43537>;
        <D.43536>:
        D.43538 = &MEM[(void *)"Interlocked" + 1B];
        D.43539 = *D.43538;
        D.43540 = (int) D.43539;
        D.43541 = __s2 + 1;
        D.43542 = *D.43541;
        D.43543 = (int) D.43542;
        __result = D.43540 - D.43543;
        D.43544 = __s2_len > 1;
        D.43534 = __result == 0;
        D.43545 = D.43544 & D.43534;
        if (D.43545 != 0) goto <D.43546>; else goto <D.43547>;
        <D.43546>:
        D.43548 = &MEM[(void *)"Interlocked" + 2B];
        D.43549 = *D.43548;
        D.43550 = (int) D.43549;
        D.43551 = __s2 + 2;
        D.43552 = *D.43551;
        D.43553 = (int) D.43552;
        __result = D.43550 - D.43553;
        D.43554 = __s2_len > 2;
        D.43534 = __result == 0;
        D.43555 = D.43554 & D.43534;
        if (D.43555 != 0) goto <D.43556>; else goto <D.43557>;
        <D.43556>:
        D.43558 = &MEM[(void *)"Interlocked" + 3B];
        D.43559 = *D.43558;
        D.43560 = (int) D.43559;
        D.43561 = __s2 + 3;
        D.43562 = *D.43561;
        D.43563 = (int) D.43562;
        __result = D.43560 - D.43563;
        <D.43557>:
        <D.43547>:
        <D.43537>:
      }
      D.26984 = __result;
    }
    iftmp.379 = -D.26984;
    goto <D.43564>;
    <D.43527>:
    D.42029 = cmethod->klass;
    D.43565 = D.42029->name;
    iftmp.379 = __builtin_strcmp (D.43565, "Interlocked");
    <D.43564>:
    D.26985 = iftmp.379;
  }
  if (D.26985 == 0) goto <D.43566>; else goto <D.43479>;
  <D.43566>:
  ins = 0B;
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43570 = "Read";
      D.43571 = MEM[(const unsigned char *)D.43570];
      D.43572 = (int) D.43571;
      D.43573 = *__s2;
      D.43574 = (int) D.43573;
      __result = D.43572 - D.43574;
      {
        D.43575 = __s2_len != 0;
        D.43576 = __result == 0;
        D.43577 = D.43575 & D.43576;
        if (D.43577 != 0) goto <D.43578>; else goto <D.43579>;
        <D.43578>:
        D.43580 = &MEM[(void *)"Read" + 1B];
        D.43581 = *D.43580;
        D.43582 = (int) D.43581;
        D.43583 = __s2 + 1;
        D.43584 = *D.43583;
        D.43585 = (int) D.43584;
        __result = D.43582 - D.43585;
        D.43586 = __s2_len > 1;
        D.43576 = __result == 0;
        D.43587 = D.43586 & D.43576;
        if (D.43587 != 0) goto <D.43588>; else goto <D.43589>;
        <D.43588>:
        D.43590 = &MEM[(void *)"Read" + 2B];
        D.43591 = *D.43590;
        D.43592 = (int) D.43591;
        D.43593 = __s2 + 2;
        D.43594 = *D.43593;
        D.43595 = (int) D.43594;
        __result = D.43592 - D.43595;
        D.43596 = __s2_len > 2;
        D.43576 = __result == 0;
        D.43597 = D.43596 & D.43576;
        if (D.43597 != 0) goto <D.43598>; else goto <D.43599>;
        <D.43598>:
        D.43600 = &MEM[(void *)"Read" + 3B];
        D.43601 = *D.43600;
        D.43602 = (int) D.43601;
        D.43603 = __s2 + 3;
        D.43604 = *D.43603;
        D.43605 = (int) D.43604;
        __result = D.43602 - D.43605;
        <D.43599>:
        <D.43589>:
        <D.43579>:
      }
      D.26993 = __result;
    }
    iftmp.380 = -D.26993;
    goto <D.43606>;
    <D.43569>:
    D.42073 = cmethod->name;
    iftmp.380 = __builtin_strcmp (D.42073, "Read");
    <D.43606>:
    D.26994 = iftmp.380;
  }
  if (D.26994 == 0) goto <D.43607>; else goto <D.43608>;
  <D.43607>:
  D.43609 = fsig->params[0];
  D.43610 = D.43609->type;
  if (D.43610 == 10) goto <D.43611>; else goto <D.43612>;
  <D.43611>:
  D.42080 = cfg->mempool;
  ins = mono_mempool_alloc (D.42080, 80);
  ins->data.op[1].const_val = 0;
  D.42225 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42225;
  ins->prev = 0B;
  D.42226 = ins->prev;
  ins->next = D.42226;
  ins->opcode = 398;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42227 = ins->sreg3;
  ins->sreg2 = D.42227;
  D.42228 = ins->sreg2;
  ins->sreg1 = D.42228;
  D.42085 = cfg->ip;
  ins->cil_code = D.42085;
  D.43613 = mono_alloc_preg (cfg);
  D.43614 = (int) D.43613;
  ins->dreg = D.43614;
  D.42109 = *args;
  D.42110 = D.42109->dreg;
  ins->sreg1 = D.42110;
  ins->data.op[0].const_val = 0;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  if (D.42090 != 0B) goto <D.43615>; else goto <D.43616>;
  <D.43615>:
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  D.42090->next = ins;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  ins->prev = D.42090;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  goto <D.43617>;
  <D.43616>:
  D.42089 = cfg->cbb;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  D.42090 = D.42089->last_ins;
  D.42089->code = D.42090;
  <D.43617>:
  <D.43612>:
  <D.43608>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43621 = "Increment";
      D.43622 = MEM[(const unsigned char *)D.43621];
      D.43623 = (int) D.43622;
      D.43624 = *__s2;
      D.43625 = (int) D.43624;
      __result = D.43623 - D.43625;
      {
        D.43626 = __s2_len != 0;
        D.43627 = __result == 0;
        D.43628 = D.43626 & D.43627;
        if (D.43628 != 0) goto <D.43629>; else goto <D.43630>;
        <D.43629>:
        D.43631 = &MEM[(void *)"Increment" + 1B];
        D.43632 = *D.43631;
        D.43633 = (int) D.43632;
        D.43634 = __s2 + 1;
        D.43635 = *D.43634;
        D.43636 = (int) D.43635;
        __result = D.43633 - D.43636;
        D.43637 = __s2_len > 1;
        D.43627 = __result == 0;
        D.43638 = D.43637 & D.43627;
        if (D.43638 != 0) goto <D.43639>; else goto <D.43640>;
        <D.43639>:
        D.43641 = &MEM[(void *)"Increment" + 2B];
        D.43642 = *D.43641;
        D.43643 = (int) D.43642;
        D.43644 = __s2 + 2;
        D.43645 = *D.43644;
        D.43646 = (int) D.43645;
        __result = D.43643 - D.43646;
        D.43647 = __s2_len > 2;
        D.43627 = __result == 0;
        D.43648 = D.43647 & D.43627;
        if (D.43648 != 0) goto <D.43649>; else goto <D.43650>;
        <D.43649>:
        D.43651 = &MEM[(void *)"Increment" + 3B];
        D.43652 = *D.43651;
        D.43653 = (int) D.43652;
        D.43654 = __s2 + 3;
        D.43655 = *D.43654;
        D.43656 = (int) D.43655;
        __result = D.43653 - D.43656;
        <D.43650>:
        <D.43640>:
        <D.43630>:
      }
      D.27002 = __result;
    }
    iftmp.381 = -D.27002;
    goto <D.43657>;
    <D.43620>:
    D.42073 = cmethod->name;
    iftmp.381 = __builtin_strcmp (D.42073, "Increment");
    <D.43657>:
    D.27003 = iftmp.381;
  }
  if (D.27003 == 0) goto <D.43658>; else goto <D.43659>;
  <D.43658>:
  {
    struct MonoInst * ins_iconst;
    guint32 opcode;

    opcode = 0;
    D.43609 = fsig->params[0];
    D.43610 = D.43609->type;
    if (D.43610 == 8) goto <D.43660>; else goto <D.43661>;
    <D.43660>:
    opcode = 966;
    cfg->has_atomic_add_new_i4 = 1;
    goto <D.43662>;
    <D.43661>:
    D.43609 = fsig->params[0];
    D.43610 = D.43609->type;
    if (D.43610 == 10) goto <D.43663>; else goto <D.43664>;
    <D.43663>:
    opcode = 971;
    <D.43664>:
    <D.43662>:
    if (opcode != 0) goto <D.43665>; else goto <D.43666>;
    <D.43665>:
    D.42080 = cfg->mempool;
    ins_iconst = mono_mempool_alloc (D.42080, 80);
    ins_iconst->data.op[1].const_val = 0;
    D.43667 = ins_iconst->data.op[1].const_val;
    ins_iconst->data.op[0].const_val = D.43667;
    ins_iconst->prev = 0B;
    D.43668 = ins_iconst->prev;
    ins_iconst->next = D.43668;
    ins_iconst->opcode = 362;
    ins_iconst->flags = 0;
    ins_iconst->type = 0;
    ins_iconst->dreg = -1;
    ins_iconst->sreg3 = -1;
    D.43669 = ins_iconst->sreg3;
    ins_iconst->sreg2 = D.43669;
    D.43670 = ins_iconst->sreg2;
    ins_iconst->sreg1 = D.43670;
    D.42085 = cfg->ip;
    ins_iconst->cil_code = D.42085;
    ins_iconst->data.op[0].const_val = 1;
    D.43671 = mono_alloc_ireg (cfg);
    D.43672 = (int) D.43671;
    ins_iconst->dreg = D.43672;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43673>; else goto <D.43674>;
    <D.43673>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins_iconst;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins_iconst->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins_iconst;
    goto <D.43675>;
    <D.43674>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins_iconst;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.43675>:
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    D.43676 = (short unsigned int) opcode;
    ins->opcode = D.43676;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    D.43677 = mono_alloc_ireg (cfg);
    D.43678 = (int) D.43677;
    ins->dreg = D.43678;
    D.42109 = *args;
    D.42110 = D.42109->dreg;
    ins->sreg1 = D.42110;
    ins->data.op[0].const_val = 0;
    D.43679 = ins_iconst->dreg;
    ins->sreg2 = D.43679;
    if (opcode == 966) goto <D.43681>; else goto <D.43682>;
    <D.43681>:
    iftmp.382 = 1;
    goto <D.43683>;
    <D.43682>:
    iftmp.382 = 2;
    <D.43683>:
    ins->type = iftmp.382;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43684>; else goto <D.43685>;
    <D.43684>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.43686>;
    <D.43685>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.43686>:
    <D.43666>:
  }
  goto <D.43687>;
  <D.43659>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43691 = "Decrement";
      D.43692 = MEM[(const unsigned char *)D.43691];
      D.43693 = (int) D.43692;
      D.43694 = *__s2;
      D.43695 = (int) D.43694;
      __result = D.43693 - D.43695;
      {
        D.43696 = __s2_len != 0;
        D.43697 = __result == 0;
        D.43698 = D.43696 & D.43697;
        if (D.43698 != 0) goto <D.43699>; else goto <D.43700>;
        <D.43699>:
        D.43701 = &MEM[(void *)"Decrement" + 1B];
        D.43702 = *D.43701;
        D.43703 = (int) D.43702;
        D.43704 = __s2 + 1;
        D.43705 = *D.43704;
        D.43706 = (int) D.43705;
        __result = D.43703 - D.43706;
        D.43707 = __s2_len > 1;
        D.43697 = __result == 0;
        D.43708 = D.43707 & D.43697;
        if (D.43708 != 0) goto <D.43709>; else goto <D.43710>;
        <D.43709>:
        D.43711 = &MEM[(void *)"Decrement" + 2B];
        D.43712 = *D.43711;
        D.43713 = (int) D.43712;
        D.43714 = __s2 + 2;
        D.43715 = *D.43714;
        D.43716 = (int) D.43715;
        __result = D.43713 - D.43716;
        D.43717 = __s2_len > 2;
        D.43697 = __result == 0;
        D.43718 = D.43717 & D.43697;
        if (D.43718 != 0) goto <D.43719>; else goto <D.43720>;
        <D.43719>:
        D.43721 = &MEM[(void *)"Decrement" + 3B];
        D.43722 = *D.43721;
        D.43723 = (int) D.43722;
        D.43724 = __s2 + 3;
        D.43725 = *D.43724;
        D.43726 = (int) D.43725;
        __result = D.43723 - D.43726;
        <D.43720>:
        <D.43710>:
        <D.43700>:
      }
      D.27013 = __result;
    }
    iftmp.383 = -D.27013;
    goto <D.43727>;
    <D.43690>:
    D.42073 = cmethod->name;
    iftmp.383 = __builtin_strcmp (D.42073, "Decrement");
    <D.43727>:
    D.27014 = iftmp.383;
  }
  if (D.27014 == 0) goto <D.43728>; else goto <D.43729>;
  <D.43728>:
  {
    struct MonoInst * ins_iconst;
    guint32 opcode;

    opcode = 0;
    D.43609 = fsig->params[0];
    D.43610 = D.43609->type;
    if (D.43610 == 8) goto <D.43730>; else goto <D.43731>;
    <D.43730>:
    opcode = 966;
    cfg->has_atomic_add_new_i4 = 1;
    goto <D.43732>;
    <D.43731>:
    D.43609 = fsig->params[0];
    D.43610 = D.43609->type;
    if (D.43610 == 10) goto <D.43733>; else goto <D.43734>;
    <D.43733>:
    opcode = 971;
    <D.43734>:
    <D.43732>:
    if (opcode != 0) goto <D.43735>; else goto <D.43736>;
    <D.43735>:
    D.42080 = cfg->mempool;
    ins_iconst = mono_mempool_alloc (D.42080, 80);
    ins_iconst->data.op[1].const_val = 0;
    D.43737 = ins_iconst->data.op[1].const_val;
    ins_iconst->data.op[0].const_val = D.43737;
    ins_iconst->prev = 0B;
    D.43738 = ins_iconst->prev;
    ins_iconst->next = D.43738;
    ins_iconst->opcode = 362;
    ins_iconst->flags = 0;
    ins_iconst->type = 0;
    ins_iconst->dreg = -1;
    ins_iconst->sreg3 = -1;
    D.43739 = ins_iconst->sreg3;
    ins_iconst->sreg2 = D.43739;
    D.43740 = ins_iconst->sreg2;
    ins_iconst->sreg1 = D.43740;
    D.42085 = cfg->ip;
    ins_iconst->cil_code = D.42085;
    ins_iconst->data.op[0].const_val = -1;
    D.43741 = mono_alloc_ireg (cfg);
    D.43742 = (int) D.43741;
    ins_iconst->dreg = D.43742;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43743>; else goto <D.43744>;
    <D.43743>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins_iconst;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins_iconst->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins_iconst;
    goto <D.43745>;
    <D.43744>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins_iconst;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.43745>:
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    D.43746 = (short unsigned int) opcode;
    ins->opcode = D.43746;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    D.43747 = mono_alloc_ireg (cfg);
    D.43748 = (int) D.43747;
    ins->dreg = D.43748;
    D.42109 = *args;
    D.42110 = D.42109->dreg;
    ins->sreg1 = D.42110;
    ins->data.op[0].const_val = 0;
    D.43749 = ins_iconst->dreg;
    ins->sreg2 = D.43749;
    if (opcode == 966) goto <D.43751>; else goto <D.43752>;
    <D.43751>:
    iftmp.384 = 1;
    goto <D.43753>;
    <D.43752>:
    iftmp.384 = 2;
    <D.43753>:
    ins->type = iftmp.384;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43754>; else goto <D.43755>;
    <D.43754>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.43756>;
    <D.43755>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.43756>:
    <D.43736>:
  }
  goto <D.43757>;
  <D.43729>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43761 = "Add";
      D.43762 = MEM[(const unsigned char *)D.43761];
      D.43763 = (int) D.43762;
      D.43764 = *__s2;
      D.43765 = (int) D.43764;
      __result = D.43763 - D.43765;
      {
        D.43766 = __s2_len != 0;
        D.43767 = __result == 0;
        D.43768 = D.43766 & D.43767;
        if (D.43768 != 0) goto <D.43769>; else goto <D.43770>;
        <D.43769>:
        D.43771 = &MEM[(void *)"Add" + 1B];
        D.43772 = *D.43771;
        D.43773 = (int) D.43772;
        D.43774 = __s2 + 1;
        D.43775 = *D.43774;
        D.43776 = (int) D.43775;
        __result = D.43773 - D.43776;
        D.43777 = __s2_len > 1;
        D.43767 = __result == 0;
        D.43778 = D.43777 & D.43767;
        if (D.43778 != 0) goto <D.43779>; else goto <D.43780>;
        <D.43779>:
        D.43781 = &MEM[(void *)"Add" + 2B];
        D.43782 = *D.43781;
        D.43783 = (int) D.43782;
        D.43784 = __s2 + 2;
        D.43785 = *D.43784;
        D.43786 = (int) D.43785;
        __result = D.43783 - D.43786;
        D.43787 = __s2_len > 2;
        D.43767 = __result == 0;
        D.43788 = D.43787 & D.43767;
        if (D.43788 != 0) goto <D.43789>; else goto <D.43790>;
        <D.43789>:
        D.43791 = &MEM[(void *)"Add" + 3B];
        D.43792 = *D.43791;
        D.43793 = (int) D.43792;
        D.43794 = __s2 + 3;
        D.43795 = *D.43794;
        D.43796 = (int) D.43795;
        __result = D.43793 - D.43796;
        <D.43790>:
        <D.43780>:
        <D.43770>:
      }
      D.27024 = __result;
    }
    iftmp.385 = -D.27024;
    goto <D.43797>;
    <D.43760>:
    D.42073 = cmethod->name;
    iftmp.385 = __builtin_strcmp (D.42073, "Add");
    <D.43797>:
    D.27025 = iftmp.385;
  }
  if (D.27025 == 0) goto <D.43798>; else goto <D.43799>;
  <D.43798>:
  {
    guint32 opcode;

    opcode = 0;
    D.43609 = fsig->params[0];
    D.43610 = D.43609->type;
    if (D.43610 == 8) goto <D.43800>; else goto <D.43801>;
    <D.43800>:
    opcode = 966;
    cfg->has_atomic_add_new_i4 = 1;
    goto <D.43802>;
    <D.43801>:
    D.43609 = fsig->params[0];
    D.43610 = D.43609->type;
    if (D.43610 == 10) goto <D.43803>; else goto <D.43804>;
    <D.43803>:
    opcode = 971;
    <D.43804>:
    <D.43802>:
    if (opcode != 0) goto <D.43805>; else goto <D.43806>;
    <D.43805>:
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    D.43807 = (short unsigned int) opcode;
    ins->opcode = D.43807;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    D.43808 = mono_alloc_ireg (cfg);
    D.43809 = (int) D.43808;
    ins->dreg = D.43809;
    D.42109 = *args;
    D.42110 = D.42109->dreg;
    ins->sreg1 = D.42110;
    ins->data.op[0].const_val = 0;
    D.42086 = args + 8;
    D.42087 = *D.42086;
    D.42088 = D.42087->dreg;
    ins->sreg2 = D.42088;
    if (opcode == 966) goto <D.43811>; else goto <D.43812>;
    <D.43811>:
    iftmp.386 = 1;
    goto <D.43813>;
    <D.43812>:
    iftmp.386 = 2;
    <D.43813>:
    ins->type = iftmp.386;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43814>; else goto <D.43815>;
    <D.43814>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.43816>;
    <D.43815>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.43816>:
    <D.43806>:
  }
  <D.43799>:
  <D.43757>:
  <D.43687>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43820 = "Exchange";
      D.43821 = MEM[(const unsigned char *)D.43820];
      D.43822 = (int) D.43821;
      D.43823 = *__s2;
      D.43824 = (int) D.43823;
      __result = D.43822 - D.43824;
      {
        D.43825 = __s2_len != 0;
        D.43826 = __result == 0;
        D.43827 = D.43825 & D.43826;
        if (D.43827 != 0) goto <D.43828>; else goto <D.43829>;
        <D.43828>:
        D.43830 = &MEM[(void *)"Exchange" + 1B];
        D.43831 = *D.43830;
        D.43832 = (int) D.43831;
        D.43833 = __s2 + 1;
        D.43834 = *D.43833;
        D.43835 = (int) D.43834;
        __result = D.43832 - D.43835;
        D.43836 = __s2_len > 1;
        D.43826 = __result == 0;
        D.43837 = D.43836 & D.43826;
        if (D.43837 != 0) goto <D.43838>; else goto <D.43839>;
        <D.43838>:
        D.43840 = &MEM[(void *)"Exchange" + 2B];
        D.43841 = *D.43840;
        D.43842 = (int) D.43841;
        D.43843 = __s2 + 2;
        D.43844 = *D.43843;
        D.43845 = (int) D.43844;
        __result = D.43842 - D.43845;
        D.43846 = __s2_len > 2;
        D.43826 = __result == 0;
        D.43847 = D.43846 & D.43826;
        if (D.43847 != 0) goto <D.43848>; else goto <D.43849>;
        <D.43848>:
        D.43850 = &MEM[(void *)"Exchange" + 3B];
        D.43851 = *D.43850;
        D.43852 = (int) D.43851;
        D.43853 = __s2 + 3;
        D.43854 = *D.43853;
        D.43855 = (int) D.43854;
        __result = D.43852 - D.43855;
        <D.43849>:
        <D.43839>:
        <D.43829>:
      }
      D.27034 = __result;
    }
    iftmp.387 = -D.27034;
    goto <D.43856>;
    <D.43819>:
    D.42073 = cmethod->name;
    iftmp.387 = __builtin_strcmp (D.42073, "Exchange");
    <D.43856>:
    D.27035 = iftmp.387;
  }
  if (D.27035 == 0) goto <D.43857>; else goto <D.43858>;
  <D.43857>:
  {
    guint32 opcode;
    gboolean is_ref;

    D.43609 = fsig->params[0];
    D.43610 = D.43609->type;
    D.43859 = D.43610 == 28;
    is_ref = (gboolean) D.43859;
    D.43609 = fsig->params[0];
    D.43610 = D.43609->type;
    if (D.43610 == 8) goto <D.43860>; else goto <D.43861>;
    <D.43860>:
    opcode = 969;
    cfg->has_atomic_exchange_i4 = 1;
    goto <D.43862>;
    <D.43861>:
    if (is_ref != 0) goto <D.43863>; else goto <D.43866>;
    <D.43866>:
    D.43609 = fsig->params[0];
    D.43610 = D.43609->type;
    if (D.43610 == 10) goto <D.43863>; else goto <D.43867>;
    <D.43867>:
    D.43609 = fsig->params[0];
    D.43610 = D.43609->type;
    if (D.43610 == 24) goto <D.43863>; else goto <D.43864>;
    <D.43863>:
    opcode = 974;
    goto <D.43865>;
    <D.43864>:
    D.42237 = 0B;
    return D.42237;
    <D.43865>:
    <D.43862>:
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    D.43868 = (short unsigned int) opcode;
    ins->opcode = D.43868;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    if (is_ref != 0) goto <D.43870>; else goto <D.43871>;
    <D.43870>:
    D.43872 = mono_alloc_ireg_ref (cfg);
    iftmp.388 = (gint32) D.43872;
    goto <D.43873>;
    <D.43871>:
    D.43874 = mono_alloc_ireg (cfg);
    iftmp.388 = (gint32) D.43874;
    <D.43873>:
    ins->dreg = iftmp.388;
    D.42109 = *args;
    D.42110 = D.42109->dreg;
    ins->sreg1 = D.42110;
    ins->data.op[0].const_val = 0;
    D.42086 = args + 8;
    D.42087 = *D.42086;
    D.42088 = D.42087->dreg;
    ins->sreg2 = D.42088;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43875>; else goto <D.43876>;
    <D.43875>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.43877>;
    <D.43876>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.43877>:
    D.43609 = fsig->params[0];
    D.43610 = D.43609->type;
    D.43878 = (int) D.43610;
    switch (D.43878) <default: <D.27043>, case 8: <D.27038>, case 10: <D.27040>, case 24: <D.27041>, case 28: <D.27042>>
    <D.27038>:
    ins->type = 1;
    goto <D.27039>;
    <D.27040>:
    <D.27041>:
    ins->type = 2;
    goto <D.27039>;
    <D.27042>:
    ins->type = 6;
    goto <D.27039>;
    <D.27043>:
    monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 5462);
    <D.27039>:
    D.43879 = BIT_FIELD_REF <*cfg, 8, 5624>;
    D.43880 = D.43879 & 16;
    if (D.43880 != 0) goto <D.43881>; else goto <D.43882>;
    <D.43881>:
    if (is_ref != 0) goto <D.43883>; else goto <D.43884>;
    <D.43883>:
    D.42086 = args + 8;
    D.42087 = *D.42086;
    D.42109 = *args;
    emit_write_barrier (cfg, D.42109, D.42087);
    <D.43884>:
    <D.43882>:
  }
  <D.43858>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43888 = "CompareExchange";
      D.43889 = MEM[(const unsigned char *)D.43888];
      D.43890 = (int) D.43889;
      D.43891 = *__s2;
      D.43892 = (int) D.43891;
      __result = D.43890 - D.43892;
      {
        D.43893 = __s2_len != 0;
        D.43894 = __result == 0;
        D.43895 = D.43893 & D.43894;
        if (D.43895 != 0) goto <D.43896>; else goto <D.43897>;
        <D.43896>:
        D.43898 = &MEM[(void *)"CompareExchange" + 1B];
        D.43899 = *D.43898;
        D.43900 = (int) D.43899;
        D.43901 = __s2 + 1;
        D.43902 = *D.43901;
        D.43903 = (int) D.43902;
        __result = D.43900 - D.43903;
        D.43904 = __s2_len > 1;
        D.43894 = __result == 0;
        D.43905 = D.43904 & D.43894;
        if (D.43905 != 0) goto <D.43906>; else goto <D.43907>;
        <D.43906>:
        D.43908 = &MEM[(void *)"CompareExchange" + 2B];
        D.43909 = *D.43908;
        D.43910 = (int) D.43909;
        D.43911 = __s2 + 2;
        D.43912 = *D.43911;
        D.43913 = (int) D.43912;
        __result = D.43910 - D.43913;
        D.43914 = __s2_len > 2;
        D.43894 = __result == 0;
        D.43915 = D.43914 & D.43894;
        if (D.43915 != 0) goto <D.43916>; else goto <D.43917>;
        <D.43916>:
        D.43918 = &MEM[(void *)"CompareExchange" + 3B];
        D.43919 = *D.43918;
        D.43920 = (int) D.43919;
        D.43921 = __s2 + 3;
        D.43922 = *D.43921;
        D.43923 = (int) D.43922;
        __result = D.43920 - D.43923;
        <D.43917>:
        <D.43907>:
        <D.43897>:
      }
      D.27051 = __result;
    }
    iftmp.389 = -D.27051;
    goto <D.43924>;
    <D.43887>:
    D.42073 = cmethod->name;
    iftmp.389 = __builtin_strcmp (D.42073, "CompareExchange");
    <D.43924>:
    D.27052 = iftmp.389;
  }
  if (D.27052 == 0) goto <D.43925>; else goto <D.43926>;
  <D.43925>:
  {
    int size;
    gboolean is_ref;

    size = 0;
    D.43927 = fsig->params[1];
    is_ref = mini_type_is_reference (cfg, D.43927);
    D.43927 = fsig->params[1];
    D.43928 = D.43927->type;
    if (D.43928 == 8) goto <D.43929>; else goto <D.43930>;
    <D.43929>:
    size = 4;
    goto <D.43931>;
    <D.43930>:
    if (is_ref != 0) goto <D.43932>; else goto <D.43935>;
    <D.43935>:
    D.43927 = fsig->params[1];
    D.43928 = D.43927->type;
    if (D.43928 == 24) goto <D.43932>; else goto <D.43933>;
    <D.43932>:
    size = 8;
    goto <D.43934>;
    <D.43933>:
    D.43927 = fsig->params[1];
    D.43928 = D.43927->type;
    if (D.43928 == 10) goto <D.43936>; else goto <D.43937>;
    <D.43936>:
    size = 8;
    <D.43937>:
    <D.43934>:
    <D.43931>:
    if (size == 4) goto <D.43938>; else goto <D.43939>;
    <D.43938>:
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 976;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    if (is_ref != 0) goto <D.43941>; else goto <D.43942>;
    <D.43941>:
    D.43943 = alloc_ireg_ref (cfg);
    iftmp.390 = (gint32) D.43943;
    goto <D.43944>;
    <D.43942>:
    D.43945 = alloc_ireg (cfg);
    iftmp.390 = (gint32) D.43945;
    <D.43944>:
    ins->dreg = iftmp.390;
    D.42109 = *args;
    D.42110 = D.42109->dreg;
    ins->sreg1 = D.42110;
    D.42086 = args + 8;
    D.42087 = *D.42086;
    D.42088 = D.42087->dreg;
    ins->sreg2 = D.42088;
    D.42348 = args + 16;
    D.42349 = *D.42348;
    D.42350 = D.42349->dreg;
    ins->sreg3 = D.42350;
    ins->type = 1;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43946>; else goto <D.43947>;
    <D.43946>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.43948>;
    <D.43947>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.43948>:
    goto <D.43949>;
    <D.43939>:
    if (size == 8) goto <D.43950>; else goto <D.43951>;
    <D.43950>:
    D.42080 = cfg->mempool;
    ins = mono_mempool_alloc (D.42080, 80);
    ins->data.op[1].const_val = 0;
    D.42225 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.42225;
    ins->prev = 0B;
    D.42226 = ins->prev;
    ins->next = D.42226;
    ins->opcode = 977;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.42227 = ins->sreg3;
    ins->sreg2 = D.42227;
    D.42228 = ins->sreg2;
    ins->sreg1 = D.42228;
    D.42085 = cfg->ip;
    ins->cil_code = D.42085;
    if (is_ref != 0) goto <D.43953>; else goto <D.43954>;
    <D.43953>:
    D.43955 = alloc_ireg_ref (cfg);
    iftmp.391 = (gint32) D.43955;
    goto <D.43956>;
    <D.43954>:
    D.43957 = alloc_ireg (cfg);
    iftmp.391 = (gint32) D.43957;
    <D.43956>:
    ins->dreg = iftmp.391;
    D.42109 = *args;
    D.42110 = D.42109->dreg;
    ins->sreg1 = D.42110;
    D.42086 = args + 8;
    D.42087 = *D.42086;
    D.42088 = D.42087->dreg;
    ins->sreg2 = D.42088;
    D.42348 = args + 16;
    D.42349 = *D.42348;
    D.42350 = D.42349->dreg;
    ins->sreg3 = D.42350;
    ins->type = 2;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    if (D.42090 != 0B) goto <D.43958>; else goto <D.43959>;
    <D.43958>:
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    D.42090->next = ins;
    D.42089 = cfg->cbb;
    D.42090 = D.42089->last_ins;
    ins->prev = D.42090;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    goto <D.43960>;
    <D.43959>:
    D.42089 = cfg->cbb;
    D.42089 = cfg->cbb;
    D.42089->last_ins = ins;
    D.42090 = D.42089->last_ins;
    D.42089->code = D.42090;
    <D.43960>:
    goto <D.43961>;
    <D.43951>:
    <D.43961>:
    <D.43949>:
    D.43879 = BIT_FIELD_REF <*cfg, 8, 5624>;
    D.43880 = D.43879 & 16;
    if (D.43880 != 0) goto <D.43962>; else goto <D.43963>;
    <D.43962>:
    if (is_ref != 0) goto <D.43964>; else goto <D.43965>;
    <D.43964>:
    D.42086 = args + 8;
    D.42087 = *D.42086;
    D.42109 = *args;
    emit_write_barrier (cfg, D.42109, D.42087);
    <D.43965>:
    <D.43963>:
  }
  <D.43926>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.43259 = "MemoryBarrier";
      D.43260 = MEM[(const unsigned char *)D.43259];
      D.43261 = (int) D.43260;
      D.43969 = *__s2;
      D.43970 = (int) D.43969;
      __result = D.43261 - D.43970;
      {
        D.43971 = __s2_len != 0;
        D.43972 = __result == 0;
        D.43973 = D.43971 & D.43972;
        if (D.43973 != 0) goto <D.43974>; else goto <D.43975>;
        <D.43974>:
        D.43269 = &MEM[(void *)"MemoryBarrier" + 1B];
        D.43270 = *D.43269;
        D.43271 = (int) D.43270;
        D.43976 = __s2 + 1;
        D.43977 = *D.43976;
        D.43978 = (int) D.43977;
        __result = D.43271 - D.43978;
        D.43979 = __s2_len > 1;
        D.43972 = __result == 0;
        D.43980 = D.43979 & D.43972;
        if (D.43980 != 0) goto <D.43981>; else goto <D.43982>;
        <D.43981>:
        D.43279 = &MEM[(void *)"MemoryBarrier" + 2B];
        D.43280 = *D.43279;
        D.43281 = (int) D.43280;
        D.43983 = __s2 + 2;
        D.43984 = *D.43983;
        D.43985 = (int) D.43984;
        __result = D.43281 - D.43985;
        D.43986 = __s2_len > 2;
        D.43972 = __result == 0;
        D.43987 = D.43986 & D.43972;
        if (D.43987 != 0) goto <D.43988>; else goto <D.43989>;
        <D.43988>:
        D.43289 = &MEM[(void *)"MemoryBarrier" + 3B];
        D.43290 = *D.43289;
        D.43291 = (int) D.43290;
        D.43990 = __s2 + 3;
        D.43991 = *D.43990;
        D.43992 = (int) D.43991;
        __result = D.43291 - D.43992;
        <D.43989>:
        <D.43982>:
        <D.43975>:
      }
      D.27062 = __result;
    }
    iftmp.392 = -D.27062;
    goto <D.43993>;
    <D.43968>:
    D.42073 = cmethod->name;
    iftmp.392 = __builtin_strcmp (D.42073, "MemoryBarrier");
    <D.43993>:
    D.27063 = iftmp.392;
  }
  if (D.27063 == 0) goto <D.43994>; else goto <D.43995>;
  <D.43994>:
  ins = emit_memory_barrier (cfg, 4);
  <D.43995>:
  if (ins != 0B) goto <D.43996>; else goto <D.43997>;
  <D.43996>:
  D.42237 = ins;
  return D.42237;
  <D.43997>:
  goto <D.43480>;
  <D.43479>:
  D.42029 = cmethod->klass;
  D.43481 = D.42029->image;
  D.42027 = mono_defaults.corlib;
  if (D.43481 == D.42027) goto <D.43998>; else goto <D.43999>;
  <D.43998>:
  D.42073 = cmethod->name;
  D.42582 = *D.42073;
  if (D.42582 == 66) goto <D.44000>; else goto <D.44001>;
  <D.44000>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44005 = "Break";
      D.44006 = MEM[(const unsigned char *)D.44005];
      D.44007 = (int) D.44006;
      D.44008 = *__s2;
      D.44009 = (int) D.44008;
      __result = D.44007 - D.44009;
      {
        D.44010 = __s2_len != 0;
        D.44011 = __result == 0;
        D.44012 = D.44010 & D.44011;
        if (D.44012 != 0) goto <D.44013>; else goto <D.44014>;
        <D.44013>:
        D.44015 = &MEM[(void *)"Break" + 1B];
        D.44016 = *D.44015;
        D.44017 = (int) D.44016;
        D.44018 = __s2 + 1;
        D.44019 = *D.44018;
        D.44020 = (int) D.44019;
        __result = D.44017 - D.44020;
        D.44021 = __s2_len > 1;
        D.44011 = __result == 0;
        D.44022 = D.44021 & D.44011;
        if (D.44022 != 0) goto <D.44023>; else goto <D.44024>;
        <D.44023>:
        D.44025 = &MEM[(void *)"Break" + 2B];
        D.44026 = *D.44025;
        D.44027 = (int) D.44026;
        D.44028 = __s2 + 2;
        D.44029 = *D.44028;
        D.44030 = (int) D.44029;
        __result = D.44027 - D.44030;
        D.44031 = __s2_len > 2;
        D.44011 = __result == 0;
        D.44032 = D.44031 & D.44011;
        if (D.44032 != 0) goto <D.44033>; else goto <D.44034>;
        <D.44033>:
        D.44035 = &MEM[(void *)"Break" + 3B];
        D.44036 = *D.44035;
        D.44037 = (int) D.44036;
        D.44038 = __s2 + 3;
        D.44039 = *D.44038;
        D.44040 = (int) D.44039;
        __result = D.44037 - D.44040;
        <D.44034>:
        <D.44024>:
        <D.44014>:
      }
      D.27071 = __result;
    }
    iftmp.393 = -D.27071;
    goto <D.44041>;
    <D.44004>:
    D.42073 = cmethod->name;
    iftmp.393 = __builtin_strcmp (D.42073, "Break");
    <D.44041>:
    D.27072 = iftmp.393;
  }
  if (D.27072 == 0) goto <D.44042>; else goto <D.44043>;
  <D.44042>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.42029 = cmethod->klass;
      __s2 = D.42029->name;
      D.44047 = "Debugger";
      D.44048 = MEM[(const unsigned char *)D.44047];
      D.44049 = (int) D.44048;
      D.44050 = *__s2;
      D.44051 = (int) D.44050;
      __result = D.44049 - D.44051;
      {
        D.44052 = __s2_len != 0;
        D.44053 = __result == 0;
        D.44054 = D.44052 & D.44053;
        if (D.44054 != 0) goto <D.44055>; else goto <D.44056>;
        <D.44055>:
        D.44057 = &MEM[(void *)"Debugger" + 1B];
        D.44058 = *D.44057;
        D.44059 = (int) D.44058;
        D.44060 = __s2 + 1;
        D.44061 = *D.44060;
        D.44062 = (int) D.44061;
        __result = D.44059 - D.44062;
        D.44063 = __s2_len > 1;
        D.44053 = __result == 0;
        D.44064 = D.44063 & D.44053;
        if (D.44064 != 0) goto <D.44065>; else goto <D.44066>;
        <D.44065>:
        D.44067 = &MEM[(void *)"Debugger" + 2B];
        D.44068 = *D.44067;
        D.44069 = (int) D.44068;
        D.44070 = __s2 + 2;
        D.44071 = *D.44070;
        D.44072 = (int) D.44071;
        __result = D.44069 - D.44072;
        D.44073 = __s2_len > 2;
        D.44053 = __result == 0;
        D.44074 = D.44073 & D.44053;
        if (D.44074 != 0) goto <D.44075>; else goto <D.44076>;
        <D.44075>:
        D.44077 = &MEM[(void *)"Debugger" + 3B];
        D.44078 = *D.44077;
        D.44079 = (int) D.44078;
        D.44080 = __s2 + 3;
        D.44081 = *D.44080;
        D.44082 = (int) D.44081;
        __result = D.44079 - D.44082;
        <D.44076>:
        <D.44066>:
        <D.44056>:
      }
      D.27080 = __result;
    }
    iftmp.394 = -D.27080;
    goto <D.44083>;
    <D.44046>:
    D.42029 = cmethod->klass;
    D.43565 = D.42029->name;
    iftmp.394 = __builtin_strcmp (D.43565, "Debugger");
    <D.44083>:
    D.27081 = iftmp.394;
  }
  if (D.27081 == 0) goto <D.44084>; else goto <D.44085>;
  <D.44084>:
  D.43347 = cfg->method;
  D.44086 = should_insert_brekpoint (D.43347);
  if (D.44086 != 0) goto <D.44087>; else goto <D.44088>;
  <D.44087>:
  ins = mono_emit_jit_icall (cfg, mono_debugger_agent_user_break, 0B);
  goto <D.44089>;
  <D.44088>:
  D.42080 = cfg->mempool;
  ins = mono_mempool_alloc (D.42080, 80);
  ins->data.op[1].const_val = 0;
  D.42225 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42225;
  ins->prev = 0B;
  D.42226 = ins->prev;
  ins->next = D.42226;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42227 = ins->sreg3;
  ins->sreg2 = D.42227;
  D.42228 = ins->sreg2;
  ins->sreg1 = D.42228;
  D.42085 = cfg->ip;
  ins->cil_code = D.42085;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  if (D.42090 != 0B) goto <D.44090>; else goto <D.44091>;
  <D.44090>:
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  D.42090->next = ins;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  ins->prev = D.42090;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  goto <D.44092>;
  <D.44091>:
  D.42089 = cfg->cbb;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  D.42090 = D.42089->last_ins;
  D.42089->code = D.42090;
  <D.44092>:
  <D.44089>:
  D.42237 = ins;
  return D.42237;
  <D.44085>:
  <D.44043>:
  <D.44001>:
  D.42073 = cmethod->name;
  D.42582 = *D.42073;
  if (D.42582 == 103) goto <D.44093>; else goto <D.44094>;
  <D.44093>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44098 = "get_IsRunningOnWindows";
      D.44099 = MEM[(const unsigned char *)D.44098];
      D.44100 = (int) D.44099;
      D.44101 = *__s2;
      D.44102 = (int) D.44101;
      __result = D.44100 - D.44102;
      {
        D.44103 = __s2_len != 0;
        D.44104 = __result == 0;
        D.44105 = D.44103 & D.44104;
        if (D.44105 != 0) goto <D.44106>; else goto <D.44107>;
        <D.44106>:
        D.44108 = &MEM[(void *)"get_IsRunningOnWindows" + 1B];
        D.44109 = *D.44108;
        D.44110 = (int) D.44109;
        D.44111 = __s2 + 1;
        D.44112 = *D.44111;
        D.44113 = (int) D.44112;
        __result = D.44110 - D.44113;
        D.44114 = __s2_len > 1;
        D.44104 = __result == 0;
        D.44115 = D.44114 & D.44104;
        if (D.44115 != 0) goto <D.44116>; else goto <D.44117>;
        <D.44116>:
        D.44118 = &MEM[(void *)"get_IsRunningOnWindows" + 2B];
        D.44119 = *D.44118;
        D.44120 = (int) D.44119;
        D.44121 = __s2 + 2;
        D.44122 = *D.44121;
        D.44123 = (int) D.44122;
        __result = D.44120 - D.44123;
        D.44124 = __s2_len > 2;
        D.44104 = __result == 0;
        D.44125 = D.44124 & D.44104;
        if (D.44125 != 0) goto <D.44126>; else goto <D.44127>;
        <D.44126>:
        D.44128 = &MEM[(void *)"get_IsRunningOnWindows" + 3B];
        D.44129 = *D.44128;
        D.44130 = (int) D.44129;
        D.44131 = __s2 + 3;
        D.44132 = *D.44131;
        D.44133 = (int) D.44132;
        __result = D.44130 - D.44133;
        <D.44127>:
        <D.44117>:
        <D.44107>:
      }
      D.27089 = __result;
    }
    iftmp.395 = -D.27089;
    goto <D.44134>;
    <D.44097>:
    D.42073 = cmethod->name;
    iftmp.395 = __builtin_strcmp (D.42073, "get_IsRunningOnWindows");
    <D.44134>:
    D.27090 = iftmp.395;
  }
  if (D.27090 == 0) goto <D.44135>; else goto <D.44136>;
  <D.44135>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.42029 = cmethod->klass;
      __s2 = D.42029->name;
      D.44140 = "Environment";
      D.44141 = MEM[(const unsigned char *)D.44140];
      D.44142 = (int) D.44141;
      D.44143 = *__s2;
      D.44144 = (int) D.44143;
      __result = D.44142 - D.44144;
      {
        D.44145 = __s2_len != 0;
        D.44146 = __result == 0;
        D.44147 = D.44145 & D.44146;
        if (D.44147 != 0) goto <D.44148>; else goto <D.44149>;
        <D.44148>:
        D.44150 = &MEM[(void *)"Environment" + 1B];
        D.44151 = *D.44150;
        D.44152 = (int) D.44151;
        D.44153 = __s2 + 1;
        D.44154 = *D.44153;
        D.44155 = (int) D.44154;
        __result = D.44152 - D.44155;
        D.44156 = __s2_len > 1;
        D.44146 = __result == 0;
        D.44157 = D.44156 & D.44146;
        if (D.44157 != 0) goto <D.44158>; else goto <D.44159>;
        <D.44158>:
        D.44160 = &MEM[(void *)"Environment" + 2B];
        D.44161 = *D.44160;
        D.44162 = (int) D.44161;
        D.44163 = __s2 + 2;
        D.44164 = *D.44163;
        D.44165 = (int) D.44164;
        __result = D.44162 - D.44165;
        D.44166 = __s2_len > 2;
        D.44146 = __result == 0;
        D.44167 = D.44166 & D.44146;
        if (D.44167 != 0) goto <D.44168>; else goto <D.44169>;
        <D.44168>:
        D.44170 = &MEM[(void *)"Environment" + 3B];
        D.44171 = *D.44170;
        D.44172 = (int) D.44171;
        D.44173 = __s2 + 3;
        D.44174 = *D.44173;
        D.44175 = (int) D.44174;
        __result = D.44172 - D.44175;
        <D.44169>:
        <D.44159>:
        <D.44149>:
      }
      D.27098 = __result;
    }
    iftmp.396 = -D.27098;
    goto <D.44176>;
    <D.44139>:
    D.42029 = cmethod->klass;
    D.43565 = D.42029->name;
    iftmp.396 = __builtin_strcmp (D.43565, "Environment");
    <D.44176>:
    D.27099 = iftmp.396;
  }
  if (D.27099 == 0) goto <D.44177>; else goto <D.44178>;
  <D.44177>:
  D.42080 = cfg->mempool;
  ins = mono_mempool_alloc (D.42080, 80);
  ins->data.op[1].const_val = 0;
  D.42225 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.42225;
  ins->prev = 0B;
  D.42226 = ins->prev;
  ins->next = D.42226;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.42227 = ins->sreg3;
  ins->sreg2 = D.42227;
  D.42228 = ins->sreg2;
  ins->sreg1 = D.42228;
  D.42085 = cfg->ip;
  ins->cil_code = D.42085;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.44179 = alloc_dreg (cfg, 1);
  D.44180 = (int) D.44179;
  ins->dreg = D.44180;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  if (D.42090 != 0B) goto <D.44181>; else goto <D.44182>;
  <D.44181>:
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  D.42090->next = ins;
  D.42089 = cfg->cbb;
  D.42090 = D.42089->last_ins;
  ins->prev = D.42090;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  goto <D.44183>;
  <D.44182>:
  D.42089 = cfg->cbb;
  D.42089 = cfg->cbb;
  D.42089->last_ins = ins;
  D.42090 = D.42089->last_ins;
  D.42089->code = D.42090;
  <D.44183>:
  D.42237 = ins;
  return D.42237;
  <D.44178>:
  <D.44136>:
  <D.44094>:
  goto <D.44184>;
  <D.43999>:
  D.42029 = cmethod->klass;
  D.44185 = mono_defaults.math_class;
  if (D.42029 == D.44185) goto <D.44186>; else goto <D.44187>;
  <D.44186>:
  goto <D.44188>;
  <D.44187>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.42029 = cmethod->klass;
      D.43481 = D.42029->image;
      D.44194 = D.43481->assembly;
      __s2 = D.44194->aname.name;
      D.44195 = "MonoMac";
      D.44196 = MEM[(const unsigned char *)D.44195];
      D.44197 = (int) D.44196;
      D.44198 = *__s2;
      D.44199 = (int) D.44198;
      __result = D.44197 - D.44199;
      {
        D.44200 = __s2_len != 0;
        D.44201 = __result == 0;
        D.44202 = D.44200 & D.44201;
        if (D.44202 != 0) goto <D.44203>; else goto <D.44204>;
        <D.44203>:
        D.44205 = &MEM[(void *)"MonoMac" + 1B];
        D.44206 = *D.44205;
        D.44207 = (int) D.44206;
        D.44208 = __s2 + 1;
        D.44209 = *D.44208;
        D.44210 = (int) D.44209;
        __result = D.44207 - D.44210;
        D.44211 = __s2_len > 1;
        D.44201 = __result == 0;
        D.44212 = D.44211 & D.44201;
        if (D.44212 != 0) goto <D.44213>; else goto <D.44214>;
        <D.44213>:
        D.44215 = &MEM[(void *)"MonoMac" + 2B];
        D.44216 = *D.44215;
        D.44217 = (int) D.44216;
        D.44218 = __s2 + 2;
        D.44219 = *D.44218;
        D.44220 = (int) D.44219;
        __result = D.44217 - D.44220;
        D.44221 = __s2_len > 2;
        D.44201 = __result == 0;
        D.44222 = D.44221 & D.44201;
        if (D.44222 != 0) goto <D.44223>; else goto <D.44224>;
        <D.44223>:
        D.44225 = &MEM[(void *)"MonoMac" + 3B];
        D.44226 = *D.44225;
        D.44227 = (int) D.44226;
        D.44228 = __s2 + 3;
        D.44229 = *D.44228;
        D.44230 = (int) D.44229;
        __result = D.44227 - D.44230;
        <D.44224>:
        <D.44214>:
        <D.44204>:
      }
      D.27107 = __result;
    }
    iftmp.397 = -D.27107;
    goto <D.44231>;
    <D.44193>:
    D.42029 = cmethod->klass;
    D.43481 = D.42029->image;
    D.44194 = D.43481->assembly;
    D.44232 = D.44194->aname.name;
    iftmp.397 = __builtin_strcmp (D.44232, "MonoMac");
    <D.44231>:
    D.27108 = iftmp.397;
  }
  if (D.27108 == 0) goto <D.44189>; else goto <D.44233>;
  <D.44233>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.42029 = cmethod->klass;
      D.43481 = D.42029->image;
      D.44194 = D.43481->assembly;
      __s2 = D.44194->aname.name;
      D.44237 = "monotouch";
      D.44238 = MEM[(const unsigned char *)D.44237];
      D.44239 = (int) D.44238;
      D.44240 = *__s2;
      D.44241 = (int) D.44240;
      __result = D.44239 - D.44241;
      {
        D.44242 = __s2_len != 0;
        D.44243 = __result == 0;
        D.44244 = D.44242 & D.44243;
        if (D.44244 != 0) goto <D.44245>; else goto <D.44246>;
        <D.44245>:
        D.44247 = &MEM[(void *)"monotouch" + 1B];
        D.44248 = *D.44247;
        D.44249 = (int) D.44248;
        D.44250 = __s2 + 1;
        D.44251 = *D.44250;
        D.44252 = (int) D.44251;
        __result = D.44249 - D.44252;
        D.44253 = __s2_len > 1;
        D.44243 = __result == 0;
        D.44254 = D.44253 & D.44243;
        if (D.44254 != 0) goto <D.44255>; else goto <D.44256>;
        <D.44255>:
        D.44257 = &MEM[(void *)"monotouch" + 2B];
        D.44258 = *D.44257;
        D.44259 = (int) D.44258;
        D.44260 = __s2 + 2;
        D.44261 = *D.44260;
        D.44262 = (int) D.44261;
        __result = D.44259 - D.44262;
        D.44263 = __s2_len > 2;
        D.44243 = __result == 0;
        D.44264 = D.44263 & D.44243;
        if (D.44264 != 0) goto <D.44265>; else goto <D.44266>;
        <D.44265>:
        D.44267 = &MEM[(void *)"monotouch" + 3B];
        D.44268 = *D.44267;
        D.44269 = (int) D.44268;
        D.44270 = __s2 + 3;
        D.44271 = *D.44270;
        D.44272 = (int) D.44271;
        __result = D.44269 - D.44272;
        <D.44266>:
        <D.44256>:
        <D.44246>:
      }
      D.27116 = __result;
    }
    iftmp.398 = -D.27116;
    goto <D.44273>;
    <D.44236>:
    D.42029 = cmethod->klass;
    D.43481 = D.42029->image;
    D.44194 = D.43481->assembly;
    D.44232 = D.44194->aname.name;
    iftmp.398 = __builtin_strcmp (D.44232, "monotouch");
    <D.44273>:
    D.27117 = iftmp.398;
  }
  if (D.27117 == 0) goto <D.44189>; else goto <D.44190>;
  <D.44189>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.42029 = cmethod->klass;
      __s2 = D.42029->name;
      D.44277 = "Selector";
      D.44278 = MEM[(const unsigned char *)D.44277];
      D.44279 = (int) D.44278;
      D.44280 = *__s2;
      D.44281 = (int) D.44280;
      __result = D.44279 - D.44281;
      {
        D.44282 = __s2_len != 0;
        D.44283 = __result == 0;
        D.44284 = D.44282 & D.44283;
        if (D.44284 != 0) goto <D.44285>; else goto <D.44286>;
        <D.44285>:
        D.44287 = &MEM[(void *)"Selector" + 1B];
        D.44288 = *D.44287;
        D.44289 = (int) D.44288;
        D.44290 = __s2 + 1;
        D.44291 = *D.44290;
        D.44292 = (int) D.44291;
        __result = D.44289 - D.44292;
        D.44293 = __s2_len > 1;
        D.44283 = __result == 0;
        D.44294 = D.44293 & D.44283;
        if (D.44294 != 0) goto <D.44295>; else goto <D.44296>;
        <D.44295>:
        D.44297 = &MEM[(void *)"Selector" + 2B];
        D.44298 = *D.44297;
        D.44299 = (int) D.44298;
        D.44300 = __s2 + 2;
        D.44301 = *D.44300;
        D.44302 = (int) D.44301;
        __result = D.44299 - D.44302;
        D.44303 = __s2_len > 2;
        D.44283 = __result == 0;
        D.44304 = D.44303 & D.44283;
        if (D.44304 != 0) goto <D.44305>; else goto <D.44306>;
        <D.44305>:
        D.44307 = &MEM[(void *)"Selector" + 3B];
        D.44308 = *D.44307;
        D.44309 = (int) D.44308;
        D.44310 = __s2 + 3;
        D.44311 = *D.44310;
        D.44312 = (int) D.44311;
        __result = D.44309 - D.44312;
        <D.44306>:
        <D.44296>:
        <D.44286>:
      }
      D.27125 = __result;
    }
    iftmp.399 = -D.27125;
    goto <D.44313>;
    <D.44276>:
    D.42029 = cmethod->klass;
    D.43565 = D.42029->name;
    iftmp.399 = __builtin_strcmp (D.43565, "Selector");
    <D.44313>:
    D.27126 = iftmp.399;
  }
  if (D.27126 == 0) goto <D.44314>; else goto <D.44315>;
  <D.44314>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = cmethod->name;
      D.44319 = "GetHandle";
      D.44320 = MEM[(const unsigned char *)D.44319];
      D.44321 = (int) D.44320;
      D.44322 = *__s2;
      D.44323 = (int) D.44322;
      __result = D.44321 - D.44323;
      {
        D.44324 = __s2_len != 0;
        D.44325 = __result == 0;
        D.44326 = D.44324 & D.44325;
        if (D.44326 != 0) goto <D.44327>; else goto <D.44328>;
        <D.44327>:
        D.44329 = &MEM[(void *)"GetHandle" + 1B];
        D.44330 = *D.44329;
        D.44331 = (int) D.44330;
        D.44332 = __s2 + 1;
        D.44333 = *D.44332;
        D.44334 = (int) D.44333;
        __result = D.44331 - D.44334;
        D.44335 = __s2_len > 1;
        D.44325 = __result == 0;
        D.44336 = D.44335 & D.44325;
        if (D.44336 != 0) goto <D.44337>; else goto <D.44338>;
        <D.44337>:
        D.44339 = &MEM[(void *)"GetHandle" + 2B];
        D.44340 = *D.44339;
        D.44341 = (int) D.44340;
        D.44342 = __s2 + 2;
        D.44343 = *D.44342;
        D.44344 = (int) D.44343;
        __result = D.44341 - D.44344;
        D.44345 = __s2_len > 2;
        D.44325 = __result == 0;
        D.44346 = D.44345 & D.44325;
        if (D.44346 != 0) goto <D.44347>; else goto <D.44348>;
        <D.44347>:
        D.44349 = &MEM[(void *)"GetHandle" + 3B];
        D.44350 = *D.44349;
        D.44351 = (int) D.44350;
        D.44352 = __s2 + 3;
        D.44353 = *D.44352;
        D.44354 = (int) D.44353;
        __result = D.44351 - D.44354;
        <D.44348>:
        <D.44338>:
        <D.44328>:
      }
      D.27134 = __result;
    }
    iftmp.400 = -D.27134;
    goto <D.44355>;
    <D.44318>:
    D.42073 = cmethod->name;
    iftmp.400 = __builtin_strcmp (D.42073, "GetHandle");
    <D.44355>:
    D.27135 = iftmp.400;
  }
  if (D.27135 == 0) goto <D.44356>; else goto <D.44357>;
  <D.44356>:
  D.42806 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.44358 = D.42806 & 64;
  if (D.44358 != 0) goto <D.44359>; else goto <D.44360>;
  <D.44359>:
  D.42109 = *args;
  D.44361 = D.42109->opcode;
  D.44362 = D.44361 == 738;
  D.44363 = D.44361 == 736;
  D.44364 = D.44362 | D.44363;
  if (D.44364 != 0) goto <D.44365>; else goto <D.44366>;
  <D.44365>:
  <D.44366>:
  <D.44360>:
  <D.44357>:
  <D.44315>:
  <D.44190>:
  <D.44188>:
  <D.44184>:
  <D.43480>:
  <D.43478>:
  <D.43298>:
  D.42094 = cfg->opt;
  D.44367 = D.42094 & 67108864;
  if (D.44367 != 0) goto <D.44368>; else goto <D.44369>;
  <D.44368>:
  ins = mono_emit_simd_intrinsics (cfg, cmethod, fsig, args);
  if (ins != 0B) goto <D.44370>; else goto <D.44371>;
  <D.44370>:
  D.42237 = ins;
  return D.42237;
  <D.44371>:
  <D.44369>:
  if (0 != 0) goto <D.44372>; else goto <D.44373>;
  <D.44372>:
  ins = llvm_emit_inst_for_method (cfg, cmethod, fsig, args);
  if (ins != 0B) goto <D.44374>; else goto <D.44375>;
  <D.44374>:
  D.42237 = ins;
  return D.42237;
  <D.44375>:
  <D.44373>:
  D.42237 = mono_arch_emit_inst_for_method (cfg, cmethod, fsig, args);
  return D.42237;
}


emit_array_generic_access (struct MonoCompile * cfg, struct MonoMethodSignature * fsig, struct MonoInst * * args, int is_set)
{
  struct MonoType * D.44377;
  struct MonoInst * * D.44378;
  struct MonoInst * D.44379;
  struct MonoInst * D.44380;
  struct MonoMemPool * D.44383;
  long int D.44384;
  struct MonoInst * D.44385;
  struct MonoType * D.44386;
  unsigned int D.44387;
  short unsigned int D.44388;
  int D.44389;
  int D.44390;
  const unsigned char * D.44391;
  struct MonoInst * * D.44392;
  struct MonoInst * D.44393;
  int D.44394;
  unsigned char D.44395;
  <unnamed type> D.44396;
  unsigned int D.44397;
  int D.44398;
  struct MonoBasicBlock * D.44399;
  struct MonoInst * D.44400;
  long int D.44404;
  struct MonoInst * D.44405;
  unsigned int D.44406;
  short unsigned int D.44407;
  int D.44408;
  int D.44409;
  int D.44410;
  int D.44411;
  struct MonoClass * D.44412;
  int D.44416;
  unsigned int D.44420;
  short unsigned int D.44421;
  unsigned int D.44422;
  int D.44423;
  unsigned int D.44427;
  short unsigned int D.44428;
  struct MonoClass * D.44429;
  struct MonoInst * D.44433;
  struct MonoInst * addr;
  struct MonoInst * store;
  struct MonoInst * load;
  struct MonoClass * eklass;

  D.44377 = fsig->params[2];
  eklass = mono_class_from_mono_type (D.44377);
  D.44378 = args + 8;
  D.44379 = *D.44378;
  D.44380 = *args;
  addr = mini_emit_ldelema_1_ins (cfg, eklass, D.44380, D.44379, 0);
  if (is_set != 0) goto <D.44381>; else goto <D.44382>;
  <D.44381>:
  D.44383 = cfg->mempool;
  load = mono_mempool_alloc (D.44383, 80);
  load->data.op[1].const_val = 0;
  D.44384 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.44384;
  load->prev = 0B;
  D.44385 = load->prev;
  load->next = D.44385;
  D.44386 = &eklass->byval_arg;
  D.44387 = mono_type_to_load_membase (cfg, D.44386);
  D.44388 = (short unsigned int) D.44387;
  load->opcode = D.44388;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.44389 = load->sreg3;
  load->sreg2 = D.44389;
  D.44390 = load->sreg2;
  load->sreg1 = D.44390;
  D.44391 = cfg->ip;
  load->cil_code = D.44391;
  load->dreg = 0;
  D.44392 = args + 16;
  D.44393 = *D.44392;
  D.44394 = D.44393->dreg;
  load->sreg1 = D.44394;
  load->data.op[0].const_val = 0;
  load->type = 1;
  D.44386 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.44386, load);
  D.44395 = load->type;
  D.44396 = (<unnamed type>) D.44395;
  D.44397 = alloc_dreg (cfg, D.44396);
  D.44398 = (int) D.44397;
  load->dreg = D.44398;
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  if (D.44400 != 0B) goto <D.44401>; else goto <D.44402>;
  <D.44401>:
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  D.44400->next = load;
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  load->prev = D.44400;
  D.44399 = cfg->cbb;
  D.44399->last_ins = load;
  goto <D.44403>;
  <D.44402>:
  D.44399 = cfg->cbb;
  D.44399 = cfg->cbb;
  D.44399->last_ins = load;
  D.44400 = D.44399->last_ins;
  D.44399->code = D.44400;
  <D.44403>:
  D.44383 = cfg->mempool;
  store = mono_mempool_alloc (D.44383, 80);
  store->data.op[1].const_val = 0;
  D.44404 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.44404;
  store->prev = 0B;
  D.44405 = store->prev;
  store->next = D.44405;
  D.44386 = &eklass->byval_arg;
  D.44406 = mono_type_to_store_membase (cfg, D.44386);
  D.44407 = (short unsigned int) D.44406;
  store->opcode = D.44407;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.44408 = store->sreg3;
  store->sreg2 = D.44408;
  D.44409 = store->sreg2;
  store->sreg1 = D.44409;
  D.44391 = cfg->ip;
  store->cil_code = D.44391;
  D.44410 = load->dreg;
  store->sreg1 = D.44410;
  D.44411 = addr->dreg;
  store->dreg = D.44411;
  store->data.op[0].const_val = 0;
  D.44386 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.44386, store);
  D.44386 = &eklass->byval_arg;
  D.44412 = mono_class_from_mono_type (D.44386);
  store->klass = D.44412;
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  if (D.44400 != 0B) goto <D.44413>; else goto <D.44414>;
  <D.44413>:
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  D.44400->next = store;
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  store->prev = D.44400;
  D.44399 = cfg->cbb;
  D.44399->last_ins = store;
  goto <D.44415>;
  <D.44414>:
  D.44399 = cfg->cbb;
  D.44399 = cfg->cbb;
  D.44399->last_ins = store;
  D.44400 = D.44399->last_ins;
  D.44399->code = D.44400;
  <D.44415>:
  D.44377 = fsig->params[2];
  D.44416 = mini_type_is_reference (cfg, D.44377);
  if (D.44416 != 0) goto <D.44417>; else goto <D.44418>;
  <D.44417>:
  emit_write_barrier (cfg, addr, load);
  <D.44418>:
  goto <D.44419>;
  <D.44382>:
  D.44383 = cfg->mempool;
  load = mono_mempool_alloc (D.44383, 80);
  load->data.op[1].const_val = 0;
  D.44384 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.44384;
  load->prev = 0B;
  D.44385 = load->prev;
  load->next = D.44385;
  D.44386 = &eklass->byval_arg;
  D.44420 = mono_type_to_load_membase (cfg, D.44386);
  D.44421 = (short unsigned int) D.44420;
  load->opcode = D.44421;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.44389 = load->sreg3;
  load->sreg2 = D.44389;
  D.44390 = load->sreg2;
  load->sreg1 = D.44390;
  D.44391 = cfg->ip;
  load->cil_code = D.44391;
  load->dreg = 0;
  D.44411 = addr->dreg;
  load->sreg1 = D.44411;
  load->data.op[0].const_val = 0;
  load->type = 1;
  D.44386 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.44386, load);
  D.44395 = load->type;
  D.44396 = (<unnamed type>) D.44395;
  D.44422 = alloc_dreg (cfg, D.44396);
  D.44423 = (int) D.44422;
  load->dreg = D.44423;
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  if (D.44400 != 0B) goto <D.44424>; else goto <D.44425>;
  <D.44424>:
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  D.44400->next = load;
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  load->prev = D.44400;
  D.44399 = cfg->cbb;
  D.44399->last_ins = load;
  goto <D.44426>;
  <D.44425>:
  D.44399 = cfg->cbb;
  D.44399 = cfg->cbb;
  D.44399->last_ins = load;
  D.44400 = D.44399->last_ins;
  D.44399->code = D.44400;
  <D.44426>:
  D.44383 = cfg->mempool;
  store = mono_mempool_alloc (D.44383, 80);
  store->data.op[1].const_val = 0;
  D.44404 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.44404;
  store->prev = 0B;
  D.44405 = store->prev;
  store->next = D.44405;
  D.44386 = &eklass->byval_arg;
  D.44427 = mono_type_to_store_membase (cfg, D.44386);
  D.44428 = (short unsigned int) D.44427;
  store->opcode = D.44428;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.44408 = store->sreg3;
  store->sreg2 = D.44408;
  D.44409 = store->sreg2;
  store->sreg1 = D.44409;
  D.44391 = cfg->ip;
  store->cil_code = D.44391;
  D.44410 = load->dreg;
  store->sreg1 = D.44410;
  D.44392 = args + 16;
  D.44393 = *D.44392;
  D.44394 = D.44393->dreg;
  store->dreg = D.44394;
  store->data.op[0].const_val = 0;
  D.44386 = &eklass->byval_arg;
  type_to_eval_stack_type (cfg, D.44386, store);
  D.44386 = &eklass->byval_arg;
  D.44429 = mono_class_from_mono_type (D.44386);
  store->klass = D.44429;
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  if (D.44400 != 0B) goto <D.44430>; else goto <D.44431>;
  <D.44430>:
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  D.44400->next = store;
  D.44399 = cfg->cbb;
  D.44400 = D.44399->last_ins;
  store->prev = D.44400;
  D.44399 = cfg->cbb;
  D.44399->last_ins = store;
  goto <D.44432>;
  <D.44431>:
  D.44399 = cfg->cbb;
  D.44399 = cfg->cbb;
  D.44399->last_ins = store;
  D.44400 = D.44399->last_ins;
  D.44399->code = D.44400;
  <D.44432>:
  <D.44419>:
  D.44433 = store;
  return D.44433;
}


emit_get_rgctx_sig (struct MonoCompile * cfg, int context_used, struct MonoMethodSignature * sig, MonoRgctxInfoType rgctx_type)
{
  int D.44435;
  struct MonoMethod * D.44436;
  struct MonoMemPool * D.44437;
  struct MonoInst * D.44438;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.44435 = context_used & 2;
  D.44436 = cfg->current_method;
  D.44437 = cfg->mempool;
  entry = mono_patch_info_rgctx_entry_new (D.44437, D.44436, D.44435, 44, sig, rgctx_type);
  D.44436 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.44436, context_used);
  D.44438 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.44438;
}


mini_emit_ldelema_ins (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoInst * * sp, unsigned char * ip, gboolean is_set)
{
  struct MonoMethodSignature * D.44440;
  short unsigned int D.44441;
  int D.44442;
  _Bool D.44443;
  int D.44444;
  struct MonoInst * D.44447;
  struct MonoInst * * D.44448;
  struct MonoInst * D.44449;
  struct MonoInst * D.44450;
  struct MonoClass * D.44451;
  struct MonoClass * D.44452;
  unsigned int D.44455;
  unsigned int D.44456;
  struct MonoInst * * D.44459;
  struct MonoInst * D.44460;
  int rank;
  struct MonoInst * addr;
  struct MonoMethod * addr_method;
  int element_size;

  D.44440 = mono_method_signature (cmethod);
  D.44441 = D.44440->param_count;
  D.44442 = (int) D.44441;
  D.44443 = is_set != 0;
  D.44444 = (int) D.44443;
  rank = D.44442 - D.44444;
  if (rank == 1) goto <D.44445>; else goto <D.44446>;
  <D.44445>:
  D.44448 = sp + 8;
  D.44449 = *D.44448;
  D.44450 = *sp;
  D.44451 = cmethod->klass;
  D.44452 = D.44451->element_class;
  D.44447 = mini_emit_ldelema_1_ins (cfg, D.44452, D.44450, D.44449, 1);
  return D.44447;
  <D.44446>:
  if (rank == 2) goto <D.44453>; else goto <D.44454>;
  <D.44453>:
  D.44455 = cfg->opt;
  D.44456 = D.44455 & 2048;
  if (D.44456 != 0) goto <D.44457>; else goto <D.44458>;
  <D.44457>:
  D.44459 = sp + 16;
  D.44460 = *D.44459;
  D.44448 = sp + 8;
  D.44449 = *D.44448;
  D.44450 = *sp;
  D.44451 = cmethod->klass;
  D.44452 = D.44451->element_class;
  D.44447 = mini_emit_ldelema_2_ins (cfg, D.44452, D.44450, D.44449, D.44460);
  return D.44447;
  <D.44458>:
  <D.44454>:
  D.44451 = cmethod->klass;
  D.44452 = D.44451->element_class;
  element_size = mono_class_array_element_size (D.44452);
  addr_method = mono_marshal_get_array_address (rank, element_size);
  addr = mono_emit_method_call (cfg, addr_method, sp, 0B);
  D.44447 = addr;
  return D.44447;
}


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.44462;
  unsigned int D.44463;
  unsigned int D.44464;
  unsigned int D.44465;
  unsigned int D.44466;
  unsigned int D.44467;
  unsigned int D.44468;
  unsigned int D.44469;
  unsigned int D.44470;
  unsigned int D.44471;
  unsigned int D.44472;
  int D.44473;
  unsigned int D.44477;
  struct MonoMemPool * D.44478;
  long int D.44479;
  struct MonoInst * D.44480;
  int D.44481;
  int D.44482;
  const unsigned char * D.44483;
  struct MonoBasicBlock * D.44484;
  struct MonoInst * D.44485;
  unsigned int D.44489;
  long int D.44490;
  struct MonoInst * D.44491;
  int D.44492;
  int D.44493;
  long int D.44497;
  struct MonoInst * D.44498;
  int D.44499;
  int D.44500;
  int D.44501;
  long int D.44505;
  struct MonoInst * D.44506;
  int D.44507;
  int D.44508;
  long int D.44512;
  struct MonoInst * D.44513;
  int D.44514;
  int D.44515;
  long int D.44519;
  struct MonoInst * D.44520;
  int D.44521;
  int D.44522;
  long int D.44526;
  struct MonoInst * D.44527;
  int D.44528;
  int D.44529;
  long int D.44533;
  struct MonoInst * D.44534;
  int D.44535;
  int D.44536;
  long int D.44540;
  struct MonoInst * D.44541;
  int D.44542;
  int D.44543;
  long int D.44547;
  struct MonoInst * D.44548;
  int D.44549;
  int D.44550;
  long int D.44554;
  struct MonoInst * D.44555;
  int D.44556;
  int D.44557;
  long int D.44561;
  struct MonoInst * D.44562;
  int D.44563;
  int D.44564;
  long int D.44568;
  struct MonoInst * D.44569;
  int D.44570;
  int D.44571;
  long int D.44575;
  struct MonoInst * D.44576;
  int D.44577;
  int D.44578;
  long int D.44582;
  struct MonoInst * D.44583;
  int D.44584;
  int D.44585;
  long int D.44589;
  struct MonoInst * D.44590;
  int D.44591;
  int D.44592;
  long int D.44593;
  long int D.44597;
  struct MonoInst * D.44598;
  int D.44599;
  int D.44600;
  long int D.44604;
  struct MonoInst * D.44605;
  int D.44606;
  int D.44607;
  struct MonoInst * D.44611;
  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.44462 = alloc_preg (cfg);
  bounds_reg = (int) D.44462;
  D.44463 = alloc_ireg_mp (cfg);
  add_reg = (int) D.44463;
  D.44464 = alloc_preg (cfg);
  mult_reg = (int) D.44464;
  D.44465 = alloc_preg (cfg);
  mult2_reg = (int) D.44465;
  D.44466 = alloc_preg (cfg);
  low1_reg = (int) D.44466;
  D.44467 = alloc_preg (cfg);
  low2_reg = (int) D.44467;
  D.44468 = alloc_preg (cfg);
  high1_reg = (int) D.44468;
  D.44469 = alloc_preg (cfg);
  high2_reg = (int) D.44469;
  D.44470 = alloc_preg (cfg);
  realidx1_reg = (int) D.44470;
  D.44471 = alloc_preg (cfg);
  realidx2_reg = (int) D.44471;
  D.44472 = alloc_preg (cfg);
  sum_reg = (int) D.44472;
  mono_class_init (klass);
  D.44473 = mono_class_array_element_size (klass);
  size = (guint32) D.44473;
  index1 = index_ins1->dreg;
  index2 = index_ins2->dreg;
  if (0 != 0) goto <D.44474>; else goto <D.44475>;
  <D.44474>:
  goto <D.44476>;
  <D.44475>:
  D.44477 = alloc_preg (cfg);
  tmpreg = (int) D.44477;
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44479 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44479;
    inst->prev = 0B;
    D.44480 = inst->prev;
    inst->next = D.44480;
    inst->opcode = 766;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44481 = inst->sreg3;
    inst->sreg2 = D.44481;
    D.44482 = inst->sreg2;
    inst->sreg1 = D.44482;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = tmpreg;
    inst->sreg1 = index1;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44486>; else goto <D.44487>;
    <D.44486>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44488>;
    <D.44487>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44488>:
  }
  index1 = tmpreg;
  D.44489 = alloc_preg (cfg);
  tmpreg = (int) D.44489;
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44490 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44490;
    inst->prev = 0B;
    D.44491 = inst->prev;
    inst->next = D.44491;
    inst->opcode = 766;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44492 = inst->sreg3;
    inst->sreg2 = D.44492;
    D.44493 = inst->sreg2;
    inst->sreg1 = D.44493;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = tmpreg;
    inst->sreg1 = index2;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44494>; else goto <D.44495>;
    <D.44494>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44496>;
    <D.44495>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44496>:
  }
  index2 = tmpreg;
  <D.44476>:
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44497 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44497;
    inst->prev = 0B;
    D.44498 = inst->prev;
    inst->next = D.44498;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44499 = inst->sreg3;
    inst->sreg2 = D.44499;
    D.44500 = inst->sreg2;
    inst->sreg1 = D.44500;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = bounds_reg;
    D.44501 = arr->dreg;
    inst->sreg1 = D.44501;
    inst->data.op[0].const_val = 16;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44502>; else goto <D.44503>;
    <D.44502>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44504>;
    <D.44503>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44504>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44505 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44505;
    inst->prev = 0B;
    D.44506 = inst->prev;
    inst->next = D.44506;
    inst->opcode = 396;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44507 = inst->sreg3;
    inst->sreg2 = D.44507;
    D.44508 = inst->sreg2;
    inst->sreg1 = D.44508;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = low1_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 4;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44509>; else goto <D.44510>;
    <D.44509>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44511>;
    <D.44510>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44511>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44512 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44512;
    inst->prev = 0B;
    D.44513 = inst->prev;
    inst->next = D.44513;
    inst->opcode = 484;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44514 = inst->sreg3;
    inst->sreg2 = D.44514;
    D.44515 = inst->sreg2;
    inst->sreg1 = D.44515;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = realidx1_reg;
    inst->sreg1 = index1;
    inst->sreg2 = low1_reg;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44516>; else goto <D.44517>;
    <D.44516>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44518>;
    <D.44517>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44518>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44519 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44519;
    inst->prev = 0B;
    D.44520 = inst->prev;
    inst->next = D.44520;
    inst->opcode = 396;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44521 = inst->sreg3;
    inst->sreg2 = D.44521;
    D.44522 = inst->sreg2;
    inst->sreg1 = D.44522;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = high1_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 0;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44523>; else goto <D.44524>;
    <D.44523>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44525>;
    <D.44524>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44525>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44526 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44526;
    inst->prev = 0B;
    D.44527 = inst->prev;
    inst->next = D.44527;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44528 = inst->sreg3;
    inst->sreg2 = D.44528;
    D.44529 = inst->sreg2;
    inst->sreg1 = D.44529;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = -1;
    inst->sreg1 = high1_reg;
    inst->sreg2 = realidx1_reg;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44530>; else goto <D.44531>;
    <D.44530>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44532>;
    <D.44531>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44532>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44533 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44533;
    inst->prev = 0B;
    D.44534 = inst->prev;
    inst->next = D.44534;
    inst->opcode = 463;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44535 = inst->sreg3;
    inst->sreg2 = D.44535;
    D.44536 = inst->sreg2;
    inst->sreg1 = D.44536;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->data.op[1].p = "IndexOutOfRangeException";
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44537>; else goto <D.44538>;
    <D.44537>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44539>;
    <D.44538>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44539>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44540 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44540;
    inst->prev = 0B;
    D.44541 = inst->prev;
    inst->next = D.44541;
    inst->opcode = 396;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44542 = inst->sreg3;
    inst->sreg2 = D.44542;
    D.44543 = inst->sreg2;
    inst->sreg1 = D.44543;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = low2_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 12;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44544>; else goto <D.44545>;
    <D.44544>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44546>;
    <D.44545>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44546>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44547 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44547;
    inst->prev = 0B;
    D.44548 = inst->prev;
    inst->next = D.44548;
    inst->opcode = 484;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44549 = inst->sreg3;
    inst->sreg2 = D.44549;
    D.44550 = inst->sreg2;
    inst->sreg1 = D.44550;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = realidx2_reg;
    inst->sreg1 = index2;
    inst->sreg2 = low2_reg;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44551>; else goto <D.44552>;
    <D.44551>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44553>;
    <D.44552>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44553>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    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 = 396;
    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.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = high2_reg;
    inst->sreg1 = bounds_reg;
    inst->data.op[0].const_val = 8;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44558>; else goto <D.44559>;
    <D.44558>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44560>;
    <D.44559>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44560>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    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 = 322;
    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.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = -1;
    inst->sreg1 = high2_reg;
    inst->sreg2 = realidx2_reg;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44565>; else goto <D.44566>;
    <D.44565>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44567>;
    <D.44566>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44567>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44568 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44568;
    inst->prev = 0B;
    D.44569 = inst->prev;
    inst->next = D.44569;
    inst->opcode = 463;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44570 = inst->sreg3;
    inst->sreg2 = D.44570;
    D.44571 = inst->sreg2;
    inst->sreg1 = D.44571;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->data.op[1].p = "IndexOutOfRangeException";
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44572>; else goto <D.44573>;
    <D.44572>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44574>;
    <D.44573>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44574>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44575 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44575;
    inst->prev = 0B;
    D.44576 = inst->prev;
    inst->next = D.44576;
    inst->opcode = 485;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44577 = inst->sreg3;
    inst->sreg2 = D.44577;
    D.44578 = inst->sreg2;
    inst->sreg1 = D.44578;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = mult_reg;
    inst->sreg1 = high2_reg;
    inst->sreg2 = realidx1_reg;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44579>; else goto <D.44580>;
    <D.44579>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44581>;
    <D.44580>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44581>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44582 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44582;
    inst->prev = 0B;
    D.44583 = inst->prev;
    inst->next = D.44583;
    inst->opcode = 483;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44584 = inst->sreg3;
    inst->sreg2 = D.44584;
    D.44585 = inst->sreg2;
    inst->sreg1 = D.44585;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = sum_reg;
    inst->sreg1 = mult_reg;
    inst->sreg2 = realidx2_reg;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44586>; else goto <D.44587>;
    <D.44586>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44588>;
    <D.44587>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44588>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44589 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44589;
    inst->prev = 0B;
    D.44590 = inst->prev;
    inst->next = D.44590;
    inst->opcode = 544;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44591 = inst->sreg3;
    inst->sreg2 = D.44591;
    D.44592 = inst->sreg2;
    inst->sreg1 = D.44592;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = mult2_reg;
    inst->sreg1 = sum_reg;
    D.44593 = (long int) size;
    inst->data.op[1].const_val = D.44593;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44594>; else goto <D.44595>;
    <D.44594>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44596>;
    <D.44595>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44596>:
  }
  {
    struct MonoInst * inst;

    D.44478 = cfg->mempool;
    inst = mono_mempool_alloc (D.44478, 80);
    inst->data.op[1].const_val = 0;
    D.44597 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.44597;
    inst->prev = 0B;
    D.44598 = inst->prev;
    inst->next = D.44598;
    inst->opcode = 483;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.44599 = inst->sreg3;
    inst->sreg2 = D.44599;
    D.44600 = inst->sreg2;
    inst->sreg1 = D.44600;
    D.44483 = cfg->ip;
    inst->cil_code = D.44483;
    inst->dreg = add_reg;
    inst->sreg1 = mult2_reg;
    D.44501 = arr->dreg;
    inst->sreg2 = D.44501;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    if (D.44485 != 0B) goto <D.44601>; else goto <D.44602>;
    <D.44601>:
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    D.44485->next = inst;
    D.44484 = cfg->cbb;
    D.44485 = D.44484->last_ins;
    inst->prev = D.44485;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    goto <D.44603>;
    <D.44602>:
    D.44484 = cfg->cbb;
    D.44484 = cfg->cbb;
    D.44484->last_ins = inst;
    D.44485 = D.44484->last_ins;
    D.44484->code = D.44485;
    <D.44603>:
  }
  D.44478 = cfg->mempool;
  ins = mono_mempool_alloc (D.44478, 80);
  ins->data.op[1].const_val = 0;
  D.44604 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44604;
  ins->prev = 0B;
  D.44605 = ins->prev;
  ins->next = D.44605;
  ins->opcode = 542;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44606 = ins->sreg3;
  ins->sreg2 = D.44606;
  D.44607 = ins->sreg2;
  ins->sreg1 = D.44607;
  D.44483 = cfg->ip;
  ins->cil_code = D.44483;
  ins->dreg = add_reg;
  ins->sreg1 = add_reg;
  ins->data.op[1].const_val = 32;
  ins->type = 5;
  ins->klass = klass;
  D.44484 = cfg->cbb;
  D.44485 = D.44484->last_ins;
  if (D.44485 != 0B) goto <D.44608>; else goto <D.44609>;
  <D.44608>:
  D.44484 = cfg->cbb;
  D.44485 = D.44484->last_ins;
  D.44485->next = ins;
  D.44484 = cfg->cbb;
  D.44485 = D.44484->last_ins;
  ins->prev = D.44485;
  D.44484 = cfg->cbb;
  D.44484->last_ins = ins;
  goto <D.44610>;
  <D.44609>:
  D.44484 = cfg->cbb;
  D.44484 = cfg->cbb;
  D.44484->last_ins = ins;
  D.44485 = D.44484->last_ins;
  D.44484->code = D.44485;
  <D.44610>:
  D.44611 = ins;
  return D.44611;
}


mini_redirect_call (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoMethodSignature * signature, struct MonoInst * * args, struct MonoInst * this)
{
  struct MonoClass * D.44613;
  struct MonoClass * D.44614;
  int D.27151;
  int iftmp.401;
  int D.27150;
  const char[20] * D.44620;
  unsigned char D.44621;
  int D.44622;
  unsigned char D.44623;
  int D.44624;
  _Bool D.44625;
  _Bool D.44626;
  _Bool D.44627;
  const unsigned char * D.44630;
  unsigned char D.44631;
  int D.44632;
  const unsigned char * D.44633;
  unsigned char D.44634;
  int D.44635;
  _Bool D.44636;
  _Bool D.44637;
  const unsigned char * D.44640;
  unsigned char D.44641;
  int D.44642;
  const unsigned char * D.44643;
  unsigned char D.44644;
  int D.44645;
  _Bool D.44646;
  _Bool D.44647;
  const unsigned char * D.44650;
  unsigned char D.44651;
  int D.44652;
  const unsigned char * D.44653;
  unsigned char D.44654;
  int D.44655;
  const char * D.44657;
  <unnamed type> mono_profiler_events.402;
  unsigned int D.44661;
  unsigned int D.44664;
  unsigned int D.44665;
  struct MonoDomain * D.44668;
  _Bool D.44669;
  long int D.44670;
  long int D.44671;
  struct MonoInst * D.44676;
  struct MonoMemPool * D.44677;
  void * D.44678;
  struct MonoInst * D.44679;
  long int D.44680;
  struct MonoInst * D.44681;
  guint16 iftmp.403;
  unsigned char D.44683;
  unsigned char D.44684;
  int D.44688;
  int D.44689;
  const unsigned char * D.44690;
  void * iftmp.404;
  unsigned int D.44695;
  int D.44696;
  struct MonoBasicBlock * D.44697;
  struct MonoInst * D.44698;
  struct MonoInst * D.44702;

  D.44613 = method->klass;
  D.44614 = mono_defaults.string_class;
  if (D.44613 == D.44614) goto <D.44615>; else goto <D.44616>;
  <D.44615>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = method->name;
      D.44620 = "InternalAllocateStr";
      D.44621 = MEM[(const unsigned char *)D.44620];
      D.44622 = (int) D.44621;
      D.44623 = *__s2;
      D.44624 = (int) D.44623;
      __result = D.44622 - D.44624;
      {
        D.44625 = __s2_len != 0;
        D.44626 = __result == 0;
        D.44627 = D.44625 & D.44626;
        if (D.44627 != 0) goto <D.44628>; else goto <D.44629>;
        <D.44628>:
        D.44630 = &MEM[(void *)"InternalAllocateStr" + 1B];
        D.44631 = *D.44630;
        D.44632 = (int) D.44631;
        D.44633 = __s2 + 1;
        D.44634 = *D.44633;
        D.44635 = (int) D.44634;
        __result = D.44632 - D.44635;
        D.44636 = __s2_len > 1;
        D.44626 = __result == 0;
        D.44637 = D.44636 & D.44626;
        if (D.44637 != 0) goto <D.44638>; else goto <D.44639>;
        <D.44638>:
        D.44640 = &MEM[(void *)"InternalAllocateStr" + 2B];
        D.44641 = *D.44640;
        D.44642 = (int) D.44641;
        D.44643 = __s2 + 2;
        D.44644 = *D.44643;
        D.44645 = (int) D.44644;
        __result = D.44642 - D.44645;
        D.44646 = __s2_len > 2;
        D.44626 = __result == 0;
        D.44647 = D.44646 & D.44626;
        if (D.44647 != 0) goto <D.44648>; else goto <D.44649>;
        <D.44648>:
        D.44650 = &MEM[(void *)"InternalAllocateStr" + 3B];
        D.44651 = *D.44650;
        D.44652 = (int) D.44651;
        D.44653 = __s2 + 3;
        D.44654 = *D.44653;
        D.44655 = (int) D.44654;
        __result = D.44652 - D.44655;
        <D.44649>:
        <D.44639>:
        <D.44629>:
      }
      D.27150 = __result;
    }
    iftmp.401 = -D.27150;
    goto <D.44656>;
    <D.44619>:
    D.44657 = method->name;
    iftmp.401 = __builtin_strcmp (D.44657, "InternalAllocateStr");
    <D.44656>:
    D.27151 = iftmp.401;
  }
  if (D.27151 == 0) goto <D.44658>; else goto <D.44659>;
  <D.44658>:
  mono_profiler_events.402 = mono_profiler_events;
  D.44661 = mono_profiler_events.402 & 128;
  if (D.44661 == 0) goto <D.44662>; else goto <D.44663>;
  <D.44662>:
  D.44664 = cfg->opt;
  D.44665 = D.44664 & 512;
  if (D.44665 == 0) goto <D.44666>; else goto <D.44667>;
  <D.44666>:
  {
    struct MonoInst * iargs[2];
    struct MonoVTable * vtable;
    struct MonoMethod * managed_alloc;

    try
      {
        D.44613 = method->klass;
        D.44668 = cfg->domain;
        vtable = mono_class_vtable (D.44668, D.44613);
        managed_alloc = 0B;
        D.44669 = vtable == 0B;
        D.44670 = (long int) D.44669;
        D.44671 = __builtin_expect (D.44670, 0);
        if (D.44671 != 0) goto <D.44672>; else goto <D.44673>;
        <D.44672>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 5598, "vtable");
        <D.44673>:
        D.44613 = method->klass;
        managed_alloc = mono_gc_get_managed_allocator (D.44613, 0);
        if (managed_alloc == 0B) goto <D.44674>; else goto <D.44675>;
        <D.44674>:
        D.44676 = 0B;
        return D.44676;
        <D.44675>:
        D.44677 = cfg->mempool;
        D.44678 = mono_mempool_alloc (D.44677, 80);
        iargs[0] = D.44678;
        D.44679 = iargs[0];
        D.44679 = iargs[0];
        D.44679->data.op[1].const_val = 0;
        D.44680 = D.44679->data.op[1].const_val;
        D.44679->data.op[0].const_val = D.44680;
        D.44679 = iargs[0];
        D.44679 = iargs[0];
        D.44679->prev = 0B;
        D.44681 = D.44679->prev;
        D.44679->next = D.44681;
        D.44679 = iargs[0];
        D.44683 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.44684 = D.44683 & 64;
        if (D.44684 != 0) goto <D.44685>; else goto <D.44686>;
        <D.44685>:
        iftmp.403 = 736;
        goto <D.44687>;
        <D.44686>:
        iftmp.403 = 363;
        <D.44687>:
        D.44679->opcode = iftmp.403;
        D.44679 = iargs[0];
        D.44679->flags = 0;
        D.44679 = iargs[0];
        D.44679->type = 0;
        D.44679 = iargs[0];
        D.44679->dreg = -1;
        D.44679 = iargs[0];
        D.44679 = iargs[0];
        D.44679 = iargs[0];
        D.44679->sreg3 = -1;
        D.44688 = D.44679->sreg3;
        D.44679->sreg2 = D.44688;
        D.44689 = D.44679->sreg2;
        D.44679->sreg1 = D.44689;
        D.44679 = iargs[0];
        D.44690 = cfg->ip;
        D.44679->cil_code = D.44690;
        D.44679 = iargs[0];
        D.44683 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.44684 = D.44683 & 64;
        if (D.44684 != 0) goto <D.44692>; else goto <D.44693>;
        <D.44692>:
        iftmp.404 = vtable->klass;
        goto <D.44694>;
        <D.44693>:
        iftmp.404 = vtable;
        <D.44694>:
        D.44679->data.op[0].p = iftmp.404;
        D.44679 = iargs[0];
        D.44679->data.op[1].src = 14B;
        D.44679 = iargs[0];
        D.44679->type = 3;
        D.44679 = iargs[0];
        D.44695 = alloc_dreg (cfg, 3);
        D.44696 = (int) D.44695;
        D.44679->dreg = D.44696;
        D.44697 = cfg->cbb;
        D.44698 = D.44697->last_ins;
        if (D.44698 != 0B) goto <D.44699>; else goto <D.44700>;
        <D.44699>:
        D.44697 = cfg->cbb;
        D.44698 = D.44697->last_ins;
        D.44679 = iargs[0];
        D.44698->next = D.44679;
        D.44679 = iargs[0];
        D.44697 = cfg->cbb;
        D.44698 = D.44697->last_ins;
        D.44679->prev = D.44698;
        D.44697 = cfg->cbb;
        D.44679 = iargs[0];
        D.44697->last_ins = D.44679;
        goto <D.44701>;
        <D.44700>:
        D.44697 = cfg->cbb;
        D.44697 = cfg->cbb;
        D.44679 = iargs[0];
        D.44697->last_ins = D.44679;
        D.44698 = D.44697->last_ins;
        D.44697->code = D.44698;
        <D.44701>:
        D.44702 = *args;
        iargs[1] = D.44702;
        D.44676 = mono_emit_method_call (cfg, managed_alloc, &iargs, this);
        return D.44676;
      }
    finally
      {
        iargs = {CLOBBER};
      }
  }
  <D.44667>:
  <D.44663>:
  <D.44659>:
  <D.44616>:
  D.44676 = 0B;
  return D.44676;
}


is_supported_tail_call (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, int call_opcode)
{
  struct MonoMethodSignature * D.44705;
  struct MonoMethodSignature * D.44706;
  struct MonoType * D.44709;
  unsigned char D.44710;
  unsigned char D.44711;
  unsigned char D.44713;
  short unsigned int D.44715;
  int D.44716;
  unsigned char D.44717;
  unsigned char D.44718;
  struct MonoClass * D.44721;
  unsigned char D.44722;
  unsigned char D.44723;
  short unsigned int D.44726;
  int D.44727;
  int D.44728;
  struct MonoMethod * D.44731;
  unsigned char D.44732;
  unsigned char D.44733;
  unsigned char D.44736;
  unsigned char D.44737;
  _Bool D.44738;
  _Bool D.44739;
  _Bool D.44740;
  gboolean D.44745;
  gboolean supported_tail_call;
  int i;

  D.44705 = mono_method_signature (cmethod);
  D.44706 = mono_method_signature (method);
  supported_tail_call = mono_arch_tail_call_supported (cfg, D.44706, D.44705);
  i = 0;
  goto <D.27495>;
  <D.27494>:
  D.44709 = fsig->params[i];
  D.44710 = BIT_FIELD_REF <*D.44709, 8, 88>;
  D.44711 = D.44710 & 64;
  if (D.44711 != 0) goto <D.44707>; else goto <D.44712>;
  <D.44712>:
  D.44709 = fsig->params[i];
  D.44713 = D.44709->type;
  if (D.44713 == 15) goto <D.44707>; else goto <D.44714>;
  <D.44714>:
  D.44709 = fsig->params[i];
  D.44713 = D.44709->type;
  if (D.44713 == 27) goto <D.44707>; else goto <D.44708>;
  <D.44707>:
  supported_tail_call = 0;
  <D.44708>:
  i = i + 1;
  <D.27495>:
  D.44715 = fsig->param_count;
  D.44716 = (int) D.44715;
  if (D.44716 > i) goto <D.27494>; else goto <D.27496>;
  <D.27496>:
  D.44717 = BIT_FIELD_REF <*fsig, 8, 112>;
  D.44718 = D.44717 & 64;
  if (D.44718 != 0) goto <D.44719>; else goto <D.44720>;
  <D.44719>:
  D.44721 = cmethod->klass;
  D.44722 = BIT_FIELD_REF <*D.44721, 8, 256>;
  D.44723 = D.44722 & 8;
  if (D.44723 != 0) goto <D.44724>; else goto <D.44725>;
  <D.44724>:
  supported_tail_call = 0;
  <D.44725>:
  <D.44720>:
  D.44726 = cmethod->flags;
  D.44727 = (int) D.44726;
  D.44728 = D.44727 & 8192;
  if (D.44728 != 0) goto <D.44729>; else goto <D.44730>;
  <D.44729>:
  supported_tail_call = 0;
  <D.44730>:
  D.44731 = cfg->method;
  D.44732 = BIT_FIELD_REF <*D.44731, 8, 264>;
  D.44733 = D.44732 & 1;
  if (D.44733 != 0) goto <D.44734>; else goto <D.44735>;
  <D.44734>:
  supported_tail_call = 0;
  <D.44735>:
  D.44736 = BIT_FIELD_REF <*cmethod, 8, 256>;
  D.44737 = D.44736 & 124;
  D.44738 = D.44737 != 0;
  D.44739 = D.44737 != 68;
  D.44740 = D.44738 & D.44739;
  if (D.44740 != 0) goto <D.44741>; else goto <D.44742>;
  <D.44741>:
  supported_tail_call = 0;
  <D.44742>:
  if (call_opcode != 40) goto <D.44743>; else goto <D.44744>;
  <D.44743>:
  supported_tail_call = 0;
  <D.44744>:
  D.44745 = supported_tail_call;
  return D.44745;
}


mono_emit_widen_call_res (struct MonoCompile * cfg, struct MonoInst * ins, struct MonoMethodSignature * fsig)
{
  struct MonoType * D.44747;
  int D.44748;
  unsigned char D.44751;
  unsigned char D.44752;
  unsigned char D.44755;
  unsigned char D.44756;
  unsigned int D.44759;
  unsigned int D.44762;
  struct MonoMemPool * D.44763;
  long int D.44764;
  struct MonoInst * D.44765;
  short unsigned int D.44766;
  int D.44767;
  int D.44768;
  const unsigned char * D.44769;
  int D.44770;
  struct MonoBasicBlock * D.44771;
  struct MonoInst * D.44772;
  unsigned char D.44776;
  struct MonoInst * D.44777;

  D.44747 = fsig->ret;
  D.44748 = mono_type_is_void (D.44747);
  if (D.44748 == 0) goto <D.44749>; else goto <D.44750>;
  <D.44749>:
  D.44751 = BIT_FIELD_REF <*fsig, 8, 120>;
  D.44752 = D.44751 & 1;
  if (D.44752 != 0) goto <D.44753>; else goto <D.44754>;
  <D.44753>:
  D.44747 = fsig->ret;
  D.44755 = BIT_FIELD_REF <*D.44747, 8, 88>;
  D.44756 = D.44755 & 64;
  if (D.44756 == 0) goto <D.44757>; else goto <D.44758>;
  <D.44757>:
  {
    int widen_op;

    widen_op = -1;
    D.44747 = fsig->ret;
    D.44759 = mono_type_to_load_membase (cfg, D.44747);
    switch (D.44759) <default: <D.25825>, case 392: <D.25820>, case 393: <D.25822>, case 394: <D.25823>, case 395: <D.25824>>
    <D.25820>:
    widen_op = 584;
    goto <D.25821>;
    <D.25822>:
    widen_op = 595;
    goto <D.25821>;
    <D.25823>:
    widen_op = 585;
    goto <D.25821>;
    <D.25824>:
    widen_op = 594;
    goto <D.25821>;
    <D.25825>:
    goto <D.25821>;
    <D.25821>:
    if (widen_op != -1) goto <D.44760>; else goto <D.44761>;
    <D.44760>:
    {
      int dreg;
      struct MonoInst * widen;

      D.44762 = alloc_preg (cfg);
      dreg = (int) D.44762;
      D.44763 = cfg->mempool;
      widen = mono_mempool_alloc (D.44763, 80);
      widen->data.op[1].const_val = 0;
      D.44764 = widen->data.op[1].const_val;
      widen->data.op[0].const_val = D.44764;
      widen->prev = 0B;
      D.44765 = widen->prev;
      widen->next = D.44765;
      D.44766 = (short unsigned int) widen_op;
      widen->opcode = D.44766;
      widen->flags = 0;
      widen->type = 0;
      widen->dreg = -1;
      widen->sreg3 = -1;
      D.44767 = widen->sreg3;
      widen->sreg2 = D.44767;
      D.44768 = widen->sreg2;
      widen->sreg1 = D.44768;
      D.44769 = cfg->ip;
      widen->cil_code = D.44769;
      widen->dreg = dreg;
      D.44770 = ins->dreg;
      widen->sreg1 = D.44770;
      D.44771 = cfg->cbb;
      D.44772 = D.44771->last_ins;
      if (D.44772 != 0B) goto <D.44773>; else goto <D.44774>;
      <D.44773>:
      D.44771 = cfg->cbb;
      D.44772 = D.44771->last_ins;
      D.44772->next = widen;
      D.44771 = cfg->cbb;
      D.44772 = D.44771->last_ins;
      widen->prev = D.44772;
      D.44771 = cfg->cbb;
      D.44771->last_ins = widen;
      goto <D.44775>;
      <D.44774>:
      D.44771 = cfg->cbb;
      D.44771 = cfg->cbb;
      D.44771->last_ins = widen;
      D.44772 = D.44771->last_ins;
      D.44771->code = D.44772;
      <D.44775>:
      D.44776 = ins->type;
      widen->type = D.44776;
      ins = widen;
    }
    <D.44761>:
  }
  <D.44758>:
  <D.44754>:
  <D.44750>:
  D.44777 = ins;
  return D.44777;
}


emit_pop_lmf (struct MonoCompile * cfg)
{
  unsigned char D.44780;
  unsigned char D.44781;
  struct MonoMemPool * D.44784;
  long int D.44785;
  struct MonoInst * D.44786;
  int D.44787;
  int D.44788;
  const unsigned char * D.44789;
  struct MonoInst * D.44790;
  unsigned char D.44791;
  unsigned char D.44792;
  struct MonoClass * D.44793;
  unsigned int D.44794;
  int D.44795;
  int D.44796;
  _Bool D.44797;
  long int D.44798;
  long int D.44799;
  struct MonoType * D.44802;
  int D.44803;
  struct MonoInst * iftmp.405;
  int D.44809;
  int D.44810;
  unsigned int D.44811;
  unsigned int D.44812;
  struct MonoInst * * D.44815;
  sizetype D.44816;
  sizetype D.44817;
  sizetype D.44818;
  struct MonoInst * * D.44819;
  struct MonoInst * iftmp.406;
  int D.44822;
  unsigned int D.44823;
  sizetype D.44826;
  sizetype D.44827;
  struct MonoInst * * D.44828;
  _Bool D.44830;
  long int D.44831;
  long int D.44832;
  _Bool D.44835;
  long int D.44836;
  long int D.44837;
  unsigned char D.44840;
  unsigned char D.44841;
  unsigned char D.44842;
  unsigned char D.44843;
  struct MonoBasicBlock * D.44844;
  struct MonoInst * D.44845;
  unsigned char D.44851;
  int D.44853;
  unsigned int D.44855;
  struct MonoInst * D.44859;
  struct MonoClass * D.44862;
  struct MonoType * D.44863;
  struct MonoInst * D.44864;
  unsigned int D.44865;
  int lmf_reg;
  int lmf_addr_reg;
  int prev_lmf_reg;
  struct MonoInst * ins;

  D.44780 = BIT_FIELD_REF <*cfg, 8, 5624>;
  D.44781 = D.44780 & 4;
  if (D.44781 == 0) goto <D.44782>; else goto <D.44783>;
  <D.44782>:
  return;
  <D.44783>:
  D.44784 = cfg->mempool;
  ins = mono_mempool_alloc (D.44784, 80);
  ins->data.op[1].const_val = 0;
  D.44785 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44785;
  ins->prev = 0B;
  D.44786 = ins->prev;
  ins->next = D.44786;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44787 = ins->sreg3;
  ins->sreg2 = D.44787;
  D.44788 = ins->sreg2;
  ins->sreg1 = D.44788;
  D.44789 = cfg->ip;
  ins->cil_code = D.44789;
  D.44790 = cfg->lmf_var;
  ins->data.op[0].p = D.44790;
  D.44790 = cfg->lmf_var;
  D.44790 = cfg->lmf_var;
  D.44791 = D.44790->flags;
  D.44792 = D.44791 | 16;
  D.44790->flags = D.44792;
  ins->type = 5;
  D.44790 = cfg->lmf_var;
  D.44793 = D.44790->klass;
  ins->klass = D.44793;
  D.44794 = alloc_dreg (cfg, 5);
  D.44795 = (int) D.44794;
  ins->dreg = D.44795;
  cfg->has_indirection = 1;
  D.44796 = cfg->gsharedvt;
  D.44797 = D.44796 != 0;
  D.44798 = (long int) D.44797;
  D.44799 = __builtin_expect (D.44798, 0);
  if (D.44799 != 0) goto <D.44800>; else goto <D.44801>;
  <D.44800>:
  D.44790 = cfg->lmf_var;
  D.44802 = D.44790->data.op[1].vtype;
  D.44803 = mini_is_gsharedvt_variable_type (cfg, D.44802);
  if (D.44803 != 0) goto <D.44804>; else goto <D.44805>;
  <D.44804>:
  handle_gsharedvt_ldaddr (cfg);
  <D.44805>:
  <D.44801>:
  if (0 != 0) goto <D.44806>; else goto <D.44807>;
  <D.44806>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.44790 = cfg->lmf_var;
    D.44809 = D.44790->dreg;
    D.44810 = D.44809 + 1;
    D.44811 = (unsigned int) D.44810;
    D.44812 = cfg->vreg_to_inst_len;
    if (D.44811 < D.44812) goto <D.44813>; else goto <D.44814>;
    <D.44813>:
    D.44815 = cfg->vreg_to_inst;
    D.44790 = cfg->lmf_var;
    D.44809 = D.44790->dreg;
    D.44816 = (sizetype) D.44809;
    D.44817 = D.44816 + 1;
    D.44818 = D.44817 * 8;
    D.44819 = D.44815 + D.44818;
    iftmp.405 = *D.44819;
    goto <D.44820>;
    <D.44814>:
    iftmp.405 = 0B;
    <D.44820>:
    var1 = iftmp.405;
    D.44790 = cfg->lmf_var;
    D.44809 = D.44790->dreg;
    D.44822 = D.44809 + 2;
    D.44823 = (unsigned int) D.44822;
    D.44812 = cfg->vreg_to_inst_len;
    if (D.44823 < D.44812) goto <D.44824>; else goto <D.44825>;
    <D.44824>:
    D.44815 = cfg->vreg_to_inst;
    D.44790 = cfg->lmf_var;
    D.44809 = D.44790->dreg;
    D.44816 = (sizetype) D.44809;
    D.44826 = D.44816 + 2;
    D.44827 = D.44826 * 8;
    D.44828 = D.44815 + D.44827;
    iftmp.406 = *D.44828;
    goto <D.44829>;
    <D.44825>:
    iftmp.406 = 0B;
    <D.44829>:
    var2 = iftmp.406;
    D.44830 = var1 == 0B;
    D.44831 = (long int) D.44830;
    D.44832 = __builtin_expect (D.44831, 0);
    if (D.44832 != 0) goto <D.44833>; else goto <D.44834>;
    <D.44833>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1970, "var1");
    <D.44834>:
    D.44835 = var2 == 0B;
    D.44836 = (long int) D.44835;
    D.44837 = __builtin_expect (D.44836, 0);
    if (D.44837 != 0) goto <D.44838>; else goto <D.44839>;
    <D.44838>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1970, "var2");
    <D.44839>:
    D.44840 = var1->flags;
    D.44841 = D.44840 | 16;
    var1->flags = D.44841;
    D.44842 = var2->flags;
    D.44843 = D.44842 | 16;
    var2->flags = D.44843;
  }
  <D.44807>:
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  if (D.44845 != 0B) goto <D.44846>; else goto <D.44847>;
  <D.44846>:
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  D.44845->next = ins;
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  ins->prev = D.44845;
  D.44844 = cfg->cbb;
  D.44844->last_ins = ins;
  goto <D.44848>;
  <D.44847>:
  D.44844 = cfg->cbb;
  D.44844 = cfg->cbb;
  D.44844->last_ins = ins;
  D.44845 = D.44844->last_ins;
  D.44844->code = D.44845;
  <D.44848>:
  lmf_reg = ins->dreg;
  D.44780 = BIT_FIELD_REF <*cfg, 8, 5624>;
  D.44851 = D.44780 & 8;
  if (D.44851 != 0) goto <D.44852>; else goto <D.44849>;
  <D.44852>:
  D.44853 = mini_tls_get_supported (cfg, 3);
  if (D.44853 != 0) goto <D.44854>; else goto <D.44849>;
  <D.44854>:
  D.44855 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.44855;
  D.44784 = cfg->mempool;
  ins = mono_mempool_alloc (D.44784, 80);
  ins->data.op[1].const_val = 0;
  D.44785 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44785;
  ins->prev = 0B;
  D.44786 = ins->prev;
  ins->next = D.44786;
  ins->opcode = 391;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44787 = ins->sreg3;
  ins->sreg2 = D.44787;
  D.44788 = ins->sreg2;
  ins->sreg1 = D.44788;
  D.44789 = cfg->ip;
  ins->cil_code = D.44789;
  ins->dreg = prev_lmf_reg;
  ins->sreg1 = lmf_reg;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  if (D.44845 != 0B) goto <D.44856>; else goto <D.44857>;
  <D.44856>:
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  D.44845->next = ins;
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  ins->prev = D.44845;
  D.44844 = cfg->cbb;
  D.44844->last_ins = ins;
  goto <D.44858>;
  <D.44857>:
  D.44844 = cfg->cbb;
  D.44844 = cfg->cbb;
  D.44844->last_ins = ins;
  D.44845 = D.44844->last_ins;
  D.44844->code = D.44845;
  <D.44858>:
  emit_tls_set (cfg, prev_lmf_reg, 3);
  goto <D.44850>;
  <D.44849>:
  D.44859 = cfg->lmf_addr_var;
  if (D.44859 == 0B) goto <D.44860>; else goto <D.44861>;
  <D.44860>:
  D.44862 = mono_defaults.int_class;
  D.44863 = &D.44862->byval_arg;
  D.44864 = mono_compile_create_var (cfg, D.44863, 329);
  cfg->lmf_addr_var = D.44864;
  <D.44861>:
  D.44859 = cfg->lmf_addr_var;
  lmf_addr_reg = D.44859->dreg;
  D.44865 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.44865;
  D.44784 = cfg->mempool;
  ins = mono_mempool_alloc (D.44784, 80);
  ins->data.op[1].const_val = 0;
  D.44785 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44785;
  ins->prev = 0B;
  D.44786 = ins->prev;
  ins->next = D.44786;
  ins->opcode = 391;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44787 = ins->sreg3;
  ins->sreg2 = D.44787;
  D.44788 = ins->sreg2;
  ins->sreg1 = D.44788;
  D.44789 = cfg->ip;
  ins->cil_code = D.44789;
  ins->dreg = prev_lmf_reg;
  ins->sreg1 = lmf_reg;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  if (D.44845 != 0B) goto <D.44866>; else goto <D.44867>;
  <D.44866>:
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  D.44845->next = ins;
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  ins->prev = D.44845;
  D.44844 = cfg->cbb;
  D.44844->last_ins = ins;
  goto <D.44868>;
  <D.44867>:
  D.44844 = cfg->cbb;
  D.44844 = cfg->cbb;
  D.44844->last_ins = ins;
  D.44845 = D.44844->last_ins;
  D.44844->code = D.44845;
  <D.44868>:
  D.44784 = cfg->mempool;
  ins = mono_mempool_alloc (D.44784, 80);
  ins->data.op[1].const_val = 0;
  D.44785 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44785;
  ins->prev = 0B;
  D.44786 = ins->prev;
  ins->next = D.44786;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44787 = ins->sreg3;
  ins->sreg2 = D.44787;
  D.44788 = ins->sreg2;
  ins->sreg1 = D.44788;
  D.44789 = cfg->ip;
  ins->cil_code = D.44789;
  ins->sreg1 = prev_lmf_reg;
  ins->dreg = lmf_addr_reg;
  ins->data.op[0].const_val = 0;
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  if (D.44845 != 0B) goto <D.44869>; else goto <D.44870>;
  <D.44869>:
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  D.44845->next = ins;
  D.44844 = cfg->cbb;
  D.44845 = D.44844->last_ins;
  ins->prev = D.44845;
  D.44844 = cfg->cbb;
  D.44844->last_ins = ins;
  goto <D.44871>;
  <D.44870>:
  D.44844 = cfg->cbb;
  D.44844 = cfg->cbb;
  D.44844->last_ins = ins;
  D.44845 = D.44844->last_ins;
  D.44844->code = D.44845;
  <D.44871>:
  <D.44850>:
}


emit_tls_set (struct MonoCompile * cfg, int sreg1, int tls_key)
{
  unsigned char D.44873;
  unsigned char D.44874;
  struct MonoMemPool * D.44879;
  long int D.44880;
  struct MonoInst * D.44881;
  guint16 iftmp.407;
  int D.44886;
  int D.44887;
  const unsigned char * D.44888;
  long int D.44889;
  void * D.44890;
  unsigned int D.44891;
  int D.44892;
  <unnamed type> tls_key.408;
  long int D.44895;
  void * D.44896;
  unsigned int D.44897;
  int D.44898;
  struct MonoBasicBlock * D.44899;
  struct MonoInst * D.44900;
  long int D.44904;
  struct MonoInst * D.44905;
  int D.44906;
  int D.44907;
  int D.44908;
  int D.44913;
  long int D.44914;
  struct MonoInst * ins;
  struct MonoInst * c;

  D.44873 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.44874 = D.44873 & 64;
  if (D.44874 != 0) goto <D.44875>; else goto <D.44876>;
  <D.44875>:
  D.44873 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.44874 = D.44873 & 64;
  if (D.44874 != 0) goto <D.44877>; else goto <D.44878>;
  <D.44877>:
  D.44879 = cfg->mempool;
  c = mono_mempool_alloc (D.44879, 80);
  c->data.op[1].const_val = 0;
  D.44880 = c->data.op[1].const_val;
  c->data.op[0].const_val = D.44880;
  c->prev = 0B;
  D.44881 = c->prev;
  c->next = D.44881;
  D.44873 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.44874 = D.44873 & 64;
  if (D.44874 != 0) goto <D.44883>; else goto <D.44884>;
  <D.44883>:
  iftmp.407 = 736;
  goto <D.44885>;
  <D.44884>:
  iftmp.407 = 363;
  <D.44885>:
  c->opcode = iftmp.407;
  c->flags = 0;
  c->type = 0;
  c->dreg = -1;
  c->sreg3 = -1;
  D.44886 = c->sreg3;
  c->sreg2 = D.44886;
  D.44887 = c->sreg2;
  c->sreg1 = D.44887;
  D.44888 = cfg->ip;
  c->cil_code = D.44888;
  D.44889 = (long int) tls_key;
  D.44890 = (void *) D.44889;
  c->data.op[0].p = D.44890;
  c->data.op[1].src = 48B;
  c->type = 3;
  D.44891 = alloc_dreg (cfg, 3);
  D.44892 = (int) D.44891;
  c->dreg = D.44892;
  goto <D.44893>;
  <D.44878>:
  {
    int _offset;

    tls_key.408 = (<unnamed type>) tls_key;
    _offset = mini_get_tls_offset (tls_key.408);
    D.44879 = cfg->mempool;
    c = mono_mempool_alloc (D.44879, 80);
    c->data.op[1].const_val = 0;
    D.44880 = c->data.op[1].const_val;
    c->data.op[0].const_val = D.44880;
    c->prev = 0B;
    D.44881 = c->prev;
    c->next = D.44881;
    c->opcode = 363;
    c->flags = 0;
    c->type = 0;
    c->dreg = -1;
    c->sreg3 = -1;
    D.44886 = c->sreg3;
    c->sreg2 = D.44886;
    D.44887 = c->sreg2;
    c->sreg1 = D.44887;
    D.44888 = cfg->ip;
    c->cil_code = D.44888;
    D.44895 = (long int) _offset;
    D.44896 = (void *) D.44895;
    c->data.op[0].p = D.44896;
    c->type = 3;
    D.44897 = alloc_dreg (cfg, 3);
    D.44898 = (int) D.44897;
    c->dreg = D.44898;
  }
  <D.44893>:
  D.44899 = cfg->cbb;
  D.44900 = D.44899->last_ins;
  if (D.44900 != 0B) goto <D.44901>; else goto <D.44902>;
  <D.44901>:
  D.44899 = cfg->cbb;
  D.44900 = D.44899->last_ins;
  D.44900->next = c;
  D.44899 = cfg->cbb;
  D.44900 = D.44899->last_ins;
  c->prev = D.44900;
  D.44899 = cfg->cbb;
  D.44899->last_ins = c;
  goto <D.44903>;
  <D.44902>:
  D.44899 = cfg->cbb;
  D.44899 = cfg->cbb;
  D.44899->last_ins = c;
  D.44900 = D.44899->last_ins;
  D.44899->code = D.44900;
  <D.44903>:
  D.44879 = cfg->mempool;
  ins = mono_mempool_alloc (D.44879, 80);
  ins->data.op[1].const_val = 0;
  D.44904 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44904;
  ins->prev = 0B;
  D.44905 = ins->prev;
  ins->next = D.44905;
  ins->opcode = 798;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44906 = ins->sreg3;
  ins->sreg2 = D.44906;
  D.44907 = ins->sreg2;
  ins->sreg1 = D.44907;
  D.44888 = cfg->ip;
  ins->cil_code = D.44888;
  ins->sreg1 = sreg1;
  D.44908 = c->dreg;
  ins->sreg2 = D.44908;
  D.44899 = cfg->cbb;
  D.44900 = D.44899->last_ins;
  if (D.44900 != 0B) goto <D.44909>; else goto <D.44910>;
  <D.44909>:
  D.44899 = cfg->cbb;
  D.44900 = D.44899->last_ins;
  D.44900->next = ins;
  D.44899 = cfg->cbb;
  D.44900 = D.44899->last_ins;
  ins->prev = D.44900;
  D.44899 = cfg->cbb;
  D.44899->last_ins = ins;
  goto <D.44911>;
  <D.44910>:
  D.44899 = cfg->cbb;
  D.44899 = cfg->cbb;
  D.44899->last_ins = ins;
  D.44900 = D.44899->last_ins;
  D.44899->code = D.44900;
  <D.44911>:
  goto <D.44912>;
  <D.44876>:
  D.44879 = cfg->mempool;
  ins = mono_mempool_alloc (D.44879, 80);
  ins->data.op[1].const_val = 0;
  D.44904 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.44904;
  ins->prev = 0B;
  D.44905 = ins->prev;
  ins->next = D.44905;
  ins->opcode = 797;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.44906 = ins->sreg3;
  ins->sreg2 = D.44906;
  D.44907 = ins->sreg2;
  ins->sreg1 = D.44907;
  D.44888 = cfg->ip;
  ins->cil_code = D.44888;
  ins->sreg1 = sreg1;
  tls_key.408 = (<unnamed type>) tls_key;
  D.44913 = mini_get_tls_offset (tls_key.408);
  D.44914 = (long int) D.44913;
  ins->data.op[0].const_val = D.44914;
  D.44899 = cfg->cbb;
  D.44900 = D.44899->last_ins;
  if (D.44900 != 0B) goto <D.44915>; else goto <D.44916>;
  <D.44915>:
  D.44899 = cfg->cbb;
  D.44900 = D.44899->last_ins;
  D.44900->next = ins;
  D.44899 = cfg->cbb;
  D.44900 = D.44899->last_ins;
  ins->prev = D.44900;
  D.44899 = cfg->cbb;
  D.44899->last_ins = ins;
  goto <D.44917>;
  <D.44916>:
  D.44899 = cfg->cbb;
  D.44899 = cfg->cbb;
  D.44899->last_ins = ins;
  D.44900 = D.44899->last_ins;
  D.44899->code = D.44900;
  <D.44917>:
  <D.44912>:
}


ldind_to_load_membase (int opcode)
{
  int D.44918;

  switch (opcode) <default: <D.28589>, case 70: <D.28578>, case 71: <D.28579>, case 72: <D.28580>, case 73: <D.28581>, case 74: <D.28582>, case 75: <D.28583>, case 76: <D.28586>, case 77: <D.28584>, case 78: <D.28587>, case 79: <D.28588>, case 80: <D.28585>>
  <D.28578>:
  D.44918 = 392;
  return D.44918;
  <D.28579>:
  D.44918 = 393;
  return D.44918;
  <D.28580>:
  D.44918 = 394;
  return D.44918;
  <D.28581>:
  D.44918 = 395;
  return D.44918;
  <D.28582>:
  D.44918 = 396;
  return D.44918;
  <D.28583>:
  D.44918 = 397;
  return D.44918;
  <D.28584>:
  D.44918 = 391;
  return D.44918;
  <D.28585>:
  D.44918 = 391;
  return D.44918;
  <D.28586>:
  D.44918 = 398;
  return D.44918;
  <D.28587>:
  D.44918 = 399;
  return D.44918;
  <D.28588>:
  D.44918 = 400;
  return D.44918;
  <D.28589>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12163);
  D.44918 = -1;
  return D.44918;
}


stind_to_store_membase (int opcode)
{
  int D.44920;

  switch (opcode) <default: <D.28601>, case 81: <D.28597>, case 82: <D.28593>, case 83: <D.28594>, case 84: <D.28595>, case 85: <D.28598>, case 86: <D.28599>, case 87: <D.28600>, case 223: <D.28596>>
  <D.28593>:
  D.44920 = 375;
  return D.44920;
  <D.28594>:
  D.44920 = 376;
  return D.44920;
  <D.28595>:
  D.44920 = 377;
  return D.44920;
  <D.28596>:
  <D.28597>:
  D.44920 = 374;
  return D.44920;
  <D.28598>:
  D.44920 = 378;
  return D.44920;
  <D.28599>:
  D.44920 = 379;
  return D.44920;
  <D.28600>:
  D.44920 = 380;
  return D.44920;
  <D.28601>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12189);
  D.44920 = -1;
  return D.44920;
}


is_exception_class (struct MonoClass * class)
{
  struct MonoClass * D.44922;
  gboolean D.44925;

  goto <D.27467>;
  <D.27466>:
  D.44922 = mono_defaults.exception_class;
  if (D.44922 == class) goto <D.44923>; else goto <D.44924>;
  <D.44923>:
  D.44925 = 1;
  return D.44925;
  <D.44924>:
  class = class->parent;
  <D.27467>:
  if (class != 0B) goto <D.27466>; else goto <D.27468>;
  <D.27468>:
  D.44925 = 0;
  return D.44925;
}


check_call_signature (struct MonoCompile * cfg, struct MonoMethodSignature * sig, struct MonoInst * * args)
{
  unsigned char D.44927;
  unsigned char D.44928;
  struct MonoInst * D.44931;
  unsigned char D.44932;
  unsigned char D.44933;
  _Bool D.44934;
  _Bool D.44935;
  _Bool D.44936;
  int D.44939;
  struct MonoType * D.44940;
  unsigned char D.44941;
  unsigned char D.44942;
  long unsigned int D.44945;
  long unsigned int D.44946;
  struct MonoInst * * D.44947;
  struct MonoInst * D.44948;
  unsigned char D.44949;
  _Bool D.44950;
  _Bool D.44951;
  _Bool D.44952;
  struct MonoGenericSharingContext * D.44955;
  unsigned char D.44956;
  int D.44957;
  unsigned char D.44958;
  _Bool D.44959;
  _Bool D.44960;
  _Bool D.44961;
  unsigned char D.44964;
  _Bool D.44965;
  _Bool D.44966;
  _Bool D.44967;
  unsigned char D.44970;
  struct MonoClass * D.44981;
  unsigned char D.44982;
  unsigned char D.44983;
  struct MonoGenericClass * D.44990;
  struct MonoClass * D.44991;
  short unsigned int D.44994;
  int D.44995;
  struct MonoType * simple_type;
  int i;
  void handle_enum = <<< error >>>;

  D.44927 = BIT_FIELD_REF <*sig, 8, 112>;
  D.44928 = D.44927 & 64;
  if (D.44928 != 0) goto <D.44929>; else goto <D.44930>;
  <D.44929>:
  D.44931 = *args;
  D.44932 = D.44931->type;
  D.44933 = D.44932 + 251;
  D.44934 = D.44933 > 1;
  D.44935 = D.44932 != 3;
  D.44936 = D.44934 & D.44935;
  if (D.44936 != 0) goto <D.44937>; else goto <D.44938>;
  <D.44937>:
  D.44939 = 1;
  return D.44939;
  <D.44938>:
  args = args + 8;
  <D.44930>:
  i = 0;
  goto <D.25638>;
  <D.25637>:
  D.44940 = sig->params[i];
  D.44941 = BIT_FIELD_REF <*D.44940, 8, 88>;
  D.44942 = D.44941 & 64;
  if (D.44942 != 0) goto <D.44943>; else goto <D.44944>;
  <D.44943>:
  D.44945 = (long unsigned int) i;
  D.44946 = D.44945 * 8;
  D.44947 = args + D.44946;
  D.44948 = *D.44947;
  D.44949 = D.44948->type;
  D.44950 = D.44949 != 5;
  D.44951 = D.44949 != 3;
  D.44952 = D.44950 & D.44951;
  if (D.44952 != 0) goto <D.44953>; else goto <D.44954>;
  <D.44953>:
  D.44939 = 1;
  return D.44939;
  <D.44954>:
  // predicted unlikely by continue predictor.
  goto <D.25606>;
  <D.44944>:
  simple_type = sig->params[i];
  D.44955 = cfg->generic_sharing_context;
  simple_type = mini_get_basic_type_from_generic (D.44955, simple_type);
  handle_enum:
  D.44956 = simple_type->type;
  D.44957 = (int) D.44956;
  switch (D.44957) <default: <D.25635>, case 1: <D.25608>, case 2: <D.25611>, case 3: <D.25614>, case 4: <D.25609>, case 5: <D.25610>, case 6: <D.25612>, case 7: <D.25613>, case 8: <D.25615>, case 9: <D.25616>, case 10: <D.25626>, case 11: <D.25627>, case 12: <D.25628>, case 13: <D.25629>, case 14: <D.25622>, case 15: <D.25619>, case 17: <D.25630>, case 18: <D.25621>, case 19: <D.25633>, case 20: <D.25625>, case 21: <D.25632>, case 22: <D.25631>, case 24: <D.25617>, case 25: <D.25618>, case 27: <D.25620>, case 28: <D.25623>, case 29: <D.25624>, case 30: <D.25634>>
  <D.25608>:
  D.44939 = 1;
  return D.44939;
  <D.25609>:
  <D.25610>:
  <D.25611>:
  <D.25612>:
  <D.25613>:
  <D.25614>:
  <D.25615>:
  <D.25616>:
  D.44945 = (long unsigned int) i;
  D.44946 = D.44945 * 8;
  D.44947 = args + D.44946;
  D.44948 = *D.44947;
  D.44958 = D.44948->type;
  D.44959 = D.44958 != 1;
  D.44960 = D.44958 != 3;
  D.44961 = D.44959 & D.44960;
  if (D.44961 != 0) goto <D.44962>; else goto <D.44963>;
  <D.44962>:
  D.44939 = 1;
  return D.44939;
  <D.44963>:
  // predicted unlikely by continue predictor.
  goto <D.25606>;
  <D.25617>:
  <D.25618>:
  <D.25619>:
  <D.25620>:
  D.44945 = (long unsigned int) i;
  D.44946 = D.44945 * 8;
  D.44947 = args + D.44946;
  D.44948 = *D.44947;
  D.44964 = D.44948->type;
  D.44965 = D.44964 != 1;
  D.44966 = D.44964 != 3;
  D.44967 = D.44965 & D.44966;
  if (D.44967 != 0) goto <D.44968>; else goto <D.44969>;
  <D.44968>:
  D.44945 = (long unsigned int) i;
  D.44946 = D.44945 * 8;
  D.44947 = args + D.44946;
  D.44948 = *D.44947;
  D.44970 = D.44948->type;
  if (D.44970 != 5) goto <D.44971>; else goto <D.44972>;
  <D.44971>:
  D.44945 = (long unsigned int) i;
  D.44946 = D.44945 * 8;
  D.44947 = args + D.44946;
  D.44948 = *D.44947;
  D.44970 = D.44948->type;
  if (D.44970 != 6) goto <D.44973>; else goto <D.44974>;
  <D.44973>:
  D.44939 = 1;
  return D.44939;
  <D.44974>:
  <D.44972>:
  <D.44969>:
  // predicted unlikely by continue predictor.
  goto <D.25606>;
  <D.25621>:
  <D.25622>:
  <D.25623>:
  <D.25624>:
  <D.25625>:
  D.44945 = (long unsigned int) i;
  D.44946 = D.44945 * 8;
  D.44947 = args + D.44946;
  D.44948 = *D.44947;
  D.44970 = D.44948->type;
  if (D.44970 != 6) goto <D.44975>; else goto <D.44976>;
  <D.44975>:
  D.44939 = 1;
  return D.44939;
  <D.44976>:
  // predicted unlikely by continue predictor.
  goto <D.25606>;
  <D.25626>:
  <D.25627>:
  D.44945 = (long unsigned int) i;
  D.44946 = D.44945 * 8;
  D.44947 = args + D.44946;
  D.44948 = *D.44947;
  D.44970 = D.44948->type;
  if (D.44970 != 2) goto <D.44977>; else goto <D.44978>;
  <D.44977>:
  D.44939 = 1;
  return D.44939;
  <D.44978>:
  // predicted unlikely by continue predictor.
  goto <D.25606>;
  <D.25628>:
  <D.25629>:
  D.44945 = (long unsigned int) i;
  D.44946 = D.44945 * 8;
  D.44947 = args + D.44946;
  D.44948 = *D.44947;
  D.44970 = D.44948->type;
  if (D.44970 != 4) goto <D.44979>; else goto <D.44980>;
  <D.44979>:
  D.44939 = 1;
  return D.44939;
  <D.44980>:
  // predicted unlikely by continue predictor.
  goto <D.25606>;
  <D.25630>:
  D.44981 = simple_type->data.klass;
  D.44982 = BIT_FIELD_REF <*D.44981, 8, 256>;
  D.44983 = D.44982 & 16;
  if (D.44983 != 0) goto <D.44984>; else goto <D.44985>;
  <D.44984>:
  D.44981 = simple_type->data.klass;
  simple_type = mono_class_enum_basetype (D.44981);
  goto handle_enum;
  <D.44985>:
  D.44945 = (long unsigned int) i;
  D.44946 = D.44945 * 8;
  D.44947 = args + D.44946;
  D.44948 = *D.44947;
  D.44970 = D.44948->type;
  if (D.44970 != 7) goto <D.44986>; else goto <D.44987>;
  <D.44986>:
  D.44939 = 1;
  return D.44939;
  <D.44987>:
  // predicted unlikely by continue predictor.
  goto <D.25606>;
  <D.25631>:
  D.44945 = (long unsigned int) i;
  D.44946 = D.44945 * 8;
  D.44947 = args + D.44946;
  D.44948 = *D.44947;
  D.44970 = D.44948->type;
  if (D.44970 != 7) goto <D.44988>; else goto <D.44989>;
  <D.44988>:
  D.44939 = 1;
  return D.44939;
  <D.44989>:
  // predicted unlikely by continue predictor.
  goto <D.25606>;
  <D.25632>:
  D.44990 = simple_type->data.generic_class;
  D.44991 = D.44990->container_class;
  simple_type = &D.44991->byval_arg;
  goto handle_enum;
  <D.25633>:
  <D.25634>:
  D.44945 = (long unsigned int) i;
  D.44946 = D.44945 * 8;
  D.44947 = args + D.44946;
  D.44948 = *D.44947;
  D.44970 = D.44948->type;
  if (D.44970 != 7) goto <D.44992>; else goto <D.44993>;
  <D.44992>:
  D.44939 = 1;
  return D.44939;
  <D.44993>:
  // predicted unlikely by continue predictor.
  goto <D.25606>;
  <D.25635>:
  D.44956 = simple_type->type;
  D.44957 = (int) D.44956;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in check_call_signature", D.44957);
  <D.25636>:
  goto <D.25636>;
  <D.25606>:
  i = i + 1;
  <D.25638>:
  D.44994 = sig->param_count;
  D.44995 = (int) D.44994;
  if (D.44995 > i) goto <D.25637>; else goto <D.25639>;
  <D.25639>:
  D.44939 = 0;
  return D.44939;
}


handle_array_new (struct MonoCompile * cfg, int rank, struct MonoInst * * sp, unsigned char * ip)
{
  unsigned int D.44997;
  unsigned int D.44998;
  struct MonoInst * D.44999;
  struct MonoMethodSignature * D.45000;
  const void * D.45001;
  struct MonoJitICallInfo * info;

  info = mono_get_array_new_va_icall (rank);
  D.44997 = cfg->flags;
  D.44998 = D.44997 | 8;
  cfg->flags = D.44998;
  cfg->disable_llvm = 1;
  D.45000 = info->sig;
  D.45001 = mono_icall_get_wrapper (info);
  D.44999 = mono_emit_native_call (cfg, D.45001, D.45000, sp);
  return D.44999;
}


emit_init_rvar (struct MonoCompile * cfg, int dreg, struct MonoType * rtype)
{
  unsigned char D.45003;
  unsigned char D.45004;
  unsigned char D.45005;
  struct MonoMemPool * D.45008;
  long int D.45009;
  struct MonoInst * D.45010;
  int D.45011;
  int D.45012;
  const unsigned char * D.45013;
  struct MonoBasicBlock * D.45014;
  struct MonoInst * D.45015;
  unsigned int t.409;
  unsigned int D.45021;
  long int D.45024;
  struct MonoInst * D.45025;
  int D.45026;
  int D.45027;
  unsigned int D.45032;
  long int D.45035;
  struct MonoInst * D.45036;
  int D.45037;
  int D.45038;
  unsigned int D.45043;
  long int D.45046;
  struct MonoInst * D.45047;
  int D.45048;
  int D.45049;
  _Bool D.45057;
  _Bool D.45058;
  _Bool D.45059;
  int D.45062;
  long int D.45063;
  struct MonoInst * D.45064;
  guint16 iftmp.410;
  unsigned int D.45068;
  unsigned int D.45069;
  struct MonoClass * D.45071;
  unsigned char D.45072;
  unsigned char D.45073;
  int D.45075;
  int D.45076;
  struct MonoClass * D.45077;
  _Bool D.45083;
  _Bool D.45084;
  _Bool D.45085;
  int D.45087;
  long int D.45089;
  struct MonoInst * D.45090;
  guint16 iftmp.411;
  struct MonoClass * D.45095;
  unsigned char D.45096;
  unsigned char D.45097;
  int D.45099;
  int D.45100;
  struct MonoClass * D.45101;
  long int D.45105;
  struct MonoInst * D.45106;
  int D.45107;
  int D.45108;
  static double r8_0 = 0.0;
  struct MonoInst * ins;
  int t;

  rtype = mini_replace_type (rtype);
  D.45003 = rtype->type;
  t = (int) D.45003;
  D.45004 = BIT_FIELD_REF <*rtype, 8, 88>;
  D.45005 = D.45004 & 64;
  if (D.45005 != 0) goto <D.45006>; else goto <D.45007>;
  <D.45006>:
  {
    struct MonoInst * inst;

    D.45008 = cfg->mempool;
    inst = mono_mempool_alloc (D.45008, 80);
    inst->data.op[1].const_val = 0;
    D.45009 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45009;
    inst->prev = 0B;
    D.45010 = inst->prev;
    inst->next = D.45010;
    inst->opcode = 363;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45011 = inst->sreg3;
    inst->sreg2 = D.45011;
    D.45012 = inst->sreg2;
    inst->sreg1 = D.45012;
    D.45013 = cfg->ip;
    inst->cil_code = D.45013;
    inst->dreg = dreg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    if (D.45015 != 0B) goto <D.45016>; else goto <D.45017>;
    <D.45016>:
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    D.45015->next = inst;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    inst->prev = D.45015;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    goto <D.45018>;
    <D.45017>:
    D.45014 = cfg->cbb;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    D.45015 = D.45014->last_ins;
    D.45014->code = D.45015;
    <D.45018>:
  }
  goto <D.45019>;
  <D.45007>:
  t.409 = (unsigned int) t;
  D.45021 = t.409 + 4294967294;
  if (D.45021 <= 7) goto <D.45022>; else goto <D.45023>;
  <D.45022>:
  {
    struct MonoInst * inst;

    D.45008 = cfg->mempool;
    inst = mono_mempool_alloc (D.45008, 80);
    inst->data.op[1].const_val = 0;
    D.45024 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45024;
    inst->prev = 0B;
    D.45025 = inst->prev;
    inst->next = D.45025;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45026 = inst->sreg3;
    inst->sreg2 = D.45026;
    D.45027 = inst->sreg2;
    inst->sreg1 = D.45027;
    D.45013 = cfg->ip;
    inst->cil_code = D.45013;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    if (D.45015 != 0B) goto <D.45028>; else goto <D.45029>;
    <D.45028>:
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    D.45015->next = inst;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    inst->prev = D.45015;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    goto <D.45030>;
    <D.45029>:
    D.45014 = cfg->cbb;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    D.45015 = D.45014->last_ins;
    D.45014->code = D.45015;
    <D.45030>:
  }
  goto <D.45031>;
  <D.45023>:
  t.409 = (unsigned int) t;
  D.45032 = t.409 + 4294967286;
  if (D.45032 <= 1) goto <D.45033>; else goto <D.45034>;
  <D.45033>:
  {
    struct MonoInst * inst;

    D.45008 = cfg->mempool;
    inst = mono_mempool_alloc (D.45008, 80);
    inst->data.op[1].const_val = 0;
    D.45035 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45035;
    inst->prev = 0B;
    D.45036 = inst->prev;
    inst->next = D.45036;
    inst->opcode = 363;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45037 = inst->sreg3;
    inst->sreg2 = D.45037;
    D.45038 = inst->sreg2;
    inst->sreg1 = D.45038;
    D.45013 = cfg->ip;
    inst->cil_code = D.45013;
    inst->dreg = dreg;
    inst->data.i8const = 0;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    if (D.45015 != 0B) goto <D.45039>; else goto <D.45040>;
    <D.45039>:
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    D.45015->next = inst;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    inst->prev = D.45015;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    goto <D.45041>;
    <D.45040>:
    D.45014 = cfg->cbb;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    D.45015 = D.45014->last_ins;
    D.45014->code = D.45015;
    <D.45041>:
  }
  goto <D.45042>;
  <D.45034>:
  t.409 = (unsigned int) t;
  D.45043 = t.409 + 4294967284;
  if (D.45043 <= 1) goto <D.45044>; else goto <D.45045>;
  <D.45044>:
  D.45008 = cfg->mempool;
  ins = mono_mempool_alloc (D.45008, 80);
  ins->data.op[1].const_val = 0;
  D.45046 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.45046;
  ins->prev = 0B;
  D.45047 = ins->prev;
  ins->next = D.45047;
  ins->opcode = 365;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.45048 = ins->sreg3;
  ins->sreg2 = D.45048;
  D.45049 = ins->sreg2;
  ins->sreg1 = D.45049;
  D.45013 = cfg->ip;
  ins->cil_code = D.45013;
  ins->type = 4;
  ins->data.op[0].p = &r8_0;
  ins->dreg = dreg;
  D.45014 = cfg->cbb;
  D.45015 = D.45014->last_ins;
  if (D.45015 != 0B) goto <D.45050>; else goto <D.45051>;
  <D.45050>:
  D.45014 = cfg->cbb;
  D.45015 = D.45014->last_ins;
  D.45015->next = ins;
  D.45014 = cfg->cbb;
  D.45015 = D.45014->last_ins;
  ins->prev = D.45015;
  D.45014 = cfg->cbb;
  D.45014->last_ins = ins;
  goto <D.45052>;
  <D.45051>:
  D.45014 = cfg->cbb;
  D.45014 = cfg->cbb;
  D.45014->last_ins = ins;
  D.45015 = D.45014->last_ins;
  D.45014->code = D.45015;
  <D.45052>:
  goto <D.45053>;
  <D.45045>:
  D.45057 = t == 17;
  D.45058 = t == 22;
  D.45059 = D.45057 | D.45058;
  if (D.45059 != 0) goto <D.45054>; else goto <D.45060>;
  <D.45060>:
  if (t == 21) goto <D.45061>; else goto <D.45055>;
  <D.45061>:
  D.45062 = mono_type_generic_inst_is_valuetype (rtype);
  if (D.45062 != 0) goto <D.45054>; else goto <D.45055>;
  <D.45054>:
  {
    struct MonoInst * inst;

    D.45008 = cfg->mempool;
    inst = mono_mempool_alloc (D.45008, 80);
    inst->data.op[1].const_val = 0;
    D.45063 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45063;
    inst->prev = 0B;
    D.45064 = inst->prev;
    inst->next = D.45064;
    D.45068 = cfg->opt;
    D.45069 = D.45068 & 67108864;
    if (D.45069 != 0) goto <D.45070>; else goto <D.45066>;
    <D.45070>:
    D.45071 = mono_class_from_mono_type (rtype);
    D.45072 = BIT_FIELD_REF <*D.45071, 8, 288>;
    D.45073 = D.45072 & 2;
    if (D.45073 != 0) goto <D.45074>; else goto <D.45066>;
    <D.45074>:
    iftmp.410 = 963;
    goto <D.45067>;
    <D.45066>:
    iftmp.410 = 432;
    <D.45067>:
    inst->opcode = iftmp.410;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45075 = inst->sreg3;
    inst->sreg2 = D.45075;
    D.45076 = inst->sreg2;
    inst->sreg1 = D.45076;
    D.45013 = cfg->ip;
    inst->cil_code = D.45013;
    inst->dreg = dreg;
    inst->type = 7;
    D.45077 = mono_class_from_mono_type (rtype);
    inst->klass = D.45077;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    if (D.45015 != 0B) goto <D.45078>; else goto <D.45079>;
    <D.45078>:
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    D.45015->next = inst;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    inst->prev = D.45015;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    goto <D.45080>;
    <D.45079>:
    D.45014 = cfg->cbb;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    D.45015 = D.45014->last_ins;
    D.45014->code = D.45015;
    <D.45080>:
  }
  goto <D.45056>;
  <D.45055>:
  D.45083 = t == 19;
  D.45084 = t == 30;
  D.45085 = D.45083 | D.45084;
  if (D.45085 != 0) goto <D.45086>; else goto <D.45081>;
  <D.45086>:
  D.45087 = mini_type_var_is_vt (cfg, rtype);
  if (D.45087 != 0) goto <D.45088>; else goto <D.45081>;
  <D.45088>:
  {
    struct MonoInst * inst;

    D.45008 = cfg->mempool;
    inst = mono_mempool_alloc (D.45008, 80);
    inst->data.op[1].const_val = 0;
    D.45089 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45089;
    inst->prev = 0B;
    D.45090 = inst->prev;
    inst->next = D.45090;
    D.45068 = cfg->opt;
    D.45069 = D.45068 & 67108864;
    if (D.45069 != 0) goto <D.45094>; else goto <D.45092>;
    <D.45094>:
    D.45095 = mono_class_from_mono_type (rtype);
    D.45096 = BIT_FIELD_REF <*D.45095, 8, 288>;
    D.45097 = D.45096 & 2;
    if (D.45097 != 0) goto <D.45098>; else goto <D.45092>;
    <D.45098>:
    iftmp.411 = 963;
    goto <D.45093>;
    <D.45092>:
    iftmp.411 = 432;
    <D.45093>:
    inst->opcode = iftmp.411;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45099 = inst->sreg3;
    inst->sreg2 = D.45099;
    D.45100 = inst->sreg2;
    inst->sreg1 = D.45100;
    D.45013 = cfg->ip;
    inst->cil_code = D.45013;
    inst->dreg = dreg;
    inst->type = 7;
    D.45101 = mono_class_from_mono_type (rtype);
    inst->klass = D.45101;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    if (D.45015 != 0B) goto <D.45102>; else goto <D.45103>;
    <D.45102>:
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    D.45015->next = inst;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    inst->prev = D.45015;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    goto <D.45104>;
    <D.45103>:
    D.45014 = cfg->cbb;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    D.45015 = D.45014->last_ins;
    D.45014->code = D.45015;
    <D.45104>:
  }
  goto <D.45082>;
  <D.45081>:
  {
    struct MonoInst * inst;

    D.45008 = cfg->mempool;
    inst = mono_mempool_alloc (D.45008, 80);
    inst->data.op[1].const_val = 0;
    D.45105 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45105;
    inst->prev = 0B;
    D.45106 = inst->prev;
    inst->next = D.45106;
    inst->opcode = 363;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45107 = inst->sreg3;
    inst->sreg2 = D.45107;
    D.45108 = inst->sreg2;
    inst->sreg1 = D.45108;
    D.45013 = cfg->ip;
    inst->cil_code = D.45013;
    inst->dreg = dreg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    if (D.45015 != 0B) goto <D.45109>; else goto <D.45110>;
    <D.45109>:
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    D.45015->next = inst;
    D.45014 = cfg->cbb;
    D.45015 = D.45014->last_ins;
    inst->prev = D.45015;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    goto <D.45111>;
    <D.45110>:
    D.45014 = cfg->cbb;
    D.45014 = cfg->cbb;
    D.45014->last_ins = inst;
    D.45015 = D.45014->last_ins;
    D.45014->code = D.45015;
    <D.45111>:
  }
  <D.45082>:
  <D.45056>:
  <D.45053>:
  <D.45042>:
  <D.45031>:
  <D.45019>:
}


handle_alloc (struct MonoCompile * cfg, struct MonoClass * klass, gboolean for_box, int context_used)
{
  unsigned int D.45114;
  unsigned int D.45115;
  <unnamed type> rgctx_info.412;
  unsigned char D.45126;
  unsigned char D.45127;
  struct MonoMemPool * D.45128;
  void * D.45129;
  struct MonoInst * D.45130;
  long int D.45131;
  struct MonoInst * D.45132;
  int D.45133;
  int D.45134;
  const unsigned char * D.45135;
  struct MonoInst * * D.45136;
  long int D.45137;
  long unsigned int D.45138;
  long unsigned int D.45139;
  struct MonoInst * * D.45140;
  struct MonoInst * D.45141;
  struct MonoType * D.45142;
  unsigned int D.45143;
  short unsigned int D.45144;
  struct MonoClass * D.45145;
  int D.45146;
  unsigned char D.45147;
  <unnamed type> D.45148;
  unsigned int D.45149;
  int D.45150;
  short unsigned int D.45151;
  struct MonoClass * D.45154;
  void * D.45155;
  struct MonoDomain * D.45156;
  unsigned int D.45157;
  int D.45158;
  struct MonoBasicBlock * D.45159;
  struct MonoInst * D.45160;
  struct MonoInst * D.45169;
  void * D.45176;
  struct MonoInst * D.45177;
  long int D.45178;
  struct MonoInst * D.45179;
  int D.45180;
  int D.45181;
  long int D.45182;
  long unsigned int D.45183;
  long unsigned int D.45184;
  struct MonoInst * * D.45185;
  struct MonoInst * D.45186;
  struct MonoType * D.45187;
  unsigned int D.45188;
  short unsigned int D.45189;
  struct MonoClass * D.45190;
  int D.45191;
  unsigned char D.45192;
  <unnamed type> D.45193;
  unsigned int D.45194;
  int D.45195;
  short unsigned int D.45196;
  struct MonoClass * D.45199;
  void * D.45200;
  unsigned int D.45201;
  int D.45202;
  void * D.45206;
  struct MonoInst * D.45207;
  long int D.45208;
  struct MonoInst * D.45209;
  guint16 iftmp.413;
  int D.45214;
  int D.45215;
  unsigned int D.45216;
  int D.45217;
  unsigned char D.45224;
  unsigned char D.45225;
  unsigned int D.45227;
  struct MonoImage * D.45229;
  struct MonoImage * D.45230;
  struct MonoGenericClass * D.45232;
  void * D.45234;
  long int D.45235;
  long int D.45236;
  unsigned int D.45237;
  int D.45238;
  void * D.45246;
  guint16 iftmp.414;
  void * iftmp.415;
  unsigned int D.45255;
  int D.45256;
  int pass_lw.416;
  struct MonoClass * D.45263;
  int D.45264;
  long unsigned int D.45265;
  long unsigned int D.45266;
  long unsigned int D.45267;
  long unsigned int D.45268;
  void * D.45269;
  long int D.45270;
  unsigned int D.45271;
  int D.45272;
  void * D.45276;
  guint16 iftmp.417;
  void * iftmp.418;
  unsigned int D.45285;
  int D.45286;
  void * D.45291;
  guint16 iftmp.419;
  void * iftmp.420;
  unsigned int D.45300;
  int D.45301;
  struct MonoInst * iargs[2];
  void * alloc_ftn;

  try
    {
      if (context_used != 0) goto <D.45112>; else goto <D.45113>;
      <D.45112>:
      {
        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.45114 = cfg->opt;
            D.45115 = D.45114 & 512;
            if (D.45115 != 0) goto <D.45116>; else goto <D.45117>;
            <D.45116>:
            rgctx_info = 1;
            goto <D.45118>;
            <D.45117>:
            rgctx_info = 2;
            <D.45118>:
            rgctx_info.412 = (<unnamed type>) rgctx_info;
            data = emit_get_rgctx_klass (cfg, context_used, klass, rgctx_info.412);
            D.45114 = cfg->opt;
            D.45115 = D.45114 & 512;
            if (D.45115 != 0) goto <D.45120>; else goto <D.45121>;
            <D.45120>:
            D.45114 = cfg->opt;
            D.45115 = D.45114 & 512;
            if (D.45115 != 0) goto <D.45122>; else goto <D.45125>;
            <D.45125>:
            D.45126 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.45127 = D.45126 & 64;
            if (D.45127 != 0) goto <D.45122>; else goto <D.45123>;
            <D.45122>:
            {
              struct MonoInst * __domain_var;

              __domain_var = mono_get_domainvar (cfg);
              D.45128 = cfg->mempool;
              D.45129 = mono_mempool_alloc (D.45128, 80);
              iargs[0] = D.45129;
              D.45130 = iargs[0];
              D.45130 = iargs[0];
              D.45130->data.op[1].const_val = 0;
              D.45131 = D.45130->data.op[1].const_val;
              D.45130->data.op[0].const_val = D.45131;
              D.45130 = iargs[0];
              D.45130 = iargs[0];
              D.45130->prev = 0B;
              D.45132 = D.45130->prev;
              D.45130->next = D.45132;
              D.45130 = iargs[0];
              D.45130->opcode = 428;
              D.45130 = iargs[0];
              D.45130->flags = 0;
              D.45130 = iargs[0];
              D.45130->type = 0;
              D.45130 = iargs[0];
              D.45130->dreg = -1;
              D.45130 = iargs[0];
              D.45130 = iargs[0];
              D.45130 = iargs[0];
              D.45130->sreg3 = -1;
              D.45133 = D.45130->sreg3;
              D.45130->sreg2 = D.45133;
              D.45134 = D.45130->sreg2;
              D.45130->sreg1 = D.45134;
              D.45130 = iargs[0];
              D.45135 = cfg->ip;
              D.45130->cil_code = D.45135;
              D.45130 = iargs[0];
              D.45136 = cfg->varinfo;
              D.45137 = __domain_var->data.op[0].const_val;
              D.45138 = (long unsigned int) D.45137;
              D.45139 = D.45138 * 8;
              D.45140 = D.45136 + D.45139;
              D.45141 = *D.45140;
              D.45142 = D.45141->data.op[1].vtype;
              D.45143 = mono_type_to_regmove (cfg, D.45142);
              D.45144 = (short unsigned int) D.45143;
              D.45130->opcode = D.45144;
              D.45130 = iargs[0];
              D.45136 = cfg->varinfo;
              D.45137 = __domain_var->data.op[0].const_val;
              D.45138 = (long unsigned int) D.45137;
              D.45139 = D.45138 * 8;
              D.45140 = D.45136 + D.45139;
              D.45141 = *D.45140;
              D.45142 = D.45141->data.op[1].vtype;
              type_to_eval_stack_type (cfg, D.45142, D.45130);
              D.45130 = iargs[0];
              D.45136 = cfg->varinfo;
              D.45137 = __domain_var->data.op[0].const_val;
              D.45138 = (long unsigned int) D.45137;
              D.45139 = D.45138 * 8;
              D.45140 = D.45136 + D.45139;
              D.45141 = *D.45140;
              D.45145 = D.45141->klass;
              D.45130->klass = D.45145;
              D.45130 = iargs[0];
              D.45136 = cfg->varinfo;
              D.45137 = __domain_var->data.op[0].const_val;
              D.45138 = (long unsigned int) D.45137;
              D.45139 = D.45138 * 8;
              D.45140 = D.45136 + D.45139;
              D.45141 = *D.45140;
              D.45146 = D.45141->dreg;
              D.45130->sreg1 = D.45146;
              D.45130 = iargs[0];
              D.45130 = iargs[0];
              D.45147 = D.45130->type;
              D.45148 = (<unnamed type>) D.45147;
              D.45149 = alloc_dreg (cfg, D.45148);
              D.45150 = (int) D.45149;
              D.45130->dreg = D.45150;
              D.45130 = iargs[0];
              D.45151 = D.45130->opcode;
              if (D.45151 == 431) goto <D.45152>; else goto <D.45153>;
              <D.45152>:
              D.45130 = iargs[0];
              D.45136 = cfg->varinfo;
              D.45137 = __domain_var->data.op[0].const_val;
              D.45138 = (long unsigned int) D.45137;
              D.45139 = D.45138 * 8;
              D.45140 = D.45136 + D.45139;
              D.45141 = *D.45140;
              D.45142 = D.45141->data.op[1].vtype;
              D.45154 = mono_class_from_mono_type (D.45142);
              D.45130->klass = D.45154;
              <D.45153>:
            }
            goto <D.45124>;
            <D.45123>:
            D.45128 = cfg->mempool;
            D.45155 = mono_mempool_alloc (D.45128, 80);
            iargs[0] = D.45155;
            D.45130 = iargs[0];
            D.45130 = iargs[0];
            D.45130->data.op[1].const_val = 0;
            D.45131 = D.45130->data.op[1].const_val;
            D.45130->data.op[0].const_val = D.45131;
            D.45130 = iargs[0];
            D.45130 = iargs[0];
            D.45130->prev = 0B;
            D.45132 = D.45130->prev;
            D.45130->next = D.45132;
            D.45130 = iargs[0];
            D.45130->opcode = 363;
            D.45130 = iargs[0];
            D.45130->flags = 0;
            D.45130 = iargs[0];
            D.45130->type = 0;
            D.45130 = iargs[0];
            D.45130->dreg = -1;
            D.45130 = iargs[0];
            D.45130 = iargs[0];
            D.45130 = iargs[0];
            D.45130->sreg3 = -1;
            D.45133 = D.45130->sreg3;
            D.45130->sreg2 = D.45133;
            D.45134 = D.45130->sreg2;
            D.45130->sreg1 = D.45134;
            D.45130 = iargs[0];
            D.45135 = cfg->ip;
            D.45130->cil_code = D.45135;
            D.45130 = iargs[0];
            D.45156 = cfg->domain;
            D.45130->data.op[0].p = D.45156;
            D.45130 = iargs[0];
            D.45130->type = 3;
            D.45130 = iargs[0];
            D.45157 = alloc_dreg (cfg, 3);
            D.45158 = (int) D.45157;
            D.45130->dreg = D.45158;
            <D.45124>:
            D.45159 = cfg->cbb;
            D.45160 = D.45159->last_ins;
            if (D.45160 != 0B) goto <D.45161>; else goto <D.45162>;
            <D.45161>:
            D.45159 = cfg->cbb;
            D.45160 = D.45159->last_ins;
            D.45130 = iargs[0];
            D.45160->next = D.45130;
            D.45130 = iargs[0];
            D.45159 = cfg->cbb;
            D.45160 = D.45159->last_ins;
            D.45130->prev = D.45160;
            D.45159 = cfg->cbb;
            D.45130 = iargs[0];
            D.45159->last_ins = D.45130;
            goto <D.45163>;
            <D.45162>:
            D.45159 = cfg->cbb;
            D.45159 = cfg->cbb;
            D.45130 = iargs[0];
            D.45159->last_ins = D.45130;
            D.45160 = D.45159->last_ins;
            D.45159->code = D.45160;
            <D.45163>:
            iargs[1] = data;
            alloc_ftn = mono_object_new;
            goto <D.45164>;
            <D.45121>:
            iargs[0] = data;
            alloc_ftn = mono_object_new_specific;
            <D.45164>:
            if (managed_alloc != 0B) goto <D.45165>; else goto <D.45166>;
            <D.45165>:
            D.45114 = cfg->opt;
            D.45115 = D.45114 & 512;
            if (D.45115 == 0) goto <D.45167>; else goto <D.45168>;
            <D.45167>:
            D.45169 = mono_emit_method_call (cfg, managed_alloc, &iargs, 0B);
            return D.45169;
            <D.45168>:
            <D.45166>:
            D.45169 = mono_emit_jit_icall (cfg, alloc_ftn, &iargs);
            return D.45169;
          }
        finally
          {
            iargs = {CLOBBER};
          }
      }
      <D.45113>:
      D.45114 = cfg->opt;
      D.45115 = D.45114 & 512;
      if (D.45115 != 0) goto <D.45170>; else goto <D.45171>;
      <D.45170>:
      D.45114 = cfg->opt;
      D.45115 = D.45114 & 512;
      if (D.45115 != 0) goto <D.45172>; else goto <D.45175>;
      <D.45175>:
      D.45126 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.45127 = D.45126 & 64;
      if (D.45127 != 0) goto <D.45172>; else goto <D.45173>;
      <D.45172>:
      {
        struct MonoInst * __domain_var;

        __domain_var = mono_get_domainvar (cfg);
        D.45128 = cfg->mempool;
        D.45176 = mono_mempool_alloc (D.45128, 80);
        iargs[0] = D.45176;
        D.45177 = iargs[0];
        D.45177 = iargs[0];
        D.45177->data.op[1].const_val = 0;
        D.45178 = D.45177->data.op[1].const_val;
        D.45177->data.op[0].const_val = D.45178;
        D.45177 = iargs[0];
        D.45177 = iargs[0];
        D.45177->prev = 0B;
        D.45179 = D.45177->prev;
        D.45177->next = D.45179;
        D.45177 = iargs[0];
        D.45177->opcode = 428;
        D.45177 = iargs[0];
        D.45177->flags = 0;
        D.45177 = iargs[0];
        D.45177->type = 0;
        D.45177 = iargs[0];
        D.45177->dreg = -1;
        D.45177 = iargs[0];
        D.45177 = iargs[0];
        D.45177 = iargs[0];
        D.45177->sreg3 = -1;
        D.45180 = D.45177->sreg3;
        D.45177->sreg2 = D.45180;
        D.45181 = D.45177->sreg2;
        D.45177->sreg1 = D.45181;
        D.45177 = iargs[0];
        D.45135 = cfg->ip;
        D.45177->cil_code = D.45135;
        D.45177 = iargs[0];
        D.45136 = cfg->varinfo;
        D.45182 = __domain_var->data.op[0].const_val;
        D.45183 = (long unsigned int) D.45182;
        D.45184 = D.45183 * 8;
        D.45185 = D.45136 + D.45184;
        D.45186 = *D.45185;
        D.45187 = D.45186->data.op[1].vtype;
        D.45188 = mono_type_to_regmove (cfg, D.45187);
        D.45189 = (short unsigned int) D.45188;
        D.45177->opcode = D.45189;
        D.45177 = iargs[0];
        D.45136 = cfg->varinfo;
        D.45182 = __domain_var->data.op[0].const_val;
        D.45183 = (long unsigned int) D.45182;
        D.45184 = D.45183 * 8;
        D.45185 = D.45136 + D.45184;
        D.45186 = *D.45185;
        D.45187 = D.45186->data.op[1].vtype;
        type_to_eval_stack_type (cfg, D.45187, D.45177);
        D.45177 = iargs[0];
        D.45136 = cfg->varinfo;
        D.45182 = __domain_var->data.op[0].const_val;
        D.45183 = (long unsigned int) D.45182;
        D.45184 = D.45183 * 8;
        D.45185 = D.45136 + D.45184;
        D.45186 = *D.45185;
        D.45190 = D.45186->klass;
        D.45177->klass = D.45190;
        D.45177 = iargs[0];
        D.45136 = cfg->varinfo;
        D.45182 = __domain_var->data.op[0].const_val;
        D.45183 = (long unsigned int) D.45182;
        D.45184 = D.45183 * 8;
        D.45185 = D.45136 + D.45184;
        D.45186 = *D.45185;
        D.45191 = D.45186->dreg;
        D.45177->sreg1 = D.45191;
        D.45177 = iargs[0];
        D.45177 = iargs[0];
        D.45192 = D.45177->type;
        D.45193 = (<unnamed type>) D.45192;
        D.45194 = alloc_dreg (cfg, D.45193);
        D.45195 = (int) D.45194;
        D.45177->dreg = D.45195;
        D.45177 = iargs[0];
        D.45196 = D.45177->opcode;
        if (D.45196 == 431) goto <D.45197>; else goto <D.45198>;
        <D.45197>:
        D.45177 = iargs[0];
        D.45136 = cfg->varinfo;
        D.45182 = __domain_var->data.op[0].const_val;
        D.45183 = (long unsigned int) D.45182;
        D.45184 = D.45183 * 8;
        D.45185 = D.45136 + D.45184;
        D.45186 = *D.45185;
        D.45187 = D.45186->data.op[1].vtype;
        D.45199 = mono_class_from_mono_type (D.45187);
        D.45177->klass = D.45199;
        <D.45198>:
      }
      goto <D.45174>;
      <D.45173>:
      D.45128 = cfg->mempool;
      D.45200 = mono_mempool_alloc (D.45128, 80);
      iargs[0] = D.45200;
      D.45177 = iargs[0];
      D.45177 = iargs[0];
      D.45177->data.op[1].const_val = 0;
      D.45178 = D.45177->data.op[1].const_val;
      D.45177->data.op[0].const_val = D.45178;
      D.45177 = iargs[0];
      D.45177 = iargs[0];
      D.45177->prev = 0B;
      D.45179 = D.45177->prev;
      D.45177->next = D.45179;
      D.45177 = iargs[0];
      D.45177->opcode = 363;
      D.45177 = iargs[0];
      D.45177->flags = 0;
      D.45177 = iargs[0];
      D.45177->type = 0;
      D.45177 = iargs[0];
      D.45177->dreg = -1;
      D.45177 = iargs[0];
      D.45177 = iargs[0];
      D.45177 = iargs[0];
      D.45177->sreg3 = -1;
      D.45180 = D.45177->sreg3;
      D.45177->sreg2 = D.45180;
      D.45181 = D.45177->sreg2;
      D.45177->sreg1 = D.45181;
      D.45177 = iargs[0];
      D.45135 = cfg->ip;
      D.45177->cil_code = D.45135;
      D.45177 = iargs[0];
      D.45156 = cfg->domain;
      D.45177->data.op[0].p = D.45156;
      D.45177 = iargs[0];
      D.45177->type = 3;
      D.45177 = iargs[0];
      D.45201 = alloc_dreg (cfg, 3);
      D.45202 = (int) D.45201;
      D.45177->dreg = D.45202;
      <D.45174>:
      D.45159 = cfg->cbb;
      D.45160 = D.45159->last_ins;
      if (D.45160 != 0B) goto <D.45203>; else goto <D.45204>;
      <D.45203>:
      D.45159 = cfg->cbb;
      D.45160 = D.45159->last_ins;
      D.45177 = iargs[0];
      D.45160->next = D.45177;
      D.45177 = iargs[0];
      D.45159 = cfg->cbb;
      D.45160 = D.45159->last_ins;
      D.45177->prev = D.45160;
      D.45159 = cfg->cbb;
      D.45177 = iargs[0];
      D.45159->last_ins = D.45177;
      goto <D.45205>;
      <D.45204>:
      D.45159 = cfg->cbb;
      D.45159 = cfg->cbb;
      D.45177 = iargs[0];
      D.45159->last_ins = D.45177;
      D.45160 = D.45159->last_ins;
      D.45159->code = D.45160;
      <D.45205>:
      D.45128 = cfg->mempool;
      D.45206 = mono_mempool_alloc (D.45128, 80);
      iargs[1] = D.45206;
      D.45207 = iargs[1];
      D.45207 = iargs[1];
      D.45207->data.op[1].const_val = 0;
      D.45208 = D.45207->data.op[1].const_val;
      D.45207->data.op[0].const_val = D.45208;
      D.45207 = iargs[1];
      D.45207 = iargs[1];
      D.45207->prev = 0B;
      D.45209 = D.45207->prev;
      D.45207->next = D.45209;
      D.45207 = iargs[1];
      D.45126 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.45127 = D.45126 & 64;
      if (D.45127 != 0) goto <D.45211>; else goto <D.45212>;
      <D.45211>:
      iftmp.413 = 736;
      goto <D.45213>;
      <D.45212>:
      iftmp.413 = 363;
      <D.45213>:
      D.45207->opcode = iftmp.413;
      D.45207 = iargs[1];
      D.45207->flags = 0;
      D.45207 = iargs[1];
      D.45207->type = 0;
      D.45207 = iargs[1];
      D.45207->dreg = -1;
      D.45207 = iargs[1];
      D.45207 = iargs[1];
      D.45207 = iargs[1];
      D.45207->sreg3 = -1;
      D.45214 = D.45207->sreg3;
      D.45207->sreg2 = D.45214;
      D.45215 = D.45207->sreg2;
      D.45207->sreg1 = D.45215;
      D.45207 = iargs[1];
      D.45135 = cfg->ip;
      D.45207->cil_code = D.45135;
      D.45207 = iargs[1];
      D.45207->data.op[0].p = klass;
      D.45207 = iargs[1];
      D.45207->data.op[1].src = 11B;
      D.45207 = iargs[1];
      D.45207->type = 3;
      D.45207 = iargs[1];
      D.45216 = alloc_dreg (cfg, 3);
      D.45217 = (int) D.45216;
      D.45207->dreg = D.45217;
      D.45159 = cfg->cbb;
      D.45160 = D.45159->last_ins;
      if (D.45160 != 0B) goto <D.45218>; else goto <D.45219>;
      <D.45218>:
      D.45159 = cfg->cbb;
      D.45160 = D.45159->last_ins;
      D.45207 = iargs[1];
      D.45160->next = D.45207;
      D.45207 = iargs[1];
      D.45159 = cfg->cbb;
      D.45160 = D.45159->last_ins;
      D.45207->prev = D.45160;
      D.45159 = cfg->cbb;
      D.45207 = iargs[1];
      D.45159->last_ins = D.45207;
      goto <D.45220>;
      <D.45219>:
      D.45159 = cfg->cbb;
      D.45159 = cfg->cbb;
      D.45207 = iargs[1];
      D.45159->last_ins = D.45207;
      D.45160 = D.45159->last_ins;
      D.45159->code = D.45160;
      <D.45220>:
      alloc_ftn = mono_object_new;
      goto <D.45221>;
      <D.45171>:
      D.45126 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.45127 = D.45126 & 64;
      if (D.45127 != 0) goto <D.45223>; else goto <D.45222>;
      <D.45223>:
      D.45159 = cfg->cbb;
      D.45224 = BIT_FIELD_REF <*D.45159, 8, 1488>;
      D.45225 = D.45224 & 1;
      if (D.45225 != 0) goto <D.45226>; else goto <D.45222>;
      <D.45226>:
      D.45227 = klass->type_token;
      if (D.45227 != 0) goto <D.45228>; else goto <D.45222>;
      <D.45228>:
      D.45229 = klass->image;
      D.45230 = mono_defaults.corlib;
      if (D.45229 == D.45230) goto <D.45231>; else goto <D.45222>;
      <D.45231>:
      D.45232 = klass->generic_class;
      if (D.45232 == 0B) goto <D.45233>; else goto <D.45222>;
      <D.45233>:
      D.45128 = cfg->mempool;
      D.45234 = mono_mempool_alloc (D.45128, 80);
      iargs[0] = D.45234;
      D.45177 = iargs[0];
      D.45177 = iargs[0];
      D.45177->data.op[1].const_val = 0;
      D.45178 = D.45177->data.op[1].const_val;
      D.45177->data.op[0].const_val = D.45178;
      D.45177 = iargs[0];
      D.45177 = iargs[0];
      D.45177->prev = 0B;
      D.45179 = D.45177->prev;
      D.45177->next = D.45179;
      D.45177 = iargs[0];
      D.45177->opcode = 362;
      D.45177 = iargs[0];
      D.45177->flags = 0;
      D.45177 = iargs[0];
      D.45177->type = 0;
      D.45177 = iargs[0];
      D.45177->dreg = -1;
      D.45177 = iargs[0];
      D.45177 = iargs[0];
      D.45177 = iargs[0];
      D.45177->sreg3 = -1;
      D.45180 = D.45177->sreg3;
      D.45177->sreg2 = D.45180;
      D.45181 = D.45177->sreg2;
      D.45177->sreg1 = D.45181;
      D.45177 = iargs[0];
      D.45135 = cfg->ip;
      D.45177->cil_code = D.45135;
      D.45177 = iargs[0];
      D.45227 = klass->type_token;
      D.45235 = (long int) D.45227;
      D.45236 = D.45235 & 16777215;
      D.45177->data.op[0].const_val = D.45236;
      D.45177 = iargs[0];
      D.45177->type = 1;
      D.45177 = iargs[0];
      D.45237 = alloc_dreg (cfg, 1);
      D.45238 = (int) D.45237;
      D.45177->dreg = D.45238;
      D.45159 = cfg->cbb;
      D.45160 = D.45159->last_ins;
      if (D.45160 != 0B) goto <D.45239>; else goto <D.45240>;
      <D.45239>:
      D.45159 = cfg->cbb;
      D.45160 = D.45159->last_ins;
      D.45177 = iargs[0];
      D.45160->next = D.45177;
      D.45177 = iargs[0];
      D.45159 = cfg->cbb;
      D.45160 = D.45159->last_ins;
      D.45177->prev = D.45160;
      D.45159 = cfg->cbb;
      D.45177 = iargs[0];
      D.45159->last_ins = D.45177;
      goto <D.45241>;
      <D.45240>:
      D.45159 = cfg->cbb;
      D.45159 = cfg->cbb;
      D.45177 = iargs[0];
      D.45159->last_ins = D.45177;
      D.45160 = D.45159->last_ins;
      D.45159->code = D.45160;
      <D.45241>:
      D.45169 = mono_emit_jit_icall (cfg, mono_helper_newobj_mscorlib, &iargs);
      return D.45169;
      <D.45222>:
      {
        struct MonoVTable * vtable;
        struct MonoMethod * managed_alloc;
        gboolean pass_lw;

        try
          {
            D.45156 = cfg->domain;
            vtable = mono_class_vtable (D.45156, klass);
            managed_alloc = 0B;
            if (vtable == 0B) goto <D.45242>; else goto <D.45243>;
            <D.45242>:
            mono_cfg_set_exception (cfg, 7);
            cfg->exception_ptr = klass;
            D.45169 = 0B;
            return D.45169;
            <D.45243>:
            managed_alloc = mono_gc_get_managed_allocator (klass, for_box);
            if (managed_alloc != 0B) goto <D.45244>; else goto <D.45245>;
            <D.45244>:
            D.45128 = cfg->mempool;
            D.45246 = mono_mempool_alloc (D.45128, 80);
            iargs[0] = D.45246;
            D.45177 = iargs[0];
            D.45177 = iargs[0];
            D.45177->data.op[1].const_val = 0;
            D.45178 = D.45177->data.op[1].const_val;
            D.45177->data.op[0].const_val = D.45178;
            D.45177 = iargs[0];
            D.45177 = iargs[0];
            D.45177->prev = 0B;
            D.45179 = D.45177->prev;
            D.45177->next = D.45179;
            D.45177 = iargs[0];
            D.45126 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.45127 = D.45126 & 64;
            if (D.45127 != 0) goto <D.45248>; else goto <D.45249>;
            <D.45248>:
            iftmp.414 = 736;
            goto <D.45250>;
            <D.45249>:
            iftmp.414 = 363;
            <D.45250>:
            D.45177->opcode = iftmp.414;
            D.45177 = iargs[0];
            D.45177->flags = 0;
            D.45177 = iargs[0];
            D.45177->type = 0;
            D.45177 = iargs[0];
            D.45177->dreg = -1;
            D.45177 = iargs[0];
            D.45177 = iargs[0];
            D.45177 = iargs[0];
            D.45177->sreg3 = -1;
            D.45180 = D.45177->sreg3;
            D.45177->sreg2 = D.45180;
            D.45181 = D.45177->sreg2;
            D.45177->sreg1 = D.45181;
            D.45177 = iargs[0];
            D.45135 = cfg->ip;
            D.45177->cil_code = D.45135;
            D.45177 = iargs[0];
            D.45126 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.45127 = D.45126 & 64;
            if (D.45127 != 0) goto <D.45252>; else goto <D.45253>;
            <D.45252>:
            iftmp.415 = vtable->klass;
            goto <D.45254>;
            <D.45253>:
            iftmp.415 = vtable;
            <D.45254>:
            D.45177->data.op[0].p = iftmp.415;
            D.45177 = iargs[0];
            D.45177->data.op[1].src = 14B;
            D.45177 = iargs[0];
            D.45177->type = 3;
            D.45177 = iargs[0];
            D.45255 = alloc_dreg (cfg, 3);
            D.45256 = (int) D.45255;
            D.45177->dreg = D.45256;
            D.45159 = cfg->cbb;
            D.45160 = D.45159->last_ins;
            if (D.45160 != 0B) goto <D.45257>; else goto <D.45258>;
            <D.45257>:
            D.45159 = cfg->cbb;
            D.45160 = D.45159->last_ins;
            D.45177 = iargs[0];
            D.45160->next = D.45177;
            D.45177 = iargs[0];
            D.45159 = cfg->cbb;
            D.45160 = D.45159->last_ins;
            D.45177->prev = D.45160;
            D.45159 = cfg->cbb;
            D.45177 = iargs[0];
            D.45159->last_ins = D.45177;
            goto <D.45259>;
            <D.45258>:
            D.45159 = cfg->cbb;
            D.45159 = cfg->cbb;
            D.45177 = iargs[0];
            D.45159->last_ins = D.45177;
            D.45160 = D.45159->last_ins;
            D.45159->code = D.45160;
            <D.45259>:
            D.45169 = mono_emit_method_call (cfg, managed_alloc, &iargs, 0B);
            return D.45169;
            <D.45245>:
            alloc_ftn = mono_class_get_allocation_ftn (vtable, for_box, &pass_lw);
            pass_lw.416 = pass_lw;
            if (pass_lw.416 != 0) goto <D.45261>; else goto <D.45262>;
            <D.45261>:
            {
              guint32 lw;

              D.45263 = vtable->klass;
              D.45264 = D.45263->instance_size;
              lw = (guint32) D.45264;
              D.45265 = (long unsigned int) lw;
              D.45266 = D.45265 + 7;
              D.45267 = D.45266 & 18446744073709551608;
              D.45268 = D.45267 / 8;
              lw = (guint32) D.45268;
              D.45128 = cfg->mempool;
              D.45269 = mono_mempool_alloc (D.45128, 80);
              iargs[0] = D.45269;
              D.45177 = iargs[0];
              D.45177 = iargs[0];
              D.45177->data.op[1].const_val = 0;
              D.45178 = D.45177->data.op[1].const_val;
              D.45177->data.op[0].const_val = D.45178;
              D.45177 = iargs[0];
              D.45177 = iargs[0];
              D.45177->prev = 0B;
              D.45179 = D.45177->prev;
              D.45177->next = D.45179;
              D.45177 = iargs[0];
              D.45177->opcode = 362;
              D.45177 = iargs[0];
              D.45177->flags = 0;
              D.45177 = iargs[0];
              D.45177->type = 0;
              D.45177 = iargs[0];
              D.45177->dreg = -1;
              D.45177 = iargs[0];
              D.45177 = iargs[0];
              D.45177 = iargs[0];
              D.45177->sreg3 = -1;
              D.45180 = D.45177->sreg3;
              D.45177->sreg2 = D.45180;
              D.45181 = D.45177->sreg2;
              D.45177->sreg1 = D.45181;
              D.45177 = iargs[0];
              D.45135 = cfg->ip;
              D.45177->cil_code = D.45135;
              D.45177 = iargs[0];
              D.45270 = (long int) lw;
              D.45177->data.op[0].const_val = D.45270;
              D.45177 = iargs[0];
              D.45177->type = 1;
              D.45177 = iargs[0];
              D.45271 = alloc_dreg (cfg, 1);
              D.45272 = (int) D.45271;
              D.45177->dreg = D.45272;
              D.45159 = cfg->cbb;
              D.45160 = D.45159->last_ins;
              if (D.45160 != 0B) goto <D.45273>; else goto <D.45274>;
              <D.45273>:
              D.45159 = cfg->cbb;
              D.45160 = D.45159->last_ins;
              D.45177 = iargs[0];
              D.45160->next = D.45177;
              D.45177 = iargs[0];
              D.45159 = cfg->cbb;
              D.45160 = D.45159->last_ins;
              D.45177->prev = D.45160;
              D.45159 = cfg->cbb;
              D.45177 = iargs[0];
              D.45159->last_ins = D.45177;
              goto <D.45275>;
              <D.45274>:
              D.45159 = cfg->cbb;
              D.45159 = cfg->cbb;
              D.45177 = iargs[0];
              D.45159->last_ins = D.45177;
              D.45160 = D.45159->last_ins;
              D.45159->code = D.45160;
              <D.45275>:
              D.45128 = cfg->mempool;
              D.45276 = mono_mempool_alloc (D.45128, 80);
              iargs[1] = D.45276;
              D.45207 = iargs[1];
              D.45207 = iargs[1];
              D.45207->data.op[1].const_val = 0;
              D.45208 = D.45207->data.op[1].const_val;
              D.45207->data.op[0].const_val = D.45208;
              D.45207 = iargs[1];
              D.45207 = iargs[1];
              D.45207->prev = 0B;
              D.45209 = D.45207->prev;
              D.45207->next = D.45209;
              D.45207 = iargs[1];
              D.45126 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.45127 = D.45126 & 64;
              if (D.45127 != 0) goto <D.45278>; else goto <D.45279>;
              <D.45278>:
              iftmp.417 = 736;
              goto <D.45280>;
              <D.45279>:
              iftmp.417 = 363;
              <D.45280>:
              D.45207->opcode = iftmp.417;
              D.45207 = iargs[1];
              D.45207->flags = 0;
              D.45207 = iargs[1];
              D.45207->type = 0;
              D.45207 = iargs[1];
              D.45207->dreg = -1;
              D.45207 = iargs[1];
              D.45207 = iargs[1];
              D.45207 = iargs[1];
              D.45207->sreg3 = -1;
              D.45214 = D.45207->sreg3;
              D.45207->sreg2 = D.45214;
              D.45215 = D.45207->sreg2;
              D.45207->sreg1 = D.45215;
              D.45207 = iargs[1];
              D.45135 = cfg->ip;
              D.45207->cil_code = D.45135;
              D.45207 = iargs[1];
              D.45126 = BIT_FIELD_REF <*cfg, 8, 5600>;
              D.45127 = D.45126 & 64;
              if (D.45127 != 0) goto <D.45282>; else goto <D.45283>;
              <D.45282>:
              iftmp.418 = vtable->klass;
              goto <D.45284>;
              <D.45283>:
              iftmp.418 = vtable;
              <D.45284>:
              D.45207->data.op[0].p = iftmp.418;
              D.45207 = iargs[1];
              D.45207->data.op[1].src = 14B;
              D.45207 = iargs[1];
              D.45207->type = 3;
              D.45207 = iargs[1];
              D.45285 = alloc_dreg (cfg, 3);
              D.45286 = (int) D.45285;
              D.45207->dreg = D.45286;
              D.45159 = cfg->cbb;
              D.45160 = D.45159->last_ins;
              if (D.45160 != 0B) goto <D.45287>; else goto <D.45288>;
              <D.45287>:
              D.45159 = cfg->cbb;
              D.45160 = D.45159->last_ins;
              D.45207 = iargs[1];
              D.45160->next = D.45207;
              D.45207 = iargs[1];
              D.45159 = cfg->cbb;
              D.45160 = D.45159->last_ins;
              D.45207->prev = D.45160;
              D.45159 = cfg->cbb;
              D.45207 = iargs[1];
              D.45159->last_ins = D.45207;
              goto <D.45289>;
              <D.45288>:
              D.45159 = cfg->cbb;
              D.45159 = cfg->cbb;
              D.45207 = iargs[1];
              D.45159->last_ins = D.45207;
              D.45160 = D.45159->last_ins;
              D.45159->code = D.45160;
              <D.45289>:
            }
            goto <D.45290>;
            <D.45262>:
            D.45128 = cfg->mempool;
            D.45291 = mono_mempool_alloc (D.45128, 80);
            iargs[0] = D.45291;
            D.45177 = iargs[0];
            D.45177 = iargs[0];
            D.45177->data.op[1].const_val = 0;
            D.45178 = D.45177->data.op[1].const_val;
            D.45177->data.op[0].const_val = D.45178;
            D.45177 = iargs[0];
            D.45177 = iargs[0];
            D.45177->prev = 0B;
            D.45179 = D.45177->prev;
            D.45177->next = D.45179;
            D.45177 = iargs[0];
            D.45126 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.45127 = D.45126 & 64;
            if (D.45127 != 0) goto <D.45293>; else goto <D.45294>;
            <D.45293>:
            iftmp.419 = 736;
            goto <D.45295>;
            <D.45294>:
            iftmp.419 = 363;
            <D.45295>:
            D.45177->opcode = iftmp.419;
            D.45177 = iargs[0];
            D.45177->flags = 0;
            D.45177 = iargs[0];
            D.45177->type = 0;
            D.45177 = iargs[0];
            D.45177->dreg = -1;
            D.45177 = iargs[0];
            D.45177 = iargs[0];
            D.45177 = iargs[0];
            D.45177->sreg3 = -1;
            D.45180 = D.45177->sreg3;
            D.45177->sreg2 = D.45180;
            D.45181 = D.45177->sreg2;
            D.45177->sreg1 = D.45181;
            D.45177 = iargs[0];
            D.45135 = cfg->ip;
            D.45177->cil_code = D.45135;
            D.45177 = iargs[0];
            D.45126 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.45127 = D.45126 & 64;
            if (D.45127 != 0) goto <D.45297>; else goto <D.45298>;
            <D.45297>:
            iftmp.420 = vtable->klass;
            goto <D.45299>;
            <D.45298>:
            iftmp.420 = vtable;
            <D.45299>:
            D.45177->data.op[0].p = iftmp.420;
            D.45177 = iargs[0];
            D.45177->data.op[1].src = 14B;
            D.45177 = iargs[0];
            D.45177->type = 3;
            D.45177 = iargs[0];
            D.45300 = alloc_dreg (cfg, 3);
            D.45301 = (int) D.45300;
            D.45177->dreg = D.45301;
            D.45159 = cfg->cbb;
            D.45160 = D.45159->last_ins;
            if (D.45160 != 0B) goto <D.45302>; else goto <D.45303>;
            <D.45302>:
            D.45159 = cfg->cbb;
            D.45160 = D.45159->last_ins;
            D.45177 = iargs[0];
            D.45160->next = D.45177;
            D.45177 = iargs[0];
            D.45159 = cfg->cbb;
            D.45160 = D.45159->last_ins;
            D.45177->prev = D.45160;
            D.45159 = cfg->cbb;
            D.45177 = iargs[0];
            D.45159->last_ins = D.45177;
            goto <D.45304>;
            <D.45303>:
            D.45159 = cfg->cbb;
            D.45159 = cfg->cbb;
            D.45177 = iargs[0];
            D.45159->last_ins = D.45177;
            D.45160 = D.45159->last_ins;
            D.45159->code = D.45160;
            <D.45304>:
            <D.45290>:
          }
        finally
          {
            pass_lw = {CLOBBER};
          }
      }
      <D.45221>:
      D.45169 = mono_emit_jit_icall (cfg, alloc_ftn, &iargs);
      return D.45169;
    }
  finally
    {
      iargs = {CLOBBER};
    }
}


mini_emit_inst_for_ctor (struct MonoCompile * cfg, struct MonoMethod * cmethod, struct MonoMethodSignature * fsig, struct MonoInst * * args)
{
  unsigned int D.45310;
  unsigned int D.45311;
  struct MonoInst * D.45316;
  struct MonoInst * ins;

  ins = 0B;
  D.45310 = cfg->opt;
  D.45311 = D.45310 & 67108864;
  if (D.45311 != 0) goto <D.45312>; else goto <D.45313>;
  <D.45312>:
  ins = mono_emit_simd_intrinsics (cfg, cmethod, fsig, args);
  if (ins != 0B) goto <D.45314>; else goto <D.45315>;
  <D.45314>:
  D.45316 = ins;
  return D.45316;
  <D.45315>:
  <D.45313>:
  D.45316 = ins;
  return D.45316;
}


mono_method_check_inlining (struct MonoCompile * cfg, struct MonoMethod * method)
{
  struct MonoGenericSharingContext * D.45318;
  gboolean D.45321;
  unsigned int D.45322;
  int D.45325;
  short unsigned int D.45330;
  unsigned int D.45331;
  unsigned int D.45332;
  struct MonoClass * D.45334;
  unsigned char D.45335;
  unsigned char D.45336;
  int D.45338;
  int inline_limit_inited.421;
  const gchar * D.45342;
  const gchar * D.45345;
  int inline_limit.422;
  unsigned int D.45348;
  int inline_limit.423;
  unsigned int inline_limit.424;
  int D.45353;
  int D.45354;
  unsigned int D.45357;
  unsigned int D.45358;
  struct MonoDomain * D.45363;
  unsigned char D.45366;
  unsigned char D.45367;
  int D.45370;
  unsigned int D.45374;
  unsigned int D.45375;
  unsigned char D.45378;
  unsigned char D.45381;
  unsigned char D.45382;
  struct MonoClassRuntimeInfo * D.45385;
  unsigned char D.45390;
  unsigned char D.45391;
  int D.45395;
  int D.45405;
  unsigned char D.45410;
  struct MonoMethodHeaderSummary header;
  struct MonoVTable * vtable;

  try
    {
      D.45318 = cfg->generic_sharing_context;
      if (D.45318 != 0B) goto <D.45319>; else goto <D.45320>;
      <D.45319>:
      D.45321 = 0;
      return D.45321;
      <D.45320>:
      D.45322 = cfg->inline_depth;
      if (D.45322 > 10) goto <D.45323>; else goto <D.45324>;
      <D.45323>:
      D.45321 = 0;
      return D.45321;
      <D.45324>:
      D.45325 = mono_method_get_header_summary (method, &header);
      if (D.45325 == 0) goto <D.45326>; else goto <D.45327>;
      <D.45326>:
      D.45321 = 0;
      return D.45321;
      <D.45327>:
      D.45330 = method->iflags;
      D.45331 = (unsigned int) D.45330;
      D.45332 = D.45331 & 40;
      if (D.45332 != 0) goto <D.45328>; else goto <D.45333>;
      <D.45333>:
      D.45334 = method->klass;
      D.45335 = BIT_FIELD_REF <*D.45334, 8, 272>;
      D.45336 = D.45335 & 64;
      if (D.45336 != 0) goto <D.45328>; else goto <D.45337>;
      <D.45337>:
      D.45338 = header.has_clauses;
      if (D.45338 != 0) goto <D.45328>; else goto <D.45329>;
      <D.45328>:
      D.45321 = 0;
      return D.45321;
      <D.45329>:
      inline_limit_inited.421 = inline_limit_inited;
      if (inline_limit_inited.421 == 0) goto <D.45340>; else goto <D.45341>;
      <D.45340>:
      D.45342 = monoeg_g_getenv ("MONO_INLINELIMIT");
      if (D.45342 != 0B) goto <D.45343>; else goto <D.45344>;
      <D.45343>:
      D.45345 = monoeg_g_getenv ("MONO_INLINELIMIT");
      inline_limit.422 = atoi (D.45345);
      inline_limit = inline_limit.422;
      goto <D.45347>;
      <D.45344>:
      inline_limit = 20;
      <D.45347>:
      inline_limit_inited = 1;
      <D.45341>:
      D.45348 = header.code_size;
      inline_limit.423 = inline_limit;
      inline_limit.424 = (unsigned int) inline_limit.423;
      if (D.45348 >= inline_limit.424) goto <D.45351>; else goto <D.45352>;
      <D.45351>:
      D.45330 = method->iflags;
      D.45353 = (int) D.45330;
      D.45354 = D.45353 & 256;
      if (D.45354 == 0) goto <D.45355>; else goto <D.45356>;
      <D.45355>:
      D.45321 = 0;
      return D.45321;
      <D.45356>:
      <D.45352>:
      D.45357 = cfg->opt;
      D.45358 = D.45357 & 512;
      if (D.45358 == 0) goto <D.45359>; else goto <D.45360>;
      <D.45359>:
      D.45330 = method->iflags;
      D.45353 = (int) D.45330;
      D.45354 = D.45353 & 256;
      if (D.45354 != 0) goto <D.45361>; else goto <D.45362>;
      <D.45361>:
      D.45334 = method->klass;
      D.45363 = cfg->domain;
      vtable = mono_class_vtable (D.45363, D.45334);
      if (vtable == 0B) goto <D.45364>; else goto <D.45365>;
      <D.45364>:
      D.45321 = 0;
      return D.45321;
      <D.45365>:
      D.45366 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.45367 = D.45366 & 64;
      if (D.45367 != 0) goto <D.45368>; else goto <D.45369>;
      <D.45368>:
      D.45334 = method->klass;
      D.45370 = mono_class_needs_cctor_run (D.45334, 0B);
      if (D.45370 != 0) goto <D.45371>; else goto <D.45372>;
      <D.45371>:
      D.45321 = 0;
      return D.45321;
      <D.45372>:
      <D.45369>:
      mono_runtime_class_init (vtable);
      goto <D.45373>;
      <D.45362>:
      D.45334 = method->klass;
      D.45374 = D.45334->flags;
      D.45375 = D.45374 & 1048576;
      if (D.45375 != 0) goto <D.45376>; else goto <D.45377>;
      <D.45376>:
      D.45366 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.45378 = D.45366 & 16;
      if (D.45378 != 0) goto <D.45379>; else goto <D.45380>;
      <D.45379>:
      D.45334 = method->klass;
      D.45381 = BIT_FIELD_REF <*D.45334, 8, 280>;
      D.45382 = D.45381 & 4;
      if (D.45382 != 0) goto <D.45383>; else goto <D.45384>;
      <D.45383>:
      D.45334 = method->klass;
      D.45385 = D.45334->runtime_info;
      if (D.45385 == 0B) goto <D.45386>; else goto <D.45387>;
      <D.45386>:
      D.45321 = 0;
      return D.45321;
      <D.45387>:
      D.45334 = method->klass;
      D.45363 = cfg->domain;
      vtable = mono_class_vtable (D.45363, D.45334);
      if (vtable == 0B) goto <D.45388>; else goto <D.45389>;
      <D.45388>:
      D.45321 = 0;
      return D.45321;
      <D.45389>:
      D.45390 = BIT_FIELD_REF <*vtable, 8, 344>;
      D.45391 = D.45390 & 2;
      if (D.45391 == 0) goto <D.45392>; else goto <D.45393>;
      <D.45392>:
      D.45321 = 0;
      return D.45321;
      <D.45393>:
      mono_runtime_class_init (vtable);
      <D.45384>:
      <D.45380>:
      goto <D.45394>;
      <D.45377>:
      D.45334 = method->klass;
      D.45395 = mono_class_needs_cctor_run (D.45334, 0B);
      if (D.45395 != 0) goto <D.45396>; else goto <D.45397>;
      <D.45396>:
      D.45334 = method->klass;
      D.45385 = D.45334->runtime_info;
      if (D.45385 == 0B) goto <D.45398>; else goto <D.45399>;
      <D.45398>:
      D.45321 = 0;
      return D.45321;
      <D.45399>:
      D.45334 = method->klass;
      D.45363 = cfg->domain;
      vtable = mono_class_vtable (D.45363, D.45334);
      if (vtable == 0B) goto <D.45400>; else goto <D.45401>;
      <D.45400>:
      D.45321 = 0;
      return D.45321;
      <D.45401>:
      D.45390 = BIT_FIELD_REF <*vtable, 8, 344>;
      D.45391 = D.45390 & 2;
      if (D.45391 == 0) goto <D.45402>; else goto <D.45403>;
      <D.45402>:
      D.45321 = 0;
      return D.45321;
      <D.45403>:
      <D.45397>:
      <D.45394>:
      <D.45373>:
      goto <D.45404>;
      <D.45360>:
      D.45334 = method->klass;
      D.45405 = mono_class_needs_cctor_run (D.45334, 0B);
      if (D.45405 != 0) goto <D.45406>; else goto <D.45407>;
      <D.45406>:
      D.45334 = method->klass;
      D.45374 = D.45334->flags;
      D.45375 = D.45374 & 1048576;
      if (D.45375 == 0) goto <D.45408>; else goto <D.45409>;
      <D.45408>:
      D.45321 = 0;
      return D.45321;
      <D.45409>:
      <D.45407>:
      <D.45404>:
      D.45410 = mono_method_has_declsec (method);
      if (D.45410 != 0) goto <D.45411>; else goto <D.45412>;
      <D.45411>:
      D.45321 = 0;
      return D.45321;
      <D.45412>:
      D.45321 = 1;
      return D.45321;
    }
  finally
    {
      header = {CLOBBER};
    }
}


atoi (const char * __nptr)
{
  int D.45415;
  long int D.45416;

  D.45416 = strtol (__nptr, 0B, 10);
  D.45415 = (int) D.45416;
  return D.45415;
}


emit_get_rgctx_gsharedvt_call (struct MonoCompile * cfg, int context_used, struct MonoMethodSignature * sig, struct MonoMethod * cmethod, MonoRgctxInfoType rgctx_type)
{
  struct MonoMemPool * D.45418;
  int D.45419;
  struct MonoMethod * D.45420;
  struct MonoInst * D.45421;
  struct MonoJumpInfoGSharedVtCall * call_info;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.45418 = cfg->mempool;
  call_info = mono_mempool_alloc0 (D.45418, 16);
  call_info->sig = sig;
  call_info->method = cmethod;
  D.45419 = context_used & 2;
  D.45420 = cfg->current_method;
  D.45418 = cfg->mempool;
  entry = mono_patch_info_rgctx_entry_new (D.45418, D.45420, D.45419, 45, call_info, rgctx_type);
  D.45420 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.45420, context_used);
  D.45421 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.45421;
}


save_cast_details (struct MonoCompile * cfg, struct MonoClass * klass, int obj_reg, gboolean null_check, struct MonoBasicBlock * * out_bblock)
{
  struct MonoDebugOptions * D.45423;
  int D.45424;
  unsigned int D.45427;
  unsigned int D.45428;
  unsigned int D.45429;
  struct MonoMemPool * D.45432;
  unsigned int D.45433;
  unsigned int D.45434;
  unsigned int D.45435;
  int D.45436;
  long int D.45437;
  struct MonoInst * D.45438;
  int D.45439;
  int D.45440;
  const unsigned char * D.45441;
  struct MonoBasicBlock * D.45442;
  struct MonoInst * D.45443;
  long int D.45447;
  struct MonoInst * D.45448;
  int D.45449;
  int D.45450;
  unsigned int D.45453;
  unsigned int D.45454;
  int D.45455;
  unsigned char * D.45459;
  struct MonoBasicBlock * * D.45462;
  long int D.45463;
  unsigned char * D.45464;
  long int D.45465;
  long int D.45466;
  long unsigned int D.45467;
  long unsigned int D.45468;
  struct MonoBasicBlock * * D.45469;
  unsigned int D.45470;
  short unsigned int D.45475;
  short unsigned int D.45476;
  _Bool D.45477;
  short unsigned int D.45478;
  _Bool D.45479;
  _Bool D.45480;
  short unsigned int D.45482;
  short unsigned int D.45483;
  struct MonoBasicBlock * * D.45484;
  struct MonoBasicBlock * * D.45485;
  struct MonoBasicBlock * D.45486;
  short unsigned int D.45491;
  _Bool D.45492;
  _Bool D.45493;
  _Bool D.45494;
  short unsigned int D.45496;
  short unsigned int D.45497;
  _Bool D.45498;
  short unsigned int D.45499;
  _Bool D.45500;
  _Bool D.45501;
  void * D.45504;
  struct MonoBasicBlock * * D.45505;
  struct MonoBasicBlock * * D.45506;
  unsigned char D.45510;
  unsigned char D.45511;
  unsigned int D.45514;
  unsigned int D.45515;
  int D.45516;
  short unsigned int D.45523;
  short unsigned int D.45524;
  _Bool D.45525;
  short unsigned int D.45526;
  _Bool D.45527;
  _Bool D.45528;
  short unsigned int D.45534;
  _Bool D.45535;
  _Bool D.45536;
  _Bool D.45537;
  short unsigned int D.45539;
  short unsigned int D.45540;
  _Bool D.45541;
  short unsigned int D.45542;
  _Bool D.45543;
  _Bool D.45544;
  struct _IO_FILE * stderr.425;
  long int D.45553;
  struct MonoInst * D.45554;
  int D.45555;
  int D.45556;
  long int D.45560;
  struct MonoInst * D.45561;
  int D.45562;
  int D.45563;
  long int D.45567;
  struct MonoInst * D.45568;
  int D.45569;
  int D.45570;
  int D.45571;
  long int D.45575;
  struct MonoInst * D.45576;
  int D.45577;
  int D.45578;
  long int D.45582;
  struct MonoInst * D.45583;
  int D.45584;
  int D.45585;
  unsigned char * D.45591;
  long int D.45594;
  long int D.45595;
  long unsigned int D.45596;
  long unsigned int D.45597;
  struct MonoBasicBlock * * D.45598;
  short unsigned int D.45603;
  short unsigned int D.45604;
  _Bool D.45605;
  short unsigned int D.45606;
  _Bool D.45607;
  _Bool D.45608;
  short unsigned int D.45614;
  _Bool D.45615;
  _Bool D.45616;
  _Bool D.45617;
  short unsigned int D.45619;
  short unsigned int D.45620;
  _Bool D.45621;
  short unsigned int D.45622;
  _Bool D.45623;
  _Bool D.45624;

  D.45423 = mini_get_debug_options ();
  D.45424 = D.45423->better_cast_details;
  if (D.45424 != 0) goto <D.45425>; else goto <D.45426>;
  <D.45425>:
  {
    int to_klass_reg;
    int vtable_reg;
    int klass_reg;
    struct MonoBasicBlock * is_null_bb;
    struct MonoInst * tls_get;

    D.45427 = alloc_preg (cfg);
    to_klass_reg = (int) D.45427;
    D.45428 = alloc_preg (cfg);
    vtable_reg = (int) D.45428;
    D.45429 = alloc_preg (cfg);
    klass_reg = (int) D.45429;
    is_null_bb = 0B;
    if (null_check != 0) goto <D.45430>; else goto <D.45431>;
    <D.45430>:
    D.45432 = cfg->mempool;
    is_null_bb = mono_mempool_alloc0 (D.45432, 296);
    D.45433 = cfg->num_bblocks;
    D.45434 = D.45433;
    D.45435 = D.45434 + 1;
    cfg->num_bblocks = D.45435;
    D.45436 = (int) D.45434;
    is_null_bb->block_num = D.45436;
    {
      struct MonoInst * inst;

      D.45432 = cfg->mempool;
      inst = mono_mempool_alloc (D.45432, 80);
      inst->data.op[1].const_val = 0;
      D.45437 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45437;
      inst->prev = 0B;
      D.45438 = inst->prev;
      inst->next = D.45438;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45439 = inst->sreg3;
      inst->sreg2 = D.45439;
      D.45440 = inst->sreg2;
      inst->sreg1 = D.45440;
      D.45441 = cfg->ip;
      inst->cil_code = D.45441;
      inst->dreg = -1;
      inst->sreg1 = obj_reg;
      inst->data.op[1].const_val = 0;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 != 0B) goto <D.45444>; else goto <D.45445>;
      <D.45444>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45443->next = inst;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      inst->prev = D.45443;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      goto <D.45446>;
      <D.45445>:
      D.45442 = cfg->cbb;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      D.45443 = D.45442->last_ins;
      D.45442->code = D.45443;
      <D.45446>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.45432 = cfg->mempool;
      ins = mono_mempool_alloc (D.45432, 80);
      ins->data.op[1].const_val = 0;
      D.45447 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.45447;
      ins->prev = 0B;
      D.45448 = ins->prev;
      ins->next = D.45448;
      ins->opcode = 555;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.45449 = ins->sreg3;
      ins->sreg2 = D.45449;
      D.45450 = ins->sreg2;
      ins->sreg1 = D.45450;
      D.45441 = cfg->ip;
      ins->cil_code = D.45441;
      if (0 != 0) goto <D.45451>; else goto <D.45452>;
      <D.45451>:
      D.45432 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45432, 296);
      D.45433 = cfg->num_bblocks;
      D.45453 = D.45433;
      D.45454 = D.45453 + 1;
      cfg->num_bblocks = D.45454;
      D.45455 = (int) D.45453;
      falsebb->block_num = D.45455;
      ins->data.op[0].target_block = is_null_bb;
      D.45442 = cfg->cbb;
      mono_link_bblock (cfg, D.45442, is_null_bb);
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 != 0B) goto <D.45456>; else goto <D.45457>;
      <D.45456>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45443->next = ins;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      ins->prev = D.45443;
      D.45442 = cfg->cbb;
      D.45442->last_ins = ins;
      goto <D.45458>;
      <D.45457>:
      D.45442 = cfg->cbb;
      D.45442 = cfg->cbb;
      D.45442->last_ins = ins;
      D.45443 = D.45442->last_ins;
      D.45442->code = D.45443;
      <D.45458>:
      D.45459 = falsebb->cil_code;
      if (D.45459 != 0B) goto <D.45460>; else goto <D.45461>;
      <D.45460>:
      D.45462 = cfg->cil_offset_to_bb;
      D.45459 = falsebb->cil_code;
      D.45463 = (long int) D.45459;
      D.45464 = cfg->cil_start;
      D.45465 = (long int) D.45464;
      D.45466 = D.45463 - D.45465;
      D.45467 = (long unsigned int) D.45466;
      D.45468 = D.45467 * 8;
      D.45469 = D.45462 + D.45468;
      *D.45469 = falsebb;
      <D.45461>:
      D.45470 = cfg->real_offset;
      falsebb->real_offset = D.45470;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 != 0B) goto <D.45474>; else goto <D.45471>;
      <D.45474>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45475 = D.45443->opcode;
      D.45476 = D.45475 + 64981;
      D.45477 = D.45476 <= 9;
      D.45478 = D.45475 + 64874;
      D.45479 = D.45478 <= 9;
      D.45480 = D.45477 | D.45479;
      if (D.45480 != 0) goto <D.45472>; else goto <D.45481>;
      <D.45481>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45482 = D.45443->opcode;
      D.45483 = D.45482 + 64884;
      if (D.45483 <= 9) goto <D.45472>; else goto <D.45471>;
      <D.45472>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45484 = D.45443->data.op[1].many_blocks;
      D.45485 = D.45484 + 8;
      D.45486 = *D.45485;
      if (D.45486 == 0B) goto <D.45487>; else goto <D.45471>;
      <D.45487>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45484 = D.45443->data.op[1].many_blocks;
      D.45485 = D.45484 + 8;
      *D.45485 = falsebb;
      D.45442 = cfg->cbb;
      mono_link_bblock (cfg, D.45442, falsebb);
      goto <D.45473>;
      <D.45471>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 == 0B) goto <D.45488>; else goto <D.45490>;
      <D.45490>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45491 = D.45443->opcode;
      D.45492 = D.45491 != 446;
      D.45493 = D.45491 != 763;
      D.45494 = D.45492 & D.45493;
      if (D.45494 != 0) goto <D.45495>; else goto <D.45489>;
      <D.45495>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45496 = D.45443->opcode;
      D.45497 = D.45496 + 64981;
      D.45498 = D.45497 > 9;
      D.45499 = D.45496 + 64874;
      D.45500 = D.45499 > 9;
      D.45501 = D.45498 & D.45500;
      if (D.45501 != 0) goto <D.45502>; else goto <D.45489>;
      <D.45502>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45482 = D.45443->opcode;
      D.45483 = D.45482 + 64884;
      if (D.45483 > 9) goto <D.45488>; else goto <D.45489>;
      <D.45488>:
      D.45442 = cfg->cbb;
      mono_link_bblock (cfg, D.45442, falsebb);
      <D.45489>:
      <D.45473>:
      D.45442 = cfg->cbb;
      D.45442->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.45503>;
      <D.45452>:
      D.45432 = cfg->mempool;
      D.45504 = mono_mempool_alloc (D.45432, 16);
      ins->data.op[1].many_blocks = D.45504;
      D.45505 = ins->data.op[1].many_blocks;
      *D.45505 = is_null_bb;
      D.45505 = ins->data.op[1].many_blocks;
      D.45506 = D.45505 + 8;
      *D.45506 = 0B;
      D.45442 = cfg->cbb;
      mono_link_bblock (cfg, D.45442, is_null_bb);
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 != 0B) goto <D.45507>; else goto <D.45508>;
      <D.45507>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45443->next = ins;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      ins->prev = D.45443;
      D.45442 = cfg->cbb;
      D.45442->last_ins = ins;
      goto <D.45509>;
      <D.45508>:
      D.45442 = cfg->cbb;
      D.45442 = cfg->cbb;
      D.45442->last_ins = ins;
      D.45443 = D.45442->last_ins;
      D.45442->code = D.45443;
      <D.45509>:
      D.45510 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.45511 = D.45510 & 8;
      if (D.45511 == 0) goto <D.45512>; else goto <D.45513>;
      <D.45512>:
      D.45432 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45432, 296);
      D.45433 = cfg->num_bblocks;
      D.45514 = D.45433;
      D.45515 = D.45514 + 1;
      cfg->num_bblocks = D.45515;
      D.45516 = (int) D.45514;
      falsebb->block_num = D.45516;
      D.45505 = ins->data.op[1].many_blocks;
      D.45506 = D.45505 + 8;
      *D.45506 = falsebb;
      D.45442 = cfg->cbb;
      mono_link_bblock (cfg, D.45442, falsebb);
      D.45459 = falsebb->cil_code;
      if (D.45459 != 0B) goto <D.45517>; else goto <D.45518>;
      <D.45517>:
      D.45462 = cfg->cil_offset_to_bb;
      D.45459 = falsebb->cil_code;
      D.45463 = (long int) D.45459;
      D.45464 = cfg->cil_start;
      D.45465 = (long int) D.45464;
      D.45466 = D.45463 - D.45465;
      D.45467 = (long unsigned int) D.45466;
      D.45468 = D.45467 * 8;
      D.45469 = D.45462 + D.45468;
      *D.45469 = falsebb;
      <D.45518>:
      D.45470 = cfg->real_offset;
      falsebb->real_offset = D.45470;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 != 0B) goto <D.45522>; else goto <D.45519>;
      <D.45522>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45523 = D.45443->opcode;
      D.45524 = D.45523 + 64981;
      D.45525 = D.45524 <= 9;
      D.45526 = D.45523 + 64874;
      D.45527 = D.45526 <= 9;
      D.45528 = D.45525 | D.45527;
      if (D.45528 != 0) goto <D.45520>; else goto <D.45529>;
      <D.45529>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45482 = D.45443->opcode;
      D.45483 = D.45482 + 64884;
      if (D.45483 <= 9) goto <D.45520>; else goto <D.45519>;
      <D.45520>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45484 = D.45443->data.op[1].many_blocks;
      D.45485 = D.45484 + 8;
      D.45486 = *D.45485;
      if (D.45486 == 0B) goto <D.45530>; else goto <D.45519>;
      <D.45530>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45484 = D.45443->data.op[1].many_blocks;
      D.45485 = D.45484 + 8;
      *D.45485 = falsebb;
      D.45442 = cfg->cbb;
      mono_link_bblock (cfg, D.45442, falsebb);
      goto <D.45521>;
      <D.45519>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 == 0B) goto <D.45531>; else goto <D.45533>;
      <D.45533>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45534 = D.45443->opcode;
      D.45535 = D.45534 != 446;
      D.45536 = D.45534 != 763;
      D.45537 = D.45535 & D.45536;
      if (D.45537 != 0) goto <D.45538>; else goto <D.45532>;
      <D.45538>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45539 = D.45443->opcode;
      D.45540 = D.45539 + 64981;
      D.45541 = D.45540 > 9;
      D.45542 = D.45539 + 64874;
      D.45543 = D.45542 > 9;
      D.45544 = D.45541 & D.45543;
      if (D.45544 != 0) goto <D.45545>; else goto <D.45532>;
      <D.45545>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45482 = D.45443->opcode;
      D.45483 = D.45482 + 64884;
      if (D.45483 > 9) goto <D.45531>; else goto <D.45532>;
      <D.45531>:
      D.45442 = cfg->cbb;
      mono_link_bblock (cfg, D.45442, falsebb);
      <D.45532>:
      <D.45521>:
      D.45442 = cfg->cbb;
      D.45442->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.45546>;
      <D.45513>:
      D.45442 = cfg->cbb;
      D.45442->extended = 1;
      <D.45546>:
      <D.45503>:
    }
    <D.45431>:
    tls_get = mono_get_jit_tls_intrinsic (cfg);
    if (tls_get == 0B) goto <D.45547>; else goto <D.45548>;
    <D.45547>:
    stderr.425 = stderr;
    fprintf (stderr.425, "error: --debug=casts not supported on this platform.\n.");
    exit (1);
    <D.45548>:
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    if (D.45443 != 0B) goto <D.45550>; else goto <D.45551>;
    <D.45550>:
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    D.45443->next = tls_get;
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    tls_get->prev = D.45443;
    D.45442 = cfg->cbb;
    D.45442->last_ins = tls_get;
    goto <D.45552>;
    <D.45551>:
    D.45442 = cfg->cbb;
    D.45442 = cfg->cbb;
    D.45442->last_ins = tls_get;
    D.45443 = D.45442->last_ins;
    D.45442->code = D.45443;
    <D.45552>:
    {
      struct MonoInst * inst;

      D.45432 = cfg->mempool;
      inst = mono_mempool_alloc (D.45432, 80);
      inst->data.op[1].const_val = 0;
      D.45553 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45553;
      inst->prev = 0B;
      D.45554 = inst->prev;
      inst->next = D.45554;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45555 = inst->sreg3;
      inst->sreg2 = D.45555;
      D.45556 = inst->sreg2;
      inst->sreg1 = D.45556;
      D.45441 = cfg->ip;
      inst->cil_code = D.45441;
      inst->dreg = vtable_reg;
      inst->sreg1 = obj_reg;
      inst->data.op[0].const_val = 0;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 != 0B) goto <D.45557>; else goto <D.45558>;
      <D.45557>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45443->next = inst;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      inst->prev = D.45443;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      goto <D.45559>;
      <D.45558>:
      D.45442 = cfg->cbb;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      D.45443 = D.45442->last_ins;
      D.45442->code = D.45443;
      <D.45559>:
    }
    {
      struct MonoInst * inst;

      D.45432 = cfg->mempool;
      inst = mono_mempool_alloc (D.45432, 80);
      inst->data.op[1].const_val = 0;
      D.45560 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45560;
      inst->prev = 0B;
      D.45561 = inst->prev;
      inst->next = D.45561;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45562 = inst->sreg3;
      inst->sreg2 = D.45562;
      D.45563 = inst->sreg2;
      inst->sreg1 = D.45563;
      D.45441 = cfg->ip;
      inst->cil_code = D.45441;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 != 0B) goto <D.45564>; else goto <D.45565>;
      <D.45564>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45443->next = inst;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      inst->prev = D.45443;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      goto <D.45566>;
      <D.45565>:
      D.45442 = cfg->cbb;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      D.45443 = D.45442->last_ins;
      D.45442->code = D.45443;
      <D.45566>:
    }
    {
      struct MonoInst * inst;

      D.45432 = cfg->mempool;
      inst = mono_mempool_alloc (D.45432, 80);
      inst->data.op[1].const_val = 0;
      D.45567 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45567;
      inst->prev = 0B;
      D.45568 = inst->prev;
      inst->next = D.45568;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45569 = inst->sreg3;
      inst->sreg2 = D.45569;
      D.45570 = inst->sreg2;
      inst->sreg1 = D.45570;
      D.45441 = cfg->ip;
      inst->cil_code = D.45441;
      inst->sreg1 = klass_reg;
      D.45571 = tls_get->dreg;
      inst->dreg = D.45571;
      inst->data.op[0].const_val = 80;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 != 0B) goto <D.45572>; else goto <D.45573>;
      <D.45572>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45443->next = inst;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      inst->prev = D.45443;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      goto <D.45574>;
      <D.45573>:
      D.45442 = cfg->cbb;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      D.45443 = D.45442->last_ins;
      D.45442->code = D.45443;
      <D.45574>:
    }
    {
      struct MonoInst * inst;

      D.45432 = cfg->mempool;
      inst = mono_mempool_alloc (D.45432, 80);
      inst->data.op[1].const_val = 0;
      D.45575 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45575;
      inst->prev = 0B;
      D.45576 = inst->prev;
      inst->next = D.45576;
      inst->opcode = 363;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45577 = inst->sreg3;
      inst->sreg2 = D.45577;
      D.45578 = inst->sreg2;
      inst->sreg1 = D.45578;
      D.45441 = cfg->ip;
      inst->cil_code = D.45441;
      inst->dreg = to_klass_reg;
      inst->data.op[0].p = klass;
      inst->type = 3;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 != 0B) goto <D.45579>; else goto <D.45580>;
      <D.45579>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45443->next = inst;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      inst->prev = D.45443;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      goto <D.45581>;
      <D.45580>:
      D.45442 = cfg->cbb;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      D.45443 = D.45442->last_ins;
      D.45442->code = D.45443;
      <D.45581>:
    }
    {
      struct MonoInst * inst;

      D.45432 = cfg->mempool;
      inst = mono_mempool_alloc (D.45432, 80);
      inst->data.op[1].const_val = 0;
      D.45582 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45582;
      inst->prev = 0B;
      D.45583 = inst->prev;
      inst->next = D.45583;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45584 = inst->sreg3;
      inst->sreg2 = D.45584;
      D.45585 = inst->sreg2;
      inst->sreg1 = D.45585;
      D.45441 = cfg->ip;
      inst->cil_code = D.45441;
      inst->sreg1 = to_klass_reg;
      D.45571 = tls_get->dreg;
      inst->dreg = D.45571;
      inst->data.op[0].const_val = 88;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      if (D.45443 != 0B) goto <D.45586>; else goto <D.45587>;
      <D.45586>:
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      D.45443->next = inst;
      D.45442 = cfg->cbb;
      D.45443 = D.45442->last_ins;
      inst->prev = D.45443;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      goto <D.45588>;
      <D.45587>:
      D.45442 = cfg->cbb;
      D.45442 = cfg->cbb;
      D.45442->last_ins = inst;
      D.45443 = D.45442->last_ins;
      D.45442->code = D.45443;
      <D.45588>:
    }
    if (null_check != 0) goto <D.45589>; else goto <D.45590>;
    <D.45589>:
    D.45591 = is_null_bb->cil_code;
    if (D.45591 != 0B) goto <D.45592>; else goto <D.45593>;
    <D.45592>:
    D.45462 = cfg->cil_offset_to_bb;
    D.45591 = is_null_bb->cil_code;
    D.45594 = (long int) D.45591;
    D.45464 = cfg->cil_start;
    D.45465 = (long int) D.45464;
    D.45595 = D.45594 - D.45465;
    D.45596 = (long unsigned int) D.45595;
    D.45597 = D.45596 * 8;
    D.45598 = D.45462 + D.45597;
    *D.45598 = is_null_bb;
    <D.45593>:
    D.45470 = cfg->real_offset;
    is_null_bb->real_offset = D.45470;
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    if (D.45443 != 0B) goto <D.45602>; else goto <D.45599>;
    <D.45602>:
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    D.45603 = D.45443->opcode;
    D.45604 = D.45603 + 64981;
    D.45605 = D.45604 <= 9;
    D.45606 = D.45603 + 64874;
    D.45607 = D.45606 <= 9;
    D.45608 = D.45605 | D.45607;
    if (D.45608 != 0) goto <D.45600>; else goto <D.45609>;
    <D.45609>:
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    D.45482 = D.45443->opcode;
    D.45483 = D.45482 + 64884;
    if (D.45483 <= 9) goto <D.45600>; else goto <D.45599>;
    <D.45600>:
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    D.45484 = D.45443->data.op[1].many_blocks;
    D.45485 = D.45484 + 8;
    D.45486 = *D.45485;
    if (D.45486 == 0B) goto <D.45610>; else goto <D.45599>;
    <D.45610>:
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    D.45484 = D.45443->data.op[1].many_blocks;
    D.45485 = D.45484 + 8;
    *D.45485 = is_null_bb;
    D.45442 = cfg->cbb;
    mono_link_bblock (cfg, D.45442, is_null_bb);
    goto <D.45601>;
    <D.45599>:
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    if (D.45443 == 0B) goto <D.45611>; else goto <D.45613>;
    <D.45613>:
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    D.45614 = D.45443->opcode;
    D.45615 = D.45614 != 446;
    D.45616 = D.45614 != 763;
    D.45617 = D.45615 & D.45616;
    if (D.45617 != 0) goto <D.45618>; else goto <D.45612>;
    <D.45618>:
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    D.45619 = D.45443->opcode;
    D.45620 = D.45619 + 64981;
    D.45621 = D.45620 > 9;
    D.45622 = D.45619 + 64874;
    D.45623 = D.45622 > 9;
    D.45624 = D.45621 & D.45623;
    if (D.45624 != 0) goto <D.45625>; else goto <D.45612>;
    <D.45625>:
    D.45442 = cfg->cbb;
    D.45443 = D.45442->last_ins;
    D.45482 = D.45443->opcode;
    D.45483 = D.45482 + 64884;
    if (D.45483 > 9) goto <D.45611>; else goto <D.45612>;
    <D.45611>:
    D.45442 = cfg->cbb;
    mono_link_bblock (cfg, D.45442, is_null_bb);
    <D.45612>:
    <D.45601>:
    D.45442 = cfg->cbb;
    D.45442->next_bb = is_null_bb;
    cfg->cbb = is_null_bb;
    if (out_bblock != 0B) goto <D.45626>; else goto <D.45627>;
    <D.45626>:
    D.45442 = cfg->cbb;
    *out_bblock = D.45442;
    <D.45627>:
    <D.45590>:
  }
  <D.45426>:
}


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

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


reset_cast_details (struct MonoCompile * cfg)
{
  struct MonoDebugOptions * D.45630;
  int D.45631;
  struct MonoBasicBlock * D.45634;
  struct MonoInst * D.45635;
  struct MonoMemPool * D.45639;
  long int D.45640;
  struct MonoInst * D.45641;
  int D.45642;
  int D.45643;
  const unsigned char * D.45644;
  int D.45645;

  D.45630 = mini_get_debug_options ();
  D.45631 = D.45630->better_cast_details;
  if (D.45631 != 0) goto <D.45632>; else goto <D.45633>;
  <D.45632>:
  {
    struct MonoInst * tls_get;

    tls_get = mono_get_jit_tls_intrinsic (cfg);
    D.45634 = cfg->cbb;
    D.45635 = D.45634->last_ins;
    if (D.45635 != 0B) goto <D.45636>; else goto <D.45637>;
    <D.45636>:
    D.45634 = cfg->cbb;
    D.45635 = D.45634->last_ins;
    D.45635->next = tls_get;
    D.45634 = cfg->cbb;
    D.45635 = D.45634->last_ins;
    tls_get->prev = D.45635;
    D.45634 = cfg->cbb;
    D.45634->last_ins = tls_get;
    goto <D.45638>;
    <D.45637>:
    D.45634 = cfg->cbb;
    D.45634 = cfg->cbb;
    D.45634->last_ins = tls_get;
    D.45635 = D.45634->last_ins;
    D.45634->code = D.45635;
    <D.45638>:
    {
      struct MonoInst * inst;

      D.45639 = cfg->mempool;
      inst = mono_mempool_alloc (D.45639, 80);
      inst->data.op[1].const_val = 0;
      D.45640 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.45640;
      inst->prev = 0B;
      D.45641 = inst->prev;
      inst->next = D.45641;
      inst->opcode = 384;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.45642 = inst->sreg3;
      inst->sreg2 = D.45642;
      D.45643 = inst->sreg2;
      inst->sreg1 = D.45643;
      D.45644 = cfg->ip;
      inst->cil_code = D.45644;
      D.45645 = tls_get->dreg;
      inst->dreg = D.45645;
      inst->data.op[0].const_val = 80;
      inst->data.op[1].const_val = 0;
      D.45634 = cfg->cbb;
      D.45635 = D.45634->last_ins;
      if (D.45635 != 0B) goto <D.45646>; else goto <D.45647>;
      <D.45646>:
      D.45634 = cfg->cbb;
      D.45635 = D.45634->last_ins;
      D.45635->next = inst;
      D.45634 = cfg->cbb;
      D.45635 = D.45634->last_ins;
      inst->prev = D.45635;
      D.45634 = cfg->cbb;
      D.45634->last_ins = inst;
      goto <D.45648>;
      <D.45647>:
      D.45634 = cfg->cbb;
      D.45634 = cfg->cbb;
      D.45634->last_ins = inst;
      D.45635 = D.45634->last_ins;
      D.45634->code = D.45635;
      <D.45648>:
    }
  }
  <D.45633>:
}


handle_isinst (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src, int context_used)
{
  unsigned int D.45649;
  unsigned int D.45650;
  struct MonoMemPool * D.45655;
  void * D.45656;
  struct MonoInst * D.45657;
  long int D.45658;
  struct MonoInst * D.45659;
  int D.45660;
  int D.45661;
  const unsigned char * D.45662;
  unsigned int D.45663;
  int D.45664;
  int D.45665;
  struct MonoBasicBlock * D.45666;
  struct MonoInst * D.45667;
  struct MonoInst * D.45671;
  unsigned int D.45672;
  unsigned int D.45673;
  unsigned int D.45674;
  int D.45675;
  unsigned int D.45676;
  unsigned int D.45677;
  int D.45678;
  unsigned int D.45679;
  unsigned int D.45680;
  int D.45681;
  long int D.45682;
  struct MonoInst * D.45683;
  int D.45684;
  int D.45685;
  long int D.45689;
  struct MonoInst * D.45690;
  int D.45691;
  int D.45692;
  long int D.45696;
  struct MonoInst * D.45697;
  int D.45698;
  int D.45699;
  unsigned int D.45702;
  unsigned int D.45703;
  int D.45704;
  unsigned char * D.45708;
  struct MonoBasicBlock * * D.45711;
  long int D.45712;
  unsigned char * D.45713;
  long int D.45714;
  long int D.45715;
  long unsigned int D.45716;
  long unsigned int D.45717;
  struct MonoBasicBlock * * D.45718;
  unsigned int D.45719;
  short unsigned int D.45724;
  short unsigned int D.45725;
  _Bool D.45726;
  short unsigned int D.45727;
  _Bool D.45728;
  _Bool D.45729;
  short unsigned int D.45731;
  short unsigned int D.45732;
  struct MonoBasicBlock * * D.45733;
  struct MonoBasicBlock * * D.45734;
  struct MonoBasicBlock * D.45735;
  short unsigned int D.45740;
  _Bool D.45741;
  _Bool D.45742;
  _Bool D.45743;
  short unsigned int D.45745;
  short unsigned int D.45746;
  _Bool D.45747;
  short unsigned int D.45748;
  _Bool D.45749;
  _Bool D.45750;
  void * D.45753;
  struct MonoBasicBlock * * D.45754;
  struct MonoBasicBlock * * D.45755;
  unsigned char D.45759;
  unsigned char D.45760;
  unsigned int D.45763;
  unsigned int D.45764;
  int D.45765;
  short unsigned int D.45772;
  short unsigned int D.45773;
  _Bool D.45774;
  short unsigned int D.45775;
  _Bool D.45776;
  _Bool D.45777;
  short unsigned int D.45783;
  _Bool D.45784;
  _Bool D.45785;
  _Bool D.45786;
  short unsigned int D.45788;
  short unsigned int D.45789;
  _Bool D.45790;
  short unsigned int D.45791;
  _Bool D.45792;
  _Bool D.45793;
  long int D.45796;
  struct MonoInst * D.45797;
  int D.45798;
  int D.45799;
  unsigned int D.45803;
  unsigned int D.45804;
  _Bool D.45807;
  long int D.45808;
  long int D.45809;
  unsigned int D.45813;
  unsigned char D.45814;
  unsigned int D.45817;
  unsigned int D.45818;
  long int D.45821;
  struct MonoInst * D.45822;
  int D.45823;
  int D.45824;
  long int D.45828;
  struct MonoInst * D.45829;
  int D.45830;
  int D.45831;
  long int D.45832;
  long int D.45836;
  struct MonoInst * D.45837;
  int D.45838;
  int D.45839;
  unsigned int D.45842;
  unsigned int D.45843;
  int D.45844;
  unsigned char * D.45848;
  long int D.45851;
  long int D.45852;
  long unsigned int D.45853;
  long unsigned int D.45854;
  struct MonoBasicBlock * * D.45855;
  short unsigned int D.45860;
  short unsigned int D.45861;
  _Bool D.45862;
  short unsigned int D.45863;
  _Bool D.45864;
  _Bool D.45865;
  short unsigned int D.45871;
  _Bool D.45872;
  _Bool D.45873;
  _Bool D.45874;
  short unsigned int D.45876;
  short unsigned int D.45877;
  _Bool D.45878;
  short unsigned int D.45879;
  _Bool D.45880;
  _Bool D.45881;
  void * D.45884;
  struct MonoBasicBlock * * D.45885;
  struct MonoBasicBlock * * D.45886;
  unsigned int D.45892;
  unsigned int D.45893;
  int D.45894;
  short unsigned int D.45901;
  short unsigned int D.45902;
  _Bool D.45903;
  short unsigned int D.45904;
  _Bool D.45905;
  _Bool D.45906;
  short unsigned int D.45912;
  _Bool D.45913;
  _Bool D.45914;
  _Bool D.45915;
  short unsigned int D.45917;
  short unsigned int D.45918;
  _Bool D.45919;
  short unsigned int D.45920;
  _Bool D.45921;
  _Bool D.45922;
  long int D.45925;
  struct MonoInst * D.45926;
  int D.45927;
  int D.45928;
  long int D.45932;
  struct MonoInst * D.45933;
  int D.45934;
  int D.45935;
  struct MonoClass * D.45939;
  struct MonoClass * D.45940;
  unsigned int D.45943;
  long int D.45944;
  struct MonoInst * D.45945;
  int D.45946;
  int D.45947;
  struct MonoClass * D.45951;
  struct MonoClass * D.45952;
  long int D.45953;
  struct MonoInst * D.45954;
  int D.45955;
  int D.45956;
  unsigned int D.45959;
  unsigned int D.45960;
  int D.45961;
  unsigned char * D.45965;
  long int D.45968;
  long int D.45969;
  long unsigned int D.45970;
  long unsigned int D.45971;
  struct MonoBasicBlock * * D.45972;
  short unsigned int D.45977;
  short unsigned int D.45978;
  _Bool D.45979;
  short unsigned int D.45980;
  _Bool D.45981;
  _Bool D.45982;
  short unsigned int D.45988;
  _Bool D.45989;
  _Bool D.45990;
  _Bool D.45991;
  short unsigned int D.45993;
  short unsigned int D.45994;
  _Bool D.45995;
  short unsigned int D.45996;
  _Bool D.45997;
  _Bool D.45998;
  void * D.46001;
  struct MonoBasicBlock * * D.46002;
  struct MonoBasicBlock * * D.46003;
  unsigned int D.46009;
  unsigned int D.46010;
  int D.46011;
  short unsigned int D.46018;
  short unsigned int D.46019;
  _Bool D.46020;
  short unsigned int D.46021;
  _Bool D.46022;
  _Bool D.46023;
  short unsigned int D.46029;
  _Bool D.46030;
  _Bool D.46031;
  _Bool D.46032;
  short unsigned int D.46034;
  short unsigned int D.46035;
  _Bool D.46036;
  short unsigned int D.46037;
  _Bool D.46038;
  _Bool D.46039;
  long int D.46045;
  struct MonoInst * D.46046;
  int D.46047;
  int D.46048;
  unsigned int D.46051;
  unsigned int D.46052;
  int D.46053;
  unsigned char * D.46057;
  long int D.46060;
  long int D.46061;
  long unsigned int D.46062;
  long unsigned int D.46063;
  struct MonoBasicBlock * * D.46064;
  short unsigned int D.46069;
  short unsigned int D.46070;
  _Bool D.46071;
  short unsigned int D.46072;
  _Bool D.46073;
  _Bool D.46074;
  short unsigned int D.46080;
  _Bool D.46081;
  _Bool D.46082;
  _Bool D.46083;
  short unsigned int D.46085;
  short unsigned int D.46086;
  _Bool D.46087;
  short unsigned int D.46088;
  _Bool D.46089;
  _Bool D.46090;
  void * D.46093;
  struct MonoBasicBlock * * D.46094;
  struct MonoBasicBlock * * D.46095;
  unsigned int D.46101;
  unsigned int D.46102;
  int D.46103;
  short unsigned int D.46110;
  short unsigned int D.46111;
  _Bool D.46112;
  short unsigned int D.46113;
  _Bool D.46114;
  _Bool D.46115;
  short unsigned int D.46121;
  _Bool D.46122;
  _Bool D.46123;
  _Bool D.46124;
  short unsigned int D.46126;
  short unsigned int D.46127;
  _Bool D.46128;
  short unsigned int D.46129;
  _Bool D.46130;
  _Bool D.46131;
  long int D.46137;
  struct MonoInst * D.46138;
  int D.46139;
  int D.46140;
  unsigned int D.46143;
  unsigned int D.46144;
  int D.46145;
  unsigned char * D.46149;
  long int D.46152;
  long int D.46153;
  long unsigned int D.46154;
  long unsigned int D.46155;
  struct MonoBasicBlock * * D.46156;
  short unsigned int D.46161;
  short unsigned int D.46162;
  _Bool D.46163;
  short unsigned int D.46164;
  _Bool D.46165;
  _Bool D.46166;
  short unsigned int D.46172;
  _Bool D.46173;
  _Bool D.46174;
  _Bool D.46175;
  short unsigned int D.46177;
  short unsigned int D.46178;
  _Bool D.46179;
  short unsigned int D.46180;
  _Bool D.46181;
  _Bool D.46182;
  void * D.46185;
  struct MonoBasicBlock * * D.46186;
  struct MonoBasicBlock * * D.46187;
  unsigned int D.46193;
  unsigned int D.46194;
  int D.46195;
  short unsigned int D.46202;
  short unsigned int D.46203;
  _Bool D.46204;
  short unsigned int D.46205;
  _Bool D.46206;
  _Bool D.46207;
  short unsigned int D.46213;
  _Bool D.46214;
  _Bool D.46215;
  _Bool D.46216;
  short unsigned int D.46218;
  short unsigned int D.46219;
  _Bool D.46220;
  short unsigned int D.46221;
  _Bool D.46222;
  _Bool D.46223;
  unsigned int D.46227;
  unsigned int D.46228;
  unsigned char D.46234;
  unsigned int D.46237;
  long int D.46238;
  struct MonoInst * D.46239;
  int D.46240;
  int D.46241;
  long int D.46245;
  struct MonoInst * D.46246;
  int D.46247;
  int D.46248;
  long int D.46252;
  struct MonoInst * D.46253;
  int D.46254;
  int D.46255;
  unsigned int D.46258;
  unsigned int D.46259;
  int D.46260;
  unsigned char * D.46264;
  long int D.46267;
  long int D.46268;
  long unsigned int D.46269;
  long unsigned int D.46270;
  struct MonoBasicBlock * * D.46271;
  short unsigned int D.46276;
  short unsigned int D.46277;
  _Bool D.46278;
  short unsigned int D.46279;
  _Bool D.46280;
  _Bool D.46281;
  short unsigned int D.46287;
  _Bool D.46288;
  _Bool D.46289;
  _Bool D.46290;
  short unsigned int D.46292;
  short unsigned int D.46293;
  _Bool D.46294;
  short unsigned int D.46295;
  _Bool D.46296;
  _Bool D.46297;
  void * D.46300;
  struct MonoBasicBlock * * D.46301;
  struct MonoBasicBlock * * D.46302;
  unsigned int D.46308;
  unsigned int D.46309;
  int D.46310;
  short unsigned int D.46317;
  short unsigned int D.46318;
  _Bool D.46319;
  short unsigned int D.46320;
  _Bool D.46321;
  _Bool D.46322;
  short unsigned int D.46328;
  _Bool D.46329;
  _Bool D.46330;
  _Bool D.46331;
  short unsigned int D.46333;
  short unsigned int D.46334;
  _Bool D.46335;
  short unsigned int D.46336;
  _Bool D.46337;
  _Bool D.46338;
  int D.46342;
  long int D.46347;
  struct MonoInst * D.46348;
  int D.46349;
  int D.46350;
  unsigned char D.46357;
  unsigned int D.46359;
  unsigned int D.46360;
  unsigned int D.46362;
  struct MonoDomain * D.46368;
  long int D.46371;
  struct MonoInst * D.46372;
  int D.46373;
  int D.46374;
  long int vt.426;
  long int D.46380;
  struct MonoInst * D.46381;
  int D.46382;
  int D.46383;
  long int D.46387;
  struct MonoInst * D.46388;
  int D.46389;
  int D.46390;
  long int klass.427;
  long int D.46395;
  struct MonoInst * D.46396;
  int D.46397;
  int D.46398;
  unsigned int D.46401;
  unsigned int D.46402;
  int D.46403;
  unsigned char * D.46407;
  long int D.46410;
  long int D.46411;
  long unsigned int D.46412;
  long unsigned int D.46413;
  struct MonoBasicBlock * * D.46414;
  short unsigned int D.46419;
  short unsigned int D.46420;
  _Bool D.46421;
  short unsigned int D.46422;
  _Bool D.46423;
  _Bool D.46424;
  short unsigned int D.46430;
  _Bool D.46431;
  _Bool D.46432;
  _Bool D.46433;
  short unsigned int D.46435;
  short unsigned int D.46436;
  _Bool D.46437;
  short unsigned int D.46438;
  _Bool D.46439;
  _Bool D.46440;
  void * D.46443;
  struct MonoBasicBlock * * D.46444;
  struct MonoBasicBlock * * D.46445;
  unsigned int D.46451;
  unsigned int D.46452;
  int D.46453;
  short unsigned int D.46460;
  short unsigned int D.46461;
  _Bool D.46462;
  short unsigned int D.46463;
  _Bool D.46464;
  _Bool D.46465;
  short unsigned int D.46471;
  _Bool D.46472;
  _Bool D.46473;
  _Bool D.46474;
  short unsigned int D.46476;
  short unsigned int D.46477;
  _Bool D.46478;
  short unsigned int D.46479;
  _Bool D.46480;
  _Bool D.46481;
  long int D.46484;
  struct MonoInst * D.46485;
  int D.46486;
  int D.46487;
  unsigned int D.46490;
  unsigned int D.46491;
  int D.46492;
  unsigned char * D.46496;
  long int D.46499;
  long int D.46500;
  long unsigned int D.46501;
  long unsigned int D.46502;
  struct MonoBasicBlock * * D.46503;
  short unsigned int D.46508;
  short unsigned int D.46509;
  _Bool D.46510;
  short unsigned int D.46511;
  _Bool D.46512;
  _Bool D.46513;
  short unsigned int D.46519;
  _Bool D.46520;
  _Bool D.46521;
  _Bool D.46522;
  short unsigned int D.46524;
  short unsigned int D.46525;
  _Bool D.46526;
  short unsigned int D.46527;
  _Bool D.46528;
  _Bool D.46529;
  void * D.46532;
  struct MonoBasicBlock * * D.46533;
  struct MonoBasicBlock * * D.46534;
  unsigned int D.46540;
  unsigned int D.46541;
  int D.46542;
  short unsigned int D.46549;
  short unsigned int D.46550;
  _Bool D.46551;
  short unsigned int D.46552;
  _Bool D.46553;
  _Bool D.46554;
  short unsigned int D.46560;
  _Bool D.46561;
  _Bool D.46562;
  _Bool D.46563;
  short unsigned int D.46565;
  short unsigned int D.46566;
  _Bool D.46567;
  short unsigned int D.46568;
  _Bool D.46569;
  _Bool D.46570;
  long int D.46573;
  struct MonoInst * D.46574;
  int D.46575;
  int D.46576;
  unsigned char * D.46580;
  long int D.46583;
  long int D.46584;
  long unsigned int D.46585;
  long unsigned int D.46586;
  struct MonoBasicBlock * * D.46587;
  short unsigned int D.46592;
  short unsigned int D.46593;
  _Bool D.46594;
  short unsigned int D.46595;
  _Bool D.46596;
  _Bool D.46597;
  short unsigned int D.46603;
  _Bool D.46604;
  _Bool D.46605;
  _Bool D.46606;
  short unsigned int D.46608;
  short unsigned int D.46609;
  _Bool D.46610;
  short unsigned int D.46611;
  _Bool D.46612;
  _Bool D.46613;
  long int D.46615;
  struct MonoInst * D.46616;
  int D.46617;
  int D.46618;
  long int D.46622;
  struct MonoInst * D.46623;
  int D.46624;
  int D.46625;
  unsigned int D.46628;
  unsigned int D.46629;
  int D.46630;
  unsigned char * D.46634;
  long int D.46637;
  long int D.46638;
  long unsigned int D.46639;
  long unsigned int D.46640;
  struct MonoBasicBlock * * D.46641;
  short unsigned int D.46646;
  short unsigned int D.46647;
  _Bool D.46648;
  short unsigned int D.46649;
  _Bool D.46650;
  _Bool D.46651;
  short unsigned int D.46657;
  _Bool D.46658;
  _Bool D.46659;
  _Bool D.46660;
  short unsigned int D.46662;
  short unsigned int D.46663;
  _Bool D.46664;
  short unsigned int D.46665;
  _Bool D.46666;
  _Bool D.46667;
  void * D.46670;
  struct MonoBasicBlock * * D.46671;
  struct MonoBasicBlock * * D.46672;
  unsigned int D.46678;
  unsigned int D.46679;
  int D.46680;
  short unsigned int D.46687;
  short unsigned int D.46688;
  _Bool D.46689;
  short unsigned int D.46690;
  _Bool D.46691;
  _Bool D.46692;
  short unsigned int D.46698;
  _Bool D.46699;
  _Bool D.46700;
  _Bool D.46701;
  short unsigned int D.46703;
  short unsigned int D.46704;
  _Bool D.46705;
  short unsigned int D.46706;
  _Bool D.46707;
  _Bool D.46708;
  unsigned char * D.46711;
  long int D.46714;
  long int D.46715;
  long unsigned int D.46716;
  long unsigned int D.46717;
  struct MonoBasicBlock * * D.46718;
  short unsigned int D.46723;
  short unsigned int D.46724;
  _Bool D.46725;
  short unsigned int D.46726;
  _Bool D.46727;
  _Bool D.46728;
  short unsigned int D.46734;
  _Bool D.46735;
  _Bool D.46736;
  _Bool D.46737;
  short unsigned int D.46739;
  short unsigned int D.46740;
  _Bool D.46741;
  short unsigned int D.46742;
  _Bool D.46743;
  _Bool D.46744;
  unsigned char * D.46746;
  long int D.46749;
  long int D.46750;
  long unsigned int D.46751;
  long unsigned int D.46752;
  struct MonoBasicBlock * * D.46753;
  short unsigned int D.46758;
  short unsigned int D.46759;
  _Bool D.46760;
  short unsigned int D.46761;
  _Bool D.46762;
  _Bool D.46763;
  short unsigned int D.46769;
  _Bool D.46770;
  _Bool D.46771;
  _Bool D.46772;
  short unsigned int D.46774;
  short unsigned int D.46775;
  _Bool D.46776;
  short unsigned int D.46777;
  _Bool D.46778;
  _Bool D.46779;
  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.45649 = alloc_preg (cfg);
  vtable_reg = (int) D.45649;
  D.45650 = alloc_ireg_ref (cfg);
  res_reg = (int) D.45650;
  klass_inst = 0B;
  if (context_used != 0) goto <D.45651>; else goto <D.45652>;
  <D.45651>:
  {
    struct MonoInst * args[3];

    try
      {
        mini_class_has_reference_variant_generic_argument (cfg, klass, context_used);
        if (1 != 0) goto <D.45653>; else goto <D.45654>;
        <D.45653>:
        {
          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.45655 = cfg->mempool;
          D.45656 = mono_mempool_alloc (D.45655, 80);
          args[1] = D.45656;
          D.45657 = args[1];
          D.45657 = args[1];
          D.45657->data.op[1].const_val = 0;
          D.45658 = D.45657->data.op[1].const_val;
          D.45657->data.op[0].const_val = D.45658;
          D.45657 = args[1];
          D.45657 = args[1];
          D.45657->prev = 0B;
          D.45659 = D.45657->prev;
          D.45657->next = D.45659;
          D.45657 = args[1];
          D.45657->opcode = 391;
          D.45657 = args[1];
          D.45657->flags = 0;
          D.45657 = args[1];
          D.45657->type = 0;
          D.45657 = args[1];
          D.45657->dreg = -1;
          D.45657 = args[1];
          D.45657 = args[1];
          D.45657 = args[1];
          D.45657->sreg3 = -1;
          D.45660 = D.45657->sreg3;
          D.45657->sreg2 = D.45660;
          D.45661 = D.45657->sreg2;
          D.45657->sreg1 = D.45661;
          D.45657 = args[1];
          D.45662 = cfg->ip;
          D.45657->cil_code = D.45662;
          D.45657 = args[1];
          D.45663 = alloc_preg (cfg);
          D.45664 = (int) D.45663;
          D.45657->dreg = D.45664;
          D.45657 = args[1];
          D.45665 = cache_ins->dreg;
          D.45657->sreg1 = D.45665;
          D.45657 = args[1];
          D.45657->data.op[0].const_val = 8;
          D.45657 = args[1];
          D.45657->type = 1;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.45668>; else goto <D.45669>;
          <D.45668>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45657 = args[1];
          D.45667->next = D.45657;
          D.45657 = args[1];
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45657->prev = D.45667;
          D.45666 = cfg->cbb;
          D.45657 = args[1];
          D.45666->last_ins = D.45657;
          goto <D.45670>;
          <D.45669>:
          D.45666 = cfg->cbb;
          D.45666 = cfg->cbb;
          D.45657 = args[1];
          D.45666->last_ins = D.45657;
          D.45667 = D.45666->last_ins;
          D.45666->code = D.45667;
          <D.45670>:
          args[2] = cache_ins;
          D.45671 = mono_emit_method_call (cfg, mono_isinst, &args, 0B);
          return D.45671;
        }
        <D.45654>:
        klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, 1);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  <D.45652>:
  D.45655 = cfg->mempool;
  is_null_bb = mono_mempool_alloc0 (D.45655, 296);
  D.45672 = cfg->num_bblocks;
  D.45673 = D.45672;
  D.45674 = D.45673 + 1;
  cfg->num_bblocks = D.45674;
  D.45675 = (int) D.45673;
  is_null_bb->block_num = D.45675;
  D.45655 = cfg->mempool;
  false_bb = mono_mempool_alloc0 (D.45655, 296);
  D.45672 = cfg->num_bblocks;
  D.45676 = D.45672;
  D.45677 = D.45676 + 1;
  cfg->num_bblocks = D.45677;
  D.45678 = (int) D.45676;
  false_bb->block_num = D.45678;
  D.45655 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.45655, 296);
  D.45672 = cfg->num_bblocks;
  D.45679 = D.45672;
  D.45680 = D.45679 + 1;
  cfg->num_bblocks = D.45680;
  D.45681 = (int) D.45679;
  end_bb->block_num = D.45681;
  D.45655 = cfg->mempool;
  ins = mono_mempool_alloc (D.45655, 80);
  ins->data.op[1].const_val = 0;
  D.45682 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.45682;
  ins->prev = 0B;
  D.45683 = ins->prev;
  ins->next = D.45683;
  ins->opcode = 428;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.45684 = ins->sreg3;
  ins->sreg2 = D.45684;
  D.45685 = ins->sreg2;
  ins->sreg1 = D.45685;
  D.45662 = cfg->ip;
  ins->cil_code = D.45662;
  ins->dreg = res_reg;
  ins->sreg1 = obj_reg;
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  if (D.45667 != 0B) goto <D.45686>; else goto <D.45687>;
  <D.45686>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45667->next = ins;
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  ins->prev = D.45667;
  D.45666 = cfg->cbb;
  D.45666->last_ins = ins;
  goto <D.45688>;
  <D.45687>:
  D.45666 = cfg->cbb;
  D.45666 = cfg->cbb;
  D.45666->last_ins = ins;
  D.45667 = D.45666->last_ins;
  D.45666->code = D.45667;
  <D.45688>:
  ins->type = 6;
  ins->klass = klass;
  {
    struct MonoInst * inst;

    D.45655 = cfg->mempool;
    inst = mono_mempool_alloc (D.45655, 80);
    inst->data.op[1].const_val = 0;
    D.45689 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45689;
    inst->prev = 0B;
    D.45690 = inst->prev;
    inst->next = D.45690;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45691 = inst->sreg3;
    inst->sreg2 = D.45691;
    D.45692 = inst->sreg2;
    inst->sreg1 = D.45692;
    D.45662 = cfg->ip;
    inst->cil_code = D.45662;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 != 0B) goto <D.45693>; else goto <D.45694>;
    <D.45693>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45667->next = inst;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    inst->prev = D.45667;
    D.45666 = cfg->cbb;
    D.45666->last_ins = inst;
    goto <D.45695>;
    <D.45694>:
    D.45666 = cfg->cbb;
    D.45666 = cfg->cbb;
    D.45666->last_ins = inst;
    D.45667 = D.45666->last_ins;
    D.45666->code = D.45667;
    <D.45695>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.45655 = cfg->mempool;
    ins = mono_mempool_alloc (D.45655, 80);
    ins->data.op[1].const_val = 0;
    D.45696 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.45696;
    ins->prev = 0B;
    D.45697 = ins->prev;
    ins->next = D.45697;
    ins->opcode = 652;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.45698 = ins->sreg3;
    ins->sreg2 = D.45698;
    D.45699 = ins->sreg2;
    ins->sreg1 = D.45699;
    D.45662 = cfg->ip;
    ins->cil_code = D.45662;
    if (0 != 0) goto <D.45700>; else goto <D.45701>;
    <D.45700>:
    D.45655 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45655, 296);
    D.45672 = cfg->num_bblocks;
    D.45702 = D.45672;
    D.45703 = D.45702 + 1;
    cfg->num_bblocks = D.45703;
    D.45704 = (int) D.45702;
    falsebb->block_num = D.45704;
    ins->data.op[0].target_block = is_null_bb;
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, is_null_bb);
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 != 0B) goto <D.45705>; else goto <D.45706>;
    <D.45705>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45667->next = ins;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    ins->prev = D.45667;
    D.45666 = cfg->cbb;
    D.45666->last_ins = ins;
    goto <D.45707>;
    <D.45706>:
    D.45666 = cfg->cbb;
    D.45666 = cfg->cbb;
    D.45666->last_ins = ins;
    D.45667 = D.45666->last_ins;
    D.45666->code = D.45667;
    <D.45707>:
    D.45708 = falsebb->cil_code;
    if (D.45708 != 0B) goto <D.45709>; else goto <D.45710>;
    <D.45709>:
    D.45711 = cfg->cil_offset_to_bb;
    D.45708 = falsebb->cil_code;
    D.45712 = (long int) D.45708;
    D.45713 = cfg->cil_start;
    D.45714 = (long int) D.45713;
    D.45715 = D.45712 - D.45714;
    D.45716 = (long unsigned int) D.45715;
    D.45717 = D.45716 * 8;
    D.45718 = D.45711 + D.45717;
    *D.45718 = falsebb;
    <D.45710>:
    D.45719 = cfg->real_offset;
    falsebb->real_offset = D.45719;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 != 0B) goto <D.45723>; else goto <D.45720>;
    <D.45723>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45724 = D.45667->opcode;
    D.45725 = D.45724 + 64981;
    D.45726 = D.45725 <= 9;
    D.45727 = D.45724 + 64874;
    D.45728 = D.45727 <= 9;
    D.45729 = D.45726 | D.45728;
    if (D.45729 != 0) goto <D.45721>; else goto <D.45730>;
    <D.45730>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45731 = D.45667->opcode;
    D.45732 = D.45731 + 64884;
    if (D.45732 <= 9) goto <D.45721>; else goto <D.45720>;
    <D.45721>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45733 = D.45667->data.op[1].many_blocks;
    D.45734 = D.45733 + 8;
    D.45735 = *D.45734;
    if (D.45735 == 0B) goto <D.45736>; else goto <D.45720>;
    <D.45736>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45733 = D.45667->data.op[1].many_blocks;
    D.45734 = D.45733 + 8;
    *D.45734 = falsebb;
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, falsebb);
    goto <D.45722>;
    <D.45720>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 == 0B) goto <D.45737>; else goto <D.45739>;
    <D.45739>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45740 = D.45667->opcode;
    D.45741 = D.45740 != 446;
    D.45742 = D.45740 != 763;
    D.45743 = D.45741 & D.45742;
    if (D.45743 != 0) goto <D.45744>; else goto <D.45738>;
    <D.45744>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45745 = D.45667->opcode;
    D.45746 = D.45745 + 64981;
    D.45747 = D.45746 > 9;
    D.45748 = D.45745 + 64874;
    D.45749 = D.45748 > 9;
    D.45750 = D.45747 & D.45749;
    if (D.45750 != 0) goto <D.45751>; else goto <D.45738>;
    <D.45751>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45731 = D.45667->opcode;
    D.45732 = D.45731 + 64884;
    if (D.45732 > 9) goto <D.45737>; else goto <D.45738>;
    <D.45737>:
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, falsebb);
    <D.45738>:
    <D.45722>:
    D.45666 = cfg->cbb;
    D.45666->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45752>;
    <D.45701>:
    D.45655 = cfg->mempool;
    D.45753 = mono_mempool_alloc (D.45655, 16);
    ins->data.op[1].many_blocks = D.45753;
    D.45754 = ins->data.op[1].many_blocks;
    *D.45754 = is_null_bb;
    D.45754 = ins->data.op[1].many_blocks;
    D.45755 = D.45754 + 8;
    *D.45755 = 0B;
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, is_null_bb);
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 != 0B) goto <D.45756>; else goto <D.45757>;
    <D.45756>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45667->next = ins;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    ins->prev = D.45667;
    D.45666 = cfg->cbb;
    D.45666->last_ins = ins;
    goto <D.45758>;
    <D.45757>:
    D.45666 = cfg->cbb;
    D.45666 = cfg->cbb;
    D.45666->last_ins = ins;
    D.45667 = D.45666->last_ins;
    D.45666->code = D.45667;
    <D.45758>:
    D.45759 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.45760 = D.45759 & 8;
    if (D.45760 == 0) goto <D.45761>; else goto <D.45762>;
    <D.45761>:
    D.45655 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45655, 296);
    D.45672 = cfg->num_bblocks;
    D.45763 = D.45672;
    D.45764 = D.45763 + 1;
    cfg->num_bblocks = D.45764;
    D.45765 = (int) D.45763;
    falsebb->block_num = D.45765;
    D.45754 = ins->data.op[1].many_blocks;
    D.45755 = D.45754 + 8;
    *D.45755 = falsebb;
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, falsebb);
    D.45708 = falsebb->cil_code;
    if (D.45708 != 0B) goto <D.45766>; else goto <D.45767>;
    <D.45766>:
    D.45711 = cfg->cil_offset_to_bb;
    D.45708 = falsebb->cil_code;
    D.45712 = (long int) D.45708;
    D.45713 = cfg->cil_start;
    D.45714 = (long int) D.45713;
    D.45715 = D.45712 - D.45714;
    D.45716 = (long unsigned int) D.45715;
    D.45717 = D.45716 * 8;
    D.45718 = D.45711 + D.45717;
    *D.45718 = falsebb;
    <D.45767>:
    D.45719 = cfg->real_offset;
    falsebb->real_offset = D.45719;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 != 0B) goto <D.45771>; else goto <D.45768>;
    <D.45771>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45772 = D.45667->opcode;
    D.45773 = D.45772 + 64981;
    D.45774 = D.45773 <= 9;
    D.45775 = D.45772 + 64874;
    D.45776 = D.45775 <= 9;
    D.45777 = D.45774 | D.45776;
    if (D.45777 != 0) goto <D.45769>; else goto <D.45778>;
    <D.45778>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45731 = D.45667->opcode;
    D.45732 = D.45731 + 64884;
    if (D.45732 <= 9) goto <D.45769>; else goto <D.45768>;
    <D.45769>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45733 = D.45667->data.op[1].many_blocks;
    D.45734 = D.45733 + 8;
    D.45735 = *D.45734;
    if (D.45735 == 0B) goto <D.45779>; else goto <D.45768>;
    <D.45779>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45733 = D.45667->data.op[1].many_blocks;
    D.45734 = D.45733 + 8;
    *D.45734 = falsebb;
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, falsebb);
    goto <D.45770>;
    <D.45768>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 == 0B) goto <D.45780>; else goto <D.45782>;
    <D.45782>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45783 = D.45667->opcode;
    D.45784 = D.45783 != 446;
    D.45785 = D.45783 != 763;
    D.45786 = D.45784 & D.45785;
    if (D.45786 != 0) goto <D.45787>; else goto <D.45781>;
    <D.45787>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45788 = D.45667->opcode;
    D.45789 = D.45788 + 64981;
    D.45790 = D.45789 > 9;
    D.45791 = D.45788 + 64874;
    D.45792 = D.45791 > 9;
    D.45793 = D.45790 & D.45792;
    if (D.45793 != 0) goto <D.45794>; else goto <D.45781>;
    <D.45794>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45731 = D.45667->opcode;
    D.45732 = D.45731 + 64884;
    if (D.45732 > 9) goto <D.45780>; else goto <D.45781>;
    <D.45780>:
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, falsebb);
    <D.45781>:
    <D.45770>:
    D.45666 = cfg->cbb;
    D.45666->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.45795>;
    <D.45762>:
    D.45666 = cfg->cbb;
    D.45666->extended = 1;
    <D.45795>:
    <D.45752>:
  }
  {
    struct MonoInst * inst;

    D.45655 = cfg->mempool;
    inst = mono_mempool_alloc (D.45655, 80);
    inst->data.op[1].const_val = 0;
    D.45796 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.45796;
    inst->prev = 0B;
    D.45797 = inst->prev;
    inst->next = D.45797;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.45798 = inst->sreg3;
    inst->sreg2 = D.45798;
    D.45799 = inst->sreg2;
    inst->sreg1 = D.45799;
    D.45662 = cfg->ip;
    inst->cil_code = D.45662;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 != 0B) goto <D.45800>; else goto <D.45801>;
    <D.45800>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45667->next = inst;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    inst->prev = D.45667;
    D.45666 = cfg->cbb;
    D.45666->last_ins = inst;
    goto <D.45802>;
    <D.45801>:
    D.45666 = cfg->cbb;
    D.45666 = cfg->cbb;
    D.45666->last_ins = inst;
    D.45667 = D.45666->last_ins;
    D.45666->code = D.45667;
    <D.45802>:
  }
  D.45803 = klass->flags;
  D.45804 = D.45803 & 32;
  if (D.45804 != 0) goto <D.45805>; else goto <D.45806>;
  <D.45805>:
  D.45807 = context_used != 0;
  D.45808 = (long int) D.45807;
  D.45809 = __builtin_expect (D.45808, 0);
  if (D.45809 != 0) goto <D.45810>; else goto <D.45811>;
  <D.45810>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4086, "!context_used");
  <D.45811>:
  mini_emit_iface_cast (cfg, vtable_reg, klass, false_bb, is_null_bb);
  goto <D.45812>;
  <D.45806>:
  {
    int klass_reg;

    D.45813 = alloc_preg (cfg);
    klass_reg = (int) D.45813;
    D.45814 = klass->rank;
    if (D.45814 != 0) goto <D.45815>; else goto <D.45816>;
    <D.45815>:
    {
      int rank_reg;
      int eclass_reg;

      D.45817 = alloc_preg (cfg);
      rank_reg = (int) D.45817;
      D.45818 = alloc_preg (cfg);
      eclass_reg = (int) D.45818;
      D.45807 = context_used != 0;
      D.45808 = (long int) D.45807;
      D.45809 = __builtin_expect (D.45808, 0);
      if (D.45809 != 0) goto <D.45819>; else goto <D.45820>;
      <D.45819>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4096, "!context_used");
      <D.45820>:
      {
        struct MonoInst * inst;

        D.45655 = cfg->mempool;
        inst = mono_mempool_alloc (D.45655, 80);
        inst->data.op[1].const_val = 0;
        D.45821 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45821;
        inst->prev = 0B;
        D.45822 = inst->prev;
        inst->next = D.45822;
        inst->opcode = 393;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45823 = inst->sreg3;
        inst->sreg2 = D.45823;
        D.45824 = inst->sreg2;
        inst->sreg1 = D.45824;
        D.45662 = cfg->ip;
        inst->cil_code = D.45662;
        inst->dreg = rank_reg;
        inst->sreg1 = vtable_reg;
        inst->data.op[0].const_val = 42;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.45825>; else goto <D.45826>;
        <D.45825>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45667->next = inst;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        inst->prev = D.45667;
        D.45666 = cfg->cbb;
        D.45666->last_ins = inst;
        goto <D.45827>;
        <D.45826>:
        D.45666 = cfg->cbb;
        D.45666 = cfg->cbb;
        D.45666->last_ins = inst;
        D.45667 = D.45666->last_ins;
        D.45666->code = D.45667;
        <D.45827>:
      }
      {
        struct MonoInst * inst;

        D.45655 = cfg->mempool;
        inst = mono_mempool_alloc (D.45655, 80);
        inst->data.op[1].const_val = 0;
        D.45828 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45828;
        inst->prev = 0B;
        D.45829 = inst->prev;
        inst->next = D.45829;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45830 = inst->sreg3;
        inst->sreg2 = D.45830;
        D.45831 = inst->sreg2;
        inst->sreg1 = D.45831;
        D.45662 = cfg->ip;
        inst->cil_code = D.45662;
        inst->dreg = -1;
        inst->sreg1 = rank_reg;
        D.45814 = klass->rank;
        D.45832 = (long int) D.45814;
        inst->data.op[1].const_val = D.45832;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.45833>; else goto <D.45834>;
        <D.45833>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45667->next = inst;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        inst->prev = D.45667;
        D.45666 = cfg->cbb;
        D.45666->last_ins = inst;
        goto <D.45835>;
        <D.45834>:
        D.45666 = cfg->cbb;
        D.45666 = cfg->cbb;
        D.45666->last_ins = inst;
        D.45667 = D.45666->last_ins;
        D.45666->code = D.45667;
        <D.45835>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.45655 = cfg->mempool;
        ins = mono_mempool_alloc (D.45655, 80);
        ins->data.op[1].const_val = 0;
        D.45836 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.45836;
        ins->prev = 0B;
        D.45837 = ins->prev;
        ins->next = D.45837;
        ins->opcode = 560;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.45838 = ins->sreg3;
        ins->sreg2 = D.45838;
        D.45839 = ins->sreg2;
        ins->sreg1 = D.45839;
        D.45662 = cfg->ip;
        ins->cil_code = D.45662;
        if (0 != 0) goto <D.45840>; else goto <D.45841>;
        <D.45840>:
        D.45655 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45655, 296);
        D.45672 = cfg->num_bblocks;
        D.45842 = D.45672;
        D.45843 = D.45842 + 1;
        cfg->num_bblocks = D.45843;
        D.45844 = (int) D.45842;
        falsebb->block_num = D.45844;
        ins->data.op[0].target_block = false_bb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, false_bb);
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.45845>; else goto <D.45846>;
        <D.45845>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45667->next = ins;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        ins->prev = D.45667;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        goto <D.45847>;
        <D.45846>:
        D.45666 = cfg->cbb;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        D.45667 = D.45666->last_ins;
        D.45666->code = D.45667;
        <D.45847>:
        D.45848 = falsebb->cil_code;
        if (D.45848 != 0B) goto <D.45849>; else goto <D.45850>;
        <D.45849>:
        D.45711 = cfg->cil_offset_to_bb;
        D.45848 = falsebb->cil_code;
        D.45851 = (long int) D.45848;
        D.45713 = cfg->cil_start;
        D.45714 = (long int) D.45713;
        D.45852 = D.45851 - D.45714;
        D.45853 = (long unsigned int) D.45852;
        D.45854 = D.45853 * 8;
        D.45855 = D.45711 + D.45854;
        *D.45855 = falsebb;
        <D.45850>:
        D.45719 = cfg->real_offset;
        falsebb->real_offset = D.45719;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.45859>; else goto <D.45856>;
        <D.45859>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45860 = D.45667->opcode;
        D.45861 = D.45860 + 64981;
        D.45862 = D.45861 <= 9;
        D.45863 = D.45860 + 64874;
        D.45864 = D.45863 <= 9;
        D.45865 = D.45862 | D.45864;
        if (D.45865 != 0) goto <D.45857>; else goto <D.45866>;
        <D.45866>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 <= 9) goto <D.45857>; else goto <D.45856>;
        <D.45857>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        D.45735 = *D.45734;
        if (D.45735 == 0B) goto <D.45867>; else goto <D.45856>;
        <D.45867>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        *D.45734 = falsebb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        goto <D.45858>;
        <D.45856>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 == 0B) goto <D.45868>; else goto <D.45870>;
        <D.45870>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45871 = D.45667->opcode;
        D.45872 = D.45871 != 446;
        D.45873 = D.45871 != 763;
        D.45874 = D.45872 & D.45873;
        if (D.45874 != 0) goto <D.45875>; else goto <D.45869>;
        <D.45875>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45876 = D.45667->opcode;
        D.45877 = D.45876 + 64981;
        D.45878 = D.45877 > 9;
        D.45879 = D.45876 + 64874;
        D.45880 = D.45879 > 9;
        D.45881 = D.45878 & D.45880;
        if (D.45881 != 0) goto <D.45882>; else goto <D.45869>;
        <D.45882>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 > 9) goto <D.45868>; else goto <D.45869>;
        <D.45868>:
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        <D.45869>:
        <D.45858>:
        D.45666 = cfg->cbb;
        D.45666->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.45883>;
        <D.45841>:
        D.45655 = cfg->mempool;
        D.45884 = mono_mempool_alloc (D.45655, 16);
        ins->data.op[1].many_blocks = D.45884;
        D.45885 = ins->data.op[1].many_blocks;
        *D.45885 = false_bb;
        D.45885 = ins->data.op[1].many_blocks;
        D.45886 = D.45885 + 8;
        *D.45886 = 0B;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, false_bb);
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.45887>; else goto <D.45888>;
        <D.45887>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45667->next = ins;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        ins->prev = D.45667;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        goto <D.45889>;
        <D.45888>:
        D.45666 = cfg->cbb;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        D.45667 = D.45666->last_ins;
        D.45666->code = D.45667;
        <D.45889>:
        D.45759 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.45760 = D.45759 & 8;
        if (D.45760 == 0) goto <D.45890>; else goto <D.45891>;
        <D.45890>:
        D.45655 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45655, 296);
        D.45672 = cfg->num_bblocks;
        D.45892 = D.45672;
        D.45893 = D.45892 + 1;
        cfg->num_bblocks = D.45893;
        D.45894 = (int) D.45892;
        falsebb->block_num = D.45894;
        D.45885 = ins->data.op[1].many_blocks;
        D.45886 = D.45885 + 8;
        *D.45886 = falsebb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        D.45848 = falsebb->cil_code;
        if (D.45848 != 0B) goto <D.45895>; else goto <D.45896>;
        <D.45895>:
        D.45711 = cfg->cil_offset_to_bb;
        D.45848 = falsebb->cil_code;
        D.45851 = (long int) D.45848;
        D.45713 = cfg->cil_start;
        D.45714 = (long int) D.45713;
        D.45852 = D.45851 - D.45714;
        D.45853 = (long unsigned int) D.45852;
        D.45854 = D.45853 * 8;
        D.45855 = D.45711 + D.45854;
        *D.45855 = falsebb;
        <D.45896>:
        D.45719 = cfg->real_offset;
        falsebb->real_offset = D.45719;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.45900>; else goto <D.45897>;
        <D.45900>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45901 = D.45667->opcode;
        D.45902 = D.45901 + 64981;
        D.45903 = D.45902 <= 9;
        D.45904 = D.45901 + 64874;
        D.45905 = D.45904 <= 9;
        D.45906 = D.45903 | D.45905;
        if (D.45906 != 0) goto <D.45898>; else goto <D.45907>;
        <D.45907>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 <= 9) goto <D.45898>; else goto <D.45897>;
        <D.45898>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        D.45735 = *D.45734;
        if (D.45735 == 0B) goto <D.45908>; else goto <D.45897>;
        <D.45908>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        *D.45734 = falsebb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        goto <D.45899>;
        <D.45897>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 == 0B) goto <D.45909>; else goto <D.45911>;
        <D.45911>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45912 = D.45667->opcode;
        D.45913 = D.45912 != 446;
        D.45914 = D.45912 != 763;
        D.45915 = D.45913 & D.45914;
        if (D.45915 != 0) goto <D.45916>; else goto <D.45910>;
        <D.45916>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45917 = D.45667->opcode;
        D.45918 = D.45917 + 64981;
        D.45919 = D.45918 > 9;
        D.45920 = D.45917 + 64874;
        D.45921 = D.45920 > 9;
        D.45922 = D.45919 & D.45921;
        if (D.45922 != 0) goto <D.45923>; else goto <D.45910>;
        <D.45923>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 > 9) goto <D.45909>; else goto <D.45910>;
        <D.45909>:
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        <D.45910>:
        <D.45899>:
        D.45666 = cfg->cbb;
        D.45666->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.45924>;
        <D.45891>:
        D.45666 = cfg->cbb;
        D.45666->extended = 1;
        <D.45924>:
        <D.45883>:
      }
      {
        struct MonoInst * inst;

        D.45655 = cfg->mempool;
        inst = mono_mempool_alloc (D.45655, 80);
        inst->data.op[1].const_val = 0;
        D.45925 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45925;
        inst->prev = 0B;
        D.45926 = inst->prev;
        inst->next = D.45926;
        inst->opcode = 391;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45927 = inst->sreg3;
        inst->sreg2 = D.45927;
        D.45928 = inst->sreg2;
        inst->sreg1 = D.45928;
        D.45662 = cfg->ip;
        inst->cil_code = D.45662;
        inst->dreg = klass_reg;
        inst->sreg1 = vtable_reg;
        inst->data.op[0].const_val = 0;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.45929>; else goto <D.45930>;
        <D.45929>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45667->next = inst;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        inst->prev = D.45667;
        D.45666 = cfg->cbb;
        D.45666->last_ins = inst;
        goto <D.45931>;
        <D.45930>:
        D.45666 = cfg->cbb;
        D.45666 = cfg->cbb;
        D.45666->last_ins = inst;
        D.45667 = D.45666->last_ins;
        D.45666->code = D.45667;
        <D.45931>:
      }
      {
        struct MonoInst * inst;

        D.45655 = cfg->mempool;
        inst = mono_mempool_alloc (D.45655, 80);
        inst->data.op[1].const_val = 0;
        D.45932 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.45932;
        inst->prev = 0B;
        D.45933 = inst->prev;
        inst->next = D.45933;
        inst->opcode = 391;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.45934 = inst->sreg3;
        inst->sreg2 = D.45934;
        D.45935 = inst->sreg2;
        inst->sreg1 = D.45935;
        D.45662 = cfg->ip;
        inst->cil_code = D.45662;
        inst->dreg = eclass_reg;
        inst->sreg1 = klass_reg;
        inst->data.op[0].const_val = 8;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.45936>; else goto <D.45937>;
        <D.45936>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45667->next = inst;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        inst->prev = D.45667;
        D.45666 = cfg->cbb;
        D.45666->last_ins = inst;
        goto <D.45938>;
        <D.45937>:
        D.45666 = cfg->cbb;
        D.45666 = cfg->cbb;
        D.45666->last_ins = inst;
        D.45667 = D.45666->last_ins;
        D.45666->code = D.45667;
        <D.45938>:
      }
      D.45939 = klass->cast_class;
      D.45940 = mono_defaults.object_class;
      if (D.45939 == D.45940) goto <D.45941>; else goto <D.45942>;
      <D.45941>:
      {
        int parent_reg;

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

          D.45655 = cfg->mempool;
          inst = mono_mempool_alloc (D.45655, 80);
          inst->data.op[1].const_val = 0;
          D.45944 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.45944;
          inst->prev = 0B;
          D.45945 = inst->prev;
          inst->next = D.45945;
          inst->opcode = 391;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.45946 = inst->sreg3;
          inst->sreg2 = D.45946;
          D.45947 = inst->sreg2;
          inst->sreg1 = D.45947;
          D.45662 = cfg->ip;
          inst->cil_code = D.45662;
          inst->dreg = parent_reg;
          inst->sreg1 = eclass_reg;
          inst->data.op[0].const_val = 40;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.45948>; else goto <D.45949>;
          <D.45948>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45667->next = inst;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          inst->prev = D.45667;
          D.45666 = cfg->cbb;
          D.45666->last_ins = inst;
          goto <D.45950>;
          <D.45949>:
          D.45666 = cfg->cbb;
          D.45666 = cfg->cbb;
          D.45666->last_ins = inst;
          D.45667 = D.45666->last_ins;
          D.45666->code = D.45667;
          <D.45950>:
        }
        D.45951 = mono_defaults.enum_class;
        D.45952 = D.45951->parent;
        mini_emit_class_check_branch (cfg, parent_reg, D.45952, 560, is_null_bb);
        D.45951 = mono_defaults.enum_class;
        mini_emit_class_check_branch (cfg, eclass_reg, D.45951, 555, is_null_bb);
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.45655 = cfg->mempool;
          ins = mono_mempool_alloc (D.45655, 80);
          ins->data.op[1].const_val = 0;
          D.45953 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.45953;
          ins->prev = 0B;
          D.45954 = ins->prev;
          ins->next = D.45954;
          ins->opcode = 446;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.45955 = ins->sreg3;
          ins->sreg2 = D.45955;
          D.45956 = ins->sreg2;
          ins->sreg1 = D.45956;
          D.45662 = cfg->ip;
          ins->cil_code = D.45662;
          if (1 != 0) goto <D.45957>; else goto <D.45958>;
          <D.45957>:
          D.45655 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.45655, 296);
          D.45672 = cfg->num_bblocks;
          D.45959 = D.45672;
          D.45960 = D.45959 + 1;
          cfg->num_bblocks = D.45960;
          D.45961 = (int) D.45959;
          falsebb->block_num = D.45961;
          ins->data.op[0].target_block = false_bb;
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, false_bb);
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.45962>; else goto <D.45963>;
          <D.45962>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45667->next = ins;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          ins->prev = D.45667;
          D.45666 = cfg->cbb;
          D.45666->last_ins = ins;
          goto <D.45964>;
          <D.45963>:
          D.45666 = cfg->cbb;
          D.45666 = cfg->cbb;
          D.45666->last_ins = ins;
          D.45667 = D.45666->last_ins;
          D.45666->code = D.45667;
          <D.45964>:
          D.45965 = falsebb->cil_code;
          if (D.45965 != 0B) goto <D.45966>; else goto <D.45967>;
          <D.45966>:
          D.45711 = cfg->cil_offset_to_bb;
          D.45965 = falsebb->cil_code;
          D.45968 = (long int) D.45965;
          D.45713 = cfg->cil_start;
          D.45714 = (long int) D.45713;
          D.45969 = D.45968 - D.45714;
          D.45970 = (long unsigned int) D.45969;
          D.45971 = D.45970 * 8;
          D.45972 = D.45711 + D.45971;
          *D.45972 = falsebb;
          <D.45967>:
          D.45719 = cfg->real_offset;
          falsebb->real_offset = D.45719;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.45976>; else goto <D.45973>;
          <D.45976>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45977 = D.45667->opcode;
          D.45978 = D.45977 + 64981;
          D.45979 = D.45978 <= 9;
          D.45980 = D.45977 + 64874;
          D.45981 = D.45980 <= 9;
          D.45982 = D.45979 | D.45981;
          if (D.45982 != 0) goto <D.45974>; else goto <D.45983>;
          <D.45983>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45731 = D.45667->opcode;
          D.45732 = D.45731 + 64884;
          if (D.45732 <= 9) goto <D.45974>; else goto <D.45973>;
          <D.45974>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45733 = D.45667->data.op[1].many_blocks;
          D.45734 = D.45733 + 8;
          D.45735 = *D.45734;
          if (D.45735 == 0B) goto <D.45984>; else goto <D.45973>;
          <D.45984>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45733 = D.45667->data.op[1].many_blocks;
          D.45734 = D.45733 + 8;
          *D.45734 = falsebb;
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, falsebb);
          goto <D.45975>;
          <D.45973>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 == 0B) goto <D.45985>; else goto <D.45987>;
          <D.45987>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45988 = D.45667->opcode;
          D.45989 = D.45988 != 446;
          D.45990 = D.45988 != 763;
          D.45991 = D.45989 & D.45990;
          if (D.45991 != 0) goto <D.45992>; else goto <D.45986>;
          <D.45992>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45993 = D.45667->opcode;
          D.45994 = D.45993 + 64981;
          D.45995 = D.45994 > 9;
          D.45996 = D.45993 + 64874;
          D.45997 = D.45996 > 9;
          D.45998 = D.45995 & D.45997;
          if (D.45998 != 0) goto <D.45999>; else goto <D.45986>;
          <D.45999>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45731 = D.45667->opcode;
          D.45732 = D.45731 + 64884;
          if (D.45732 > 9) goto <D.45985>; else goto <D.45986>;
          <D.45985>:
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, falsebb);
          <D.45986>:
          <D.45975>:
          D.45666 = cfg->cbb;
          D.45666->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.46000>;
          <D.45958>:
          D.45655 = cfg->mempool;
          D.46001 = mono_mempool_alloc (D.45655, 16);
          ins->data.op[1].many_blocks = D.46001;
          D.46002 = ins->data.op[1].many_blocks;
          *D.46002 = false_bb;
          D.46002 = ins->data.op[1].many_blocks;
          D.46003 = D.46002 + 8;
          *D.46003 = 0B;
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, false_bb);
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.46004>; else goto <D.46005>;
          <D.46004>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45667->next = ins;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          ins->prev = D.45667;
          D.45666 = cfg->cbb;
          D.45666->last_ins = ins;
          goto <D.46006>;
          <D.46005>:
          D.45666 = cfg->cbb;
          D.45666 = cfg->cbb;
          D.45666->last_ins = ins;
          D.45667 = D.45666->last_ins;
          D.45666->code = D.45667;
          <D.46006>:
          D.45759 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.45760 = D.45759 & 8;
          if (D.45760 == 0) goto <D.46007>; else goto <D.46008>;
          <D.46007>:
          D.45655 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.45655, 296);
          D.45672 = cfg->num_bblocks;
          D.46009 = D.45672;
          D.46010 = D.46009 + 1;
          cfg->num_bblocks = D.46010;
          D.46011 = (int) D.46009;
          falsebb->block_num = D.46011;
          D.46002 = ins->data.op[1].many_blocks;
          D.46003 = D.46002 + 8;
          *D.46003 = falsebb;
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, falsebb);
          D.45965 = falsebb->cil_code;
          if (D.45965 != 0B) goto <D.46012>; else goto <D.46013>;
          <D.46012>:
          D.45711 = cfg->cil_offset_to_bb;
          D.45965 = falsebb->cil_code;
          D.45968 = (long int) D.45965;
          D.45713 = cfg->cil_start;
          D.45714 = (long int) D.45713;
          D.45969 = D.45968 - D.45714;
          D.45970 = (long unsigned int) D.45969;
          D.45971 = D.45970 * 8;
          D.45972 = D.45711 + D.45971;
          *D.45972 = falsebb;
          <D.46013>:
          D.45719 = cfg->real_offset;
          falsebb->real_offset = D.45719;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.46017>; else goto <D.46014>;
          <D.46017>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.46018 = D.45667->opcode;
          D.46019 = D.46018 + 64981;
          D.46020 = D.46019 <= 9;
          D.46021 = D.46018 + 64874;
          D.46022 = D.46021 <= 9;
          D.46023 = D.46020 | D.46022;
          if (D.46023 != 0) goto <D.46015>; else goto <D.46024>;
          <D.46024>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45731 = D.45667->opcode;
          D.45732 = D.45731 + 64884;
          if (D.45732 <= 9) goto <D.46015>; else goto <D.46014>;
          <D.46015>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45733 = D.45667->data.op[1].many_blocks;
          D.45734 = D.45733 + 8;
          D.45735 = *D.45734;
          if (D.45735 == 0B) goto <D.46025>; else goto <D.46014>;
          <D.46025>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45733 = D.45667->data.op[1].many_blocks;
          D.45734 = D.45733 + 8;
          *D.45734 = falsebb;
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, falsebb);
          goto <D.46016>;
          <D.46014>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 == 0B) goto <D.46026>; else goto <D.46028>;
          <D.46028>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.46029 = D.45667->opcode;
          D.46030 = D.46029 != 446;
          D.46031 = D.46029 != 763;
          D.46032 = D.46030 & D.46031;
          if (D.46032 != 0) goto <D.46033>; else goto <D.46027>;
          <D.46033>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.46034 = D.45667->opcode;
          D.46035 = D.46034 + 64981;
          D.46036 = D.46035 > 9;
          D.46037 = D.46034 + 64874;
          D.46038 = D.46037 > 9;
          D.46039 = D.46036 & D.46038;
          if (D.46039 != 0) goto <D.46040>; else goto <D.46027>;
          <D.46040>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45731 = D.45667->opcode;
          D.45732 = D.45731 + 64884;
          if (D.45732 > 9) goto <D.46026>; else goto <D.46027>;
          <D.46026>:
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, falsebb);
          <D.46027>:
          <D.46016>:
          D.45666 = cfg->cbb;
          D.45666->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.46041>;
          <D.46008>:
          D.45666 = cfg->cbb;
          D.45666->extended = 1;
          <D.46041>:
          <D.46000>:
        }
      }
      goto <D.46042>;
      <D.45942>:
      D.45939 = klass->cast_class;
      D.45951 = mono_defaults.enum_class;
      D.45952 = D.45951->parent;
      if (D.45939 == D.45952) goto <D.46043>; else goto <D.46044>;
      <D.46043>:
      D.45951 = mono_defaults.enum_class;
      D.45952 = D.45951->parent;
      mini_emit_class_check_branch (cfg, eclass_reg, D.45952, 555, is_null_bb);
      D.45951 = mono_defaults.enum_class;
      mini_emit_class_check_branch (cfg, eclass_reg, D.45951, 555, is_null_bb);
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.45655 = cfg->mempool;
        ins = mono_mempool_alloc (D.45655, 80);
        ins->data.op[1].const_val = 0;
        D.46045 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.46045;
        ins->prev = 0B;
        D.46046 = ins->prev;
        ins->next = D.46046;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.46047 = ins->sreg3;
        ins->sreg2 = D.46047;
        D.46048 = ins->sreg2;
        ins->sreg1 = D.46048;
        D.45662 = cfg->ip;
        ins->cil_code = D.45662;
        if (1 != 0) goto <D.46049>; else goto <D.46050>;
        <D.46049>:
        D.45655 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45655, 296);
        D.45672 = cfg->num_bblocks;
        D.46051 = D.45672;
        D.46052 = D.46051 + 1;
        cfg->num_bblocks = D.46052;
        D.46053 = (int) D.46051;
        falsebb->block_num = D.46053;
        ins->data.op[0].target_block = false_bb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, false_bb);
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.46054>; else goto <D.46055>;
        <D.46054>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45667->next = ins;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        ins->prev = D.45667;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        goto <D.46056>;
        <D.46055>:
        D.45666 = cfg->cbb;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        D.45667 = D.45666->last_ins;
        D.45666->code = D.45667;
        <D.46056>:
        D.46057 = falsebb->cil_code;
        if (D.46057 != 0B) goto <D.46058>; else goto <D.46059>;
        <D.46058>:
        D.45711 = cfg->cil_offset_to_bb;
        D.46057 = falsebb->cil_code;
        D.46060 = (long int) D.46057;
        D.45713 = cfg->cil_start;
        D.45714 = (long int) D.45713;
        D.46061 = D.46060 - D.45714;
        D.46062 = (long unsigned int) D.46061;
        D.46063 = D.46062 * 8;
        D.46064 = D.45711 + D.46063;
        *D.46064 = falsebb;
        <D.46059>:
        D.45719 = cfg->real_offset;
        falsebb->real_offset = D.45719;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.46068>; else goto <D.46065>;
        <D.46068>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46069 = D.45667->opcode;
        D.46070 = D.46069 + 64981;
        D.46071 = D.46070 <= 9;
        D.46072 = D.46069 + 64874;
        D.46073 = D.46072 <= 9;
        D.46074 = D.46071 | D.46073;
        if (D.46074 != 0) goto <D.46066>; else goto <D.46075>;
        <D.46075>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 <= 9) goto <D.46066>; else goto <D.46065>;
        <D.46066>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        D.45735 = *D.45734;
        if (D.45735 == 0B) goto <D.46076>; else goto <D.46065>;
        <D.46076>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        *D.45734 = falsebb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        goto <D.46067>;
        <D.46065>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 == 0B) goto <D.46077>; else goto <D.46079>;
        <D.46079>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46080 = D.45667->opcode;
        D.46081 = D.46080 != 446;
        D.46082 = D.46080 != 763;
        D.46083 = D.46081 & D.46082;
        if (D.46083 != 0) goto <D.46084>; else goto <D.46078>;
        <D.46084>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46085 = D.45667->opcode;
        D.46086 = D.46085 + 64981;
        D.46087 = D.46086 > 9;
        D.46088 = D.46085 + 64874;
        D.46089 = D.46088 > 9;
        D.46090 = D.46087 & D.46089;
        if (D.46090 != 0) goto <D.46091>; else goto <D.46078>;
        <D.46091>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 > 9) goto <D.46077>; else goto <D.46078>;
        <D.46077>:
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        <D.46078>:
        <D.46067>:
        D.45666 = cfg->cbb;
        D.45666->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46092>;
        <D.46050>:
        D.45655 = cfg->mempool;
        D.46093 = mono_mempool_alloc (D.45655, 16);
        ins->data.op[1].many_blocks = D.46093;
        D.46094 = ins->data.op[1].many_blocks;
        *D.46094 = false_bb;
        D.46094 = ins->data.op[1].many_blocks;
        D.46095 = D.46094 + 8;
        *D.46095 = 0B;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, false_bb);
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.46096>; else goto <D.46097>;
        <D.46096>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45667->next = ins;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        ins->prev = D.45667;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        goto <D.46098>;
        <D.46097>:
        D.45666 = cfg->cbb;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        D.45667 = D.45666->last_ins;
        D.45666->code = D.45667;
        <D.46098>:
        D.45759 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.45760 = D.45759 & 8;
        if (D.45760 == 0) goto <D.46099>; else goto <D.46100>;
        <D.46099>:
        D.45655 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45655, 296);
        D.45672 = cfg->num_bblocks;
        D.46101 = D.45672;
        D.46102 = D.46101 + 1;
        cfg->num_bblocks = D.46102;
        D.46103 = (int) D.46101;
        falsebb->block_num = D.46103;
        D.46094 = ins->data.op[1].many_blocks;
        D.46095 = D.46094 + 8;
        *D.46095 = falsebb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        D.46057 = falsebb->cil_code;
        if (D.46057 != 0B) goto <D.46104>; else goto <D.46105>;
        <D.46104>:
        D.45711 = cfg->cil_offset_to_bb;
        D.46057 = falsebb->cil_code;
        D.46060 = (long int) D.46057;
        D.45713 = cfg->cil_start;
        D.45714 = (long int) D.45713;
        D.46061 = D.46060 - D.45714;
        D.46062 = (long unsigned int) D.46061;
        D.46063 = D.46062 * 8;
        D.46064 = D.45711 + D.46063;
        *D.46064 = falsebb;
        <D.46105>:
        D.45719 = cfg->real_offset;
        falsebb->real_offset = D.45719;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.46109>; else goto <D.46106>;
        <D.46109>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46110 = D.45667->opcode;
        D.46111 = D.46110 + 64981;
        D.46112 = D.46111 <= 9;
        D.46113 = D.46110 + 64874;
        D.46114 = D.46113 <= 9;
        D.46115 = D.46112 | D.46114;
        if (D.46115 != 0) goto <D.46107>; else goto <D.46116>;
        <D.46116>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 <= 9) goto <D.46107>; else goto <D.46106>;
        <D.46107>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        D.45735 = *D.45734;
        if (D.45735 == 0B) goto <D.46117>; else goto <D.46106>;
        <D.46117>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        *D.45734 = falsebb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        goto <D.46108>;
        <D.46106>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 == 0B) goto <D.46118>; else goto <D.46120>;
        <D.46120>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46121 = D.45667->opcode;
        D.46122 = D.46121 != 446;
        D.46123 = D.46121 != 763;
        D.46124 = D.46122 & D.46123;
        if (D.46124 != 0) goto <D.46125>; else goto <D.46119>;
        <D.46125>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46126 = D.45667->opcode;
        D.46127 = D.46126 + 64981;
        D.46128 = D.46127 > 9;
        D.46129 = D.46126 + 64874;
        D.46130 = D.46129 > 9;
        D.46131 = D.46128 & D.46130;
        if (D.46131 != 0) goto <D.46132>; else goto <D.46119>;
        <D.46132>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 > 9) goto <D.46118>; else goto <D.46119>;
        <D.46118>:
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        <D.46119>:
        <D.46108>:
        D.45666 = cfg->cbb;
        D.45666->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46133>;
        <D.46100>:
        D.45666 = cfg->cbb;
        D.45666->extended = 1;
        <D.46133>:
        <D.46092>:
      }
      goto <D.46134>;
      <D.46044>:
      D.45939 = klass->cast_class;
      D.45951 = mono_defaults.enum_class;
      if (D.45939 == D.45951) goto <D.46135>; else goto <D.46136>;
      <D.46135>:
      D.45951 = mono_defaults.enum_class;
      mini_emit_class_check_branch (cfg, eclass_reg, D.45951, 555, is_null_bb);
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.45655 = cfg->mempool;
        ins = mono_mempool_alloc (D.45655, 80);
        ins->data.op[1].const_val = 0;
        D.46137 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.46137;
        ins->prev = 0B;
        D.46138 = ins->prev;
        ins->next = D.46138;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.46139 = ins->sreg3;
        ins->sreg2 = D.46139;
        D.46140 = ins->sreg2;
        ins->sreg1 = D.46140;
        D.45662 = cfg->ip;
        ins->cil_code = D.45662;
        if (1 != 0) goto <D.46141>; else goto <D.46142>;
        <D.46141>:
        D.45655 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45655, 296);
        D.45672 = cfg->num_bblocks;
        D.46143 = D.45672;
        D.46144 = D.46143 + 1;
        cfg->num_bblocks = D.46144;
        D.46145 = (int) D.46143;
        falsebb->block_num = D.46145;
        ins->data.op[0].target_block = false_bb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, false_bb);
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.46146>; else goto <D.46147>;
        <D.46146>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45667->next = ins;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        ins->prev = D.45667;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        goto <D.46148>;
        <D.46147>:
        D.45666 = cfg->cbb;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        D.45667 = D.45666->last_ins;
        D.45666->code = D.45667;
        <D.46148>:
        D.46149 = falsebb->cil_code;
        if (D.46149 != 0B) goto <D.46150>; else goto <D.46151>;
        <D.46150>:
        D.45711 = cfg->cil_offset_to_bb;
        D.46149 = falsebb->cil_code;
        D.46152 = (long int) D.46149;
        D.45713 = cfg->cil_start;
        D.45714 = (long int) D.45713;
        D.46153 = D.46152 - D.45714;
        D.46154 = (long unsigned int) D.46153;
        D.46155 = D.46154 * 8;
        D.46156 = D.45711 + D.46155;
        *D.46156 = falsebb;
        <D.46151>:
        D.45719 = cfg->real_offset;
        falsebb->real_offset = D.45719;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.46160>; else goto <D.46157>;
        <D.46160>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46161 = D.45667->opcode;
        D.46162 = D.46161 + 64981;
        D.46163 = D.46162 <= 9;
        D.46164 = D.46161 + 64874;
        D.46165 = D.46164 <= 9;
        D.46166 = D.46163 | D.46165;
        if (D.46166 != 0) goto <D.46158>; else goto <D.46167>;
        <D.46167>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 <= 9) goto <D.46158>; else goto <D.46157>;
        <D.46158>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        D.45735 = *D.45734;
        if (D.45735 == 0B) goto <D.46168>; else goto <D.46157>;
        <D.46168>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        *D.45734 = falsebb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        goto <D.46159>;
        <D.46157>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 == 0B) goto <D.46169>; else goto <D.46171>;
        <D.46171>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46172 = D.45667->opcode;
        D.46173 = D.46172 != 446;
        D.46174 = D.46172 != 763;
        D.46175 = D.46173 & D.46174;
        if (D.46175 != 0) goto <D.46176>; else goto <D.46170>;
        <D.46176>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46177 = D.45667->opcode;
        D.46178 = D.46177 + 64981;
        D.46179 = D.46178 > 9;
        D.46180 = D.46177 + 64874;
        D.46181 = D.46180 > 9;
        D.46182 = D.46179 & D.46181;
        if (D.46182 != 0) goto <D.46183>; else goto <D.46170>;
        <D.46183>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 > 9) goto <D.46169>; else goto <D.46170>;
        <D.46169>:
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        <D.46170>:
        <D.46159>:
        D.45666 = cfg->cbb;
        D.45666->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46184>;
        <D.46142>:
        D.45655 = cfg->mempool;
        D.46185 = mono_mempool_alloc (D.45655, 16);
        ins->data.op[1].many_blocks = D.46185;
        D.46186 = ins->data.op[1].many_blocks;
        *D.46186 = false_bb;
        D.46186 = ins->data.op[1].many_blocks;
        D.46187 = D.46186 + 8;
        *D.46187 = 0B;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, false_bb);
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.46188>; else goto <D.46189>;
        <D.46188>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45667->next = ins;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        ins->prev = D.45667;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        goto <D.46190>;
        <D.46189>:
        D.45666 = cfg->cbb;
        D.45666 = cfg->cbb;
        D.45666->last_ins = ins;
        D.45667 = D.45666->last_ins;
        D.45666->code = D.45667;
        <D.46190>:
        D.45759 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.45760 = D.45759 & 8;
        if (D.45760 == 0) goto <D.46191>; else goto <D.46192>;
        <D.46191>:
        D.45655 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.45655, 296);
        D.45672 = cfg->num_bblocks;
        D.46193 = D.45672;
        D.46194 = D.46193 + 1;
        cfg->num_bblocks = D.46194;
        D.46195 = (int) D.46193;
        falsebb->block_num = D.46195;
        D.46186 = ins->data.op[1].many_blocks;
        D.46187 = D.46186 + 8;
        *D.46187 = falsebb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        D.46149 = falsebb->cil_code;
        if (D.46149 != 0B) goto <D.46196>; else goto <D.46197>;
        <D.46196>:
        D.45711 = cfg->cil_offset_to_bb;
        D.46149 = falsebb->cil_code;
        D.46152 = (long int) D.46149;
        D.45713 = cfg->cil_start;
        D.45714 = (long int) D.45713;
        D.46153 = D.46152 - D.45714;
        D.46154 = (long unsigned int) D.46153;
        D.46155 = D.46154 * 8;
        D.46156 = D.45711 + D.46155;
        *D.46156 = falsebb;
        <D.46197>:
        D.45719 = cfg->real_offset;
        falsebb->real_offset = D.45719;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.46201>; else goto <D.46198>;
        <D.46201>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46202 = D.45667->opcode;
        D.46203 = D.46202 + 64981;
        D.46204 = D.46203 <= 9;
        D.46205 = D.46202 + 64874;
        D.46206 = D.46205 <= 9;
        D.46207 = D.46204 | D.46206;
        if (D.46207 != 0) goto <D.46199>; else goto <D.46208>;
        <D.46208>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 <= 9) goto <D.46199>; else goto <D.46198>;
        <D.46199>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        D.45735 = *D.45734;
        if (D.45735 == 0B) goto <D.46209>; else goto <D.46198>;
        <D.46209>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45733 = D.45667->data.op[1].many_blocks;
        D.45734 = D.45733 + 8;
        *D.45734 = falsebb;
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        goto <D.46200>;
        <D.46198>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 == 0B) goto <D.46210>; else goto <D.46212>;
        <D.46212>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46213 = D.45667->opcode;
        D.46214 = D.46213 != 446;
        D.46215 = D.46213 != 763;
        D.46216 = D.46214 & D.46215;
        if (D.46216 != 0) goto <D.46217>; else goto <D.46211>;
        <D.46217>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.46218 = D.45667->opcode;
        D.46219 = D.46218 + 64981;
        D.46220 = D.46219 > 9;
        D.46221 = D.46218 + 64874;
        D.46222 = D.46221 > 9;
        D.46223 = D.46220 & D.46222;
        if (D.46223 != 0) goto <D.46224>; else goto <D.46211>;
        <D.46224>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45731 = D.45667->opcode;
        D.45732 = D.45731 + 64884;
        if (D.45732 > 9) goto <D.46210>; else goto <D.46211>;
        <D.46210>:
        D.45666 = cfg->cbb;
        mono_link_bblock (cfg, D.45666, falsebb);
        <D.46211>:
        <D.46200>:
        D.45666 = cfg->cbb;
        D.45666->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.46225>;
        <D.46192>:
        D.45666 = cfg->cbb;
        D.45666->extended = 1;
        <D.46225>:
        <D.46184>:
      }
      goto <D.46226>;
      <D.46136>:
      D.45939 = klass->cast_class;
      D.46227 = D.45939->flags;
      D.46228 = D.46227 & 32;
      if (D.46228 != 0) goto <D.46229>; else goto <D.46230>;
      <D.46229>:
      D.45939 = klass->cast_class;
      mini_emit_iface_class_cast (cfg, eclass_reg, D.45939, false_bb, is_null_bb);
      goto <D.46231>;
      <D.46230>:
      D.45814 = klass->rank;
      if (D.45814 == 1) goto <D.46232>; else goto <D.46233>;
      <D.46232>:
      D.46234 = klass->byval_arg.type;
      if (D.46234 == 29) goto <D.46235>; else goto <D.46236>;
      <D.46235>:
      {
        int bounds_reg;

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

          D.45655 = cfg->mempool;
          inst = mono_mempool_alloc (D.45655, 80);
          inst->data.op[1].const_val = 0;
          D.46238 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.46238;
          inst->prev = 0B;
          D.46239 = inst->prev;
          inst->next = D.46239;
          inst->opcode = 391;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.46240 = inst->sreg3;
          inst->sreg2 = D.46240;
          D.46241 = inst->sreg2;
          inst->sreg1 = D.46241;
          D.45662 = cfg->ip;
          inst->cil_code = D.45662;
          inst->dreg = bounds_reg;
          inst->sreg1 = obj_reg;
          inst->data.op[0].const_val = 16;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.46242>; else goto <D.46243>;
          <D.46242>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45667->next = inst;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          inst->prev = D.45667;
          D.45666 = cfg->cbb;
          D.45666->last_ins = inst;
          goto <D.46244>;
          <D.46243>:
          D.45666 = cfg->cbb;
          D.45666 = cfg->cbb;
          D.45666->last_ins = inst;
          D.45667 = D.45666->last_ins;
          D.45666->code = D.45667;
          <D.46244>:
        }
        {
          struct MonoInst * inst;

          D.45655 = cfg->mempool;
          inst = mono_mempool_alloc (D.45655, 80);
          inst->data.op[1].const_val = 0;
          D.46245 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.46245;
          inst->prev = 0B;
          D.46246 = inst->prev;
          inst->next = D.46246;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.46247 = inst->sreg3;
          inst->sreg2 = D.46247;
          D.46248 = inst->sreg2;
          inst->sreg1 = D.46248;
          D.45662 = cfg->ip;
          inst->cil_code = D.45662;
          inst->dreg = -1;
          inst->sreg1 = bounds_reg;
          inst->data.op[1].const_val = 0;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.46249>; else goto <D.46250>;
          <D.46249>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45667->next = inst;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          inst->prev = D.45667;
          D.45666 = cfg->cbb;
          D.45666->last_ins = inst;
          goto <D.46251>;
          <D.46250>:
          D.45666 = cfg->cbb;
          D.45666 = cfg->cbb;
          D.45666->last_ins = inst;
          D.45667 = D.45666->last_ins;
          D.45666->code = D.45667;
          <D.46251>:
        }
        {
          struct MonoInst * ins;
          struct MonoBasicBlock * falsebb;

          D.45655 = cfg->mempool;
          ins = mono_mempool_alloc (D.45655, 80);
          ins->data.op[1].const_val = 0;
          D.46252 = ins->data.op[1].const_val;
          ins->data.op[0].const_val = D.46252;
          ins->prev = 0B;
          D.46253 = ins->prev;
          ins->next = D.46253;
          ins->opcode = 560;
          ins->flags = 0;
          ins->type = 0;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.46254 = ins->sreg3;
          ins->sreg2 = D.46254;
          D.46255 = ins->sreg2;
          ins->sreg1 = D.46255;
          D.45662 = cfg->ip;
          ins->cil_code = D.45662;
          if (0 != 0) goto <D.46256>; else goto <D.46257>;
          <D.46256>:
          D.45655 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.45655, 296);
          D.45672 = cfg->num_bblocks;
          D.46258 = D.45672;
          D.46259 = D.46258 + 1;
          cfg->num_bblocks = D.46259;
          D.46260 = (int) D.46258;
          falsebb->block_num = D.46260;
          ins->data.op[0].target_block = false_bb;
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, false_bb);
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.46261>; else goto <D.46262>;
          <D.46261>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45667->next = ins;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          ins->prev = D.45667;
          D.45666 = cfg->cbb;
          D.45666->last_ins = ins;
          goto <D.46263>;
          <D.46262>:
          D.45666 = cfg->cbb;
          D.45666 = cfg->cbb;
          D.45666->last_ins = ins;
          D.45667 = D.45666->last_ins;
          D.45666->code = D.45667;
          <D.46263>:
          D.46264 = falsebb->cil_code;
          if (D.46264 != 0B) goto <D.46265>; else goto <D.46266>;
          <D.46265>:
          D.45711 = cfg->cil_offset_to_bb;
          D.46264 = falsebb->cil_code;
          D.46267 = (long int) D.46264;
          D.45713 = cfg->cil_start;
          D.45714 = (long int) D.45713;
          D.46268 = D.46267 - D.45714;
          D.46269 = (long unsigned int) D.46268;
          D.46270 = D.46269 * 8;
          D.46271 = D.45711 + D.46270;
          *D.46271 = falsebb;
          <D.46266>:
          D.45719 = cfg->real_offset;
          falsebb->real_offset = D.45719;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.46275>; else goto <D.46272>;
          <D.46275>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.46276 = D.45667->opcode;
          D.46277 = D.46276 + 64981;
          D.46278 = D.46277 <= 9;
          D.46279 = D.46276 + 64874;
          D.46280 = D.46279 <= 9;
          D.46281 = D.46278 | D.46280;
          if (D.46281 != 0) goto <D.46273>; else goto <D.46282>;
          <D.46282>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45731 = D.45667->opcode;
          D.45732 = D.45731 + 64884;
          if (D.45732 <= 9) goto <D.46273>; else goto <D.46272>;
          <D.46273>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45733 = D.45667->data.op[1].many_blocks;
          D.45734 = D.45733 + 8;
          D.45735 = *D.45734;
          if (D.45735 == 0B) goto <D.46283>; else goto <D.46272>;
          <D.46283>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45733 = D.45667->data.op[1].many_blocks;
          D.45734 = D.45733 + 8;
          *D.45734 = falsebb;
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, falsebb);
          goto <D.46274>;
          <D.46272>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 == 0B) goto <D.46284>; else goto <D.46286>;
          <D.46286>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.46287 = D.45667->opcode;
          D.46288 = D.46287 != 446;
          D.46289 = D.46287 != 763;
          D.46290 = D.46288 & D.46289;
          if (D.46290 != 0) goto <D.46291>; else goto <D.46285>;
          <D.46291>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.46292 = D.45667->opcode;
          D.46293 = D.46292 + 64981;
          D.46294 = D.46293 > 9;
          D.46295 = D.46292 + 64874;
          D.46296 = D.46295 > 9;
          D.46297 = D.46294 & D.46296;
          if (D.46297 != 0) goto <D.46298>; else goto <D.46285>;
          <D.46298>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45731 = D.45667->opcode;
          D.45732 = D.45731 + 64884;
          if (D.45732 > 9) goto <D.46284>; else goto <D.46285>;
          <D.46284>:
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, falsebb);
          <D.46285>:
          <D.46274>:
          D.45666 = cfg->cbb;
          D.45666->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.46299>;
          <D.46257>:
          D.45655 = cfg->mempool;
          D.46300 = mono_mempool_alloc (D.45655, 16);
          ins->data.op[1].many_blocks = D.46300;
          D.46301 = ins->data.op[1].many_blocks;
          *D.46301 = false_bb;
          D.46301 = ins->data.op[1].many_blocks;
          D.46302 = D.46301 + 8;
          *D.46302 = 0B;
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, false_bb);
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.46303>; else goto <D.46304>;
          <D.46303>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45667->next = ins;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          ins->prev = D.45667;
          D.45666 = cfg->cbb;
          D.45666->last_ins = ins;
          goto <D.46305>;
          <D.46304>:
          D.45666 = cfg->cbb;
          D.45666 = cfg->cbb;
          D.45666->last_ins = ins;
          D.45667 = D.45666->last_ins;
          D.45666->code = D.45667;
          <D.46305>:
          D.45759 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.45760 = D.45759 & 8;
          if (D.45760 == 0) goto <D.46306>; else goto <D.46307>;
          <D.46306>:
          D.45655 = cfg->mempool;
          falsebb = mono_mempool_alloc0 (D.45655, 296);
          D.45672 = cfg->num_bblocks;
          D.46308 = D.45672;
          D.46309 = D.46308 + 1;
          cfg->num_bblocks = D.46309;
          D.46310 = (int) D.46308;
          falsebb->block_num = D.46310;
          D.46301 = ins->data.op[1].many_blocks;
          D.46302 = D.46301 + 8;
          *D.46302 = falsebb;
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, falsebb);
          D.46264 = falsebb->cil_code;
          if (D.46264 != 0B) goto <D.46311>; else goto <D.46312>;
          <D.46311>:
          D.45711 = cfg->cil_offset_to_bb;
          D.46264 = falsebb->cil_code;
          D.46267 = (long int) D.46264;
          D.45713 = cfg->cil_start;
          D.45714 = (long int) D.45713;
          D.46268 = D.46267 - D.45714;
          D.46269 = (long unsigned int) D.46268;
          D.46270 = D.46269 * 8;
          D.46271 = D.45711 + D.46270;
          *D.46271 = falsebb;
          <D.46312>:
          D.45719 = cfg->real_offset;
          falsebb->real_offset = D.45719;
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 != 0B) goto <D.46316>; else goto <D.46313>;
          <D.46316>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.46317 = D.45667->opcode;
          D.46318 = D.46317 + 64981;
          D.46319 = D.46318 <= 9;
          D.46320 = D.46317 + 64874;
          D.46321 = D.46320 <= 9;
          D.46322 = D.46319 | D.46321;
          if (D.46322 != 0) goto <D.46314>; else goto <D.46323>;
          <D.46323>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45731 = D.45667->opcode;
          D.45732 = D.45731 + 64884;
          if (D.45732 <= 9) goto <D.46314>; else goto <D.46313>;
          <D.46314>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45733 = D.45667->data.op[1].many_blocks;
          D.45734 = D.45733 + 8;
          D.45735 = *D.45734;
          if (D.45735 == 0B) goto <D.46324>; else goto <D.46313>;
          <D.46324>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45733 = D.45667->data.op[1].many_blocks;
          D.45734 = D.45733 + 8;
          *D.45734 = falsebb;
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, falsebb);
          goto <D.46315>;
          <D.46313>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          if (D.45667 == 0B) goto <D.46325>; else goto <D.46327>;
          <D.46327>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.46328 = D.45667->opcode;
          D.46329 = D.46328 != 446;
          D.46330 = D.46328 != 763;
          D.46331 = D.46329 & D.46330;
          if (D.46331 != 0) goto <D.46332>; else goto <D.46326>;
          <D.46332>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.46333 = D.45667->opcode;
          D.46334 = D.46333 + 64981;
          D.46335 = D.46334 > 9;
          D.46336 = D.46333 + 64874;
          D.46337 = D.46336 > 9;
          D.46338 = D.46335 & D.46337;
          if (D.46338 != 0) goto <D.46339>; else goto <D.46326>;
          <D.46339>:
          D.45666 = cfg->cbb;
          D.45667 = D.45666->last_ins;
          D.45731 = D.45667->opcode;
          D.45732 = D.45731 + 64884;
          if (D.45732 > 9) goto <D.46325>; else goto <D.46326>;
          <D.46325>:
          D.45666 = cfg->cbb;
          mono_link_bblock (cfg, D.45666, falsebb);
          <D.46326>:
          <D.46315>:
          D.45666 = cfg->cbb;
          D.45666->next_bb = falsebb;
          cfg->cbb = falsebb;
          goto <D.46340>;
          <D.46307>:
          D.45666 = cfg->cbb;
          D.45666->extended = 1;
          <D.46340>:
          <D.46299>:
        }
      }
      <D.46236>:
      <D.46233>:
      D.45939 = klass->cast_class;
      mini_emit_isninst_cast (cfg, eclass_reg, D.45939, false_bb, is_null_bb);
      <D.46231>:
      <D.46226>:
      <D.46134>:
      <D.46042>:
    }
    goto <D.46341>;
    <D.45816>:
    D.46342 = mono_class_is_nullable (klass);
    if (D.46342 != 0) goto <D.46343>; else goto <D.46344>;
    <D.46343>:
    D.45807 = context_used != 0;
    D.45808 = (long int) D.45807;
    D.45809 = __builtin_expect (D.45808, 0);
    if (D.45809 != 0) goto <D.46345>; else goto <D.46346>;
    <D.46345>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4130, "!context_used");
    <D.46346>:
    {
      struct MonoInst * inst;

      D.45655 = cfg->mempool;
      inst = mono_mempool_alloc (D.45655, 80);
      inst->data.op[1].const_val = 0;
      D.46347 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46347;
      inst->prev = 0B;
      D.46348 = inst->prev;
      inst->next = D.46348;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46349 = inst->sreg3;
      inst->sreg2 = D.46349;
      D.46350 = inst->sreg2;
      inst->sreg1 = D.46350;
      D.45662 = cfg->ip;
      inst->cil_code = D.45662;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46351>; else goto <D.46352>;
      <D.46351>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45667->next = inst;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      inst->prev = D.45667;
      D.45666 = cfg->cbb;
      D.45666->last_ins = inst;
      goto <D.46353>;
      <D.46352>:
      D.45666 = cfg->cbb;
      D.45666 = cfg->cbb;
      D.45666->last_ins = inst;
      D.45667 = D.45666->last_ins;
      D.45666->code = D.45667;
      <D.46353>:
    }
    D.45939 = klass->cast_class;
    mini_emit_isninst_cast (cfg, klass_reg, D.45939, false_bb, is_null_bb);
    goto <D.46354>;
    <D.46344>:
    D.45759 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.46357 = D.45759 & 64;
    if (D.46357 == 0) goto <D.46358>; else goto <D.46355>;
    <D.46358>:
    D.46359 = cfg->opt;
    D.46360 = D.46359 & 512;
    if (D.46360 == 0) goto <D.46361>; else goto <D.46355>;
    <D.46361>:
    D.45803 = klass->flags;
    D.46362 = D.45803 & 256;
    if (D.46362 != 0) goto <D.46363>; else goto <D.46355>;
    <D.46363>:
    D.45807 = context_used != 0;
    D.45808 = (long int) D.45807;
    D.45809 = __builtin_expect (D.45808, 0);
    if (D.45809 != 0) goto <D.46364>; else goto <D.46365>;
    <D.46364>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4136, "!context_used");
    <D.46365>:
    if (0 != 0) goto <D.46366>; else goto <D.46367>;
    <D.46366>:
    {
      struct MonoVTable * vt;

      D.46368 = cfg->domain;
      vt = mono_class_vtable (D.46368, klass);
      if (vt == 0B) goto <D.46369>; else goto <D.46370>;
      <D.46369>:
      mono_cfg_set_exception (cfg, 7);
      cfg->exception_ptr = klass;
      D.45671 = 0B;
      return D.45671;
      <D.46370>:
      {
        struct MonoInst * inst;

        D.45655 = cfg->mempool;
        inst = mono_mempool_alloc (D.45655, 80);
        inst->data.op[1].const_val = 0;
        D.46371 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.46371;
        inst->prev = 0B;
        D.46372 = inst->prev;
        inst->next = D.46372;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.46373 = inst->sreg3;
        inst->sreg2 = D.46373;
        D.46374 = inst->sreg2;
        inst->sreg1 = D.46374;
        D.45662 = cfg->ip;
        inst->cil_code = D.45662;
        inst->dreg = -1;
        inst->sreg1 = vtable_reg;
        vt.426 = (long int) vt;
        inst->data.op[1].const_val = vt.426;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        if (D.45667 != 0B) goto <D.46376>; else goto <D.46377>;
        <D.46376>:
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        D.45667->next = inst;
        D.45666 = cfg->cbb;
        D.45667 = D.45666->last_ins;
        inst->prev = D.45667;
        D.45666 = cfg->cbb;
        D.45666->last_ins = inst;
        goto <D.46378>;
        <D.46377>:
        D.45666 = cfg->cbb;
        D.45666 = cfg->cbb;
        D.45666->last_ins = inst;
        D.45667 = D.45666->last_ins;
        D.45666->code = D.45667;
        <D.46378>:
      }
    }
    goto <D.46379>;
    <D.46367>:
    {
      struct MonoInst * inst;

      D.45655 = cfg->mempool;
      inst = mono_mempool_alloc (D.45655, 80);
      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 = 391;
      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.45662 = cfg->ip;
      inst->cil_code = D.45662;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46384>; else goto <D.46385>;
      <D.46384>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45667->next = inst;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      inst->prev = D.45667;
      D.45666 = cfg->cbb;
      D.45666->last_ins = inst;
      goto <D.46386>;
      <D.46385>:
      D.45666 = cfg->cbb;
      D.45666 = cfg->cbb;
      D.45666->last_ins = inst;
      D.45667 = D.45666->last_ins;
      D.45666->code = D.45667;
      <D.46386>:
    }
    {
      struct MonoInst * inst;

      D.45655 = cfg->mempool;
      inst = mono_mempool_alloc (D.45655, 80);
      inst->data.op[1].const_val = 0;
      D.46387 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46387;
      inst->prev = 0B;
      D.46388 = inst->prev;
      inst->next = D.46388;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46389 = inst->sreg3;
      inst->sreg2 = D.46389;
      D.46390 = inst->sreg2;
      inst->sreg1 = D.46390;
      D.45662 = cfg->ip;
      inst->cil_code = D.45662;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      klass.427 = (long int) klass;
      inst->data.op[1].const_val = klass.427;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46392>; else goto <D.46393>;
      <D.46392>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45667->next = inst;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      inst->prev = D.45667;
      D.45666 = cfg->cbb;
      D.45666->last_ins = inst;
      goto <D.46394>;
      <D.46393>:
      D.45666 = cfg->cbb;
      D.45666 = cfg->cbb;
      D.45666->last_ins = inst;
      D.45667 = D.45666->last_ins;
      D.45666->code = D.45667;
      <D.46394>:
    }
    <D.46379>:
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.45655 = cfg->mempool;
      ins = mono_mempool_alloc (D.45655, 80);
      ins->data.op[1].const_val = 0;
      D.46395 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.46395;
      ins->prev = 0B;
      D.46396 = ins->prev;
      ins->next = D.46396;
      ins->opcode = 560;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.46397 = ins->sreg3;
      ins->sreg2 = D.46397;
      D.46398 = ins->sreg2;
      ins->sreg1 = D.46398;
      D.45662 = cfg->ip;
      ins->cil_code = D.45662;
      if (0 != 0) goto <D.46399>; else goto <D.46400>;
      <D.46399>:
      D.45655 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45655, 296);
      D.45672 = cfg->num_bblocks;
      D.46401 = D.45672;
      D.46402 = D.46401 + 1;
      cfg->num_bblocks = D.46402;
      D.46403 = (int) D.46401;
      falsebb->block_num = D.46403;
      ins->data.op[0].target_block = false_bb;
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, false_bb);
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46404>; else goto <D.46405>;
      <D.46404>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45667->next = ins;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      ins->prev = D.45667;
      D.45666 = cfg->cbb;
      D.45666->last_ins = ins;
      goto <D.46406>;
      <D.46405>:
      D.45666 = cfg->cbb;
      D.45666 = cfg->cbb;
      D.45666->last_ins = ins;
      D.45667 = D.45666->last_ins;
      D.45666->code = D.45667;
      <D.46406>:
      D.46407 = falsebb->cil_code;
      if (D.46407 != 0B) goto <D.46408>; else goto <D.46409>;
      <D.46408>:
      D.45711 = cfg->cil_offset_to_bb;
      D.46407 = falsebb->cil_code;
      D.46410 = (long int) D.46407;
      D.45713 = cfg->cil_start;
      D.45714 = (long int) D.45713;
      D.46411 = D.46410 - D.45714;
      D.46412 = (long unsigned int) D.46411;
      D.46413 = D.46412 * 8;
      D.46414 = D.45711 + D.46413;
      *D.46414 = falsebb;
      <D.46409>:
      D.45719 = cfg->real_offset;
      falsebb->real_offset = D.45719;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46418>; else goto <D.46415>;
      <D.46418>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46419 = D.45667->opcode;
      D.46420 = D.46419 + 64981;
      D.46421 = D.46420 <= 9;
      D.46422 = D.46419 + 64874;
      D.46423 = D.46422 <= 9;
      D.46424 = D.46421 | D.46423;
      if (D.46424 != 0) goto <D.46416>; else goto <D.46425>;
      <D.46425>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45731 = D.45667->opcode;
      D.45732 = D.45731 + 64884;
      if (D.45732 <= 9) goto <D.46416>; else goto <D.46415>;
      <D.46416>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45733 = D.45667->data.op[1].many_blocks;
      D.45734 = D.45733 + 8;
      D.45735 = *D.45734;
      if (D.45735 == 0B) goto <D.46426>; else goto <D.46415>;
      <D.46426>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45733 = D.45667->data.op[1].many_blocks;
      D.45734 = D.45733 + 8;
      *D.45734 = falsebb;
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, falsebb);
      goto <D.46417>;
      <D.46415>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 == 0B) goto <D.46427>; else goto <D.46429>;
      <D.46429>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46430 = D.45667->opcode;
      D.46431 = D.46430 != 446;
      D.46432 = D.46430 != 763;
      D.46433 = D.46431 & D.46432;
      if (D.46433 != 0) goto <D.46434>; else goto <D.46428>;
      <D.46434>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46435 = D.45667->opcode;
      D.46436 = D.46435 + 64981;
      D.46437 = D.46436 > 9;
      D.46438 = D.46435 + 64874;
      D.46439 = D.46438 > 9;
      D.46440 = D.46437 & D.46439;
      if (D.46440 != 0) goto <D.46441>; else goto <D.46428>;
      <D.46441>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45731 = D.45667->opcode;
      D.45732 = D.45731 + 64884;
      if (D.45732 > 9) goto <D.46427>; else goto <D.46428>;
      <D.46427>:
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, falsebb);
      <D.46428>:
      <D.46417>:
      D.45666 = cfg->cbb;
      D.45666->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.46442>;
      <D.46400>:
      D.45655 = cfg->mempool;
      D.46443 = mono_mempool_alloc (D.45655, 16);
      ins->data.op[1].many_blocks = D.46443;
      D.46444 = ins->data.op[1].many_blocks;
      *D.46444 = false_bb;
      D.46444 = ins->data.op[1].many_blocks;
      D.46445 = D.46444 + 8;
      *D.46445 = 0B;
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, false_bb);
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46446>; else goto <D.46447>;
      <D.46446>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45667->next = ins;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      ins->prev = D.45667;
      D.45666 = cfg->cbb;
      D.45666->last_ins = ins;
      goto <D.46448>;
      <D.46447>:
      D.45666 = cfg->cbb;
      D.45666 = cfg->cbb;
      D.45666->last_ins = ins;
      D.45667 = D.45666->last_ins;
      D.45666->code = D.45667;
      <D.46448>:
      D.45759 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.45760 = D.45759 & 8;
      if (D.45760 == 0) goto <D.46449>; else goto <D.46450>;
      <D.46449>:
      D.45655 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45655, 296);
      D.45672 = cfg->num_bblocks;
      D.46451 = D.45672;
      D.46452 = D.46451 + 1;
      cfg->num_bblocks = D.46452;
      D.46453 = (int) D.46451;
      falsebb->block_num = D.46453;
      D.46444 = ins->data.op[1].many_blocks;
      D.46445 = D.46444 + 8;
      *D.46445 = falsebb;
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, falsebb);
      D.46407 = falsebb->cil_code;
      if (D.46407 != 0B) goto <D.46454>; else goto <D.46455>;
      <D.46454>:
      D.45711 = cfg->cil_offset_to_bb;
      D.46407 = falsebb->cil_code;
      D.46410 = (long int) D.46407;
      D.45713 = cfg->cil_start;
      D.45714 = (long int) D.45713;
      D.46411 = D.46410 - D.45714;
      D.46412 = (long unsigned int) D.46411;
      D.46413 = D.46412 * 8;
      D.46414 = D.45711 + D.46413;
      *D.46414 = falsebb;
      <D.46455>:
      D.45719 = cfg->real_offset;
      falsebb->real_offset = D.45719;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46459>; else goto <D.46456>;
      <D.46459>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46460 = D.45667->opcode;
      D.46461 = D.46460 + 64981;
      D.46462 = D.46461 <= 9;
      D.46463 = D.46460 + 64874;
      D.46464 = D.46463 <= 9;
      D.46465 = D.46462 | D.46464;
      if (D.46465 != 0) goto <D.46457>; else goto <D.46466>;
      <D.46466>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45731 = D.45667->opcode;
      D.45732 = D.45731 + 64884;
      if (D.45732 <= 9) goto <D.46457>; else goto <D.46456>;
      <D.46457>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45733 = D.45667->data.op[1].many_blocks;
      D.45734 = D.45733 + 8;
      D.45735 = *D.45734;
      if (D.45735 == 0B) goto <D.46467>; else goto <D.46456>;
      <D.46467>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45733 = D.45667->data.op[1].many_blocks;
      D.45734 = D.45733 + 8;
      *D.45734 = falsebb;
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, falsebb);
      goto <D.46458>;
      <D.46456>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 == 0B) goto <D.46468>; else goto <D.46470>;
      <D.46470>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46471 = D.45667->opcode;
      D.46472 = D.46471 != 446;
      D.46473 = D.46471 != 763;
      D.46474 = D.46472 & D.46473;
      if (D.46474 != 0) goto <D.46475>; else goto <D.46469>;
      <D.46475>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46476 = D.45667->opcode;
      D.46477 = D.46476 + 64981;
      D.46478 = D.46477 > 9;
      D.46479 = D.46476 + 64874;
      D.46480 = D.46479 > 9;
      D.46481 = D.46478 & D.46480;
      if (D.46481 != 0) goto <D.46482>; else goto <D.46469>;
      <D.46482>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45731 = D.45667->opcode;
      D.45732 = D.45731 + 64884;
      if (D.45732 > 9) goto <D.46468>; else goto <D.46469>;
      <D.46468>:
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, falsebb);
      <D.46469>:
      <D.46458>:
      D.45666 = cfg->cbb;
      D.45666->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.46483>;
      <D.46450>:
      D.45666 = cfg->cbb;
      D.45666->extended = 1;
      <D.46483>:
      <D.46442>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.45655 = cfg->mempool;
      ins = mono_mempool_alloc (D.45655, 80);
      ins->data.op[1].const_val = 0;
      D.46484 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.46484;
      ins->prev = 0B;
      D.46485 = ins->prev;
      ins->next = D.46485;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.46486 = ins->sreg3;
      ins->sreg2 = D.46486;
      D.46487 = ins->sreg2;
      ins->sreg1 = D.46487;
      D.45662 = cfg->ip;
      ins->cil_code = D.45662;
      if (1 != 0) goto <D.46488>; else goto <D.46489>;
      <D.46488>:
      D.45655 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45655, 296);
      D.45672 = cfg->num_bblocks;
      D.46490 = D.45672;
      D.46491 = D.46490 + 1;
      cfg->num_bblocks = D.46491;
      D.46492 = (int) D.46490;
      falsebb->block_num = D.46492;
      ins->data.op[0].target_block = is_null_bb;
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, is_null_bb);
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46493>; else goto <D.46494>;
      <D.46493>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45667->next = ins;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      ins->prev = D.45667;
      D.45666 = cfg->cbb;
      D.45666->last_ins = ins;
      goto <D.46495>;
      <D.46494>:
      D.45666 = cfg->cbb;
      D.45666 = cfg->cbb;
      D.45666->last_ins = ins;
      D.45667 = D.45666->last_ins;
      D.45666->code = D.45667;
      <D.46495>:
      D.46496 = falsebb->cil_code;
      if (D.46496 != 0B) goto <D.46497>; else goto <D.46498>;
      <D.46497>:
      D.45711 = cfg->cil_offset_to_bb;
      D.46496 = falsebb->cil_code;
      D.46499 = (long int) D.46496;
      D.45713 = cfg->cil_start;
      D.45714 = (long int) D.45713;
      D.46500 = D.46499 - D.45714;
      D.46501 = (long unsigned int) D.46500;
      D.46502 = D.46501 * 8;
      D.46503 = D.45711 + D.46502;
      *D.46503 = falsebb;
      <D.46498>:
      D.45719 = cfg->real_offset;
      falsebb->real_offset = D.45719;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46507>; else goto <D.46504>;
      <D.46507>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46508 = D.45667->opcode;
      D.46509 = D.46508 + 64981;
      D.46510 = D.46509 <= 9;
      D.46511 = D.46508 + 64874;
      D.46512 = D.46511 <= 9;
      D.46513 = D.46510 | D.46512;
      if (D.46513 != 0) goto <D.46505>; else goto <D.46514>;
      <D.46514>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45731 = D.45667->opcode;
      D.45732 = D.45731 + 64884;
      if (D.45732 <= 9) goto <D.46505>; else goto <D.46504>;
      <D.46505>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45733 = D.45667->data.op[1].many_blocks;
      D.45734 = D.45733 + 8;
      D.45735 = *D.45734;
      if (D.45735 == 0B) goto <D.46515>; else goto <D.46504>;
      <D.46515>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45733 = D.45667->data.op[1].many_blocks;
      D.45734 = D.45733 + 8;
      *D.45734 = falsebb;
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, falsebb);
      goto <D.46506>;
      <D.46504>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 == 0B) goto <D.46516>; else goto <D.46518>;
      <D.46518>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46519 = D.45667->opcode;
      D.46520 = D.46519 != 446;
      D.46521 = D.46519 != 763;
      D.46522 = D.46520 & D.46521;
      if (D.46522 != 0) goto <D.46523>; else goto <D.46517>;
      <D.46523>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46524 = D.45667->opcode;
      D.46525 = D.46524 + 64981;
      D.46526 = D.46525 > 9;
      D.46527 = D.46524 + 64874;
      D.46528 = D.46527 > 9;
      D.46529 = D.46526 & D.46528;
      if (D.46529 != 0) goto <D.46530>; else goto <D.46517>;
      <D.46530>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45731 = D.45667->opcode;
      D.45732 = D.45731 + 64884;
      if (D.45732 > 9) goto <D.46516>; else goto <D.46517>;
      <D.46516>:
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, falsebb);
      <D.46517>:
      <D.46506>:
      D.45666 = cfg->cbb;
      D.45666->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.46531>;
      <D.46489>:
      D.45655 = cfg->mempool;
      D.46532 = mono_mempool_alloc (D.45655, 16);
      ins->data.op[1].many_blocks = D.46532;
      D.46533 = ins->data.op[1].many_blocks;
      *D.46533 = is_null_bb;
      D.46533 = ins->data.op[1].many_blocks;
      D.46534 = D.46533 + 8;
      *D.46534 = 0B;
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, is_null_bb);
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46535>; else goto <D.46536>;
      <D.46535>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45667->next = ins;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      ins->prev = D.45667;
      D.45666 = cfg->cbb;
      D.45666->last_ins = ins;
      goto <D.46537>;
      <D.46536>:
      D.45666 = cfg->cbb;
      D.45666 = cfg->cbb;
      D.45666->last_ins = ins;
      D.45667 = D.45666->last_ins;
      D.45666->code = D.45667;
      <D.46537>:
      D.45759 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.45760 = D.45759 & 8;
      if (D.45760 == 0) goto <D.46538>; else goto <D.46539>;
      <D.46538>:
      D.45655 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.45655, 296);
      D.45672 = cfg->num_bblocks;
      D.46540 = D.45672;
      D.46541 = D.46540 + 1;
      cfg->num_bblocks = D.46541;
      D.46542 = (int) D.46540;
      falsebb->block_num = D.46542;
      D.46533 = ins->data.op[1].many_blocks;
      D.46534 = D.46533 + 8;
      *D.46534 = falsebb;
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, falsebb);
      D.46496 = falsebb->cil_code;
      if (D.46496 != 0B) goto <D.46543>; else goto <D.46544>;
      <D.46543>:
      D.45711 = cfg->cil_offset_to_bb;
      D.46496 = falsebb->cil_code;
      D.46499 = (long int) D.46496;
      D.45713 = cfg->cil_start;
      D.45714 = (long int) D.45713;
      D.46500 = D.46499 - D.45714;
      D.46501 = (long unsigned int) D.46500;
      D.46502 = D.46501 * 8;
      D.46503 = D.45711 + D.46502;
      *D.46503 = falsebb;
      <D.46544>:
      D.45719 = cfg->real_offset;
      falsebb->real_offset = D.45719;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46548>; else goto <D.46545>;
      <D.46548>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46549 = D.45667->opcode;
      D.46550 = D.46549 + 64981;
      D.46551 = D.46550 <= 9;
      D.46552 = D.46549 + 64874;
      D.46553 = D.46552 <= 9;
      D.46554 = D.46551 | D.46553;
      if (D.46554 != 0) goto <D.46546>; else goto <D.46555>;
      <D.46555>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45731 = D.45667->opcode;
      D.45732 = D.45731 + 64884;
      if (D.45732 <= 9) goto <D.46546>; else goto <D.46545>;
      <D.46546>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45733 = D.45667->data.op[1].many_blocks;
      D.45734 = D.45733 + 8;
      D.45735 = *D.45734;
      if (D.45735 == 0B) goto <D.46556>; else goto <D.46545>;
      <D.46556>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45733 = D.45667->data.op[1].many_blocks;
      D.45734 = D.45733 + 8;
      *D.45734 = falsebb;
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, falsebb);
      goto <D.46547>;
      <D.46545>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 == 0B) goto <D.46557>; else goto <D.46559>;
      <D.46559>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46560 = D.45667->opcode;
      D.46561 = D.46560 != 446;
      D.46562 = D.46560 != 763;
      D.46563 = D.46561 & D.46562;
      if (D.46563 != 0) goto <D.46564>; else goto <D.46558>;
      <D.46564>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.46565 = D.45667->opcode;
      D.46566 = D.46565 + 64981;
      D.46567 = D.46566 > 9;
      D.46568 = D.46565 + 64874;
      D.46569 = D.46568 > 9;
      D.46570 = D.46567 & D.46569;
      if (D.46570 != 0) goto <D.46571>; else goto <D.46558>;
      <D.46571>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45731 = D.45667->opcode;
      D.45732 = D.45731 + 64884;
      if (D.45732 > 9) goto <D.46557>; else goto <D.46558>;
      <D.46557>:
      D.45666 = cfg->cbb;
      mono_link_bblock (cfg, D.45666, falsebb);
      <D.46558>:
      <D.46547>:
      D.45666 = cfg->cbb;
      D.45666->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.46572>;
      <D.46539>:
      D.45666 = cfg->cbb;
      D.45666->extended = 1;
      <D.46572>:
      <D.46531>:
    }
    goto <D.46356>;
    <D.46355>:
    {
      struct MonoInst * inst;

      D.45655 = cfg->mempool;
      inst = mono_mempool_alloc (D.45655, 80);
      inst->data.op[1].const_val = 0;
      D.46573 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46573;
      inst->prev = 0B;
      D.46574 = inst->prev;
      inst->next = D.46574;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46575 = inst->sreg3;
      inst->sreg2 = D.46575;
      D.46576 = inst->sreg2;
      inst->sreg1 = D.46576;
      D.45662 = cfg->ip;
      inst->cil_code = D.45662;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      if (D.45667 != 0B) goto <D.46577>; else goto <D.46578>;
      <D.46577>:
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      D.45667->next = inst;
      D.45666 = cfg->cbb;
      D.45667 = D.45666->last_ins;
      inst->prev = D.45667;
      D.45666 = cfg->cbb;
      D.45666->last_ins = inst;
      goto <D.46579>;
      <D.46578>:
      D.45666 = cfg->cbb;
      D.45666 = cfg->cbb;
      D.45666->last_ins = inst;
      D.45667 = D.45666->last_ins;
      D.45666->code = D.45667;
      <D.46579>:
    }
    mini_emit_isninst_cast_inst (cfg, klass_reg, klass, klass_inst, false_bb, is_null_bb);
    <D.46356>:
    <D.46354>:
    <D.46341>:
  }
  <D.45812>:
  D.46580 = false_bb->cil_code;
  if (D.46580 != 0B) goto <D.46581>; else goto <D.46582>;
  <D.46581>:
  D.45711 = cfg->cil_offset_to_bb;
  D.46580 = false_bb->cil_code;
  D.46583 = (long int) D.46580;
  D.45713 = cfg->cil_start;
  D.45714 = (long int) D.45713;
  D.46584 = D.46583 - D.45714;
  D.46585 = (long unsigned int) D.46584;
  D.46586 = D.46585 * 8;
  D.46587 = D.45711 + D.46586;
  *D.46587 = false_bb;
  <D.46582>:
  D.45719 = cfg->real_offset;
  false_bb->real_offset = D.45719;
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  if (D.45667 != 0B) goto <D.46591>; else goto <D.46588>;
  <D.46591>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.46592 = D.45667->opcode;
  D.46593 = D.46592 + 64981;
  D.46594 = D.46593 <= 9;
  D.46595 = D.46592 + 64874;
  D.46596 = D.46595 <= 9;
  D.46597 = D.46594 | D.46596;
  if (D.46597 != 0) goto <D.46589>; else goto <D.46598>;
  <D.46598>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45731 = D.45667->opcode;
  D.45732 = D.45731 + 64884;
  if (D.45732 <= 9) goto <D.46589>; else goto <D.46588>;
  <D.46589>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45733 = D.45667->data.op[1].many_blocks;
  D.45734 = D.45733 + 8;
  D.45735 = *D.45734;
  if (D.45735 == 0B) goto <D.46599>; else goto <D.46588>;
  <D.46599>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45733 = D.45667->data.op[1].many_blocks;
  D.45734 = D.45733 + 8;
  *D.45734 = false_bb;
  D.45666 = cfg->cbb;
  mono_link_bblock (cfg, D.45666, false_bb);
  goto <D.46590>;
  <D.46588>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  if (D.45667 == 0B) goto <D.46600>; else goto <D.46602>;
  <D.46602>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.46603 = D.45667->opcode;
  D.46604 = D.46603 != 446;
  D.46605 = D.46603 != 763;
  D.46606 = D.46604 & D.46605;
  if (D.46606 != 0) goto <D.46607>; else goto <D.46601>;
  <D.46607>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.46608 = D.45667->opcode;
  D.46609 = D.46608 + 64981;
  D.46610 = D.46609 > 9;
  D.46611 = D.46608 + 64874;
  D.46612 = D.46611 > 9;
  D.46613 = D.46610 & D.46612;
  if (D.46613 != 0) goto <D.46614>; else goto <D.46601>;
  <D.46614>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45731 = D.45667->opcode;
  D.45732 = D.45731 + 64884;
  if (D.45732 > 9) goto <D.46600>; else goto <D.46601>;
  <D.46600>:
  D.45666 = cfg->cbb;
  mono_link_bblock (cfg, D.45666, false_bb);
  <D.46601>:
  <D.46590>:
  D.45666 = cfg->cbb;
  D.45666->next_bb = false_bb;
  cfg->cbb = false_bb;
  {
    struct MonoInst * inst;

    D.45655 = cfg->mempool;
    inst = mono_mempool_alloc (D.45655, 80);
    inst->data.op[1].const_val = 0;
    D.46615 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46615;
    inst->prev = 0B;
    D.46616 = inst->prev;
    inst->next = D.46616;
    inst->opcode = 363;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46617 = inst->sreg3;
    inst->sreg2 = D.46617;
    D.46618 = inst->sreg2;
    inst->sreg1 = D.46618;
    D.45662 = cfg->ip;
    inst->cil_code = D.45662;
    inst->dreg = res_reg;
    inst->data.op[0].p = 0B;
    inst->type = 3;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 != 0B) goto <D.46619>; else goto <D.46620>;
    <D.46619>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45667->next = inst;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    inst->prev = D.45667;
    D.45666 = cfg->cbb;
    D.45666->last_ins = inst;
    goto <D.46621>;
    <D.46620>:
    D.45666 = cfg->cbb;
    D.45666 = cfg->cbb;
    D.45666->last_ins = inst;
    D.45667 = D.45666->last_ins;
    D.45666->code = D.45667;
    <D.46621>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.45655 = cfg->mempool;
    ins = mono_mempool_alloc (D.45655, 80);
    ins->data.op[1].const_val = 0;
    D.46622 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.46622;
    ins->prev = 0B;
    D.46623 = ins->prev;
    ins->next = D.46623;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.46624 = ins->sreg3;
    ins->sreg2 = D.46624;
    D.46625 = ins->sreg2;
    ins->sreg1 = D.46625;
    D.45662 = cfg->ip;
    ins->cil_code = D.45662;
    if (1 != 0) goto <D.46626>; else goto <D.46627>;
    <D.46626>:
    D.45655 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45655, 296);
    D.45672 = cfg->num_bblocks;
    D.46628 = D.45672;
    D.46629 = D.46628 + 1;
    cfg->num_bblocks = D.46629;
    D.46630 = (int) D.46628;
    falsebb->block_num = D.46630;
    ins->data.op[0].target_block = end_bb;
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, end_bb);
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 != 0B) goto <D.46631>; else goto <D.46632>;
    <D.46631>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45667->next = ins;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    ins->prev = D.45667;
    D.45666 = cfg->cbb;
    D.45666->last_ins = ins;
    goto <D.46633>;
    <D.46632>:
    D.45666 = cfg->cbb;
    D.45666 = cfg->cbb;
    D.45666->last_ins = ins;
    D.45667 = D.45666->last_ins;
    D.45666->code = D.45667;
    <D.46633>:
    D.46634 = falsebb->cil_code;
    if (D.46634 != 0B) goto <D.46635>; else goto <D.46636>;
    <D.46635>:
    D.45711 = cfg->cil_offset_to_bb;
    D.46634 = falsebb->cil_code;
    D.46637 = (long int) D.46634;
    D.45713 = cfg->cil_start;
    D.45714 = (long int) D.45713;
    D.46638 = D.46637 - D.45714;
    D.46639 = (long unsigned int) D.46638;
    D.46640 = D.46639 * 8;
    D.46641 = D.45711 + D.46640;
    *D.46641 = falsebb;
    <D.46636>:
    D.45719 = cfg->real_offset;
    falsebb->real_offset = D.45719;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 != 0B) goto <D.46645>; else goto <D.46642>;
    <D.46645>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.46646 = D.45667->opcode;
    D.46647 = D.46646 + 64981;
    D.46648 = D.46647 <= 9;
    D.46649 = D.46646 + 64874;
    D.46650 = D.46649 <= 9;
    D.46651 = D.46648 | D.46650;
    if (D.46651 != 0) goto <D.46643>; else goto <D.46652>;
    <D.46652>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45731 = D.45667->opcode;
    D.45732 = D.45731 + 64884;
    if (D.45732 <= 9) goto <D.46643>; else goto <D.46642>;
    <D.46643>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45733 = D.45667->data.op[1].many_blocks;
    D.45734 = D.45733 + 8;
    D.45735 = *D.45734;
    if (D.45735 == 0B) goto <D.46653>; else goto <D.46642>;
    <D.46653>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45733 = D.45667->data.op[1].many_blocks;
    D.45734 = D.45733 + 8;
    *D.45734 = falsebb;
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, falsebb);
    goto <D.46644>;
    <D.46642>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 == 0B) goto <D.46654>; else goto <D.46656>;
    <D.46656>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.46657 = D.45667->opcode;
    D.46658 = D.46657 != 446;
    D.46659 = D.46657 != 763;
    D.46660 = D.46658 & D.46659;
    if (D.46660 != 0) goto <D.46661>; else goto <D.46655>;
    <D.46661>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.46662 = D.45667->opcode;
    D.46663 = D.46662 + 64981;
    D.46664 = D.46663 > 9;
    D.46665 = D.46662 + 64874;
    D.46666 = D.46665 > 9;
    D.46667 = D.46664 & D.46666;
    if (D.46667 != 0) goto <D.46668>; else goto <D.46655>;
    <D.46668>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45731 = D.45667->opcode;
    D.45732 = D.45731 + 64884;
    if (D.45732 > 9) goto <D.46654>; else goto <D.46655>;
    <D.46654>:
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, falsebb);
    <D.46655>:
    <D.46644>:
    D.45666 = cfg->cbb;
    D.45666->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.46669>;
    <D.46627>:
    D.45655 = cfg->mempool;
    D.46670 = mono_mempool_alloc (D.45655, 16);
    ins->data.op[1].many_blocks = D.46670;
    D.46671 = ins->data.op[1].many_blocks;
    *D.46671 = end_bb;
    D.46671 = ins->data.op[1].many_blocks;
    D.46672 = D.46671 + 8;
    *D.46672 = 0B;
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, end_bb);
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 != 0B) goto <D.46673>; else goto <D.46674>;
    <D.46673>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45667->next = ins;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    ins->prev = D.45667;
    D.45666 = cfg->cbb;
    D.45666->last_ins = ins;
    goto <D.46675>;
    <D.46674>:
    D.45666 = cfg->cbb;
    D.45666 = cfg->cbb;
    D.45666->last_ins = ins;
    D.45667 = D.45666->last_ins;
    D.45666->code = D.45667;
    <D.46675>:
    D.45759 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.45760 = D.45759 & 8;
    if (D.45760 == 0) goto <D.46676>; else goto <D.46677>;
    <D.46676>:
    D.45655 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.45655, 296);
    D.45672 = cfg->num_bblocks;
    D.46678 = D.45672;
    D.46679 = D.46678 + 1;
    cfg->num_bblocks = D.46679;
    D.46680 = (int) D.46678;
    falsebb->block_num = D.46680;
    D.46671 = ins->data.op[1].many_blocks;
    D.46672 = D.46671 + 8;
    *D.46672 = falsebb;
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, falsebb);
    D.46634 = falsebb->cil_code;
    if (D.46634 != 0B) goto <D.46681>; else goto <D.46682>;
    <D.46681>:
    D.45711 = cfg->cil_offset_to_bb;
    D.46634 = falsebb->cil_code;
    D.46637 = (long int) D.46634;
    D.45713 = cfg->cil_start;
    D.45714 = (long int) D.45713;
    D.46638 = D.46637 - D.45714;
    D.46639 = (long unsigned int) D.46638;
    D.46640 = D.46639 * 8;
    D.46641 = D.45711 + D.46640;
    *D.46641 = falsebb;
    <D.46682>:
    D.45719 = cfg->real_offset;
    falsebb->real_offset = D.45719;
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 != 0B) goto <D.46686>; else goto <D.46683>;
    <D.46686>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.46687 = D.45667->opcode;
    D.46688 = D.46687 + 64981;
    D.46689 = D.46688 <= 9;
    D.46690 = D.46687 + 64874;
    D.46691 = D.46690 <= 9;
    D.46692 = D.46689 | D.46691;
    if (D.46692 != 0) goto <D.46684>; else goto <D.46693>;
    <D.46693>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45731 = D.45667->opcode;
    D.45732 = D.45731 + 64884;
    if (D.45732 <= 9) goto <D.46684>; else goto <D.46683>;
    <D.46684>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45733 = D.45667->data.op[1].many_blocks;
    D.45734 = D.45733 + 8;
    D.45735 = *D.45734;
    if (D.45735 == 0B) goto <D.46694>; else goto <D.46683>;
    <D.46694>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45733 = D.45667->data.op[1].many_blocks;
    D.45734 = D.45733 + 8;
    *D.45734 = falsebb;
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, falsebb);
    goto <D.46685>;
    <D.46683>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    if (D.45667 == 0B) goto <D.46695>; else goto <D.46697>;
    <D.46697>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.46698 = D.45667->opcode;
    D.46699 = D.46698 != 446;
    D.46700 = D.46698 != 763;
    D.46701 = D.46699 & D.46700;
    if (D.46701 != 0) goto <D.46702>; else goto <D.46696>;
    <D.46702>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.46703 = D.45667->opcode;
    D.46704 = D.46703 + 64981;
    D.46705 = D.46704 > 9;
    D.46706 = D.46703 + 64874;
    D.46707 = D.46706 > 9;
    D.46708 = D.46705 & D.46707;
    if (D.46708 != 0) goto <D.46709>; else goto <D.46696>;
    <D.46709>:
    D.45666 = cfg->cbb;
    D.45667 = D.45666->last_ins;
    D.45731 = D.45667->opcode;
    D.45732 = D.45731 + 64884;
    if (D.45732 > 9) goto <D.46695>; else goto <D.46696>;
    <D.46695>:
    D.45666 = cfg->cbb;
    mono_link_bblock (cfg, D.45666, falsebb);
    <D.46696>:
    <D.46685>:
    D.45666 = cfg->cbb;
    D.45666->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.46710>;
    <D.46677>:
    D.45666 = cfg->cbb;
    D.45666->extended = 1;
    <D.46710>:
    <D.46669>:
  }
  D.46711 = is_null_bb->cil_code;
  if (D.46711 != 0B) goto <D.46712>; else goto <D.46713>;
  <D.46712>:
  D.45711 = cfg->cil_offset_to_bb;
  D.46711 = is_null_bb->cil_code;
  D.46714 = (long int) D.46711;
  D.45713 = cfg->cil_start;
  D.45714 = (long int) D.45713;
  D.46715 = D.46714 - D.45714;
  D.46716 = (long unsigned int) D.46715;
  D.46717 = D.46716 * 8;
  D.46718 = D.45711 + D.46717;
  *D.46718 = is_null_bb;
  <D.46713>:
  D.45719 = cfg->real_offset;
  is_null_bb->real_offset = D.45719;
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  if (D.45667 != 0B) goto <D.46722>; else goto <D.46719>;
  <D.46722>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.46723 = D.45667->opcode;
  D.46724 = D.46723 + 64981;
  D.46725 = D.46724 <= 9;
  D.46726 = D.46723 + 64874;
  D.46727 = D.46726 <= 9;
  D.46728 = D.46725 | D.46727;
  if (D.46728 != 0) goto <D.46720>; else goto <D.46729>;
  <D.46729>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45731 = D.45667->opcode;
  D.45732 = D.45731 + 64884;
  if (D.45732 <= 9) goto <D.46720>; else goto <D.46719>;
  <D.46720>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45733 = D.45667->data.op[1].many_blocks;
  D.45734 = D.45733 + 8;
  D.45735 = *D.45734;
  if (D.45735 == 0B) goto <D.46730>; else goto <D.46719>;
  <D.46730>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45733 = D.45667->data.op[1].many_blocks;
  D.45734 = D.45733 + 8;
  *D.45734 = is_null_bb;
  D.45666 = cfg->cbb;
  mono_link_bblock (cfg, D.45666, is_null_bb);
  goto <D.46721>;
  <D.46719>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  if (D.45667 == 0B) goto <D.46731>; else goto <D.46733>;
  <D.46733>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.46734 = D.45667->opcode;
  D.46735 = D.46734 != 446;
  D.46736 = D.46734 != 763;
  D.46737 = D.46735 & D.46736;
  if (D.46737 != 0) goto <D.46738>; else goto <D.46732>;
  <D.46738>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.46739 = D.45667->opcode;
  D.46740 = D.46739 + 64981;
  D.46741 = D.46740 > 9;
  D.46742 = D.46739 + 64874;
  D.46743 = D.46742 > 9;
  D.46744 = D.46741 & D.46743;
  if (D.46744 != 0) goto <D.46745>; else goto <D.46732>;
  <D.46745>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45731 = D.45667->opcode;
  D.45732 = D.45731 + 64884;
  if (D.45732 > 9) goto <D.46731>; else goto <D.46732>;
  <D.46731>:
  D.45666 = cfg->cbb;
  mono_link_bblock (cfg, D.45666, is_null_bb);
  <D.46732>:
  <D.46721>:
  D.45666 = cfg->cbb;
  D.45666->next_bb = is_null_bb;
  cfg->cbb = is_null_bb;
  D.46746 = end_bb->cil_code;
  if (D.46746 != 0B) goto <D.46747>; else goto <D.46748>;
  <D.46747>:
  D.45711 = cfg->cil_offset_to_bb;
  D.46746 = end_bb->cil_code;
  D.46749 = (long int) D.46746;
  D.45713 = cfg->cil_start;
  D.45714 = (long int) D.45713;
  D.46750 = D.46749 - D.45714;
  D.46751 = (long unsigned int) D.46750;
  D.46752 = D.46751 * 8;
  D.46753 = D.45711 + D.46752;
  *D.46753 = end_bb;
  <D.46748>:
  D.45719 = cfg->real_offset;
  end_bb->real_offset = D.45719;
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  if (D.45667 != 0B) goto <D.46757>; else goto <D.46754>;
  <D.46757>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.46758 = D.45667->opcode;
  D.46759 = D.46758 + 64981;
  D.46760 = D.46759 <= 9;
  D.46761 = D.46758 + 64874;
  D.46762 = D.46761 <= 9;
  D.46763 = D.46760 | D.46762;
  if (D.46763 != 0) goto <D.46755>; else goto <D.46764>;
  <D.46764>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45731 = D.45667->opcode;
  D.45732 = D.45731 + 64884;
  if (D.45732 <= 9) goto <D.46755>; else goto <D.46754>;
  <D.46755>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45733 = D.45667->data.op[1].many_blocks;
  D.45734 = D.45733 + 8;
  D.45735 = *D.45734;
  if (D.45735 == 0B) goto <D.46765>; else goto <D.46754>;
  <D.46765>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45733 = D.45667->data.op[1].many_blocks;
  D.45734 = D.45733 + 8;
  *D.45734 = end_bb;
  D.45666 = cfg->cbb;
  mono_link_bblock (cfg, D.45666, end_bb);
  goto <D.46756>;
  <D.46754>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  if (D.45667 == 0B) goto <D.46766>; else goto <D.46768>;
  <D.46768>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.46769 = D.45667->opcode;
  D.46770 = D.46769 != 446;
  D.46771 = D.46769 != 763;
  D.46772 = D.46770 & D.46771;
  if (D.46772 != 0) goto <D.46773>; else goto <D.46767>;
  <D.46773>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.46774 = D.45667->opcode;
  D.46775 = D.46774 + 64981;
  D.46776 = D.46775 > 9;
  D.46777 = D.46774 + 64874;
  D.46778 = D.46777 > 9;
  D.46779 = D.46776 & D.46778;
  if (D.46779 != 0) goto <D.46780>; else goto <D.46767>;
  <D.46780>:
  D.45666 = cfg->cbb;
  D.45667 = D.45666->last_ins;
  D.45731 = D.45667->opcode;
  D.45732 = D.45731 + 64884;
  if (D.45732 > 9) goto <D.46766>; else goto <D.46767>;
  <D.46766>:
  D.45666 = cfg->cbb;
  mono_link_bblock (cfg, D.45666, end_bb);
  <D.46767>:
  <D.46756>:
  D.45666 = cfg->cbb;
  D.45666->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.45671 = ins;
  return D.45671;
}


mini_emit_iface_cast (struct MonoCompile * cfg, int vtable_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target, struct MonoBasicBlock * true_target)
{
  unsigned int D.46784;
  struct MonoMemPool * D.46785;
  long int D.46786;
  struct MonoInst * D.46787;
  int D.46788;
  int D.46789;
  const unsigned char * D.46790;
  struct MonoBasicBlock * D.46791;
  struct MonoInst * D.46792;
  long int D.46798;
  struct MonoInst * D.46799;
  int D.46800;
  int D.46801;
  unsigned int D.46804;
  unsigned int D.46805;
  unsigned int D.46806;
  int D.46807;
  unsigned char * D.46811;
  struct MonoBasicBlock * * D.46814;
  long int D.46815;
  unsigned char * D.46816;
  long int D.46817;
  long int D.46818;
  long unsigned int D.46819;
  long unsigned int D.46820;
  struct MonoBasicBlock * * D.46821;
  unsigned int D.46822;
  short unsigned int D.46827;
  short unsigned int D.46828;
  _Bool D.46829;
  short unsigned int D.46830;
  _Bool D.46831;
  _Bool D.46832;
  short unsigned int D.46834;
  short unsigned int D.46835;
  struct MonoBasicBlock * * D.46836;
  struct MonoBasicBlock * * D.46837;
  struct MonoBasicBlock * D.46838;
  short unsigned int D.46843;
  _Bool D.46844;
  _Bool D.46845;
  _Bool D.46846;
  short unsigned int D.46848;
  short unsigned int D.46849;
  _Bool D.46850;
  short unsigned int D.46851;
  _Bool D.46852;
  _Bool D.46853;
  void * D.46856;
  struct MonoBasicBlock * * D.46857;
  struct MonoBasicBlock * * D.46858;
  unsigned char D.46862;
  unsigned char D.46863;
  unsigned int D.46866;
  unsigned int D.46867;
  int D.46868;
  short unsigned int D.46875;
  short unsigned int D.46876;
  _Bool D.46877;
  short unsigned int D.46878;
  _Bool D.46879;
  _Bool D.46880;
  short unsigned int D.46886;
  _Bool D.46887;
  _Bool D.46888;
  _Bool D.46889;
  short unsigned int D.46891;
  short unsigned int D.46892;
  _Bool D.46893;
  short unsigned int D.46894;
  _Bool D.46895;
  _Bool D.46896;
  long int D.46900;
  struct MonoInst * D.46901;
  int D.46902;
  int D.46903;
  int intf_reg;

  D.46784 = alloc_preg (cfg);
  intf_reg = (int) D.46784;
  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.46785 = cfg->mempool;
    inst = mono_mempool_alloc (D.46785, 80);
    inst->data.op[1].const_val = 0;
    D.46786 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46786;
    inst->prev = 0B;
    D.46787 = inst->prev;
    inst->next = D.46787;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46788 = inst->sreg3;
    inst->sreg2 = D.46788;
    D.46789 = inst->sreg2;
    inst->sreg1 = D.46789;
    D.46790 = cfg->ip;
    inst->cil_code = D.46790;
    inst->dreg = -1;
    inst->sreg1 = intf_reg;
    inst->data.op[1].const_val = 0;
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    if (D.46792 != 0B) goto <D.46793>; else goto <D.46794>;
    <D.46793>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46792->next = inst;
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    inst->prev = D.46792;
    D.46791 = cfg->cbb;
    D.46791->last_ins = inst;
    goto <D.46795>;
    <D.46794>:
    D.46791 = cfg->cbb;
    D.46791 = cfg->cbb;
    D.46791->last_ins = inst;
    D.46792 = D.46791->last_ins;
    D.46791->code = D.46792;
    <D.46795>:
  }
  if (true_target != 0B) goto <D.46796>; else goto <D.46797>;
  <D.46796>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.46785 = cfg->mempool;
    ins = mono_mempool_alloc (D.46785, 80);
    ins->data.op[1].const_val = 0;
    D.46798 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.46798;
    ins->prev = 0B;
    D.46799 = ins->prev;
    ins->next = D.46799;
    ins->opcode = 560;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.46800 = ins->sreg3;
    ins->sreg2 = D.46800;
    D.46801 = ins->sreg2;
    ins->sreg1 = D.46801;
    D.46790 = cfg->ip;
    ins->cil_code = D.46790;
    if (0 != 0) goto <D.46802>; else goto <D.46803>;
    <D.46802>:
    D.46785 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.46785, 296);
    D.46804 = cfg->num_bblocks;
    D.46805 = D.46804;
    D.46806 = D.46805 + 1;
    cfg->num_bblocks = D.46806;
    D.46807 = (int) D.46805;
    falsebb->block_num = D.46807;
    ins->data.op[0].target_block = true_target;
    D.46791 = cfg->cbb;
    mono_link_bblock (cfg, D.46791, true_target);
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    if (D.46792 != 0B) goto <D.46808>; else goto <D.46809>;
    <D.46808>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46792->next = ins;
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    ins->prev = D.46792;
    D.46791 = cfg->cbb;
    D.46791->last_ins = ins;
    goto <D.46810>;
    <D.46809>:
    D.46791 = cfg->cbb;
    D.46791 = cfg->cbb;
    D.46791->last_ins = ins;
    D.46792 = D.46791->last_ins;
    D.46791->code = D.46792;
    <D.46810>:
    D.46811 = falsebb->cil_code;
    if (D.46811 != 0B) goto <D.46812>; else goto <D.46813>;
    <D.46812>:
    D.46814 = cfg->cil_offset_to_bb;
    D.46811 = falsebb->cil_code;
    D.46815 = (long int) D.46811;
    D.46816 = cfg->cil_start;
    D.46817 = (long int) D.46816;
    D.46818 = D.46815 - D.46817;
    D.46819 = (long unsigned int) D.46818;
    D.46820 = D.46819 * 8;
    D.46821 = D.46814 + D.46820;
    *D.46821 = falsebb;
    <D.46813>:
    D.46822 = cfg->real_offset;
    falsebb->real_offset = D.46822;
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    if (D.46792 != 0B) goto <D.46826>; else goto <D.46823>;
    <D.46826>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46827 = D.46792->opcode;
    D.46828 = D.46827 + 64981;
    D.46829 = D.46828 <= 9;
    D.46830 = D.46827 + 64874;
    D.46831 = D.46830 <= 9;
    D.46832 = D.46829 | D.46831;
    if (D.46832 != 0) goto <D.46824>; else goto <D.46833>;
    <D.46833>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46834 = D.46792->opcode;
    D.46835 = D.46834 + 64884;
    if (D.46835 <= 9) goto <D.46824>; else goto <D.46823>;
    <D.46824>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46836 = D.46792->data.op[1].many_blocks;
    D.46837 = D.46836 + 8;
    D.46838 = *D.46837;
    if (D.46838 == 0B) goto <D.46839>; else goto <D.46823>;
    <D.46839>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46836 = D.46792->data.op[1].many_blocks;
    D.46837 = D.46836 + 8;
    *D.46837 = falsebb;
    D.46791 = cfg->cbb;
    mono_link_bblock (cfg, D.46791, falsebb);
    goto <D.46825>;
    <D.46823>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    if (D.46792 == 0B) goto <D.46840>; else goto <D.46842>;
    <D.46842>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46843 = D.46792->opcode;
    D.46844 = D.46843 != 446;
    D.46845 = D.46843 != 763;
    D.46846 = D.46844 & D.46845;
    if (D.46846 != 0) goto <D.46847>; else goto <D.46841>;
    <D.46847>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46848 = D.46792->opcode;
    D.46849 = D.46848 + 64981;
    D.46850 = D.46849 > 9;
    D.46851 = D.46848 + 64874;
    D.46852 = D.46851 > 9;
    D.46853 = D.46850 & D.46852;
    if (D.46853 != 0) goto <D.46854>; else goto <D.46841>;
    <D.46854>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46834 = D.46792->opcode;
    D.46835 = D.46834 + 64884;
    if (D.46835 > 9) goto <D.46840>; else goto <D.46841>;
    <D.46840>:
    D.46791 = cfg->cbb;
    mono_link_bblock (cfg, D.46791, falsebb);
    <D.46841>:
    <D.46825>:
    D.46791 = cfg->cbb;
    D.46791->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.46855>;
    <D.46803>:
    D.46785 = cfg->mempool;
    D.46856 = mono_mempool_alloc (D.46785, 16);
    ins->data.op[1].many_blocks = D.46856;
    D.46857 = ins->data.op[1].many_blocks;
    *D.46857 = true_target;
    D.46857 = ins->data.op[1].many_blocks;
    D.46858 = D.46857 + 8;
    *D.46858 = 0B;
    D.46791 = cfg->cbb;
    mono_link_bblock (cfg, D.46791, true_target);
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    if (D.46792 != 0B) goto <D.46859>; else goto <D.46860>;
    <D.46859>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46792->next = ins;
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    ins->prev = D.46792;
    D.46791 = cfg->cbb;
    D.46791->last_ins = ins;
    goto <D.46861>;
    <D.46860>:
    D.46791 = cfg->cbb;
    D.46791 = cfg->cbb;
    D.46791->last_ins = ins;
    D.46792 = D.46791->last_ins;
    D.46791->code = D.46792;
    <D.46861>:
    D.46862 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.46863 = D.46862 & 8;
    if (D.46863 == 0) goto <D.46864>; else goto <D.46865>;
    <D.46864>:
    D.46785 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.46785, 296);
    D.46804 = cfg->num_bblocks;
    D.46866 = D.46804;
    D.46867 = D.46866 + 1;
    cfg->num_bblocks = D.46867;
    D.46868 = (int) D.46866;
    falsebb->block_num = D.46868;
    D.46857 = ins->data.op[1].many_blocks;
    D.46858 = D.46857 + 8;
    *D.46858 = falsebb;
    D.46791 = cfg->cbb;
    mono_link_bblock (cfg, D.46791, falsebb);
    D.46811 = falsebb->cil_code;
    if (D.46811 != 0B) goto <D.46869>; else goto <D.46870>;
    <D.46869>:
    D.46814 = cfg->cil_offset_to_bb;
    D.46811 = falsebb->cil_code;
    D.46815 = (long int) D.46811;
    D.46816 = cfg->cil_start;
    D.46817 = (long int) D.46816;
    D.46818 = D.46815 - D.46817;
    D.46819 = (long unsigned int) D.46818;
    D.46820 = D.46819 * 8;
    D.46821 = D.46814 + D.46820;
    *D.46821 = falsebb;
    <D.46870>:
    D.46822 = cfg->real_offset;
    falsebb->real_offset = D.46822;
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    if (D.46792 != 0B) goto <D.46874>; else goto <D.46871>;
    <D.46874>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46875 = D.46792->opcode;
    D.46876 = D.46875 + 64981;
    D.46877 = D.46876 <= 9;
    D.46878 = D.46875 + 64874;
    D.46879 = D.46878 <= 9;
    D.46880 = D.46877 | D.46879;
    if (D.46880 != 0) goto <D.46872>; else goto <D.46881>;
    <D.46881>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46834 = D.46792->opcode;
    D.46835 = D.46834 + 64884;
    if (D.46835 <= 9) goto <D.46872>; else goto <D.46871>;
    <D.46872>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46836 = D.46792->data.op[1].many_blocks;
    D.46837 = D.46836 + 8;
    D.46838 = *D.46837;
    if (D.46838 == 0B) goto <D.46882>; else goto <D.46871>;
    <D.46882>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46836 = D.46792->data.op[1].many_blocks;
    D.46837 = D.46836 + 8;
    *D.46837 = falsebb;
    D.46791 = cfg->cbb;
    mono_link_bblock (cfg, D.46791, falsebb);
    goto <D.46873>;
    <D.46871>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    if (D.46792 == 0B) goto <D.46883>; else goto <D.46885>;
    <D.46885>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46886 = D.46792->opcode;
    D.46887 = D.46886 != 446;
    D.46888 = D.46886 != 763;
    D.46889 = D.46887 & D.46888;
    if (D.46889 != 0) goto <D.46890>; else goto <D.46884>;
    <D.46890>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46891 = D.46792->opcode;
    D.46892 = D.46891 + 64981;
    D.46893 = D.46892 > 9;
    D.46894 = D.46891 + 64874;
    D.46895 = D.46894 > 9;
    D.46896 = D.46893 & D.46895;
    if (D.46896 != 0) goto <D.46897>; else goto <D.46884>;
    <D.46897>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46834 = D.46792->opcode;
    D.46835 = D.46834 + 64884;
    if (D.46835 > 9) goto <D.46883>; else goto <D.46884>;
    <D.46883>:
    D.46791 = cfg->cbb;
    mono_link_bblock (cfg, D.46791, falsebb);
    <D.46884>:
    <D.46873>:
    D.46791 = cfg->cbb;
    D.46791->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.46898>;
    <D.46865>:
    D.46791 = cfg->cbb;
    D.46791->extended = 1;
    <D.46898>:
    <D.46855>:
  }
  goto <D.46899>;
  <D.46797>:
  {
    struct MonoInst * inst;

    D.46785 = cfg->mempool;
    inst = mono_mempool_alloc (D.46785, 80);
    inst->data.op[1].const_val = 0;
    D.46900 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46900;
    inst->prev = 0B;
    D.46901 = inst->prev;
    inst->next = D.46901;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46902 = inst->sreg3;
    inst->sreg2 = D.46902;
    D.46903 = inst->sreg2;
    inst->sreg1 = D.46903;
    D.46790 = cfg->ip;
    inst->cil_code = D.46790;
    inst->data.op[1].p = "InvalidCastException";
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    if (D.46792 != 0B) goto <D.46904>; else goto <D.46905>;
    <D.46904>:
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    D.46792->next = inst;
    D.46791 = cfg->cbb;
    D.46792 = D.46791->last_ins;
    inst->prev = D.46792;
    D.46791 = cfg->cbb;
    D.46791->last_ins = inst;
    goto <D.46906>;
    <D.46905>:
    D.46791 = cfg->cbb;
    D.46791 = cfg->cbb;
    D.46791->last_ins = inst;
    D.46792 = D.46791->last_ins;
    D.46791->code = D.46792;
    <D.46906>:
  }
  <D.46899>:
}


mini_emit_max_iid_check_vtable (struct MonoCompile * cfg, int vtable_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target)
{
  unsigned int D.46907;
  struct MonoMemPool * D.46908;
  long int D.46909;
  struct MonoInst * D.46910;
  int D.46911;
  int D.46912;
  const unsigned char * D.46913;
  struct MonoBasicBlock * D.46914;
  struct MonoInst * D.46915;
  int max_iid_reg;

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

    D.46908 = cfg->mempool;
    inst = mono_mempool_alloc (D.46908, 80);
    inst->data.op[1].const_val = 0;
    D.46909 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46909;
    inst->prev = 0B;
    D.46910 = inst->prev;
    inst->next = D.46910;
    inst->opcode = 395;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46911 = inst->sreg3;
    inst->sreg2 = D.46911;
    D.46912 = inst->sreg2;
    inst->sreg1 = D.46912;
    D.46913 = cfg->ip;
    inst->cil_code = D.46913;
    inst->dreg = max_iid_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 40;
    D.46914 = cfg->cbb;
    D.46915 = D.46914->last_ins;
    if (D.46915 != 0B) goto <D.46916>; else goto <D.46917>;
    <D.46916>:
    D.46914 = cfg->cbb;
    D.46915 = D.46914->last_ins;
    D.46915->next = inst;
    D.46914 = cfg->cbb;
    D.46915 = D.46914->last_ins;
    inst->prev = D.46915;
    D.46914 = cfg->cbb;
    D.46914->last_ins = inst;
    goto <D.46918>;
    <D.46917>:
    D.46914 = cfg->cbb;
    D.46914 = cfg->cbb;
    D.46914->last_ins = inst;
    D.46915 = D.46914->last_ins;
    D.46914->code = D.46915;
    <D.46918>:
  }
  mini_emit_max_iid_check (cfg, max_iid_reg, klass, false_target);
}


mini_emit_max_iid_check (struct MonoCompile * cfg, int max_iid_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target)
{
  unsigned char D.46919;
  unsigned char D.46920;
  unsigned int D.46923;
  struct MonoMemPool * D.46924;
  long int D.46925;
  struct MonoInst * D.46926;
  guint16 iftmp.428;
  int D.46931;
  int D.46932;
  const unsigned char * D.46933;
  struct MonoBasicBlock * D.46934;
  struct MonoInst * D.46935;
  long int D.46939;
  struct MonoInst * D.46940;
  int D.46941;
  int D.46942;
  long int D.46947;
  struct MonoInst * D.46948;
  int D.46949;
  int D.46950;
  short unsigned int D.46951;
  long int D.46952;
  long int D.46958;
  struct MonoInst * D.46959;
  int D.46960;
  int D.46961;
  unsigned int D.46964;
  unsigned int D.46965;
  unsigned int D.46966;
  int D.46967;
  unsigned char * D.46971;
  struct MonoBasicBlock * * D.46974;
  long int D.46975;
  unsigned char * D.46976;
  long int D.46977;
  long int D.46978;
  long unsigned int D.46979;
  long unsigned int D.46980;
  struct MonoBasicBlock * * D.46981;
  unsigned int D.46982;
  short unsigned int D.46987;
  short unsigned int D.46988;
  _Bool D.46989;
  short unsigned int D.46990;
  _Bool D.46991;
  _Bool D.46992;
  short unsigned int D.46994;
  short unsigned int D.46995;
  struct MonoBasicBlock * * D.46996;
  struct MonoBasicBlock * * D.46997;
  struct MonoBasicBlock * D.46998;
  short unsigned int D.47003;
  _Bool D.47004;
  _Bool D.47005;
  _Bool D.47006;
  short unsigned int D.47008;
  short unsigned int D.47009;
  _Bool D.47010;
  short unsigned int D.47011;
  _Bool D.47012;
  _Bool D.47013;
  void * D.47016;
  struct MonoBasicBlock * * D.47017;
  struct MonoBasicBlock * * D.47018;
  unsigned char D.47022;
  unsigned int D.47025;
  unsigned int D.47026;
  int D.47027;
  short unsigned int D.47034;
  short unsigned int D.47035;
  _Bool D.47036;
  short unsigned int D.47037;
  _Bool D.47038;
  _Bool D.47039;
  short unsigned int D.47045;
  _Bool D.47046;
  _Bool D.47047;
  _Bool D.47048;
  short unsigned int D.47050;
  short unsigned int D.47051;
  _Bool D.47052;
  short unsigned int D.47053;
  _Bool D.47054;
  _Bool D.47055;
  long int D.47059;
  struct MonoInst * D.47060;
  int D.47061;
  int D.47062;

  D.46919 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.46920 = D.46919 & 64;
  if (D.46920 != 0) goto <D.46921>; else goto <D.46922>;
  <D.46921>:
  {
    int iid_reg;

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

      D.46924 = cfg->mempool;
      inst = mono_mempool_alloc (D.46924, 80);
      inst->data.op[1].const_val = 0;
      D.46925 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46925;
      inst->prev = 0B;
      D.46926 = inst->prev;
      inst->next = D.46926;
      D.46919 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.46920 = D.46919 & 64;
      if (D.46920 != 0) goto <D.46928>; else goto <D.46929>;
      <D.46928>:
      iftmp.428 = 736;
      goto <D.46930>;
      <D.46929>:
      iftmp.428 = 363;
      <D.46930>:
      inst->opcode = iftmp.428;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46931 = inst->sreg3;
      inst->sreg2 = D.46931;
      D.46932 = inst->sreg2;
      inst->sreg1 = D.46932;
      D.46933 = cfg->ip;
      inst->cil_code = D.46933;
      inst->dreg = iid_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 23;
      D.46934 = cfg->cbb;
      D.46935 = D.46934->last_ins;
      if (D.46935 != 0B) goto <D.46936>; else goto <D.46937>;
      <D.46936>:
      D.46934 = cfg->cbb;
      D.46935 = D.46934->last_ins;
      D.46935->next = inst;
      D.46934 = cfg->cbb;
      D.46935 = D.46934->last_ins;
      inst->prev = D.46935;
      D.46934 = cfg->cbb;
      D.46934->last_ins = inst;
      goto <D.46938>;
      <D.46937>:
      D.46934 = cfg->cbb;
      D.46934 = cfg->cbb;
      D.46934->last_ins = inst;
      D.46935 = D.46934->last_ins;
      D.46934->code = D.46935;
      <D.46938>:
    }
    {
      struct MonoInst * inst;

      D.46924 = cfg->mempool;
      inst = mono_mempool_alloc (D.46924, 80);
      inst->data.op[1].const_val = 0;
      D.46939 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.46939;
      inst->prev = 0B;
      D.46940 = inst->prev;
      inst->next = D.46940;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.46941 = inst->sreg3;
      inst->sreg2 = D.46941;
      D.46942 = inst->sreg2;
      inst->sreg1 = D.46942;
      D.46933 = cfg->ip;
      inst->cil_code = D.46933;
      inst->dreg = -1;
      inst->sreg1 = max_iid_reg;
      inst->sreg2 = iid_reg;
      D.46934 = cfg->cbb;
      D.46935 = D.46934->last_ins;
      if (D.46935 != 0B) goto <D.46943>; else goto <D.46944>;
      <D.46943>:
      D.46934 = cfg->cbb;
      D.46935 = D.46934->last_ins;
      D.46935->next = inst;
      D.46934 = cfg->cbb;
      D.46935 = D.46934->last_ins;
      inst->prev = D.46935;
      D.46934 = cfg->cbb;
      D.46934->last_ins = inst;
      goto <D.46945>;
      <D.46944>:
      D.46934 = cfg->cbb;
      D.46934 = cfg->cbb;
      D.46934->last_ins = inst;
      D.46935 = D.46934->last_ins;
      D.46934->code = D.46935;
      <D.46945>:
    }
  }
  goto <D.46946>;
  <D.46922>:
  {
    struct MonoInst * inst;

    D.46924 = cfg->mempool;
    inst = mono_mempool_alloc (D.46924, 80);
    inst->data.op[1].const_val = 0;
    D.46947 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.46947;
    inst->prev = 0B;
    D.46948 = inst->prev;
    inst->next = D.46948;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.46949 = inst->sreg3;
    inst->sreg2 = D.46949;
    D.46950 = inst->sreg2;
    inst->sreg1 = D.46950;
    D.46933 = cfg->ip;
    inst->cil_code = D.46933;
    inst->dreg = -1;
    inst->sreg1 = max_iid_reg;
    D.46951 = klass->interface_id;
    D.46952 = (long int) D.46951;
    inst->data.op[1].const_val = D.46952;
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    if (D.46935 != 0B) goto <D.46953>; else goto <D.46954>;
    <D.46953>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46935->next = inst;
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    inst->prev = D.46935;
    D.46934 = cfg->cbb;
    D.46934->last_ins = inst;
    goto <D.46955>;
    <D.46954>:
    D.46934 = cfg->cbb;
    D.46934 = cfg->cbb;
    D.46934->last_ins = inst;
    D.46935 = D.46934->last_ins;
    D.46934->code = D.46935;
    <D.46955>:
  }
  <D.46946>:
  if (false_target != 0B) goto <D.46956>; else goto <D.46957>;
  <D.46956>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.46924 = cfg->mempool;
    ins = mono_mempool_alloc (D.46924, 80);
    ins->data.op[1].const_val = 0;
    D.46958 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.46958;
    ins->prev = 0B;
    D.46959 = ins->prev;
    ins->next = D.46959;
    ins->opcode = 564;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.46960 = ins->sreg3;
    ins->sreg2 = D.46960;
    D.46961 = ins->sreg2;
    ins->sreg1 = D.46961;
    D.46933 = cfg->ip;
    ins->cil_code = D.46933;
    if (0 != 0) goto <D.46962>; else goto <D.46963>;
    <D.46962>:
    D.46924 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.46924, 296);
    D.46964 = cfg->num_bblocks;
    D.46965 = D.46964;
    D.46966 = D.46965 + 1;
    cfg->num_bblocks = D.46966;
    D.46967 = (int) D.46965;
    falsebb->block_num = D.46967;
    ins->data.op[0].target_block = false_target;
    D.46934 = cfg->cbb;
    mono_link_bblock (cfg, D.46934, false_target);
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    if (D.46935 != 0B) goto <D.46968>; else goto <D.46969>;
    <D.46968>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46935->next = ins;
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    ins->prev = D.46935;
    D.46934 = cfg->cbb;
    D.46934->last_ins = ins;
    goto <D.46970>;
    <D.46969>:
    D.46934 = cfg->cbb;
    D.46934 = cfg->cbb;
    D.46934->last_ins = ins;
    D.46935 = D.46934->last_ins;
    D.46934->code = D.46935;
    <D.46970>:
    D.46971 = falsebb->cil_code;
    if (D.46971 != 0B) goto <D.46972>; else goto <D.46973>;
    <D.46972>:
    D.46974 = cfg->cil_offset_to_bb;
    D.46971 = falsebb->cil_code;
    D.46975 = (long int) D.46971;
    D.46976 = cfg->cil_start;
    D.46977 = (long int) D.46976;
    D.46978 = D.46975 - D.46977;
    D.46979 = (long unsigned int) D.46978;
    D.46980 = D.46979 * 8;
    D.46981 = D.46974 + D.46980;
    *D.46981 = falsebb;
    <D.46973>:
    D.46982 = cfg->real_offset;
    falsebb->real_offset = D.46982;
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    if (D.46935 != 0B) goto <D.46986>; else goto <D.46983>;
    <D.46986>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46987 = D.46935->opcode;
    D.46988 = D.46987 + 64981;
    D.46989 = D.46988 <= 9;
    D.46990 = D.46987 + 64874;
    D.46991 = D.46990 <= 9;
    D.46992 = D.46989 | D.46991;
    if (D.46992 != 0) goto <D.46984>; else goto <D.46993>;
    <D.46993>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46994 = D.46935->opcode;
    D.46995 = D.46994 + 64884;
    if (D.46995 <= 9) goto <D.46984>; else goto <D.46983>;
    <D.46984>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46996 = D.46935->data.op[1].many_blocks;
    D.46997 = D.46996 + 8;
    D.46998 = *D.46997;
    if (D.46998 == 0B) goto <D.46999>; else goto <D.46983>;
    <D.46999>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46996 = D.46935->data.op[1].many_blocks;
    D.46997 = D.46996 + 8;
    *D.46997 = falsebb;
    D.46934 = cfg->cbb;
    mono_link_bblock (cfg, D.46934, falsebb);
    goto <D.46985>;
    <D.46983>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    if (D.46935 == 0B) goto <D.47000>; else goto <D.47002>;
    <D.47002>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.47003 = D.46935->opcode;
    D.47004 = D.47003 != 446;
    D.47005 = D.47003 != 763;
    D.47006 = D.47004 & D.47005;
    if (D.47006 != 0) goto <D.47007>; else goto <D.47001>;
    <D.47007>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.47008 = D.46935->opcode;
    D.47009 = D.47008 + 64981;
    D.47010 = D.47009 > 9;
    D.47011 = D.47008 + 64874;
    D.47012 = D.47011 > 9;
    D.47013 = D.47010 & D.47012;
    if (D.47013 != 0) goto <D.47014>; else goto <D.47001>;
    <D.47014>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46994 = D.46935->opcode;
    D.46995 = D.46994 + 64884;
    if (D.46995 > 9) goto <D.47000>; else goto <D.47001>;
    <D.47000>:
    D.46934 = cfg->cbb;
    mono_link_bblock (cfg, D.46934, falsebb);
    <D.47001>:
    <D.46985>:
    D.46934 = cfg->cbb;
    D.46934->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47015>;
    <D.46963>:
    D.46924 = cfg->mempool;
    D.47016 = mono_mempool_alloc (D.46924, 16);
    ins->data.op[1].many_blocks = D.47016;
    D.47017 = ins->data.op[1].many_blocks;
    *D.47017 = false_target;
    D.47017 = ins->data.op[1].many_blocks;
    D.47018 = D.47017 + 8;
    *D.47018 = 0B;
    D.46934 = cfg->cbb;
    mono_link_bblock (cfg, D.46934, false_target);
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    if (D.46935 != 0B) goto <D.47019>; else goto <D.47020>;
    <D.47019>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46935->next = ins;
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    ins->prev = D.46935;
    D.46934 = cfg->cbb;
    D.46934->last_ins = ins;
    goto <D.47021>;
    <D.47020>:
    D.46934 = cfg->cbb;
    D.46934 = cfg->cbb;
    D.46934->last_ins = ins;
    D.46935 = D.46934->last_ins;
    D.46934->code = D.46935;
    <D.47021>:
    D.46919 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.47022 = D.46919 & 8;
    if (D.47022 == 0) goto <D.47023>; else goto <D.47024>;
    <D.47023>:
    D.46924 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.46924, 296);
    D.46964 = cfg->num_bblocks;
    D.47025 = D.46964;
    D.47026 = D.47025 + 1;
    cfg->num_bblocks = D.47026;
    D.47027 = (int) D.47025;
    falsebb->block_num = D.47027;
    D.47017 = ins->data.op[1].many_blocks;
    D.47018 = D.47017 + 8;
    *D.47018 = falsebb;
    D.46934 = cfg->cbb;
    mono_link_bblock (cfg, D.46934, falsebb);
    D.46971 = falsebb->cil_code;
    if (D.46971 != 0B) goto <D.47028>; else goto <D.47029>;
    <D.47028>:
    D.46974 = cfg->cil_offset_to_bb;
    D.46971 = falsebb->cil_code;
    D.46975 = (long int) D.46971;
    D.46976 = cfg->cil_start;
    D.46977 = (long int) D.46976;
    D.46978 = D.46975 - D.46977;
    D.46979 = (long unsigned int) D.46978;
    D.46980 = D.46979 * 8;
    D.46981 = D.46974 + D.46980;
    *D.46981 = falsebb;
    <D.47029>:
    D.46982 = cfg->real_offset;
    falsebb->real_offset = D.46982;
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    if (D.46935 != 0B) goto <D.47033>; else goto <D.47030>;
    <D.47033>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.47034 = D.46935->opcode;
    D.47035 = D.47034 + 64981;
    D.47036 = D.47035 <= 9;
    D.47037 = D.47034 + 64874;
    D.47038 = D.47037 <= 9;
    D.47039 = D.47036 | D.47038;
    if (D.47039 != 0) goto <D.47031>; else goto <D.47040>;
    <D.47040>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46994 = D.46935->opcode;
    D.46995 = D.46994 + 64884;
    if (D.46995 <= 9) goto <D.47031>; else goto <D.47030>;
    <D.47031>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46996 = D.46935->data.op[1].many_blocks;
    D.46997 = D.46996 + 8;
    D.46998 = *D.46997;
    if (D.46998 == 0B) goto <D.47041>; else goto <D.47030>;
    <D.47041>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46996 = D.46935->data.op[1].many_blocks;
    D.46997 = D.46996 + 8;
    *D.46997 = falsebb;
    D.46934 = cfg->cbb;
    mono_link_bblock (cfg, D.46934, falsebb);
    goto <D.47032>;
    <D.47030>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    if (D.46935 == 0B) goto <D.47042>; else goto <D.47044>;
    <D.47044>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.47045 = D.46935->opcode;
    D.47046 = D.47045 != 446;
    D.47047 = D.47045 != 763;
    D.47048 = D.47046 & D.47047;
    if (D.47048 != 0) goto <D.47049>; else goto <D.47043>;
    <D.47049>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.47050 = D.46935->opcode;
    D.47051 = D.47050 + 64981;
    D.47052 = D.47051 > 9;
    D.47053 = D.47050 + 64874;
    D.47054 = D.47053 > 9;
    D.47055 = D.47052 & D.47054;
    if (D.47055 != 0) goto <D.47056>; else goto <D.47043>;
    <D.47056>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46994 = D.46935->opcode;
    D.46995 = D.46994 + 64884;
    if (D.46995 > 9) goto <D.47042>; else goto <D.47043>;
    <D.47042>:
    D.46934 = cfg->cbb;
    mono_link_bblock (cfg, D.46934, falsebb);
    <D.47043>:
    <D.47032>:
    D.46934 = cfg->cbb;
    D.46934->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47057>;
    <D.47024>:
    D.46934 = cfg->cbb;
    D.46934->extended = 1;
    <D.47057>:
    <D.47015>:
  }
  goto <D.47058>;
  <D.46957>:
  {
    struct MonoInst * inst;

    D.46924 = cfg->mempool;
    inst = mono_mempool_alloc (D.46924, 80);
    inst->data.op[1].const_val = 0;
    D.47059 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47059;
    inst->prev = 0B;
    D.47060 = inst->prev;
    inst->next = D.47060;
    inst->opcode = 464;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47061 = inst->sreg3;
    inst->sreg2 = D.47061;
    D.47062 = inst->sreg2;
    inst->sreg1 = D.47062;
    D.46933 = cfg->ip;
    inst->cil_code = D.46933;
    inst->data.op[1].p = "InvalidCastException";
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    if (D.46935 != 0B) goto <D.47063>; else goto <D.47064>;
    <D.47063>:
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    D.46935->next = inst;
    D.46934 = cfg->cbb;
    D.46935 = D.46934->last_ins;
    inst->prev = D.46935;
    D.46934 = cfg->cbb;
    D.46934->last_ins = inst;
    goto <D.47065>;
    <D.47064>:
    D.46934 = cfg->cbb;
    D.46934 = cfg->cbb;
    D.46934->last_ins = inst;
    D.46935 = D.46934->last_ins;
    D.46934->code = D.46935;
    <D.47065>:
  }
  <D.47058>:
}


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, 32, klass);
}


mini_emit_interface_bitmap_check (struct MonoCompile * cfg, int intf_bit_reg, int base_reg, int offset, struct MonoClass * klass)
{
  unsigned int D.47066;
  unsigned int D.47067;
  struct MonoMemPool * D.47068;
  long int D.47069;
  struct MonoInst * D.47070;
  int D.47071;
  int D.47072;
  const unsigned char * D.47073;
  long int D.47074;
  struct MonoBasicBlock * D.47075;
  struct MonoInst * D.47076;
  unsigned char D.47080;
  unsigned char D.47081;
  unsigned int D.47084;
  unsigned int D.47085;
  unsigned int D.47086;
  unsigned int D.47087;
  unsigned int D.47088;
  unsigned int D.47089;
  long int D.47090;
  struct MonoInst * D.47091;
  guint16 iftmp.429;
  int D.47096;
  int D.47097;
  long int D.47101;
  struct MonoInst * D.47102;
  int D.47103;
  int D.47104;
  long int D.47108;
  struct MonoInst * D.47109;
  int D.47110;
  int D.47111;
  long int D.47115;
  struct MonoInst * D.47116;
  int D.47117;
  int D.47118;
  long int D.47122;
  struct MonoInst * D.47123;
  int D.47124;
  int D.47125;
  long int D.47129;
  struct MonoInst * D.47130;
  int D.47131;
  int D.47132;
  long int D.47136;
  struct MonoInst * D.47137;
  int D.47138;
  int D.47139;
  long int D.47143;
  struct MonoInst * D.47144;
  int D.47145;
  int D.47146;
  long int D.47151;
  struct MonoInst * D.47152;
  int D.47153;
  int D.47154;
  short unsigned int D.47155;
  short unsigned int D.47156;
  long int D.47157;
  long int D.47161;
  struct MonoInst * D.47162;
  int D.47163;
  int D.47164;
  int D.47165;
  int D.47166;
  int D.47167;
  long int D.47168;
  int ibitmap_reg;
  int ibitmap_byte_reg;

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

    D.47068 = cfg->mempool;
    inst = mono_mempool_alloc (D.47068, 80);
    inst->data.op[1].const_val = 0;
    D.47069 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47069;
    inst->prev = 0B;
    D.47070 = inst->prev;
    inst->next = D.47070;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47071 = inst->sreg3;
    inst->sreg2 = D.47071;
    D.47072 = inst->sreg2;
    inst->sreg1 = D.47072;
    D.47073 = cfg->ip;
    inst->cil_code = D.47073;
    inst->dreg = ibitmap_reg;
    inst->sreg1 = base_reg;
    D.47074 = (long int) offset;
    inst->data.op[0].const_val = D.47074;
    D.47075 = cfg->cbb;
    D.47076 = D.47075->last_ins;
    if (D.47076 != 0B) goto <D.47077>; else goto <D.47078>;
    <D.47077>:
    D.47075 = cfg->cbb;
    D.47076 = D.47075->last_ins;
    D.47076->next = inst;
    D.47075 = cfg->cbb;
    D.47076 = D.47075->last_ins;
    inst->prev = D.47076;
    D.47075 = cfg->cbb;
    D.47075->last_ins = inst;
    goto <D.47079>;
    <D.47078>:
    D.47075 = cfg->cbb;
    D.47075 = cfg->cbb;
    D.47075->last_ins = inst;
    D.47076 = D.47075->last_ins;
    D.47075->code = D.47076;
    <D.47079>:
  }
  D.47080 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.47081 = D.47080 & 64;
  if (D.47081 != 0) goto <D.47082>; else goto <D.47083>;
  <D.47082>:
  {
    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.47084 = alloc_preg (cfg);
    iid_reg = (int) D.47084;
    D.47085 = alloc_preg (cfg);
    shifted_iid_reg = (int) D.47085;
    D.47086 = alloc_preg (cfg);
    ibitmap_byte_address_reg = (int) D.47086;
    D.47087 = alloc_preg (cfg);
    masked_iid_reg = (int) D.47087;
    D.47088 = alloc_preg (cfg);
    iid_one_bit_reg = (int) D.47088;
    D.47089 = alloc_preg (cfg);
    iid_bit_reg = (int) D.47089;
    {
      struct MonoInst * inst;

      D.47068 = cfg->mempool;
      inst = mono_mempool_alloc (D.47068, 80);
      inst->data.op[1].const_val = 0;
      D.47090 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47090;
      inst->prev = 0B;
      D.47091 = inst->prev;
      inst->next = D.47091;
      D.47080 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.47081 = D.47080 & 64;
      if (D.47081 != 0) goto <D.47093>; else goto <D.47094>;
      <D.47093>:
      iftmp.429 = 736;
      goto <D.47095>;
      <D.47094>:
      iftmp.429 = 363;
      <D.47095>:
      inst->opcode = iftmp.429;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47096 = inst->sreg3;
      inst->sreg2 = D.47096;
      D.47097 = inst->sreg2;
      inst->sreg1 = D.47097;
      D.47073 = cfg->ip;
      inst->cil_code = D.47073;
      inst->dreg = iid_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 23;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      if (D.47076 != 0B) goto <D.47098>; else goto <D.47099>;
      <D.47098>:
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      D.47076->next = inst;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      inst->prev = D.47076;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      goto <D.47100>;
      <D.47099>:
      D.47075 = cfg->cbb;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      D.47076 = D.47075->last_ins;
      D.47075->code = D.47076;
      <D.47100>:
    }
    {
      struct MonoInst * inst;

      D.47068 = cfg->mempool;
      inst = mono_mempool_alloc (D.47068, 80);
      inst->data.op[1].const_val = 0;
      D.47101 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47101;
      inst->prev = 0B;
      D.47102 = inst->prev;
      inst->next = D.47102;
      inst->opcode = 444;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47103 = inst->sreg3;
      inst->sreg2 = D.47103;
      D.47104 = inst->sreg2;
      inst->sreg1 = D.47104;
      D.47073 = cfg->ip;
      inst->cil_code = D.47073;
      inst->dreg = shifted_iid_reg;
      inst->sreg1 = iid_reg;
      inst->data.op[1].const_val = 3;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      if (D.47076 != 0B) goto <D.47105>; else goto <D.47106>;
      <D.47105>:
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      D.47076->next = inst;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      inst->prev = D.47076;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      goto <D.47107>;
      <D.47106>:
      D.47075 = cfg->cbb;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      D.47076 = D.47075->last_ins;
      D.47075->code = D.47076;
      <D.47107>:
    }
    {
      struct MonoInst * inst;

      D.47068 = cfg->mempool;
      inst = mono_mempool_alloc (D.47068, 80);
      inst->data.op[1].const_val = 0;
      D.47108 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47108;
      inst->prev = 0B;
      D.47109 = inst->prev;
      inst->next = D.47109;
      inst->opcode = 483;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47110 = inst->sreg3;
      inst->sreg2 = D.47110;
      D.47111 = inst->sreg2;
      inst->sreg1 = D.47111;
      D.47073 = cfg->ip;
      inst->cil_code = D.47073;
      inst->dreg = ibitmap_byte_address_reg;
      inst->sreg1 = ibitmap_reg;
      inst->sreg2 = shifted_iid_reg;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      if (D.47076 != 0B) goto <D.47112>; else goto <D.47113>;
      <D.47112>:
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      D.47076->next = inst;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      inst->prev = D.47076;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      goto <D.47114>;
      <D.47113>:
      D.47075 = cfg->cbb;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      D.47076 = D.47075->last_ins;
      D.47075->code = D.47076;
      <D.47114>:
    }
    {
      struct MonoInst * inst;

      D.47068 = cfg->mempool;
      inst = mono_mempool_alloc (D.47068, 80);
      inst->data.op[1].const_val = 0;
      D.47115 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47115;
      inst->prev = 0B;
      D.47116 = inst->prev;
      inst->next = D.47116;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47117 = inst->sreg3;
      inst->sreg2 = D.47117;
      D.47118 = inst->sreg2;
      inst->sreg1 = D.47118;
      D.47073 = cfg->ip;
      inst->cil_code = D.47073;
      inst->dreg = ibitmap_byte_reg;
      inst->sreg1 = ibitmap_byte_address_reg;
      inst->data.op[0].const_val = 0;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      if (D.47076 != 0B) goto <D.47119>; else goto <D.47120>;
      <D.47119>:
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      D.47076->next = inst;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      inst->prev = D.47076;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      goto <D.47121>;
      <D.47120>:
      D.47075 = cfg->cbb;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      D.47076 = D.47075->last_ins;
      D.47075->code = D.47076;
      <D.47121>:
    }
    {
      struct MonoInst * inst;

      D.47068 = cfg->mempool;
      inst = mono_mempool_alloc (D.47068, 80);
      inst->data.op[1].const_val = 0;
      D.47122 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47122;
      inst->prev = 0B;
      D.47123 = inst->prev;
      inst->next = D.47123;
      inst->opcode = 636;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47124 = inst->sreg3;
      inst->sreg2 = D.47124;
      D.47125 = inst->sreg2;
      inst->sreg1 = D.47125;
      D.47073 = cfg->ip;
      inst->cil_code = D.47073;
      inst->dreg = masked_iid_reg;
      inst->sreg1 = iid_reg;
      inst->data.op[1].const_val = 7;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      if (D.47076 != 0B) goto <D.47126>; else goto <D.47127>;
      <D.47126>:
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      D.47076->next = inst;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      inst->prev = D.47076;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      goto <D.47128>;
      <D.47127>:
      D.47075 = cfg->cbb;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      D.47076 = D.47075->last_ins;
      D.47075->code = D.47076;
      <D.47128>:
    }
    {
      struct MonoInst * inst;

      D.47068 = cfg->mempool;
      inst = mono_mempool_alloc (D.47068, 80);
      inst->data.op[1].const_val = 0;
      D.47129 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47129;
      inst->prev = 0B;
      D.47130 = inst->prev;
      inst->next = D.47130;
      inst->opcode = 362;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47131 = inst->sreg3;
      inst->sreg2 = D.47131;
      D.47132 = inst->sreg2;
      inst->sreg1 = D.47132;
      D.47073 = cfg->ip;
      inst->cil_code = D.47073;
      inst->dreg = iid_one_bit_reg;
      inst->data.op[0].const_val = 1;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      if (D.47076 != 0B) goto <D.47133>; else goto <D.47134>;
      <D.47133>:
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      D.47076->next = inst;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      inst->prev = D.47076;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      goto <D.47135>;
      <D.47134>:
      D.47075 = cfg->cbb;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      D.47076 = D.47075->last_ins;
      D.47075->code = D.47076;
      <D.47135>:
    }
    {
      struct MonoInst * inst;

      D.47068 = cfg->mempool;
      inst = mono_mempool_alloc (D.47068, 80);
      inst->data.op[1].const_val = 0;
      D.47136 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47136;
      inst->prev = 0B;
      D.47137 = inst->prev;
      inst->next = D.47137;
      inst->opcode = 579;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47138 = inst->sreg3;
      inst->sreg2 = D.47138;
      D.47139 = inst->sreg2;
      inst->sreg1 = D.47139;
      D.47073 = cfg->ip;
      inst->cil_code = D.47073;
      inst->dreg = iid_bit_reg;
      inst->sreg1 = iid_one_bit_reg;
      inst->sreg2 = masked_iid_reg;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      if (D.47076 != 0B) goto <D.47140>; else goto <D.47141>;
      <D.47140>:
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      D.47076->next = inst;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      inst->prev = D.47076;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      goto <D.47142>;
      <D.47141>:
      D.47075 = cfg->cbb;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      D.47076 = D.47075->last_ins;
      D.47075->code = D.47076;
      <D.47142>:
    }
    {
      struct MonoInst * inst;

      D.47068 = cfg->mempool;
      inst = mono_mempool_alloc (D.47068, 80);
      inst->data.op[1].const_val = 0;
      D.47143 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47143;
      inst->prev = 0B;
      D.47144 = inst->prev;
      inst->next = D.47144;
      inst->opcode = 576;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47145 = inst->sreg3;
      inst->sreg2 = D.47145;
      D.47146 = inst->sreg2;
      inst->sreg1 = D.47146;
      D.47073 = cfg->ip;
      inst->cil_code = D.47073;
      inst->dreg = intf_bit_reg;
      inst->sreg1 = ibitmap_byte_reg;
      inst->sreg2 = iid_bit_reg;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      if (D.47076 != 0B) goto <D.47147>; else goto <D.47148>;
      <D.47147>:
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      D.47076->next = inst;
      D.47075 = cfg->cbb;
      D.47076 = D.47075->last_ins;
      inst->prev = D.47076;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      goto <D.47149>;
      <D.47148>:
      D.47075 = cfg->cbb;
      D.47075 = cfg->cbb;
      D.47075->last_ins = inst;
      D.47076 = D.47075->last_ins;
      D.47075->code = D.47076;
      <D.47149>:
    }
  }
  goto <D.47150>;
  <D.47083>:
  {
    struct MonoInst * inst;

    D.47068 = cfg->mempool;
    inst = mono_mempool_alloc (D.47068, 80);
    inst->data.op[1].const_val = 0;
    D.47151 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47151;
    inst->prev = 0B;
    D.47152 = inst->prev;
    inst->next = D.47152;
    inst->opcode = 392;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47153 = inst->sreg3;
    inst->sreg2 = D.47153;
    D.47154 = inst->sreg2;
    inst->sreg1 = D.47154;
    D.47073 = cfg->ip;
    inst->cil_code = D.47073;
    inst->dreg = ibitmap_byte_reg;
    inst->sreg1 = ibitmap_reg;
    D.47155 = klass->interface_id;
    D.47156 = D.47155 >> 3;
    D.47157 = (long int) D.47156;
    inst->data.op[0].const_val = D.47157;
    D.47075 = cfg->cbb;
    D.47076 = D.47075->last_ins;
    if (D.47076 != 0B) goto <D.47158>; else goto <D.47159>;
    <D.47158>:
    D.47075 = cfg->cbb;
    D.47076 = D.47075->last_ins;
    D.47076->next = inst;
    D.47075 = cfg->cbb;
    D.47076 = D.47075->last_ins;
    inst->prev = D.47076;
    D.47075 = cfg->cbb;
    D.47075->last_ins = inst;
    goto <D.47160>;
    <D.47159>:
    D.47075 = cfg->cbb;
    D.47075 = cfg->cbb;
    D.47075->last_ins = inst;
    D.47076 = D.47075->last_ins;
    D.47075->code = D.47076;
    <D.47160>:
  }
  {
    struct MonoInst * inst;

    D.47068 = cfg->mempool;
    inst = mono_mempool_alloc (D.47068, 80);
    inst->data.op[1].const_val = 0;
    D.47161 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47161;
    inst->prev = 0B;
    D.47162 = inst->prev;
    inst->next = D.47162;
    inst->opcode = 440;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47163 = inst->sreg3;
    inst->sreg2 = D.47163;
    D.47164 = inst->sreg2;
    inst->sreg1 = D.47164;
    D.47073 = cfg->ip;
    inst->cil_code = D.47073;
    inst->dreg = intf_bit_reg;
    inst->sreg1 = ibitmap_byte_reg;
    D.47155 = klass->interface_id;
    D.47165 = (int) D.47155;
    D.47166 = D.47165 & 7;
    D.47167 = 1 << D.47166;
    D.47168 = (long int) D.47167;
    inst->data.op[1].const_val = D.47168;
    D.47075 = cfg->cbb;
    D.47076 = D.47075->last_ins;
    if (D.47076 != 0B) goto <D.47169>; else goto <D.47170>;
    <D.47169>:
    D.47075 = cfg->cbb;
    D.47076 = D.47075->last_ins;
    D.47076->next = inst;
    D.47075 = cfg->cbb;
    D.47076 = D.47075->last_ins;
    inst->prev = D.47076;
    D.47075 = cfg->cbb;
    D.47075->last_ins = inst;
    goto <D.47171>;
    <D.47170>:
    D.47075 = cfg->cbb;
    D.47075 = cfg->cbb;
    D.47075->last_ins = inst;
    D.47076 = D.47075->last_ins;
    D.47075->code = D.47076;
    <D.47171>:
  }
  <D.47150>:
}


mini_emit_class_check_branch (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, int branch_op, struct MonoBasicBlock * target)
{
  unsigned char D.47172;
  unsigned char D.47173;
  unsigned int D.47176;
  struct MonoMemPool * D.47177;
  long int D.47178;
  struct MonoInst * D.47179;
  guint16 iftmp.430;
  int D.47184;
  int D.47185;
  const unsigned char * D.47186;
  struct MonoBasicBlock * D.47187;
  struct MonoInst * D.47188;
  long int D.47192;
  struct MonoInst * D.47193;
  int D.47194;
  int D.47195;
  long int D.47200;
  struct MonoInst * D.47201;
  int D.47202;
  int D.47203;
  long int klass.431;
  long int D.47208;
  struct MonoInst * D.47209;
  short unsigned int D.47210;
  int D.47211;
  int D.47212;
  unsigned int D.47215;
  unsigned int D.47216;
  unsigned int D.47217;
  int D.47218;
  unsigned char * D.47222;
  struct MonoBasicBlock * * D.47225;
  long int D.47226;
  unsigned char * D.47227;
  long int D.47228;
  long int D.47229;
  long unsigned int D.47230;
  long unsigned int D.47231;
  struct MonoBasicBlock * * D.47232;
  unsigned int D.47233;
  short unsigned int D.47238;
  short unsigned int D.47239;
  _Bool D.47240;
  short unsigned int D.47241;
  _Bool D.47242;
  _Bool D.47243;
  short unsigned int D.47245;
  short unsigned int D.47246;
  struct MonoBasicBlock * * D.47247;
  struct MonoBasicBlock * * D.47248;
  struct MonoBasicBlock * D.47249;
  short unsigned int D.47254;
  _Bool D.47255;
  _Bool D.47256;
  _Bool D.47257;
  short unsigned int D.47259;
  short unsigned int D.47260;
  _Bool D.47261;
  short unsigned int D.47262;
  _Bool D.47263;
  _Bool D.47264;
  void * D.47267;
  struct MonoBasicBlock * * D.47268;
  struct MonoBasicBlock * * D.47269;
  unsigned char D.47273;
  unsigned int D.47276;
  unsigned int D.47277;
  int D.47278;
  short unsigned int D.47285;
  short unsigned int D.47286;
  _Bool D.47287;
  short unsigned int D.47288;
  _Bool D.47289;
  _Bool D.47290;
  short unsigned int D.47296;
  _Bool D.47297;
  _Bool D.47298;
  _Bool D.47299;
  short unsigned int D.47301;
  short unsigned int D.47302;
  _Bool D.47303;
  short unsigned int D.47304;
  _Bool D.47305;
  _Bool D.47306;

  D.47172 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.47173 = D.47172 & 64;
  if (D.47173 != 0) goto <D.47174>; else goto <D.47175>;
  <D.47174>:
  {
    int const_reg;

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

      D.47177 = cfg->mempool;
      inst = mono_mempool_alloc (D.47177, 80);
      inst->data.op[1].const_val = 0;
      D.47178 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47178;
      inst->prev = 0B;
      D.47179 = inst->prev;
      inst->next = D.47179;
      D.47172 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.47173 = D.47172 & 64;
      if (D.47173 != 0) goto <D.47181>; else goto <D.47182>;
      <D.47181>:
      iftmp.430 = 736;
      goto <D.47183>;
      <D.47182>:
      iftmp.430 = 363;
      <D.47183>:
      inst->opcode = iftmp.430;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47184 = inst->sreg3;
      inst->sreg2 = D.47184;
      D.47185 = inst->sreg2;
      inst->sreg1 = D.47185;
      D.47186 = cfg->ip;
      inst->cil_code = D.47186;
      inst->dreg = const_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 11;
      D.47187 = cfg->cbb;
      D.47188 = D.47187->last_ins;
      if (D.47188 != 0B) goto <D.47189>; else goto <D.47190>;
      <D.47189>:
      D.47187 = cfg->cbb;
      D.47188 = D.47187->last_ins;
      D.47188->next = inst;
      D.47187 = cfg->cbb;
      D.47188 = D.47187->last_ins;
      inst->prev = D.47188;
      D.47187 = cfg->cbb;
      D.47187->last_ins = inst;
      goto <D.47191>;
      <D.47190>:
      D.47187 = cfg->cbb;
      D.47187 = cfg->cbb;
      D.47187->last_ins = inst;
      D.47188 = D.47187->last_ins;
      D.47187->code = D.47188;
      <D.47191>:
    }
    {
      struct MonoInst * inst;

      D.47177 = cfg->mempool;
      inst = mono_mempool_alloc (D.47177, 80);
      inst->data.op[1].const_val = 0;
      D.47192 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47192;
      inst->prev = 0B;
      D.47193 = inst->prev;
      inst->next = D.47193;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47194 = inst->sreg3;
      inst->sreg2 = D.47194;
      D.47195 = inst->sreg2;
      inst->sreg1 = D.47195;
      D.47186 = cfg->ip;
      inst->cil_code = D.47186;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      inst->sreg2 = const_reg;
      D.47187 = cfg->cbb;
      D.47188 = D.47187->last_ins;
      if (D.47188 != 0B) goto <D.47196>; else goto <D.47197>;
      <D.47196>:
      D.47187 = cfg->cbb;
      D.47188 = D.47187->last_ins;
      D.47188->next = inst;
      D.47187 = cfg->cbb;
      D.47188 = D.47187->last_ins;
      inst->prev = D.47188;
      D.47187 = cfg->cbb;
      D.47187->last_ins = inst;
      goto <D.47198>;
      <D.47197>:
      D.47187 = cfg->cbb;
      D.47187 = cfg->cbb;
      D.47187->last_ins = inst;
      D.47188 = D.47187->last_ins;
      D.47187->code = D.47188;
      <D.47198>:
    }
  }
  goto <D.47199>;
  <D.47175>:
  {
    struct MonoInst * inst;

    D.47177 = cfg->mempool;
    inst = mono_mempool_alloc (D.47177, 80);
    inst->data.op[1].const_val = 0;
    D.47200 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47200;
    inst->prev = 0B;
    D.47201 = inst->prev;
    inst->next = D.47201;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47202 = inst->sreg3;
    inst->sreg2 = D.47202;
    D.47203 = inst->sreg2;
    inst->sreg1 = D.47203;
    D.47186 = cfg->ip;
    inst->cil_code = D.47186;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    klass.431 = (long int) klass;
    inst->data.op[1].const_val = klass.431;
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    if (D.47188 != 0B) goto <D.47205>; else goto <D.47206>;
    <D.47205>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47188->next = inst;
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    inst->prev = D.47188;
    D.47187 = cfg->cbb;
    D.47187->last_ins = inst;
    goto <D.47207>;
    <D.47206>:
    D.47187 = cfg->cbb;
    D.47187 = cfg->cbb;
    D.47187->last_ins = inst;
    D.47188 = D.47187->last_ins;
    D.47187->code = D.47188;
    <D.47207>:
  }
  <D.47199>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47177 = cfg->mempool;
    ins = mono_mempool_alloc (D.47177, 80);
    ins->data.op[1].const_val = 0;
    D.47208 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47208;
    ins->prev = 0B;
    D.47209 = ins->prev;
    ins->next = D.47209;
    D.47210 = (short unsigned int) branch_op;
    ins->opcode = D.47210;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47211 = ins->sreg3;
    ins->sreg2 = D.47211;
    D.47212 = ins->sreg2;
    ins->sreg1 = D.47212;
    D.47186 = cfg->ip;
    ins->cil_code = D.47186;
    if (branch_op == 446) goto <D.47213>; else goto <D.47214>;
    <D.47213>:
    D.47177 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47177, 296);
    D.47215 = cfg->num_bblocks;
    D.47216 = D.47215;
    D.47217 = D.47216 + 1;
    cfg->num_bblocks = D.47217;
    D.47218 = (int) D.47216;
    falsebb->block_num = D.47218;
    ins->data.op[0].target_block = target;
    D.47187 = cfg->cbb;
    mono_link_bblock (cfg, D.47187, target);
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    if (D.47188 != 0B) goto <D.47219>; else goto <D.47220>;
    <D.47219>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47188->next = ins;
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    ins->prev = D.47188;
    D.47187 = cfg->cbb;
    D.47187->last_ins = ins;
    goto <D.47221>;
    <D.47220>:
    D.47187 = cfg->cbb;
    D.47187 = cfg->cbb;
    D.47187->last_ins = ins;
    D.47188 = D.47187->last_ins;
    D.47187->code = D.47188;
    <D.47221>:
    D.47222 = falsebb->cil_code;
    if (D.47222 != 0B) goto <D.47223>; else goto <D.47224>;
    <D.47223>:
    D.47225 = cfg->cil_offset_to_bb;
    D.47222 = falsebb->cil_code;
    D.47226 = (long int) D.47222;
    D.47227 = cfg->cil_start;
    D.47228 = (long int) D.47227;
    D.47229 = D.47226 - D.47228;
    D.47230 = (long unsigned int) D.47229;
    D.47231 = D.47230 * 8;
    D.47232 = D.47225 + D.47231;
    *D.47232 = falsebb;
    <D.47224>:
    D.47233 = cfg->real_offset;
    falsebb->real_offset = D.47233;
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    if (D.47188 != 0B) goto <D.47237>; else goto <D.47234>;
    <D.47237>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47238 = D.47188->opcode;
    D.47239 = D.47238 + 64981;
    D.47240 = D.47239 <= 9;
    D.47241 = D.47238 + 64874;
    D.47242 = D.47241 <= 9;
    D.47243 = D.47240 | D.47242;
    if (D.47243 != 0) goto <D.47235>; else goto <D.47244>;
    <D.47244>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47245 = D.47188->opcode;
    D.47246 = D.47245 + 64884;
    if (D.47246 <= 9) goto <D.47235>; else goto <D.47234>;
    <D.47235>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47247 = D.47188->data.op[1].many_blocks;
    D.47248 = D.47247 + 8;
    D.47249 = *D.47248;
    if (D.47249 == 0B) goto <D.47250>; else goto <D.47234>;
    <D.47250>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47247 = D.47188->data.op[1].many_blocks;
    D.47248 = D.47247 + 8;
    *D.47248 = falsebb;
    D.47187 = cfg->cbb;
    mono_link_bblock (cfg, D.47187, falsebb);
    goto <D.47236>;
    <D.47234>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    if (D.47188 == 0B) goto <D.47251>; else goto <D.47253>;
    <D.47253>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47254 = D.47188->opcode;
    D.47255 = D.47254 != 446;
    D.47256 = D.47254 != 763;
    D.47257 = D.47255 & D.47256;
    if (D.47257 != 0) goto <D.47258>; else goto <D.47252>;
    <D.47258>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47259 = D.47188->opcode;
    D.47260 = D.47259 + 64981;
    D.47261 = D.47260 > 9;
    D.47262 = D.47259 + 64874;
    D.47263 = D.47262 > 9;
    D.47264 = D.47261 & D.47263;
    if (D.47264 != 0) goto <D.47265>; else goto <D.47252>;
    <D.47265>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47245 = D.47188->opcode;
    D.47246 = D.47245 + 64884;
    if (D.47246 > 9) goto <D.47251>; else goto <D.47252>;
    <D.47251>:
    D.47187 = cfg->cbb;
    mono_link_bblock (cfg, D.47187, falsebb);
    <D.47252>:
    <D.47236>:
    D.47187 = cfg->cbb;
    D.47187->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47266>;
    <D.47214>:
    D.47177 = cfg->mempool;
    D.47267 = mono_mempool_alloc (D.47177, 16);
    ins->data.op[1].many_blocks = D.47267;
    D.47268 = ins->data.op[1].many_blocks;
    *D.47268 = target;
    D.47268 = ins->data.op[1].many_blocks;
    D.47269 = D.47268 + 8;
    *D.47269 = 0B;
    D.47187 = cfg->cbb;
    mono_link_bblock (cfg, D.47187, target);
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    if (D.47188 != 0B) goto <D.47270>; else goto <D.47271>;
    <D.47270>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47188->next = ins;
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    ins->prev = D.47188;
    D.47187 = cfg->cbb;
    D.47187->last_ins = ins;
    goto <D.47272>;
    <D.47271>:
    D.47187 = cfg->cbb;
    D.47187 = cfg->cbb;
    D.47187->last_ins = ins;
    D.47188 = D.47187->last_ins;
    D.47187->code = D.47188;
    <D.47272>:
    D.47172 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.47273 = D.47172 & 8;
    if (D.47273 == 0) goto <D.47274>; else goto <D.47275>;
    <D.47274>:
    D.47177 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47177, 296);
    D.47215 = cfg->num_bblocks;
    D.47276 = D.47215;
    D.47277 = D.47276 + 1;
    cfg->num_bblocks = D.47277;
    D.47278 = (int) D.47276;
    falsebb->block_num = D.47278;
    D.47268 = ins->data.op[1].many_blocks;
    D.47269 = D.47268 + 8;
    *D.47269 = falsebb;
    D.47187 = cfg->cbb;
    mono_link_bblock (cfg, D.47187, falsebb);
    D.47222 = falsebb->cil_code;
    if (D.47222 != 0B) goto <D.47279>; else goto <D.47280>;
    <D.47279>:
    D.47225 = cfg->cil_offset_to_bb;
    D.47222 = falsebb->cil_code;
    D.47226 = (long int) D.47222;
    D.47227 = cfg->cil_start;
    D.47228 = (long int) D.47227;
    D.47229 = D.47226 - D.47228;
    D.47230 = (long unsigned int) D.47229;
    D.47231 = D.47230 * 8;
    D.47232 = D.47225 + D.47231;
    *D.47232 = falsebb;
    <D.47280>:
    D.47233 = cfg->real_offset;
    falsebb->real_offset = D.47233;
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    if (D.47188 != 0B) goto <D.47284>; else goto <D.47281>;
    <D.47284>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47285 = D.47188->opcode;
    D.47286 = D.47285 + 64981;
    D.47287 = D.47286 <= 9;
    D.47288 = D.47285 + 64874;
    D.47289 = D.47288 <= 9;
    D.47290 = D.47287 | D.47289;
    if (D.47290 != 0) goto <D.47282>; else goto <D.47291>;
    <D.47291>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47245 = D.47188->opcode;
    D.47246 = D.47245 + 64884;
    if (D.47246 <= 9) goto <D.47282>; else goto <D.47281>;
    <D.47282>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47247 = D.47188->data.op[1].many_blocks;
    D.47248 = D.47247 + 8;
    D.47249 = *D.47248;
    if (D.47249 == 0B) goto <D.47292>; else goto <D.47281>;
    <D.47292>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47247 = D.47188->data.op[1].many_blocks;
    D.47248 = D.47247 + 8;
    *D.47248 = falsebb;
    D.47187 = cfg->cbb;
    mono_link_bblock (cfg, D.47187, falsebb);
    goto <D.47283>;
    <D.47281>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    if (D.47188 == 0B) goto <D.47293>; else goto <D.47295>;
    <D.47295>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47296 = D.47188->opcode;
    D.47297 = D.47296 != 446;
    D.47298 = D.47296 != 763;
    D.47299 = D.47297 & D.47298;
    if (D.47299 != 0) goto <D.47300>; else goto <D.47294>;
    <D.47300>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47301 = D.47188->opcode;
    D.47302 = D.47301 + 64981;
    D.47303 = D.47302 > 9;
    D.47304 = D.47301 + 64874;
    D.47305 = D.47304 > 9;
    D.47306 = D.47303 & D.47305;
    if (D.47306 != 0) goto <D.47307>; else goto <D.47294>;
    <D.47307>:
    D.47187 = cfg->cbb;
    D.47188 = D.47187->last_ins;
    D.47245 = D.47188->opcode;
    D.47246 = D.47245 + 64884;
    if (D.47246 > 9) goto <D.47293>; else goto <D.47294>;
    <D.47293>:
    D.47187 = cfg->cbb;
    mono_link_bblock (cfg, D.47187, falsebb);
    <D.47294>:
    <D.47283>:
    D.47187 = cfg->cbb;
    D.47187->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47308>;
    <D.47275>:
    D.47187 = cfg->cbb;
    D.47187->extended = 1;
    <D.47308>:
    <D.47266>:
  }
}


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.47309;
  struct MonoMemPool * D.47310;
  long int D.47311;
  struct MonoInst * D.47312;
  int D.47313;
  int D.47314;
  const unsigned char * D.47315;
  struct MonoBasicBlock * D.47316;
  struct MonoInst * D.47317;
  long int D.47323;
  struct MonoInst * D.47324;
  int D.47325;
  int D.47326;
  unsigned int D.47329;
  unsigned int D.47330;
  unsigned int D.47331;
  int D.47332;
  unsigned char * D.47336;
  struct MonoBasicBlock * * D.47339;
  long int D.47340;
  unsigned char * D.47341;
  long int D.47342;
  long int D.47343;
  long unsigned int D.47344;
  long unsigned int D.47345;
  struct MonoBasicBlock * * D.47346;
  unsigned int D.47347;
  short unsigned int D.47352;
  short unsigned int D.47353;
  _Bool D.47354;
  short unsigned int D.47355;
  _Bool D.47356;
  _Bool D.47357;
  short unsigned int D.47359;
  short unsigned int D.47360;
  struct MonoBasicBlock * * D.47361;
  struct MonoBasicBlock * * D.47362;
  struct MonoBasicBlock * D.47363;
  short unsigned int D.47368;
  _Bool D.47369;
  _Bool D.47370;
  _Bool D.47371;
  short unsigned int D.47373;
  short unsigned int D.47374;
  _Bool D.47375;
  short unsigned int D.47376;
  _Bool D.47377;
  _Bool D.47378;
  void * D.47381;
  struct MonoBasicBlock * * D.47382;
  struct MonoBasicBlock * * D.47383;
  unsigned char D.47387;
  unsigned char D.47388;
  unsigned int D.47391;
  unsigned int D.47392;
  int D.47393;
  short unsigned int D.47400;
  short unsigned int D.47401;
  _Bool D.47402;
  short unsigned int D.47403;
  _Bool D.47404;
  _Bool D.47405;
  short unsigned int D.47411;
  _Bool D.47412;
  _Bool D.47413;
  _Bool D.47414;
  short unsigned int D.47416;
  short unsigned int D.47417;
  _Bool D.47418;
  short unsigned int D.47419;
  _Bool D.47420;
  _Bool D.47421;
  long int D.47425;
  struct MonoInst * D.47426;
  int D.47427;
  int D.47428;
  int intf_bit_reg;

  D.47309 = alloc_preg (cfg);
  intf_bit_reg = (int) D.47309;
  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.47310 = cfg->mempool;
    inst = mono_mempool_alloc (D.47310, 80);
    inst->data.op[1].const_val = 0;
    D.47311 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47311;
    inst->prev = 0B;
    D.47312 = inst->prev;
    inst->next = D.47312;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47313 = inst->sreg3;
    inst->sreg2 = D.47313;
    D.47314 = inst->sreg2;
    inst->sreg1 = D.47314;
    D.47315 = cfg->ip;
    inst->cil_code = D.47315;
    inst->dreg = -1;
    inst->sreg1 = intf_bit_reg;
    inst->data.op[1].const_val = 0;
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    if (D.47317 != 0B) goto <D.47318>; else goto <D.47319>;
    <D.47318>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47317->next = inst;
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    inst->prev = D.47317;
    D.47316 = cfg->cbb;
    D.47316->last_ins = inst;
    goto <D.47320>;
    <D.47319>:
    D.47316 = cfg->cbb;
    D.47316 = cfg->cbb;
    D.47316->last_ins = inst;
    D.47317 = D.47316->last_ins;
    D.47316->code = D.47317;
    <D.47320>:
  }
  if (true_target != 0B) goto <D.47321>; else goto <D.47322>;
  <D.47321>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47310 = cfg->mempool;
    ins = mono_mempool_alloc (D.47310, 80);
    ins->data.op[1].const_val = 0;
    D.47323 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47323;
    ins->prev = 0B;
    D.47324 = ins->prev;
    ins->next = D.47324;
    ins->opcode = 560;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47325 = ins->sreg3;
    ins->sreg2 = D.47325;
    D.47326 = ins->sreg2;
    ins->sreg1 = D.47326;
    D.47315 = cfg->ip;
    ins->cil_code = D.47315;
    if (0 != 0) goto <D.47327>; else goto <D.47328>;
    <D.47327>:
    D.47310 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47310, 296);
    D.47329 = cfg->num_bblocks;
    D.47330 = D.47329;
    D.47331 = D.47330 + 1;
    cfg->num_bblocks = D.47331;
    D.47332 = (int) D.47330;
    falsebb->block_num = D.47332;
    ins->data.op[0].target_block = true_target;
    D.47316 = cfg->cbb;
    mono_link_bblock (cfg, D.47316, true_target);
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    if (D.47317 != 0B) goto <D.47333>; else goto <D.47334>;
    <D.47333>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47317->next = ins;
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    ins->prev = D.47317;
    D.47316 = cfg->cbb;
    D.47316->last_ins = ins;
    goto <D.47335>;
    <D.47334>:
    D.47316 = cfg->cbb;
    D.47316 = cfg->cbb;
    D.47316->last_ins = ins;
    D.47317 = D.47316->last_ins;
    D.47316->code = D.47317;
    <D.47335>:
    D.47336 = falsebb->cil_code;
    if (D.47336 != 0B) goto <D.47337>; else goto <D.47338>;
    <D.47337>:
    D.47339 = cfg->cil_offset_to_bb;
    D.47336 = falsebb->cil_code;
    D.47340 = (long int) D.47336;
    D.47341 = cfg->cil_start;
    D.47342 = (long int) D.47341;
    D.47343 = D.47340 - D.47342;
    D.47344 = (long unsigned int) D.47343;
    D.47345 = D.47344 * 8;
    D.47346 = D.47339 + D.47345;
    *D.47346 = falsebb;
    <D.47338>:
    D.47347 = cfg->real_offset;
    falsebb->real_offset = D.47347;
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    if (D.47317 != 0B) goto <D.47351>; else goto <D.47348>;
    <D.47351>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47352 = D.47317->opcode;
    D.47353 = D.47352 + 64981;
    D.47354 = D.47353 <= 9;
    D.47355 = D.47352 + 64874;
    D.47356 = D.47355 <= 9;
    D.47357 = D.47354 | D.47356;
    if (D.47357 != 0) goto <D.47349>; else goto <D.47358>;
    <D.47358>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47359 = D.47317->opcode;
    D.47360 = D.47359 + 64884;
    if (D.47360 <= 9) goto <D.47349>; else goto <D.47348>;
    <D.47349>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47361 = D.47317->data.op[1].many_blocks;
    D.47362 = D.47361 + 8;
    D.47363 = *D.47362;
    if (D.47363 == 0B) goto <D.47364>; else goto <D.47348>;
    <D.47364>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47361 = D.47317->data.op[1].many_blocks;
    D.47362 = D.47361 + 8;
    *D.47362 = falsebb;
    D.47316 = cfg->cbb;
    mono_link_bblock (cfg, D.47316, falsebb);
    goto <D.47350>;
    <D.47348>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    if (D.47317 == 0B) goto <D.47365>; else goto <D.47367>;
    <D.47367>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47368 = D.47317->opcode;
    D.47369 = D.47368 != 446;
    D.47370 = D.47368 != 763;
    D.47371 = D.47369 & D.47370;
    if (D.47371 != 0) goto <D.47372>; else goto <D.47366>;
    <D.47372>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47373 = D.47317->opcode;
    D.47374 = D.47373 + 64981;
    D.47375 = D.47374 > 9;
    D.47376 = D.47373 + 64874;
    D.47377 = D.47376 > 9;
    D.47378 = D.47375 & D.47377;
    if (D.47378 != 0) goto <D.47379>; else goto <D.47366>;
    <D.47379>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47359 = D.47317->opcode;
    D.47360 = D.47359 + 64884;
    if (D.47360 > 9) goto <D.47365>; else goto <D.47366>;
    <D.47365>:
    D.47316 = cfg->cbb;
    mono_link_bblock (cfg, D.47316, falsebb);
    <D.47366>:
    <D.47350>:
    D.47316 = cfg->cbb;
    D.47316->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47380>;
    <D.47328>:
    D.47310 = cfg->mempool;
    D.47381 = mono_mempool_alloc (D.47310, 16);
    ins->data.op[1].many_blocks = D.47381;
    D.47382 = ins->data.op[1].many_blocks;
    *D.47382 = true_target;
    D.47382 = ins->data.op[1].many_blocks;
    D.47383 = D.47382 + 8;
    *D.47383 = 0B;
    D.47316 = cfg->cbb;
    mono_link_bblock (cfg, D.47316, true_target);
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    if (D.47317 != 0B) goto <D.47384>; else goto <D.47385>;
    <D.47384>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47317->next = ins;
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    ins->prev = D.47317;
    D.47316 = cfg->cbb;
    D.47316->last_ins = ins;
    goto <D.47386>;
    <D.47385>:
    D.47316 = cfg->cbb;
    D.47316 = cfg->cbb;
    D.47316->last_ins = ins;
    D.47317 = D.47316->last_ins;
    D.47316->code = D.47317;
    <D.47386>:
    D.47387 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.47388 = D.47387 & 8;
    if (D.47388 == 0) goto <D.47389>; else goto <D.47390>;
    <D.47389>:
    D.47310 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47310, 296);
    D.47329 = cfg->num_bblocks;
    D.47391 = D.47329;
    D.47392 = D.47391 + 1;
    cfg->num_bblocks = D.47392;
    D.47393 = (int) D.47391;
    falsebb->block_num = D.47393;
    D.47382 = ins->data.op[1].many_blocks;
    D.47383 = D.47382 + 8;
    *D.47383 = falsebb;
    D.47316 = cfg->cbb;
    mono_link_bblock (cfg, D.47316, falsebb);
    D.47336 = falsebb->cil_code;
    if (D.47336 != 0B) goto <D.47394>; else goto <D.47395>;
    <D.47394>:
    D.47339 = cfg->cil_offset_to_bb;
    D.47336 = falsebb->cil_code;
    D.47340 = (long int) D.47336;
    D.47341 = cfg->cil_start;
    D.47342 = (long int) D.47341;
    D.47343 = D.47340 - D.47342;
    D.47344 = (long unsigned int) D.47343;
    D.47345 = D.47344 * 8;
    D.47346 = D.47339 + D.47345;
    *D.47346 = falsebb;
    <D.47395>:
    D.47347 = cfg->real_offset;
    falsebb->real_offset = D.47347;
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    if (D.47317 != 0B) goto <D.47399>; else goto <D.47396>;
    <D.47399>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47400 = D.47317->opcode;
    D.47401 = D.47400 + 64981;
    D.47402 = D.47401 <= 9;
    D.47403 = D.47400 + 64874;
    D.47404 = D.47403 <= 9;
    D.47405 = D.47402 | D.47404;
    if (D.47405 != 0) goto <D.47397>; else goto <D.47406>;
    <D.47406>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47359 = D.47317->opcode;
    D.47360 = D.47359 + 64884;
    if (D.47360 <= 9) goto <D.47397>; else goto <D.47396>;
    <D.47397>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47361 = D.47317->data.op[1].many_blocks;
    D.47362 = D.47361 + 8;
    D.47363 = *D.47362;
    if (D.47363 == 0B) goto <D.47407>; else goto <D.47396>;
    <D.47407>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47361 = D.47317->data.op[1].many_blocks;
    D.47362 = D.47361 + 8;
    *D.47362 = falsebb;
    D.47316 = cfg->cbb;
    mono_link_bblock (cfg, D.47316, falsebb);
    goto <D.47398>;
    <D.47396>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    if (D.47317 == 0B) goto <D.47408>; else goto <D.47410>;
    <D.47410>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47411 = D.47317->opcode;
    D.47412 = D.47411 != 446;
    D.47413 = D.47411 != 763;
    D.47414 = D.47412 & D.47413;
    if (D.47414 != 0) goto <D.47415>; else goto <D.47409>;
    <D.47415>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47416 = D.47317->opcode;
    D.47417 = D.47416 + 64981;
    D.47418 = D.47417 > 9;
    D.47419 = D.47416 + 64874;
    D.47420 = D.47419 > 9;
    D.47421 = D.47418 & D.47420;
    if (D.47421 != 0) goto <D.47422>; else goto <D.47409>;
    <D.47422>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47359 = D.47317->opcode;
    D.47360 = D.47359 + 64884;
    if (D.47360 > 9) goto <D.47408>; else goto <D.47409>;
    <D.47408>:
    D.47316 = cfg->cbb;
    mono_link_bblock (cfg, D.47316, falsebb);
    <D.47409>:
    <D.47398>:
    D.47316 = cfg->cbb;
    D.47316->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47423>;
    <D.47390>:
    D.47316 = cfg->cbb;
    D.47316->extended = 1;
    <D.47423>:
    <D.47380>:
  }
  goto <D.47424>;
  <D.47322>:
  {
    struct MonoInst * inst;

    D.47310 = cfg->mempool;
    inst = mono_mempool_alloc (D.47310, 80);
    inst->data.op[1].const_val = 0;
    D.47425 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47425;
    inst->prev = 0B;
    D.47426 = inst->prev;
    inst->next = D.47426;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47427 = inst->sreg3;
    inst->sreg2 = D.47427;
    D.47428 = inst->sreg2;
    inst->sreg1 = D.47428;
    D.47315 = cfg->ip;
    inst->cil_code = D.47315;
    inst->data.op[1].p = "InvalidCastException";
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    if (D.47317 != 0B) goto <D.47429>; else goto <D.47430>;
    <D.47429>:
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    D.47317->next = inst;
    D.47316 = cfg->cbb;
    D.47317 = D.47316->last_ins;
    inst->prev = D.47317;
    D.47316 = cfg->cbb;
    D.47316->last_ins = inst;
    goto <D.47431>;
    <D.47430>:
    D.47316 = cfg->cbb;
    D.47316 = cfg->cbb;
    D.47316->last_ins = inst;
    D.47317 = D.47316->last_ins;
    D.47316->code = D.47317;
    <D.47431>:
  }
  <D.47424>:
}


mini_emit_max_iid_check_class (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass, struct MonoBasicBlock * false_target)
{
  unsigned int D.47432;
  struct MonoMemPool * D.47433;
  long int D.47434;
  struct MonoInst * D.47435;
  int D.47436;
  int D.47437;
  const unsigned char * D.47438;
  struct MonoBasicBlock * D.47439;
  struct MonoInst * D.47440;
  int max_iid_reg;

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

    D.47433 = cfg->mempool;
    inst = mono_mempool_alloc (D.47433, 80);
    inst->data.op[1].const_val = 0;
    D.47434 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47434;
    inst->prev = 0B;
    D.47435 = inst->prev;
    inst->next = D.47435;
    inst->opcode = 395;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47436 = inst->sreg3;
    inst->sreg2 = D.47436;
    D.47437 = inst->sreg2;
    inst->sreg1 = D.47437;
    D.47438 = cfg->ip;
    inst->cil_code = D.47438;
    inst->dreg = max_iid_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 92;
    D.47439 = cfg->cbb;
    D.47440 = D.47439->last_ins;
    if (D.47440 != 0B) goto <D.47441>; else goto <D.47442>;
    <D.47441>:
    D.47439 = cfg->cbb;
    D.47440 = D.47439->last_ins;
    D.47440->next = inst;
    D.47439 = cfg->cbb;
    D.47440 = D.47439->last_ins;
    inst->prev = D.47440;
    D.47439 = cfg->cbb;
    D.47439->last_ins = inst;
    goto <D.47443>;
    <D.47442>:
    D.47439 = cfg->cbb;
    D.47439 = cfg->cbb;
    D.47439->last_ins = inst;
    D.47440 = D.47439->last_ins;
    D.47439->code = D.47440;
    <D.47443>:
  }
  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, 112, 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.47444;
  unsigned int D.47445;
  unsigned int D.47446;
  short unsigned int D.47447;
  struct MonoMemPool * D.47450;
  long int D.47451;
  struct MonoInst * D.47452;
  int D.47453;
  int D.47454;
  const unsigned char * D.47455;
  struct MonoBasicBlock * D.47456;
  struct MonoInst * D.47457;
  long int D.47461;
  struct MonoInst * D.47462;
  int D.47463;
  int D.47464;
  long int D.47465;
  long int D.47469;
  struct MonoInst * D.47470;
  int D.47471;
  int D.47472;
  unsigned int D.47475;
  unsigned int D.47476;
  unsigned int D.47477;
  int D.47478;
  unsigned char * D.47482;
  struct MonoBasicBlock * * D.47485;
  long int D.47486;
  unsigned char * D.47487;
  long int D.47488;
  long int D.47489;
  long unsigned int D.47490;
  long unsigned int D.47491;
  struct MonoBasicBlock * * D.47492;
  unsigned int D.47493;
  short unsigned int D.47498;
  short unsigned int D.47499;
  _Bool D.47500;
  short unsigned int D.47501;
  _Bool D.47502;
  _Bool D.47503;
  short unsigned int D.47505;
  short unsigned int D.47506;
  struct MonoBasicBlock * * D.47507;
  struct MonoBasicBlock * * D.47508;
  struct MonoBasicBlock * D.47509;
  short unsigned int D.47514;
  _Bool D.47515;
  _Bool D.47516;
  _Bool D.47517;
  short unsigned int D.47519;
  short unsigned int D.47520;
  _Bool D.47521;
  short unsigned int D.47522;
  _Bool D.47523;
  _Bool D.47524;
  void * D.47527;
  struct MonoBasicBlock * * D.47528;
  struct MonoBasicBlock * * D.47529;
  unsigned char D.47533;
  unsigned char D.47534;
  unsigned int D.47537;
  unsigned int D.47538;
  int D.47539;
  short unsigned int D.47546;
  short unsigned int D.47547;
  _Bool D.47548;
  short unsigned int D.47549;
  _Bool D.47550;
  _Bool D.47551;
  short unsigned int D.47557;
  _Bool D.47558;
  _Bool D.47559;
  _Bool D.47560;
  short unsigned int D.47562;
  short unsigned int D.47563;
  _Bool D.47564;
  short unsigned int D.47565;
  _Bool D.47566;
  _Bool D.47567;
  long int D.47570;
  struct MonoInst * D.47571;
  int D.47572;
  int D.47573;
  long int D.47577;
  struct MonoInst * D.47578;
  int D.47579;
  int D.47580;
  int D.47581;
  int D.47582;
  int D.47583;
  long int D.47584;
  long int D.47590;
  struct MonoInst * D.47591;
  int D.47592;
  int D.47593;
  int D.47594;
  unsigned char D.47599;
  unsigned int D.47602;
  long int D.47603;
  struct MonoInst * D.47604;
  guint16 iftmp.432;
  int D.47609;
  int D.47610;
  long int D.47614;
  struct MonoInst * D.47615;
  int D.47616;
  int D.47617;
  long int D.47622;
  struct MonoInst * D.47623;
  int D.47624;
  int D.47625;
  long int klass.433;
  long int D.47630;
  struct MonoInst * D.47631;
  int D.47632;
  int D.47633;
  unsigned int D.47636;
  unsigned int D.47637;
  int D.47638;
  unsigned char * D.47642;
  long int D.47645;
  long int D.47646;
  long unsigned int D.47647;
  long unsigned int D.47648;
  struct MonoBasicBlock * * D.47649;
  short unsigned int D.47654;
  short unsigned int D.47655;
  _Bool D.47656;
  short unsigned int D.47657;
  _Bool D.47658;
  _Bool D.47659;
  short unsigned int D.47665;
  _Bool D.47666;
  _Bool D.47667;
  _Bool D.47668;
  short unsigned int D.47670;
  short unsigned int D.47671;
  _Bool D.47672;
  short unsigned int D.47673;
  _Bool D.47674;
  _Bool D.47675;
  void * D.47678;
  struct MonoBasicBlock * * D.47679;
  struct MonoBasicBlock * * D.47680;
  unsigned int D.47686;
  unsigned int D.47687;
  int D.47688;
  short unsigned int D.47695;
  short unsigned int D.47696;
  _Bool D.47697;
  short unsigned int D.47698;
  _Bool D.47699;
  _Bool D.47700;
  short unsigned int D.47706;
  _Bool D.47707;
  _Bool D.47708;
  _Bool D.47709;
  short unsigned int D.47711;
  short unsigned int D.47712;
  _Bool D.47713;
  short unsigned int D.47714;
  _Bool D.47715;
  _Bool D.47716;
  int idepth_reg;
  int stypes_reg;
  int stype;

  D.47444 = alloc_preg (cfg);
  idepth_reg = (int) D.47444;
  D.47445 = alloc_preg (cfg);
  stypes_reg = (int) D.47445;
  D.47446 = alloc_preg (cfg);
  stype = (int) D.47446;
  mono_class_setup_supertypes (klass);
  D.47447 = klass->idepth;
  if (D.47447 > 6) goto <D.47448>; else goto <D.47449>;
  <D.47448>:
  {
    struct MonoInst * inst;

    D.47450 = cfg->mempool;
    inst = mono_mempool_alloc (D.47450, 80);
    inst->data.op[1].const_val = 0;
    D.47451 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47451;
    inst->prev = 0B;
    D.47452 = inst->prev;
    inst->next = D.47452;
    inst->opcode = 395;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47453 = inst->sreg3;
    inst->sreg2 = D.47453;
    D.47454 = inst->sreg2;
    inst->sreg1 = D.47454;
    D.47455 = cfg->ip;
    inst->cil_code = D.47455;
    inst->dreg = idepth_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 24;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47458>; else goto <D.47459>;
    <D.47458>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47457->next = inst;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    inst->prev = D.47457;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    goto <D.47460>;
    <D.47459>:
    D.47456 = cfg->cbb;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    D.47457 = D.47456->last_ins;
    D.47456->code = D.47457;
    <D.47460>:
  }
  {
    struct MonoInst * inst;

    D.47450 = cfg->mempool;
    inst = mono_mempool_alloc (D.47450, 80);
    inst->data.op[1].const_val = 0;
    D.47461 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47461;
    inst->prev = 0B;
    D.47462 = inst->prev;
    inst->next = D.47462;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47463 = inst->sreg3;
    inst->sreg2 = D.47463;
    D.47464 = inst->sreg2;
    inst->sreg1 = D.47464;
    D.47455 = cfg->ip;
    inst->cil_code = D.47455;
    inst->dreg = -1;
    inst->sreg1 = idepth_reg;
    D.47447 = klass->idepth;
    D.47465 = (long int) D.47447;
    inst->data.op[1].const_val = D.47465;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47466>; else goto <D.47467>;
    <D.47466>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47457->next = inst;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    inst->prev = D.47457;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    goto <D.47468>;
    <D.47467>:
    D.47456 = cfg->cbb;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    D.47457 = D.47456->last_ins;
    D.47456->code = D.47457;
    <D.47468>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47450 = cfg->mempool;
    ins = mono_mempool_alloc (D.47450, 80);
    ins->data.op[1].const_val = 0;
    D.47469 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47469;
    ins->prev = 0B;
    D.47470 = ins->prev;
    ins->next = D.47470;
    ins->opcode = 564;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47471 = ins->sreg3;
    ins->sreg2 = D.47471;
    D.47472 = ins->sreg2;
    ins->sreg1 = D.47472;
    D.47455 = cfg->ip;
    ins->cil_code = D.47455;
    if (0 != 0) goto <D.47473>; else goto <D.47474>;
    <D.47473>:
    D.47450 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47450, 296);
    D.47475 = cfg->num_bblocks;
    D.47476 = D.47475;
    D.47477 = D.47476 + 1;
    cfg->num_bblocks = D.47477;
    D.47478 = (int) D.47476;
    falsebb->block_num = D.47478;
    ins->data.op[0].target_block = false_target;
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, false_target);
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47479>; else goto <D.47480>;
    <D.47479>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47457->next = ins;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    ins->prev = D.47457;
    D.47456 = cfg->cbb;
    D.47456->last_ins = ins;
    goto <D.47481>;
    <D.47480>:
    D.47456 = cfg->cbb;
    D.47456 = cfg->cbb;
    D.47456->last_ins = ins;
    D.47457 = D.47456->last_ins;
    D.47456->code = D.47457;
    <D.47481>:
    D.47482 = falsebb->cil_code;
    if (D.47482 != 0B) goto <D.47483>; else goto <D.47484>;
    <D.47483>:
    D.47485 = cfg->cil_offset_to_bb;
    D.47482 = falsebb->cil_code;
    D.47486 = (long int) D.47482;
    D.47487 = cfg->cil_start;
    D.47488 = (long int) D.47487;
    D.47489 = D.47486 - D.47488;
    D.47490 = (long unsigned int) D.47489;
    D.47491 = D.47490 * 8;
    D.47492 = D.47485 + D.47491;
    *D.47492 = falsebb;
    <D.47484>:
    D.47493 = cfg->real_offset;
    falsebb->real_offset = D.47493;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47497>; else goto <D.47494>;
    <D.47497>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47498 = D.47457->opcode;
    D.47499 = D.47498 + 64981;
    D.47500 = D.47499 <= 9;
    D.47501 = D.47498 + 64874;
    D.47502 = D.47501 <= 9;
    D.47503 = D.47500 | D.47502;
    if (D.47503 != 0) goto <D.47495>; else goto <D.47504>;
    <D.47504>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47505 = D.47457->opcode;
    D.47506 = D.47505 + 64884;
    if (D.47506 <= 9) goto <D.47495>; else goto <D.47494>;
    <D.47495>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47507 = D.47457->data.op[1].many_blocks;
    D.47508 = D.47507 + 8;
    D.47509 = *D.47508;
    if (D.47509 == 0B) goto <D.47510>; else goto <D.47494>;
    <D.47510>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47507 = D.47457->data.op[1].many_blocks;
    D.47508 = D.47507 + 8;
    *D.47508 = falsebb;
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, falsebb);
    goto <D.47496>;
    <D.47494>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 == 0B) goto <D.47511>; else goto <D.47513>;
    <D.47513>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47514 = D.47457->opcode;
    D.47515 = D.47514 != 446;
    D.47516 = D.47514 != 763;
    D.47517 = D.47515 & D.47516;
    if (D.47517 != 0) goto <D.47518>; else goto <D.47512>;
    <D.47518>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47519 = D.47457->opcode;
    D.47520 = D.47519 + 64981;
    D.47521 = D.47520 > 9;
    D.47522 = D.47519 + 64874;
    D.47523 = D.47522 > 9;
    D.47524 = D.47521 & D.47523;
    if (D.47524 != 0) goto <D.47525>; else goto <D.47512>;
    <D.47525>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47505 = D.47457->opcode;
    D.47506 = D.47505 + 64884;
    if (D.47506 > 9) goto <D.47511>; else goto <D.47512>;
    <D.47511>:
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, falsebb);
    <D.47512>:
    <D.47496>:
    D.47456 = cfg->cbb;
    D.47456->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47526>;
    <D.47474>:
    D.47450 = cfg->mempool;
    D.47527 = mono_mempool_alloc (D.47450, 16);
    ins->data.op[1].many_blocks = D.47527;
    D.47528 = ins->data.op[1].many_blocks;
    *D.47528 = false_target;
    D.47528 = ins->data.op[1].many_blocks;
    D.47529 = D.47528 + 8;
    *D.47529 = 0B;
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, false_target);
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47530>; else goto <D.47531>;
    <D.47530>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47457->next = ins;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    ins->prev = D.47457;
    D.47456 = cfg->cbb;
    D.47456->last_ins = ins;
    goto <D.47532>;
    <D.47531>:
    D.47456 = cfg->cbb;
    D.47456 = cfg->cbb;
    D.47456->last_ins = ins;
    D.47457 = D.47456->last_ins;
    D.47456->code = D.47457;
    <D.47532>:
    D.47533 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.47534 = D.47533 & 8;
    if (D.47534 == 0) goto <D.47535>; else goto <D.47536>;
    <D.47535>:
    D.47450 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47450, 296);
    D.47475 = cfg->num_bblocks;
    D.47537 = D.47475;
    D.47538 = D.47537 + 1;
    cfg->num_bblocks = D.47538;
    D.47539 = (int) D.47537;
    falsebb->block_num = D.47539;
    D.47528 = ins->data.op[1].many_blocks;
    D.47529 = D.47528 + 8;
    *D.47529 = falsebb;
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, falsebb);
    D.47482 = falsebb->cil_code;
    if (D.47482 != 0B) goto <D.47540>; else goto <D.47541>;
    <D.47540>:
    D.47485 = cfg->cil_offset_to_bb;
    D.47482 = falsebb->cil_code;
    D.47486 = (long int) D.47482;
    D.47487 = cfg->cil_start;
    D.47488 = (long int) D.47487;
    D.47489 = D.47486 - D.47488;
    D.47490 = (long unsigned int) D.47489;
    D.47491 = D.47490 * 8;
    D.47492 = D.47485 + D.47491;
    *D.47492 = falsebb;
    <D.47541>:
    D.47493 = cfg->real_offset;
    falsebb->real_offset = D.47493;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47545>; else goto <D.47542>;
    <D.47545>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47546 = D.47457->opcode;
    D.47547 = D.47546 + 64981;
    D.47548 = D.47547 <= 9;
    D.47549 = D.47546 + 64874;
    D.47550 = D.47549 <= 9;
    D.47551 = D.47548 | D.47550;
    if (D.47551 != 0) goto <D.47543>; else goto <D.47552>;
    <D.47552>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47505 = D.47457->opcode;
    D.47506 = D.47505 + 64884;
    if (D.47506 <= 9) goto <D.47543>; else goto <D.47542>;
    <D.47543>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47507 = D.47457->data.op[1].many_blocks;
    D.47508 = D.47507 + 8;
    D.47509 = *D.47508;
    if (D.47509 == 0B) goto <D.47553>; else goto <D.47542>;
    <D.47553>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47507 = D.47457->data.op[1].many_blocks;
    D.47508 = D.47507 + 8;
    *D.47508 = falsebb;
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, falsebb);
    goto <D.47544>;
    <D.47542>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 == 0B) goto <D.47554>; else goto <D.47556>;
    <D.47556>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47557 = D.47457->opcode;
    D.47558 = D.47557 != 446;
    D.47559 = D.47557 != 763;
    D.47560 = D.47558 & D.47559;
    if (D.47560 != 0) goto <D.47561>; else goto <D.47555>;
    <D.47561>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47562 = D.47457->opcode;
    D.47563 = D.47562 + 64981;
    D.47564 = D.47563 > 9;
    D.47565 = D.47562 + 64874;
    D.47566 = D.47565 > 9;
    D.47567 = D.47564 & D.47566;
    if (D.47567 != 0) goto <D.47568>; else goto <D.47555>;
    <D.47568>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47505 = D.47457->opcode;
    D.47506 = D.47505 + 64884;
    if (D.47506 > 9) goto <D.47554>; else goto <D.47555>;
    <D.47554>:
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, falsebb);
    <D.47555>:
    <D.47544>:
    D.47456 = cfg->cbb;
    D.47456->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47569>;
    <D.47536>:
    D.47456 = cfg->cbb;
    D.47456->extended = 1;
    <D.47569>:
    <D.47526>:
  }
  <D.47449>:
  {
    struct MonoInst * inst;

    D.47450 = cfg->mempool;
    inst = mono_mempool_alloc (D.47450, 80);
    inst->data.op[1].const_val = 0;
    D.47570 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47570;
    inst->prev = 0B;
    D.47571 = inst->prev;
    inst->next = D.47571;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47572 = inst->sreg3;
    inst->sreg2 = D.47572;
    D.47573 = inst->sreg2;
    inst->sreg1 = D.47573;
    D.47455 = cfg->ip;
    inst->cil_code = D.47455;
    inst->dreg = stypes_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 16;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47574>; else goto <D.47575>;
    <D.47574>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47457->next = inst;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    inst->prev = D.47457;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    goto <D.47576>;
    <D.47575>:
    D.47456 = cfg->cbb;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    D.47457 = D.47456->last_ins;
    D.47456->code = D.47457;
    <D.47576>:
  }
  {
    struct MonoInst * inst;

    D.47450 = cfg->mempool;
    inst = mono_mempool_alloc (D.47450, 80);
    inst->data.op[1].const_val = 0;
    D.47577 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47577;
    inst->prev = 0B;
    D.47578 = inst->prev;
    inst->next = D.47578;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47579 = inst->sreg3;
    inst->sreg2 = D.47579;
    D.47580 = inst->sreg2;
    inst->sreg1 = D.47580;
    D.47455 = cfg->ip;
    inst->cil_code = D.47455;
    inst->dreg = stype;
    inst->sreg1 = stypes_reg;
    D.47447 = klass->idepth;
    D.47581 = (int) D.47447;
    D.47582 = D.47581 + -1;
    D.47583 = D.47582 * 8;
    D.47584 = (long int) D.47583;
    inst->data.op[0].const_val = D.47584;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47585>; else goto <D.47586>;
    <D.47585>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47457->next = inst;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    inst->prev = D.47457;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    goto <D.47587>;
    <D.47586>:
    D.47456 = cfg->cbb;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    D.47457 = D.47456->last_ins;
    D.47456->code = D.47457;
    <D.47587>:
  }
  if (klass_ins != 0B) goto <D.47588>; else goto <D.47589>;
  <D.47588>:
  {
    struct MonoInst * inst;

    D.47450 = cfg->mempool;
    inst = mono_mempool_alloc (D.47450, 80);
    inst->data.op[1].const_val = 0;
    D.47590 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47590;
    inst->prev = 0B;
    D.47591 = inst->prev;
    inst->next = D.47591;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47592 = inst->sreg3;
    inst->sreg2 = D.47592;
    D.47593 = inst->sreg2;
    inst->sreg1 = D.47593;
    D.47455 = cfg->ip;
    inst->cil_code = D.47455;
    inst->dreg = -1;
    inst->sreg1 = stype;
    D.47594 = klass_ins->dreg;
    inst->sreg2 = D.47594;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47595>; else goto <D.47596>;
    <D.47595>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47457->next = inst;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    inst->prev = D.47457;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    goto <D.47597>;
    <D.47596>:
    D.47456 = cfg->cbb;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    D.47457 = D.47456->last_ins;
    D.47456->code = D.47457;
    <D.47597>:
  }
  goto <D.47598>;
  <D.47589>:
  D.47533 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.47599 = D.47533 & 64;
  if (D.47599 != 0) goto <D.47600>; else goto <D.47601>;
  <D.47600>:
  {
    int const_reg;

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

      D.47450 = cfg->mempool;
      inst = mono_mempool_alloc (D.47450, 80);
      inst->data.op[1].const_val = 0;
      D.47603 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47603;
      inst->prev = 0B;
      D.47604 = inst->prev;
      inst->next = D.47604;
      D.47533 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.47599 = D.47533 & 64;
      if (D.47599 != 0) goto <D.47606>; else goto <D.47607>;
      <D.47606>:
      iftmp.432 = 736;
      goto <D.47608>;
      <D.47607>:
      iftmp.432 = 363;
      <D.47608>:
      inst->opcode = iftmp.432;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47609 = inst->sreg3;
      inst->sreg2 = D.47609;
      D.47610 = inst->sreg2;
      inst->sreg1 = D.47610;
      D.47455 = cfg->ip;
      inst->cil_code = D.47455;
      inst->dreg = const_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 11;
      D.47456 = cfg->cbb;
      D.47457 = D.47456->last_ins;
      if (D.47457 != 0B) goto <D.47611>; else goto <D.47612>;
      <D.47611>:
      D.47456 = cfg->cbb;
      D.47457 = D.47456->last_ins;
      D.47457->next = inst;
      D.47456 = cfg->cbb;
      D.47457 = D.47456->last_ins;
      inst->prev = D.47457;
      D.47456 = cfg->cbb;
      D.47456->last_ins = inst;
      goto <D.47613>;
      <D.47612>:
      D.47456 = cfg->cbb;
      D.47456 = cfg->cbb;
      D.47456->last_ins = inst;
      D.47457 = D.47456->last_ins;
      D.47456->code = D.47457;
      <D.47613>:
    }
    {
      struct MonoInst * inst;

      D.47450 = cfg->mempool;
      inst = mono_mempool_alloc (D.47450, 80);
      inst->data.op[1].const_val = 0;
      D.47614 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.47614;
      inst->prev = 0B;
      D.47615 = inst->prev;
      inst->next = D.47615;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.47616 = inst->sreg3;
      inst->sreg2 = D.47616;
      D.47617 = inst->sreg2;
      inst->sreg1 = D.47617;
      D.47455 = cfg->ip;
      inst->cil_code = D.47455;
      inst->dreg = -1;
      inst->sreg1 = stype;
      inst->sreg2 = const_reg;
      D.47456 = cfg->cbb;
      D.47457 = D.47456->last_ins;
      if (D.47457 != 0B) goto <D.47618>; else goto <D.47619>;
      <D.47618>:
      D.47456 = cfg->cbb;
      D.47457 = D.47456->last_ins;
      D.47457->next = inst;
      D.47456 = cfg->cbb;
      D.47457 = D.47456->last_ins;
      inst->prev = D.47457;
      D.47456 = cfg->cbb;
      D.47456->last_ins = inst;
      goto <D.47620>;
      <D.47619>:
      D.47456 = cfg->cbb;
      D.47456 = cfg->cbb;
      D.47456->last_ins = inst;
      D.47457 = D.47456->last_ins;
      D.47456->code = D.47457;
      <D.47620>:
    }
  }
  goto <D.47621>;
  <D.47601>:
  {
    struct MonoInst * inst;

    D.47450 = cfg->mempool;
    inst = mono_mempool_alloc (D.47450, 80);
    inst->data.op[1].const_val = 0;
    D.47622 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.47622;
    inst->prev = 0B;
    D.47623 = inst->prev;
    inst->next = D.47623;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.47624 = inst->sreg3;
    inst->sreg2 = D.47624;
    D.47625 = inst->sreg2;
    inst->sreg1 = D.47625;
    D.47455 = cfg->ip;
    inst->cil_code = D.47455;
    inst->dreg = -1;
    inst->sreg1 = stype;
    klass.433 = (long int) klass;
    inst->data.op[1].const_val = klass.433;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47627>; else goto <D.47628>;
    <D.47627>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47457->next = inst;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    inst->prev = D.47457;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    goto <D.47629>;
    <D.47628>:
    D.47456 = cfg->cbb;
    D.47456 = cfg->cbb;
    D.47456->last_ins = inst;
    D.47457 = D.47456->last_ins;
    D.47456->code = D.47457;
    <D.47629>:
  }
  <D.47621>:
  <D.47598>:
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.47450 = cfg->mempool;
    ins = mono_mempool_alloc (D.47450, 80);
    ins->data.op[1].const_val = 0;
    D.47630 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.47630;
    ins->prev = 0B;
    D.47631 = ins->prev;
    ins->next = D.47631;
    ins->opcode = 555;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.47632 = ins->sreg3;
    ins->sreg2 = D.47632;
    D.47633 = ins->sreg2;
    ins->sreg1 = D.47633;
    D.47455 = cfg->ip;
    ins->cil_code = D.47455;
    if (0 != 0) goto <D.47634>; else goto <D.47635>;
    <D.47634>:
    D.47450 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47450, 296);
    D.47475 = cfg->num_bblocks;
    D.47636 = D.47475;
    D.47637 = D.47636 + 1;
    cfg->num_bblocks = D.47637;
    D.47638 = (int) D.47636;
    falsebb->block_num = D.47638;
    ins->data.op[0].target_block = true_target;
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, true_target);
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47639>; else goto <D.47640>;
    <D.47639>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47457->next = ins;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    ins->prev = D.47457;
    D.47456 = cfg->cbb;
    D.47456->last_ins = ins;
    goto <D.47641>;
    <D.47640>:
    D.47456 = cfg->cbb;
    D.47456 = cfg->cbb;
    D.47456->last_ins = ins;
    D.47457 = D.47456->last_ins;
    D.47456->code = D.47457;
    <D.47641>:
    D.47642 = falsebb->cil_code;
    if (D.47642 != 0B) goto <D.47643>; else goto <D.47644>;
    <D.47643>:
    D.47485 = cfg->cil_offset_to_bb;
    D.47642 = falsebb->cil_code;
    D.47645 = (long int) D.47642;
    D.47487 = cfg->cil_start;
    D.47488 = (long int) D.47487;
    D.47646 = D.47645 - D.47488;
    D.47647 = (long unsigned int) D.47646;
    D.47648 = D.47647 * 8;
    D.47649 = D.47485 + D.47648;
    *D.47649 = falsebb;
    <D.47644>:
    D.47493 = cfg->real_offset;
    falsebb->real_offset = D.47493;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47653>; else goto <D.47650>;
    <D.47653>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47654 = D.47457->opcode;
    D.47655 = D.47654 + 64981;
    D.47656 = D.47655 <= 9;
    D.47657 = D.47654 + 64874;
    D.47658 = D.47657 <= 9;
    D.47659 = D.47656 | D.47658;
    if (D.47659 != 0) goto <D.47651>; else goto <D.47660>;
    <D.47660>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47505 = D.47457->opcode;
    D.47506 = D.47505 + 64884;
    if (D.47506 <= 9) goto <D.47651>; else goto <D.47650>;
    <D.47651>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47507 = D.47457->data.op[1].many_blocks;
    D.47508 = D.47507 + 8;
    D.47509 = *D.47508;
    if (D.47509 == 0B) goto <D.47661>; else goto <D.47650>;
    <D.47661>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47507 = D.47457->data.op[1].many_blocks;
    D.47508 = D.47507 + 8;
    *D.47508 = falsebb;
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, falsebb);
    goto <D.47652>;
    <D.47650>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 == 0B) goto <D.47662>; else goto <D.47664>;
    <D.47664>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47665 = D.47457->opcode;
    D.47666 = D.47665 != 446;
    D.47667 = D.47665 != 763;
    D.47668 = D.47666 & D.47667;
    if (D.47668 != 0) goto <D.47669>; else goto <D.47663>;
    <D.47669>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47670 = D.47457->opcode;
    D.47671 = D.47670 + 64981;
    D.47672 = D.47671 > 9;
    D.47673 = D.47670 + 64874;
    D.47674 = D.47673 > 9;
    D.47675 = D.47672 & D.47674;
    if (D.47675 != 0) goto <D.47676>; else goto <D.47663>;
    <D.47676>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47505 = D.47457->opcode;
    D.47506 = D.47505 + 64884;
    if (D.47506 > 9) goto <D.47662>; else goto <D.47663>;
    <D.47662>:
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, falsebb);
    <D.47663>:
    <D.47652>:
    D.47456 = cfg->cbb;
    D.47456->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47677>;
    <D.47635>:
    D.47450 = cfg->mempool;
    D.47678 = mono_mempool_alloc (D.47450, 16);
    ins->data.op[1].many_blocks = D.47678;
    D.47679 = ins->data.op[1].many_blocks;
    *D.47679 = true_target;
    D.47679 = ins->data.op[1].many_blocks;
    D.47680 = D.47679 + 8;
    *D.47680 = 0B;
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, true_target);
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47681>; else goto <D.47682>;
    <D.47681>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47457->next = ins;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    ins->prev = D.47457;
    D.47456 = cfg->cbb;
    D.47456->last_ins = ins;
    goto <D.47683>;
    <D.47682>:
    D.47456 = cfg->cbb;
    D.47456 = cfg->cbb;
    D.47456->last_ins = ins;
    D.47457 = D.47456->last_ins;
    D.47456->code = D.47457;
    <D.47683>:
    D.47533 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.47534 = D.47533 & 8;
    if (D.47534 == 0) goto <D.47684>; else goto <D.47685>;
    <D.47684>:
    D.47450 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.47450, 296);
    D.47475 = cfg->num_bblocks;
    D.47686 = D.47475;
    D.47687 = D.47686 + 1;
    cfg->num_bblocks = D.47687;
    D.47688 = (int) D.47686;
    falsebb->block_num = D.47688;
    D.47679 = ins->data.op[1].many_blocks;
    D.47680 = D.47679 + 8;
    *D.47680 = falsebb;
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, falsebb);
    D.47642 = falsebb->cil_code;
    if (D.47642 != 0B) goto <D.47689>; else goto <D.47690>;
    <D.47689>:
    D.47485 = cfg->cil_offset_to_bb;
    D.47642 = falsebb->cil_code;
    D.47645 = (long int) D.47642;
    D.47487 = cfg->cil_start;
    D.47488 = (long int) D.47487;
    D.47646 = D.47645 - D.47488;
    D.47647 = (long unsigned int) D.47646;
    D.47648 = D.47647 * 8;
    D.47649 = D.47485 + D.47648;
    *D.47649 = falsebb;
    <D.47690>:
    D.47493 = cfg->real_offset;
    falsebb->real_offset = D.47493;
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 != 0B) goto <D.47694>; else goto <D.47691>;
    <D.47694>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47695 = D.47457->opcode;
    D.47696 = D.47695 + 64981;
    D.47697 = D.47696 <= 9;
    D.47698 = D.47695 + 64874;
    D.47699 = D.47698 <= 9;
    D.47700 = D.47697 | D.47699;
    if (D.47700 != 0) goto <D.47692>; else goto <D.47701>;
    <D.47701>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47505 = D.47457->opcode;
    D.47506 = D.47505 + 64884;
    if (D.47506 <= 9) goto <D.47692>; else goto <D.47691>;
    <D.47692>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47507 = D.47457->data.op[1].many_blocks;
    D.47508 = D.47507 + 8;
    D.47509 = *D.47508;
    if (D.47509 == 0B) goto <D.47702>; else goto <D.47691>;
    <D.47702>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47507 = D.47457->data.op[1].many_blocks;
    D.47508 = D.47507 + 8;
    *D.47508 = falsebb;
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, falsebb);
    goto <D.47693>;
    <D.47691>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    if (D.47457 == 0B) goto <D.47703>; else goto <D.47705>;
    <D.47705>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47706 = D.47457->opcode;
    D.47707 = D.47706 != 446;
    D.47708 = D.47706 != 763;
    D.47709 = D.47707 & D.47708;
    if (D.47709 != 0) goto <D.47710>; else goto <D.47704>;
    <D.47710>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47711 = D.47457->opcode;
    D.47712 = D.47711 + 64981;
    D.47713 = D.47712 > 9;
    D.47714 = D.47711 + 64874;
    D.47715 = D.47714 > 9;
    D.47716 = D.47713 & D.47715;
    if (D.47716 != 0) goto <D.47717>; else goto <D.47704>;
    <D.47717>:
    D.47456 = cfg->cbb;
    D.47457 = D.47456->last_ins;
    D.47505 = D.47457->opcode;
    D.47506 = D.47505 + 64884;
    if (D.47506 > 9) goto <D.47703>; else goto <D.47704>;
    <D.47703>:
    D.47456 = cfg->cbb;
    mono_link_bblock (cfg, D.47456, falsebb);
    <D.47704>:
    <D.47693>:
    D.47456 = cfg->cbb;
    D.47456->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.47718>;
    <D.47685>:
    D.47456 = cfg->cbb;
    D.47456->extended = 1;
    <D.47718>:
    <D.47677>:
  }
}


handle_unbox_gsharedvt (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * obj, struct MonoBasicBlock * * out_cbb)
{
  struct MonoInst * obj.434;
  struct MonoInst * obj.435;
  struct MonoMemPool * D.47721;
  unsigned int D.47722;
  unsigned int D.47723;
  unsigned int D.47724;
  int D.47725;
  unsigned int D.47726;
  unsigned int D.47727;
  int D.47728;
  unsigned int D.47729;
  unsigned int D.47730;
  int D.47731;
  long int D.47732;
  struct MonoInst * D.47733;
  int D.47734;
  int D.47735;
  const unsigned char * D.47736;
  int D.47737;
  struct MonoBasicBlock * D.47738;
  struct MonoInst * D.47739;
  long int D.47743;
  struct MonoInst * D.47744;
  int D.47745;
  int D.47746;
  unsigned int D.47749;
  unsigned int D.47750;
  int D.47751;
  unsigned char * D.47755;
  struct MonoBasicBlock * * D.47758;
  long int D.47759;
  unsigned char * D.47760;
  long int D.47761;
  long int D.47762;
  long unsigned int D.47763;
  long unsigned int D.47764;
  struct MonoBasicBlock * * D.47765;
  unsigned int D.47766;
  short unsigned int D.47771;
  short unsigned int D.47772;
  _Bool D.47773;
  short unsigned int D.47774;
  _Bool D.47775;
  _Bool D.47776;
  short unsigned int D.47778;
  short unsigned int D.47779;
  struct MonoBasicBlock * * D.47780;
  struct MonoBasicBlock * * D.47781;
  struct MonoBasicBlock * D.47782;
  short unsigned int D.47787;
  _Bool D.47788;
  _Bool D.47789;
  _Bool D.47790;
  short unsigned int D.47792;
  short unsigned int D.47793;
  _Bool D.47794;
  short unsigned int D.47795;
  _Bool D.47796;
  _Bool D.47797;
  void * D.47800;
  struct MonoBasicBlock * * D.47801;
  struct MonoBasicBlock * * D.47802;
  unsigned char D.47806;
  unsigned char D.47807;
  unsigned int D.47810;
  unsigned int D.47811;
  int D.47812;
  short unsigned int D.47819;
  short unsigned int D.47820;
  _Bool D.47821;
  short unsigned int D.47822;
  _Bool D.47823;
  _Bool D.47824;
  short unsigned int D.47830;
  _Bool D.47831;
  _Bool D.47832;
  _Bool D.47833;
  short unsigned int D.47835;
  short unsigned int D.47836;
  _Bool D.47837;
  short unsigned int D.47838;
  _Bool D.47839;
  _Bool D.47840;
  long int D.47843;
  struct MonoInst * D.47844;
  int D.47845;
  int D.47846;
  long int D.47850;
  struct MonoInst * D.47851;
  int D.47852;
  int D.47853;
  unsigned int D.47856;
  unsigned int D.47857;
  int D.47858;
  unsigned char * D.47862;
  long int D.47865;
  long int D.47866;
  long unsigned int D.47867;
  long unsigned int D.47868;
  struct MonoBasicBlock * * D.47869;
  short unsigned int D.47874;
  short unsigned int D.47875;
  _Bool D.47876;
  short unsigned int D.47877;
  _Bool D.47878;
  _Bool D.47879;
  short unsigned int D.47885;
  _Bool D.47886;
  _Bool D.47887;
  _Bool D.47888;
  short unsigned int D.47890;
  short unsigned int D.47891;
  _Bool D.47892;
  short unsigned int D.47893;
  _Bool D.47894;
  _Bool D.47895;
  void * D.47898;
  struct MonoBasicBlock * * D.47899;
  struct MonoBasicBlock * * D.47900;
  unsigned int D.47906;
  unsigned int D.47907;
  int D.47908;
  short unsigned int D.47915;
  short unsigned int D.47916;
  _Bool D.47917;
  short unsigned int D.47918;
  _Bool D.47919;
  _Bool D.47920;
  short unsigned int D.47926;
  _Bool D.47927;
  _Bool D.47928;
  _Bool D.47929;
  short unsigned int D.47931;
  short unsigned int D.47932;
  _Bool D.47933;
  short unsigned int D.47934;
  _Bool D.47935;
  _Bool D.47936;
  unsigned int D.47939;
  long int D.47940;
  struct MonoInst * D.47941;
  int D.47942;
  int D.47943;
  int D.47944;
  long int D.47948;
  struct MonoInst * D.47949;
  int D.47950;
  int D.47951;
  unsigned int D.47954;
  unsigned int D.47955;
  int D.47956;
  unsigned char * D.47960;
  long int D.47963;
  long int D.47964;
  long unsigned int D.47965;
  long unsigned int D.47966;
  struct MonoBasicBlock * * D.47967;
  short unsigned int D.47972;
  short unsigned int D.47973;
  _Bool D.47974;
  short unsigned int D.47975;
  _Bool D.47976;
  _Bool D.47977;
  short unsigned int D.47983;
  _Bool D.47984;
  _Bool D.47985;
  _Bool D.47986;
  short unsigned int D.47988;
  short unsigned int D.47989;
  _Bool D.47990;
  short unsigned int D.47991;
  _Bool D.47992;
  _Bool D.47993;
  void * D.47996;
  struct MonoBasicBlock * * D.47997;
  struct MonoBasicBlock * * D.47998;
  unsigned int D.48004;
  unsigned int D.48005;
  int D.48006;
  short unsigned int D.48013;
  short unsigned int D.48014;
  _Bool D.48015;
  short unsigned int D.48016;
  _Bool D.48017;
  _Bool D.48018;
  short unsigned int D.48024;
  _Bool D.48025;
  _Bool D.48026;
  _Bool D.48027;
  short unsigned int D.48029;
  short unsigned int D.48030;
  _Bool D.48031;
  short unsigned int D.48032;
  _Bool D.48033;
  _Bool D.48034;
  unsigned char * D.48037;
  long int D.48040;
  long int D.48041;
  long unsigned int D.48042;
  long unsigned int D.48043;
  struct MonoBasicBlock * * D.48044;
  short unsigned int D.48049;
  short unsigned int D.48050;
  _Bool D.48051;
  short unsigned int D.48052;
  _Bool D.48053;
  _Bool D.48054;
  short unsigned int D.48060;
  _Bool D.48061;
  _Bool D.48062;
  _Bool D.48063;
  short unsigned int D.48065;
  short unsigned int D.48066;
  _Bool D.48067;
  short unsigned int D.48068;
  _Bool D.48069;
  _Bool D.48070;
  unsigned int D.48072;
  struct MonoInst * iftmp.436;
  unsigned int dreg.437;
  unsigned int D.48075;
  struct MonoInst * * D.48078;
  long unsigned int D.48079;
  long unsigned int D.48080;
  struct MonoInst * * D.48081;
  struct MonoType * D.48085;
  unsigned char D.48086;
  unsigned char D.48087;
  struct MonoClass * D.48088;
  unsigned int D.48089;
  int D.48090;
  int D.48091;
  _Bool D.48092;
  long int D.48093;
  long int D.48094;
  struct MonoType * D.48097;
  int D.48098;
  struct MonoInst * iftmp.438;
  int D.48104;
  int D.48105;
  unsigned int D.48106;
  sizetype D.48109;
  sizetype D.48110;
  sizetype D.48111;
  struct MonoInst * * D.48112;
  struct MonoInst * iftmp.439;
  int D.48115;
  unsigned int D.48116;
  sizetype D.48119;
  sizetype D.48120;
  struct MonoInst * * D.48121;
  _Bool D.48123;
  long int D.48124;
  long int D.48125;
  _Bool D.48128;
  long int D.48129;
  long int D.48130;
  unsigned char D.48133;
  unsigned char D.48134;
  unsigned char D.48135;
  unsigned char D.48136;
  long int D.48140;
  struct MonoInst * D.48141;
  int D.48142;
  int D.48143;
  int D.48144;
  long int D.48148;
  struct MonoInst * D.48149;
  int D.48150;
  int D.48151;
  unsigned int D.48154;
  unsigned int D.48155;
  int D.48156;
  unsigned char * D.48160;
  long int D.48163;
  long int D.48164;
  long unsigned int D.48165;
  long unsigned int D.48166;
  struct MonoBasicBlock * * D.48167;
  short unsigned int D.48172;
  short unsigned int D.48173;
  _Bool D.48174;
  short unsigned int D.48175;
  _Bool D.48176;
  _Bool D.48177;
  short unsigned int D.48183;
  _Bool D.48184;
  _Bool D.48185;
  _Bool D.48186;
  short unsigned int D.48188;
  short unsigned int D.48189;
  _Bool D.48190;
  short unsigned int D.48191;
  _Bool D.48192;
  _Bool D.48193;
  void * D.48196;
  struct MonoBasicBlock * * D.48197;
  struct MonoBasicBlock * * D.48198;
  unsigned int D.48204;
  unsigned int D.48205;
  int D.48206;
  short unsigned int D.48213;
  short unsigned int D.48214;
  _Bool D.48215;
  short unsigned int D.48216;
  _Bool D.48217;
  _Bool D.48218;
  short unsigned int D.48224;
  _Bool D.48225;
  _Bool D.48226;
  _Bool D.48227;
  short unsigned int D.48229;
  short unsigned int D.48230;
  _Bool D.48231;
  short unsigned int D.48232;
  _Bool D.48233;
  _Bool D.48234;
  unsigned char * D.48237;
  long int D.48240;
  long int D.48241;
  long unsigned int D.48242;
  long unsigned int D.48243;
  struct MonoBasicBlock * * D.48244;
  short unsigned int D.48249;
  short unsigned int D.48250;
  _Bool D.48251;
  short unsigned int D.48252;
  _Bool D.48253;
  _Bool D.48254;
  short unsigned int D.48260;
  _Bool D.48261;
  _Bool D.48262;
  _Bool D.48263;
  short unsigned int D.48265;
  short unsigned int D.48266;
  _Bool D.48267;
  short unsigned int D.48268;
  _Bool D.48269;
  _Bool D.48270;
  struct MonoClass * D.48272;
  struct MonoType * D.48273;
  struct MonoInst * iftmp.440;
  int D.48275;
  unsigned int D.48276;
  long unsigned int D.48279;
  long unsigned int D.48280;
  struct MonoInst * * D.48281;
  long int D.48285;
  struct MonoInst * D.48286;
  int D.48287;
  int D.48288;
  unsigned char D.48289;
  unsigned char D.48290;
  struct MonoClass * D.48291;
  unsigned int D.48292;
  int D.48293;
  struct MonoType * D.48296;
  int D.48297;
  struct MonoInst * iftmp.441;
  int D.48303;
  int D.48304;
  unsigned int D.48305;
  sizetype D.48308;
  sizetype D.48309;
  sizetype D.48310;
  struct MonoInst * * D.48311;
  struct MonoInst * iftmp.442;
  int D.48314;
  unsigned int D.48315;
  sizetype D.48318;
  sizetype D.48319;
  struct MonoInst * * D.48320;
  _Bool D.48322;
  long int D.48323;
  long int D.48324;
  _Bool D.48327;
  long int D.48328;
  long int D.48329;
  unsigned char D.48332;
  unsigned char D.48333;
  unsigned char D.48334;
  unsigned char D.48335;
  long int D.48339;
  struct MonoInst * D.48340;
  int D.48341;
  int D.48342;
  unsigned int D.48345;
  unsigned int D.48346;
  int D.48347;
  unsigned char * D.48351;
  long int D.48354;
  long int D.48355;
  long unsigned int D.48356;
  long unsigned int D.48357;
  struct MonoBasicBlock * * D.48358;
  short unsigned int D.48363;
  short unsigned int D.48364;
  _Bool D.48365;
  short unsigned int D.48366;
  _Bool D.48367;
  _Bool D.48368;
  short unsigned int D.48374;
  _Bool D.48375;
  _Bool D.48376;
  _Bool D.48377;
  short unsigned int D.48379;
  short unsigned int D.48380;
  _Bool D.48381;
  short unsigned int D.48382;
  _Bool D.48383;
  _Bool D.48384;
  void * D.48387;
  struct MonoBasicBlock * * D.48388;
  struct MonoBasicBlock * * D.48389;
  unsigned int D.48395;
  unsigned int D.48396;
  int D.48397;
  short unsigned int D.48404;
  short unsigned int D.48405;
  _Bool D.48406;
  short unsigned int D.48407;
  _Bool D.48408;
  _Bool D.48409;
  short unsigned int D.48415;
  _Bool D.48416;
  _Bool D.48417;
  _Bool D.48418;
  short unsigned int D.48420;
  short unsigned int D.48421;
  _Bool D.48422;
  short unsigned int D.48423;
  _Bool D.48424;
  _Bool D.48425;
  unsigned char * D.48428;
  long int D.48431;
  long int D.48432;
  long unsigned int D.48433;
  long unsigned int D.48434;
  struct MonoBasicBlock * * D.48435;
  short unsigned int D.48440;
  short unsigned int D.48441;
  _Bool D.48442;
  short unsigned int D.48443;
  _Bool D.48444;
  _Bool D.48445;
  short unsigned int D.48451;
  _Bool D.48452;
  _Bool D.48453;
  _Bool D.48454;
  short unsigned int D.48456;
  short unsigned int D.48457;
  _Bool D.48458;
  short unsigned int D.48459;
  _Bool D.48460;
  _Bool D.48461;
  long int D.48463;
  struct MonoInst * D.48464;
  unsigned int D.48465;
  short unsigned int D.48466;
  int D.48467;
  int D.48468;
  unsigned char D.48469;
  <unnamed type> D.48470;
  unsigned int D.48471;
  int D.48472;
  struct MonoInst * D.48476;
  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.434 = obj;
      args[0] = obj.434;
      args[1] = klass_inst;
      obj.435 = mono_emit_jit_icall (cfg, mono_object_castclass_unbox, &args);
      obj = obj.435;
      D.47721 = cfg->mempool;
      is_ref_bb = mono_mempool_alloc0 (D.47721, 296);
      D.47722 = cfg->num_bblocks;
      D.47723 = D.47722;
      D.47724 = D.47723 + 1;
      cfg->num_bblocks = D.47724;
      D.47725 = (int) D.47723;
      is_ref_bb->block_num = D.47725;
      D.47721 = cfg->mempool;
      is_nullable_bb = mono_mempool_alloc0 (D.47721, 296);
      D.47722 = cfg->num_bblocks;
      D.47726 = D.47722;
      D.47727 = D.47726 + 1;
      cfg->num_bblocks = D.47727;
      D.47728 = (int) D.47726;
      is_nullable_bb->block_num = D.47728;
      D.47721 = cfg->mempool;
      end_bb = mono_mempool_alloc0 (D.47721, 296);
      D.47722 = cfg->num_bblocks;
      D.47729 = D.47722;
      D.47730 = D.47729 + 1;
      cfg->num_bblocks = D.47730;
      D.47731 = (int) D.47729;
      end_bb->block_num = D.47731;
      is_ref = emit_get_gsharedvt_info_klass (cfg, klass, 19);
      {
        struct MonoInst * inst;

        D.47721 = cfg->mempool;
        inst = mono_mempool_alloc (D.47721, 80);
        inst->data.op[1].const_val = 0;
        D.47732 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.47732;
        inst->prev = 0B;
        D.47733 = inst->prev;
        inst->next = D.47733;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.47734 = inst->sreg3;
        inst->sreg2 = D.47734;
        D.47735 = inst->sreg2;
        inst->sreg1 = D.47735;
        D.47736 = cfg->ip;
        inst->cil_code = D.47736;
        inst->dreg = -1;
        D.47737 = is_ref->dreg;
        inst->sreg1 = D.47737;
        inst->data.op[1].const_val = 1;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47740>; else goto <D.47741>;
        <D.47740>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = inst;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        inst->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = inst;
        goto <D.47742>;
        <D.47741>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = inst;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.47742>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47721 = cfg->mempool;
        ins = mono_mempool_alloc (D.47721, 80);
        ins->data.op[1].const_val = 0;
        D.47743 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.47743;
        ins->prev = 0B;
        D.47744 = ins->prev;
        ins->next = D.47744;
        ins->opcode = 652;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.47745 = ins->sreg3;
        ins->sreg2 = D.47745;
        D.47746 = ins->sreg2;
        ins->sreg1 = D.47746;
        D.47736 = cfg->ip;
        ins->cil_code = D.47736;
        if (0 != 0) goto <D.47747>; else goto <D.47748>;
        <D.47747>:
        D.47721 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47721, 296);
        D.47722 = cfg->num_bblocks;
        D.47749 = D.47722;
        D.47750 = D.47749 + 1;
        cfg->num_bblocks = D.47750;
        D.47751 = (int) D.47749;
        falsebb->block_num = D.47751;
        ins->data.op[0].target_block = is_ref_bb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, is_ref_bb);
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47752>; else goto <D.47753>;
        <D.47752>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = ins;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        ins->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        goto <D.47754>;
        <D.47753>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.47754>:
        D.47755 = falsebb->cil_code;
        if (D.47755 != 0B) goto <D.47756>; else goto <D.47757>;
        <D.47756>:
        D.47758 = cfg->cil_offset_to_bb;
        D.47755 = falsebb->cil_code;
        D.47759 = (long int) D.47755;
        D.47760 = cfg->cil_start;
        D.47761 = (long int) D.47760;
        D.47762 = D.47759 - D.47761;
        D.47763 = (long unsigned int) D.47762;
        D.47764 = D.47763 * 8;
        D.47765 = D.47758 + D.47764;
        *D.47765 = falsebb;
        <D.47757>:
        D.47766 = cfg->real_offset;
        falsebb->real_offset = D.47766;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47770>; else goto <D.47767>;
        <D.47770>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47771 = D.47739->opcode;
        D.47772 = D.47771 + 64981;
        D.47773 = D.47772 <= 9;
        D.47774 = D.47771 + 64874;
        D.47775 = D.47774 <= 9;
        D.47776 = D.47773 | D.47775;
        if (D.47776 != 0) goto <D.47768>; else goto <D.47777>;
        <D.47777>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 <= 9) goto <D.47768>; else goto <D.47767>;
        <D.47768>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        D.47782 = *D.47781;
        if (D.47782 == 0B) goto <D.47783>; else goto <D.47767>;
        <D.47783>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        *D.47781 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        goto <D.47769>;
        <D.47767>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 == 0B) goto <D.47784>; else goto <D.47786>;
        <D.47786>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47787 = D.47739->opcode;
        D.47788 = D.47787 != 446;
        D.47789 = D.47787 != 763;
        D.47790 = D.47788 & D.47789;
        if (D.47790 != 0) goto <D.47791>; else goto <D.47785>;
        <D.47791>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47792 = D.47739->opcode;
        D.47793 = D.47792 + 64981;
        D.47794 = D.47793 > 9;
        D.47795 = D.47792 + 64874;
        D.47796 = D.47795 > 9;
        D.47797 = D.47794 & D.47796;
        if (D.47797 != 0) goto <D.47798>; else goto <D.47785>;
        <D.47798>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 > 9) goto <D.47784>; else goto <D.47785>;
        <D.47784>:
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        <D.47785>:
        <D.47769>:
        D.47738 = cfg->cbb;
        D.47738->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.47799>;
        <D.47748>:
        D.47721 = cfg->mempool;
        D.47800 = mono_mempool_alloc (D.47721, 16);
        ins->data.op[1].many_blocks = D.47800;
        D.47801 = ins->data.op[1].many_blocks;
        *D.47801 = is_ref_bb;
        D.47801 = ins->data.op[1].many_blocks;
        D.47802 = D.47801 + 8;
        *D.47802 = 0B;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, is_ref_bb);
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47803>; else goto <D.47804>;
        <D.47803>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = ins;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        ins->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        goto <D.47805>;
        <D.47804>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.47805>:
        D.47806 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.47807 = D.47806 & 8;
        if (D.47807 == 0) goto <D.47808>; else goto <D.47809>;
        <D.47808>:
        D.47721 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47721, 296);
        D.47722 = cfg->num_bblocks;
        D.47810 = D.47722;
        D.47811 = D.47810 + 1;
        cfg->num_bblocks = D.47811;
        D.47812 = (int) D.47810;
        falsebb->block_num = D.47812;
        D.47801 = ins->data.op[1].many_blocks;
        D.47802 = D.47801 + 8;
        *D.47802 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        D.47755 = falsebb->cil_code;
        if (D.47755 != 0B) goto <D.47813>; else goto <D.47814>;
        <D.47813>:
        D.47758 = cfg->cil_offset_to_bb;
        D.47755 = falsebb->cil_code;
        D.47759 = (long int) D.47755;
        D.47760 = cfg->cil_start;
        D.47761 = (long int) D.47760;
        D.47762 = D.47759 - D.47761;
        D.47763 = (long unsigned int) D.47762;
        D.47764 = D.47763 * 8;
        D.47765 = D.47758 + D.47764;
        *D.47765 = falsebb;
        <D.47814>:
        D.47766 = cfg->real_offset;
        falsebb->real_offset = D.47766;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47818>; else goto <D.47815>;
        <D.47818>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47819 = D.47739->opcode;
        D.47820 = D.47819 + 64981;
        D.47821 = D.47820 <= 9;
        D.47822 = D.47819 + 64874;
        D.47823 = D.47822 <= 9;
        D.47824 = D.47821 | D.47823;
        if (D.47824 != 0) goto <D.47816>; else goto <D.47825>;
        <D.47825>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 <= 9) goto <D.47816>; else goto <D.47815>;
        <D.47816>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        D.47782 = *D.47781;
        if (D.47782 == 0B) goto <D.47826>; else goto <D.47815>;
        <D.47826>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        *D.47781 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        goto <D.47817>;
        <D.47815>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 == 0B) goto <D.47827>; else goto <D.47829>;
        <D.47829>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47830 = D.47739->opcode;
        D.47831 = D.47830 != 446;
        D.47832 = D.47830 != 763;
        D.47833 = D.47831 & D.47832;
        if (D.47833 != 0) goto <D.47834>; else goto <D.47828>;
        <D.47834>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47835 = D.47739->opcode;
        D.47836 = D.47835 + 64981;
        D.47837 = D.47836 > 9;
        D.47838 = D.47835 + 64874;
        D.47839 = D.47838 > 9;
        D.47840 = D.47837 & D.47839;
        if (D.47840 != 0) goto <D.47841>; else goto <D.47828>;
        <D.47841>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 > 9) goto <D.47827>; else goto <D.47828>;
        <D.47827>:
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        <D.47828>:
        <D.47817>:
        D.47738 = cfg->cbb;
        D.47738->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.47842>;
        <D.47809>:
        D.47738 = cfg->cbb;
        D.47738->extended = 1;
        <D.47842>:
        <D.47799>:
      }
      {
        struct MonoInst * inst;

        D.47721 = cfg->mempool;
        inst = mono_mempool_alloc (D.47721, 80);
        inst->data.op[1].const_val = 0;
        D.47843 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.47843;
        inst->prev = 0B;
        D.47844 = inst->prev;
        inst->next = D.47844;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.47845 = inst->sreg3;
        inst->sreg2 = D.47845;
        D.47846 = inst->sreg2;
        inst->sreg1 = D.47846;
        D.47736 = cfg->ip;
        inst->cil_code = D.47736;
        inst->dreg = -1;
        D.47737 = is_ref->dreg;
        inst->sreg1 = D.47737;
        inst->data.op[1].const_val = 2;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47847>; else goto <D.47848>;
        <D.47847>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = inst;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        inst->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = inst;
        goto <D.47849>;
        <D.47848>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = inst;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.47849>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47721 = cfg->mempool;
        ins = mono_mempool_alloc (D.47721, 80);
        ins->data.op[1].const_val = 0;
        D.47850 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.47850;
        ins->prev = 0B;
        D.47851 = ins->prev;
        ins->next = D.47851;
        ins->opcode = 652;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.47852 = ins->sreg3;
        ins->sreg2 = D.47852;
        D.47853 = ins->sreg2;
        ins->sreg1 = D.47853;
        D.47736 = cfg->ip;
        ins->cil_code = D.47736;
        if (0 != 0) goto <D.47854>; else goto <D.47855>;
        <D.47854>:
        D.47721 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47721, 296);
        D.47722 = cfg->num_bblocks;
        D.47856 = D.47722;
        D.47857 = D.47856 + 1;
        cfg->num_bblocks = D.47857;
        D.47858 = (int) D.47856;
        falsebb->block_num = D.47858;
        ins->data.op[0].target_block = is_nullable_bb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, is_nullable_bb);
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47859>; else goto <D.47860>;
        <D.47859>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = ins;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        ins->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        goto <D.47861>;
        <D.47860>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.47861>:
        D.47862 = falsebb->cil_code;
        if (D.47862 != 0B) goto <D.47863>; else goto <D.47864>;
        <D.47863>:
        D.47758 = cfg->cil_offset_to_bb;
        D.47862 = falsebb->cil_code;
        D.47865 = (long int) D.47862;
        D.47760 = cfg->cil_start;
        D.47761 = (long int) D.47760;
        D.47866 = D.47865 - D.47761;
        D.47867 = (long unsigned int) D.47866;
        D.47868 = D.47867 * 8;
        D.47869 = D.47758 + D.47868;
        *D.47869 = falsebb;
        <D.47864>:
        D.47766 = cfg->real_offset;
        falsebb->real_offset = D.47766;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47873>; else goto <D.47870>;
        <D.47873>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47874 = D.47739->opcode;
        D.47875 = D.47874 + 64981;
        D.47876 = D.47875 <= 9;
        D.47877 = D.47874 + 64874;
        D.47878 = D.47877 <= 9;
        D.47879 = D.47876 | D.47878;
        if (D.47879 != 0) goto <D.47871>; else goto <D.47880>;
        <D.47880>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 <= 9) goto <D.47871>; else goto <D.47870>;
        <D.47871>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        D.47782 = *D.47781;
        if (D.47782 == 0B) goto <D.47881>; else goto <D.47870>;
        <D.47881>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        *D.47781 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        goto <D.47872>;
        <D.47870>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 == 0B) goto <D.47882>; else goto <D.47884>;
        <D.47884>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47885 = D.47739->opcode;
        D.47886 = D.47885 != 446;
        D.47887 = D.47885 != 763;
        D.47888 = D.47886 & D.47887;
        if (D.47888 != 0) goto <D.47889>; else goto <D.47883>;
        <D.47889>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47890 = D.47739->opcode;
        D.47891 = D.47890 + 64981;
        D.47892 = D.47891 > 9;
        D.47893 = D.47890 + 64874;
        D.47894 = D.47893 > 9;
        D.47895 = D.47892 & D.47894;
        if (D.47895 != 0) goto <D.47896>; else goto <D.47883>;
        <D.47896>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 > 9) goto <D.47882>; else goto <D.47883>;
        <D.47882>:
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        <D.47883>:
        <D.47872>:
        D.47738 = cfg->cbb;
        D.47738->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.47897>;
        <D.47855>:
        D.47721 = cfg->mempool;
        D.47898 = mono_mempool_alloc (D.47721, 16);
        ins->data.op[1].many_blocks = D.47898;
        D.47899 = ins->data.op[1].many_blocks;
        *D.47899 = is_nullable_bb;
        D.47899 = ins->data.op[1].many_blocks;
        D.47900 = D.47899 + 8;
        *D.47900 = 0B;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, is_nullable_bb);
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47901>; else goto <D.47902>;
        <D.47901>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = ins;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        ins->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        goto <D.47903>;
        <D.47902>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.47903>:
        D.47806 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.47807 = D.47806 & 8;
        if (D.47807 == 0) goto <D.47904>; else goto <D.47905>;
        <D.47904>:
        D.47721 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47721, 296);
        D.47722 = cfg->num_bblocks;
        D.47906 = D.47722;
        D.47907 = D.47906 + 1;
        cfg->num_bblocks = D.47907;
        D.47908 = (int) D.47906;
        falsebb->block_num = D.47908;
        D.47899 = ins->data.op[1].many_blocks;
        D.47900 = D.47899 + 8;
        *D.47900 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        D.47862 = falsebb->cil_code;
        if (D.47862 != 0B) goto <D.47909>; else goto <D.47910>;
        <D.47909>:
        D.47758 = cfg->cil_offset_to_bb;
        D.47862 = falsebb->cil_code;
        D.47865 = (long int) D.47862;
        D.47760 = cfg->cil_start;
        D.47761 = (long int) D.47760;
        D.47866 = D.47865 - D.47761;
        D.47867 = (long unsigned int) D.47866;
        D.47868 = D.47867 * 8;
        D.47869 = D.47758 + D.47868;
        *D.47869 = falsebb;
        <D.47910>:
        D.47766 = cfg->real_offset;
        falsebb->real_offset = D.47766;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47914>; else goto <D.47911>;
        <D.47914>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47915 = D.47739->opcode;
        D.47916 = D.47915 + 64981;
        D.47917 = D.47916 <= 9;
        D.47918 = D.47915 + 64874;
        D.47919 = D.47918 <= 9;
        D.47920 = D.47917 | D.47919;
        if (D.47920 != 0) goto <D.47912>; else goto <D.47921>;
        <D.47921>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 <= 9) goto <D.47912>; else goto <D.47911>;
        <D.47912>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        D.47782 = *D.47781;
        if (D.47782 == 0B) goto <D.47922>; else goto <D.47911>;
        <D.47922>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        *D.47781 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        goto <D.47913>;
        <D.47911>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 == 0B) goto <D.47923>; else goto <D.47925>;
        <D.47925>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47926 = D.47739->opcode;
        D.47927 = D.47926 != 446;
        D.47928 = D.47926 != 763;
        D.47929 = D.47927 & D.47928;
        if (D.47929 != 0) goto <D.47930>; else goto <D.47924>;
        <D.47930>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47931 = D.47739->opcode;
        D.47932 = D.47931 + 64981;
        D.47933 = D.47932 > 9;
        D.47934 = D.47931 + 64874;
        D.47935 = D.47934 > 9;
        D.47936 = D.47933 & D.47935;
        if (D.47936 != 0) goto <D.47937>; else goto <D.47924>;
        <D.47937>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 > 9) goto <D.47923>; else goto <D.47924>;
        <D.47923>:
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        <D.47924>:
        <D.47913>:
        D.47738 = cfg->cbb;
        D.47738->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.47938>;
        <D.47905>:
        D.47738 = cfg->cbb;
        D.47738->extended = 1;
        <D.47938>:
        <D.47897>:
      }
      D.47939 = alloc_dreg (cfg, 5);
      addr_reg = (int) D.47939;
      D.47721 = cfg->mempool;
      addr = mono_mempool_alloc (D.47721, 80);
      addr->data.op[1].const_val = 0;
      D.47940 = addr->data.op[1].const_val;
      addr->data.op[0].const_val = D.47940;
      addr->prev = 0B;
      D.47941 = addr->prev;
      addr->next = D.47941;
      addr->opcode = 433;
      addr->flags = 0;
      addr->type = 0;
      addr->dreg = -1;
      addr->sreg3 = -1;
      D.47942 = addr->sreg3;
      addr->sreg2 = D.47942;
      D.47943 = addr->sreg2;
      addr->sreg1 = D.47943;
      D.47736 = cfg->ip;
      addr->cil_code = D.47736;
      addr->dreg = addr_reg;
      obj.434 = obj;
      D.47944 = obj.434->dreg;
      addr->sreg1 = D.47944;
      addr->data.op[1].const_val = 16;
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      if (D.47739 != 0B) goto <D.47945>; else goto <D.47946>;
      <D.47945>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47739->next = addr;
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      addr->prev = D.47739;
      D.47738 = cfg->cbb;
      D.47738->last_ins = addr;
      goto <D.47947>;
      <D.47946>:
      D.47738 = cfg->cbb;
      D.47738 = cfg->cbb;
      D.47738->last_ins = addr;
      D.47739 = D.47738->last_ins;
      D.47738->code = D.47739;
      <D.47947>:
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47721 = cfg->mempool;
        ins = mono_mempool_alloc (D.47721, 80);
        ins->data.op[1].const_val = 0;
        D.47948 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.47948;
        ins->prev = 0B;
        D.47949 = ins->prev;
        ins->next = D.47949;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.47950 = ins->sreg3;
        ins->sreg2 = D.47950;
        D.47951 = ins->sreg2;
        ins->sreg1 = D.47951;
        D.47736 = cfg->ip;
        ins->cil_code = D.47736;
        if (1 != 0) goto <D.47952>; else goto <D.47953>;
        <D.47952>:
        D.47721 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47721, 296);
        D.47722 = cfg->num_bblocks;
        D.47954 = D.47722;
        D.47955 = D.47954 + 1;
        cfg->num_bblocks = D.47955;
        D.47956 = (int) D.47954;
        falsebb->block_num = D.47956;
        ins->data.op[0].target_block = end_bb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, end_bb);
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47957>; else goto <D.47958>;
        <D.47957>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = ins;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        ins->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        goto <D.47959>;
        <D.47958>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.47959>:
        D.47960 = falsebb->cil_code;
        if (D.47960 != 0B) goto <D.47961>; else goto <D.47962>;
        <D.47961>:
        D.47758 = cfg->cil_offset_to_bb;
        D.47960 = falsebb->cil_code;
        D.47963 = (long int) D.47960;
        D.47760 = cfg->cil_start;
        D.47761 = (long int) D.47760;
        D.47964 = D.47963 - D.47761;
        D.47965 = (long unsigned int) D.47964;
        D.47966 = D.47965 * 8;
        D.47967 = D.47758 + D.47966;
        *D.47967 = falsebb;
        <D.47962>:
        D.47766 = cfg->real_offset;
        falsebb->real_offset = D.47766;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47971>; else goto <D.47968>;
        <D.47971>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47972 = D.47739->opcode;
        D.47973 = D.47972 + 64981;
        D.47974 = D.47973 <= 9;
        D.47975 = D.47972 + 64874;
        D.47976 = D.47975 <= 9;
        D.47977 = D.47974 | D.47976;
        if (D.47977 != 0) goto <D.47969>; else goto <D.47978>;
        <D.47978>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 <= 9) goto <D.47969>; else goto <D.47968>;
        <D.47969>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        D.47782 = *D.47781;
        if (D.47782 == 0B) goto <D.47979>; else goto <D.47968>;
        <D.47979>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        *D.47781 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        goto <D.47970>;
        <D.47968>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 == 0B) goto <D.47980>; else goto <D.47982>;
        <D.47982>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47983 = D.47739->opcode;
        D.47984 = D.47983 != 446;
        D.47985 = D.47983 != 763;
        D.47986 = D.47984 & D.47985;
        if (D.47986 != 0) goto <D.47987>; else goto <D.47981>;
        <D.47987>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47988 = D.47739->opcode;
        D.47989 = D.47988 + 64981;
        D.47990 = D.47989 > 9;
        D.47991 = D.47988 + 64874;
        D.47992 = D.47991 > 9;
        D.47993 = D.47990 & D.47992;
        if (D.47993 != 0) goto <D.47994>; else goto <D.47981>;
        <D.47994>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 > 9) goto <D.47980>; else goto <D.47981>;
        <D.47980>:
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        <D.47981>:
        <D.47970>:
        D.47738 = cfg->cbb;
        D.47738->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.47995>;
        <D.47953>:
        D.47721 = cfg->mempool;
        D.47996 = mono_mempool_alloc (D.47721, 16);
        ins->data.op[1].many_blocks = D.47996;
        D.47997 = ins->data.op[1].many_blocks;
        *D.47997 = end_bb;
        D.47997 = ins->data.op[1].many_blocks;
        D.47998 = D.47997 + 8;
        *D.47998 = 0B;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, end_bb);
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.47999>; else goto <D.48000>;
        <D.47999>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = ins;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        ins->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        goto <D.48001>;
        <D.48000>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.48001>:
        D.47806 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.47807 = D.47806 & 8;
        if (D.47807 == 0) goto <D.48002>; else goto <D.48003>;
        <D.48002>:
        D.47721 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47721, 296);
        D.47722 = cfg->num_bblocks;
        D.48004 = D.47722;
        D.48005 = D.48004 + 1;
        cfg->num_bblocks = D.48005;
        D.48006 = (int) D.48004;
        falsebb->block_num = D.48006;
        D.47997 = ins->data.op[1].many_blocks;
        D.47998 = D.47997 + 8;
        *D.47998 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        D.47960 = falsebb->cil_code;
        if (D.47960 != 0B) goto <D.48007>; else goto <D.48008>;
        <D.48007>:
        D.47758 = cfg->cil_offset_to_bb;
        D.47960 = falsebb->cil_code;
        D.47963 = (long int) D.47960;
        D.47760 = cfg->cil_start;
        D.47761 = (long int) D.47760;
        D.47964 = D.47963 - D.47761;
        D.47965 = (long unsigned int) D.47964;
        D.47966 = D.47965 * 8;
        D.47967 = D.47758 + D.47966;
        *D.47967 = falsebb;
        <D.48008>:
        D.47766 = cfg->real_offset;
        falsebb->real_offset = D.47766;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.48012>; else goto <D.48009>;
        <D.48012>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48013 = D.47739->opcode;
        D.48014 = D.48013 + 64981;
        D.48015 = D.48014 <= 9;
        D.48016 = D.48013 + 64874;
        D.48017 = D.48016 <= 9;
        D.48018 = D.48015 | D.48017;
        if (D.48018 != 0) goto <D.48010>; else goto <D.48019>;
        <D.48019>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 <= 9) goto <D.48010>; else goto <D.48009>;
        <D.48010>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        D.47782 = *D.47781;
        if (D.47782 == 0B) goto <D.48020>; else goto <D.48009>;
        <D.48020>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        *D.47781 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        goto <D.48011>;
        <D.48009>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 == 0B) goto <D.48021>; else goto <D.48023>;
        <D.48023>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48024 = D.47739->opcode;
        D.48025 = D.48024 != 446;
        D.48026 = D.48024 != 763;
        D.48027 = D.48025 & D.48026;
        if (D.48027 != 0) goto <D.48028>; else goto <D.48022>;
        <D.48028>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48029 = D.47739->opcode;
        D.48030 = D.48029 + 64981;
        D.48031 = D.48030 > 9;
        D.48032 = D.48029 + 64874;
        D.48033 = D.48032 > 9;
        D.48034 = D.48031 & D.48033;
        if (D.48034 != 0) goto <D.48035>; else goto <D.48022>;
        <D.48035>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 > 9) goto <D.48021>; else goto <D.48022>;
        <D.48021>:
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        <D.48022>:
        <D.48011>:
        D.47738 = cfg->cbb;
        D.47738->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48036>;
        <D.48003>:
        D.47738 = cfg->cbb;
        D.47738->extended = 1;
        <D.48036>:
        <D.47995>:
      }
      D.48037 = is_ref_bb->cil_code;
      if (D.48037 != 0B) goto <D.48038>; else goto <D.48039>;
      <D.48038>:
      D.47758 = cfg->cil_offset_to_bb;
      D.48037 = is_ref_bb->cil_code;
      D.48040 = (long int) D.48037;
      D.47760 = cfg->cil_start;
      D.47761 = (long int) D.47760;
      D.48041 = D.48040 - D.47761;
      D.48042 = (long unsigned int) D.48041;
      D.48043 = D.48042 * 8;
      D.48044 = D.47758 + D.48043;
      *D.48044 = is_ref_bb;
      <D.48039>:
      D.47766 = cfg->real_offset;
      is_ref_bb->real_offset = D.47766;
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      if (D.47739 != 0B) goto <D.48048>; else goto <D.48045>;
      <D.48048>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.48049 = D.47739->opcode;
      D.48050 = D.48049 + 64981;
      D.48051 = D.48050 <= 9;
      D.48052 = D.48049 + 64874;
      D.48053 = D.48052 <= 9;
      D.48054 = D.48051 | D.48053;
      if (D.48054 != 0) goto <D.48046>; else goto <D.48055>;
      <D.48055>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47778 = D.47739->opcode;
      D.47779 = D.47778 + 64884;
      if (D.47779 <= 9) goto <D.48046>; else goto <D.48045>;
      <D.48046>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47780 = D.47739->data.op[1].many_blocks;
      D.47781 = D.47780 + 8;
      D.47782 = *D.47781;
      if (D.47782 == 0B) goto <D.48056>; else goto <D.48045>;
      <D.48056>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47780 = D.47739->data.op[1].many_blocks;
      D.47781 = D.47780 + 8;
      *D.47781 = is_ref_bb;
      D.47738 = cfg->cbb;
      mono_link_bblock (cfg, D.47738, is_ref_bb);
      goto <D.48047>;
      <D.48045>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      if (D.47739 == 0B) goto <D.48057>; else goto <D.48059>;
      <D.48059>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.48060 = D.47739->opcode;
      D.48061 = D.48060 != 446;
      D.48062 = D.48060 != 763;
      D.48063 = D.48061 & D.48062;
      if (D.48063 != 0) goto <D.48064>; else goto <D.48058>;
      <D.48064>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.48065 = D.47739->opcode;
      D.48066 = D.48065 + 64981;
      D.48067 = D.48066 > 9;
      D.48068 = D.48065 + 64874;
      D.48069 = D.48068 > 9;
      D.48070 = D.48067 & D.48069;
      if (D.48070 != 0) goto <D.48071>; else goto <D.48058>;
      <D.48071>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47778 = D.47739->opcode;
      D.47779 = D.47778 + 64884;
      if (D.47779 > 9) goto <D.48057>; else goto <D.48058>;
      <D.48057>:
      D.47738 = cfg->cbb;
      mono_link_bblock (cfg, D.47738, is_ref_bb);
      <D.48058>:
      <D.48047>:
      D.47738 = cfg->cbb;
      D.47738->next_bb = is_ref_bb;
      cfg->cbb = is_ref_bb;
      D.48072 = alloc_ireg (cfg);
      dreg = (int) D.48072;
      {
        struct MonoInst * var;

        dreg.437 = (unsigned int) dreg;
        D.48075 = cfg->vreg_to_inst_len;
        if (dreg.437 < D.48075) goto <D.48076>; else goto <D.48077>;
        <D.48076>:
        D.48078 = cfg->vreg_to_inst;
        D.48079 = (long unsigned int) dreg;
        D.48080 = D.48079 * 8;
        D.48081 = D.48078 + D.48080;
        iftmp.436 = *D.48081;
        goto <D.48082>;
        <D.48077>:
        iftmp.436 = 0B;
        <D.48082>:
        var = iftmp.436;
        if (var == 0B) goto <D.48083>; else goto <D.48084>;
        <D.48083>:
        D.48085 = &klass->byval_arg;
        var = mono_compile_create_var_for_vreg (cfg, D.48085, 329, dreg);
        <D.48084>:
        D.47721 = cfg->mempool;
        addr = mono_mempool_alloc (D.47721, 80);
        addr->data.op[1].const_val = 0;
        D.47940 = addr->data.op[1].const_val;
        addr->data.op[0].const_val = D.47940;
        addr->prev = 0B;
        D.47941 = addr->prev;
        addr->next = D.47941;
        addr->opcode = 314;
        addr->flags = 0;
        addr->type = 0;
        addr->dreg = -1;
        addr->sreg3 = -1;
        D.47942 = addr->sreg3;
        addr->sreg2 = D.47942;
        D.47943 = addr->sreg2;
        addr->sreg1 = D.47943;
        D.47736 = cfg->ip;
        addr->cil_code = D.47736;
        addr->data.op[0].p = var;
        D.48086 = var->flags;
        D.48087 = D.48086 | 16;
        var->flags = D.48087;
        addr->type = 5;
        D.48088 = var->klass;
        addr->klass = D.48088;
        D.48089 = alloc_dreg (cfg, 5);
        D.48090 = (int) D.48089;
        addr->dreg = D.48090;
        cfg->has_indirection = 1;
        D.48091 = cfg->gsharedvt;
        D.48092 = D.48091 != 0;
        D.48093 = (long int) D.48092;
        D.48094 = __builtin_expect (D.48093, 0);
        if (D.48094 != 0) goto <D.48095>; else goto <D.48096>;
        <D.48095>:
        D.48097 = var->data.op[1].vtype;
        D.48098 = mini_is_gsharedvt_variable_type (cfg, D.48097);
        if (D.48098 != 0) goto <D.48099>; else goto <D.48100>;
        <D.48099>:
        handle_gsharedvt_ldaddr (cfg);
        <D.48100>:
        <D.48096>:
        if (0 != 0) goto <D.48101>; else goto <D.48102>;
        <D.48101>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.48104 = var->dreg;
          D.48105 = D.48104 + 1;
          D.48106 = (unsigned int) D.48105;
          D.48075 = cfg->vreg_to_inst_len;
          if (D.48106 < D.48075) goto <D.48107>; else goto <D.48108>;
          <D.48107>:
          D.48078 = cfg->vreg_to_inst;
          D.48104 = var->dreg;
          D.48109 = (sizetype) D.48104;
          D.48110 = D.48109 + 1;
          D.48111 = D.48110 * 8;
          D.48112 = D.48078 + D.48111;
          iftmp.438 = *D.48112;
          goto <D.48113>;
          <D.48108>:
          iftmp.438 = 0B;
          <D.48113>:
          var1 = iftmp.438;
          D.48104 = var->dreg;
          D.48115 = D.48104 + 2;
          D.48116 = (unsigned int) D.48115;
          D.48075 = cfg->vreg_to_inst_len;
          if (D.48116 < D.48075) goto <D.48117>; else goto <D.48118>;
          <D.48117>:
          D.48078 = cfg->vreg_to_inst;
          D.48104 = var->dreg;
          D.48109 = (sizetype) D.48104;
          D.48119 = D.48109 + 2;
          D.48120 = D.48119 * 8;
          D.48121 = D.48078 + D.48120;
          iftmp.439 = *D.48121;
          goto <D.48122>;
          <D.48118>:
          iftmp.439 = 0B;
          <D.48122>:
          var2 = iftmp.439;
          D.48123 = var1 == 0B;
          D.48124 = (long int) D.48123;
          D.48125 = __builtin_expect (D.48124, 0);
          if (D.48125 != 0) goto <D.48126>; else goto <D.48127>;
          <D.48126>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3684, "var1");
          <D.48127>:
          D.48128 = var2 == 0B;
          D.48129 = (long int) D.48128;
          D.48130 = __builtin_expect (D.48129, 0);
          if (D.48130 != 0) goto <D.48131>; else goto <D.48132>;
          <D.48131>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3684, "var2");
          <D.48132>:
          D.48133 = var1->flags;
          D.48134 = D.48133 | 16;
          var1->flags = D.48134;
          D.48135 = var2->flags;
          D.48136 = D.48135 | 16;
          var2->flags = D.48136;
        }
        <D.48102>:
      }
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      if (D.47739 != 0B) goto <D.48137>; else goto <D.48138>;
      <D.48137>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47739->next = addr;
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      addr->prev = D.47739;
      D.47738 = cfg->cbb;
      D.47738->last_ins = addr;
      goto <D.48139>;
      <D.48138>:
      D.47738 = cfg->cbb;
      D.47738 = cfg->cbb;
      D.47738->last_ins = addr;
      D.47739 = D.47738->last_ins;
      D.47738->code = D.47739;
      <D.48139>:
      addr->dreg = addr_reg;
      {
        struct MonoInst * inst;

        D.47721 = cfg->mempool;
        inst = mono_mempool_alloc (D.47721, 80);
        inst->data.op[1].const_val = 0;
        D.48140 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48140;
        inst->prev = 0B;
        D.48141 = inst->prev;
        inst->next = D.48141;
        inst->opcode = 374;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48142 = inst->sreg3;
        inst->sreg2 = D.48142;
        D.48143 = inst->sreg2;
        inst->sreg1 = D.48143;
        D.47736 = cfg->ip;
        inst->cil_code = D.47736;
        obj.434 = obj;
        D.47944 = obj.434->dreg;
        inst->sreg1 = D.47944;
        D.48144 = addr->dreg;
        inst->dreg = D.48144;
        inst->data.op[0].const_val = 0;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.48145>; else goto <D.48146>;
        <D.48145>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = inst;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        inst->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = inst;
        goto <D.48147>;
        <D.48146>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = inst;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.48147>:
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47721 = cfg->mempool;
        ins = mono_mempool_alloc (D.47721, 80);
        ins->data.op[1].const_val = 0;
        D.48148 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.48148;
        ins->prev = 0B;
        D.48149 = ins->prev;
        ins->next = D.48149;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.48150 = ins->sreg3;
        ins->sreg2 = D.48150;
        D.48151 = ins->sreg2;
        ins->sreg1 = D.48151;
        D.47736 = cfg->ip;
        ins->cil_code = D.47736;
        if (1 != 0) goto <D.48152>; else goto <D.48153>;
        <D.48152>:
        D.47721 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47721, 296);
        D.47722 = cfg->num_bblocks;
        D.48154 = D.47722;
        D.48155 = D.48154 + 1;
        cfg->num_bblocks = D.48155;
        D.48156 = (int) D.48154;
        falsebb->block_num = D.48156;
        ins->data.op[0].target_block = end_bb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, end_bb);
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.48157>; else goto <D.48158>;
        <D.48157>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = ins;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        ins->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        goto <D.48159>;
        <D.48158>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.48159>:
        D.48160 = falsebb->cil_code;
        if (D.48160 != 0B) goto <D.48161>; else goto <D.48162>;
        <D.48161>:
        D.47758 = cfg->cil_offset_to_bb;
        D.48160 = falsebb->cil_code;
        D.48163 = (long int) D.48160;
        D.47760 = cfg->cil_start;
        D.47761 = (long int) D.47760;
        D.48164 = D.48163 - D.47761;
        D.48165 = (long unsigned int) D.48164;
        D.48166 = D.48165 * 8;
        D.48167 = D.47758 + D.48166;
        *D.48167 = falsebb;
        <D.48162>:
        D.47766 = cfg->real_offset;
        falsebb->real_offset = D.47766;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.48171>; else goto <D.48168>;
        <D.48171>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48172 = D.47739->opcode;
        D.48173 = D.48172 + 64981;
        D.48174 = D.48173 <= 9;
        D.48175 = D.48172 + 64874;
        D.48176 = D.48175 <= 9;
        D.48177 = D.48174 | D.48176;
        if (D.48177 != 0) goto <D.48169>; else goto <D.48178>;
        <D.48178>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 <= 9) goto <D.48169>; else goto <D.48168>;
        <D.48169>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        D.47782 = *D.47781;
        if (D.47782 == 0B) goto <D.48179>; else goto <D.48168>;
        <D.48179>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        *D.47781 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        goto <D.48170>;
        <D.48168>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 == 0B) goto <D.48180>; else goto <D.48182>;
        <D.48182>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48183 = D.47739->opcode;
        D.48184 = D.48183 != 446;
        D.48185 = D.48183 != 763;
        D.48186 = D.48184 & D.48185;
        if (D.48186 != 0) goto <D.48187>; else goto <D.48181>;
        <D.48187>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48188 = D.47739->opcode;
        D.48189 = D.48188 + 64981;
        D.48190 = D.48189 > 9;
        D.48191 = D.48188 + 64874;
        D.48192 = D.48191 > 9;
        D.48193 = D.48190 & D.48192;
        if (D.48193 != 0) goto <D.48194>; else goto <D.48181>;
        <D.48194>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 > 9) goto <D.48180>; else goto <D.48181>;
        <D.48180>:
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        <D.48181>:
        <D.48170>:
        D.47738 = cfg->cbb;
        D.47738->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48195>;
        <D.48153>:
        D.47721 = cfg->mempool;
        D.48196 = mono_mempool_alloc (D.47721, 16);
        ins->data.op[1].many_blocks = D.48196;
        D.48197 = ins->data.op[1].many_blocks;
        *D.48197 = end_bb;
        D.48197 = ins->data.op[1].many_blocks;
        D.48198 = D.48197 + 8;
        *D.48198 = 0B;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, end_bb);
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.48199>; else goto <D.48200>;
        <D.48199>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = ins;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        ins->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        goto <D.48201>;
        <D.48200>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.48201>:
        D.47806 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.47807 = D.47806 & 8;
        if (D.47807 == 0) goto <D.48202>; else goto <D.48203>;
        <D.48202>:
        D.47721 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47721, 296);
        D.47722 = cfg->num_bblocks;
        D.48204 = D.47722;
        D.48205 = D.48204 + 1;
        cfg->num_bblocks = D.48205;
        D.48206 = (int) D.48204;
        falsebb->block_num = D.48206;
        D.48197 = ins->data.op[1].many_blocks;
        D.48198 = D.48197 + 8;
        *D.48198 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        D.48160 = falsebb->cil_code;
        if (D.48160 != 0B) goto <D.48207>; else goto <D.48208>;
        <D.48207>:
        D.47758 = cfg->cil_offset_to_bb;
        D.48160 = falsebb->cil_code;
        D.48163 = (long int) D.48160;
        D.47760 = cfg->cil_start;
        D.47761 = (long int) D.47760;
        D.48164 = D.48163 - D.47761;
        D.48165 = (long unsigned int) D.48164;
        D.48166 = D.48165 * 8;
        D.48167 = D.47758 + D.48166;
        *D.48167 = falsebb;
        <D.48208>:
        D.47766 = cfg->real_offset;
        falsebb->real_offset = D.47766;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.48212>; else goto <D.48209>;
        <D.48212>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48213 = D.47739->opcode;
        D.48214 = D.48213 + 64981;
        D.48215 = D.48214 <= 9;
        D.48216 = D.48213 + 64874;
        D.48217 = D.48216 <= 9;
        D.48218 = D.48215 | D.48217;
        if (D.48218 != 0) goto <D.48210>; else goto <D.48219>;
        <D.48219>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 <= 9) goto <D.48210>; else goto <D.48209>;
        <D.48210>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        D.47782 = *D.47781;
        if (D.47782 == 0B) goto <D.48220>; else goto <D.48209>;
        <D.48220>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        *D.47781 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        goto <D.48211>;
        <D.48209>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 == 0B) goto <D.48221>; else goto <D.48223>;
        <D.48223>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48224 = D.47739->opcode;
        D.48225 = D.48224 != 446;
        D.48226 = D.48224 != 763;
        D.48227 = D.48225 & D.48226;
        if (D.48227 != 0) goto <D.48228>; else goto <D.48222>;
        <D.48228>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48229 = D.47739->opcode;
        D.48230 = D.48229 + 64981;
        D.48231 = D.48230 > 9;
        D.48232 = D.48229 + 64874;
        D.48233 = D.48232 > 9;
        D.48234 = D.48231 & D.48233;
        if (D.48234 != 0) goto <D.48235>; else goto <D.48222>;
        <D.48235>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 > 9) goto <D.48221>; else goto <D.48222>;
        <D.48221>:
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        <D.48222>:
        <D.48211>:
        D.47738 = cfg->cbb;
        D.47738->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48236>;
        <D.48203>:
        D.47738 = cfg->cbb;
        D.47738->extended = 1;
        <D.48236>:
        <D.48195>:
      }
      D.48237 = is_nullable_bb->cil_code;
      if (D.48237 != 0B) goto <D.48238>; else goto <D.48239>;
      <D.48238>:
      D.47758 = cfg->cil_offset_to_bb;
      D.48237 = is_nullable_bb->cil_code;
      D.48240 = (long int) D.48237;
      D.47760 = cfg->cil_start;
      D.47761 = (long int) D.47760;
      D.48241 = D.48240 - D.47761;
      D.48242 = (long unsigned int) D.48241;
      D.48243 = D.48242 * 8;
      D.48244 = D.47758 + D.48243;
      *D.48244 = is_nullable_bb;
      <D.48239>:
      D.47766 = cfg->real_offset;
      is_nullable_bb->real_offset = D.47766;
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      if (D.47739 != 0B) goto <D.48248>; else goto <D.48245>;
      <D.48248>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.48249 = D.47739->opcode;
      D.48250 = D.48249 + 64981;
      D.48251 = D.48250 <= 9;
      D.48252 = D.48249 + 64874;
      D.48253 = D.48252 <= 9;
      D.48254 = D.48251 | D.48253;
      if (D.48254 != 0) goto <D.48246>; else goto <D.48255>;
      <D.48255>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47778 = D.47739->opcode;
      D.47779 = D.47778 + 64884;
      if (D.47779 <= 9) goto <D.48246>; else goto <D.48245>;
      <D.48246>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47780 = D.47739->data.op[1].many_blocks;
      D.47781 = D.47780 + 8;
      D.47782 = *D.47781;
      if (D.47782 == 0B) goto <D.48256>; else goto <D.48245>;
      <D.48256>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47780 = D.47739->data.op[1].many_blocks;
      D.47781 = D.47780 + 8;
      *D.47781 = is_nullable_bb;
      D.47738 = cfg->cbb;
      mono_link_bblock (cfg, D.47738, is_nullable_bb);
      goto <D.48247>;
      <D.48245>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      if (D.47739 == 0B) goto <D.48257>; else goto <D.48259>;
      <D.48259>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.48260 = D.47739->opcode;
      D.48261 = D.48260 != 446;
      D.48262 = D.48260 != 763;
      D.48263 = D.48261 & D.48262;
      if (D.48263 != 0) goto <D.48264>; else goto <D.48258>;
      <D.48264>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.48265 = D.47739->opcode;
      D.48266 = D.48265 + 64981;
      D.48267 = D.48266 > 9;
      D.48268 = D.48265 + 64874;
      D.48269 = D.48268 > 9;
      D.48270 = D.48267 & D.48269;
      if (D.48270 != 0) goto <D.48271>; else goto <D.48258>;
      <D.48271>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47778 = D.47739->opcode;
      D.47779 = D.47778 + 64884;
      if (D.47779 > 9) goto <D.48257>; else goto <D.48258>;
      <D.48257>:
      D.47738 = cfg->cbb;
      mono_link_bblock (cfg, D.47738, is_nullable_bb);
      <D.48258>:
      <D.48247>:
      D.47738 = cfg->cbb;
      D.47738->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.48085 = &klass->byval_arg;
        var = mono_compile_create_var (cfg, D.48085, 329);
        D.47721 = cfg->mempool;
        unbox_sig = mono_mempool_alloc0 (D.47721, 24);
        D.48085 = &klass->byval_arg;
        unbox_sig->ret = D.48085;
        unbox_sig->param_count = 1;
        D.48272 = mono_defaults.object_class;
        D.48273 = &D.48272->byval_arg;
        unbox_sig->params[0] = D.48273;
        unbox_call = mono_emit_calli (cfg, unbox_sig, &obj, addr, 0B, 0B);
        {
          struct MonoInst * var;

          D.48275 = unbox_call->dreg;
          D.48276 = (unsigned int) D.48275;
          D.48075 = cfg->vreg_to_inst_len;
          if (D.48276 < D.48075) goto <D.48277>; else goto <D.48278>;
          <D.48277>:
          D.48078 = cfg->vreg_to_inst;
          D.48275 = unbox_call->dreg;
          D.48279 = (long unsigned int) D.48275;
          D.48280 = D.48279 * 8;
          D.48281 = D.48078 + D.48280;
          iftmp.440 = *D.48281;
          goto <D.48282>;
          <D.48278>:
          iftmp.440 = 0B;
          <D.48282>:
          var = iftmp.440;
          if (var == 0B) goto <D.48283>; else goto <D.48284>;
          <D.48283>:
          D.48275 = unbox_call->dreg;
          D.48085 = &klass->byval_arg;
          var = mono_compile_create_var_for_vreg (cfg, D.48085, 329, D.48275);
          <D.48284>:
          D.47721 = cfg->mempool;
          addr = mono_mempool_alloc (D.47721, 80);
          addr->data.op[1].const_val = 0;
          D.48285 = addr->data.op[1].const_val;
          addr->data.op[0].const_val = D.48285;
          addr->prev = 0B;
          D.48286 = addr->prev;
          addr->next = D.48286;
          addr->opcode = 314;
          addr->flags = 0;
          addr->type = 0;
          addr->dreg = -1;
          addr->sreg3 = -1;
          D.48287 = addr->sreg3;
          addr->sreg2 = D.48287;
          D.48288 = addr->sreg2;
          addr->sreg1 = D.48288;
          D.47736 = cfg->ip;
          addr->cil_code = D.47736;
          addr->data.op[0].p = var;
          D.48289 = var->flags;
          D.48290 = D.48289 | 16;
          var->flags = D.48290;
          addr->type = 5;
          D.48291 = var->klass;
          addr->klass = D.48291;
          D.48292 = alloc_dreg (cfg, 5);
          D.48293 = (int) D.48292;
          addr->dreg = D.48293;
          cfg->has_indirection = 1;
          D.48091 = cfg->gsharedvt;
          D.48092 = D.48091 != 0;
          D.48093 = (long int) D.48092;
          D.48094 = __builtin_expect (D.48093, 0);
          if (D.48094 != 0) goto <D.48294>; else goto <D.48295>;
          <D.48294>:
          D.48296 = var->data.op[1].vtype;
          D.48297 = mini_is_gsharedvt_variable_type (cfg, D.48296);
          if (D.48297 != 0) goto <D.48298>; else goto <D.48299>;
          <D.48298>:
          handle_gsharedvt_ldaddr (cfg);
          <D.48299>:
          <D.48295>:
          if (0 != 0) goto <D.48300>; else goto <D.48301>;
          <D.48300>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.48303 = var->dreg;
            D.48304 = D.48303 + 1;
            D.48305 = (unsigned int) D.48304;
            D.48075 = cfg->vreg_to_inst_len;
            if (D.48305 < D.48075) goto <D.48306>; else goto <D.48307>;
            <D.48306>:
            D.48078 = cfg->vreg_to_inst;
            D.48303 = var->dreg;
            D.48308 = (sizetype) D.48303;
            D.48309 = D.48308 + 1;
            D.48310 = D.48309 * 8;
            D.48311 = D.48078 + D.48310;
            iftmp.441 = *D.48311;
            goto <D.48312>;
            <D.48307>:
            iftmp.441 = 0B;
            <D.48312>:
            var1 = iftmp.441;
            D.48303 = var->dreg;
            D.48314 = D.48303 + 2;
            D.48315 = (unsigned int) D.48314;
            D.48075 = cfg->vreg_to_inst_len;
            if (D.48315 < D.48075) goto <D.48316>; else goto <D.48317>;
            <D.48316>:
            D.48078 = cfg->vreg_to_inst;
            D.48303 = var->dreg;
            D.48308 = (sizetype) D.48303;
            D.48318 = D.48308 + 2;
            D.48319 = D.48318 * 8;
            D.48320 = D.48078 + D.48319;
            iftmp.442 = *D.48320;
            goto <D.48321>;
            <D.48317>:
            iftmp.442 = 0B;
            <D.48321>:
            var2 = iftmp.442;
            D.48322 = var1 == 0B;
            D.48323 = (long int) D.48322;
            D.48324 = __builtin_expect (D.48323, 0);
            if (D.48324 != 0) goto <D.48325>; else goto <D.48326>;
            <D.48325>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3706, "var1");
            <D.48326>:
            D.48327 = var2 == 0B;
            D.48328 = (long int) D.48327;
            D.48329 = __builtin_expect (D.48328, 0);
            if (D.48329 != 0) goto <D.48330>; else goto <D.48331>;
            <D.48330>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3706, "var2");
            <D.48331>:
            D.48332 = var1->flags;
            D.48333 = D.48332 | 16;
            var1->flags = D.48333;
            D.48334 = var2->flags;
            D.48335 = D.48334 | 16;
            var2->flags = D.48335;
          }
          <D.48301>:
        }
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.48336>; else goto <D.48337>;
        <D.48336>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = addr;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        addr->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = addr;
        goto <D.48338>;
        <D.48337>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = addr;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.48338>:
        addr->dreg = addr_reg;
      }
      {
        struct MonoInst * ins;
        struct MonoBasicBlock * falsebb;

        D.47721 = cfg->mempool;
        ins = mono_mempool_alloc (D.47721, 80);
        ins->data.op[1].const_val = 0;
        D.48339 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.48339;
        ins->prev = 0B;
        D.48340 = ins->prev;
        ins->next = D.48340;
        ins->opcode = 446;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.48341 = ins->sreg3;
        ins->sreg2 = D.48341;
        D.48342 = ins->sreg2;
        ins->sreg1 = D.48342;
        D.47736 = cfg->ip;
        ins->cil_code = D.47736;
        if (1 != 0) goto <D.48343>; else goto <D.48344>;
        <D.48343>:
        D.47721 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47721, 296);
        D.47722 = cfg->num_bblocks;
        D.48345 = D.47722;
        D.48346 = D.48345 + 1;
        cfg->num_bblocks = D.48346;
        D.48347 = (int) D.48345;
        falsebb->block_num = D.48347;
        ins->data.op[0].target_block = end_bb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, end_bb);
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.48348>; else goto <D.48349>;
        <D.48348>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = ins;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        ins->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        goto <D.48350>;
        <D.48349>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.48350>:
        D.48351 = falsebb->cil_code;
        if (D.48351 != 0B) goto <D.48352>; else goto <D.48353>;
        <D.48352>:
        D.47758 = cfg->cil_offset_to_bb;
        D.48351 = falsebb->cil_code;
        D.48354 = (long int) D.48351;
        D.47760 = cfg->cil_start;
        D.47761 = (long int) D.47760;
        D.48355 = D.48354 - D.47761;
        D.48356 = (long unsigned int) D.48355;
        D.48357 = D.48356 * 8;
        D.48358 = D.47758 + D.48357;
        *D.48358 = falsebb;
        <D.48353>:
        D.47766 = cfg->real_offset;
        falsebb->real_offset = D.47766;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.48362>; else goto <D.48359>;
        <D.48362>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48363 = D.47739->opcode;
        D.48364 = D.48363 + 64981;
        D.48365 = D.48364 <= 9;
        D.48366 = D.48363 + 64874;
        D.48367 = D.48366 <= 9;
        D.48368 = D.48365 | D.48367;
        if (D.48368 != 0) goto <D.48360>; else goto <D.48369>;
        <D.48369>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 <= 9) goto <D.48360>; else goto <D.48359>;
        <D.48360>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        D.47782 = *D.47781;
        if (D.47782 == 0B) goto <D.48370>; else goto <D.48359>;
        <D.48370>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        *D.47781 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        goto <D.48361>;
        <D.48359>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 == 0B) goto <D.48371>; else goto <D.48373>;
        <D.48373>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48374 = D.47739->opcode;
        D.48375 = D.48374 != 446;
        D.48376 = D.48374 != 763;
        D.48377 = D.48375 & D.48376;
        if (D.48377 != 0) goto <D.48378>; else goto <D.48372>;
        <D.48378>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48379 = D.47739->opcode;
        D.48380 = D.48379 + 64981;
        D.48381 = D.48380 > 9;
        D.48382 = D.48379 + 64874;
        D.48383 = D.48382 > 9;
        D.48384 = D.48381 & D.48383;
        if (D.48384 != 0) goto <D.48385>; else goto <D.48372>;
        <D.48385>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 > 9) goto <D.48371>; else goto <D.48372>;
        <D.48371>:
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        <D.48372>:
        <D.48361>:
        D.47738 = cfg->cbb;
        D.47738->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48386>;
        <D.48344>:
        D.47721 = cfg->mempool;
        D.48387 = mono_mempool_alloc (D.47721, 16);
        ins->data.op[1].many_blocks = D.48387;
        D.48388 = ins->data.op[1].many_blocks;
        *D.48388 = end_bb;
        D.48388 = ins->data.op[1].many_blocks;
        D.48389 = D.48388 + 8;
        *D.48389 = 0B;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, end_bb);
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.48390>; else goto <D.48391>;
        <D.48390>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47739->next = ins;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        ins->prev = D.47739;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        goto <D.48392>;
        <D.48391>:
        D.47738 = cfg->cbb;
        D.47738 = cfg->cbb;
        D.47738->last_ins = ins;
        D.47739 = D.47738->last_ins;
        D.47738->code = D.47739;
        <D.48392>:
        D.47806 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.47807 = D.47806 & 8;
        if (D.47807 == 0) goto <D.48393>; else goto <D.48394>;
        <D.48393>:
        D.47721 = cfg->mempool;
        falsebb = mono_mempool_alloc0 (D.47721, 296);
        D.47722 = cfg->num_bblocks;
        D.48395 = D.47722;
        D.48396 = D.48395 + 1;
        cfg->num_bblocks = D.48396;
        D.48397 = (int) D.48395;
        falsebb->block_num = D.48397;
        D.48388 = ins->data.op[1].many_blocks;
        D.48389 = D.48388 + 8;
        *D.48389 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        D.48351 = falsebb->cil_code;
        if (D.48351 != 0B) goto <D.48398>; else goto <D.48399>;
        <D.48398>:
        D.47758 = cfg->cil_offset_to_bb;
        D.48351 = falsebb->cil_code;
        D.48354 = (long int) D.48351;
        D.47760 = cfg->cil_start;
        D.47761 = (long int) D.47760;
        D.48355 = D.48354 - D.47761;
        D.48356 = (long unsigned int) D.48355;
        D.48357 = D.48356 * 8;
        D.48358 = D.47758 + D.48357;
        *D.48358 = falsebb;
        <D.48399>:
        D.47766 = cfg->real_offset;
        falsebb->real_offset = D.47766;
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 != 0B) goto <D.48403>; else goto <D.48400>;
        <D.48403>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48404 = D.47739->opcode;
        D.48405 = D.48404 + 64981;
        D.48406 = D.48405 <= 9;
        D.48407 = D.48404 + 64874;
        D.48408 = D.48407 <= 9;
        D.48409 = D.48406 | D.48408;
        if (D.48409 != 0) goto <D.48401>; else goto <D.48410>;
        <D.48410>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 <= 9) goto <D.48401>; else goto <D.48400>;
        <D.48401>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        D.47782 = *D.47781;
        if (D.47782 == 0B) goto <D.48411>; else goto <D.48400>;
        <D.48411>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47780 = D.47739->data.op[1].many_blocks;
        D.47781 = D.47780 + 8;
        *D.47781 = falsebb;
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        goto <D.48402>;
        <D.48400>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        if (D.47739 == 0B) goto <D.48412>; else goto <D.48414>;
        <D.48414>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48415 = D.47739->opcode;
        D.48416 = D.48415 != 446;
        D.48417 = D.48415 != 763;
        D.48418 = D.48416 & D.48417;
        if (D.48418 != 0) goto <D.48419>; else goto <D.48413>;
        <D.48419>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.48420 = D.47739->opcode;
        D.48421 = D.48420 + 64981;
        D.48422 = D.48421 > 9;
        D.48423 = D.48420 + 64874;
        D.48424 = D.48423 > 9;
        D.48425 = D.48422 & D.48424;
        if (D.48425 != 0) goto <D.48426>; else goto <D.48413>;
        <D.48426>:
        D.47738 = cfg->cbb;
        D.47739 = D.47738->last_ins;
        D.47778 = D.47739->opcode;
        D.47779 = D.47778 + 64884;
        if (D.47779 > 9) goto <D.48412>; else goto <D.48413>;
        <D.48412>:
        D.47738 = cfg->cbb;
        mono_link_bblock (cfg, D.47738, falsebb);
        <D.48413>:
        <D.48402>:
        D.47738 = cfg->cbb;
        D.47738->next_bb = falsebb;
        cfg->cbb = falsebb;
        goto <D.48427>;
        <D.48394>:
        D.47738 = cfg->cbb;
        D.47738->extended = 1;
        <D.48427>:
        <D.48386>:
      }
      D.48428 = end_bb->cil_code;
      if (D.48428 != 0B) goto <D.48429>; else goto <D.48430>;
      <D.48429>:
      D.47758 = cfg->cil_offset_to_bb;
      D.48428 = end_bb->cil_code;
      D.48431 = (long int) D.48428;
      D.47760 = cfg->cil_start;
      D.47761 = (long int) D.47760;
      D.48432 = D.48431 - D.47761;
      D.48433 = (long unsigned int) D.48432;
      D.48434 = D.48433 * 8;
      D.48435 = D.47758 + D.48434;
      *D.48435 = end_bb;
      <D.48430>:
      D.47766 = cfg->real_offset;
      end_bb->real_offset = D.47766;
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      if (D.47739 != 0B) goto <D.48439>; else goto <D.48436>;
      <D.48439>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.48440 = D.47739->opcode;
      D.48441 = D.48440 + 64981;
      D.48442 = D.48441 <= 9;
      D.48443 = D.48440 + 64874;
      D.48444 = D.48443 <= 9;
      D.48445 = D.48442 | D.48444;
      if (D.48445 != 0) goto <D.48437>; else goto <D.48446>;
      <D.48446>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47778 = D.47739->opcode;
      D.47779 = D.47778 + 64884;
      if (D.47779 <= 9) goto <D.48437>; else goto <D.48436>;
      <D.48437>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47780 = D.47739->data.op[1].many_blocks;
      D.47781 = D.47780 + 8;
      D.47782 = *D.47781;
      if (D.47782 == 0B) goto <D.48447>; else goto <D.48436>;
      <D.48447>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47780 = D.47739->data.op[1].many_blocks;
      D.47781 = D.47780 + 8;
      *D.47781 = end_bb;
      D.47738 = cfg->cbb;
      mono_link_bblock (cfg, D.47738, end_bb);
      goto <D.48438>;
      <D.48436>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      if (D.47739 == 0B) goto <D.48448>; else goto <D.48450>;
      <D.48450>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.48451 = D.47739->opcode;
      D.48452 = D.48451 != 446;
      D.48453 = D.48451 != 763;
      D.48454 = D.48452 & D.48453;
      if (D.48454 != 0) goto <D.48455>; else goto <D.48449>;
      <D.48455>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.48456 = D.47739->opcode;
      D.48457 = D.48456 + 64981;
      D.48458 = D.48457 > 9;
      D.48459 = D.48456 + 64874;
      D.48460 = D.48459 > 9;
      D.48461 = D.48458 & D.48460;
      if (D.48461 != 0) goto <D.48462>; else goto <D.48449>;
      <D.48462>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47778 = D.47739->opcode;
      D.47779 = D.47778 + 64884;
      if (D.47779 > 9) goto <D.48448>; else goto <D.48449>;
      <D.48448>:
      D.47738 = cfg->cbb;
      mono_link_bblock (cfg, D.47738, end_bb);
      <D.48449>:
      <D.48438>:
      D.47738 = cfg->cbb;
      D.47738->next_bb = end_bb;
      cfg->cbb = end_bb;
      D.47721 = cfg->mempool;
      ins = mono_mempool_alloc (D.47721, 80);
      ins->data.op[1].const_val = 0;
      D.48463 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.48463;
      ins->prev = 0B;
      D.48464 = ins->prev;
      ins->next = D.48464;
      D.48085 = &klass->byval_arg;
      D.48465 = mono_type_to_load_membase (cfg, D.48085);
      D.48466 = (short unsigned int) D.48465;
      ins->opcode = D.48466;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.48467 = ins->sreg3;
      ins->sreg2 = D.48467;
      D.48468 = ins->sreg2;
      ins->sreg1 = D.48468;
      D.47736 = cfg->ip;
      ins->cil_code = D.47736;
      ins->dreg = 0;
      ins->sreg1 = addr_reg;
      ins->data.op[0].const_val = 0;
      ins->type = 1;
      D.48085 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.48085, ins);
      D.48469 = ins->type;
      D.48470 = (<unnamed type>) D.48469;
      D.48471 = alloc_dreg (cfg, D.48470);
      D.48472 = (int) D.48471;
      ins->dreg = D.48472;
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      if (D.47739 != 0B) goto <D.48473>; else goto <D.48474>;
      <D.48473>:
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      D.47739->next = ins;
      D.47738 = cfg->cbb;
      D.47739 = D.47738->last_ins;
      ins->prev = D.47739;
      D.47738 = cfg->cbb;
      D.47738->last_ins = ins;
      goto <D.48475>;
      <D.48474>:
      D.47738 = cfg->cbb;
      D.47738 = cfg->cbb;
      D.47738->last_ins = ins;
      D.47739 = D.47738->last_ins;
      D.47738->code = D.47739;
      <D.48475>:
      D.47738 = cfg->cbb;
      *out_cbb = D.47738;
      D.48476 = ins;
      return D.48476;
    }
  finally
    {
      args = {CLOBBER};
    }
}


mini_class_has_reference_variant_generic_argument (struct MonoCompile * cfg, struct MonoClass * klass, int context_used)
{
  struct MonoGenericClass * D.48479;
  struct MonoClass * D.48482;
  struct MonoGenericContainer * D.48486;
  gboolean D.48489;
  struct MonoGenericParamFull * D.48490;
  long unsigned int D.48491;
  long unsigned int D.48492;
  struct MonoGenericParamFull * D.48493;
  short unsigned int D.48494;
  int D.48495;
  int D.48496;
  int D.48499;
  <unnamed-signed:31> D.48502;
  int D.48503;
  int i;
  struct MonoGenericContainer * container;
  struct MonoGenericInst * ginst;

  D.48479 = klass->generic_class;
  if (D.48479 != 0B) goto <D.48480>; else goto <D.48481>;
  <D.48480>:
  D.48479 = klass->generic_class;
  D.48482 = D.48479->container_class;
  container = D.48482->generic_container;
  D.48479 = klass->generic_class;
  ginst = D.48479->context.class_inst;
  goto <D.48483>;
  <D.48481>:
  D.48486 = klass->generic_container;
  if (D.48486 != 0B) goto <D.48487>; else goto <D.48484>;
  <D.48487>:
  if (context_used != 0) goto <D.48488>; else goto <D.48484>;
  <D.48488>:
  container = klass->generic_container;
  ginst = container->context.class_inst;
  goto <D.48485>;
  <D.48484>:
  D.48489 = 0;
  return D.48489;
  <D.48485>:
  <D.48483>:
  i = 0;
  goto <D.26259>;
  <D.26258>:
  {
    struct MonoType * type;

    D.48490 = container->type_params;
    D.48491 = (long unsigned int) i;
    D.48492 = D.48491 * 56;
    D.48493 = D.48490 + D.48492;
    D.48494 = D.48493->info.flags;
    D.48495 = (int) D.48494;
    D.48496 = D.48495 & 3;
    if (D.48496 == 0) goto <D.48497>; else goto <D.48498>;
    <D.48497>:
    // predicted unlikely by continue predictor.
    goto <D.26257>;
    <D.48498>:
    type = ginst->type_argv[i];
    D.48499 = mini_type_is_reference (cfg, type);
    if (D.48499 != 0) goto <D.48500>; else goto <D.48501>;
    <D.48500>:
    D.48489 = 1;
    return D.48489;
    <D.48501>:
  }
  <D.26257>:
  i = i + 1;
  <D.26259>:
  D.48502 = container->type_argc;
  D.48503 = (int) D.48502;
  if (D.48503 > i) goto <D.26258>; else goto <D.26260>;
  <D.26260>:
  D.48489 = 0;
  return D.48489;
}


handle_castclass (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src, int context_used)
{
  unsigned int D.48505;
  struct MonoMemPool * D.48510;
  void * D.48511;
  struct MonoInst * D.48512;
  long int D.48513;
  struct MonoInst * D.48514;
  int D.48515;
  int D.48516;
  const unsigned char * D.48517;
  unsigned int D.48518;
  int D.48519;
  int D.48520;
  struct MonoBasicBlock * D.48521;
  struct MonoInst * D.48522;
  struct MonoInst * D.48526;
  unsigned int D.48527;
  unsigned int D.48528;
  unsigned int D.48529;
  int D.48530;
  long int D.48531;
  struct MonoInst * D.48532;
  int D.48533;
  int D.48534;
  long int D.48538;
  struct MonoInst * D.48539;
  int D.48540;
  int D.48541;
  unsigned int D.48544;
  unsigned int D.48545;
  int D.48546;
  unsigned char * D.48550;
  struct MonoBasicBlock * * D.48553;
  long int D.48554;
  unsigned char * D.48555;
  long int D.48556;
  long int D.48557;
  long unsigned int D.48558;
  long unsigned int D.48559;
  struct MonoBasicBlock * * D.48560;
  unsigned int D.48561;
  short unsigned int D.48566;
  short unsigned int D.48567;
  _Bool D.48568;
  short unsigned int D.48569;
  _Bool D.48570;
  _Bool D.48571;
  short unsigned int D.48573;
  short unsigned int D.48574;
  struct MonoBasicBlock * * D.48575;
  struct MonoBasicBlock * * D.48576;
  struct MonoBasicBlock * D.48577;
  short unsigned int D.48582;
  _Bool D.48583;
  _Bool D.48584;
  _Bool D.48585;
  short unsigned int D.48587;
  short unsigned int D.48588;
  _Bool D.48589;
  short unsigned int D.48590;
  _Bool D.48591;
  _Bool D.48592;
  void * D.48595;
  struct MonoBasicBlock * * D.48596;
  struct MonoBasicBlock * * D.48597;
  unsigned char D.48601;
  unsigned char D.48602;
  unsigned int D.48605;
  unsigned int D.48606;
  int D.48607;
  short unsigned int D.48614;
  short unsigned int D.48615;
  _Bool D.48616;
  short unsigned int D.48617;
  _Bool D.48618;
  _Bool D.48619;
  short unsigned int D.48625;
  _Bool D.48626;
  _Bool D.48627;
  _Bool D.48628;
  short unsigned int D.48630;
  short unsigned int D.48631;
  _Bool D.48632;
  short unsigned int D.48633;
  _Bool D.48634;
  _Bool D.48635;
  unsigned int D.48638;
  unsigned int D.48639;
  long int D.48642;
  struct MonoInst * D.48643;
  int D.48644;
  int D.48645;
  unsigned int D.48650;
  long int D.48651;
  struct MonoInst * D.48652;
  int D.48653;
  int D.48654;
  unsigned char D.48660;
  unsigned char D.48662;
  unsigned int D.48664;
  unsigned int D.48665;
  unsigned int D.48667;
  struct MonoDomain * D.48671;
  long int D.48674;
  struct MonoInst * D.48675;
  int D.48676;
  int D.48677;
  long int vt.443;
  long int D.48683;
  struct MonoInst * D.48684;
  int D.48685;
  int D.48686;
  long int D.48690;
  struct MonoInst * D.48691;
  int D.48692;
  int D.48693;
  long int klass.444;
  long int D.48698;
  struct MonoInst * D.48699;
  int D.48700;
  int D.48701;
  long int D.48705;
  struct MonoInst * D.48706;
  int D.48707;
  int D.48708;
  unsigned char * D.48712;
  long int D.48715;
  long int D.48716;
  long unsigned int D.48717;
  long unsigned int D.48718;
  struct MonoBasicBlock * * D.48719;
  short unsigned int D.48724;
  short unsigned int D.48725;
  _Bool D.48726;
  short unsigned int D.48727;
  _Bool D.48728;
  _Bool D.48729;
  short unsigned int D.48735;
  _Bool D.48736;
  _Bool D.48737;
  _Bool D.48738;
  short unsigned int D.48740;
  short unsigned int D.48741;
  _Bool D.48742;
  short unsigned int D.48743;
  _Bool D.48744;
  _Bool D.48745;
  struct MonoBasicBlock * is_null_bb;
  int obj_reg;
  int vtable_reg;
  struct MonoInst * klass_inst;

  obj_reg = src->dreg;
  D.48505 = alloc_preg (cfg);
  vtable_reg = (int) D.48505;
  klass_inst = 0B;
  if (context_used != 0) goto <D.48506>; else goto <D.48507>;
  <D.48506>:
  {
    struct MonoInst * args[3];

    try
      {
        mini_class_has_reference_variant_generic_argument (cfg, klass, context_used);
        if (1 != 0) goto <D.48508>; else goto <D.48509>;
        <D.48508>:
        {
          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.48510 = cfg->mempool;
          D.48511 = mono_mempool_alloc (D.48510, 80);
          args[1] = D.48511;
          D.48512 = args[1];
          D.48512 = args[1];
          D.48512->data.op[1].const_val = 0;
          D.48513 = D.48512->data.op[1].const_val;
          D.48512->data.op[0].const_val = D.48513;
          D.48512 = args[1];
          D.48512 = args[1];
          D.48512->prev = 0B;
          D.48514 = D.48512->prev;
          D.48512->next = D.48514;
          D.48512 = args[1];
          D.48512->opcode = 391;
          D.48512 = args[1];
          D.48512->flags = 0;
          D.48512 = args[1];
          D.48512->type = 0;
          D.48512 = args[1];
          D.48512->dreg = -1;
          D.48512 = args[1];
          D.48512 = args[1];
          D.48512 = args[1];
          D.48512->sreg3 = -1;
          D.48515 = D.48512->sreg3;
          D.48512->sreg2 = D.48515;
          D.48516 = D.48512->sreg2;
          D.48512->sreg1 = D.48516;
          D.48512 = args[1];
          D.48517 = cfg->ip;
          D.48512->cil_code = D.48517;
          D.48512 = args[1];
          D.48518 = alloc_preg (cfg);
          D.48519 = (int) D.48518;
          D.48512->dreg = D.48519;
          D.48512 = args[1];
          D.48520 = cache_ins->dreg;
          D.48512->sreg1 = D.48520;
          D.48512 = args[1];
          D.48512->data.op[0].const_val = 8;
          D.48512 = args[1];
          D.48512->type = 1;
          D.48521 = cfg->cbb;
          D.48522 = D.48521->last_ins;
          if (D.48522 != 0B) goto <D.48523>; else goto <D.48524>;
          <D.48523>:
          D.48521 = cfg->cbb;
          D.48522 = D.48521->last_ins;
          D.48512 = args[1];
          D.48522->next = D.48512;
          D.48512 = args[1];
          D.48521 = cfg->cbb;
          D.48522 = D.48521->last_ins;
          D.48512->prev = D.48522;
          D.48521 = cfg->cbb;
          D.48512 = args[1];
          D.48521->last_ins = D.48512;
          goto <D.48525>;
          <D.48524>:
          D.48521 = cfg->cbb;
          D.48521 = cfg->cbb;
          D.48512 = args[1];
          D.48521->last_ins = D.48512;
          D.48522 = D.48521->last_ins;
          D.48521->code = D.48522;
          <D.48525>:
          args[2] = cache_ins;
          D.48526 = mono_emit_method_call (cfg, mono_castclass, &args, 0B);
          return D.48526;
        }
        <D.48509>:
        klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, 1);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  <D.48507>:
  D.48510 = cfg->mempool;
  is_null_bb = mono_mempool_alloc0 (D.48510, 296);
  D.48527 = cfg->num_bblocks;
  D.48528 = D.48527;
  D.48529 = D.48528 + 1;
  cfg->num_bblocks = D.48529;
  D.48530 = (int) D.48528;
  is_null_bb->block_num = D.48530;
  {
    struct MonoInst * inst;

    D.48510 = cfg->mempool;
    inst = mono_mempool_alloc (D.48510, 80);
    inst->data.op[1].const_val = 0;
    D.48531 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48531;
    inst->prev = 0B;
    D.48532 = inst->prev;
    inst->next = D.48532;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48533 = inst->sreg3;
    inst->sreg2 = D.48533;
    D.48534 = inst->sreg2;
    inst->sreg1 = D.48534;
    D.48517 = cfg->ip;
    inst->cil_code = D.48517;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    if (D.48522 != 0B) goto <D.48535>; else goto <D.48536>;
    <D.48535>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48522->next = inst;
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    inst->prev = D.48522;
    D.48521 = cfg->cbb;
    D.48521->last_ins = inst;
    goto <D.48537>;
    <D.48536>:
    D.48521 = cfg->cbb;
    D.48521 = cfg->cbb;
    D.48521->last_ins = inst;
    D.48522 = D.48521->last_ins;
    D.48521->code = D.48522;
    <D.48537>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.48510 = cfg->mempool;
    ins = mono_mempool_alloc (D.48510, 80);
    ins->data.op[1].const_val = 0;
    D.48538 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.48538;
    ins->prev = 0B;
    D.48539 = ins->prev;
    ins->next = D.48539;
    ins->opcode = 555;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.48540 = ins->sreg3;
    ins->sreg2 = D.48540;
    D.48541 = ins->sreg2;
    ins->sreg1 = D.48541;
    D.48517 = cfg->ip;
    ins->cil_code = D.48517;
    if (0 != 0) goto <D.48542>; else goto <D.48543>;
    <D.48542>:
    D.48510 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.48510, 296);
    D.48527 = cfg->num_bblocks;
    D.48544 = D.48527;
    D.48545 = D.48544 + 1;
    cfg->num_bblocks = D.48545;
    D.48546 = (int) D.48544;
    falsebb->block_num = D.48546;
    ins->data.op[0].target_block = is_null_bb;
    D.48521 = cfg->cbb;
    mono_link_bblock (cfg, D.48521, is_null_bb);
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    if (D.48522 != 0B) goto <D.48547>; else goto <D.48548>;
    <D.48547>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48522->next = ins;
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    ins->prev = D.48522;
    D.48521 = cfg->cbb;
    D.48521->last_ins = ins;
    goto <D.48549>;
    <D.48548>:
    D.48521 = cfg->cbb;
    D.48521 = cfg->cbb;
    D.48521->last_ins = ins;
    D.48522 = D.48521->last_ins;
    D.48521->code = D.48522;
    <D.48549>:
    D.48550 = falsebb->cil_code;
    if (D.48550 != 0B) goto <D.48551>; else goto <D.48552>;
    <D.48551>:
    D.48553 = cfg->cil_offset_to_bb;
    D.48550 = falsebb->cil_code;
    D.48554 = (long int) D.48550;
    D.48555 = cfg->cil_start;
    D.48556 = (long int) D.48555;
    D.48557 = D.48554 - D.48556;
    D.48558 = (long unsigned int) D.48557;
    D.48559 = D.48558 * 8;
    D.48560 = D.48553 + D.48559;
    *D.48560 = falsebb;
    <D.48552>:
    D.48561 = cfg->real_offset;
    falsebb->real_offset = D.48561;
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    if (D.48522 != 0B) goto <D.48565>; else goto <D.48562>;
    <D.48565>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48566 = D.48522->opcode;
    D.48567 = D.48566 + 64981;
    D.48568 = D.48567 <= 9;
    D.48569 = D.48566 + 64874;
    D.48570 = D.48569 <= 9;
    D.48571 = D.48568 | D.48570;
    if (D.48571 != 0) goto <D.48563>; else goto <D.48572>;
    <D.48572>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48573 = D.48522->opcode;
    D.48574 = D.48573 + 64884;
    if (D.48574 <= 9) goto <D.48563>; else goto <D.48562>;
    <D.48563>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48575 = D.48522->data.op[1].many_blocks;
    D.48576 = D.48575 + 8;
    D.48577 = *D.48576;
    if (D.48577 == 0B) goto <D.48578>; else goto <D.48562>;
    <D.48578>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48575 = D.48522->data.op[1].many_blocks;
    D.48576 = D.48575 + 8;
    *D.48576 = falsebb;
    D.48521 = cfg->cbb;
    mono_link_bblock (cfg, D.48521, falsebb);
    goto <D.48564>;
    <D.48562>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    if (D.48522 == 0B) goto <D.48579>; else goto <D.48581>;
    <D.48581>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48582 = D.48522->opcode;
    D.48583 = D.48582 != 446;
    D.48584 = D.48582 != 763;
    D.48585 = D.48583 & D.48584;
    if (D.48585 != 0) goto <D.48586>; else goto <D.48580>;
    <D.48586>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48587 = D.48522->opcode;
    D.48588 = D.48587 + 64981;
    D.48589 = D.48588 > 9;
    D.48590 = D.48587 + 64874;
    D.48591 = D.48590 > 9;
    D.48592 = D.48589 & D.48591;
    if (D.48592 != 0) goto <D.48593>; else goto <D.48580>;
    <D.48593>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48573 = D.48522->opcode;
    D.48574 = D.48573 + 64884;
    if (D.48574 > 9) goto <D.48579>; else goto <D.48580>;
    <D.48579>:
    D.48521 = cfg->cbb;
    mono_link_bblock (cfg, D.48521, falsebb);
    <D.48580>:
    <D.48564>:
    D.48521 = cfg->cbb;
    D.48521->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.48594>;
    <D.48543>:
    D.48510 = cfg->mempool;
    D.48595 = mono_mempool_alloc (D.48510, 16);
    ins->data.op[1].many_blocks = D.48595;
    D.48596 = ins->data.op[1].many_blocks;
    *D.48596 = is_null_bb;
    D.48596 = ins->data.op[1].many_blocks;
    D.48597 = D.48596 + 8;
    *D.48597 = 0B;
    D.48521 = cfg->cbb;
    mono_link_bblock (cfg, D.48521, is_null_bb);
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    if (D.48522 != 0B) goto <D.48598>; else goto <D.48599>;
    <D.48598>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48522->next = ins;
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    ins->prev = D.48522;
    D.48521 = cfg->cbb;
    D.48521->last_ins = ins;
    goto <D.48600>;
    <D.48599>:
    D.48521 = cfg->cbb;
    D.48521 = cfg->cbb;
    D.48521->last_ins = ins;
    D.48522 = D.48521->last_ins;
    D.48521->code = D.48522;
    <D.48600>:
    D.48601 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.48602 = D.48601 & 8;
    if (D.48602 == 0) goto <D.48603>; else goto <D.48604>;
    <D.48603>:
    D.48510 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.48510, 296);
    D.48527 = cfg->num_bblocks;
    D.48605 = D.48527;
    D.48606 = D.48605 + 1;
    cfg->num_bblocks = D.48606;
    D.48607 = (int) D.48605;
    falsebb->block_num = D.48607;
    D.48596 = ins->data.op[1].many_blocks;
    D.48597 = D.48596 + 8;
    *D.48597 = falsebb;
    D.48521 = cfg->cbb;
    mono_link_bblock (cfg, D.48521, falsebb);
    D.48550 = falsebb->cil_code;
    if (D.48550 != 0B) goto <D.48608>; else goto <D.48609>;
    <D.48608>:
    D.48553 = cfg->cil_offset_to_bb;
    D.48550 = falsebb->cil_code;
    D.48554 = (long int) D.48550;
    D.48555 = cfg->cil_start;
    D.48556 = (long int) D.48555;
    D.48557 = D.48554 - D.48556;
    D.48558 = (long unsigned int) D.48557;
    D.48559 = D.48558 * 8;
    D.48560 = D.48553 + D.48559;
    *D.48560 = falsebb;
    <D.48609>:
    D.48561 = cfg->real_offset;
    falsebb->real_offset = D.48561;
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    if (D.48522 != 0B) goto <D.48613>; else goto <D.48610>;
    <D.48613>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48614 = D.48522->opcode;
    D.48615 = D.48614 + 64981;
    D.48616 = D.48615 <= 9;
    D.48617 = D.48614 + 64874;
    D.48618 = D.48617 <= 9;
    D.48619 = D.48616 | D.48618;
    if (D.48619 != 0) goto <D.48611>; else goto <D.48620>;
    <D.48620>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48573 = D.48522->opcode;
    D.48574 = D.48573 + 64884;
    if (D.48574 <= 9) goto <D.48611>; else goto <D.48610>;
    <D.48611>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48575 = D.48522->data.op[1].many_blocks;
    D.48576 = D.48575 + 8;
    D.48577 = *D.48576;
    if (D.48577 == 0B) goto <D.48621>; else goto <D.48610>;
    <D.48621>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48575 = D.48522->data.op[1].many_blocks;
    D.48576 = D.48575 + 8;
    *D.48576 = falsebb;
    D.48521 = cfg->cbb;
    mono_link_bblock (cfg, D.48521, falsebb);
    goto <D.48612>;
    <D.48610>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    if (D.48522 == 0B) goto <D.48622>; else goto <D.48624>;
    <D.48624>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48625 = D.48522->opcode;
    D.48626 = D.48625 != 446;
    D.48627 = D.48625 != 763;
    D.48628 = D.48626 & D.48627;
    if (D.48628 != 0) goto <D.48629>; else goto <D.48623>;
    <D.48629>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48630 = D.48522->opcode;
    D.48631 = D.48630 + 64981;
    D.48632 = D.48631 > 9;
    D.48633 = D.48630 + 64874;
    D.48634 = D.48633 > 9;
    D.48635 = D.48632 & D.48634;
    if (D.48635 != 0) goto <D.48636>; else goto <D.48623>;
    <D.48636>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48573 = D.48522->opcode;
    D.48574 = D.48573 + 64884;
    if (D.48574 > 9) goto <D.48622>; else goto <D.48623>;
    <D.48622>:
    D.48521 = cfg->cbb;
    mono_link_bblock (cfg, D.48521, falsebb);
    <D.48623>:
    <D.48612>:
    D.48521 = cfg->cbb;
    D.48521->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.48637>;
    <D.48604>:
    D.48521 = cfg->cbb;
    D.48521->extended = 1;
    <D.48637>:
    <D.48594>:
  }
  save_cast_details (cfg, klass, obj_reg, 0, 0B);
  D.48638 = klass->flags;
  D.48639 = D.48638 & 32;
  if (D.48639 != 0) goto <D.48640>; else goto <D.48641>;
  <D.48640>:
  {
    struct MonoInst * inst;

    D.48510 = cfg->mempool;
    inst = mono_mempool_alloc (D.48510, 80);
    inst->data.op[1].const_val = 0;
    D.48642 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48642;
    inst->prev = 0B;
    D.48643 = inst->prev;
    inst->next = D.48643;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48644 = inst->sreg3;
    inst->sreg2 = D.48644;
    D.48645 = inst->sreg2;
    inst->sreg1 = D.48645;
    D.48517 = cfg->ip;
    inst->cil_code = D.48517;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    if (D.48522 != 0B) goto <D.48646>; else goto <D.48647>;
    <D.48646>:
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    D.48522->next = inst;
    D.48521 = cfg->cbb;
    D.48522 = D.48521->last_ins;
    inst->prev = D.48522;
    D.48521 = cfg->cbb;
    D.48521->last_ins = inst;
    goto <D.48648>;
    <D.48647>:
    D.48521 = cfg->cbb;
    D.48521 = cfg->cbb;
    D.48521->last_ins = inst;
    D.48522 = D.48521->last_ins;
    D.48521->code = D.48522;
    <D.48648>:
  }
  mini_emit_iface_cast (cfg, vtable_reg, klass, 0B, 0B);
  goto <D.48649>;
  <D.48641>:
  {
    int klass_reg;

    D.48650 = alloc_preg (cfg);
    klass_reg = (int) D.48650;
    {
      struct MonoInst * inst;

      D.48510 = cfg->mempool;
      inst = mono_mempool_alloc (D.48510, 80);
      inst->data.op[1].const_val = 0;
      D.48651 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48651;
      inst->prev = 0B;
      D.48652 = inst->prev;
      inst->next = D.48652;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48653 = inst->sreg3;
      inst->sreg2 = D.48653;
      D.48654 = inst->sreg2;
      inst->sreg1 = D.48654;
      D.48517 = cfg->ip;
      inst->cil_code = D.48517;
      inst->dreg = vtable_reg;
      inst->sreg1 = obj_reg;
      inst->data.op[0].const_val = 0;
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      if (D.48522 != 0B) goto <D.48655>; else goto <D.48656>;
      <D.48655>:
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      D.48522->next = inst;
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      inst->prev = D.48522;
      D.48521 = cfg->cbb;
      D.48521->last_ins = inst;
      goto <D.48657>;
      <D.48656>:
      D.48521 = cfg->cbb;
      D.48521 = cfg->cbb;
      D.48521->last_ins = inst;
      D.48522 = D.48521->last_ins;
      D.48521->code = D.48522;
      <D.48657>:
    }
    D.48660 = klass->rank;
    if (D.48660 == 0) goto <D.48661>; else goto <D.48658>;
    <D.48661>:
    D.48601 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.48662 = D.48601 & 64;
    if (D.48662 == 0) goto <D.48663>; else goto <D.48658>;
    <D.48663>:
    D.48664 = cfg->opt;
    D.48665 = D.48664 & 512;
    if (D.48665 == 0) goto <D.48666>; else goto <D.48658>;
    <D.48666>:
    D.48638 = klass->flags;
    D.48667 = D.48638 & 256;
    if (D.48667 != 0) goto <D.48668>; else goto <D.48658>;
    <D.48668>:
    if (0 != 0) goto <D.48669>; else goto <D.48670>;
    <D.48669>:
    {
      struct MonoVTable * vt;

      D.48671 = cfg->domain;
      vt = mono_class_vtable (D.48671, klass);
      if (vt == 0B) goto <D.48672>; else goto <D.48673>;
      <D.48672>:
      mono_cfg_set_exception (cfg, 7);
      cfg->exception_ptr = klass;
      D.48526 = 0B;
      return D.48526;
      <D.48673>:
      {
        struct MonoInst * inst;

        D.48510 = cfg->mempool;
        inst = mono_mempool_alloc (D.48510, 80);
        inst->data.op[1].const_val = 0;
        D.48674 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48674;
        inst->prev = 0B;
        D.48675 = inst->prev;
        inst->next = D.48675;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48676 = inst->sreg3;
        inst->sreg2 = D.48676;
        D.48677 = inst->sreg2;
        inst->sreg1 = D.48677;
        D.48517 = cfg->ip;
        inst->cil_code = D.48517;
        inst->dreg = -1;
        inst->sreg1 = vtable_reg;
        vt.443 = (long int) vt;
        inst->data.op[1].const_val = vt.443;
        D.48521 = cfg->cbb;
        D.48522 = D.48521->last_ins;
        if (D.48522 != 0B) goto <D.48679>; else goto <D.48680>;
        <D.48679>:
        D.48521 = cfg->cbb;
        D.48522 = D.48521->last_ins;
        D.48522->next = inst;
        D.48521 = cfg->cbb;
        D.48522 = D.48521->last_ins;
        inst->prev = D.48522;
        D.48521 = cfg->cbb;
        D.48521->last_ins = inst;
        goto <D.48681>;
        <D.48680>:
        D.48521 = cfg->cbb;
        D.48521 = cfg->cbb;
        D.48521->last_ins = inst;
        D.48522 = D.48521->last_ins;
        D.48521->code = D.48522;
        <D.48681>:
      }
    }
    goto <D.48682>;
    <D.48670>:
    {
      struct MonoInst * inst;

      D.48510 = cfg->mempool;
      inst = mono_mempool_alloc (D.48510, 80);
      inst->data.op[1].const_val = 0;
      D.48683 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48683;
      inst->prev = 0B;
      D.48684 = inst->prev;
      inst->next = D.48684;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48685 = inst->sreg3;
      inst->sreg2 = D.48685;
      D.48686 = inst->sreg2;
      inst->sreg1 = D.48686;
      D.48517 = cfg->ip;
      inst->cil_code = D.48517;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      if (D.48522 != 0B) goto <D.48687>; else goto <D.48688>;
      <D.48687>:
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      D.48522->next = inst;
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      inst->prev = D.48522;
      D.48521 = cfg->cbb;
      D.48521->last_ins = inst;
      goto <D.48689>;
      <D.48688>:
      D.48521 = cfg->cbb;
      D.48521 = cfg->cbb;
      D.48521->last_ins = inst;
      D.48522 = D.48521->last_ins;
      D.48521->code = D.48522;
      <D.48689>:
    }
    {
      struct MonoInst * inst;

      D.48510 = cfg->mempool;
      inst = mono_mempool_alloc (D.48510, 80);
      inst->data.op[1].const_val = 0;
      D.48690 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48690;
      inst->prev = 0B;
      D.48691 = inst->prev;
      inst->next = D.48691;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48692 = inst->sreg3;
      inst->sreg2 = D.48692;
      D.48693 = inst->sreg2;
      inst->sreg1 = D.48693;
      D.48517 = cfg->ip;
      inst->cil_code = D.48517;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      klass.444 = (long int) klass;
      inst->data.op[1].const_val = klass.444;
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      if (D.48522 != 0B) goto <D.48695>; else goto <D.48696>;
      <D.48695>:
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      D.48522->next = inst;
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      inst->prev = D.48522;
      D.48521 = cfg->cbb;
      D.48521->last_ins = inst;
      goto <D.48697>;
      <D.48696>:
      D.48521 = cfg->cbb;
      D.48521 = cfg->cbb;
      D.48521->last_ins = inst;
      D.48522 = D.48521->last_ins;
      D.48521->code = D.48522;
      <D.48697>:
    }
    <D.48682>:
    {
      struct MonoInst * inst;

      D.48510 = cfg->mempool;
      inst = mono_mempool_alloc (D.48510, 80);
      inst->data.op[1].const_val = 0;
      D.48698 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48698;
      inst->prev = 0B;
      D.48699 = inst->prev;
      inst->next = D.48699;
      inst->opcode = 460;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48700 = inst->sreg3;
      inst->sreg2 = D.48700;
      D.48701 = inst->sreg2;
      inst->sreg1 = D.48701;
      D.48517 = cfg->ip;
      inst->cil_code = D.48517;
      inst->data.op[1].p = "InvalidCastException";
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      if (D.48522 != 0B) goto <D.48702>; else goto <D.48703>;
      <D.48702>:
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      D.48522->next = inst;
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      inst->prev = D.48522;
      D.48521 = cfg->cbb;
      D.48521->last_ins = inst;
      goto <D.48704>;
      <D.48703>:
      D.48521 = cfg->cbb;
      D.48521 = cfg->cbb;
      D.48521->last_ins = inst;
      D.48522 = D.48521->last_ins;
      D.48521->code = D.48522;
      <D.48704>:
    }
    goto <D.48659>;
    <D.48658>:
    {
      struct MonoInst * inst;

      D.48510 = cfg->mempool;
      inst = mono_mempool_alloc (D.48510, 80);
      inst->data.op[1].const_val = 0;
      D.48705 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48705;
      inst->prev = 0B;
      D.48706 = inst->prev;
      inst->next = D.48706;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48707 = inst->sreg3;
      inst->sreg2 = D.48707;
      D.48708 = inst->sreg2;
      inst->sreg1 = D.48708;
      D.48517 = cfg->ip;
      inst->cil_code = D.48517;
      inst->dreg = klass_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      if (D.48522 != 0B) goto <D.48709>; else goto <D.48710>;
      <D.48709>:
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      D.48522->next = inst;
      D.48521 = cfg->cbb;
      D.48522 = D.48521->last_ins;
      inst->prev = D.48522;
      D.48521 = cfg->cbb;
      D.48521->last_ins = inst;
      goto <D.48711>;
      <D.48710>:
      D.48521 = cfg->cbb;
      D.48521 = cfg->cbb;
      D.48521->last_ins = inst;
      D.48522 = D.48521->last_ins;
      D.48521->code = D.48522;
      <D.48711>:
    }
    mini_emit_castclass_inst (cfg, obj_reg, klass_reg, klass, klass_inst, is_null_bb);
    <D.48659>:
  }
  <D.48649>:
  D.48712 = is_null_bb->cil_code;
  if (D.48712 != 0B) goto <D.48713>; else goto <D.48714>;
  <D.48713>:
  D.48553 = cfg->cil_offset_to_bb;
  D.48712 = is_null_bb->cil_code;
  D.48715 = (long int) D.48712;
  D.48555 = cfg->cil_start;
  D.48556 = (long int) D.48555;
  D.48716 = D.48715 - D.48556;
  D.48717 = (long unsigned int) D.48716;
  D.48718 = D.48717 * 8;
  D.48719 = D.48553 + D.48718;
  *D.48719 = is_null_bb;
  <D.48714>:
  D.48561 = cfg->real_offset;
  is_null_bb->real_offset = D.48561;
  D.48521 = cfg->cbb;
  D.48522 = D.48521->last_ins;
  if (D.48522 != 0B) goto <D.48723>; else goto <D.48720>;
  <D.48723>:
  D.48521 = cfg->cbb;
  D.48522 = D.48521->last_ins;
  D.48724 = D.48522->opcode;
  D.48725 = D.48724 + 64981;
  D.48726 = D.48725 <= 9;
  D.48727 = D.48724 + 64874;
  D.48728 = D.48727 <= 9;
  D.48729 = D.48726 | D.48728;
  if (D.48729 != 0) goto <D.48721>; else goto <D.48730>;
  <D.48730>:
  D.48521 = cfg->cbb;
  D.48522 = D.48521->last_ins;
  D.48573 = D.48522->opcode;
  D.48574 = D.48573 + 64884;
  if (D.48574 <= 9) goto <D.48721>; else goto <D.48720>;
  <D.48721>:
  D.48521 = cfg->cbb;
  D.48522 = D.48521->last_ins;
  D.48575 = D.48522->data.op[1].many_blocks;
  D.48576 = D.48575 + 8;
  D.48577 = *D.48576;
  if (D.48577 == 0B) goto <D.48731>; else goto <D.48720>;
  <D.48731>:
  D.48521 = cfg->cbb;
  D.48522 = D.48521->last_ins;
  D.48575 = D.48522->data.op[1].many_blocks;
  D.48576 = D.48575 + 8;
  *D.48576 = is_null_bb;
  D.48521 = cfg->cbb;
  mono_link_bblock (cfg, D.48521, is_null_bb);
  goto <D.48722>;
  <D.48720>:
  D.48521 = cfg->cbb;
  D.48522 = D.48521->last_ins;
  if (D.48522 == 0B) goto <D.48732>; else goto <D.48734>;
  <D.48734>:
  D.48521 = cfg->cbb;
  D.48522 = D.48521->last_ins;
  D.48735 = D.48522->opcode;
  D.48736 = D.48735 != 446;
  D.48737 = D.48735 != 763;
  D.48738 = D.48736 & D.48737;
  if (D.48738 != 0) goto <D.48739>; else goto <D.48733>;
  <D.48739>:
  D.48521 = cfg->cbb;
  D.48522 = D.48521->last_ins;
  D.48740 = D.48522->opcode;
  D.48741 = D.48740 + 64981;
  D.48742 = D.48741 > 9;
  D.48743 = D.48740 + 64874;
  D.48744 = D.48743 > 9;
  D.48745 = D.48742 & D.48744;
  if (D.48745 != 0) goto <D.48746>; else goto <D.48733>;
  <D.48746>:
  D.48521 = cfg->cbb;
  D.48522 = D.48521->last_ins;
  D.48573 = D.48522->opcode;
  D.48574 = D.48573 + 64884;
  if (D.48574 > 9) goto <D.48732>; else goto <D.48733>;
  <D.48732>:
  D.48521 = cfg->cbb;
  mono_link_bblock (cfg, D.48521, is_null_bb);
  <D.48733>:
  <D.48722>:
  D.48521 = cfg->cbb;
  D.48521->next_bb = is_null_bb;
  cfg->cbb = is_null_bb;
  reset_cast_details (cfg);
  D.48526 = src;
  return D.48526;
}


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.48750;
  unsigned int D.48753;
  unsigned int D.48754;
  _Bool D.48755;
  long int D.48756;
  long int D.48757;
  struct MonoMemPool * D.48760;
  long int D.48761;
  struct MonoInst * D.48762;
  int D.48763;
  int D.48764;
  const unsigned char * D.48765;
  struct MonoBasicBlock * D.48766;
  struct MonoInst * D.48767;
  long int D.48771;
  struct MonoInst * D.48772;
  int D.48773;
  int D.48774;
  long int D.48775;
  long int D.48779;
  struct MonoInst * D.48780;
  int D.48781;
  int D.48782;
  long int D.48786;
  struct MonoInst * D.48787;
  int D.48788;
  int D.48789;
  struct MonoClass * D.48793;
  struct MonoClass * D.48794;
  unsigned int D.48797;
  long int D.48798;
  struct MonoInst * D.48799;
  int D.48800;
  int D.48801;
  struct MonoClass * D.48805;
  struct MonoClass * D.48806;
  unsigned int D.48814;
  unsigned int D.48815;
  unsigned char D.48821;
  unsigned int D.48826;
  long int D.48827;
  struct MonoInst * D.48828;
  int D.48829;
  int D.48830;
  long int D.48834;
  struct MonoInst * D.48835;
  int D.48836;
  int D.48837;
  long int D.48841;
  struct MonoInst * D.48842;
  int D.48843;
  int D.48844;
  unsigned int D.48849;
  unsigned int D.48850;
  unsigned int D.48851;
  short unsigned int D.48852;
  long int D.48855;
  struct MonoInst * D.48856;
  int D.48857;
  int D.48858;
  long int D.48862;
  struct MonoInst * D.48863;
  int D.48864;
  int D.48865;
  long int D.48866;
  long int D.48870;
  struct MonoInst * D.48871;
  int D.48872;
  int D.48873;
  long int D.48877;
  struct MonoInst * D.48878;
  int D.48879;
  int D.48880;
  long int D.48884;
  struct MonoInst * D.48885;
  int D.48886;
  int D.48887;
  int D.48888;
  int D.48889;
  int D.48890;
  long int D.48891;

  D.48750 = klass->rank;
  if (D.48750 != 0) goto <D.48751>; else goto <D.48752>;
  <D.48751>:
  {
    int rank_reg;
    int eclass_reg;

    D.48753 = alloc_preg (cfg);
    rank_reg = (int) D.48753;
    D.48754 = alloc_preg (cfg);
    eclass_reg = (int) D.48754;
    D.48755 = klass_inst != 0B;
    D.48756 = (long int) D.48755;
    D.48757 = __builtin_expect (D.48756, 0);
    if (D.48757 != 0) goto <D.48758>; else goto <D.48759>;
    <D.48758>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1685, "!klass_inst");
    <D.48759>:
    {
      struct MonoInst * inst;

      D.48760 = cfg->mempool;
      inst = mono_mempool_alloc (D.48760, 80);
      inst->data.op[1].const_val = 0;
      D.48761 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48761;
      inst->prev = 0B;
      D.48762 = inst->prev;
      inst->next = D.48762;
      inst->opcode = 393;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48763 = inst->sreg3;
      inst->sreg2 = D.48763;
      D.48764 = inst->sreg2;
      inst->sreg1 = D.48764;
      D.48765 = cfg->ip;
      inst->cil_code = D.48765;
      inst->dreg = rank_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 26;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      if (D.48767 != 0B) goto <D.48768>; else goto <D.48769>;
      <D.48768>:
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      D.48767->next = inst;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      inst->prev = D.48767;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      goto <D.48770>;
      <D.48769>:
      D.48766 = cfg->cbb;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      D.48767 = D.48766->last_ins;
      D.48766->code = D.48767;
      <D.48770>:
    }
    {
      struct MonoInst * inst;

      D.48760 = cfg->mempool;
      inst = mono_mempool_alloc (D.48760, 80);
      inst->data.op[1].const_val = 0;
      D.48771 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48771;
      inst->prev = 0B;
      D.48772 = inst->prev;
      inst->next = D.48772;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48773 = inst->sreg3;
      inst->sreg2 = D.48773;
      D.48774 = inst->sreg2;
      inst->sreg1 = D.48774;
      D.48765 = cfg->ip;
      inst->cil_code = D.48765;
      inst->dreg = -1;
      inst->sreg1 = rank_reg;
      D.48750 = klass->rank;
      D.48775 = (long int) D.48750;
      inst->data.op[1].const_val = D.48775;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      if (D.48767 != 0B) goto <D.48776>; else goto <D.48777>;
      <D.48776>:
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      D.48767->next = inst;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      inst->prev = D.48767;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      goto <D.48778>;
      <D.48777>:
      D.48766 = cfg->cbb;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      D.48767 = D.48766->last_ins;
      D.48766->code = D.48767;
      <D.48778>:
    }
    {
      struct MonoInst * inst;

      D.48760 = cfg->mempool;
      inst = mono_mempool_alloc (D.48760, 80);
      inst->data.op[1].const_val = 0;
      D.48779 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48779;
      inst->prev = 0B;
      D.48780 = inst->prev;
      inst->next = D.48780;
      inst->opcode = 460;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48781 = inst->sreg3;
      inst->sreg2 = D.48781;
      D.48782 = inst->sreg2;
      inst->sreg1 = D.48782;
      D.48765 = cfg->ip;
      inst->cil_code = D.48765;
      inst->data.op[1].p = "InvalidCastException";
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      if (D.48767 != 0B) goto <D.48783>; else goto <D.48784>;
      <D.48783>:
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      D.48767->next = inst;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      inst->prev = D.48767;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      goto <D.48785>;
      <D.48784>:
      D.48766 = cfg->cbb;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      D.48767 = D.48766->last_ins;
      D.48766->code = D.48767;
      <D.48785>:
    }
    {
      struct MonoInst * inst;

      D.48760 = cfg->mempool;
      inst = mono_mempool_alloc (D.48760, 80);
      inst->data.op[1].const_val = 0;
      D.48786 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48786;
      inst->prev = 0B;
      D.48787 = inst->prev;
      inst->next = D.48787;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48788 = inst->sreg3;
      inst->sreg2 = D.48788;
      D.48789 = inst->sreg2;
      inst->sreg1 = D.48789;
      D.48765 = cfg->ip;
      inst->cil_code = D.48765;
      inst->dreg = eclass_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 8;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      if (D.48767 != 0B) goto <D.48790>; else goto <D.48791>;
      <D.48790>:
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      D.48767->next = inst;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      inst->prev = D.48767;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      goto <D.48792>;
      <D.48791>:
      D.48766 = cfg->cbb;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      D.48767 = D.48766->last_ins;
      D.48766->code = D.48767;
      <D.48792>:
    }
    D.48793 = klass->cast_class;
    D.48794 = mono_defaults.object_class;
    if (D.48793 == D.48794) goto <D.48795>; else goto <D.48796>;
    <D.48795>:
    {
      int parent_reg;

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

        D.48760 = cfg->mempool;
        inst = mono_mempool_alloc (D.48760, 80);
        inst->data.op[1].const_val = 0;
        D.48798 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48798;
        inst->prev = 0B;
        D.48799 = inst->prev;
        inst->next = D.48799;
        inst->opcode = 391;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48800 = inst->sreg3;
        inst->sreg2 = D.48800;
        D.48801 = inst->sreg2;
        inst->sreg1 = D.48801;
        D.48765 = cfg->ip;
        inst->cil_code = D.48765;
        inst->dreg = parent_reg;
        inst->sreg1 = eclass_reg;
        inst->data.op[0].const_val = 40;
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        if (D.48767 != 0B) goto <D.48802>; else goto <D.48803>;
        <D.48802>:
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        D.48767->next = inst;
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        inst->prev = D.48767;
        D.48766 = cfg->cbb;
        D.48766->last_ins = inst;
        goto <D.48804>;
        <D.48803>:
        D.48766 = cfg->cbb;
        D.48766 = cfg->cbb;
        D.48766->last_ins = inst;
        D.48767 = D.48766->last_ins;
        D.48766->code = D.48767;
        <D.48804>:
      }
      D.48805 = mono_defaults.enum_class;
      D.48806 = D.48805->parent;
      mini_emit_class_check_branch (cfg, parent_reg, D.48806, 560, object_is_null);
      D.48805 = mono_defaults.enum_class;
      mini_emit_class_check (cfg, eclass_reg, D.48805);
    }
    goto <D.48807>;
    <D.48796>:
    D.48793 = klass->cast_class;
    D.48805 = mono_defaults.enum_class;
    D.48806 = D.48805->parent;
    if (D.48793 == D.48806) goto <D.48808>; else goto <D.48809>;
    <D.48808>:
    D.48805 = mono_defaults.enum_class;
    D.48806 = D.48805->parent;
    mini_emit_class_check_branch (cfg, eclass_reg, D.48806, 555, object_is_null);
    D.48805 = mono_defaults.enum_class;
    mini_emit_class_check (cfg, eclass_reg, D.48805);
    goto <D.48810>;
    <D.48809>:
    D.48793 = klass->cast_class;
    D.48805 = mono_defaults.enum_class;
    if (D.48793 == D.48805) goto <D.48811>; else goto <D.48812>;
    <D.48811>:
    D.48805 = mono_defaults.enum_class;
    mini_emit_class_check (cfg, eclass_reg, D.48805);
    goto <D.48813>;
    <D.48812>:
    D.48793 = klass->cast_class;
    D.48814 = D.48793->flags;
    D.48815 = D.48814 & 32;
    if (D.48815 != 0) goto <D.48816>; else goto <D.48817>;
    <D.48816>:
    D.48793 = klass->cast_class;
    mini_emit_iface_class_cast (cfg, eclass_reg, D.48793, 0B, 0B);
    goto <D.48818>;
    <D.48817>:
    D.48793 = klass->cast_class;
    mini_emit_castclass (cfg, -1, eclass_reg, D.48793, object_is_null);
    <D.48818>:
    <D.48813>:
    <D.48810>:
    <D.48807>:
    D.48750 = klass->rank;
    if (D.48750 == 1) goto <D.48819>; else goto <D.48820>;
    <D.48819>:
    D.48821 = klass->byval_arg.type;
    if (D.48821 == 29) goto <D.48822>; else goto <D.48823>;
    <D.48822>:
    if (obj_reg != -1) goto <D.48824>; else goto <D.48825>;
    <D.48824>:
    {
      int bounds_reg;

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

        D.48760 = cfg->mempool;
        inst = mono_mempool_alloc (D.48760, 80);
        inst->data.op[1].const_val = 0;
        D.48827 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48827;
        inst->prev = 0B;
        D.48828 = inst->prev;
        inst->next = D.48828;
        inst->opcode = 391;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48829 = inst->sreg3;
        inst->sreg2 = D.48829;
        D.48830 = inst->sreg2;
        inst->sreg1 = D.48830;
        D.48765 = cfg->ip;
        inst->cil_code = D.48765;
        inst->dreg = bounds_reg;
        inst->sreg1 = obj_reg;
        inst->data.op[0].const_val = 16;
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        if (D.48767 != 0B) goto <D.48831>; else goto <D.48832>;
        <D.48831>:
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        D.48767->next = inst;
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        inst->prev = D.48767;
        D.48766 = cfg->cbb;
        D.48766->last_ins = inst;
        goto <D.48833>;
        <D.48832>:
        D.48766 = cfg->cbb;
        D.48766 = cfg->cbb;
        D.48766->last_ins = inst;
        D.48767 = D.48766->last_ins;
        D.48766->code = D.48767;
        <D.48833>:
      }
      {
        struct MonoInst * inst;

        D.48760 = cfg->mempool;
        inst = mono_mempool_alloc (D.48760, 80);
        inst->data.op[1].const_val = 0;
        D.48834 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48834;
        inst->prev = 0B;
        D.48835 = inst->prev;
        inst->next = D.48835;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48836 = inst->sreg3;
        inst->sreg2 = D.48836;
        D.48837 = inst->sreg2;
        inst->sreg1 = D.48837;
        D.48765 = cfg->ip;
        inst->cil_code = D.48765;
        inst->dreg = -1;
        inst->sreg1 = bounds_reg;
        inst->data.op[1].const_val = 0;
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        if (D.48767 != 0B) goto <D.48838>; else goto <D.48839>;
        <D.48838>:
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        D.48767->next = inst;
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        inst->prev = D.48767;
        D.48766 = cfg->cbb;
        D.48766->last_ins = inst;
        goto <D.48840>;
        <D.48839>:
        D.48766 = cfg->cbb;
        D.48766 = cfg->cbb;
        D.48766->last_ins = inst;
        D.48767 = D.48766->last_ins;
        D.48766->code = D.48767;
        <D.48840>:
      }
      {
        struct MonoInst * inst;

        D.48760 = cfg->mempool;
        inst = mono_mempool_alloc (D.48760, 80);
        inst->data.op[1].const_val = 0;
        D.48841 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.48841;
        inst->prev = 0B;
        D.48842 = inst->prev;
        inst->next = D.48842;
        inst->opcode = 460;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.48843 = inst->sreg3;
        inst->sreg2 = D.48843;
        D.48844 = inst->sreg2;
        inst->sreg1 = D.48844;
        D.48765 = cfg->ip;
        inst->cil_code = D.48765;
        inst->data.op[1].p = "InvalidCastException";
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        if (D.48767 != 0B) goto <D.48845>; else goto <D.48846>;
        <D.48845>:
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        D.48767->next = inst;
        D.48766 = cfg->cbb;
        D.48767 = D.48766->last_ins;
        inst->prev = D.48767;
        D.48766 = cfg->cbb;
        D.48766->last_ins = inst;
        goto <D.48847>;
        <D.48846>:
        D.48766 = cfg->cbb;
        D.48766 = cfg->cbb;
        D.48766->last_ins = inst;
        D.48767 = D.48766->last_ins;
        D.48766->code = D.48767;
        <D.48847>:
      }
    }
    <D.48825>:
    <D.48823>:
    <D.48820>:
  }
  goto <D.48848>;
  <D.48752>:
  {
    int idepth_reg;
    int stypes_reg;
    int stype;

    D.48849 = alloc_preg (cfg);
    idepth_reg = (int) D.48849;
    D.48850 = alloc_preg (cfg);
    stypes_reg = (int) D.48850;
    D.48851 = alloc_preg (cfg);
    stype = (int) D.48851;
    mono_class_setup_supertypes (klass);
    D.48852 = klass->idepth;
    if (D.48852 > 6) goto <D.48853>; else goto <D.48854>;
    <D.48853>:
    {
      struct MonoInst * inst;

      D.48760 = cfg->mempool;
      inst = mono_mempool_alloc (D.48760, 80);
      inst->data.op[1].const_val = 0;
      D.48855 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48855;
      inst->prev = 0B;
      D.48856 = inst->prev;
      inst->next = D.48856;
      inst->opcode = 395;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48857 = inst->sreg3;
      inst->sreg2 = D.48857;
      D.48858 = inst->sreg2;
      inst->sreg1 = D.48858;
      D.48765 = cfg->ip;
      inst->cil_code = D.48765;
      inst->dreg = idepth_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 24;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      if (D.48767 != 0B) goto <D.48859>; else goto <D.48860>;
      <D.48859>:
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      D.48767->next = inst;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      inst->prev = D.48767;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      goto <D.48861>;
      <D.48860>:
      D.48766 = cfg->cbb;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      D.48767 = D.48766->last_ins;
      D.48766->code = D.48767;
      <D.48861>:
    }
    {
      struct MonoInst * inst;

      D.48760 = cfg->mempool;
      inst = mono_mempool_alloc (D.48760, 80);
      inst->data.op[1].const_val = 0;
      D.48862 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48862;
      inst->prev = 0B;
      D.48863 = inst->prev;
      inst->next = D.48863;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48864 = inst->sreg3;
      inst->sreg2 = D.48864;
      D.48865 = inst->sreg2;
      inst->sreg1 = D.48865;
      D.48765 = cfg->ip;
      inst->cil_code = D.48765;
      inst->dreg = -1;
      inst->sreg1 = idepth_reg;
      D.48852 = klass->idepth;
      D.48866 = (long int) D.48852;
      inst->data.op[1].const_val = D.48866;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      if (D.48767 != 0B) goto <D.48867>; else goto <D.48868>;
      <D.48867>:
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      D.48767->next = inst;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      inst->prev = D.48767;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      goto <D.48869>;
      <D.48868>:
      D.48766 = cfg->cbb;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      D.48767 = D.48766->last_ins;
      D.48766->code = D.48767;
      <D.48869>:
    }
    {
      struct MonoInst * inst;

      D.48760 = cfg->mempool;
      inst = mono_mempool_alloc (D.48760, 80);
      inst->data.op[1].const_val = 0;
      D.48870 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48870;
      inst->prev = 0B;
      D.48871 = inst->prev;
      inst->next = D.48871;
      inst->opcode = 464;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48872 = inst->sreg3;
      inst->sreg2 = D.48872;
      D.48873 = inst->sreg2;
      inst->sreg1 = D.48873;
      D.48765 = cfg->ip;
      inst->cil_code = D.48765;
      inst->data.op[1].p = "InvalidCastException";
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      if (D.48767 != 0B) goto <D.48874>; else goto <D.48875>;
      <D.48874>:
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      D.48767->next = inst;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      inst->prev = D.48767;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      goto <D.48876>;
      <D.48875>:
      D.48766 = cfg->cbb;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      D.48767 = D.48766->last_ins;
      D.48766->code = D.48767;
      <D.48876>:
    }
    <D.48854>:
    {
      struct MonoInst * inst;

      D.48760 = cfg->mempool;
      inst = mono_mempool_alloc (D.48760, 80);
      inst->data.op[1].const_val = 0;
      D.48877 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48877;
      inst->prev = 0B;
      D.48878 = inst->prev;
      inst->next = D.48878;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48879 = inst->sreg3;
      inst->sreg2 = D.48879;
      D.48880 = inst->sreg2;
      inst->sreg1 = D.48880;
      D.48765 = cfg->ip;
      inst->cil_code = D.48765;
      inst->dreg = stypes_reg;
      inst->sreg1 = klass_reg;
      inst->data.op[0].const_val = 16;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      if (D.48767 != 0B) goto <D.48881>; else goto <D.48882>;
      <D.48881>:
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      D.48767->next = inst;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      inst->prev = D.48767;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      goto <D.48883>;
      <D.48882>:
      D.48766 = cfg->cbb;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      D.48767 = D.48766->last_ins;
      D.48766->code = D.48767;
      <D.48883>:
    }
    {
      struct MonoInst * inst;

      D.48760 = cfg->mempool;
      inst = mono_mempool_alloc (D.48760, 80);
      inst->data.op[1].const_val = 0;
      D.48884 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48884;
      inst->prev = 0B;
      D.48885 = inst->prev;
      inst->next = D.48885;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48886 = inst->sreg3;
      inst->sreg2 = D.48886;
      D.48887 = inst->sreg2;
      inst->sreg1 = D.48887;
      D.48765 = cfg->ip;
      inst->cil_code = D.48765;
      inst->dreg = stype;
      inst->sreg1 = stypes_reg;
      D.48852 = klass->idepth;
      D.48888 = (int) D.48852;
      D.48889 = D.48888 + -1;
      D.48890 = D.48889 * 8;
      D.48891 = (long int) D.48890;
      inst->data.op[0].const_val = D.48891;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      if (D.48767 != 0B) goto <D.48892>; else goto <D.48893>;
      <D.48892>:
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      D.48767->next = inst;
      D.48766 = cfg->cbb;
      D.48767 = D.48766->last_ins;
      inst->prev = D.48767;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      goto <D.48894>;
      <D.48893>:
      D.48766 = cfg->cbb;
      D.48766 = cfg->cbb;
      D.48766->last_ins = inst;
      D.48767 = D.48766->last_ins;
      D.48766->code = D.48767;
      <D.48894>:
    }
    mini_emit_class_check_inst (cfg, stype, klass, klass_inst);
  }
  <D.48848>:
}


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.48897;
  long int D.48898;
  struct MonoInst * D.48899;
  int D.48900;
  int D.48901;
  const unsigned char * D.48902;
  int D.48903;
  struct MonoBasicBlock * D.48904;
  struct MonoInst * D.48905;
  unsigned char D.48910;
  unsigned char D.48911;
  unsigned int D.48914;
  long int D.48915;
  struct MonoInst * D.48916;
  guint16 iftmp.445;
  int D.48921;
  int D.48922;
  long int D.48926;
  struct MonoInst * D.48927;
  int D.48928;
  int D.48929;
  long int D.48934;
  struct MonoInst * D.48935;
  int D.48936;
  int D.48937;
  long int klass.446;
  long int D.48942;
  struct MonoInst * D.48943;
  int D.48944;
  int D.48945;

  if (klass_inst != 0B) goto <D.48895>; else goto <D.48896>;
  <D.48895>:
  {
    struct MonoInst * inst;

    D.48897 = cfg->mempool;
    inst = mono_mempool_alloc (D.48897, 80);
    inst->data.op[1].const_val = 0;
    D.48898 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48898;
    inst->prev = 0B;
    D.48899 = inst->prev;
    inst->next = D.48899;
    inst->opcode = 322;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48900 = inst->sreg3;
    inst->sreg2 = D.48900;
    D.48901 = inst->sreg2;
    inst->sreg1 = D.48901;
    D.48902 = cfg->ip;
    inst->cil_code = D.48902;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    D.48903 = klass_inst->dreg;
    inst->sreg2 = D.48903;
    D.48904 = cfg->cbb;
    D.48905 = D.48904->last_ins;
    if (D.48905 != 0B) goto <D.48906>; else goto <D.48907>;
    <D.48906>:
    D.48904 = cfg->cbb;
    D.48905 = D.48904->last_ins;
    D.48905->next = inst;
    D.48904 = cfg->cbb;
    D.48905 = D.48904->last_ins;
    inst->prev = D.48905;
    D.48904 = cfg->cbb;
    D.48904->last_ins = inst;
    goto <D.48908>;
    <D.48907>:
    D.48904 = cfg->cbb;
    D.48904 = cfg->cbb;
    D.48904->last_ins = inst;
    D.48905 = D.48904->last_ins;
    D.48904->code = D.48905;
    <D.48908>:
  }
  goto <D.48909>;
  <D.48896>:
  D.48910 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.48911 = D.48910 & 64;
  if (D.48911 != 0) goto <D.48912>; else goto <D.48913>;
  <D.48912>:
  {
    int const_reg;

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

      D.48897 = cfg->mempool;
      inst = mono_mempool_alloc (D.48897, 80);
      inst->data.op[1].const_val = 0;
      D.48915 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48915;
      inst->prev = 0B;
      D.48916 = inst->prev;
      inst->next = D.48916;
      D.48910 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.48911 = D.48910 & 64;
      if (D.48911 != 0) goto <D.48918>; else goto <D.48919>;
      <D.48918>:
      iftmp.445 = 736;
      goto <D.48920>;
      <D.48919>:
      iftmp.445 = 363;
      <D.48920>:
      inst->opcode = iftmp.445;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48921 = inst->sreg3;
      inst->sreg2 = D.48921;
      D.48922 = inst->sreg2;
      inst->sreg1 = D.48922;
      D.48902 = cfg->ip;
      inst->cil_code = D.48902;
      inst->dreg = const_reg;
      inst->data.op[0].p = klass;
      inst->data.op[1].const_val = 11;
      D.48904 = cfg->cbb;
      D.48905 = D.48904->last_ins;
      if (D.48905 != 0B) goto <D.48923>; else goto <D.48924>;
      <D.48923>:
      D.48904 = cfg->cbb;
      D.48905 = D.48904->last_ins;
      D.48905->next = inst;
      D.48904 = cfg->cbb;
      D.48905 = D.48904->last_ins;
      inst->prev = D.48905;
      D.48904 = cfg->cbb;
      D.48904->last_ins = inst;
      goto <D.48925>;
      <D.48924>:
      D.48904 = cfg->cbb;
      D.48904 = cfg->cbb;
      D.48904->last_ins = inst;
      D.48905 = D.48904->last_ins;
      D.48904->code = D.48905;
      <D.48925>:
    }
    {
      struct MonoInst * inst;

      D.48897 = cfg->mempool;
      inst = mono_mempool_alloc (D.48897, 80);
      inst->data.op[1].const_val = 0;
      D.48926 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.48926;
      inst->prev = 0B;
      D.48927 = inst->prev;
      inst->next = D.48927;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.48928 = inst->sreg3;
      inst->sreg2 = D.48928;
      D.48929 = inst->sreg2;
      inst->sreg1 = D.48929;
      D.48902 = cfg->ip;
      inst->cil_code = D.48902;
      inst->dreg = -1;
      inst->sreg1 = klass_reg;
      inst->sreg2 = const_reg;
      D.48904 = cfg->cbb;
      D.48905 = D.48904->last_ins;
      if (D.48905 != 0B) goto <D.48930>; else goto <D.48931>;
      <D.48930>:
      D.48904 = cfg->cbb;
      D.48905 = D.48904->last_ins;
      D.48905->next = inst;
      D.48904 = cfg->cbb;
      D.48905 = D.48904->last_ins;
      inst->prev = D.48905;
      D.48904 = cfg->cbb;
      D.48904->last_ins = inst;
      goto <D.48932>;
      <D.48931>:
      D.48904 = cfg->cbb;
      D.48904 = cfg->cbb;
      D.48904->last_ins = inst;
      D.48905 = D.48904->last_ins;
      D.48904->code = D.48905;
      <D.48932>:
    }
  }
  goto <D.48933>;
  <D.48913>:
  {
    struct MonoInst * inst;

    D.48897 = cfg->mempool;
    inst = mono_mempool_alloc (D.48897, 80);
    inst->data.op[1].const_val = 0;
    D.48934 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48934;
    inst->prev = 0B;
    D.48935 = inst->prev;
    inst->next = D.48935;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48936 = inst->sreg3;
    inst->sreg2 = D.48936;
    D.48937 = inst->sreg2;
    inst->sreg1 = D.48937;
    D.48902 = cfg->ip;
    inst->cil_code = D.48902;
    inst->dreg = -1;
    inst->sreg1 = klass_reg;
    klass.446 = (long int) klass;
    inst->data.op[1].const_val = klass.446;
    D.48904 = cfg->cbb;
    D.48905 = D.48904->last_ins;
    if (D.48905 != 0B) goto <D.48939>; else goto <D.48940>;
    <D.48939>:
    D.48904 = cfg->cbb;
    D.48905 = D.48904->last_ins;
    D.48905->next = inst;
    D.48904 = cfg->cbb;
    D.48905 = D.48904->last_ins;
    inst->prev = D.48905;
    D.48904 = cfg->cbb;
    D.48904->last_ins = inst;
    goto <D.48941>;
    <D.48940>:
    D.48904 = cfg->cbb;
    D.48904 = cfg->cbb;
    D.48904->last_ins = inst;
    D.48905 = D.48904->last_ins;
    D.48904->code = D.48905;
    <D.48941>:
  }
  <D.48933>:
  <D.48909>:
  {
    struct MonoInst * inst;

    D.48897 = cfg->mempool;
    inst = mono_mempool_alloc (D.48897, 80);
    inst->data.op[1].const_val = 0;
    D.48942 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.48942;
    inst->prev = 0B;
    D.48943 = inst->prev;
    inst->next = D.48943;
    inst->opcode = 460;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.48944 = inst->sreg3;
    inst->sreg2 = D.48944;
    D.48945 = inst->sreg2;
    inst->sreg1 = D.48945;
    D.48902 = cfg->ip;
    inst->cil_code = D.48902;
    inst->data.op[1].p = "InvalidCastException";
    D.48904 = cfg->cbb;
    D.48905 = D.48904->last_ins;
    if (D.48905 != 0B) goto <D.48946>; else goto <D.48947>;
    <D.48946>:
    D.48904 = cfg->cbb;
    D.48905 = D.48904->last_ins;
    D.48905->next = inst;
    D.48904 = cfg->cbb;
    D.48905 = D.48904->last_ins;
    inst->prev = D.48905;
    D.48904 = cfg->cbb;
    D.48904->last_ins = inst;
    goto <D.48948>;
    <D.48947>:
    D.48904 = cfg->cbb;
    D.48904 = cfg->cbb;
    D.48904->last_ins = inst;
    D.48905 = D.48904->last_ins;
    D.48904->code = D.48905;
    <D.48948>:
  }
}


handle_stack_args (struct MonoCompile * cfg, struct MonoInst * * sp, int count)
{
  unsigned int D.48951;
  int D.48954;
  short unsigned int D.48955;
  short unsigned int D.48958;
  struct MonoBasicBlock * * D.48959;
  long unsigned int D.48960;
  long unsigned int D.48961;
  struct MonoBasicBlock * * D.48962;
  unsigned int D.48963;
  unsigned int D.48964;
  struct MonoInst * * D.48967;
  short int D.48970;
  int D.48971;
  long unsigned int D.48974;
  unsigned int D.48975;
  unsigned int D.48976;
  struct MonoMemPool * D.48977;
  void * D.48978;
  struct MonoMethod * D.48979;
  struct MonoInst * * D.48982;
  struct MonoInst * * D.48983;
  struct MonoInst * * D.48984;
  struct MonoInst * D.48985;
  struct MonoType * D.48986;
  struct MonoInst * D.48987;
  struct MonoInst * D.48989;
  short unsigned int D.48992;
  long int D.48997;
  struct MonoInst * D.48998;
  int D.48999;
  int D.49000;
  const unsigned char * D.49001;
  struct MonoInst * * D.49002;
  struct MonoInst * * D.49003;
  struct MonoInst * D.49004;
  long int D.49005;
  long unsigned int D.49006;
  long unsigned int D.49007;
  struct MonoInst * * D.49008;
  struct MonoInst * D.49009;
  struct MonoType * D.49010;
  unsigned int D.49011;
  short unsigned int D.49012;
  struct MonoClass * D.49013;
  int D.49014;
  int D.49015;
  short unsigned int D.49016;
  struct MonoClass * D.49019;
  struct MonoBasicBlock * D.49020;
  struct MonoInst * D.49021;
  const unsigned char * D.49025;
  int D.49028;
  long unsigned int D.49029;
  long unsigned int D.49030;
  struct MonoBasicBlock * * D.49031;
  struct MonoInst * * D.49036;
  struct MonoInst * D.49037;
  long int D.49038;
  long unsigned int D.49039;
  long unsigned int D.49040;
  struct MonoInst * * D.49041;
  struct MonoInst * D.49042;
  struct MonoType * D.49043;
  unsigned int D.49044;
  short unsigned int D.49045;
  struct MonoClass * D.49046;
  int D.49047;
  struct MonoClass * D.49050;
  int D.49056;
  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.48949>; else goto <D.48950>;
  <D.48949>:
  return;
  <D.48950>:
  D.48951 = cfg->verbose_level;
  if (D.48951 > 3) goto <D.48952>; else goto <D.48953>;
  <D.48952>:
  D.48954 = bb->block_num;
  printf ("%d item(s) on exit from B%d\n", count, D.48954);
  <D.48953>:
  D.48955 = bb->out_scount;
  if (D.48955 == 0) goto <D.48956>; else goto <D.48957>;
  <D.48956>:
  D.48958 = (short unsigned int) count;
  bb->out_scount = D.48958;
  found = 0;
  i = 0;
  goto <D.25199>;
  <D.25198>:
  D.48959 = bb->out_bb;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48962 = D.48959 + D.48961;
  outb = *D.48962;
  D.48963 = outb->flags;
  D.48964 = D.48963 & 16;
  if (D.48964 != 0) goto <D.48965>; else goto <D.48966>;
  <D.48965>:
  // predicted unlikely by continue predictor.
  goto <D.25196>;
  <D.48966>:
  D.48967 = outb->in_stack;
  if (D.48967 != 0B) goto <D.48968>; else goto <D.48969>;
  <D.48968>:
  found = 1;
  D.48967 = outb->in_stack;
  bb->out_stack = D.48967;
  goto <D.25197>;
  <D.48969>:
  <D.25196>:
  i = i + 1;
  <D.25199>:
  D.48970 = bb->out_count;
  D.48971 = (int) D.48970;
  if (D.48971 > i) goto <D.25198>; else goto <D.25197>;
  <D.25197>:
  if (found == 0) goto <D.48972>; else goto <D.48973>;
  <D.48972>:
  D.48974 = (long unsigned int) count;
  D.48975 = (unsigned int) D.48974;
  D.48976 = D.48975 * 8;
  D.48977 = cfg->mempool;
  D.48978 = mono_mempool_alloc (D.48977, D.48976);
  bb->out_stack = D.48978;
  i = 0;
  goto <D.25201>;
  <D.25200>:
  D.48979 = cfg->inlined_method;
  if (D.48979 != 0B) goto <D.48980>; else goto <D.48981>;
  <D.48980>:
  D.48982 = bb->out_stack;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48983 = D.48982 + D.48961;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48984 = sp + D.48961;
  D.48985 = *D.48984;
  D.48986 = type_from_stack_type (D.48985);
  D.48987 = mono_compile_create_var (cfg, D.48986, 329);
  *D.48983 = D.48987;
  goto <D.48988>;
  <D.48981>:
  D.48982 = bb->out_stack;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48983 = D.48982 + D.48961;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48984 = sp + D.48961;
  D.48985 = *D.48984;
  D.48989 = mono_compile_get_interface_var (cfg, i, D.48985);
  *D.48983 = D.48989;
  <D.48988>:
  i = i + 1;
  <D.25201>:
  if (i < count) goto <D.25200>; else goto <D.25202>;
  <D.25202>:
  <D.48973>:
  <D.48957>:
  i = 0;
  goto <D.25205>;
  <D.25204>:
  D.48959 = bb->out_bb;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48962 = D.48959 + D.48961;
  outb = *D.48962;
  D.48963 = outb->flags;
  D.48964 = D.48963 & 16;
  if (D.48964 != 0) goto <D.48990>; else goto <D.48991>;
  <D.48990>:
  // predicted unlikely by continue predictor.
  goto <D.25203>;
  <D.48991>:
  D.48992 = outb->in_scount;
  if (D.48992 != 0) goto <D.48993>; else goto <D.48994>;
  <D.48993>:
  D.48992 = outb->in_scount;
  D.48955 = bb->out_scount;
  if (D.48992 != D.48955) goto <D.48995>; else goto <D.48996>;
  <D.48995>:
  cfg->unverifiable = 1;
  return;
  <D.48996>:
  // predicted unlikely by continue predictor.
  goto <D.25203>;
  <D.48994>:
  D.48958 = (short unsigned int) count;
  outb->in_scount = D.48958;
  D.48982 = bb->out_stack;
  outb->in_stack = D.48982;
  <D.25203>:
  i = i + 1;
  <D.25205>:
  D.48970 = bb->out_count;
  D.48971 = (int) D.48970;
  if (D.48971 > i) goto <D.25204>; else goto <D.25206>;
  <D.25206>:
  locals = bb->out_stack;
  cfg->cbb = bb;
  i = 0;
  goto <D.25208>;
  <D.25207>:
  D.48977 = cfg->mempool;
  inst = mono_mempool_alloc (D.48977, 80);
  inst->data.op[1].const_val = 0;
  D.48997 = inst->data.op[1].const_val;
  inst->data.op[0].const_val = D.48997;
  inst->prev = 0B;
  D.48998 = inst->prev;
  inst->next = D.48998;
  inst->opcode = 428;
  inst->flags = 0;
  inst->type = 0;
  inst->dreg = -1;
  inst->sreg3 = -1;
  D.48999 = inst->sreg3;
  inst->sreg2 = D.48999;
  D.49000 = inst->sreg2;
  inst->sreg1 = D.49000;
  D.49001 = cfg->ip;
  inst->cil_code = D.49001;
  D.49002 = cfg->varinfo;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49003 = locals + D.48961;
  D.49004 = *D.49003;
  D.49005 = D.49004->data.op[0].const_val;
  D.49006 = (long unsigned int) D.49005;
  D.49007 = D.49006 * 8;
  D.49008 = D.49002 + D.49007;
  D.49009 = *D.49008;
  D.49010 = D.49009->data.op[1].vtype;
  D.49011 = mono_type_to_regmove (cfg, D.49010);
  D.49012 = (short unsigned int) D.49011;
  inst->opcode = D.49012;
  D.49002 = cfg->varinfo;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49003 = locals + D.48961;
  D.49004 = *D.49003;
  D.49005 = D.49004->data.op[0].const_val;
  D.49006 = (long unsigned int) D.49005;
  D.49007 = D.49006 * 8;
  D.49008 = D.49002 + D.49007;
  D.49009 = *D.49008;
  D.49013 = D.49009->klass;
  inst->klass = D.49013;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48984 = sp + D.48961;
  D.48985 = *D.48984;
  D.49014 = D.48985->dreg;
  inst->sreg1 = D.49014;
  D.49002 = cfg->varinfo;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49003 = locals + D.48961;
  D.49004 = *D.49003;
  D.49005 = D.49004->data.op[0].const_val;
  D.49006 = (long unsigned int) D.49005;
  D.49007 = D.49006 * 8;
  D.49008 = D.49002 + D.49007;
  D.49009 = *D.49008;
  D.49015 = D.49009->dreg;
  inst->dreg = D.49015;
  D.49016 = inst->opcode;
  if (D.49016 == 431) goto <D.49017>; else goto <D.49018>;
  <D.49017>:
  D.49002 = cfg->varinfo;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49003 = locals + D.48961;
  D.49004 = *D.49003;
  D.49005 = D.49004->data.op[0].const_val;
  D.49006 = (long unsigned int) D.49005;
  D.49007 = D.49006 * 8;
  D.49008 = D.49002 + D.49007;
  D.49009 = *D.49008;
  D.49010 = D.49009->data.op[1].vtype;
  D.49019 = mono_class_from_mono_type (D.49010);
  inst->klass = D.49019;
  <D.49018>:
  D.49020 = cfg->cbb;
  D.49021 = D.49020->last_ins;
  if (D.49021 != 0B) goto <D.49022>; else goto <D.49023>;
  <D.49022>:
  D.49020 = cfg->cbb;
  D.49021 = D.49020->last_ins;
  D.49021->next = inst;
  D.49020 = cfg->cbb;
  D.49021 = D.49020->last_ins;
  inst->prev = D.49021;
  D.49020 = cfg->cbb;
  D.49020->last_ins = inst;
  goto <D.49024>;
  <D.49023>:
  D.49020 = cfg->cbb;
  D.49020 = cfg->cbb;
  D.49020->last_ins = inst;
  D.49021 = D.49020->last_ins;
  D.49020->code = D.49021;
  <D.49024>:
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48984 = sp + D.48961;
  D.48985 = *D.48984;
  D.49025 = D.48985->cil_code;
  inst->cil_code = D.49025;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48984 = sp + D.48961;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49003 = locals + D.48961;
  D.49004 = *D.49003;
  *D.48984 = D.49004;
  D.48951 = cfg->verbose_level;
  if (D.48951 > 3) goto <D.49026>; else goto <D.49027>;
  <D.49026>:
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49003 = locals + D.48961;
  D.49004 = *D.49003;
  D.49005 = D.49004->data.op[0].const_val;
  D.49028 = (int) D.49005;
  printf ("storing %d to temp %d\n", i, D.49028);
  <D.49027>:
  i = i + 1;
  <D.25208>:
  if (i < count) goto <D.25207>; else goto <D.25209>;
  <D.25209>:
  found = 1;
  bindex = 0;
  goto <D.25217>;
  <D.25216>:
  found = 0;
  goto <D.25210>;
  <D.25215>:
  D.48959 = bb->out_bb;
  D.49029 = (long unsigned int) bindex;
  D.49030 = D.49029 * 8;
  D.49031 = D.48959 + D.49030;
  outb = *D.49031;
  D.48963 = outb->flags;
  D.48964 = D.48963 & 16;
  if (D.48964 != 0) goto <D.49032>; else goto <D.49033>;
  <D.49032>:
  bindex = bindex + 1;
  // predicted unlikely by continue predictor.
  goto <D.25210>;
  <D.49033>:
  D.48967 = outb->in_stack;
  if (D.48967 != locals) goto <D.49034>; else goto <D.49035>;
  <D.49034>:
  i = 0;
  goto <D.25212>;
  <D.25211>:
  D.48977 = cfg->mempool;
  inst = mono_mempool_alloc (D.48977, 80);
  inst->data.op[1].const_val = 0;
  D.48997 = inst->data.op[1].const_val;
  inst->data.op[0].const_val = D.48997;
  inst->prev = 0B;
  D.48998 = inst->prev;
  inst->next = D.48998;
  inst->opcode = 428;
  inst->flags = 0;
  inst->type = 0;
  inst->dreg = -1;
  inst->sreg3 = -1;
  D.48999 = inst->sreg3;
  inst->sreg2 = D.48999;
  D.49000 = inst->sreg2;
  inst->sreg1 = D.49000;
  D.49001 = cfg->ip;
  inst->cil_code = D.49001;
  D.49002 = cfg->varinfo;
  D.48967 = outb->in_stack;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49036 = D.48967 + D.48961;
  D.49037 = *D.49036;
  D.49038 = D.49037->data.op[0].const_val;
  D.49039 = (long unsigned int) D.49038;
  D.49040 = D.49039 * 8;
  D.49041 = D.49002 + D.49040;
  D.49042 = *D.49041;
  D.49043 = D.49042->data.op[1].vtype;
  D.49044 = mono_type_to_regmove (cfg, D.49043);
  D.49045 = (short unsigned int) D.49044;
  inst->opcode = D.49045;
  D.49002 = cfg->varinfo;
  D.48967 = outb->in_stack;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49036 = D.48967 + D.48961;
  D.49037 = *D.49036;
  D.49038 = D.49037->data.op[0].const_val;
  D.49039 = (long unsigned int) D.49038;
  D.49040 = D.49039 * 8;
  D.49041 = D.49002 + D.49040;
  D.49042 = *D.49041;
  D.49046 = D.49042->klass;
  inst->klass = D.49046;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48984 = sp + D.48961;
  D.48985 = *D.48984;
  D.49014 = D.48985->dreg;
  inst->sreg1 = D.49014;
  D.49002 = cfg->varinfo;
  D.48967 = outb->in_stack;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49036 = D.48967 + D.48961;
  D.49037 = *D.49036;
  D.49038 = D.49037->data.op[0].const_val;
  D.49039 = (long unsigned int) D.49038;
  D.49040 = D.49039 * 8;
  D.49041 = D.49002 + D.49040;
  D.49042 = *D.49041;
  D.49047 = D.49042->dreg;
  inst->dreg = D.49047;
  D.49016 = inst->opcode;
  if (D.49016 == 431) goto <D.49048>; else goto <D.49049>;
  <D.49048>:
  D.49002 = cfg->varinfo;
  D.48967 = outb->in_stack;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49036 = D.48967 + D.48961;
  D.49037 = *D.49036;
  D.49038 = D.49037->data.op[0].const_val;
  D.49039 = (long unsigned int) D.49038;
  D.49040 = D.49039 * 8;
  D.49041 = D.49002 + D.49040;
  D.49042 = *D.49041;
  D.49043 = D.49042->data.op[1].vtype;
  D.49050 = mono_class_from_mono_type (D.49043);
  inst->klass = D.49050;
  <D.49049>:
  D.49020 = cfg->cbb;
  D.49021 = D.49020->last_ins;
  if (D.49021 != 0B) goto <D.49051>; else goto <D.49052>;
  <D.49051>:
  D.49020 = cfg->cbb;
  D.49021 = D.49020->last_ins;
  D.49021->next = inst;
  D.49020 = cfg->cbb;
  D.49021 = D.49020->last_ins;
  inst->prev = D.49021;
  D.49020 = cfg->cbb;
  D.49020->last_ins = inst;
  goto <D.49053>;
  <D.49052>:
  D.49020 = cfg->cbb;
  D.49020 = cfg->cbb;
  D.49020->last_ins = inst;
  D.49021 = D.49020->last_ins;
  D.49020->code = D.49021;
  <D.49053>:
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48984 = sp + D.48961;
  D.48985 = *D.48984;
  D.49025 = D.48985->cil_code;
  inst->cil_code = D.49025;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.48984 = sp + D.48961;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49003 = locals + D.48961;
  D.49004 = *D.49003;
  *D.48984 = D.49004;
  D.48951 = cfg->verbose_level;
  if (D.48951 > 3) goto <D.49054>; else goto <D.49055>;
  <D.49054>:
  D.48967 = outb->in_stack;
  D.48960 = (long unsigned int) i;
  D.48961 = D.48960 * 8;
  D.49036 = D.48967 + D.48961;
  D.49037 = *D.49036;
  D.49038 = D.49037->data.op[0].const_val;
  D.49056 = (int) D.49038;
  printf ("storing %d to temp %d\n", i, D.49056);
  <D.49055>:
  i = i + 1;
  <D.25212>:
  if (i < count) goto <D.25211>; else goto <D.25213>;
  <D.25213>:
  locals = outb->in_stack;
  found = 1;
  goto <D.25214>;
  <D.49035>:
  bindex = bindex + 1;
  <D.25210>:
  D.48970 = bb->out_count;
  D.48971 = (int) D.48970;
  if (D.48971 > bindex) goto <D.25215>; else goto <D.25214>;
  <D.25214>:
  <D.25217>:
  if (found != 0) goto <D.25216>; else goto <D.25218>;
  <D.25218>:
}


mono_compile_get_interface_var (struct MonoCompile * cfg, int slot, struct MonoInst * ins)
{
  struct MonoMethodHeader * D.49058;
  <unnamed-unsigned:15> D.49059;
  int D.49060;
  struct MonoInst * D.49063;
  struct MonoType * D.49064;
  unsigned char D.49065;
  int D.49066;
  int D.49067;
  int D.49068;
  guint16 * D.49069;
  long unsigned int D.49070;
  long unsigned int D.49071;
  guint16 * D.49072;
  short unsigned int D.49073;
  struct MonoInst * * D.49076;
  long unsigned int D.49077;
  long unsigned int D.49078;
  struct MonoInst * * D.49079;
  struct MonoType * D.49080;
  long int D.49081;
  short unsigned int D.49082;
  struct MonoType * D.49083;
  struct MonoInst * res;
  int pos;
  int vnum;

  D.49058 = cfg->header;
  D.49059 = D.49058->max_stack;
  D.49060 = (int) D.49059;
  if (D.49060 <= slot) goto <D.49061>; else goto <D.49062>;
  <D.49061>:
  D.49064 = type_from_stack_type (ins);
  D.49063 = mono_compile_create_var (cfg, D.49064, 329);
  return D.49063;
  <D.49062>:
  D.49065 = ins->type;
  D.49066 = (int) D.49065;
  D.49067 = D.49066 + -1;
  D.49068 = slot * 8;
  pos = D.49067 + D.49068;
  D.49065 = ins->type;
  D.49066 = (int) D.49065;
  switch (D.49066) <default: <D.25176>, case 1: <D.25169>, case 2: <D.25170>, case 3: <D.25172>, case 4: <D.25171>, case 5: <D.25173>, case 6: <D.25174>>
  <D.25169>:
  <D.25170>:
  <D.25171>:
  <D.25172>:
  <D.25173>:
  <D.25174>:
  D.49069 = cfg->intvars;
  D.49070 = (long unsigned int) pos;
  D.49071 = D.49070 * 2;
  D.49072 = D.49069 + D.49071;
  D.49073 = *D.49072;
  vnum = (int) D.49073;
  if (vnum != 0) goto <D.49074>; else goto <D.49075>;
  <D.49074>:
  D.49076 = cfg->varinfo;
  D.49077 = (long unsigned int) vnum;
  D.49078 = D.49077 * 8;
  D.49079 = D.49076 + D.49078;
  D.49063 = *D.49079;
  return D.49063;
  <D.49075>:
  D.49080 = type_from_stack_type (ins);
  res = mono_compile_create_var (cfg, D.49080, 329);
  D.49069 = cfg->intvars;
  D.49070 = (long unsigned int) pos;
  D.49071 = D.49070 * 2;
  D.49072 = D.49069 + D.49071;
  D.49081 = res->data.op[0].const_val;
  D.49082 = (short unsigned int) D.49081;
  *D.49072 = D.49082;
  goto <D.25175>;
  <D.25176>:
  D.49083 = type_from_stack_type (ins);
  res = mono_compile_create_var (cfg, D.49083, 329);
  <D.25175>:
  D.49063 = res;
  return D.49063;
}


handle_box (struct MonoCompile * cfg, struct MonoInst * val, struct MonoClass * klass, int context_used, struct MonoBasicBlock * * out_cbb)
{
  struct MonoBasicBlock * D.49085;
  int D.49086;
  struct MonoMethod * D.49091;
  struct MonoInst * D.49092;
  struct MonoMethodSignature * D.49093;
  int pass_mrgctx.447;
  _Bool D.49095;
  long int D.49096;
  long int D.49097;
  int pass_vtable.448;
  struct MonoClass * D.49103;
  struct MonoDomain * D.49104;
  _Bool D.49105;
  long int D.49106;
  long int D.49107;
  struct MonoMemPool * D.49110;
  long int D.49111;
  struct MonoInst * D.49112;
  guint16 iftmp.449;
  unsigned char D.49114;
  unsigned char D.49115;
  int D.49119;
  int D.49120;
  const unsigned char * D.49121;
  void * iftmp.450;
  unsigned int D.49126;
  int D.49127;
  struct MonoInst * D.49128;
  int D.49132;
  unsigned int D.49135;
  unsigned int D.49136;
  unsigned int D.49137;
  unsigned int D.49138;
  int D.49139;
  unsigned int D.49140;
  unsigned int D.49141;
  int D.49142;
  unsigned int D.49143;
  unsigned int D.49144;
  int D.49145;
  long int D.49146;
  struct MonoInst * D.49147;
  int D.49148;
  int D.49149;
  int D.49150;
  long int D.49154;
  struct MonoInst * D.49155;
  int D.49156;
  int D.49157;
  unsigned int D.49160;
  unsigned int D.49161;
  int D.49162;
  unsigned char * D.49166;
  struct MonoBasicBlock * * D.49169;
  long int D.49170;
  unsigned char * D.49171;
  long int D.49172;
  long int D.49173;
  long unsigned int D.49174;
  long unsigned int D.49175;
  struct MonoBasicBlock * * D.49176;
  unsigned int D.49177;
  short unsigned int D.49182;
  short unsigned int D.49183;
  _Bool D.49184;
  short unsigned int D.49185;
  _Bool D.49186;
  _Bool D.49187;
  short unsigned int D.49189;
  short unsigned int D.49190;
  struct MonoBasicBlock * * D.49191;
  struct MonoBasicBlock * * D.49192;
  struct MonoBasicBlock * D.49193;
  short unsigned int D.49198;
  _Bool D.49199;
  _Bool D.49200;
  _Bool D.49201;
  short unsigned int D.49203;
  short unsigned int D.49204;
  _Bool D.49205;
  short unsigned int D.49206;
  _Bool D.49207;
  _Bool D.49208;
  void * D.49211;
  struct MonoBasicBlock * * D.49212;
  struct MonoBasicBlock * * D.49213;
  unsigned char D.49217;
  unsigned int D.49220;
  unsigned int D.49221;
  int D.49222;
  short unsigned int D.49229;
  short unsigned int D.49230;
  _Bool D.49231;
  short unsigned int D.49232;
  _Bool D.49233;
  _Bool D.49234;
  short unsigned int D.49240;
  _Bool D.49241;
  _Bool D.49242;
  _Bool D.49243;
  short unsigned int D.49245;
  short unsigned int D.49246;
  _Bool D.49247;
  short unsigned int D.49248;
  _Bool D.49249;
  _Bool D.49250;
  long int D.49253;
  struct MonoInst * D.49254;
  int D.49255;
  int D.49256;
  long int D.49260;
  struct MonoInst * D.49261;
  int D.49262;
  int D.49263;
  unsigned int D.49266;
  unsigned int D.49267;
  int D.49268;
  unsigned char * D.49272;
  long int D.49275;
  long int D.49276;
  long unsigned int D.49277;
  long unsigned int D.49278;
  struct MonoBasicBlock * * D.49279;
  short unsigned int D.49284;
  short unsigned int D.49285;
  _Bool D.49286;
  short unsigned int D.49287;
  _Bool D.49288;
  _Bool D.49289;
  short unsigned int D.49295;
  _Bool D.49296;
  _Bool D.49297;
  _Bool D.49298;
  short unsigned int D.49300;
  short unsigned int D.49301;
  _Bool D.49302;
  short unsigned int D.49303;
  _Bool D.49304;
  _Bool D.49305;
  void * D.49308;
  struct MonoBasicBlock * * D.49309;
  struct MonoBasicBlock * * D.49310;
  unsigned int D.49316;
  unsigned int D.49317;
  int D.49318;
  short unsigned int D.49325;
  short unsigned int D.49326;
  _Bool D.49327;
  short unsigned int D.49328;
  _Bool D.49329;
  _Bool D.49330;
  short unsigned int D.49336;
  _Bool D.49337;
  _Bool D.49338;
  _Bool D.49339;
  short unsigned int D.49341;
  short unsigned int D.49342;
  _Bool D.49343;
  short unsigned int D.49344;
  _Bool D.49345;
  _Bool D.49346;
  long int D.49351;
  struct MonoInst * D.49352;
  struct MonoType * D.49353;
  unsigned int D.49354;
  short unsigned int D.49355;
  int D.49356;
  int D.49357;
  struct MonoInst * val.451;
  int D.49359;
  int D.49360;
  struct MonoClass * D.49361;
  long int D.49365;
  struct MonoInst * D.49366;
  int D.49367;
  int D.49368;
  long int D.49372;
  struct MonoInst * D.49373;
  int D.49374;
  int D.49375;
  unsigned int D.49378;
  unsigned int D.49379;
  int D.49380;
  unsigned char * D.49384;
  long int D.49387;
  long int D.49388;
  long unsigned int D.49389;
  long unsigned int D.49390;
  struct MonoBasicBlock * * D.49391;
  short unsigned int D.49396;
  short unsigned int D.49397;
  _Bool D.49398;
  short unsigned int D.49399;
  _Bool D.49400;
  _Bool D.49401;
  short unsigned int D.49407;
  _Bool D.49408;
  _Bool D.49409;
  _Bool D.49410;
  short unsigned int D.49412;
  short unsigned int D.49413;
  _Bool D.49414;
  short unsigned int D.49415;
  _Bool D.49416;
  _Bool D.49417;
  void * D.49420;
  struct MonoBasicBlock * * D.49421;
  struct MonoBasicBlock * * D.49422;
  unsigned int D.49428;
  unsigned int D.49429;
  int D.49430;
  short unsigned int D.49437;
  short unsigned int D.49438;
  _Bool D.49439;
  short unsigned int D.49440;
  _Bool D.49441;
  _Bool D.49442;
  short unsigned int D.49448;
  _Bool D.49449;
  _Bool D.49450;
  _Bool D.49451;
  short unsigned int D.49453;
  short unsigned int D.49454;
  _Bool D.49455;
  short unsigned int D.49456;
  _Bool D.49457;
  _Bool D.49458;
  unsigned char * D.49461;
  long int D.49464;
  long int D.49465;
  long unsigned int D.49466;
  long unsigned int D.49467;
  struct MonoBasicBlock * * D.49468;
  short unsigned int D.49473;
  short unsigned int D.49474;
  _Bool D.49475;
  short unsigned int D.49476;
  _Bool D.49477;
  _Bool D.49478;
  short unsigned int D.49484;
  _Bool D.49485;
  _Bool D.49486;
  _Bool D.49487;
  short unsigned int D.49489;
  short unsigned int D.49490;
  _Bool D.49491;
  short unsigned int D.49492;
  _Bool D.49493;
  _Bool D.49494;
  unsigned int D.49496;
  struct MonoInst * iftmp.452;
  unsigned int D.49498;
  unsigned int D.49499;
  struct MonoInst * * D.49502;
  long unsigned int D.49503;
  long unsigned int D.49504;
  struct MonoInst * * D.49505;
  long int D.49509;
  struct MonoInst * D.49510;
  int D.49511;
  int D.49512;
  unsigned char D.49513;
  unsigned char D.49514;
  struct MonoClass * D.49515;
  unsigned int D.49516;
  int D.49517;
  int D.49518;
  _Bool D.49519;
  long int D.49520;
  long int D.49521;
  struct MonoType * D.49524;
  int D.49525;
  struct MonoInst * iftmp.453;
  int D.49531;
  int D.49532;
  unsigned int D.49533;
  sizetype D.49536;
  sizetype D.49537;
  sizetype D.49538;
  struct MonoInst * * D.49539;
  struct MonoInst * iftmp.454;
  int D.49542;
  unsigned int D.49543;
  sizetype D.49546;
  sizetype D.49547;
  struct MonoInst * * D.49548;
  _Bool D.49550;
  long int D.49551;
  long int D.49552;
  _Bool D.49555;
  long int D.49556;
  long int D.49557;
  unsigned char D.49560;
  unsigned char D.49561;
  unsigned char D.49562;
  unsigned char D.49563;
  long int D.49567;
  struct MonoInst * D.49568;
  int D.49569;
  int D.49570;
  int D.49571;
  long int D.49575;
  struct MonoInst * D.49576;
  int D.49577;
  int D.49578;
  unsigned int D.49581;
  unsigned int D.49582;
  int D.49583;
  unsigned char * D.49587;
  long int D.49590;
  long int D.49591;
  long unsigned int D.49592;
  long unsigned int D.49593;
  struct MonoBasicBlock * * D.49594;
  short unsigned int D.49599;
  short unsigned int D.49600;
  _Bool D.49601;
  short unsigned int D.49602;
  _Bool D.49603;
  _Bool D.49604;
  short unsigned int D.49610;
  _Bool D.49611;
  _Bool D.49612;
  _Bool D.49613;
  short unsigned int D.49615;
  short unsigned int D.49616;
  _Bool D.49617;
  short unsigned int D.49618;
  _Bool D.49619;
  _Bool D.49620;
  void * D.49623;
  struct MonoBasicBlock * * D.49624;
  struct MonoBasicBlock * * D.49625;
  unsigned int D.49631;
  unsigned int D.49632;
  int D.49633;
  short unsigned int D.49640;
  short unsigned int D.49641;
  _Bool D.49642;
  short unsigned int D.49643;
  _Bool D.49644;
  _Bool D.49645;
  short unsigned int D.49651;
  _Bool D.49652;
  _Bool D.49653;
  _Bool D.49654;
  short unsigned int D.49656;
  short unsigned int D.49657;
  _Bool D.49658;
  short unsigned int D.49659;
  _Bool D.49660;
  _Bool D.49661;
  unsigned char * D.49664;
  long int D.49667;
  long int D.49668;
  long unsigned int D.49669;
  long unsigned int D.49670;
  struct MonoBasicBlock * * D.49671;
  short unsigned int D.49676;
  short unsigned int D.49677;
  _Bool D.49678;
  short unsigned int D.49679;
  _Bool D.49680;
  _Bool D.49681;
  short unsigned int D.49687;
  _Bool D.49688;
  _Bool D.49689;
  _Bool D.49690;
  short unsigned int D.49692;
  short unsigned int D.49693;
  _Bool D.49694;
  short unsigned int D.49695;
  _Bool D.49696;
  _Bool D.49697;
  struct MonoClass * D.49699;
  struct MonoType * D.49700;
  int D.49701;
  long int D.49705;
  struct MonoInst * D.49706;
  int D.49707;
  int D.49708;
  unsigned int D.49711;
  unsigned int D.49712;
  int D.49713;
  unsigned char * D.49717;
  long int D.49720;
  long int D.49721;
  long unsigned int D.49722;
  long unsigned int D.49723;
  struct MonoBasicBlock * * D.49724;
  short unsigned int D.49729;
  short unsigned int D.49730;
  _Bool D.49731;
  short unsigned int D.49732;
  _Bool D.49733;
  _Bool D.49734;
  short unsigned int D.49740;
  _Bool D.49741;
  _Bool D.49742;
  _Bool D.49743;
  short unsigned int D.49745;
  short unsigned int D.49746;
  _Bool D.49747;
  short unsigned int D.49748;
  _Bool D.49749;
  _Bool D.49750;
  void * D.49753;
  struct MonoBasicBlock * * D.49754;
  struct MonoBasicBlock * * D.49755;
  unsigned int D.49761;
  unsigned int D.49762;
  int D.49763;
  short unsigned int D.49770;
  short unsigned int D.49771;
  _Bool D.49772;
  short unsigned int D.49773;
  _Bool D.49774;
  _Bool D.49775;
  short unsigned int D.49781;
  _Bool D.49782;
  _Bool D.49783;
  _Bool D.49784;
  short unsigned int D.49786;
  short unsigned int D.49787;
  _Bool D.49788;
  short unsigned int D.49789;
  _Bool D.49790;
  _Bool D.49791;
  unsigned char * D.49794;
  long int D.49797;
  long int D.49798;
  long unsigned int D.49799;
  long unsigned int D.49800;
  struct MonoBasicBlock * * D.49801;
  short unsigned int D.49806;
  short unsigned int D.49807;
  _Bool D.49808;
  short unsigned int D.49809;
  _Bool D.49810;
  _Bool D.49811;
  short unsigned int D.49817;
  _Bool D.49818;
  _Bool D.49819;
  _Bool D.49820;
  short unsigned int D.49822;
  short unsigned int D.49823;
  _Bool D.49824;
  short unsigned int D.49825;
  _Bool D.49826;
  _Bool D.49827;
  unsigned int D.49831;
  short unsigned int D.49832;
  struct MonoClass * D.49833;
  struct MonoInst * alloc;
  struct MonoInst * ins;

  D.49085 = cfg->cbb;
  *out_cbb = D.49085;
  D.49086 = mono_class_is_nullable (klass);
  if (D.49086 != 0) goto <D.49087>; else goto <D.49088>;
  <D.49087>:
  {
    struct MonoMethod * method;

    method = mono_class_get_method_from_name (klass, "Box", 1);
    if (context_used != 0) goto <D.49089>; else goto <D.49090>;
    <D.49089>:
    {
      struct MonoInst * addr;
      struct MonoInst * rgctx;

      addr = emit_get_rgctx_method (cfg, context_used, method, 6);
      D.49091 = cfg->current_method;
      rgctx = emit_get_rgctx (cfg, D.49091, context_used);
      D.49093 = mono_method_signature (method);
      D.49092 = mono_emit_calli (cfg, D.49093, &val, addr, 0B, rgctx);
      return D.49092;
    }
    <D.49090>:
    {
      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.447 = pass_mrgctx;
          D.49095 = pass_mrgctx.447 != 0;
          D.49096 = (long int) D.49095;
          D.49097 = __builtin_expect (D.49096, 0);
          if (D.49097 != 0) goto <D.49098>; else goto <D.49099>;
          <D.49098>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3830, "!pass_mrgctx");
          <D.49099>:
          pass_vtable.448 = pass_vtable;
          if (pass_vtable.448 != 0) goto <D.49101>; else goto <D.49102>;
          <D.49101>:
          {
            struct MonoVTable * vtable;

            D.49103 = method->klass;
            D.49104 = cfg->domain;
            vtable = mono_class_vtable (D.49104, D.49103);
            D.49105 = vtable == 0B;
            D.49106 = (long int) D.49105;
            D.49107 = __builtin_expect (D.49106, 0);
            if (D.49107 != 0) goto <D.49108>; else goto <D.49109>;
            <D.49108>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3835, "vtable");
            <D.49109>:
            D.49110 = cfg->mempool;
            rgctx_arg = mono_mempool_alloc (D.49110, 80);
            rgctx_arg->data.op[1].const_val = 0;
            D.49111 = rgctx_arg->data.op[1].const_val;
            rgctx_arg->data.op[0].const_val = D.49111;
            rgctx_arg->prev = 0B;
            D.49112 = rgctx_arg->prev;
            rgctx_arg->next = D.49112;
            D.49114 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.49115 = D.49114 & 64;
            if (D.49115 != 0) goto <D.49116>; else goto <D.49117>;
            <D.49116>:
            iftmp.449 = 736;
            goto <D.49118>;
            <D.49117>:
            iftmp.449 = 363;
            <D.49118>:
            rgctx_arg->opcode = iftmp.449;
            rgctx_arg->flags = 0;
            rgctx_arg->type = 0;
            rgctx_arg->dreg = -1;
            rgctx_arg->sreg3 = -1;
            D.49119 = rgctx_arg->sreg3;
            rgctx_arg->sreg2 = D.49119;
            D.49120 = rgctx_arg->sreg2;
            rgctx_arg->sreg1 = D.49120;
            D.49121 = cfg->ip;
            rgctx_arg->cil_code = D.49121;
            D.49114 = BIT_FIELD_REF <*cfg, 8, 5600>;
            D.49115 = D.49114 & 64;
            if (D.49115 != 0) goto <D.49123>; else goto <D.49124>;
            <D.49123>:
            iftmp.450 = vtable->klass;
            goto <D.49125>;
            <D.49124>:
            iftmp.450 = vtable;
            <D.49125>:
            rgctx_arg->data.op[0].p = iftmp.450;
            rgctx_arg->data.op[1].src = 14B;
            rgctx_arg->type = 3;
            D.49126 = alloc_dreg (cfg, 3);
            D.49127 = (int) D.49126;
            rgctx_arg->dreg = D.49127;
            D.49085 = cfg->cbb;
            D.49128 = D.49085->last_ins;
            if (D.49128 != 0B) goto <D.49129>; else goto <D.49130>;
            <D.49129>:
            D.49085 = cfg->cbb;
            D.49128 = D.49085->last_ins;
            D.49128->next = rgctx_arg;
            D.49085 = cfg->cbb;
            D.49128 = D.49085->last_ins;
            rgctx_arg->prev = D.49128;
            D.49085 = cfg->cbb;
            D.49085->last_ins = rgctx_arg;
            goto <D.49131>;
            <D.49130>:
            D.49085 = cfg->cbb;
            D.49085 = cfg->cbb;
            D.49085->last_ins = rgctx_arg;
            D.49128 = D.49085->last_ins;
            D.49085->code = D.49128;
            <D.49131>:
          }
          <D.49102>:
          D.49092 = mono_emit_method_call_full (cfg, method, 0B, 0, &val, 0B, 0B, rgctx_arg);
          return D.49092;
        }
      finally
        {
          pass_vtable = {CLOBBER};
          pass_mrgctx = {CLOBBER};
        }
    }
  }
  <D.49088>:
  D.49132 = mini_is_gsharedvt_klass (cfg, klass);
  if (D.49132 != 0) goto <D.49133>; else goto <D.49134>;
  <D.49133>:
  {
    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.49135 = alloc_ireg (cfg);
    dreg = (int) D.49135;
    D.49110 = cfg->mempool;
    is_ref_bb = mono_mempool_alloc0 (D.49110, 296);
    D.49136 = cfg->num_bblocks;
    D.49137 = D.49136;
    D.49138 = D.49137 + 1;
    cfg->num_bblocks = D.49138;
    D.49139 = (int) D.49137;
    is_ref_bb->block_num = D.49139;
    D.49110 = cfg->mempool;
    is_nullable_bb = mono_mempool_alloc0 (D.49110, 296);
    D.49136 = cfg->num_bblocks;
    D.49140 = D.49136;
    D.49141 = D.49140 + 1;
    cfg->num_bblocks = D.49141;
    D.49142 = (int) D.49140;
    is_nullable_bb->block_num = D.49142;
    D.49110 = cfg->mempool;
    end_bb = mono_mempool_alloc0 (D.49110, 296);
    D.49136 = cfg->num_bblocks;
    D.49143 = D.49136;
    D.49144 = D.49143 + 1;
    cfg->num_bblocks = D.49144;
    D.49145 = (int) D.49143;
    end_bb->block_num = D.49145;
    is_ref = emit_get_gsharedvt_info_klass (cfg, klass, 19);
    {
      struct MonoInst * inst;

      D.49110 = cfg->mempool;
      inst = mono_mempool_alloc (D.49110, 80);
      inst->data.op[1].const_val = 0;
      D.49146 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49146;
      inst->prev = 0B;
      D.49147 = inst->prev;
      inst->next = D.49147;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49148 = inst->sreg3;
      inst->sreg2 = D.49148;
      D.49149 = inst->sreg2;
      inst->sreg1 = D.49149;
      D.49121 = cfg->ip;
      inst->cil_code = D.49121;
      inst->dreg = -1;
      D.49150 = is_ref->dreg;
      inst->sreg1 = D.49150;
      inst->data.op[1].const_val = 1;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49151>; else goto <D.49152>;
      <D.49151>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = inst;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      inst->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = inst;
      goto <D.49153>;
      <D.49152>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = inst;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49153>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.49110 = cfg->mempool;
      ins = mono_mempool_alloc (D.49110, 80);
      ins->data.op[1].const_val = 0;
      D.49154 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.49154;
      ins->prev = 0B;
      D.49155 = ins->prev;
      ins->next = D.49155;
      ins->opcode = 652;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.49156 = ins->sreg3;
      ins->sreg2 = D.49156;
      D.49157 = ins->sreg2;
      ins->sreg1 = D.49157;
      D.49121 = cfg->ip;
      ins->cil_code = D.49121;
      if (0 != 0) goto <D.49158>; else goto <D.49159>;
      <D.49158>:
      D.49110 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49110, 296);
      D.49136 = cfg->num_bblocks;
      D.49160 = D.49136;
      D.49161 = D.49160 + 1;
      cfg->num_bblocks = D.49161;
      D.49162 = (int) D.49160;
      falsebb->block_num = D.49162;
      ins->data.op[0].target_block = is_ref_bb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, is_ref_bb);
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49163>; else goto <D.49164>;
      <D.49163>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = ins;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      ins->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      goto <D.49165>;
      <D.49164>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49165>:
      D.49166 = falsebb->cil_code;
      if (D.49166 != 0B) goto <D.49167>; else goto <D.49168>;
      <D.49167>:
      D.49169 = cfg->cil_offset_to_bb;
      D.49166 = falsebb->cil_code;
      D.49170 = (long int) D.49166;
      D.49171 = cfg->cil_start;
      D.49172 = (long int) D.49171;
      D.49173 = D.49170 - D.49172;
      D.49174 = (long unsigned int) D.49173;
      D.49175 = D.49174 * 8;
      D.49176 = D.49169 + D.49175;
      *D.49176 = falsebb;
      <D.49168>:
      D.49177 = cfg->real_offset;
      falsebb->real_offset = D.49177;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49181>; else goto <D.49178>;
      <D.49181>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49182 = D.49128->opcode;
      D.49183 = D.49182 + 64981;
      D.49184 = D.49183 <= 9;
      D.49185 = D.49182 + 64874;
      D.49186 = D.49185 <= 9;
      D.49187 = D.49184 | D.49186;
      if (D.49187 != 0) goto <D.49179>; else goto <D.49188>;
      <D.49188>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 <= 9) goto <D.49179>; else goto <D.49178>;
      <D.49179>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      D.49193 = *D.49192;
      if (D.49193 == 0B) goto <D.49194>; else goto <D.49178>;
      <D.49194>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      *D.49192 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      goto <D.49180>;
      <D.49178>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 == 0B) goto <D.49195>; else goto <D.49197>;
      <D.49197>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49198 = D.49128->opcode;
      D.49199 = D.49198 != 446;
      D.49200 = D.49198 != 763;
      D.49201 = D.49199 & D.49200;
      if (D.49201 != 0) goto <D.49202>; else goto <D.49196>;
      <D.49202>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49203 = D.49128->opcode;
      D.49204 = D.49203 + 64981;
      D.49205 = D.49204 > 9;
      D.49206 = D.49203 + 64874;
      D.49207 = D.49206 > 9;
      D.49208 = D.49205 & D.49207;
      if (D.49208 != 0) goto <D.49209>; else goto <D.49196>;
      <D.49209>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 > 9) goto <D.49195>; else goto <D.49196>;
      <D.49195>:
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      <D.49196>:
      <D.49180>:
      D.49085 = cfg->cbb;
      D.49085->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49210>;
      <D.49159>:
      D.49110 = cfg->mempool;
      D.49211 = mono_mempool_alloc (D.49110, 16);
      ins->data.op[1].many_blocks = D.49211;
      D.49212 = ins->data.op[1].many_blocks;
      *D.49212 = is_ref_bb;
      D.49212 = ins->data.op[1].many_blocks;
      D.49213 = D.49212 + 8;
      *D.49213 = 0B;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, is_ref_bb);
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49214>; else goto <D.49215>;
      <D.49214>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = ins;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      ins->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      goto <D.49216>;
      <D.49215>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49216>:
      D.49114 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.49217 = D.49114 & 8;
      if (D.49217 == 0) goto <D.49218>; else goto <D.49219>;
      <D.49218>:
      D.49110 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49110, 296);
      D.49136 = cfg->num_bblocks;
      D.49220 = D.49136;
      D.49221 = D.49220 + 1;
      cfg->num_bblocks = D.49221;
      D.49222 = (int) D.49220;
      falsebb->block_num = D.49222;
      D.49212 = ins->data.op[1].many_blocks;
      D.49213 = D.49212 + 8;
      *D.49213 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      D.49166 = falsebb->cil_code;
      if (D.49166 != 0B) goto <D.49223>; else goto <D.49224>;
      <D.49223>:
      D.49169 = cfg->cil_offset_to_bb;
      D.49166 = falsebb->cil_code;
      D.49170 = (long int) D.49166;
      D.49171 = cfg->cil_start;
      D.49172 = (long int) D.49171;
      D.49173 = D.49170 - D.49172;
      D.49174 = (long unsigned int) D.49173;
      D.49175 = D.49174 * 8;
      D.49176 = D.49169 + D.49175;
      *D.49176 = falsebb;
      <D.49224>:
      D.49177 = cfg->real_offset;
      falsebb->real_offset = D.49177;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49228>; else goto <D.49225>;
      <D.49228>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49229 = D.49128->opcode;
      D.49230 = D.49229 + 64981;
      D.49231 = D.49230 <= 9;
      D.49232 = D.49229 + 64874;
      D.49233 = D.49232 <= 9;
      D.49234 = D.49231 | D.49233;
      if (D.49234 != 0) goto <D.49226>; else goto <D.49235>;
      <D.49235>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 <= 9) goto <D.49226>; else goto <D.49225>;
      <D.49226>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      D.49193 = *D.49192;
      if (D.49193 == 0B) goto <D.49236>; else goto <D.49225>;
      <D.49236>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      *D.49192 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      goto <D.49227>;
      <D.49225>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 == 0B) goto <D.49237>; else goto <D.49239>;
      <D.49239>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49240 = D.49128->opcode;
      D.49241 = D.49240 != 446;
      D.49242 = D.49240 != 763;
      D.49243 = D.49241 & D.49242;
      if (D.49243 != 0) goto <D.49244>; else goto <D.49238>;
      <D.49244>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49245 = D.49128->opcode;
      D.49246 = D.49245 + 64981;
      D.49247 = D.49246 > 9;
      D.49248 = D.49245 + 64874;
      D.49249 = D.49248 > 9;
      D.49250 = D.49247 & D.49249;
      if (D.49250 != 0) goto <D.49251>; else goto <D.49238>;
      <D.49251>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 > 9) goto <D.49237>; else goto <D.49238>;
      <D.49237>:
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      <D.49238>:
      <D.49227>:
      D.49085 = cfg->cbb;
      D.49085->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49252>;
      <D.49219>:
      D.49085 = cfg->cbb;
      D.49085->extended = 1;
      <D.49252>:
      <D.49210>:
    }
    {
      struct MonoInst * inst;

      D.49110 = cfg->mempool;
      inst = mono_mempool_alloc (D.49110, 80);
      inst->data.op[1].const_val = 0;
      D.49253 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49253;
      inst->prev = 0B;
      D.49254 = inst->prev;
      inst->next = D.49254;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49255 = inst->sreg3;
      inst->sreg2 = D.49255;
      D.49256 = inst->sreg2;
      inst->sreg1 = D.49256;
      D.49121 = cfg->ip;
      inst->cil_code = D.49121;
      inst->dreg = -1;
      D.49150 = is_ref->dreg;
      inst->sreg1 = D.49150;
      inst->data.op[1].const_val = 2;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49257>; else goto <D.49258>;
      <D.49257>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = inst;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      inst->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = inst;
      goto <D.49259>;
      <D.49258>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = inst;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49259>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.49110 = cfg->mempool;
      ins = mono_mempool_alloc (D.49110, 80);
      ins->data.op[1].const_val = 0;
      D.49260 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.49260;
      ins->prev = 0B;
      D.49261 = ins->prev;
      ins->next = D.49261;
      ins->opcode = 652;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.49262 = ins->sreg3;
      ins->sreg2 = D.49262;
      D.49263 = ins->sreg2;
      ins->sreg1 = D.49263;
      D.49121 = cfg->ip;
      ins->cil_code = D.49121;
      if (0 != 0) goto <D.49264>; else goto <D.49265>;
      <D.49264>:
      D.49110 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49110, 296);
      D.49136 = cfg->num_bblocks;
      D.49266 = D.49136;
      D.49267 = D.49266 + 1;
      cfg->num_bblocks = D.49267;
      D.49268 = (int) D.49266;
      falsebb->block_num = D.49268;
      ins->data.op[0].target_block = is_nullable_bb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, is_nullable_bb);
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49269>; else goto <D.49270>;
      <D.49269>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = ins;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      ins->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      goto <D.49271>;
      <D.49270>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49271>:
      D.49272 = falsebb->cil_code;
      if (D.49272 != 0B) goto <D.49273>; else goto <D.49274>;
      <D.49273>:
      D.49169 = cfg->cil_offset_to_bb;
      D.49272 = falsebb->cil_code;
      D.49275 = (long int) D.49272;
      D.49171 = cfg->cil_start;
      D.49172 = (long int) D.49171;
      D.49276 = D.49275 - D.49172;
      D.49277 = (long unsigned int) D.49276;
      D.49278 = D.49277 * 8;
      D.49279 = D.49169 + D.49278;
      *D.49279 = falsebb;
      <D.49274>:
      D.49177 = cfg->real_offset;
      falsebb->real_offset = D.49177;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49283>; else goto <D.49280>;
      <D.49283>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49284 = D.49128->opcode;
      D.49285 = D.49284 + 64981;
      D.49286 = D.49285 <= 9;
      D.49287 = D.49284 + 64874;
      D.49288 = D.49287 <= 9;
      D.49289 = D.49286 | D.49288;
      if (D.49289 != 0) goto <D.49281>; else goto <D.49290>;
      <D.49290>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 <= 9) goto <D.49281>; else goto <D.49280>;
      <D.49281>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      D.49193 = *D.49192;
      if (D.49193 == 0B) goto <D.49291>; else goto <D.49280>;
      <D.49291>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      *D.49192 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      goto <D.49282>;
      <D.49280>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 == 0B) goto <D.49292>; else goto <D.49294>;
      <D.49294>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49295 = D.49128->opcode;
      D.49296 = D.49295 != 446;
      D.49297 = D.49295 != 763;
      D.49298 = D.49296 & D.49297;
      if (D.49298 != 0) goto <D.49299>; else goto <D.49293>;
      <D.49299>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49300 = D.49128->opcode;
      D.49301 = D.49300 + 64981;
      D.49302 = D.49301 > 9;
      D.49303 = D.49300 + 64874;
      D.49304 = D.49303 > 9;
      D.49305 = D.49302 & D.49304;
      if (D.49305 != 0) goto <D.49306>; else goto <D.49293>;
      <D.49306>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 > 9) goto <D.49292>; else goto <D.49293>;
      <D.49292>:
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      <D.49293>:
      <D.49282>:
      D.49085 = cfg->cbb;
      D.49085->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49307>;
      <D.49265>:
      D.49110 = cfg->mempool;
      D.49308 = mono_mempool_alloc (D.49110, 16);
      ins->data.op[1].many_blocks = D.49308;
      D.49309 = ins->data.op[1].many_blocks;
      *D.49309 = is_nullable_bb;
      D.49309 = ins->data.op[1].many_blocks;
      D.49310 = D.49309 + 8;
      *D.49310 = 0B;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, is_nullable_bb);
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49311>; else goto <D.49312>;
      <D.49311>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = ins;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      ins->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      goto <D.49313>;
      <D.49312>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49313>:
      D.49114 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.49217 = D.49114 & 8;
      if (D.49217 == 0) goto <D.49314>; else goto <D.49315>;
      <D.49314>:
      D.49110 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49110, 296);
      D.49136 = cfg->num_bblocks;
      D.49316 = D.49136;
      D.49317 = D.49316 + 1;
      cfg->num_bblocks = D.49317;
      D.49318 = (int) D.49316;
      falsebb->block_num = D.49318;
      D.49309 = ins->data.op[1].many_blocks;
      D.49310 = D.49309 + 8;
      *D.49310 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      D.49272 = falsebb->cil_code;
      if (D.49272 != 0B) goto <D.49319>; else goto <D.49320>;
      <D.49319>:
      D.49169 = cfg->cil_offset_to_bb;
      D.49272 = falsebb->cil_code;
      D.49275 = (long int) D.49272;
      D.49171 = cfg->cil_start;
      D.49172 = (long int) D.49171;
      D.49276 = D.49275 - D.49172;
      D.49277 = (long unsigned int) D.49276;
      D.49278 = D.49277 * 8;
      D.49279 = D.49169 + D.49278;
      *D.49279 = falsebb;
      <D.49320>:
      D.49177 = cfg->real_offset;
      falsebb->real_offset = D.49177;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49324>; else goto <D.49321>;
      <D.49324>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49325 = D.49128->opcode;
      D.49326 = D.49325 + 64981;
      D.49327 = D.49326 <= 9;
      D.49328 = D.49325 + 64874;
      D.49329 = D.49328 <= 9;
      D.49330 = D.49327 | D.49329;
      if (D.49330 != 0) goto <D.49322>; else goto <D.49331>;
      <D.49331>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 <= 9) goto <D.49322>; else goto <D.49321>;
      <D.49322>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      D.49193 = *D.49192;
      if (D.49193 == 0B) goto <D.49332>; else goto <D.49321>;
      <D.49332>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      *D.49192 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      goto <D.49323>;
      <D.49321>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 == 0B) goto <D.49333>; else goto <D.49335>;
      <D.49335>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49336 = D.49128->opcode;
      D.49337 = D.49336 != 446;
      D.49338 = D.49336 != 763;
      D.49339 = D.49337 & D.49338;
      if (D.49339 != 0) goto <D.49340>; else goto <D.49334>;
      <D.49340>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49341 = D.49128->opcode;
      D.49342 = D.49341 + 64981;
      D.49343 = D.49342 > 9;
      D.49344 = D.49341 + 64874;
      D.49345 = D.49344 > 9;
      D.49346 = D.49343 & D.49345;
      if (D.49346 != 0) goto <D.49347>; else goto <D.49334>;
      <D.49347>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 > 9) goto <D.49333>; else goto <D.49334>;
      <D.49333>:
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      <D.49334>:
      <D.49323>:
      D.49085 = cfg->cbb;
      D.49085->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49348>;
      <D.49315>:
      D.49085 = cfg->cbb;
      D.49085->extended = 1;
      <D.49348>:
      <D.49307>:
    }
    alloc = handle_alloc (cfg, klass, 1, context_used);
    if (alloc == 0B) goto <D.49349>; else goto <D.49350>;
    <D.49349>:
    D.49092 = 0B;
    return D.49092;
    <D.49350>:
    D.49110 = cfg->mempool;
    ins = mono_mempool_alloc (D.49110, 80);
    ins->data.op[1].const_val = 0;
    D.49351 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.49351;
    ins->prev = 0B;
    D.49352 = ins->prev;
    ins->next = D.49352;
    D.49353 = &klass->byval_arg;
    D.49354 = mono_type_to_store_membase (cfg, D.49353);
    D.49355 = (short unsigned int) D.49354;
    ins->opcode = D.49355;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.49356 = ins->sreg3;
    ins->sreg2 = D.49356;
    D.49357 = ins->sreg2;
    ins->sreg1 = D.49357;
    D.49121 = cfg->ip;
    ins->cil_code = D.49121;
    val.451 = val;
    D.49359 = val.451->dreg;
    ins->sreg1 = D.49359;
    D.49360 = alloc->dreg;
    ins->dreg = D.49360;
    ins->data.op[0].const_val = 16;
    D.49353 = &klass->byval_arg;
    type_to_eval_stack_type (cfg, D.49353, ins);
    D.49353 = &klass->byval_arg;
    D.49361 = mono_class_from_mono_type (D.49353);
    ins->klass = D.49361;
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    if (D.49128 != 0B) goto <D.49362>; else goto <D.49363>;
    <D.49362>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49128->next = ins;
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    ins->prev = D.49128;
    D.49085 = cfg->cbb;
    D.49085->last_ins = ins;
    goto <D.49364>;
    <D.49363>:
    D.49085 = cfg->cbb;
    D.49085 = cfg->cbb;
    D.49085->last_ins = ins;
    D.49128 = D.49085->last_ins;
    D.49085->code = D.49128;
    <D.49364>:
    ins->opcode = 390;
    D.49110 = cfg->mempool;
    res = mono_mempool_alloc (D.49110, 80);
    res->data.op[1].const_val = 0;
    D.49365 = res->data.op[1].const_val;
    res->data.op[0].const_val = D.49365;
    res->prev = 0B;
    D.49366 = res->prev;
    res->next = D.49366;
    res->opcode = 428;
    res->flags = 0;
    res->type = 0;
    res->dreg = -1;
    res->sreg3 = -1;
    D.49367 = res->sreg3;
    res->sreg2 = D.49367;
    D.49368 = res->sreg2;
    res->sreg1 = D.49368;
    D.49121 = cfg->ip;
    res->cil_code = D.49121;
    res->dreg = dreg;
    D.49360 = alloc->dreg;
    res->sreg1 = D.49360;
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    if (D.49128 != 0B) goto <D.49369>; else goto <D.49370>;
    <D.49369>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49128->next = res;
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    res->prev = D.49128;
    D.49085 = cfg->cbb;
    D.49085->last_ins = res;
    goto <D.49371>;
    <D.49370>:
    D.49085 = cfg->cbb;
    D.49085 = cfg->cbb;
    D.49085->last_ins = res;
    D.49128 = D.49085->last_ins;
    D.49085->code = D.49128;
    <D.49371>:
    res->type = 6;
    res->klass = klass;
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.49110 = cfg->mempool;
      ins = mono_mempool_alloc (D.49110, 80);
      ins->data.op[1].const_val = 0;
      D.49372 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.49372;
      ins->prev = 0B;
      D.49373 = ins->prev;
      ins->next = D.49373;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.49374 = ins->sreg3;
      ins->sreg2 = D.49374;
      D.49375 = ins->sreg2;
      ins->sreg1 = D.49375;
      D.49121 = cfg->ip;
      ins->cil_code = D.49121;
      if (1 != 0) goto <D.49376>; else goto <D.49377>;
      <D.49376>:
      D.49110 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49110, 296);
      D.49136 = cfg->num_bblocks;
      D.49378 = D.49136;
      D.49379 = D.49378 + 1;
      cfg->num_bblocks = D.49379;
      D.49380 = (int) D.49378;
      falsebb->block_num = D.49380;
      ins->data.op[0].target_block = end_bb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, end_bb);
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49381>; else goto <D.49382>;
      <D.49381>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = ins;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      ins->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      goto <D.49383>;
      <D.49382>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49383>:
      D.49384 = falsebb->cil_code;
      if (D.49384 != 0B) goto <D.49385>; else goto <D.49386>;
      <D.49385>:
      D.49169 = cfg->cil_offset_to_bb;
      D.49384 = falsebb->cil_code;
      D.49387 = (long int) D.49384;
      D.49171 = cfg->cil_start;
      D.49172 = (long int) D.49171;
      D.49388 = D.49387 - D.49172;
      D.49389 = (long unsigned int) D.49388;
      D.49390 = D.49389 * 8;
      D.49391 = D.49169 + D.49390;
      *D.49391 = falsebb;
      <D.49386>:
      D.49177 = cfg->real_offset;
      falsebb->real_offset = D.49177;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49395>; else goto <D.49392>;
      <D.49395>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49396 = D.49128->opcode;
      D.49397 = D.49396 + 64981;
      D.49398 = D.49397 <= 9;
      D.49399 = D.49396 + 64874;
      D.49400 = D.49399 <= 9;
      D.49401 = D.49398 | D.49400;
      if (D.49401 != 0) goto <D.49393>; else goto <D.49402>;
      <D.49402>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 <= 9) goto <D.49393>; else goto <D.49392>;
      <D.49393>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      D.49193 = *D.49192;
      if (D.49193 == 0B) goto <D.49403>; else goto <D.49392>;
      <D.49403>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      *D.49192 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      goto <D.49394>;
      <D.49392>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 == 0B) goto <D.49404>; else goto <D.49406>;
      <D.49406>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49407 = D.49128->opcode;
      D.49408 = D.49407 != 446;
      D.49409 = D.49407 != 763;
      D.49410 = D.49408 & D.49409;
      if (D.49410 != 0) goto <D.49411>; else goto <D.49405>;
      <D.49411>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49412 = D.49128->opcode;
      D.49413 = D.49412 + 64981;
      D.49414 = D.49413 > 9;
      D.49415 = D.49412 + 64874;
      D.49416 = D.49415 > 9;
      D.49417 = D.49414 & D.49416;
      if (D.49417 != 0) goto <D.49418>; else goto <D.49405>;
      <D.49418>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 > 9) goto <D.49404>; else goto <D.49405>;
      <D.49404>:
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      <D.49405>:
      <D.49394>:
      D.49085 = cfg->cbb;
      D.49085->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49419>;
      <D.49377>:
      D.49110 = cfg->mempool;
      D.49420 = mono_mempool_alloc (D.49110, 16);
      ins->data.op[1].many_blocks = D.49420;
      D.49421 = ins->data.op[1].many_blocks;
      *D.49421 = end_bb;
      D.49421 = ins->data.op[1].many_blocks;
      D.49422 = D.49421 + 8;
      *D.49422 = 0B;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, end_bb);
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49423>; else goto <D.49424>;
      <D.49423>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = ins;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      ins->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      goto <D.49425>;
      <D.49424>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49425>:
      D.49114 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.49217 = D.49114 & 8;
      if (D.49217 == 0) goto <D.49426>; else goto <D.49427>;
      <D.49426>:
      D.49110 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49110, 296);
      D.49136 = cfg->num_bblocks;
      D.49428 = D.49136;
      D.49429 = D.49428 + 1;
      cfg->num_bblocks = D.49429;
      D.49430 = (int) D.49428;
      falsebb->block_num = D.49430;
      D.49421 = ins->data.op[1].many_blocks;
      D.49422 = D.49421 + 8;
      *D.49422 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      D.49384 = falsebb->cil_code;
      if (D.49384 != 0B) goto <D.49431>; else goto <D.49432>;
      <D.49431>:
      D.49169 = cfg->cil_offset_to_bb;
      D.49384 = falsebb->cil_code;
      D.49387 = (long int) D.49384;
      D.49171 = cfg->cil_start;
      D.49172 = (long int) D.49171;
      D.49388 = D.49387 - D.49172;
      D.49389 = (long unsigned int) D.49388;
      D.49390 = D.49389 * 8;
      D.49391 = D.49169 + D.49390;
      *D.49391 = falsebb;
      <D.49432>:
      D.49177 = cfg->real_offset;
      falsebb->real_offset = D.49177;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49436>; else goto <D.49433>;
      <D.49436>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49437 = D.49128->opcode;
      D.49438 = D.49437 + 64981;
      D.49439 = D.49438 <= 9;
      D.49440 = D.49437 + 64874;
      D.49441 = D.49440 <= 9;
      D.49442 = D.49439 | D.49441;
      if (D.49442 != 0) goto <D.49434>; else goto <D.49443>;
      <D.49443>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 <= 9) goto <D.49434>; else goto <D.49433>;
      <D.49434>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      D.49193 = *D.49192;
      if (D.49193 == 0B) goto <D.49444>; else goto <D.49433>;
      <D.49444>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      *D.49192 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      goto <D.49435>;
      <D.49433>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 == 0B) goto <D.49445>; else goto <D.49447>;
      <D.49447>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49448 = D.49128->opcode;
      D.49449 = D.49448 != 446;
      D.49450 = D.49448 != 763;
      D.49451 = D.49449 & D.49450;
      if (D.49451 != 0) goto <D.49452>; else goto <D.49446>;
      <D.49452>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49453 = D.49128->opcode;
      D.49454 = D.49453 + 64981;
      D.49455 = D.49454 > 9;
      D.49456 = D.49453 + 64874;
      D.49457 = D.49456 > 9;
      D.49458 = D.49455 & D.49457;
      if (D.49458 != 0) goto <D.49459>; else goto <D.49446>;
      <D.49459>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 > 9) goto <D.49445>; else goto <D.49446>;
      <D.49445>:
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      <D.49446>:
      <D.49435>:
      D.49085 = cfg->cbb;
      D.49085->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49460>;
      <D.49427>:
      D.49085 = cfg->cbb;
      D.49085->extended = 1;
      <D.49460>:
      <D.49419>:
    }
    D.49461 = is_ref_bb->cil_code;
    if (D.49461 != 0B) goto <D.49462>; else goto <D.49463>;
    <D.49462>:
    D.49169 = cfg->cil_offset_to_bb;
    D.49461 = is_ref_bb->cil_code;
    D.49464 = (long int) D.49461;
    D.49171 = cfg->cil_start;
    D.49172 = (long int) D.49171;
    D.49465 = D.49464 - D.49172;
    D.49466 = (long unsigned int) D.49465;
    D.49467 = D.49466 * 8;
    D.49468 = D.49169 + D.49467;
    *D.49468 = is_ref_bb;
    <D.49463>:
    D.49177 = cfg->real_offset;
    is_ref_bb->real_offset = D.49177;
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    if (D.49128 != 0B) goto <D.49472>; else goto <D.49469>;
    <D.49472>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49473 = D.49128->opcode;
    D.49474 = D.49473 + 64981;
    D.49475 = D.49474 <= 9;
    D.49476 = D.49473 + 64874;
    D.49477 = D.49476 <= 9;
    D.49478 = D.49475 | D.49477;
    if (D.49478 != 0) goto <D.49470>; else goto <D.49479>;
    <D.49479>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49189 = D.49128->opcode;
    D.49190 = D.49189 + 64884;
    if (D.49190 <= 9) goto <D.49470>; else goto <D.49469>;
    <D.49470>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49191 = D.49128->data.op[1].many_blocks;
    D.49192 = D.49191 + 8;
    D.49193 = *D.49192;
    if (D.49193 == 0B) goto <D.49480>; else goto <D.49469>;
    <D.49480>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49191 = D.49128->data.op[1].many_blocks;
    D.49192 = D.49191 + 8;
    *D.49192 = is_ref_bb;
    D.49085 = cfg->cbb;
    mono_link_bblock (cfg, D.49085, is_ref_bb);
    goto <D.49471>;
    <D.49469>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    if (D.49128 == 0B) goto <D.49481>; else goto <D.49483>;
    <D.49483>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49484 = D.49128->opcode;
    D.49485 = D.49484 != 446;
    D.49486 = D.49484 != 763;
    D.49487 = D.49485 & D.49486;
    if (D.49487 != 0) goto <D.49488>; else goto <D.49482>;
    <D.49488>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49489 = D.49128->opcode;
    D.49490 = D.49489 + 64981;
    D.49491 = D.49490 > 9;
    D.49492 = D.49489 + 64874;
    D.49493 = D.49492 > 9;
    D.49494 = D.49491 & D.49493;
    if (D.49494 != 0) goto <D.49495>; else goto <D.49482>;
    <D.49495>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49189 = D.49128->opcode;
    D.49190 = D.49189 + 64884;
    if (D.49190 > 9) goto <D.49481>; else goto <D.49482>;
    <D.49481>:
    D.49085 = cfg->cbb;
    mono_link_bblock (cfg, D.49085, is_ref_bb);
    <D.49482>:
    <D.49471>:
    D.49085 = cfg->cbb;
    D.49085->next_bb = is_ref_bb;
    cfg->cbb = is_ref_bb;
    D.49496 = alloc_ireg (cfg);
    addr_reg = (int) D.49496;
    val.451 = val;
    D.49359 = val.451->dreg;
    D.49498 = (unsigned int) D.49359;
    D.49499 = cfg->vreg_to_inst_len;
    if (D.49498 < D.49499) goto <D.49500>; else goto <D.49501>;
    <D.49500>:
    D.49502 = cfg->vreg_to_inst;
    val.451 = val;
    D.49359 = val.451->dreg;
    D.49503 = (long unsigned int) D.49359;
    D.49504 = D.49503 * 8;
    D.49505 = D.49502 + D.49504;
    iftmp.452 = *D.49505;
    goto <D.49506>;
    <D.49501>:
    iftmp.452 = 0B;
    <D.49506>:
    src_var = iftmp.452;
    if (src_var == 0B) goto <D.49507>; else goto <D.49508>;
    <D.49507>:
    val.451 = val;
    D.49359 = val.451->dreg;
    D.49353 = &klass->byval_arg;
    src_var = mono_compile_create_var_for_vreg (cfg, D.49353, 329, D.49359);
    <D.49508>:
    D.49110 = cfg->mempool;
    addr = mono_mempool_alloc (D.49110, 80);
    addr->data.op[1].const_val = 0;
    D.49509 = addr->data.op[1].const_val;
    addr->data.op[0].const_val = D.49509;
    addr->prev = 0B;
    D.49510 = addr->prev;
    addr->next = D.49510;
    addr->opcode = 314;
    addr->flags = 0;
    addr->type = 0;
    addr->dreg = -1;
    addr->sreg3 = -1;
    D.49511 = addr->sreg3;
    addr->sreg2 = D.49511;
    D.49512 = addr->sreg2;
    addr->sreg1 = D.49512;
    D.49121 = cfg->ip;
    addr->cil_code = D.49121;
    addr->data.op[0].p = src_var;
    D.49513 = src_var->flags;
    D.49514 = D.49513 | 16;
    src_var->flags = D.49514;
    addr->type = 5;
    D.49515 = src_var->klass;
    addr->klass = D.49515;
    D.49516 = alloc_dreg (cfg, 5);
    D.49517 = (int) D.49516;
    addr->dreg = D.49517;
    cfg->has_indirection = 1;
    D.49518 = cfg->gsharedvt;
    D.49519 = D.49518 != 0;
    D.49520 = (long int) D.49519;
    D.49521 = __builtin_expect (D.49520, 0);
    if (D.49521 != 0) goto <D.49522>; else goto <D.49523>;
    <D.49522>:
    D.49524 = src_var->data.op[1].vtype;
    D.49525 = mini_is_gsharedvt_variable_type (cfg, D.49524);
    if (D.49525 != 0) goto <D.49526>; else goto <D.49527>;
    <D.49526>:
    handle_gsharedvt_ldaddr (cfg);
    <D.49527>:
    <D.49523>:
    if (0 != 0) goto <D.49528>; else goto <D.49529>;
    <D.49528>:
    {
      struct MonoInst * var1;
      struct MonoInst * var2;

      D.49531 = src_var->dreg;
      D.49532 = D.49531 + 1;
      D.49533 = (unsigned int) D.49532;
      D.49499 = cfg->vreg_to_inst_len;
      if (D.49533 < D.49499) goto <D.49534>; else goto <D.49535>;
      <D.49534>:
      D.49502 = cfg->vreg_to_inst;
      D.49531 = src_var->dreg;
      D.49536 = (sizetype) D.49531;
      D.49537 = D.49536 + 1;
      D.49538 = D.49537 * 8;
      D.49539 = D.49502 + D.49538;
      iftmp.453 = *D.49539;
      goto <D.49540>;
      <D.49535>:
      iftmp.453 = 0B;
      <D.49540>:
      var1 = iftmp.453;
      D.49531 = src_var->dreg;
      D.49542 = D.49531 + 2;
      D.49543 = (unsigned int) D.49542;
      D.49499 = cfg->vreg_to_inst_len;
      if (D.49543 < D.49499) goto <D.49544>; else goto <D.49545>;
      <D.49544>:
      D.49502 = cfg->vreg_to_inst;
      D.49531 = src_var->dreg;
      D.49536 = (sizetype) D.49531;
      D.49546 = D.49536 + 2;
      D.49547 = D.49546 * 8;
      D.49548 = D.49502 + D.49547;
      iftmp.454 = *D.49548;
      goto <D.49549>;
      <D.49545>:
      iftmp.454 = 0B;
      <D.49549>:
      var2 = iftmp.454;
      D.49550 = var1 == 0B;
      D.49551 = (long int) D.49550;
      D.49552 = __builtin_expect (D.49551, 0);
      if (D.49552 != 0) goto <D.49553>; else goto <D.49554>;
      <D.49553>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3880, "var1");
      <D.49554>:
      D.49555 = var2 == 0B;
      D.49556 = (long int) D.49555;
      D.49557 = __builtin_expect (D.49556, 0);
      if (D.49557 != 0) goto <D.49558>; else goto <D.49559>;
      <D.49558>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3880, "var2");
      <D.49559>:
      D.49560 = var1->flags;
      D.49561 = D.49560 | 16;
      var1->flags = D.49561;
      D.49562 = var2->flags;
      D.49563 = D.49562 | 16;
      var2->flags = D.49563;
    }
    <D.49529>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    if (D.49128 != 0B) goto <D.49564>; else goto <D.49565>;
    <D.49564>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49128->next = addr;
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    addr->prev = D.49128;
    D.49085 = cfg->cbb;
    D.49085->last_ins = addr;
    goto <D.49566>;
    <D.49565>:
    D.49085 = cfg->cbb;
    D.49085 = cfg->cbb;
    D.49085->last_ins = addr;
    D.49128 = D.49085->last_ins;
    D.49085->code = D.49128;
    <D.49566>:
    {
      struct MonoInst * inst;

      D.49110 = cfg->mempool;
      inst = mono_mempool_alloc (D.49110, 80);
      inst->data.op[1].const_val = 0;
      D.49567 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49567;
      inst->prev = 0B;
      D.49568 = inst->prev;
      inst->next = D.49568;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49569 = inst->sreg3;
      inst->sreg2 = D.49569;
      D.49570 = inst->sreg2;
      inst->sreg1 = D.49570;
      D.49121 = cfg->ip;
      inst->cil_code = D.49121;
      inst->dreg = dreg;
      D.49571 = addr->dreg;
      inst->sreg1 = D.49571;
      inst->data.op[0].const_val = 0;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49572>; else goto <D.49573>;
      <D.49572>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = inst;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      inst->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = inst;
      goto <D.49574>;
      <D.49573>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = inst;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49574>:
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.49110 = cfg->mempool;
      ins = mono_mempool_alloc (D.49110, 80);
      ins->data.op[1].const_val = 0;
      D.49575 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.49575;
      ins->prev = 0B;
      D.49576 = ins->prev;
      ins->next = D.49576;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.49577 = ins->sreg3;
      ins->sreg2 = D.49577;
      D.49578 = ins->sreg2;
      ins->sreg1 = D.49578;
      D.49121 = cfg->ip;
      ins->cil_code = D.49121;
      if (1 != 0) goto <D.49579>; else goto <D.49580>;
      <D.49579>:
      D.49110 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49110, 296);
      D.49136 = cfg->num_bblocks;
      D.49581 = D.49136;
      D.49582 = D.49581 + 1;
      cfg->num_bblocks = D.49582;
      D.49583 = (int) D.49581;
      falsebb->block_num = D.49583;
      ins->data.op[0].target_block = end_bb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, end_bb);
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49584>; else goto <D.49585>;
      <D.49584>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = ins;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      ins->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      goto <D.49586>;
      <D.49585>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49586>:
      D.49587 = falsebb->cil_code;
      if (D.49587 != 0B) goto <D.49588>; else goto <D.49589>;
      <D.49588>:
      D.49169 = cfg->cil_offset_to_bb;
      D.49587 = falsebb->cil_code;
      D.49590 = (long int) D.49587;
      D.49171 = cfg->cil_start;
      D.49172 = (long int) D.49171;
      D.49591 = D.49590 - D.49172;
      D.49592 = (long unsigned int) D.49591;
      D.49593 = D.49592 * 8;
      D.49594 = D.49169 + D.49593;
      *D.49594 = falsebb;
      <D.49589>:
      D.49177 = cfg->real_offset;
      falsebb->real_offset = D.49177;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49598>; else goto <D.49595>;
      <D.49598>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49599 = D.49128->opcode;
      D.49600 = D.49599 + 64981;
      D.49601 = D.49600 <= 9;
      D.49602 = D.49599 + 64874;
      D.49603 = D.49602 <= 9;
      D.49604 = D.49601 | D.49603;
      if (D.49604 != 0) goto <D.49596>; else goto <D.49605>;
      <D.49605>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 <= 9) goto <D.49596>; else goto <D.49595>;
      <D.49596>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      D.49193 = *D.49192;
      if (D.49193 == 0B) goto <D.49606>; else goto <D.49595>;
      <D.49606>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      *D.49192 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      goto <D.49597>;
      <D.49595>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 == 0B) goto <D.49607>; else goto <D.49609>;
      <D.49609>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49610 = D.49128->opcode;
      D.49611 = D.49610 != 446;
      D.49612 = D.49610 != 763;
      D.49613 = D.49611 & D.49612;
      if (D.49613 != 0) goto <D.49614>; else goto <D.49608>;
      <D.49614>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49615 = D.49128->opcode;
      D.49616 = D.49615 + 64981;
      D.49617 = D.49616 > 9;
      D.49618 = D.49615 + 64874;
      D.49619 = D.49618 > 9;
      D.49620 = D.49617 & D.49619;
      if (D.49620 != 0) goto <D.49621>; else goto <D.49608>;
      <D.49621>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 > 9) goto <D.49607>; else goto <D.49608>;
      <D.49607>:
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      <D.49608>:
      <D.49597>:
      D.49085 = cfg->cbb;
      D.49085->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49622>;
      <D.49580>:
      D.49110 = cfg->mempool;
      D.49623 = mono_mempool_alloc (D.49110, 16);
      ins->data.op[1].many_blocks = D.49623;
      D.49624 = ins->data.op[1].many_blocks;
      *D.49624 = end_bb;
      D.49624 = ins->data.op[1].many_blocks;
      D.49625 = D.49624 + 8;
      *D.49625 = 0B;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, end_bb);
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49626>; else goto <D.49627>;
      <D.49626>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = ins;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      ins->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      goto <D.49628>;
      <D.49627>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49628>:
      D.49114 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.49217 = D.49114 & 8;
      if (D.49217 == 0) goto <D.49629>; else goto <D.49630>;
      <D.49629>:
      D.49110 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49110, 296);
      D.49136 = cfg->num_bblocks;
      D.49631 = D.49136;
      D.49632 = D.49631 + 1;
      cfg->num_bblocks = D.49632;
      D.49633 = (int) D.49631;
      falsebb->block_num = D.49633;
      D.49624 = ins->data.op[1].many_blocks;
      D.49625 = D.49624 + 8;
      *D.49625 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      D.49587 = falsebb->cil_code;
      if (D.49587 != 0B) goto <D.49634>; else goto <D.49635>;
      <D.49634>:
      D.49169 = cfg->cil_offset_to_bb;
      D.49587 = falsebb->cil_code;
      D.49590 = (long int) D.49587;
      D.49171 = cfg->cil_start;
      D.49172 = (long int) D.49171;
      D.49591 = D.49590 - D.49172;
      D.49592 = (long unsigned int) D.49591;
      D.49593 = D.49592 * 8;
      D.49594 = D.49169 + D.49593;
      *D.49594 = falsebb;
      <D.49635>:
      D.49177 = cfg->real_offset;
      falsebb->real_offset = D.49177;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49639>; else goto <D.49636>;
      <D.49639>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49640 = D.49128->opcode;
      D.49641 = D.49640 + 64981;
      D.49642 = D.49641 <= 9;
      D.49643 = D.49640 + 64874;
      D.49644 = D.49643 <= 9;
      D.49645 = D.49642 | D.49644;
      if (D.49645 != 0) goto <D.49637>; else goto <D.49646>;
      <D.49646>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 <= 9) goto <D.49637>; else goto <D.49636>;
      <D.49637>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      D.49193 = *D.49192;
      if (D.49193 == 0B) goto <D.49647>; else goto <D.49636>;
      <D.49647>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      *D.49192 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      goto <D.49638>;
      <D.49636>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 == 0B) goto <D.49648>; else goto <D.49650>;
      <D.49650>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49651 = D.49128->opcode;
      D.49652 = D.49651 != 446;
      D.49653 = D.49651 != 763;
      D.49654 = D.49652 & D.49653;
      if (D.49654 != 0) goto <D.49655>; else goto <D.49649>;
      <D.49655>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49656 = D.49128->opcode;
      D.49657 = D.49656 + 64981;
      D.49658 = D.49657 > 9;
      D.49659 = D.49656 + 64874;
      D.49660 = D.49659 > 9;
      D.49661 = D.49658 & D.49660;
      if (D.49661 != 0) goto <D.49662>; else goto <D.49649>;
      <D.49662>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 > 9) goto <D.49648>; else goto <D.49649>;
      <D.49648>:
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      <D.49649>:
      <D.49638>:
      D.49085 = cfg->cbb;
      D.49085->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49663>;
      <D.49630>:
      D.49085 = cfg->cbb;
      D.49085->extended = 1;
      <D.49663>:
      <D.49622>:
    }
    D.49664 = is_nullable_bb->cil_code;
    if (D.49664 != 0B) goto <D.49665>; else goto <D.49666>;
    <D.49665>:
    D.49169 = cfg->cil_offset_to_bb;
    D.49664 = is_nullable_bb->cil_code;
    D.49667 = (long int) D.49664;
    D.49171 = cfg->cil_start;
    D.49172 = (long int) D.49171;
    D.49668 = D.49667 - D.49172;
    D.49669 = (long unsigned int) D.49668;
    D.49670 = D.49669 * 8;
    D.49671 = D.49169 + D.49670;
    *D.49671 = is_nullable_bb;
    <D.49666>:
    D.49177 = cfg->real_offset;
    is_nullable_bb->real_offset = D.49177;
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    if (D.49128 != 0B) goto <D.49675>; else goto <D.49672>;
    <D.49675>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49676 = D.49128->opcode;
    D.49677 = D.49676 + 64981;
    D.49678 = D.49677 <= 9;
    D.49679 = D.49676 + 64874;
    D.49680 = D.49679 <= 9;
    D.49681 = D.49678 | D.49680;
    if (D.49681 != 0) goto <D.49673>; else goto <D.49682>;
    <D.49682>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49189 = D.49128->opcode;
    D.49190 = D.49189 + 64884;
    if (D.49190 <= 9) goto <D.49673>; else goto <D.49672>;
    <D.49673>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49191 = D.49128->data.op[1].many_blocks;
    D.49192 = D.49191 + 8;
    D.49193 = *D.49192;
    if (D.49193 == 0B) goto <D.49683>; else goto <D.49672>;
    <D.49683>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49191 = D.49128->data.op[1].many_blocks;
    D.49192 = D.49191 + 8;
    *D.49192 = is_nullable_bb;
    D.49085 = cfg->cbb;
    mono_link_bblock (cfg, D.49085, is_nullable_bb);
    goto <D.49674>;
    <D.49672>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    if (D.49128 == 0B) goto <D.49684>; else goto <D.49686>;
    <D.49686>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49687 = D.49128->opcode;
    D.49688 = D.49687 != 446;
    D.49689 = D.49687 != 763;
    D.49690 = D.49688 & D.49689;
    if (D.49690 != 0) goto <D.49691>; else goto <D.49685>;
    <D.49691>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49692 = D.49128->opcode;
    D.49693 = D.49692 + 64981;
    D.49694 = D.49693 > 9;
    D.49695 = D.49692 + 64874;
    D.49696 = D.49695 > 9;
    D.49697 = D.49694 & D.49696;
    if (D.49697 != 0) goto <D.49698>; else goto <D.49685>;
    <D.49698>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49189 = D.49128->opcode;
    D.49190 = D.49189 + 64884;
    if (D.49190 > 9) goto <D.49684>; else goto <D.49685>;
    <D.49684>:
    D.49085 = cfg->cbb;
    mono_link_bblock (cfg, D.49085, is_nullable_bb);
    <D.49685>:
    <D.49674>:
    D.49085 = cfg->cbb;
    D.49085->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.49110 = cfg->mempool;
      box_sig = mono_mempool_alloc0 (D.49110, 24);
      D.49699 = mono_defaults.object_class;
      D.49700 = &D.49699->byval_arg;
      box_sig->ret = D.49700;
      box_sig->param_count = 1;
      D.49353 = &klass->byval_arg;
      box_sig->params[0] = D.49353;
      box_call = mono_emit_calli (cfg, box_sig, &val, addr, 0B, 0B);
      D.49110 = cfg->mempool;
      res = mono_mempool_alloc (D.49110, 80);
      res->data.op[1].const_val = 0;
      D.49365 = res->data.op[1].const_val;
      res->data.op[0].const_val = D.49365;
      res->prev = 0B;
      D.49366 = res->prev;
      res->next = D.49366;
      res->opcode = 428;
      res->flags = 0;
      res->type = 0;
      res->dreg = -1;
      res->sreg3 = -1;
      D.49367 = res->sreg3;
      res->sreg2 = D.49367;
      D.49368 = res->sreg2;
      res->sreg1 = D.49368;
      D.49121 = cfg->ip;
      res->cil_code = D.49121;
      res->dreg = dreg;
      D.49701 = box_call->dreg;
      res->sreg1 = D.49701;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49702>; else goto <D.49703>;
      <D.49702>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = res;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      res->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = res;
      goto <D.49704>;
      <D.49703>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = res;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49704>:
      res->type = 6;
      res->klass = klass;
    }
    {
      struct MonoInst * ins;
      struct MonoBasicBlock * falsebb;

      D.49110 = cfg->mempool;
      ins = mono_mempool_alloc (D.49110, 80);
      ins->data.op[1].const_val = 0;
      D.49705 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.49705;
      ins->prev = 0B;
      D.49706 = ins->prev;
      ins->next = D.49706;
      ins->opcode = 446;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.49707 = ins->sreg3;
      ins->sreg2 = D.49707;
      D.49708 = ins->sreg2;
      ins->sreg1 = D.49708;
      D.49121 = cfg->ip;
      ins->cil_code = D.49121;
      if (1 != 0) goto <D.49709>; else goto <D.49710>;
      <D.49709>:
      D.49110 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49110, 296);
      D.49136 = cfg->num_bblocks;
      D.49711 = D.49136;
      D.49712 = D.49711 + 1;
      cfg->num_bblocks = D.49712;
      D.49713 = (int) D.49711;
      falsebb->block_num = D.49713;
      ins->data.op[0].target_block = end_bb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, end_bb);
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49714>; else goto <D.49715>;
      <D.49714>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = ins;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      ins->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      goto <D.49716>;
      <D.49715>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49716>:
      D.49717 = falsebb->cil_code;
      if (D.49717 != 0B) goto <D.49718>; else goto <D.49719>;
      <D.49718>:
      D.49169 = cfg->cil_offset_to_bb;
      D.49717 = falsebb->cil_code;
      D.49720 = (long int) D.49717;
      D.49171 = cfg->cil_start;
      D.49172 = (long int) D.49171;
      D.49721 = D.49720 - D.49172;
      D.49722 = (long unsigned int) D.49721;
      D.49723 = D.49722 * 8;
      D.49724 = D.49169 + D.49723;
      *D.49724 = falsebb;
      <D.49719>:
      D.49177 = cfg->real_offset;
      falsebb->real_offset = D.49177;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49728>; else goto <D.49725>;
      <D.49728>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49729 = D.49128->opcode;
      D.49730 = D.49729 + 64981;
      D.49731 = D.49730 <= 9;
      D.49732 = D.49729 + 64874;
      D.49733 = D.49732 <= 9;
      D.49734 = D.49731 | D.49733;
      if (D.49734 != 0) goto <D.49726>; else goto <D.49735>;
      <D.49735>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 <= 9) goto <D.49726>; else goto <D.49725>;
      <D.49726>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      D.49193 = *D.49192;
      if (D.49193 == 0B) goto <D.49736>; else goto <D.49725>;
      <D.49736>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      *D.49192 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      goto <D.49727>;
      <D.49725>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 == 0B) goto <D.49737>; else goto <D.49739>;
      <D.49739>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49740 = D.49128->opcode;
      D.49741 = D.49740 != 446;
      D.49742 = D.49740 != 763;
      D.49743 = D.49741 & D.49742;
      if (D.49743 != 0) goto <D.49744>; else goto <D.49738>;
      <D.49744>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49745 = D.49128->opcode;
      D.49746 = D.49745 + 64981;
      D.49747 = D.49746 > 9;
      D.49748 = D.49745 + 64874;
      D.49749 = D.49748 > 9;
      D.49750 = D.49747 & D.49749;
      if (D.49750 != 0) goto <D.49751>; else goto <D.49738>;
      <D.49751>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 > 9) goto <D.49737>; else goto <D.49738>;
      <D.49737>:
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      <D.49738>:
      <D.49727>:
      D.49085 = cfg->cbb;
      D.49085->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49752>;
      <D.49710>:
      D.49110 = cfg->mempool;
      D.49753 = mono_mempool_alloc (D.49110, 16);
      ins->data.op[1].many_blocks = D.49753;
      D.49754 = ins->data.op[1].many_blocks;
      *D.49754 = end_bb;
      D.49754 = ins->data.op[1].many_blocks;
      D.49755 = D.49754 + 8;
      *D.49755 = 0B;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, end_bb);
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49756>; else goto <D.49757>;
      <D.49756>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49128->next = ins;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      ins->prev = D.49128;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      goto <D.49758>;
      <D.49757>:
      D.49085 = cfg->cbb;
      D.49085 = cfg->cbb;
      D.49085->last_ins = ins;
      D.49128 = D.49085->last_ins;
      D.49085->code = D.49128;
      <D.49758>:
      D.49114 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.49217 = D.49114 & 8;
      if (D.49217 == 0) goto <D.49759>; else goto <D.49760>;
      <D.49759>:
      D.49110 = cfg->mempool;
      falsebb = mono_mempool_alloc0 (D.49110, 296);
      D.49136 = cfg->num_bblocks;
      D.49761 = D.49136;
      D.49762 = D.49761 + 1;
      cfg->num_bblocks = D.49762;
      D.49763 = (int) D.49761;
      falsebb->block_num = D.49763;
      D.49754 = ins->data.op[1].many_blocks;
      D.49755 = D.49754 + 8;
      *D.49755 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      D.49717 = falsebb->cil_code;
      if (D.49717 != 0B) goto <D.49764>; else goto <D.49765>;
      <D.49764>:
      D.49169 = cfg->cil_offset_to_bb;
      D.49717 = falsebb->cil_code;
      D.49720 = (long int) D.49717;
      D.49171 = cfg->cil_start;
      D.49172 = (long int) D.49171;
      D.49721 = D.49720 - D.49172;
      D.49722 = (long unsigned int) D.49721;
      D.49723 = D.49722 * 8;
      D.49724 = D.49169 + D.49723;
      *D.49724 = falsebb;
      <D.49765>:
      D.49177 = cfg->real_offset;
      falsebb->real_offset = D.49177;
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 != 0B) goto <D.49769>; else goto <D.49766>;
      <D.49769>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49770 = D.49128->opcode;
      D.49771 = D.49770 + 64981;
      D.49772 = D.49771 <= 9;
      D.49773 = D.49770 + 64874;
      D.49774 = D.49773 <= 9;
      D.49775 = D.49772 | D.49774;
      if (D.49775 != 0) goto <D.49767>; else goto <D.49776>;
      <D.49776>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 <= 9) goto <D.49767>; else goto <D.49766>;
      <D.49767>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      D.49193 = *D.49192;
      if (D.49193 == 0B) goto <D.49777>; else goto <D.49766>;
      <D.49777>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49191 = D.49128->data.op[1].many_blocks;
      D.49192 = D.49191 + 8;
      *D.49192 = falsebb;
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      goto <D.49768>;
      <D.49766>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      if (D.49128 == 0B) goto <D.49778>; else goto <D.49780>;
      <D.49780>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49781 = D.49128->opcode;
      D.49782 = D.49781 != 446;
      D.49783 = D.49781 != 763;
      D.49784 = D.49782 & D.49783;
      if (D.49784 != 0) goto <D.49785>; else goto <D.49779>;
      <D.49785>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49786 = D.49128->opcode;
      D.49787 = D.49786 + 64981;
      D.49788 = D.49787 > 9;
      D.49789 = D.49786 + 64874;
      D.49790 = D.49789 > 9;
      D.49791 = D.49788 & D.49790;
      if (D.49791 != 0) goto <D.49792>; else goto <D.49779>;
      <D.49792>:
      D.49085 = cfg->cbb;
      D.49128 = D.49085->last_ins;
      D.49189 = D.49128->opcode;
      D.49190 = D.49189 + 64884;
      if (D.49190 > 9) goto <D.49778>; else goto <D.49779>;
      <D.49778>:
      D.49085 = cfg->cbb;
      mono_link_bblock (cfg, D.49085, falsebb);
      <D.49779>:
      <D.49768>:
      D.49085 = cfg->cbb;
      D.49085->next_bb = falsebb;
      cfg->cbb = falsebb;
      goto <D.49793>;
      <D.49760>:
      D.49085 = cfg->cbb;
      D.49085->extended = 1;
      <D.49793>:
      <D.49752>:
    }
    D.49794 = end_bb->cil_code;
    if (D.49794 != 0B) goto <D.49795>; else goto <D.49796>;
    <D.49795>:
    D.49169 = cfg->cil_offset_to_bb;
    D.49794 = end_bb->cil_code;
    D.49797 = (long int) D.49794;
    D.49171 = cfg->cil_start;
    D.49172 = (long int) D.49171;
    D.49798 = D.49797 - D.49172;
    D.49799 = (long unsigned int) D.49798;
    D.49800 = D.49799 * 8;
    D.49801 = D.49169 + D.49800;
    *D.49801 = end_bb;
    <D.49796>:
    D.49177 = cfg->real_offset;
    end_bb->real_offset = D.49177;
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    if (D.49128 != 0B) goto <D.49805>; else goto <D.49802>;
    <D.49805>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49806 = D.49128->opcode;
    D.49807 = D.49806 + 64981;
    D.49808 = D.49807 <= 9;
    D.49809 = D.49806 + 64874;
    D.49810 = D.49809 <= 9;
    D.49811 = D.49808 | D.49810;
    if (D.49811 != 0) goto <D.49803>; else goto <D.49812>;
    <D.49812>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49189 = D.49128->opcode;
    D.49190 = D.49189 + 64884;
    if (D.49190 <= 9) goto <D.49803>; else goto <D.49802>;
    <D.49803>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49191 = D.49128->data.op[1].many_blocks;
    D.49192 = D.49191 + 8;
    D.49193 = *D.49192;
    if (D.49193 == 0B) goto <D.49813>; else goto <D.49802>;
    <D.49813>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49191 = D.49128->data.op[1].many_blocks;
    D.49192 = D.49191 + 8;
    *D.49192 = end_bb;
    D.49085 = cfg->cbb;
    mono_link_bblock (cfg, D.49085, end_bb);
    goto <D.49804>;
    <D.49802>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    if (D.49128 == 0B) goto <D.49814>; else goto <D.49816>;
    <D.49816>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49817 = D.49128->opcode;
    D.49818 = D.49817 != 446;
    D.49819 = D.49817 != 763;
    D.49820 = D.49818 & D.49819;
    if (D.49820 != 0) goto <D.49821>; else goto <D.49815>;
    <D.49821>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49822 = D.49128->opcode;
    D.49823 = D.49822 + 64981;
    D.49824 = D.49823 > 9;
    D.49825 = D.49822 + 64874;
    D.49826 = D.49825 > 9;
    D.49827 = D.49824 & D.49826;
    if (D.49827 != 0) goto <D.49828>; else goto <D.49815>;
    <D.49828>:
    D.49085 = cfg->cbb;
    D.49128 = D.49085->last_ins;
    D.49189 = D.49128->opcode;
    D.49190 = D.49189 + 64884;
    if (D.49190 > 9) goto <D.49814>; else goto <D.49815>;
    <D.49814>:
    D.49085 = cfg->cbb;
    mono_link_bblock (cfg, D.49085, end_bb);
    <D.49815>:
    <D.49804>:
    D.49085 = cfg->cbb;
    D.49085->next_bb = end_bb;
    cfg->cbb = end_bb;
    D.49085 = cfg->cbb;
    *out_cbb = D.49085;
    D.49092 = res;
    return D.49092;
  }
  <D.49134>:
  alloc = handle_alloc (cfg, klass, 1, context_used);
  if (alloc == 0B) goto <D.49829>; else goto <D.49830>;
  <D.49829>:
  D.49092 = 0B;
  return D.49092;
  <D.49830>:
  D.49110 = cfg->mempool;
  ins = mono_mempool_alloc (D.49110, 80);
  ins->data.op[1].const_val = 0;
  D.49351 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.49351;
  ins->prev = 0B;
  D.49352 = ins->prev;
  ins->next = D.49352;
  D.49353 = &klass->byval_arg;
  D.49831 = mono_type_to_store_membase (cfg, D.49353);
  D.49832 = (short unsigned int) D.49831;
  ins->opcode = D.49832;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.49356 = ins->sreg3;
  ins->sreg2 = D.49356;
  D.49357 = ins->sreg2;
  ins->sreg1 = D.49357;
  D.49121 = cfg->ip;
  ins->cil_code = D.49121;
  val.451 = val;
  D.49359 = val.451->dreg;
  ins->sreg1 = D.49359;
  D.49360 = alloc->dreg;
  ins->dreg = D.49360;
  ins->data.op[0].const_val = 16;
  D.49353 = &klass->byval_arg;
  type_to_eval_stack_type (cfg, D.49353, ins);
  D.49353 = &klass->byval_arg;
  D.49833 = mono_class_from_mono_type (D.49353);
  ins->klass = D.49833;
  D.49085 = cfg->cbb;
  D.49128 = D.49085->last_ins;
  if (D.49128 != 0B) goto <D.49834>; else goto <D.49835>;
  <D.49834>:
  D.49085 = cfg->cbb;
  D.49128 = D.49085->last_ins;
  D.49128->next = ins;
  D.49085 = cfg->cbb;
  D.49128 = D.49085->last_ins;
  ins->prev = D.49128;
  D.49085 = cfg->cbb;
  D.49085->last_ins = ins;
  goto <D.49836>;
  <D.49835>:
  D.49085 = cfg->cbb;
  D.49085 = cfg->cbb;
  D.49085->last_ins = ins;
  D.49128 = D.49085->last_ins;
  D.49085->code = D.49128;
  <D.49836>:
  D.49092 = alloc;
  return D.49092;
}


handle_unbox_nullable (struct MonoCompile * cfg, struct MonoInst * val, struct MonoClass * klass, int context_used)
{
  struct MonoMethod * D.49841;
  struct MonoInst * D.49842;
  struct MonoMethodSignature * D.49843;
  int pass_mrgctx.455;
  _Bool D.49845;
  long int D.49846;
  long int D.49847;
  int pass_vtable.456;
  struct MonoClass * D.49853;
  struct MonoDomain * D.49854;
  _Bool D.49855;
  long int D.49856;
  long int D.49857;
  struct MonoMemPool * D.49860;
  long int D.49861;
  struct MonoInst * D.49862;
  guint16 iftmp.457;
  unsigned char D.49864;
  unsigned char D.49865;
  int D.49869;
  int D.49870;
  const unsigned char * D.49871;
  void * iftmp.458;
  unsigned int D.49876;
  int D.49877;
  struct MonoBasicBlock * D.49878;
  struct MonoInst * D.49879;
  struct MonoMethod * method;

  method = mono_class_get_method_from_name (klass, "Unbox", 1);
  if (context_used != 0) goto <D.49839>; else goto <D.49840>;
  <D.49839>:
  {
    struct MonoInst * rgctx;
    struct MonoInst * addr;

    addr = emit_get_rgctx_method (cfg, context_used, method, 6);
    D.49841 = cfg->current_method;
    rgctx = emit_get_rgctx (cfg, D.49841, context_used);
    D.49843 = mono_method_signature (method);
    D.49842 = mono_emit_calli (cfg, D.49843, &val, addr, 0B, rgctx);
    return D.49842;
  }
  <D.49840>:
  {
    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.455 = pass_mrgctx;
        D.49845 = pass_mrgctx.455 != 0;
        D.49846 = (long int) D.49845;
        D.49847 = __builtin_expect (D.49846, 0);
        if (D.49847 != 0) goto <D.49848>; else goto <D.49849>;
        <D.49848>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3578, "!pass_mrgctx");
        <D.49849>:
        pass_vtable.456 = pass_vtable;
        if (pass_vtable.456 != 0) goto <D.49851>; else goto <D.49852>;
        <D.49851>:
        {
          struct MonoVTable * vtable;

          D.49853 = method->klass;
          D.49854 = cfg->domain;
          vtable = mono_class_vtable (D.49854, D.49853);
          D.49855 = vtable == 0B;
          D.49856 = (long int) D.49855;
          D.49857 = __builtin_expect (D.49856, 0);
          if (D.49857 != 0) goto <D.49858>; else goto <D.49859>;
          <D.49858>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3583, "vtable");
          <D.49859>:
          D.49860 = cfg->mempool;
          rgctx_arg = mono_mempool_alloc (D.49860, 80);
          rgctx_arg->data.op[1].const_val = 0;
          D.49861 = rgctx_arg->data.op[1].const_val;
          rgctx_arg->data.op[0].const_val = D.49861;
          rgctx_arg->prev = 0B;
          D.49862 = rgctx_arg->prev;
          rgctx_arg->next = D.49862;
          D.49864 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.49865 = D.49864 & 64;
          if (D.49865 != 0) goto <D.49866>; else goto <D.49867>;
          <D.49866>:
          iftmp.457 = 736;
          goto <D.49868>;
          <D.49867>:
          iftmp.457 = 363;
          <D.49868>:
          rgctx_arg->opcode = iftmp.457;
          rgctx_arg->flags = 0;
          rgctx_arg->type = 0;
          rgctx_arg->dreg = -1;
          rgctx_arg->sreg3 = -1;
          D.49869 = rgctx_arg->sreg3;
          rgctx_arg->sreg2 = D.49869;
          D.49870 = rgctx_arg->sreg2;
          rgctx_arg->sreg1 = D.49870;
          D.49871 = cfg->ip;
          rgctx_arg->cil_code = D.49871;
          D.49864 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.49865 = D.49864 & 64;
          if (D.49865 != 0) goto <D.49873>; else goto <D.49874>;
          <D.49873>:
          iftmp.458 = vtable->klass;
          goto <D.49875>;
          <D.49874>:
          iftmp.458 = vtable;
          <D.49875>:
          rgctx_arg->data.op[0].p = iftmp.458;
          rgctx_arg->data.op[1].src = 14B;
          rgctx_arg->type = 3;
          D.49876 = alloc_dreg (cfg, 3);
          D.49877 = (int) D.49876;
          rgctx_arg->dreg = D.49877;
          D.49878 = cfg->cbb;
          D.49879 = D.49878->last_ins;
          if (D.49879 != 0B) goto <D.49880>; else goto <D.49881>;
          <D.49880>:
          D.49878 = cfg->cbb;
          D.49879 = D.49878->last_ins;
          D.49879->next = rgctx_arg;
          D.49878 = cfg->cbb;
          D.49879 = D.49878->last_ins;
          rgctx_arg->prev = D.49879;
          D.49878 = cfg->cbb;
          D.49878->last_ins = rgctx_arg;
          goto <D.49882>;
          <D.49881>:
          D.49878 = cfg->cbb;
          D.49878 = cfg->cbb;
          D.49878->last_ins = rgctx_arg;
          D.49879 = D.49878->last_ins;
          D.49878->code = D.49879;
          <D.49882>:
        }
        <D.49852>:
        D.49842 = mono_emit_method_call_full (cfg, method, 0B, 0, &val, 0B, 0B, rgctx_arg);
        return D.49842;
      }
    finally
      {
        pass_vtable = {CLOBBER};
        pass_mrgctx = {CLOBBER};
      }
  }
}


handle_unbox (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * sp, int context_used)
{
  unsigned int D.49885;
  unsigned int D.49886;
  unsigned int D.49887;
  unsigned int D.49888;
  struct MonoInst * D.49889;
  int D.49890;
  unsigned char D.49893;
  unsigned char D.49894;
  struct MonoMemPool * D.49897;
  long int D.49898;
  struct MonoInst * D.49899;
  int D.49900;
  int D.49901;
  const unsigned char * D.49902;
  struct MonoBasicBlock * D.49903;
  struct MonoInst * D.49904;
  long int D.49908;
  struct MonoInst * D.49909;
  int D.49910;
  int D.49911;
  long int D.49916;
  struct MonoInst * D.49917;
  int D.49918;
  int D.49919;
  unsigned char D.49920;
  long int D.49924;
  struct MonoInst * D.49925;
  int D.49926;
  int D.49927;
  unsigned char D.49931;
  _Bool D.49932;
  long int D.49933;
  long int D.49934;
  long int D.49937;
  struct MonoInst * D.49938;
  int D.49939;
  int D.49940;
  long int D.49944;
  struct MonoInst * D.49945;
  int D.49946;
  int D.49947;
  long int D.49951;
  struct MonoInst * D.49952;
  int D.49953;
  int D.49954;
  long int D.49958;
  struct MonoInst * D.49959;
  int D.49960;
  int D.49961;
  struct MonoClass * D.49969;
  long int D.49970;
  struct MonoInst * D.49971;
  int D.49972;
  int D.49973;
  int D.49974;
  long int D.49978;
  struct MonoInst * D.49979;
  int D.49980;
  int D.49981;
  long int D.49986;
  struct MonoInst * D.49987;
  int D.49988;
  int D.49989;
  unsigned int D.49990;
  int D.49991;
  struct MonoInst * D.49995;
  struct MonoInst * add;
  int obj_reg;
  int vtable_reg;
  int klass_reg;
  int eclass_reg;
  int rank_reg;

  D.49885 = alloc_dreg (cfg, 3);
  vtable_reg = (int) D.49885;
  D.49886 = alloc_dreg (cfg, 3);
  klass_reg = (int) D.49886;
  D.49887 = alloc_dreg (cfg, 3);
  eclass_reg = (int) D.49887;
  D.49888 = alloc_dreg (cfg, 1);
  rank_reg = (int) D.49888;
  D.49889 = *sp;
  obj_reg = D.49889->dreg;
  {
    struct MonoInst * inst;
    int __ins_flags;

    __ins_flags = 32;
    D.49890 = __ins_flags & 32;
    if (D.49890 != 0) goto <D.49891>; else goto <D.49892>;
    <D.49891>:
    D.49893 = BIT_FIELD_REF <*cfg, 8, 5632>;
    D.49894 = D.49893 & 64;
    if (D.49894 != 0) goto <D.49895>; else goto <D.49896>;
    <D.49895>:
    {
      struct MonoInst * inst;

      D.49897 = cfg->mempool;
      inst = mono_mempool_alloc (D.49897, 80);
      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 = 323;
      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.49902 = cfg->ip;
      inst->cil_code = D.49902;
      inst->dreg = -1;
      inst->sreg1 = obj_reg;
      inst->data.op[1].const_val = 0;
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      if (D.49904 != 0B) goto <D.49905>; else goto <D.49906>;
      <D.49905>:
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      D.49904->next = inst;
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      inst->prev = D.49904;
      D.49903 = cfg->cbb;
      D.49903->last_ins = inst;
      goto <D.49907>;
      <D.49906>:
      D.49903 = cfg->cbb;
      D.49903 = cfg->cbb;
      D.49903->last_ins = inst;
      D.49904 = D.49903->last_ins;
      D.49903->code = D.49904;
      <D.49907>:
    }
    {
      struct MonoInst * inst;

      D.49897 = cfg->mempool;
      inst = mono_mempool_alloc (D.49897, 80);
      inst->data.op[1].const_val = 0;
      D.49908 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49908;
      inst->prev = 0B;
      D.49909 = inst->prev;
      inst->next = D.49909;
      inst->opcode = 455;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49910 = inst->sreg3;
      inst->sreg2 = D.49910;
      D.49911 = inst->sreg2;
      inst->sreg1 = D.49911;
      D.49902 = cfg->ip;
      inst->cil_code = D.49902;
      inst->data.op[1].p = "NullReferenceException";
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      if (D.49904 != 0B) goto <D.49912>; else goto <D.49913>;
      <D.49912>:
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      D.49904->next = inst;
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      inst->prev = D.49904;
      D.49903 = cfg->cbb;
      D.49903->last_ins = inst;
      goto <D.49914>;
      <D.49913>:
      D.49903 = cfg->cbb;
      D.49903 = cfg->cbb;
      D.49903->last_ins = inst;
      D.49904 = D.49903->last_ins;
      D.49903->code = D.49904;
      <D.49914>:
    }
    goto <D.49915>;
    <D.49896>:
    <D.49915>:
    <D.49892>:
    D.49897 = cfg->mempool;
    inst = mono_mempool_alloc (D.49897, 80);
    inst->data.op[1].const_val = 0;
    D.49916 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49916;
    inst->prev = 0B;
    D.49917 = inst->prev;
    inst->next = D.49917;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49918 = inst->sreg3;
    inst->sreg2 = D.49918;
    D.49919 = inst->sreg2;
    inst->sreg1 = D.49919;
    D.49902 = cfg->ip;
    inst->cil_code = D.49902;
    inst->dreg = vtable_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    inst->type = 1;
    D.49920 = (unsigned char) __ins_flags;
    inst->flags = D.49920;
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    if (D.49904 != 0B) goto <D.49921>; else goto <D.49922>;
    <D.49921>:
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    D.49904->next = inst;
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    inst->prev = D.49904;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    goto <D.49923>;
    <D.49922>:
    D.49903 = cfg->cbb;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    D.49904 = D.49903->last_ins;
    D.49903->code = D.49904;
    <D.49923>:
  }
  {
    struct MonoInst * inst;

    D.49897 = cfg->mempool;
    inst = mono_mempool_alloc (D.49897, 80);
    inst->data.op[1].const_val = 0;
    D.49924 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49924;
    inst->prev = 0B;
    D.49925 = inst->prev;
    inst->next = D.49925;
    inst->opcode = 393;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49926 = inst->sreg3;
    inst->sreg2 = D.49926;
    D.49927 = inst->sreg2;
    inst->sreg1 = D.49927;
    D.49902 = cfg->ip;
    inst->cil_code = D.49902;
    inst->dreg = rank_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 42;
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    if (D.49904 != 0B) goto <D.49928>; else goto <D.49929>;
    <D.49928>:
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    D.49904->next = inst;
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    inst->prev = D.49904;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    goto <D.49930>;
    <D.49929>:
    D.49903 = cfg->cbb;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    D.49904 = D.49903->last_ins;
    D.49903->code = D.49904;
    <D.49930>:
  }
  D.49931 = klass->rank;
  D.49932 = D.49931 != 0;
  D.49933 = (long int) D.49932;
  D.49934 = __builtin_expect (D.49933, 0);
  if (D.49934 != 0) goto <D.49935>; else goto <D.49936>;
  <D.49935>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3606, "klass->rank == 0");
  <D.49936>:
  {
    struct MonoInst * inst;

    D.49897 = cfg->mempool;
    inst = mono_mempool_alloc (D.49897, 80);
    inst->data.op[1].const_val = 0;
    D.49937 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49937;
    inst->prev = 0B;
    D.49938 = inst->prev;
    inst->next = D.49938;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49939 = inst->sreg3;
    inst->sreg2 = D.49939;
    D.49940 = inst->sreg2;
    inst->sreg1 = D.49940;
    D.49902 = cfg->ip;
    inst->cil_code = D.49902;
    inst->dreg = -1;
    inst->sreg1 = rank_reg;
    inst->data.op[1].const_val = 0;
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    if (D.49904 != 0B) goto <D.49941>; else goto <D.49942>;
    <D.49941>:
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    D.49904->next = inst;
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    inst->prev = D.49904;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    goto <D.49943>;
    <D.49942>:
    D.49903 = cfg->cbb;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    D.49904 = D.49903->last_ins;
    D.49903->code = D.49904;
    <D.49943>:
  }
  {
    struct MonoInst * inst;

    D.49897 = cfg->mempool;
    inst = mono_mempool_alloc (D.49897, 80);
    inst->data.op[1].const_val = 0;
    D.49944 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49944;
    inst->prev = 0B;
    D.49945 = inst->prev;
    inst->next = D.49945;
    inst->opcode = 460;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49946 = inst->sreg3;
    inst->sreg2 = D.49946;
    D.49947 = inst->sreg2;
    inst->sreg1 = D.49947;
    D.49902 = cfg->ip;
    inst->cil_code = D.49902;
    inst->data.op[1].p = "InvalidCastException";
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    if (D.49904 != 0B) goto <D.49948>; else goto <D.49949>;
    <D.49948>:
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    D.49904->next = inst;
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    inst->prev = D.49904;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    goto <D.49950>;
    <D.49949>:
    D.49903 = cfg->cbb;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    D.49904 = D.49903->last_ins;
    D.49903->code = D.49904;
    <D.49950>:
  }
  {
    struct MonoInst * inst;

    D.49897 = cfg->mempool;
    inst = mono_mempool_alloc (D.49897, 80);
    inst->data.op[1].const_val = 0;
    D.49951 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49951;
    inst->prev = 0B;
    D.49952 = inst->prev;
    inst->next = D.49952;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49953 = inst->sreg3;
    inst->sreg2 = D.49953;
    D.49954 = inst->sreg2;
    inst->sreg1 = D.49954;
    D.49902 = cfg->ip;
    inst->cil_code = D.49902;
    inst->dreg = klass_reg;
    inst->sreg1 = vtable_reg;
    inst->data.op[0].const_val = 0;
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    if (D.49904 != 0B) goto <D.49955>; else goto <D.49956>;
    <D.49955>:
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    D.49904->next = inst;
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    inst->prev = D.49904;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    goto <D.49957>;
    <D.49956>:
    D.49903 = cfg->cbb;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    D.49904 = D.49903->last_ins;
    D.49903->code = D.49904;
    <D.49957>:
  }
  {
    struct MonoInst * inst;

    D.49897 = cfg->mempool;
    inst = mono_mempool_alloc (D.49897, 80);
    inst->data.op[1].const_val = 0;
    D.49958 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.49958;
    inst->prev = 0B;
    D.49959 = inst->prev;
    inst->next = D.49959;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.49960 = inst->sreg3;
    inst->sreg2 = D.49960;
    D.49961 = inst->sreg2;
    inst->sreg1 = D.49961;
    D.49902 = cfg->ip;
    inst->cil_code = D.49902;
    inst->dreg = eclass_reg;
    inst->sreg1 = klass_reg;
    inst->data.op[0].const_val = 0;
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    if (D.49904 != 0B) goto <D.49962>; else goto <D.49963>;
    <D.49962>:
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    D.49904->next = inst;
    D.49903 = cfg->cbb;
    D.49904 = D.49903->last_ins;
    inst->prev = D.49904;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    goto <D.49964>;
    <D.49963>:
    D.49903 = cfg->cbb;
    D.49903 = cfg->cbb;
    D.49903->last_ins = inst;
    D.49904 = D.49903->last_ins;
    D.49903->code = D.49904;
    <D.49964>:
  }
  if (context_used != 0) goto <D.49965>; else goto <D.49966>;
  <D.49965>:
  {
    struct MonoInst * element_class;

    D.49931 = klass->rank;
    D.49932 = D.49931 != 0;
    D.49933 = (long int) D.49932;
    D.49934 = __builtin_expect (D.49933, 0);
    if (D.49934 != 0) goto <D.49967>; else goto <D.49968>;
    <D.49967>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 3619, "klass->rank == 0");
    <D.49968>:
    D.49969 = klass->element_class;
    element_class = emit_get_rgctx_klass (cfg, context_used, D.49969, 1);
    {
      struct MonoInst * inst;

      D.49897 = cfg->mempool;
      inst = mono_mempool_alloc (D.49897, 80);
      inst->data.op[1].const_val = 0;
      D.49970 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49970;
      inst->prev = 0B;
      D.49971 = inst->prev;
      inst->next = D.49971;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49972 = inst->sreg3;
      inst->sreg2 = D.49972;
      D.49973 = inst->sreg2;
      inst->sreg1 = D.49973;
      D.49902 = cfg->ip;
      inst->cil_code = D.49902;
      inst->dreg = -1;
      inst->sreg1 = eclass_reg;
      D.49974 = element_class->dreg;
      inst->sreg2 = D.49974;
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      if (D.49904 != 0B) goto <D.49975>; else goto <D.49976>;
      <D.49975>:
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      D.49904->next = inst;
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      inst->prev = D.49904;
      D.49903 = cfg->cbb;
      D.49903->last_ins = inst;
      goto <D.49977>;
      <D.49976>:
      D.49903 = cfg->cbb;
      D.49903 = cfg->cbb;
      D.49903->last_ins = inst;
      D.49904 = D.49903->last_ins;
      D.49903->code = D.49904;
      <D.49977>:
    }
    {
      struct MonoInst * inst;

      D.49897 = cfg->mempool;
      inst = mono_mempool_alloc (D.49897, 80);
      inst->data.op[1].const_val = 0;
      D.49978 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.49978;
      inst->prev = 0B;
      D.49979 = inst->prev;
      inst->next = D.49979;
      inst->opcode = 460;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.49980 = inst->sreg3;
      inst->sreg2 = D.49980;
      D.49981 = inst->sreg2;
      inst->sreg1 = D.49981;
      D.49902 = cfg->ip;
      inst->cil_code = D.49902;
      inst->data.op[1].p = "InvalidCastException";
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      if (D.49904 != 0B) goto <D.49982>; else goto <D.49983>;
      <D.49982>:
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      D.49904->next = inst;
      D.49903 = cfg->cbb;
      D.49904 = D.49903->last_ins;
      inst->prev = D.49904;
      D.49903 = cfg->cbb;
      D.49903->last_ins = inst;
      goto <D.49984>;
      <D.49983>:
      D.49903 = cfg->cbb;
      D.49903 = cfg->cbb;
      D.49903->last_ins = inst;
      D.49904 = D.49903->last_ins;
      D.49903->code = D.49904;
      <D.49984>:
    }
  }
  goto <D.49985>;
  <D.49966>:
  D.49969 = klass->element_class;
  save_cast_details (cfg, D.49969, obj_reg, 0, 0B);
  D.49969 = klass->element_class;
  mini_emit_class_check (cfg, eclass_reg, D.49969);
  reset_cast_details (cfg);
  <D.49985>:
  D.49897 = cfg->mempool;
  add = mono_mempool_alloc (D.49897, 80);
  add->data.op[1].const_val = 0;
  D.49986 = add->data.op[1].const_val;
  add->data.op[0].const_val = D.49986;
  add->prev = 0B;
  D.49987 = add->prev;
  add->next = D.49987;
  add->opcode = 433;
  add->flags = 0;
  add->type = 0;
  add->dreg = -1;
  add->sreg3 = -1;
  D.49988 = add->sreg3;
  add->sreg2 = D.49988;
  D.49989 = add->sreg2;
  add->sreg1 = D.49989;
  D.49902 = cfg->ip;
  add->cil_code = D.49902;
  D.49990 = alloc_dreg (cfg, 5);
  D.49991 = (int) D.49990;
  add->dreg = D.49991;
  add->sreg1 = obj_reg;
  add->data.op[1].const_val = 16;
  D.49903 = cfg->cbb;
  D.49904 = D.49903->last_ins;
  if (D.49904 != 0B) goto <D.49992>; else goto <D.49993>;
  <D.49992>:
  D.49903 = cfg->cbb;
  D.49904 = D.49903->last_ins;
  D.49904->next = add;
  D.49903 = cfg->cbb;
  D.49904 = D.49903->last_ins;
  add->prev = D.49904;
  D.49903 = cfg->cbb;
  D.49903->last_ins = add;
  goto <D.49994>;
  <D.49993>:
  D.49903 = cfg->cbb;
  D.49903 = cfg->cbb;
  D.49903->last_ins = add;
  D.49904 = D.49903->last_ins;
  D.49903->code = D.49904;
  <D.49994>:
  add->type = 5;
  add->klass = klass;
  D.49995 = add;
  return D.49995;
}


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.49997;
  struct MonoException * ex;

  D.49997 = get_original_method (caller);
  ex = mono_security_core_clr_is_field_access_allowed (D.49997, field);
  if (ex != 0B) goto <D.49998>; else goto <D.49999>;
  <D.49998>:
  emit_throw_exception (cfg, ex);
  <D.49999>:
}


get_original_method (struct MonoMethod * method)
{
  unsigned char D.50000;
  unsigned char D.50001;
  struct MonoMethod * D.50004;

  D.50000 = BIT_FIELD_REF <*method, 8, 256>;
  D.50001 = D.50000 & 124;
  if (D.50001 == 0) goto <D.50002>; else goto <D.50003>;
  <D.50002>:
  D.50004 = method;
  return D.50004;
  <D.50003>:
  D.50000 = BIT_FIELD_REF <*method, 8, 256>;
  D.50001 = D.50000 & 124;
  if (D.50001 == 20) goto <D.50005>; else goto <D.50006>;
  <D.50005>:
  D.50004 = 0B;
  return D.50004;
  <D.50006>:
  D.50004 = mono_marshal_method_from_wrapper (method);
  return D.50004;
}


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.50008;
  _Bool D.50009;
  long int D.50010;
  long int D.50011;
  int D.50016;
  int D.50019;
  struct MonoMethod * D.50022;
  int D.50023;
  unsigned int D.50026;
  char * D.50029;
  char * D.50030;
  unsigned char D.50031;
  unsigned char D.50032;
  int D.50035;
  int D.50036;
  struct MonoLoaderError * D.50040;
  _Bool D.50043;
  _Bool D.50044;
  _Bool D.50045;
  unsigned char D.50048;
  int D.50049;
  int D.50050;
  struct MonoType * D.50053;
  int D.50054;
  short unsigned int D.50057;
  unsigned int D.50058;
  unsigned int D.50059;
  struct MonoMemPool * D.50060;
  void * D.50061;
  struct MonoInst * * D.50062;
  long unsigned int D.50063;
  long unsigned int D.50064;
  struct MonoInst * * D.50065;
  struct MonoType * D.50066;
  struct MonoInst * D.50067;
  int D.50068;
  unsigned int D.50069;
  unsigned int D.50070;
  unsigned int D.50071;
  int D.50072;
  unsigned int D.50073;
  unsigned int D.50074;
  int D.50075;
  unsigned int D.50076;
  unsigned int D.50077;
  int D.50078;
  unsigned int D.50079;
  unsigned int D.50080;
  int D.50081;
  <unnamed-unsigned:1> D.50082;
  unsigned char D.50083;
  short unsigned int D.50086;
  int D.50087;
  int D.50088;
  int prev_cil_offset_to_bb_len.459;
  unsigned char D.50092;
  <unnamed-unsigned:1> D.50093;
  unsigned int D.50094;
  unsigned int costs.460;
  _Bool D.50096;
  _Bool D.50097;
  char * D.50102;
  char * D.50103;
  int D.50104;
  int D.50105;
  long int D.50106;
  struct MonoInst * D.50107;
  int D.50108;
  int D.50109;
  const unsigned char * D.50110;
  struct MonoInst * D.50111;
  short int D.50115;
  struct MonoBasicBlock * * D.50118;
  struct MonoBasicBlock * D.50119;
  short int D.50120;
  short int D.50127;
  struct MonoBasicBlock * * D.50129;
  struct MonoBasicBlock * D.50130;
  short int D.50131;
  struct MonoBasicBlock * * D.50141;
  struct MonoInst * D.50142;
  short unsigned int D.50145;
  int D.50148;
  int D.50149;
  struct MonoInst * * D.50154;
  long int D.50155;
  long unsigned int D.50156;
  long unsigned int D.50157;
  struct MonoInst * * D.50158;
  struct MonoInst * D.50159;
  struct MonoType * D.50160;
  unsigned int D.50161;
  short unsigned int D.50162;
  struct MonoClass * D.50163;
  int D.50164;
  unsigned char D.50165;
  <unnamed type> D.50166;
  unsigned int D.50167;
  int D.50168;
  short unsigned int D.50169;
  struct MonoClass * D.50172;
  struct MonoBasicBlock * D.50173;
  struct MonoInst * D.50174;
  struct MonoInst * * sp.461;
  struct GSList * D.50179;
  struct GSList * D.50180;
  char * D.50183;
  struct GSList * D.50184;
  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.50008 = cfg->exception_type;
  D.50009 = D.50008 != 0;
  D.50010 = (long int) D.50009;
  D.50011 = __builtin_expect (D.50010, 0);
  if (D.50011 != 0) goto <D.50012>; else goto <D.50013>;
  <D.50012>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 5768, "cfg->exception_type == MONO_EXCEPTION_NONE");
  <D.50013>:
  if (inline_always == 0) goto <D.50014>; else goto <D.50015>;
  <D.50014>:
  D.50016 = check_inline_called_method_name_limit (cmethod);
  if (D.50016 == 0) goto <D.50017>; else goto <D.50018>;
  <D.50017>:
  D.50019 = 0;
  return D.50019;
  <D.50018>:
  <D.50015>:
  if (inline_always == 0) goto <D.50020>; else goto <D.50021>;
  <D.50020>:
  D.50022 = cfg->method;
  D.50023 = check_inline_caller_method_name_limit (D.50022);
  if (D.50023 == 0) goto <D.50024>; else goto <D.50025>;
  <D.50024>:
  D.50019 = 0;
  return D.50019;
  <D.50025>:
  <D.50021>:
  D.50026 = cfg->verbose_level;
  if (D.50026 > 2) goto <D.50027>; else goto <D.50028>;
  <D.50027>:
  D.50029 = mono_method_full_name (cmethod, 1);
  D.50022 = cfg->method;
  D.50030 = mono_method_full_name (D.50022, 1);
  printf ("INLINE START %p %s -> %s\n", cmethod, D.50030, D.50029);
  <D.50028>:
  D.50031 = BIT_FIELD_REF <*cmethod, 8, 256>;
  D.50032 = D.50031 & 1;
  if (D.50032 == 0) goto <D.50033>; else goto <D.50034>;
  <D.50033>:
  D.50035 = cfg->stat_inlineable_methods;
  D.50036 = D.50035 + 1;
  cfg->stat_inlineable_methods = D.50036;
  cmethod->inline_info = 1;
  <D.50034>:
  cheader = mono_method_get_header (cmethod);
  if (cheader == 0B) goto <D.50037>; else goto <D.50039>;
  <D.50039>:
  D.50040 = mono_loader_get_last_error ();
  if (D.50040 != 0B) goto <D.50037>; else goto <D.50038>;
  <D.50037>:
  {
    struct MonoLoaderError * error;

    error = mono_loader_get_last_error ();
    if (cheader != 0B) goto <D.50041>; else goto <D.50042>;
    <D.50041>:
    mono_metadata_free_mh (cheader);
    <D.50042>:
    D.50043 = inline_always != 0;
    D.50044 = error != 0B;
    D.50045 = D.50043 & D.50044;
    if (D.50045 != 0) goto <D.50046>; else goto <D.50047>;
    <D.50046>:
    D.50048 = error->exception_type;
    D.50049 = (int) D.50048;
    mono_cfg_set_exception (cfg, D.50049);
    <D.50047>:
    mono_loader_clear_error ();
    D.50019 = 0;
    return D.50019;
  }
  <D.50038>:
  D.50050 = mono_compile_is_broken (cfg, cmethod, 0);
  if (D.50050 != 0) goto <D.50051>; else goto <D.50052>;
  <D.50051>:
  mono_metadata_free_mh (cheader);
  D.50019 = 0;
  return D.50019;
  <D.50052>:
  D.50053 = fsig->ret;
  D.50054 = mono_type_is_void (D.50053);
  if (D.50054 == 0) goto <D.50055>; else goto <D.50056>;
  <D.50055>:
  D.50053 = fsig->ret;
  rvar = mono_compile_create_var (cfg, D.50053, 329);
  <D.50056>:
  prev_locals = cfg->locals;
  D.50057 = cheader->num_locals;
  D.50058 = (unsigned int) D.50057;
  D.50059 = D.50058 * 8;
  D.50060 = cfg->mempool;
  D.50061 = mono_mempool_alloc0 (D.50060, D.50059);
  cfg->locals = D.50061;
  i = 0;
  goto <D.27255>;
  <D.27254>:
  D.50062 = cfg->locals;
  D.50063 = (long unsigned int) i;
  D.50064 = D.50063 * 8;
  D.50065 = D.50062 + D.50064;
  D.50066 = cheader->locals[i];
  D.50067 = mono_compile_create_var (cfg, D.50066, 329);
  *D.50065 = D.50067;
  i = i + 1;
  <D.27255>:
  D.50057 = cheader->num_locals;
  D.50068 = (int) D.50057;
  if (D.50068 > i) goto <D.27254>; else goto <D.27256>;
  <D.27256>:
  D.50060 = cfg->mempool;
  sbblock = mono_mempool_alloc0 (D.50060, 296);
  D.50069 = cfg->num_bblocks;
  D.50070 = D.50069;
  D.50071 = D.50070 + 1;
  cfg->num_bblocks = D.50071;
  D.50072 = (int) D.50070;
  sbblock->block_num = D.50072;
  sbblock->real_offset = real_offset;
  D.50060 = cfg->mempool;
  ebblock = mono_mempool_alloc0 (D.50060, 296);
  D.50069 = cfg->num_bblocks;
  D.50073 = D.50069;
  D.50074 = D.50073 + 1;
  cfg->num_bblocks = D.50074;
  D.50075 = (int) D.50073;
  ebblock->block_num = D.50075;
  D.50069 = cfg->num_bblocks;
  D.50076 = D.50069;
  D.50077 = D.50076 + 1;
  cfg->num_bblocks = D.50077;
  D.50078 = (int) D.50076;
  ebblock->block_num = D.50078;
  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.50079 = cfg->inline_depth;
  D.50080 = D.50079 + 1;
  cfg->inline_depth = D.50080;
  prev_real_offset = cfg->real_offset;
  prev_cbb_hash = cfg->cbb_hash;
  prev_cil_offset_to_bb = cfg->cil_offset_to_bb;
  D.50081 = cfg->cil_offset_to_bb_len;
  prev_cil_offset_to_bb_len = (guint32) D.50081;
  prev_cil_start = cfg->cil_start;
  prev_cbb = cfg->cbb;
  prev_current_method = cfg->current_method;
  prev_generic_context = cfg->generic_context;
  D.50082 = cfg->ret_var_set;
  prev_ret_var_set = (gboolean) D.50082;
  D.50083 = *ip;
  if (D.50083 == 111) goto <D.50084>; else goto <D.50085>;
  <D.50084>:
  D.50086 = cmethod->flags;
  D.50087 = (int) D.50086;
  D.50088 = D.50087 & 16;
  if (D.50088 == 0) goto <D.50089>; else goto <D.50090>;
  <D.50089>:
  virtual = 1;
  <D.50090>:
  <D.50085>:
  costs = mono_method_to_ir (cfg, cmethod, sbblock, ebblock, rvar, dont_inline, sp, real_offset, virtual);
  D.50082 = cfg->ret_var_set;
  ret_var_set = (gboolean) D.50082;
  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.459 = (int) prev_cil_offset_to_bb_len;
  cfg->cil_offset_to_bb_len = prev_cil_offset_to_bb_len.459;
  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.50092 = (unsigned char) prev_ret_var_set;
  D.50093 = (<unnamed-unsigned:1>) D.50092;
  cfg->ret_var_set = D.50093;
  D.50079 = cfg->inline_depth;
  D.50094 = D.50079 + 4294967295;
  cfg->inline_depth = D.50094;
  costs.460 = (unsigned int) costs;
  D.50096 = costs.460 <= 59;
  D.50043 = inline_always != 0;
  D.50097 = D.50096 | D.50043;
  if (D.50097 != 0) goto <D.50098>; else goto <D.50099>;
  <D.50098>:
  D.50026 = cfg->verbose_level;
  if (D.50026 > 2) goto <D.50100>; else goto <D.50101>;
  <D.50100>:
  D.50102 = mono_method_full_name (cmethod, 1);
  D.50022 = cfg->method;
  D.50103 = mono_method_full_name (D.50022, 1);
  printf ("INLINE END %s -> %s\n", D.50103, D.50102);
  <D.50101>:
  D.50104 = cfg->stat_inlined_methods;
  D.50105 = D.50104 + 1;
  cfg->stat_inlined_methods = D.50105;
  D.50060 = cfg->mempool;
  ins = mono_mempool_alloc (D.50060, 80);
  ins->data.op[1].const_val = 0;
  D.50106 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50106;
  ins->prev = 0B;
  D.50107 = ins->prev;
  ins->next = D.50107;
  ins->opcode = 316;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50108 = ins->sreg3;
  ins->sreg2 = D.50108;
  D.50109 = ins->sreg2;
  ins->sreg1 = D.50109;
  D.50110 = cfg->ip;
  ins->cil_code = D.50110;
  D.50111 = prev_cbb->last_ins;
  if (D.50111 != 0B) goto <D.50112>; else goto <D.50113>;
  <D.50112>:
  D.50111 = prev_cbb->last_ins;
  D.50111->next = ins;
  D.50111 = prev_cbb->last_ins;
  ins->prev = D.50111;
  prev_cbb->last_ins = ins;
  goto <D.50114>;
  <D.50113>:
  prev_cbb->last_ins = ins;
  D.50111 = prev_cbb->last_ins;
  prev_cbb->code = D.50111;
  <D.50114>:
  prev_cbb->next_bb = sbblock;
  link_bblock (cfg, prev_cbb, sbblock);
  mono_merge_basic_blocks (cfg, prev_cbb, sbblock);
  D.50115 = prev_cbb->out_count;
  if (D.50115 == 1) goto <D.50116>; else goto <D.50117>;
  <D.50116>:
  D.50118 = prev_cbb->out_bb;
  D.50119 = *D.50118;
  D.50120 = D.50119->in_count;
  if (D.50120 == 1) goto <D.50121>; else goto <D.50122>;
  <D.50121>:
  D.50118 = prev_cbb->out_bb;
  D.50119 = *D.50118;
  if (D.50119 != ebblock) goto <D.50123>; else goto <D.50124>;
  <D.50123>:
  D.50118 = prev_cbb->out_bb;
  D.50119 = *D.50118;
  mono_merge_basic_blocks (cfg, prev_cbb, D.50119);
  <D.50124>:
  <D.50122>:
  <D.50117>:
  D.50127 = ebblock->in_count;
  if (D.50127 == 1) goto <D.50128>; else goto <D.50125>;
  <D.50128>:
  D.50129 = ebblock->in_bb;
  D.50130 = *D.50129;
  D.50131 = D.50130->out_count;
  if (D.50131 == 1) goto <D.50132>; else goto <D.50125>;
  <D.50132>:
  {
    struct MonoBasicBlock * prev;

    D.50129 = ebblock->in_bb;
    prev = *D.50129;
    mono_merge_basic_blocks (cfg, prev, ebblock);
    cfg->cbb = prev;
    D.50115 = prev_cbb->out_count;
    if (D.50115 == 1) goto <D.50133>; else goto <D.50134>;
    <D.50133>:
    D.50118 = prev_cbb->out_bb;
    D.50119 = *D.50118;
    D.50120 = D.50119->in_count;
    if (D.50120 == 1) goto <D.50135>; else goto <D.50136>;
    <D.50135>:
    D.50118 = prev_cbb->out_bb;
    D.50119 = *D.50118;
    if (D.50119 == prev) goto <D.50137>; else goto <D.50138>;
    <D.50137>:
    mono_merge_basic_blocks (cfg, prev_cbb, prev);
    cfg->cbb = prev_cbb;
    <D.50138>:
    <D.50136>:
    <D.50134>:
  }
  goto <D.50126>;
  <D.50125>:
  if (rvar != 0B) goto <D.50139>; else goto <D.50140>;
  <D.50139>:
  {
    struct MonoBasicBlock * bb;

    i = 0;
    goto <D.27260>;
    <D.27259>:
    D.50129 = ebblock->in_bb;
    D.50063 = (long unsigned int) i;
    D.50064 = D.50063 * 8;
    D.50141 = D.50129 + D.50064;
    bb = *D.50141;
    D.50142 = bb->last_ins;
    if (D.50142 != 0B) goto <D.50143>; else goto <D.50144>;
    <D.50143>:
    D.50142 = bb->last_ins;
    D.50145 = D.50142->opcode;
    if (D.50145 == 802) goto <D.50146>; else goto <D.50147>;
    <D.50146>:
    cfg->cbb = bb;
    D.50053 = fsig->ret;
    D.50148 = rvar->dreg;
    emit_init_rvar (cfg, D.50148, D.50053);
    <D.50147>:
    <D.50144>:
    i = i + 1;
    <D.27260>:
    D.50127 = ebblock->in_count;
    D.50149 = (int) D.50127;
    if (D.50149 > i) goto <D.27259>; else goto <D.27261>;
    <D.27261>:
  }
  <D.50140>:
  cfg->cbb = ebblock;
  <D.50126>:
  if (rvar != 0B) goto <D.50150>; else goto <D.50151>;
  <D.50150>:
  if (ret_var_set == 0) goto <D.50152>; else goto <D.50153>;
  <D.50152>:
  D.50053 = fsig->ret;
  D.50148 = rvar->dreg;
  emit_init_rvar (cfg, D.50148, D.50053);
  <D.50153>:
  D.50060 = cfg->mempool;
  ins = mono_mempool_alloc (D.50060, 80);
  ins->data.op[1].const_val = 0;
  D.50106 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50106;
  ins->prev = 0B;
  D.50107 = ins->prev;
  ins->next = D.50107;
  ins->opcode = 428;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50108 = ins->sreg3;
  ins->sreg2 = D.50108;
  D.50109 = ins->sreg2;
  ins->sreg1 = D.50109;
  D.50110 = cfg->ip;
  ins->cil_code = D.50110;
  D.50154 = cfg->varinfo;
  D.50155 = rvar->data.op[0].const_val;
  D.50156 = (long unsigned int) D.50155;
  D.50157 = D.50156 * 8;
  D.50158 = D.50154 + D.50157;
  D.50159 = *D.50158;
  D.50160 = D.50159->data.op[1].vtype;
  D.50161 = mono_type_to_regmove (cfg, D.50160);
  D.50162 = (short unsigned int) D.50161;
  ins->opcode = D.50162;
  D.50154 = cfg->varinfo;
  D.50155 = rvar->data.op[0].const_val;
  D.50156 = (long unsigned int) D.50155;
  D.50157 = D.50156 * 8;
  D.50158 = D.50154 + D.50157;
  D.50159 = *D.50158;
  D.50160 = D.50159->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.50160, ins);
  D.50154 = cfg->varinfo;
  D.50155 = rvar->data.op[0].const_val;
  D.50156 = (long unsigned int) D.50155;
  D.50157 = D.50156 * 8;
  D.50158 = D.50154 + D.50157;
  D.50159 = *D.50158;
  D.50163 = D.50159->klass;
  ins->klass = D.50163;
  D.50154 = cfg->varinfo;
  D.50155 = rvar->data.op[0].const_val;
  D.50156 = (long unsigned int) D.50155;
  D.50157 = D.50156 * 8;
  D.50158 = D.50154 + D.50157;
  D.50159 = *D.50158;
  D.50164 = D.50159->dreg;
  ins->sreg1 = D.50164;
  D.50165 = ins->type;
  D.50166 = (<unnamed type>) D.50165;
  D.50167 = alloc_dreg (cfg, D.50166);
  D.50168 = (int) D.50167;
  ins->dreg = D.50168;
  D.50169 = ins->opcode;
  if (D.50169 == 431) goto <D.50170>; else goto <D.50171>;
  <D.50170>:
  D.50154 = cfg->varinfo;
  D.50155 = rvar->data.op[0].const_val;
  D.50156 = (long unsigned int) D.50155;
  D.50157 = D.50156 * 8;
  D.50158 = D.50154 + D.50157;
  D.50159 = *D.50158;
  D.50160 = D.50159->data.op[1].vtype;
  D.50172 = mono_class_from_mono_type (D.50160);
  ins->klass = D.50172;
  <D.50171>:
  D.50173 = cfg->cbb;
  D.50174 = D.50173->last_ins;
  if (D.50174 != 0B) goto <D.50175>; else goto <D.50176>;
  <D.50175>:
  D.50173 = cfg->cbb;
  D.50174 = D.50173->last_ins;
  D.50174->next = ins;
  D.50173 = cfg->cbb;
  D.50174 = D.50173->last_ins;
  ins->prev = D.50174;
  D.50173 = cfg->cbb;
  D.50173->last_ins = ins;
  goto <D.50177>;
  <D.50176>:
  D.50173 = cfg->cbb;
  D.50173 = cfg->cbb;
  D.50173->last_ins = ins;
  D.50174 = D.50173->last_ins;
  D.50173->code = D.50174;
  <D.50177>:
  sp.461 = sp;
  sp = sp.461 + 8;
  *sp.461 = ins;
  <D.50151>:
  D.50179 = cfg->headers_to_free;
  D.50060 = cfg->mempool;
  D.50180 = g_slist_prepend_mempool (D.50060, D.50179, cheader);
  cfg->headers_to_free = D.50180;
  D.50019 = costs + 1;
  return D.50019;
  <D.50099>:
  D.50026 = cfg->verbose_level;
  if (D.50026 > 2) goto <D.50181>; else goto <D.50182>;
  <D.50181>:
  D.50183 = mono_method_full_name (cmethod, 1);
  printf ("INLINE ABORTED %s (cost %d)\n", D.50183, costs);
  <D.50182>:
  cfg->exception_type = 0;
  mono_loader_clear_error ();
  cfg->cbb = prev_cbb;
  D.50179 = cfg->headers_to_free;
  D.50060 = cfg->mempool;
  D.50184 = g_slist_prepend_mempool (D.50060, D.50179, cheader);
  cfg->headers_to_free = D.50184;
  D.50019 = 0;
  return D.50019;
}


check_inline_called_method_name_limit (struct MonoMethod * called_method)
{
  const char * limit.462;
  char D.50192;
  long unsigned int D.50195;
  gboolean D.50196;
  _Bool D.50197;
  int strncmp_result;
  static const char * limit = 0B;

  limit.462 = limit;
  if (limit.462 == 0B) goto <D.50187>; else goto <D.50188>;
  <D.50187>:
  {
    const char * limit_string;

    limit_string = monoeg_g_getenv ("MONO_INLINE_CALLED_METHOD_NAME_LIMIT");
    if (limit_string != 0B) goto <D.50189>; else goto <D.50190>;
    <D.50189>:
    limit = limit_string;
    goto <D.50191>;
    <D.50190>:
    limit = "";
    <D.50191>:
  }
  <D.50188>:
  limit.462 = limit;
  D.50192 = *limit.462;
  if (D.50192 != 0) goto <D.50193>; else goto <D.50194>;
  <D.50193>:
  {
    char * called_method_name;

    called_method_name = mono_method_full_name (called_method, 1);
    limit.462 = limit;
    D.50195 = strlen (limit.462);
    limit.462 = limit;
    strncmp_result = strncmp (called_method_name, limit.462, D.50195);
    monoeg_g_free (called_method_name);
    D.50197 = strncmp_result == 0;
    D.50196 = (gboolean) D.50197;
    return D.50196;
  }
  <D.50194>:
  D.50196 = 1;
  return D.50196;
}


check_inline_caller_method_name_limit (struct MonoMethod * caller_method)
{
  const char * limit.463;
  char D.50205;
  long unsigned int D.50208;
  gboolean D.50209;
  _Bool D.50210;
  int strncmp_result;
  static const char * limit = 0B;

  limit.463 = limit;
  if (limit.463 == 0B) goto <D.50200>; else goto <D.50201>;
  <D.50200>:
  {
    const char * limit_string;

    limit_string = monoeg_g_getenv ("MONO_INLINE_CALLER_METHOD_NAME_LIMIT");
    if (limit_string != 0B) goto <D.50202>; else goto <D.50203>;
    <D.50202>:
    limit = limit_string;
    goto <D.50204>;
    <D.50203>:
    limit = "";
    <D.50204>:
  }
  <D.50201>:
  limit.463 = limit;
  D.50205 = *limit.463;
  if (D.50205 != 0) goto <D.50206>; else goto <D.50207>;
  <D.50206>:
  {
    char * caller_method_name;

    caller_method_name = mono_method_full_name (caller_method, 1);
    limit.463 = limit;
    D.50208 = strlen (limit.463);
    limit.463 = limit;
    strncmp_result = strncmp (caller_method_name, limit.463, D.50208);
    monoeg_g_free (caller_method_name);
    D.50210 = strncmp_result == 0;
    D.50209 = (gboolean) D.50210;
    return D.50209;
  }
  <D.50207>:
  D.50209 = 1;
  return D.50209;
}


is_magic_tls_access (struct MonoClassField * field)
{
  int D.27508;
  int iftmp.464;
  int D.27507;
  const char[8] * D.50215;
  unsigned char D.50216;
  int D.50217;
  unsigned char D.50218;
  int D.50219;
  _Bool D.50220;
  _Bool D.50221;
  _Bool D.50222;
  const unsigned char * D.50225;
  unsigned char D.50226;
  int D.50227;
  const unsigned char * D.50228;
  unsigned char D.50229;
  int D.50230;
  _Bool D.50231;
  _Bool D.50232;
  const unsigned char * D.50235;
  unsigned char D.50236;
  int D.50237;
  const unsigned char * D.50238;
  unsigned char D.50239;
  int D.50240;
  _Bool D.50241;
  _Bool D.50242;
  const unsigned char * D.50245;
  unsigned char D.50246;
  int D.50247;
  const unsigned char * D.50248;
  unsigned char D.50249;
  int D.50250;
  const char * D.50252;
  gboolean D.50255;
  int D.27517;
  int iftmp.465;
  int D.27516;
  struct MonoClass * D.50259;
  const char[14] * D.50260;
  unsigned char D.50261;
  int D.50262;
  unsigned char D.50263;
  int D.50264;
  _Bool D.50265;
  _Bool D.50266;
  _Bool D.50267;
  const unsigned char * D.50270;
  unsigned char D.50271;
  int D.50272;
  const unsigned char * D.50273;
  unsigned char D.50274;
  int D.50275;
  _Bool D.50276;
  _Bool D.50277;
  const unsigned char * D.50280;
  unsigned char D.50281;
  int D.50282;
  const unsigned char * D.50283;
  unsigned char D.50284;
  int D.50285;
  _Bool D.50286;
  _Bool D.50287;
  const unsigned char * D.50290;
  unsigned char D.50291;
  int D.50292;
  const unsigned char * D.50293;
  unsigned char D.50294;
  int D.50295;
  const char * D.50297;
  struct MonoImage * D.50300;
  struct MonoImage * D.50301;
  _Bool D.50302;

  {
    size_t __s1_len;
    size_t __s2_len;

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

      __s2 = field->name;
      D.50215 = "tlsdata";
      D.50216 = MEM[(const unsigned char *)D.50215];
      D.50217 = (int) D.50216;
      D.50218 = *__s2;
      D.50219 = (int) D.50218;
      __result = D.50217 - D.50219;
      {
        D.50220 = __s2_len != 0;
        D.50221 = __result == 0;
        D.50222 = D.50220 & D.50221;
        if (D.50222 != 0) goto <D.50223>; else goto <D.50224>;
        <D.50223>:
        D.50225 = &MEM[(void *)"tlsdata" + 1B];
        D.50226 = *D.50225;
        D.50227 = (int) D.50226;
        D.50228 = __s2 + 1;
        D.50229 = *D.50228;
        D.50230 = (int) D.50229;
        __result = D.50227 - D.50230;
        D.50231 = __s2_len > 1;
        D.50221 = __result == 0;
        D.50232 = D.50231 & D.50221;
        if (D.50232 != 0) goto <D.50233>; else goto <D.50234>;
        <D.50233>:
        D.50235 = &MEM[(void *)"tlsdata" + 2B];
        D.50236 = *D.50235;
        D.50237 = (int) D.50236;
        D.50238 = __s2 + 2;
        D.50239 = *D.50238;
        D.50240 = (int) D.50239;
        __result = D.50237 - D.50240;
        D.50241 = __s2_len > 2;
        D.50221 = __result == 0;
        D.50242 = D.50241 & D.50221;
        if (D.50242 != 0) goto <D.50243>; else goto <D.50244>;
        <D.50243>:
        D.50245 = &MEM[(void *)"tlsdata" + 3B];
        D.50246 = *D.50245;
        D.50247 = (int) D.50246;
        D.50248 = __s2 + 3;
        D.50249 = *D.50248;
        D.50250 = (int) D.50249;
        __result = D.50247 - D.50250;
        <D.50244>:
        <D.50234>:
        <D.50224>:
      }
      D.27507 = __result;
    }
    iftmp.464 = -D.27507;
    goto <D.50251>;
    <D.50214>:
    D.50252 = field->name;
    iftmp.464 = __builtin_strcmp (D.50252, "tlsdata");
    <D.50251>:
    D.27508 = iftmp.464;
  }
  if (D.27508 != 0) goto <D.50253>; else goto <D.50254>;
  <D.50253>:
  D.50255 = 0;
  return D.50255;
  <D.50254>:
  {
    size_t __s1_len;
    size_t __s2_len;

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

      D.50259 = field->parent;
      __s2 = D.50259->name;
      D.50260 = "ThreadLocal`1";
      D.50261 = MEM[(const unsigned char *)D.50260];
      D.50262 = (int) D.50261;
      D.50263 = *__s2;
      D.50264 = (int) D.50263;
      __result = D.50262 - D.50264;
      {
        D.50265 = __s2_len != 0;
        D.50266 = __result == 0;
        D.50267 = D.50265 & D.50266;
        if (D.50267 != 0) goto <D.50268>; else goto <D.50269>;
        <D.50268>:
        D.50270 = &MEM[(void *)"ThreadLocal`1" + 1B];
        D.50271 = *D.50270;
        D.50272 = (int) D.50271;
        D.50273 = __s2 + 1;
        D.50274 = *D.50273;
        D.50275 = (int) D.50274;
        __result = D.50272 - D.50275;
        D.50276 = __s2_len > 1;
        D.50266 = __result == 0;
        D.50277 = D.50276 & D.50266;
        if (D.50277 != 0) goto <D.50278>; else goto <D.50279>;
        <D.50278>:
        D.50280 = &MEM[(void *)"ThreadLocal`1" + 2B];
        D.50281 = *D.50280;
        D.50282 = (int) D.50281;
        D.50283 = __s2 + 2;
        D.50284 = *D.50283;
        D.50285 = (int) D.50284;
        __result = D.50282 - D.50285;
        D.50286 = __s2_len > 2;
        D.50266 = __result == 0;
        D.50287 = D.50286 & D.50266;
        if (D.50287 != 0) goto <D.50288>; else goto <D.50289>;
        <D.50288>:
        D.50290 = &MEM[(void *)"ThreadLocal`1" + 3B];
        D.50291 = *D.50290;
        D.50292 = (int) D.50291;
        D.50293 = __s2 + 3;
        D.50294 = *D.50293;
        D.50295 = (int) D.50294;
        __result = D.50292 - D.50295;
        <D.50289>:
        <D.50279>:
        <D.50269>:
      }
      D.27516 = __result;
    }
    iftmp.465 = -D.27516;
    goto <D.50296>;
    <D.50258>:
    D.50259 = field->parent;
    D.50297 = D.50259->name;
    iftmp.465 = __builtin_strcmp (D.50297, "ThreadLocal`1");
    <D.50296>:
    D.27517 = iftmp.465;
  }
  if (D.27517 != 0) goto <D.50298>; else goto <D.50299>;
  <D.50298>:
  D.50255 = 0;
  return D.50255;
  <D.50299>:
  D.50259 = field->parent;
  D.50300 = D.50259->image;
  D.50301 = mono_defaults.corlib;
  D.50302 = D.50300 == D.50301;
  D.50255 = (gboolean) D.50302;
  return D.50255;
}


create_magic_tls_access (struct MonoCompile * cfg, struct MonoClassField * tls_field, struct MonoInst * * cached_tls_addr, struct MonoInst * thread_local)
{
  struct MonoInst * D.50304;
  struct MonoMemPool * D.50307;
  long int D.50308;
  struct MonoInst * D.50309;
  int D.50310;
  int D.50311;
  const unsigned char * D.50312;
  struct MonoInst * * D.50313;
  long int D.50314;
  long unsigned int D.50315;
  long unsigned int D.50316;
  struct MonoInst * * D.50317;
  struct MonoInst * D.50318;
  struct MonoType * D.50319;
  unsigned int D.50320;
  short unsigned int D.50321;
  struct MonoClass * D.50322;
  int D.50323;
  unsigned char D.50324;
  <unnamed type> D.50325;
  unsigned int D.50326;
  int D.50327;
  short unsigned int D.50328;
  struct MonoClass * D.50331;
  struct MonoBasicBlock * D.50332;
  struct MonoInst * D.50333;
  struct MonoInst * D.50337;
  struct MonoClass * D.50338;
  long int D.50339;
  struct MonoInst * D.50340;
  struct MonoType * D.50341;
  unsigned int D.50342;
  short unsigned int D.50343;
  int D.50344;
  int D.50345;
  int D.50346;
  int D.50347;
  long int D.50348;
  unsigned char D.50349;
  <unnamed type> D.50350;
  unsigned int D.50351;
  int D.50352;
  struct MonoClass * D.50362;
  int D.50363;
  struct MonoType * D.50364;
  struct MonoClass * D.50365;
  struct MonoType * D.50366;
  long int D.50367;
  struct MonoInst * D.50368;
  int D.50369;
  int D.50370;
  long int D.50371;
  long unsigned int D.50372;
  long unsigned int D.50373;
  struct MonoInst * * D.50374;
  struct MonoInst * D.50375;
  struct MonoType * D.50376;
  unsigned int D.50377;
  short unsigned int D.50378;
  struct MonoClass * D.50379;
  int D.50380;
  int D.50381;
  short unsigned int D.50382;
  struct MonoClass * D.50385;
  unsigned int D.50389;
  short unsigned int D.50390;
  unsigned int D.50391;
  int D.50392;
  struct MonoClass * D.50395;
  struct MonoInst * load;
  struct MonoInst * addr;
  struct MonoInst * temp;
  struct MonoInst * store;
  struct MonoInst * thread_ins;
  struct MonoClassField * offset_field;

  D.50304 = *cached_tls_addr;
  if (D.50304 != 0B) goto <D.50305>; else goto <D.50306>;
  <D.50305>:
  D.50307 = cfg->mempool;
  addr = mono_mempool_alloc (D.50307, 80);
  addr->data.op[1].const_val = 0;
  D.50308 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.50308;
  addr->prev = 0B;
  D.50309 = addr->prev;
  addr->next = D.50309;
  addr->opcode = 428;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.50310 = addr->sreg3;
  addr->sreg2 = D.50310;
  D.50311 = addr->sreg2;
  addr->sreg1 = D.50311;
  D.50312 = cfg->ip;
  addr->cil_code = D.50312;
  D.50313 = cfg->varinfo;
  D.50304 = *cached_tls_addr;
  D.50314 = D.50304->data.op[0].const_val;
  D.50315 = (long unsigned int) D.50314;
  D.50316 = D.50315 * 8;
  D.50317 = D.50313 + D.50316;
  D.50318 = *D.50317;
  D.50319 = D.50318->data.op[1].vtype;
  D.50320 = mono_type_to_regmove (cfg, D.50319);
  D.50321 = (short unsigned int) D.50320;
  addr->opcode = D.50321;
  D.50313 = cfg->varinfo;
  D.50304 = *cached_tls_addr;
  D.50314 = D.50304->data.op[0].const_val;
  D.50315 = (long unsigned int) D.50314;
  D.50316 = D.50315 * 8;
  D.50317 = D.50313 + D.50316;
  D.50318 = *D.50317;
  D.50319 = D.50318->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.50319, addr);
  D.50313 = cfg->varinfo;
  D.50304 = *cached_tls_addr;
  D.50314 = D.50304->data.op[0].const_val;
  D.50315 = (long unsigned int) D.50314;
  D.50316 = D.50315 * 8;
  D.50317 = D.50313 + D.50316;
  D.50318 = *D.50317;
  D.50322 = D.50318->klass;
  addr->klass = D.50322;
  D.50313 = cfg->varinfo;
  D.50304 = *cached_tls_addr;
  D.50314 = D.50304->data.op[0].const_val;
  D.50315 = (long unsigned int) D.50314;
  D.50316 = D.50315 * 8;
  D.50317 = D.50313 + D.50316;
  D.50318 = *D.50317;
  D.50323 = D.50318->dreg;
  addr->sreg1 = D.50323;
  D.50324 = addr->type;
  D.50325 = (<unnamed type>) D.50324;
  D.50326 = alloc_dreg (cfg, D.50325);
  D.50327 = (int) D.50326;
  addr->dreg = D.50327;
  D.50328 = addr->opcode;
  if (D.50328 == 431) goto <D.50329>; else goto <D.50330>;
  <D.50329>:
  D.50313 = cfg->varinfo;
  D.50304 = *cached_tls_addr;
  D.50314 = D.50304->data.op[0].const_val;
  D.50315 = (long unsigned int) D.50314;
  D.50316 = D.50315 * 8;
  D.50317 = D.50313 + D.50316;
  D.50318 = *D.50317;
  D.50319 = D.50318->data.op[1].vtype;
  D.50331 = mono_class_from_mono_type (D.50319);
  addr->klass = D.50331;
  <D.50330>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  if (D.50333 != 0B) goto <D.50334>; else goto <D.50335>;
  <D.50334>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50333->next = addr;
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  addr->prev = D.50333;
  D.50332 = cfg->cbb;
  D.50332->last_ins = addr;
  goto <D.50336>;
  <D.50335>:
  D.50332 = cfg->cbb;
  D.50332 = cfg->cbb;
  D.50332->last_ins = addr;
  D.50333 = D.50332->last_ins;
  D.50332->code = D.50333;
  <D.50336>:
  D.50337 = addr;
  return D.50337;
  <D.50306>:
  thread_ins = mono_get_thread_intrinsic (cfg);
  D.50338 = tls_field->parent;
  offset_field = mono_class_get_field_from_name (D.50338, "tls_offset");
  D.50307 = cfg->mempool;
  load = mono_mempool_alloc (D.50307, 80);
  load->data.op[1].const_val = 0;
  D.50339 = load->data.op[1].const_val;
  load->data.op[0].const_val = D.50339;
  load->prev = 0B;
  D.50340 = load->prev;
  load->next = D.50340;
  D.50341 = offset_field->type;
  D.50342 = mono_type_to_load_membase (cfg, D.50341);
  D.50343 = (short unsigned int) D.50342;
  load->opcode = D.50343;
  load->flags = 0;
  load->type = 0;
  load->dreg = -1;
  load->sreg3 = -1;
  D.50344 = load->sreg3;
  load->sreg2 = D.50344;
  D.50345 = load->sreg2;
  load->sreg1 = D.50345;
  D.50312 = cfg->ip;
  load->cil_code = D.50312;
  load->dreg = 0;
  D.50346 = thread_local->dreg;
  load->sreg1 = D.50346;
  D.50347 = offset_field->offset;
  D.50348 = (long int) D.50347;
  load->data.op[0].const_val = D.50348;
  load->type = 1;
  D.50341 = offset_field->type;
  type_to_eval_stack_type (cfg, D.50341, load);
  D.50349 = load->type;
  D.50350 = (<unnamed type>) D.50349;
  D.50351 = alloc_dreg (cfg, D.50350);
  D.50352 = (int) D.50351;
  load->dreg = D.50352;
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  if (D.50333 != 0B) goto <D.50353>; else goto <D.50354>;
  <D.50353>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50333->next = load;
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  load->prev = D.50333;
  D.50332 = cfg->cbb;
  D.50332->last_ins = load;
  goto <D.50355>;
  <D.50354>:
  D.50332 = cfg->cbb;
  D.50332 = cfg->cbb;
  D.50332->last_ins = load;
  D.50333 = D.50332->last_ins;
  D.50332->code = D.50333;
  <D.50355>:
  if (thread_ins != 0B) goto <D.50356>; else goto <D.50357>;
  <D.50356>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  if (D.50333 != 0B) goto <D.50358>; else goto <D.50359>;
  <D.50358>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50333->next = thread_ins;
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  thread_ins->prev = D.50333;
  D.50332 = cfg->cbb;
  D.50332->last_ins = thread_ins;
  goto <D.50360>;
  <D.50359>:
  D.50332 = cfg->cbb;
  D.50332 = cfg->cbb;
  D.50332->last_ins = thread_ins;
  D.50333 = D.50332->last_ins;
  D.50332->code = D.50333;
  <D.50360>:
  goto <D.50361>;
  <D.50357>:
  {
    struct MonoMethod * thread_method;

    D.50362 = mono_get_thread_class ();
    thread_method = mono_class_get_method_from_name (D.50362, "CurrentInternalThread_internal", 0);
    thread_ins = mono_emit_method_call (cfg, thread_method, 0B, 0B);
  }
  <D.50361>:
  D.50363 = load->dreg;
  addr = emit_managed_static_data_access (cfg, thread_ins, D.50363);
  D.50364 = tls_field->type;
  D.50365 = mono_class_from_mono_type (D.50364);
  addr->klass = D.50365;
  addr->type = 5;
  D.50366 = type_from_stack_type (addr);
  temp = mono_compile_create_var (cfg, D.50366, 329);
  *cached_tls_addr = temp;
  D.50307 = cfg->mempool;
  store = mono_mempool_alloc (D.50307, 80);
  store->data.op[1].const_val = 0;
  D.50367 = store->data.op[1].const_val;
  store->data.op[0].const_val = D.50367;
  store->prev = 0B;
  D.50368 = store->prev;
  store->next = D.50368;
  store->opcode = 428;
  store->flags = 0;
  store->type = 0;
  store->dreg = -1;
  store->sreg3 = -1;
  D.50369 = store->sreg3;
  store->sreg2 = D.50369;
  D.50370 = store->sreg2;
  store->sreg1 = D.50370;
  D.50312 = cfg->ip;
  store->cil_code = D.50312;
  D.50313 = cfg->varinfo;
  D.50371 = temp->data.op[0].const_val;
  D.50372 = (long unsigned int) D.50371;
  D.50373 = D.50372 * 8;
  D.50374 = D.50313 + D.50373;
  D.50375 = *D.50374;
  D.50376 = D.50375->data.op[1].vtype;
  D.50377 = mono_type_to_regmove (cfg, D.50376);
  D.50378 = (short unsigned int) D.50377;
  store->opcode = D.50378;
  D.50313 = cfg->varinfo;
  D.50371 = temp->data.op[0].const_val;
  D.50372 = (long unsigned int) D.50371;
  D.50373 = D.50372 * 8;
  D.50374 = D.50313 + D.50373;
  D.50375 = *D.50374;
  D.50379 = D.50375->klass;
  store->klass = D.50379;
  D.50380 = addr->dreg;
  store->sreg1 = D.50380;
  D.50313 = cfg->varinfo;
  D.50371 = temp->data.op[0].const_val;
  D.50372 = (long unsigned int) D.50371;
  D.50373 = D.50372 * 8;
  D.50374 = D.50313 + D.50373;
  D.50375 = *D.50374;
  D.50381 = D.50375->dreg;
  store->dreg = D.50381;
  D.50382 = store->opcode;
  if (D.50382 == 431) goto <D.50383>; else goto <D.50384>;
  <D.50383>:
  D.50313 = cfg->varinfo;
  D.50371 = temp->data.op[0].const_val;
  D.50372 = (long unsigned int) D.50371;
  D.50373 = D.50372 * 8;
  D.50374 = D.50313 + D.50373;
  D.50375 = *D.50374;
  D.50376 = D.50375->data.op[1].vtype;
  D.50385 = mono_class_from_mono_type (D.50376);
  store->klass = D.50385;
  <D.50384>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  if (D.50333 != 0B) goto <D.50386>; else goto <D.50387>;
  <D.50386>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50333->next = store;
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  store->prev = D.50333;
  D.50332 = cfg->cbb;
  D.50332->last_ins = store;
  goto <D.50388>;
  <D.50387>:
  D.50332 = cfg->cbb;
  D.50332 = cfg->cbb;
  D.50332->last_ins = store;
  D.50333 = D.50332->last_ins;
  D.50332->code = D.50333;
  <D.50388>:
  D.50307 = cfg->mempool;
  addr = mono_mempool_alloc (D.50307, 80);
  addr->data.op[1].const_val = 0;
  D.50308 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.50308;
  addr->prev = 0B;
  D.50309 = addr->prev;
  addr->next = D.50309;
  addr->opcode = 428;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.50310 = addr->sreg3;
  addr->sreg2 = D.50310;
  D.50311 = addr->sreg2;
  addr->sreg1 = D.50311;
  D.50312 = cfg->ip;
  addr->cil_code = D.50312;
  D.50313 = cfg->varinfo;
  D.50371 = temp->data.op[0].const_val;
  D.50372 = (long unsigned int) D.50371;
  D.50373 = D.50372 * 8;
  D.50374 = D.50313 + D.50373;
  D.50375 = *D.50374;
  D.50376 = D.50375->data.op[1].vtype;
  D.50389 = mono_type_to_regmove (cfg, D.50376);
  D.50390 = (short unsigned int) D.50389;
  addr->opcode = D.50390;
  D.50313 = cfg->varinfo;
  D.50371 = temp->data.op[0].const_val;
  D.50372 = (long unsigned int) D.50371;
  D.50373 = D.50372 * 8;
  D.50374 = D.50313 + D.50373;
  D.50375 = *D.50374;
  D.50376 = D.50375->data.op[1].vtype;
  type_to_eval_stack_type (cfg, D.50376, addr);
  D.50313 = cfg->varinfo;
  D.50371 = temp->data.op[0].const_val;
  D.50372 = (long unsigned int) D.50371;
  D.50373 = D.50372 * 8;
  D.50374 = D.50313 + D.50373;
  D.50375 = *D.50374;
  D.50379 = D.50375->klass;
  addr->klass = D.50379;
  D.50313 = cfg->varinfo;
  D.50371 = temp->data.op[0].const_val;
  D.50372 = (long unsigned int) D.50371;
  D.50373 = D.50372 * 8;
  D.50374 = D.50313 + D.50373;
  D.50375 = *D.50374;
  D.50381 = D.50375->dreg;
  addr->sreg1 = D.50381;
  D.50324 = addr->type;
  D.50325 = (<unnamed type>) D.50324;
  D.50391 = alloc_dreg (cfg, D.50325);
  D.50392 = (int) D.50391;
  addr->dreg = D.50392;
  D.50328 = addr->opcode;
  if (D.50328 == 431) goto <D.50393>; else goto <D.50394>;
  <D.50393>:
  D.50313 = cfg->varinfo;
  D.50371 = temp->data.op[0].const_val;
  D.50372 = (long unsigned int) D.50371;
  D.50373 = D.50372 * 8;
  D.50374 = D.50313 + D.50373;
  D.50375 = *D.50374;
  D.50376 = D.50375->data.op[1].vtype;
  D.50395 = mono_class_from_mono_type (D.50376);
  addr->klass = D.50395;
  <D.50394>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  if (D.50333 != 0B) goto <D.50396>; else goto <D.50397>;
  <D.50396>:
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  D.50333->next = addr;
  D.50332 = cfg->cbb;
  D.50333 = D.50332->last_ins;
  addr->prev = D.50333;
  D.50332 = cfg->cbb;
  D.50332->last_ins = addr;
  goto <D.50398>;
  <D.50397>:
  D.50332 = cfg->cbb;
  D.50332 = cfg->cbb;
  D.50332->last_ins = addr;
  D.50333 = D.50332->last_ins;
  D.50332->code = D.50333;
  <D.50398>:
  D.50337 = addr;
  return D.50337;
}


emit_managed_static_data_access (struct MonoCompile * cfg, struct MonoInst * thread_ins, int offset_reg)
{
  unsigned int D.50400;
  struct MonoMemPool * D.50401;
  long int D.50402;
  struct MonoInst * D.50403;
  int D.50404;
  int D.50405;
  const unsigned char * D.50406;
  int D.50407;
  struct MonoBasicBlock * D.50408;
  struct MonoInst * D.50409;
  unsigned int D.50413;
  long int D.50414;
  struct MonoInst * D.50415;
  int D.50416;
  int D.50417;
  long int D.50421;
  struct MonoInst * D.50422;
  int D.50423;
  int D.50424;
  long int D.50428;
  struct MonoInst * D.50429;
  int D.50430;
  int D.50431;
  long int D.50435;
  struct MonoInst * D.50436;
  int D.50437;
  int D.50438;
  unsigned int D.50442;
  long int D.50443;
  struct MonoInst * D.50444;
  int D.50445;
  int D.50446;
  unsigned int D.50450;
  long int D.50451;
  struct MonoInst * D.50452;
  int D.50453;
  int D.50454;
  unsigned int D.50458;
  long int D.50459;
  struct MonoInst * D.50460;
  int D.50461;
  int D.50462;
  struct MonoInst * D.50466;
  struct MonoInst * addr;
  int static_data_reg;
  int array_reg;
  int dreg;
  int offset2_reg;
  int idx_reg;

  D.50400 = alloc_ireg (cfg);
  static_data_reg = (int) D.50400;
  {
    struct MonoInst * inst;

    D.50401 = cfg->mempool;
    inst = mono_mempool_alloc (D.50401, 80);
    inst->data.op[1].const_val = 0;
    D.50402 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50402;
    inst->prev = 0B;
    D.50403 = inst->prev;
    inst->next = D.50403;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50404 = inst->sreg3;
    inst->sreg2 = D.50404;
    D.50405 = inst->sreg2;
    inst->sreg1 = D.50405;
    D.50406 = cfg->ip;
    inst->cil_code = D.50406;
    inst->dreg = static_data_reg;
    D.50407 = thread_ins->dreg;
    inst->sreg1 = D.50407;
    inst->data.op[0].const_val = 96;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    if (D.50409 != 0B) goto <D.50410>; else goto <D.50411>;
    <D.50410>:
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    D.50409->next = inst;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    inst->prev = D.50409;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    goto <D.50412>;
    <D.50411>:
    D.50408 = cfg->cbb;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    D.50409 = D.50408->last_ins;
    D.50408->code = D.50409;
    <D.50412>:
  }
  D.50413 = alloc_ireg (cfg);
  idx_reg = (int) D.50413;
  {
    struct MonoInst * inst;

    D.50401 = cfg->mempool;
    inst = mono_mempool_alloc (D.50401, 80);
    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 = 640;
    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.50406 = cfg->ip;
    inst->cil_code = D.50406;
    inst->dreg = idx_reg;
    inst->sreg1 = offset_reg;
    inst->data.op[1].const_val = 24;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    if (D.50409 != 0B) goto <D.50418>; else goto <D.50419>;
    <D.50418>:
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    D.50409->next = inst;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    inst->prev = D.50409;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    goto <D.50420>;
    <D.50419>:
    D.50408 = cfg->cbb;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    D.50409 = D.50408->last_ins;
    D.50408->code = D.50409;
    <D.50420>:
  }
  {
    struct MonoInst * inst;

    D.50401 = cfg->mempool;
    inst = mono_mempool_alloc (D.50401, 80);
    inst->data.op[1].const_val = 0;
    D.50421 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50421;
    inst->prev = 0B;
    D.50422 = inst->prev;
    inst->next = D.50422;
    inst->opcode = 630;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50423 = inst->sreg3;
    inst->sreg2 = D.50423;
    D.50424 = inst->sreg2;
    inst->sreg1 = D.50424;
    D.50406 = cfg->ip;
    inst->cil_code = D.50406;
    inst->dreg = idx_reg;
    inst->sreg1 = idx_reg;
    inst->data.op[1].const_val = 1;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    if (D.50409 != 0B) goto <D.50425>; else goto <D.50426>;
    <D.50425>:
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    D.50409->next = inst;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    inst->prev = D.50409;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    goto <D.50427>;
    <D.50426>:
    D.50408 = cfg->cbb;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    D.50409 = D.50408->last_ins;
    D.50408->code = D.50409;
    <D.50427>:
  }
  {
    struct MonoInst * inst;

    D.50401 = cfg->mempool;
    inst = mono_mempool_alloc (D.50401, 80);
    inst->data.op[1].const_val = 0;
    D.50428 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50428;
    inst->prev = 0B;
    D.50429 = inst->prev;
    inst->next = D.50429;
    inst->opcode = 639;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50430 = inst->sreg3;
    inst->sreg2 = D.50430;
    D.50431 = inst->sreg2;
    inst->sreg1 = D.50431;
    D.50406 = cfg->ip;
    inst->cil_code = D.50406;
    inst->dreg = idx_reg;
    inst->sreg1 = idx_reg;
    inst->data.op[1].const_val = 3;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    if (D.50409 != 0B) goto <D.50432>; else goto <D.50433>;
    <D.50432>:
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    D.50409->next = inst;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    inst->prev = D.50409;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    goto <D.50434>;
    <D.50433>:
    D.50408 = cfg->cbb;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    D.50409 = D.50408->last_ins;
    D.50408->code = D.50409;
    <D.50434>:
  }
  {
    struct MonoInst * inst;

    D.50401 = cfg->mempool;
    inst = mono_mempool_alloc (D.50401, 80);
    inst->data.op[1].const_val = 0;
    D.50435 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50435;
    inst->prev = 0B;
    D.50436 = inst->prev;
    inst->next = D.50436;
    inst->opcode = 483;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50437 = inst->sreg3;
    inst->sreg2 = D.50437;
    D.50438 = inst->sreg2;
    inst->sreg1 = D.50438;
    D.50406 = cfg->ip;
    inst->cil_code = D.50406;
    inst->dreg = static_data_reg;
    inst->sreg1 = static_data_reg;
    inst->sreg2 = idx_reg;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    if (D.50409 != 0B) goto <D.50439>; else goto <D.50440>;
    <D.50439>:
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    D.50409->next = inst;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    inst->prev = D.50409;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    goto <D.50441>;
    <D.50440>:
    D.50408 = cfg->cbb;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    D.50409 = D.50408->last_ins;
    D.50408->code = D.50409;
    <D.50441>:
  }
  D.50442 = alloc_ireg (cfg);
  array_reg = (int) D.50442;
  {
    struct MonoInst * inst;

    D.50401 = cfg->mempool;
    inst = mono_mempool_alloc (D.50401, 80);
    inst->data.op[1].const_val = 0;
    D.50443 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50443;
    inst->prev = 0B;
    D.50444 = inst->prev;
    inst->next = D.50444;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50445 = inst->sreg3;
    inst->sreg2 = D.50445;
    D.50446 = inst->sreg2;
    inst->sreg1 = D.50446;
    D.50406 = cfg->ip;
    inst->cil_code = D.50406;
    inst->dreg = array_reg;
    inst->sreg1 = static_data_reg;
    inst->data.op[0].const_val = 0;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    if (D.50409 != 0B) goto <D.50447>; else goto <D.50448>;
    <D.50447>:
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    D.50409->next = inst;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    inst->prev = D.50409;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    goto <D.50449>;
    <D.50448>:
    D.50408 = cfg->cbb;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    D.50409 = D.50408->last_ins;
    D.50408->code = D.50409;
    <D.50449>:
  }
  D.50450 = alloc_ireg (cfg);
  offset2_reg = (int) D.50450;
  {
    struct MonoInst * inst;

    D.50401 = cfg->mempool;
    inst = mono_mempool_alloc (D.50401, 80);
    inst->data.op[1].const_val = 0;
    D.50451 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50451;
    inst->prev = 0B;
    D.50452 = inst->prev;
    inst->next = D.50452;
    inst->opcode = 636;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50453 = inst->sreg3;
    inst->sreg2 = D.50453;
    D.50454 = inst->sreg2;
    inst->sreg1 = D.50454;
    D.50406 = cfg->ip;
    inst->cil_code = D.50406;
    inst->dreg = offset2_reg;
    inst->sreg1 = offset_reg;
    inst->data.op[1].const_val = 16777215;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    if (D.50409 != 0B) goto <D.50455>; else goto <D.50456>;
    <D.50455>:
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    D.50409->next = inst;
    D.50408 = cfg->cbb;
    D.50409 = D.50408->last_ins;
    inst->prev = D.50409;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    goto <D.50457>;
    <D.50456>:
    D.50408 = cfg->cbb;
    D.50408 = cfg->cbb;
    D.50408->last_ins = inst;
    D.50409 = D.50408->last_ins;
    D.50408->code = D.50409;
    <D.50457>:
  }
  D.50458 = alloc_ireg (cfg);
  dreg = (int) D.50458;
  D.50401 = cfg->mempool;
  addr = mono_mempool_alloc (D.50401, 80);
  addr->data.op[1].const_val = 0;
  D.50459 = addr->data.op[1].const_val;
  addr->data.op[0].const_val = D.50459;
  addr->prev = 0B;
  D.50460 = addr->prev;
  addr->next = D.50460;
  addr->opcode = 483;
  addr->flags = 0;
  addr->type = 0;
  addr->dreg = -1;
  addr->sreg3 = -1;
  D.50461 = addr->sreg3;
  addr->sreg2 = D.50461;
  D.50462 = addr->sreg2;
  addr->sreg1 = D.50462;
  D.50406 = cfg->ip;
  addr->cil_code = D.50406;
  addr->dreg = dreg;
  addr->sreg1 = array_reg;
  addr->sreg2 = offset2_reg;
  D.50408 = cfg->cbb;
  D.50409 = D.50408->last_ins;
  if (D.50409 != 0B) goto <D.50463>; else goto <D.50464>;
  <D.50463>:
  D.50408 = cfg->cbb;
  D.50409 = D.50408->last_ins;
  D.50409->next = addr;
  D.50408 = cfg->cbb;
  D.50409 = D.50408->last_ins;
  addr->prev = D.50409;
  D.50408 = cfg->cbb;
  D.50408->last_ins = addr;
  goto <D.50465>;
  <D.50464>:
  D.50408 = cfg->cbb;
  D.50408 = cfg->cbb;
  D.50408->last_ins = addr;
  D.50409 = D.50408->last_ins;
  D.50408->code = D.50409;
  <D.50465>:
  D.50466 = addr;
  return D.50466;
}


emit_generic_class_init (struct MonoCompile * cfg, struct MonoClass * klass)
{
  struct MonoInst * vtable_arg.466;
  struct MonoDomain * D.50472;
  struct MonoMemPool * D.50475;
  void * vtable_arg.467;
  struct MonoInst * vtable_arg.468;
  long int D.50478;
  struct MonoInst * D.50479;
  guint16 iftmp.469;
  unsigned char D.50481;
  unsigned char D.50482;
  int D.50486;
  int D.50487;
  const unsigned char * D.50488;
  void * iftmp.470;
  unsigned int D.50493;
  int D.50494;
  struct MonoBasicBlock * D.50495;
  struct MonoInst * D.50496;
  struct MonoMethodSignature * helper_sig_generic_class_init_trampoline_llvm.471;
  struct MonoMethodSignature * helper_sig_generic_class_init_trampoline.472;
  int D.50505;
  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.50468>; else goto <D.50469>;
      <D.50468>:
      vtable_arg.466 = emit_get_rgctx_klass (cfg, context_used, klass, 2);
      vtable_arg = vtable_arg.466;
      goto <D.50471>;
      <D.50469>:
      {
        struct MonoVTable * vtable;

        D.50472 = cfg->domain;
        vtable = mono_class_vtable (D.50472, klass);
        if (vtable == 0B) goto <D.50473>; else goto <D.50474>;
        <D.50473>:
        return;
        <D.50474>:
        D.50475 = cfg->mempool;
        vtable_arg.467 = mono_mempool_alloc (D.50475, 80);
        vtable_arg = vtable_arg.467;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468->data.op[1].const_val = 0;
        D.50478 = vtable_arg.468->data.op[1].const_val;
        vtable_arg.468->data.op[0].const_val = D.50478;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468->prev = 0B;
        D.50479 = vtable_arg.468->prev;
        vtable_arg.468->next = D.50479;
        vtable_arg.468 = vtable_arg;
        D.50481 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.50482 = D.50481 & 64;
        if (D.50482 != 0) goto <D.50483>; else goto <D.50484>;
        <D.50483>:
        iftmp.469 = 736;
        goto <D.50485>;
        <D.50484>:
        iftmp.469 = 363;
        <D.50485>:
        vtable_arg.468->opcode = iftmp.469;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468->flags = 0;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468->type = 0;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468->dreg = -1;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468->sreg3 = -1;
        D.50486 = vtable_arg.468->sreg3;
        vtable_arg.468->sreg2 = D.50486;
        D.50487 = vtable_arg.468->sreg2;
        vtable_arg.468->sreg1 = D.50487;
        vtable_arg.468 = vtable_arg;
        D.50488 = cfg->ip;
        vtable_arg.468->cil_code = D.50488;
        vtable_arg.468 = vtable_arg;
        D.50481 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.50482 = D.50481 & 64;
        if (D.50482 != 0) goto <D.50490>; else goto <D.50491>;
        <D.50490>:
        iftmp.470 = vtable->klass;
        goto <D.50492>;
        <D.50491>:
        iftmp.470 = vtable;
        <D.50492>:
        vtable_arg.468->data.op[0].p = iftmp.470;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468->data.op[1].src = 14B;
        vtable_arg.468 = vtable_arg;
        vtable_arg.468->type = 3;
        vtable_arg.468 = vtable_arg;
        D.50493 = alloc_dreg (cfg, 3);
        D.50494 = (int) D.50493;
        vtable_arg.468->dreg = D.50494;
        D.50495 = cfg->cbb;
        D.50496 = D.50495->last_ins;
        if (D.50496 != 0B) goto <D.50497>; else goto <D.50498>;
        <D.50497>:
        D.50495 = cfg->cbb;
        D.50496 = D.50495->last_ins;
        vtable_arg.468 = vtable_arg;
        D.50496->next = vtable_arg.468;
        vtable_arg.468 = vtable_arg;
        D.50495 = cfg->cbb;
        D.50496 = D.50495->last_ins;
        vtable_arg.468->prev = D.50496;
        D.50495 = cfg->cbb;
        vtable_arg.468 = vtable_arg;
        D.50495->last_ins = vtable_arg.468;
        goto <D.50499>;
        <D.50498>:
        D.50495 = cfg->cbb;
        D.50495 = cfg->cbb;
        vtable_arg.468 = vtable_arg;
        D.50495->last_ins = vtable_arg.468;
        D.50496 = D.50495->last_ins;
        D.50495->code = D.50496;
        <D.50499>:
      }
      <D.50471>:
      if (0 != 0) goto <D.50500>; else goto <D.50501>;
      <D.50500>:
      helper_sig_generic_class_init_trampoline_llvm.471 = helper_sig_generic_class_init_trampoline_llvm;
      call = mono_emit_abs_call (cfg, 36, 0B, helper_sig_generic_class_init_trampoline_llvm.471, &vtable_arg);
      goto <D.50503>;
      <D.50501>:
      helper_sig_generic_class_init_trampoline.472 = helper_sig_generic_class_init_trampoline;
      call = mono_emit_abs_call (cfg, 36, 0B, helper_sig_generic_class_init_trampoline.472, &vtable_arg);
      <D.50503>:
      vtable_arg.468 = vtable_arg;
      D.50505 = vtable_arg.468->dreg;
      mono_call_inst_add_outarg_reg (cfg, call, D.50505, 7, 0);
      cfg->uses_vtable_reg = 1;
    }
  finally
    {
      vtable_arg = {CLOBBER};
    }
}


mini_field_access_needs_cctor_run (struct MonoCompile * cfg, struct MonoMethod * method, struct MonoClass * klass, struct MonoVTable * vtable)
{
  unsigned char D.50509;
  unsigned char D.50510;
  _Bool D.50513;
  long int D.50514;
  long int D.50515;
  unsigned char D.50518;
  unsigned char D.50519;
  gboolean D.50522;
  unsigned int D.50523;
  unsigned int D.50524;
  struct MonoMethod * D.50527;
  int D.50530;
  short unsigned int D.50533;
  int D.50534;
  int D.50535;
  struct MonoClass * D.50538;

  D.50509 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.50510 = D.50509 & 64;
  if (D.50510 == 0) goto <D.50511>; else goto <D.50512>;
  <D.50511>:
  D.50513 = vtable == 0B;
  D.50514 = (long int) D.50513;
  D.50515 = __builtin_expect (D.50514, 0);
  if (D.50515 != 0) goto <D.50516>; else goto <D.50517>;
  <D.50516>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4640, "vtable");
  <D.50517>:
  D.50518 = BIT_FIELD_REF <*vtable, 8, 344>;
  D.50519 = D.50518 & 2;
  if (D.50519 != 0) goto <D.50520>; else goto <D.50521>;
  <D.50520>:
  D.50522 = 0;
  return D.50522;
  <D.50521>:
  <D.50512>:
  D.50523 = klass->flags;
  D.50524 = D.50523 & 1048576;
  if (D.50524 != 0) goto <D.50525>; else goto <D.50526>;
  <D.50525>:
  D.50527 = cfg->method;
  if (D.50527 == method) goto <D.50528>; else goto <D.50529>;
  <D.50528>:
  D.50522 = 0;
  return D.50522;
  <D.50529>:
  <D.50526>:
  D.50530 = mono_class_needs_cctor_run (klass, method);
  if (D.50530 == 0) goto <D.50531>; else goto <D.50532>;
  <D.50531>:
  D.50522 = 0;
  return D.50522;
  <D.50532>:
  D.50533 = method->flags;
  D.50534 = (int) D.50533;
  D.50535 = D.50534 & 16;
  if (D.50535 == 0) goto <D.50536>; else goto <D.50537>;
  <D.50536>:
  D.50538 = method->klass;
  if (D.50538 == klass) goto <D.50539>; else goto <D.50540>;
  <D.50539>:
  D.50522 = 0;
  return D.50522;
  <D.50540>:
  <D.50537>:
  D.50522 = 1;
  return D.50522;
}


set_exception_object (struct MonoCompile * cfg, struct MonoException * exception)
{
  void * D.50544;
  void * * D.50545;

  mono_cfg_set_exception (cfg, 13);
  if (0 != 0) goto <D.50542>; else goto <D.50543>;
  <D.50542>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6342, "sizeof (cfg->exception_ptr) == sizeof (MonoObject*)");
  <D.50543>:
  D.50544 = mono_gc_make_root_descr_all_refs (1);
  D.50545 = &cfg->exception_ptr;
  mono_gc_register_root (D.50545, 8, D.50544);
  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.50546;
  unsigned char * D.50549;
  unsigned char D.50550;
  unsigned char * D.50553;
  unsigned char D.50554;
  unsigned char * D.50557;
  unsigned char D.50558;
  struct MonoClass * D.50561;
  struct MonoImage * D.50562;
  const char * D.50565;
  int D.27408;
  int iftmp.473;
  int D.27407;
  const char[16] * D.50573;
  unsigned char D.50574;
  int D.50575;
  unsigned char D.50576;
  int D.50577;
  _Bool D.50578;
  _Bool D.50579;
  _Bool D.50580;
  const unsigned char * D.50583;
  unsigned char D.50584;
  int D.50585;
  const unsigned char * D.50586;
  unsigned char D.50587;
  int D.50588;
  _Bool D.50589;
  _Bool D.50590;
  const unsigned char * D.50593;
  unsigned char D.50594;
  int D.50595;
  const unsigned char * D.50596;
  unsigned char D.50597;
  int D.50598;
  _Bool D.50599;
  _Bool D.50600;
  const unsigned char * D.50603;
  unsigned char D.50604;
  int D.50605;
  const unsigned char * D.50606;
  unsigned char D.50607;
  int D.50608;
  const char * D.50610;
  int D.27417;
  int iftmp.474;
  int D.27416;
  struct MonoClass * D.50615;
  const char[15] * D.50616;
  unsigned char D.50617;
  int D.50618;
  unsigned char D.50619;
  int D.50620;
  _Bool D.50621;
  _Bool D.50622;
  _Bool D.50623;
  const unsigned char * D.50626;
  unsigned char D.50627;
  int D.50628;
  const unsigned char * D.50629;
  unsigned char D.50630;
  int D.50631;
  _Bool D.50632;
  _Bool D.50633;
  const unsigned char * D.50636;
  unsigned char D.50637;
  int D.50638;
  const unsigned char * D.50639;
  unsigned char D.50640;
  int D.50641;
  _Bool D.50642;
  _Bool D.50643;
  const unsigned char * D.50646;
  unsigned char D.50647;
  int D.50648;
  const unsigned char * D.50649;
  unsigned char D.50650;
  int D.50651;
  const char * D.50653;
  struct MonoImage * D.50655;
  struct MonoImage * D.50656;
  struct MonoType * D.50657;
  struct MonoType * D.50658;
  unsigned char D.50659;
  int D.50660;
  unsigned int size.475;
  unsigned int D.50662;
  struct MonoType * D.50663;
  int D.50664;
  unsigned char D.50667;
  unsigned char D.50668;
  const guint32 * D.50671;
  unsigned int D.50672;
  unsigned int D.50673;
  unsigned int rva.476;
  _Bool D.50675;
  _Bool D.50676;
  _Bool D.50677;
  long unsigned int D.50680;
  long int D.50682;
  long int D.50683;

  D.50546 = *ip;
  if (D.50546 == 37) goto <D.50547>; else goto <D.50548>;
  <D.50547>:
  D.50549 = ip + 1;
  D.50550 = *D.50549;
  if (D.50550 == 208) goto <D.50551>; else goto <D.50552>;
  <D.50551>:
  D.50553 = ip + 5;
  D.50554 = *D.50553;
  if (D.50554 == 4) goto <D.50555>; else goto <D.50556>;
  <D.50555>:
  D.50557 = ip + 6;
  D.50558 = *D.50557;
  if (D.50558 == 40) goto <D.50559>; else goto <D.50560>;
  <D.50559>:
  {
    guint32 token;
    guint32 field_token;
    guint32 field_index;
    guint32 rva;
    const char * data_ptr;
    int size;
    struct MonoMethod * cmethod;
    struct MonoClass * dummy_class;
    struct MonoClassField * field;
    int dummy_align;

    try
      {
        token = MEM[(const guint32 *)ip + 7B];
        field_token = MEM[(const guint32 *)ip + 2B];
        field_index = field_token & 16777215;
        size = 0;
        D.50561 = method->klass;
        D.50562 = D.50561->image;
        field = mono_field_from_token (D.50562, field_token, &dummy_class, 0B);
        if (field == 0B) goto <D.50563>; else goto <D.50564>;
        <D.50563>:
        D.50565 = 0B;
        return D.50565;
        <D.50564>:
        *out_field_token = field_token;
        cmethod = mini_get_method (0B, method, token, 0B, 0B);
        if (cmethod == 0B) goto <D.50566>; else goto <D.50567>;
        <D.50566>:
        D.50565 = 0B;
        return D.50565;
        <D.50567>:
        {
          size_t __s1_len;
          size_t __s2_len;

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

            __s2 = cmethod->name;
            D.50573 = "InitializeArray";
            D.50574 = MEM[(const unsigned char *)D.50573];
            D.50575 = (int) D.50574;
            D.50576 = *__s2;
            D.50577 = (int) D.50576;
            __result = D.50575 - D.50577;
            {
              D.50578 = __s2_len != 0;
              D.50579 = __result == 0;
              D.50580 = D.50578 & D.50579;
              if (D.50580 != 0) goto <D.50581>; else goto <D.50582>;
              <D.50581>:
              D.50583 = &MEM[(void *)"InitializeArray" + 1B];
              D.50584 = *D.50583;
              D.50585 = (int) D.50584;
              D.50586 = __s2 + 1;
              D.50587 = *D.50586;
              D.50588 = (int) D.50587;
              __result = D.50585 - D.50588;
              D.50589 = __s2_len > 1;
              D.50579 = __result == 0;
              D.50590 = D.50589 & D.50579;
              if (D.50590 != 0) goto <D.50591>; else goto <D.50592>;
              <D.50591>:
              D.50593 = &MEM[(void *)"InitializeArray" + 2B];
              D.50594 = *D.50593;
              D.50595 = (int) D.50594;
              D.50596 = __s2 + 2;
              D.50597 = *D.50596;
              D.50598 = (int) D.50597;
              __result = D.50595 - D.50598;
              D.50599 = __s2_len > 2;
              D.50579 = __result == 0;
              D.50600 = D.50599 & D.50579;
              if (D.50600 != 0) goto <D.50601>; else goto <D.50602>;
              <D.50601>:
              D.50603 = &MEM[(void *)"InitializeArray" + 3B];
              D.50604 = *D.50603;
              D.50605 = (int) D.50604;
              D.50606 = __s2 + 3;
              D.50607 = *D.50606;
              D.50608 = (int) D.50607;
              __result = D.50605 - D.50608;
              <D.50602>:
              <D.50592>:
              <D.50582>:
            }
            D.27407 = __result;
          }
          iftmp.473 = -D.27407;
          goto <D.50609>;
          <D.50572>:
          D.50610 = cmethod->name;
          iftmp.473 = __builtin_strcmp (D.50610, "InitializeArray");
          <D.50609>:
          D.27408 = iftmp.473;
        }
        if (D.27408 != 0) goto <D.50568>; else goto <D.50611>;
        <D.50611>:
        {
          size_t __s1_len;
          size_t __s2_len;

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

            D.50615 = cmethod->klass;
            __s2 = D.50615->name;
            D.50616 = "RuntimeHelpers";
            D.50617 = MEM[(const unsigned char *)D.50616];
            D.50618 = (int) D.50617;
            D.50619 = *__s2;
            D.50620 = (int) D.50619;
            __result = D.50618 - D.50620;
            {
              D.50621 = __s2_len != 0;
              D.50622 = __result == 0;
              D.50623 = D.50621 & D.50622;
              if (D.50623 != 0) goto <D.50624>; else goto <D.50625>;
              <D.50624>:
              D.50626 = &MEM[(void *)"RuntimeHelpers" + 1B];
              D.50627 = *D.50626;
              D.50628 = (int) D.50627;
              D.50629 = __s2 + 1;
              D.50630 = *D.50629;
              D.50631 = (int) D.50630;
              __result = D.50628 - D.50631;
              D.50632 = __s2_len > 1;
              D.50622 = __result == 0;
              D.50633 = D.50632 & D.50622;
              if (D.50633 != 0) goto <D.50634>; else goto <D.50635>;
              <D.50634>:
              D.50636 = &MEM[(void *)"RuntimeHelpers" + 2B];
              D.50637 = *D.50636;
              D.50638 = (int) D.50637;
              D.50639 = __s2 + 2;
              D.50640 = *D.50639;
              D.50641 = (int) D.50640;
              __result = D.50638 - D.50641;
              D.50642 = __s2_len > 2;
              D.50622 = __result == 0;
              D.50643 = D.50642 & D.50622;
              if (D.50643 != 0) goto <D.50644>; else goto <D.50645>;
              <D.50644>:
              D.50646 = &MEM[(void *)"RuntimeHelpers" + 3B];
              D.50647 = *D.50646;
              D.50648 = (int) D.50647;
              D.50649 = __s2 + 3;
              D.50650 = *D.50649;
              D.50651 = (int) D.50650;
              __result = D.50648 - D.50651;
              <D.50645>:
              <D.50635>:
              <D.50625>:
            }
            D.27416 = __result;
          }
          iftmp.474 = -D.27416;
          goto <D.50652>;
          <D.50614>:
          D.50615 = cmethod->klass;
          D.50653 = D.50615->name;
          iftmp.474 = __builtin_strcmp (D.50653, "RuntimeHelpers");
          <D.50652>:
          D.27417 = iftmp.474;
        }
        if (D.27417 != 0) goto <D.50568>; else goto <D.50654>;
        <D.50654>:
        D.50615 = cmethod->klass;
        D.50655 = D.50615->image;
        D.50656 = mono_defaults.corlib;
        if (D.50655 != D.50656) goto <D.50568>; else goto <D.50569>;
        <D.50568>:
        D.50565 = 0B;
        return D.50565;
        <D.50569>:
        D.50657 = &klass->byval_arg;
        D.50658 = mono_type_get_underlying_type (D.50657);
        D.50659 = D.50658->type;
        D.50660 = (int) D.50659;
        switch (D.50660) <default: <D.27431>, case 2: <D.27418>, case 3: <D.27422>, case 4: <D.27419>, case 5: <D.27420>, case 6: <D.27423>, case 7: <D.27424>, case 8: <D.27425>, case 9: <D.27426>, case 10: <D.27429>, case 11: <D.27430>, case 12: <D.27427>, case 13: <D.27428>>
        <D.27418>:
        <D.27419>:
        <D.27420>:
        size = 1;
        goto <D.27421>;
        <D.27422>:
        <D.27423>:
        <D.27424>:
        size = 2;
        goto <D.27421>;
        <D.27425>:
        <D.27426>:
        <D.27427>:
        size = 4;
        goto <D.27421>;
        <D.27428>:
        <D.27429>:
        <D.27430>:
        size = 8;
        goto <D.27421>;
        <D.27431>:
        D.50565 = 0B;
        return D.50565;
        <D.27421>:
        size.475 = (unsigned int) size;
        D.50662 = size.475 * len;
        size = (int) D.50662;
        D.50663 = field->type;
        D.50664 = mono_type_size (D.50663, &dummy_align);
        if (D.50664 < size) goto <D.50665>; else goto <D.50666>;
        <D.50665>:
        D.50565 = 0B;
        return D.50565;
        <D.50666>:
        *out_size = size;
        D.50561 = method->klass;
        D.50562 = D.50561->image;
        D.50667 = BIT_FIELD_REF <*D.50562, 8, 224>;
        D.50668 = D.50667 & 8;
        if (D.50668 == 0) goto <D.50669>; else goto <D.50670>;
        <D.50669>:
        D.50671 = ip + 2;
        D.50672 = *D.50671;
        field_index = D.50672 & 16777215;
        D.50673 = field_index + 4294967295;
        D.50561 = method->klass;
        D.50562 = D.50561->image;
        mono_metadata_field_info (D.50562, D.50673, 0B, &rva, 0B);
        rva.476 = rva;
        D.50561 = method->klass;
        D.50562 = D.50561->image;
        data_ptr = mono_image_rva_map (D.50562, rva.476);
        D.50675 = aot != 0;
        D.50676 = data_ptr != 0B;
        D.50677 = D.50675 & D.50676;
        if (D.50677 != 0) goto <D.50678>; else goto <D.50679>;
        <D.50678>:
        rva.476 = rva;
        D.50680 = (long unsigned int) rva.476;
        D.50565 = (const char *) D.50680;
        return D.50565;
        <D.50679>:
        goto <D.50681>;
        <D.50670>:
        D.50675 = aot != 0;
        D.50682 = (long int) D.50675;
        D.50683 = __builtin_expect (D.50682, 0);
        if (D.50683 != 0) goto <D.50684>; else goto <D.50685>;
        <D.50684>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 6312, "!aot");
        <D.50685>:
        data_ptr = mono_field_get_data (field);
        <D.50681>:
        D.50565 = data_ptr;
        return D.50565;
      }
    finally
      {
        rva = {CLOBBER};
        dummy_class = {CLOBBER};
        dummy_align = {CLOBBER};
      }
  }
  <D.50560>:
  <D.50556>:
  <D.50552>:
  <D.50548>:
  D.50565 = 0B;
  return D.50565;
}


mini_emit_check_array_type (struct MonoCompile * cfg, struct MonoInst * obj, struct MonoClass * array_class)
{
  unsigned int D.50688;
  int D.50689;
  int D.50690;
  unsigned char D.50693;
  unsigned char D.50694;
  struct MonoMemPool * D.50697;
  long int D.50698;
  struct MonoInst * D.50699;
  int D.50700;
  int D.50701;
  const unsigned char * D.50702;
  struct MonoBasicBlock * D.50703;
  struct MonoInst * D.50704;
  long int D.50708;
  struct MonoInst * D.50709;
  int D.50710;
  int D.50711;
  long int D.50716;
  struct MonoInst * D.50717;
  int D.50718;
  int D.50719;
  unsigned char D.50720;
  unsigned int D.50724;
  unsigned int D.50725;
  unsigned int D.50728;
  long int D.50729;
  struct MonoInst * D.50730;
  int D.50731;
  int D.50732;
  unsigned char D.50736;
  unsigned char D.50737;
  unsigned int D.50740;
  long int D.50741;
  struct MonoInst * D.50742;
  guint16 iftmp.477;
  int D.50747;
  int D.50748;
  long int D.50752;
  struct MonoInst * D.50753;
  int D.50754;
  int D.50755;
  long int D.50760;
  struct MonoInst * D.50761;
  int D.50762;
  int D.50763;
  long int array_class.478;
  long int D.50771;
  struct MonoInst * D.50772;
  int D.50773;
  int D.50774;
  int D.50775;
  struct MonoDomain * D.50782;
  unsigned int D.50785;
  long int D.50786;
  struct MonoInst * D.50787;
  guint16 iftmp.479;
  int D.50792;
  int D.50793;
  void * iftmp.480;
  long int D.50801;
  struct MonoInst * D.50802;
  int D.50803;
  int D.50804;
  long int D.50811;
  struct MonoInst * D.50812;
  int D.50813;
  int D.50814;
  long int vtable.481;
  long int D.50819;
  struct MonoInst * D.50820;
  int D.50821;
  int D.50822;
  int vtable_reg;
  int context_used;

  D.50688 = alloc_preg (cfg);
  vtable_reg = (int) D.50688;
  context_used = mini_class_check_context_used (cfg, array_class);
  D.50689 = obj->dreg;
  save_cast_details (cfg, array_class, D.50689, 0, 0B);
  {
    struct MonoInst * inst;
    int __ins_flags;

    __ins_flags = 32;
    D.50690 = __ins_flags & 32;
    if (D.50690 != 0) goto <D.50691>; else goto <D.50692>;
    <D.50691>:
    D.50693 = BIT_FIELD_REF <*cfg, 8, 5632>;
    D.50694 = D.50693 & 64;
    if (D.50694 != 0) goto <D.50695>; else goto <D.50696>;
    <D.50695>:
    {
      struct MonoInst * inst;

      D.50697 = cfg->mempool;
      inst = mono_mempool_alloc (D.50697, 80);
      inst->data.op[1].const_val = 0;
      D.50698 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50698;
      inst->prev = 0B;
      D.50699 = inst->prev;
      inst->next = D.50699;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50700 = inst->sreg3;
      inst->sreg2 = D.50700;
      D.50701 = inst->sreg2;
      inst->sreg1 = D.50701;
      D.50702 = cfg->ip;
      inst->cil_code = D.50702;
      inst->dreg = -1;
      D.50689 = obj->dreg;
      inst->sreg1 = D.50689;
      inst->data.op[1].const_val = 0;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      if (D.50704 != 0B) goto <D.50705>; else goto <D.50706>;
      <D.50705>:
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      D.50704->next = inst;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      inst->prev = D.50704;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      goto <D.50707>;
      <D.50706>:
      D.50703 = cfg->cbb;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      D.50704 = D.50703->last_ins;
      D.50703->code = D.50704;
      <D.50707>:
    }
    {
      struct MonoInst * inst;

      D.50697 = cfg->mempool;
      inst = mono_mempool_alloc (D.50697, 80);
      inst->data.op[1].const_val = 0;
      D.50708 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50708;
      inst->prev = 0B;
      D.50709 = inst->prev;
      inst->next = D.50709;
      inst->opcode = 455;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50710 = inst->sreg3;
      inst->sreg2 = D.50710;
      D.50711 = inst->sreg2;
      inst->sreg1 = D.50711;
      D.50702 = cfg->ip;
      inst->cil_code = D.50702;
      inst->data.op[1].p = "NullReferenceException";
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      if (D.50704 != 0B) goto <D.50712>; else goto <D.50713>;
      <D.50712>:
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      D.50704->next = inst;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      inst->prev = D.50704;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      goto <D.50714>;
      <D.50713>:
      D.50703 = cfg->cbb;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      D.50704 = D.50703->last_ins;
      D.50703->code = D.50704;
      <D.50714>:
    }
    goto <D.50715>;
    <D.50696>:
    <D.50715>:
    <D.50692>:
    D.50697 = cfg->mempool;
    inst = mono_mempool_alloc (D.50697, 80);
    inst->data.op[1].const_val = 0;
    D.50716 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50716;
    inst->prev = 0B;
    D.50717 = inst->prev;
    inst->next = D.50717;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50718 = inst->sreg3;
    inst->sreg2 = D.50718;
    D.50719 = inst->sreg2;
    inst->sreg1 = D.50719;
    D.50702 = cfg->ip;
    inst->cil_code = D.50702;
    inst->dreg = vtable_reg;
    D.50689 = obj->dreg;
    inst->sreg1 = D.50689;
    inst->data.op[0].const_val = 0;
    inst->type = 1;
    D.50720 = (unsigned char) __ins_flags;
    inst->flags = D.50720;
    D.50703 = cfg->cbb;
    D.50704 = D.50703->last_ins;
    if (D.50704 != 0B) goto <D.50721>; else goto <D.50722>;
    <D.50721>:
    D.50703 = cfg->cbb;
    D.50704 = D.50703->last_ins;
    D.50704->next = inst;
    D.50703 = cfg->cbb;
    D.50704 = D.50703->last_ins;
    inst->prev = D.50704;
    D.50703 = cfg->cbb;
    D.50703->last_ins = inst;
    goto <D.50723>;
    <D.50722>:
    D.50703 = cfg->cbb;
    D.50703 = cfg->cbb;
    D.50703->last_ins = inst;
    D.50704 = D.50703->last_ins;
    D.50703->code = D.50704;
    <D.50723>:
  }
  D.50724 = cfg->opt;
  D.50725 = D.50724 & 512;
  if (D.50725 != 0) goto <D.50726>; else goto <D.50727>;
  <D.50726>:
  {
    int class_reg;

    D.50728 = alloc_preg (cfg);
    class_reg = (int) D.50728;
    {
      struct MonoInst * inst;

      D.50697 = cfg->mempool;
      inst = mono_mempool_alloc (D.50697, 80);
      inst->data.op[1].const_val = 0;
      D.50729 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50729;
      inst->prev = 0B;
      D.50730 = inst->prev;
      inst->next = D.50730;
      inst->opcode = 391;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50731 = inst->sreg3;
      inst->sreg2 = D.50731;
      D.50732 = inst->sreg2;
      inst->sreg1 = D.50732;
      D.50702 = cfg->ip;
      inst->cil_code = D.50702;
      inst->dreg = class_reg;
      inst->sreg1 = vtable_reg;
      inst->data.op[0].const_val = 0;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      if (D.50704 != 0B) goto <D.50733>; else goto <D.50734>;
      <D.50733>:
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      D.50704->next = inst;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      inst->prev = D.50704;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      goto <D.50735>;
      <D.50734>:
      D.50703 = cfg->cbb;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      D.50704 = D.50703->last_ins;
      D.50703->code = D.50704;
      <D.50735>:
    }
    D.50736 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.50737 = D.50736 & 64;
    if (D.50737 != 0) goto <D.50738>; else goto <D.50739>;
    <D.50738>:
    {
      int klass_reg;

      D.50740 = alloc_preg (cfg);
      klass_reg = (int) D.50740;
      {
        struct MonoInst * inst;

        D.50697 = cfg->mempool;
        inst = mono_mempool_alloc (D.50697, 80);
        inst->data.op[1].const_val = 0;
        D.50741 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.50741;
        inst->prev = 0B;
        D.50742 = inst->prev;
        inst->next = D.50742;
        D.50736 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.50737 = D.50736 & 64;
        if (D.50737 != 0) goto <D.50744>; else goto <D.50745>;
        <D.50744>:
        iftmp.477 = 736;
        goto <D.50746>;
        <D.50745>:
        iftmp.477 = 363;
        <D.50746>:
        inst->opcode = iftmp.477;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.50747 = inst->sreg3;
        inst->sreg2 = D.50747;
        D.50748 = inst->sreg2;
        inst->sreg1 = D.50748;
        D.50702 = cfg->ip;
        inst->cil_code = D.50702;
        inst->dreg = klass_reg;
        inst->data.op[0].p = array_class;
        inst->data.op[1].const_val = 11;
        D.50703 = cfg->cbb;
        D.50704 = D.50703->last_ins;
        if (D.50704 != 0B) goto <D.50749>; else goto <D.50750>;
        <D.50749>:
        D.50703 = cfg->cbb;
        D.50704 = D.50703->last_ins;
        D.50704->next = inst;
        D.50703 = cfg->cbb;
        D.50704 = D.50703->last_ins;
        inst->prev = D.50704;
        D.50703 = cfg->cbb;
        D.50703->last_ins = inst;
        goto <D.50751>;
        <D.50750>:
        D.50703 = cfg->cbb;
        D.50703 = cfg->cbb;
        D.50703->last_ins = inst;
        D.50704 = D.50703->last_ins;
        D.50703->code = D.50704;
        <D.50751>:
      }
      {
        struct MonoInst * inst;

        D.50697 = cfg->mempool;
        inst = mono_mempool_alloc (D.50697, 80);
        inst->data.op[1].const_val = 0;
        D.50752 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.50752;
        inst->prev = 0B;
        D.50753 = inst->prev;
        inst->next = D.50753;
        inst->opcode = 322;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.50754 = inst->sreg3;
        inst->sreg2 = D.50754;
        D.50755 = inst->sreg2;
        inst->sreg1 = D.50755;
        D.50702 = cfg->ip;
        inst->cil_code = D.50702;
        inst->dreg = -1;
        inst->sreg1 = class_reg;
        inst->sreg2 = klass_reg;
        D.50703 = cfg->cbb;
        D.50704 = D.50703->last_ins;
        if (D.50704 != 0B) goto <D.50756>; else goto <D.50757>;
        <D.50756>:
        D.50703 = cfg->cbb;
        D.50704 = D.50703->last_ins;
        D.50704->next = inst;
        D.50703 = cfg->cbb;
        D.50704 = D.50703->last_ins;
        inst->prev = D.50704;
        D.50703 = cfg->cbb;
        D.50703->last_ins = inst;
        goto <D.50758>;
        <D.50757>:
        D.50703 = cfg->cbb;
        D.50703 = cfg->cbb;
        D.50703->last_ins = inst;
        D.50704 = D.50703->last_ins;
        D.50703->code = D.50704;
        <D.50758>:
      }
    }
    goto <D.50759>;
    <D.50739>:
    {
      struct MonoInst * inst;

      D.50697 = cfg->mempool;
      inst = mono_mempool_alloc (D.50697, 80);
      inst->data.op[1].const_val = 0;
      D.50760 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50760;
      inst->prev = 0B;
      D.50761 = inst->prev;
      inst->next = D.50761;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50762 = inst->sreg3;
      inst->sreg2 = D.50762;
      D.50763 = inst->sreg2;
      inst->sreg1 = D.50763;
      D.50702 = cfg->ip;
      inst->cil_code = D.50702;
      inst->dreg = -1;
      inst->sreg1 = class_reg;
      array_class.478 = (long int) array_class;
      inst->data.op[1].const_val = array_class.478;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      if (D.50704 != 0B) goto <D.50765>; else goto <D.50766>;
      <D.50765>:
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      D.50704->next = inst;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      inst->prev = D.50704;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      goto <D.50767>;
      <D.50766>:
      D.50703 = cfg->cbb;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      D.50704 = D.50703->last_ins;
      D.50703->code = D.50704;
      <D.50767>:
    }
    <D.50759>:
  }
  goto <D.50768>;
  <D.50727>:
  if (context_used != 0) goto <D.50769>; else goto <D.50770>;
  <D.50769>:
  {
    struct MonoInst * vtable_ins;

    vtable_ins = emit_get_rgctx_klass (cfg, context_used, array_class, 2);
    {
      struct MonoInst * inst;

      D.50697 = cfg->mempool;
      inst = mono_mempool_alloc (D.50697, 80);
      inst->data.op[1].const_val = 0;
      D.50771 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50771;
      inst->prev = 0B;
      D.50772 = inst->prev;
      inst->next = D.50772;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50773 = inst->sreg3;
      inst->sreg2 = D.50773;
      D.50774 = inst->sreg2;
      inst->sreg1 = D.50774;
      D.50702 = cfg->ip;
      inst->cil_code = D.50702;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      D.50775 = vtable_ins->dreg;
      inst->sreg2 = D.50775;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      if (D.50704 != 0B) goto <D.50776>; else goto <D.50777>;
      <D.50776>:
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      D.50704->next = inst;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      inst->prev = D.50704;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      goto <D.50778>;
      <D.50777>:
      D.50703 = cfg->cbb;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      D.50704 = D.50703->last_ins;
      D.50703->code = D.50704;
      <D.50778>:
    }
  }
  goto <D.50779>;
  <D.50770>:
  D.50736 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.50737 = D.50736 & 64;
  if (D.50737 != 0) goto <D.50780>; else goto <D.50781>;
  <D.50780>:
  {
    int vt_reg;
    struct MonoVTable * vtable;

    D.50782 = cfg->domain;
    vtable = mono_class_vtable (D.50782, array_class);
    if (vtable == 0B) goto <D.50783>; else goto <D.50784>;
    <D.50783>:
    return;
    <D.50784>:
    D.50785 = alloc_preg (cfg);
    vt_reg = (int) D.50785;
    {
      struct MonoInst * inst;

      D.50697 = cfg->mempool;
      inst = mono_mempool_alloc (D.50697, 80);
      inst->data.op[1].const_val = 0;
      D.50786 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50786;
      inst->prev = 0B;
      D.50787 = inst->prev;
      inst->next = D.50787;
      D.50736 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.50737 = D.50736 & 64;
      if (D.50737 != 0) goto <D.50789>; else goto <D.50790>;
      <D.50789>:
      iftmp.479 = 736;
      goto <D.50791>;
      <D.50790>:
      iftmp.479 = 363;
      <D.50791>:
      inst->opcode = iftmp.479;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50792 = inst->sreg3;
      inst->sreg2 = D.50792;
      D.50793 = inst->sreg2;
      inst->sreg1 = D.50793;
      D.50702 = cfg->ip;
      inst->cil_code = D.50702;
      inst->dreg = vt_reg;
      D.50736 = BIT_FIELD_REF <*cfg, 8, 5600>;
      D.50737 = D.50736 & 64;
      if (D.50737 != 0) goto <D.50795>; else goto <D.50796>;
      <D.50795>:
      iftmp.480 = vtable->klass;
      goto <D.50797>;
      <D.50796>:
      iftmp.480 = vtable;
      <D.50797>:
      inst->data.op[0].p = iftmp.480;
      inst->data.op[1].const_val = 14;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      if (D.50704 != 0B) goto <D.50798>; else goto <D.50799>;
      <D.50798>:
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      D.50704->next = inst;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      inst->prev = D.50704;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      goto <D.50800>;
      <D.50799>:
      D.50703 = cfg->cbb;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      D.50704 = D.50703->last_ins;
      D.50703->code = D.50704;
      <D.50800>:
    }
    {
      struct MonoInst * inst;

      D.50697 = cfg->mempool;
      inst = mono_mempool_alloc (D.50697, 80);
      inst->data.op[1].const_val = 0;
      D.50801 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50801;
      inst->prev = 0B;
      D.50802 = inst->prev;
      inst->next = D.50802;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50803 = inst->sreg3;
      inst->sreg2 = D.50803;
      D.50804 = inst->sreg2;
      inst->sreg1 = D.50804;
      D.50702 = cfg->ip;
      inst->cil_code = D.50702;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      inst->sreg2 = vt_reg;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      if (D.50704 != 0B) goto <D.50805>; else goto <D.50806>;
      <D.50805>:
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      D.50704->next = inst;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      inst->prev = D.50704;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      goto <D.50807>;
      <D.50806>:
      D.50703 = cfg->cbb;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      D.50704 = D.50703->last_ins;
      D.50703->code = D.50704;
      <D.50807>:
    }
  }
  goto <D.50808>;
  <D.50781>:
  {
    struct MonoVTable * vtable;

    D.50782 = cfg->domain;
    vtable = mono_class_vtable (D.50782, array_class);
    if (vtable == 0B) goto <D.50809>; else goto <D.50810>;
    <D.50809>:
    return;
    <D.50810>:
    {
      struct MonoInst * inst;

      D.50697 = cfg->mempool;
      inst = mono_mempool_alloc (D.50697, 80);
      inst->data.op[1].const_val = 0;
      D.50811 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50811;
      inst->prev = 0B;
      D.50812 = inst->prev;
      inst->next = D.50812;
      inst->opcode = 323;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50813 = inst->sreg3;
      inst->sreg2 = D.50813;
      D.50814 = inst->sreg2;
      inst->sreg1 = D.50814;
      D.50702 = cfg->ip;
      inst->cil_code = D.50702;
      inst->dreg = -1;
      inst->sreg1 = vtable_reg;
      vtable.481 = (long int) vtable;
      inst->data.op[1].const_val = vtable.481;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      if (D.50704 != 0B) goto <D.50816>; else goto <D.50817>;
      <D.50816>:
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      D.50704->next = inst;
      D.50703 = cfg->cbb;
      D.50704 = D.50703->last_ins;
      inst->prev = D.50704;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      goto <D.50818>;
      <D.50817>:
      D.50703 = cfg->cbb;
      D.50703 = cfg->cbb;
      D.50703->last_ins = inst;
      D.50704 = D.50703->last_ins;
      D.50703->code = D.50704;
      <D.50818>:
    }
  }
  <D.50808>:
  <D.50779>:
  <D.50768>:
  {
    struct MonoInst * inst;

    D.50697 = cfg->mempool;
    inst = mono_mempool_alloc (D.50697, 80);
    inst->data.op[1].const_val = 0;
    D.50819 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50819;
    inst->prev = 0B;
    D.50820 = inst->prev;
    inst->next = D.50820;
    inst->opcode = 460;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50821 = inst->sreg3;
    inst->sreg2 = D.50821;
    D.50822 = inst->sreg2;
    inst->sreg1 = D.50822;
    D.50702 = cfg->ip;
    inst->cil_code = D.50702;
    inst->data.op[1].p = "ArrayTypeMismatchException";
    D.50703 = cfg->cbb;
    D.50704 = D.50703->last_ins;
    if (D.50704 != 0B) goto <D.50823>; else goto <D.50824>;
    <D.50823>:
    D.50703 = cfg->cbb;
    D.50704 = D.50703->last_ins;
    D.50704->next = inst;
    D.50703 = cfg->cbb;
    D.50704 = D.50703->last_ins;
    inst->prev = D.50704;
    D.50703 = cfg->cbb;
    D.50703->last_ins = inst;
    goto <D.50825>;
    <D.50824>:
    D.50703 = cfg->cbb;
    D.50703 = cfg->cbb;
    D.50703->last_ins = inst;
    D.50704 = D.50703->last_ins;
    D.50703->code = D.50704;
    <D.50825>:
  }
  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.50827;
  int D.50831;
  unsigned int D.50832;
  unsigned int D.50836;
  struct MonoMemPool * D.50837;
  long int D.50838;
  struct MonoInst * D.50839;
  int D.50840;
  int D.50841;
  const unsigned char * D.50842;
  struct MonoBasicBlock * D.50843;
  struct MonoInst * D.50844;
  unsigned int D.50850;
  unsigned int D.50851;
  unsigned int D.50854;
  unsigned char D.50857;
  unsigned char D.50858;
  long int D.50861;
  struct MonoInst * D.50862;
  int D.50863;
  int D.50864;
  long int D.50868;
  struct MonoInst * D.50869;
  int D.50870;
  int D.50871;
  unsigned int D.50878;
  int D.50881;
  long int D.50886;
  struct MonoInst * D.50887;
  int D.50888;
  int D.50889;
  long int D.50893;
  struct MonoInst * D.50894;
  int D.50895;
  int D.50896;
  long int D.50901;
  struct MonoInst * D.50902;
  int D.50903;
  int D.50904;
  unsigned char D.50905;
  int D.50910;
  long int D.50915;
  struct MonoInst * D.50916;
  int D.50917;
  int D.50918;
  long int D.50922;
  struct MonoInst * D.50923;
  int D.50924;
  int D.50925;
  long int D.50930;
  struct MonoInst * D.50931;
  int D.50932;
  int D.50933;
  unsigned char D.50934;
  long int D.50938;
  struct MonoInst * D.50939;
  int D.50940;
  int D.50941;
  long int D.50945;
  struct MonoInst * D.50946;
  int D.50947;
  int D.50948;
  long int D.50953;
  struct MonoInst * D.50954;
  int D.50955;
  int D.50956;
  long int D.50960;
  struct MonoInst * D.50961;
  int D.50962;
  int D.50963;
  long int D.50968;
  struct MonoInst * D.50969;
  int D.50970;
  int D.50971;
  unsigned char D.50972;
  unsigned char D.50973;
  unsigned int D.50977;
  unsigned int D.50978;
  unsigned int D.50981;
  _Bool D.50982;
  _Bool D.50983;
  _Bool D.50984;
  long int D.50986;
  struct MonoInst * D.50987;
  int D.50988;
  int D.50989;
  unsigned int D.50990;
  int D.50991;
  int D.50992;
  struct MonoClass * D.50996;
  struct MonoInst * D.50997;
  unsigned int D.50998;
  struct MonoGenericSharingContext * D.51001;
  _Bool D.51002;
  long int D.51003;
  long int D.51004;
  _Bool D.51007;
  long int D.51008;
  long int D.51009;
  struct MonoType * D.51012;
  long int D.51013;
  struct MonoInst * D.51014;
  int D.51015;
  int D.51016;
  int D.51017;
  long int D.51022;
  struct MonoInst * D.51023;
  int D.51024;
  int D.51025;
  long int D.51026;
  long int D.51030;
  struct MonoInst * D.51031;
  int D.51032;
  int D.51033;
  struct MonoClass * D.51037;
  struct MonoInst * ins;
  guint32 size;
  int mult_reg;
  int add_reg;
  int array_reg;
  int index_reg;
  int index2_reg;
  int context_used;

  D.50827 = mini_is_gsharedvt_variable_klass (cfg, klass);
  if (D.50827 != 0) goto <D.50828>; else goto <D.50829>;
  <D.50828>:
  size = 4294967295;
  goto <D.50830>;
  <D.50829>:
  mono_class_init (klass);
  D.50831 = mono_class_array_element_size (klass);
  size = (guint32) D.50831;
  <D.50830>:
  D.50832 = alloc_preg (cfg);
  mult_reg = (int) D.50832;
  array_reg = arr->dreg;
  index_reg = index->dreg;
  if (0 != 0) goto <D.50833>; else goto <D.50834>;
  <D.50833>:
  index2_reg = index_reg;
  goto <D.50835>;
  <D.50834>:
  D.50836 = alloc_preg (cfg);
  index2_reg = (int) D.50836;
  {
    struct MonoInst * inst;

    D.50837 = cfg->mempool;
    inst = mono_mempool_alloc (D.50837, 80);
    inst->data.op[1].const_val = 0;
    D.50838 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50838;
    inst->prev = 0B;
    D.50839 = inst->prev;
    inst->next = D.50839;
    inst->opcode = 766;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50840 = inst->sreg3;
    inst->sreg2 = D.50840;
    D.50841 = inst->sreg2;
    inst->sreg1 = D.50841;
    D.50842 = cfg->ip;
    inst->cil_code = D.50842;
    inst->dreg = index2_reg;
    inst->sreg1 = index_reg;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    if (D.50844 != 0B) goto <D.50845>; else goto <D.50846>;
    <D.50845>:
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    D.50844->next = inst;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    inst->prev = D.50844;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    goto <D.50847>;
    <D.50846>:
    D.50843 = cfg->cbb;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    D.50844 = D.50843->last_ins;
    D.50843->code = D.50844;
    <D.50847>:
  }
  <D.50835>:
  if (bcheck != 0) goto <D.50848>; else goto <D.50849>;
  <D.50848>:
  D.50850 = cfg->opt;
  D.50851 = D.50850 & 134217728;
  if (D.50851 == 0) goto <D.50852>; else goto <D.50853>;
  <D.50852>:
  D.50850 = cfg->opt;
  D.50854 = D.50850 & 262144;
  if (D.50854 == 0) goto <D.50855>; else goto <D.50856>;
  <D.50855>:
  D.50857 = BIT_FIELD_REF <*cfg, 8, 5632>;
  D.50858 = D.50857 & 64;
  if (D.50858 != 0) goto <D.50859>; else goto <D.50860>;
  <D.50859>:
  {
    struct MonoInst * inst;

    D.50837 = cfg->mempool;
    inst = mono_mempool_alloc (D.50837, 80);
    inst->data.op[1].const_val = 0;
    D.50861 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50861;
    inst->prev = 0B;
    D.50862 = inst->prev;
    inst->next = D.50862;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50863 = inst->sreg3;
    inst->sreg2 = D.50863;
    D.50864 = inst->sreg2;
    inst->sreg1 = D.50864;
    D.50842 = cfg->ip;
    inst->cil_code = D.50842;
    inst->dreg = -1;
    inst->sreg1 = array_reg;
    inst->data.op[1].const_val = 0;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    if (D.50844 != 0B) goto <D.50865>; else goto <D.50866>;
    <D.50865>:
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    D.50844->next = inst;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    inst->prev = D.50844;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    goto <D.50867>;
    <D.50866>:
    D.50843 = cfg->cbb;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    D.50844 = D.50843->last_ins;
    D.50843->code = D.50844;
    <D.50867>:
  }
  {
    struct MonoInst * inst;

    D.50837 = cfg->mempool;
    inst = mono_mempool_alloc (D.50837, 80);
    inst->data.op[1].const_val = 0;
    D.50868 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50868;
    inst->prev = 0B;
    D.50869 = inst->prev;
    inst->next = D.50869;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50870 = inst->sreg3;
    inst->sreg2 = D.50870;
    D.50871 = inst->sreg2;
    inst->sreg1 = D.50871;
    D.50842 = cfg->ip;
    inst->cil_code = D.50842;
    inst->data.op[1].p = "NullReferenceException";
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    if (D.50844 != 0B) goto <D.50872>; else goto <D.50873>;
    <D.50872>:
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    D.50844->next = inst;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    inst->prev = D.50844;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    goto <D.50874>;
    <D.50873>:
    D.50843 = cfg->cbb;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    D.50844 = D.50843->last_ins;
    D.50843->code = D.50844;
    <D.50874>:
  }
  goto <D.50875>;
  <D.50860>:
  <D.50875>:
  if (0 != 0) goto <D.50876>; else goto <D.50877>;
  <D.50876>:
  {
    int _length_reg;

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

      __ins_flags = 32;
      D.50881 = __ins_flags & 32;
      if (D.50881 != 0) goto <D.50882>; else goto <D.50883>;
      <D.50882>:
      D.50857 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.50858 = D.50857 & 64;
      if (D.50858 != 0) goto <D.50884>; else goto <D.50885>;
      <D.50884>:
      {
        struct MonoInst * inst;

        D.50837 = cfg->mempool;
        inst = mono_mempool_alloc (D.50837, 80);
        inst->data.op[1].const_val = 0;
        D.50886 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.50886;
        inst->prev = 0B;
        D.50887 = inst->prev;
        inst->next = D.50887;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.50888 = inst->sreg3;
        inst->sreg2 = D.50888;
        D.50889 = inst->sreg2;
        inst->sreg1 = D.50889;
        D.50842 = cfg->ip;
        inst->cil_code = D.50842;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        if (D.50844 != 0B) goto <D.50890>; else goto <D.50891>;
        <D.50890>:
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        D.50844->next = inst;
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        inst->prev = D.50844;
        D.50843 = cfg->cbb;
        D.50843->last_ins = inst;
        goto <D.50892>;
        <D.50891>:
        D.50843 = cfg->cbb;
        D.50843 = cfg->cbb;
        D.50843->last_ins = inst;
        D.50844 = D.50843->last_ins;
        D.50843->code = D.50844;
        <D.50892>:
      }
      {
        struct MonoInst * inst;

        D.50837 = cfg->mempool;
        inst = mono_mempool_alloc (D.50837, 80);
        inst->data.op[1].const_val = 0;
        D.50893 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.50893;
        inst->prev = 0B;
        D.50894 = inst->prev;
        inst->next = D.50894;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.50895 = inst->sreg3;
        inst->sreg2 = D.50895;
        D.50896 = inst->sreg2;
        inst->sreg1 = D.50896;
        D.50842 = cfg->ip;
        inst->cil_code = D.50842;
        inst->data.op[1].p = "NullReferenceException";
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        if (D.50844 != 0B) goto <D.50897>; else goto <D.50898>;
        <D.50897>:
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        D.50844->next = inst;
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        inst->prev = D.50844;
        D.50843 = cfg->cbb;
        D.50843->last_ins = inst;
        goto <D.50899>;
        <D.50898>:
        D.50843 = cfg->cbb;
        D.50843 = cfg->cbb;
        D.50843->last_ins = inst;
        D.50844 = D.50843->last_ins;
        D.50843->code = D.50844;
        <D.50899>:
      }
      goto <D.50900>;
      <D.50885>:
      <D.50900>:
      <D.50883>:
      D.50837 = cfg->mempool;
      inst = mono_mempool_alloc (D.50837, 80);
      inst->data.op[1].const_val = 0;
      D.50901 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50901;
      inst->prev = 0B;
      D.50902 = inst->prev;
      inst->next = D.50902;
      inst->opcode = 396;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50903 = inst->sreg3;
      inst->sreg2 = D.50903;
      D.50904 = inst->sreg2;
      inst->sreg1 = D.50904;
      D.50842 = cfg->ip;
      inst->cil_code = D.50842;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 24;
      inst->type = 1;
      D.50905 = (unsigned char) __ins_flags;
      inst->flags = D.50905;
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      if (D.50844 != 0B) goto <D.50906>; else goto <D.50907>;
      <D.50906>:
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      D.50844->next = inst;
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      inst->prev = D.50844;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      goto <D.50908>;
      <D.50907>:
      D.50843 = cfg->cbb;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      D.50844 = D.50843->last_ins;
      D.50843->code = D.50844;
      <D.50908>:
    }
    goto <D.50909>;
    <D.50880>:
    {
      struct MonoInst * inst;
      int __ins_flags;

      __ins_flags = 64;
      D.50910 = __ins_flags & 32;
      if (D.50910 != 0) goto <D.50911>; else goto <D.50912>;
      <D.50911>:
      D.50857 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.50858 = D.50857 & 64;
      if (D.50858 != 0) goto <D.50913>; else goto <D.50914>;
      <D.50913>:
      {
        struct MonoInst * inst;

        D.50837 = cfg->mempool;
        inst = mono_mempool_alloc (D.50837, 80);
        inst->data.op[1].const_val = 0;
        D.50915 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.50915;
        inst->prev = 0B;
        D.50916 = inst->prev;
        inst->next = D.50916;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.50917 = inst->sreg3;
        inst->sreg2 = D.50917;
        D.50918 = inst->sreg2;
        inst->sreg1 = D.50918;
        D.50842 = cfg->ip;
        inst->cil_code = D.50842;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        if (D.50844 != 0B) goto <D.50919>; else goto <D.50920>;
        <D.50919>:
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        D.50844->next = inst;
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        inst->prev = D.50844;
        D.50843 = cfg->cbb;
        D.50843->last_ins = inst;
        goto <D.50921>;
        <D.50920>:
        D.50843 = cfg->cbb;
        D.50843 = cfg->cbb;
        D.50843->last_ins = inst;
        D.50844 = D.50843->last_ins;
        D.50843->code = D.50844;
        <D.50921>:
      }
      {
        struct MonoInst * inst;

        D.50837 = cfg->mempool;
        inst = mono_mempool_alloc (D.50837, 80);
        inst->data.op[1].const_val = 0;
        D.50922 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.50922;
        inst->prev = 0B;
        D.50923 = inst->prev;
        inst->next = D.50923;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.50924 = inst->sreg3;
        inst->sreg2 = D.50924;
        D.50925 = inst->sreg2;
        inst->sreg1 = D.50925;
        D.50842 = cfg->ip;
        inst->cil_code = D.50842;
        inst->data.op[1].p = "NullReferenceException";
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        if (D.50844 != 0B) goto <D.50926>; else goto <D.50927>;
        <D.50926>:
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        D.50844->next = inst;
        D.50843 = cfg->cbb;
        D.50844 = D.50843->last_ins;
        inst->prev = D.50844;
        D.50843 = cfg->cbb;
        D.50843->last_ins = inst;
        goto <D.50928>;
        <D.50927>:
        D.50843 = cfg->cbb;
        D.50843 = cfg->cbb;
        D.50843->last_ins = inst;
        D.50844 = D.50843->last_ins;
        D.50843->code = D.50844;
        <D.50928>:
      }
      goto <D.50929>;
      <D.50914>:
      <D.50929>:
      <D.50912>:
      D.50837 = cfg->mempool;
      inst = mono_mempool_alloc (D.50837, 80);
      inst->data.op[1].const_val = 0;
      D.50930 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50930;
      inst->prev = 0B;
      D.50931 = inst->prev;
      inst->next = D.50931;
      inst->opcode = 396;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50932 = inst->sreg3;
      inst->sreg2 = D.50932;
      D.50933 = inst->sreg2;
      inst->sreg1 = D.50933;
      D.50842 = cfg->ip;
      inst->cil_code = D.50842;
      inst->dreg = _length_reg;
      inst->sreg1 = array_reg;
      inst->data.op[0].const_val = 24;
      inst->type = 1;
      D.50934 = (unsigned char) __ins_flags;
      inst->flags = D.50934;
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      if (D.50844 != 0B) goto <D.50935>; else goto <D.50936>;
      <D.50935>:
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      D.50844->next = inst;
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      inst->prev = D.50844;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      goto <D.50937>;
      <D.50936>:
      D.50843 = cfg->cbb;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      D.50844 = D.50843->last_ins;
      D.50843->code = D.50844;
      <D.50937>:
    }
    <D.50909>:
    {
      struct MonoInst * inst;

      D.50837 = cfg->mempool;
      inst = mono_mempool_alloc (D.50837, 80);
      inst->data.op[1].const_val = 0;
      D.50938 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50938;
      inst->prev = 0B;
      D.50939 = inst->prev;
      inst->next = D.50939;
      inst->opcode = 322;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50940 = inst->sreg3;
      inst->sreg2 = D.50940;
      D.50941 = inst->sreg2;
      inst->sreg1 = D.50941;
      D.50842 = cfg->ip;
      inst->cil_code = D.50842;
      inst->dreg = -1;
      inst->sreg1 = _length_reg;
      inst->sreg2 = index2_reg;
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      if (D.50844 != 0B) goto <D.50942>; else goto <D.50943>;
      <D.50942>:
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      D.50844->next = inst;
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      inst->prev = D.50844;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      goto <D.50944>;
      <D.50943>:
      D.50843 = cfg->cbb;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      D.50844 = D.50843->last_ins;
      D.50843->code = D.50844;
      <D.50944>:
    }
    {
      struct MonoInst * inst;

      D.50837 = cfg->mempool;
      inst = mono_mempool_alloc (D.50837, 80);
      inst->data.op[1].const_val = 0;
      D.50945 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50945;
      inst->prev = 0B;
      D.50946 = inst->prev;
      inst->next = D.50946;
      inst->opcode = 463;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50947 = inst->sreg3;
      inst->sreg2 = D.50947;
      D.50948 = inst->sreg2;
      inst->sreg1 = D.50948;
      D.50842 = cfg->ip;
      inst->cil_code = D.50842;
      inst->data.op[1].p = "IndexOutOfRangeException";
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      if (D.50844 != 0B) goto <D.50949>; else goto <D.50950>;
      <D.50949>:
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      D.50844->next = inst;
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      inst->prev = D.50844;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      goto <D.50951>;
      <D.50950>:
      D.50843 = cfg->cbb;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      D.50844 = D.50843->last_ins;
      D.50843->code = D.50844;
      <D.50951>:
    }
  }
  goto <D.50952>;
  <D.50877>:
  {
    struct MonoInst * inst;

    D.50837 = cfg->mempool;
    inst = mono_mempool_alloc (D.50837, 80);
    inst->data.op[1].const_val = 0;
    D.50953 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.50953;
    inst->prev = 0B;
    D.50954 = inst->prev;
    inst->next = D.50954;
    inst->opcode = 1049;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.50955 = inst->sreg3;
    inst->sreg2 = D.50955;
    D.50956 = inst->sreg2;
    inst->sreg1 = D.50956;
    D.50842 = cfg->ip;
    inst->cil_code = D.50842;
    inst->sreg1 = array_reg;
    inst->data.op[0].const_val = 24;
    inst->sreg2 = index2_reg;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    if (D.50844 != 0B) goto <D.50957>; else goto <D.50958>;
    <D.50957>:
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    D.50844->next = inst;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    inst->prev = D.50844;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    goto <D.50959>;
    <D.50958>:
    D.50843 = cfg->cbb;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    D.50844 = D.50843->last_ins;
    D.50843->code = D.50844;
    <D.50959>:
    {
      struct MonoInst * inst;

      D.50837 = cfg->mempool;
      inst = mono_mempool_alloc (D.50837, 80);
      inst->data.op[1].const_val = 0;
      D.50960 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.50960;
      inst->prev = 0B;
      D.50961 = inst->prev;
      inst->next = D.50961;
      inst->opcode = 463;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.50962 = inst->sreg3;
      inst->sreg2 = D.50962;
      D.50963 = inst->sreg2;
      inst->sreg1 = D.50963;
      D.50842 = cfg->ip;
      inst->cil_code = D.50842;
      inst->data.op[1].p = "IndexOutOfRangeException";
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      if (D.50844 != 0B) goto <D.50964>; else goto <D.50965>;
      <D.50964>:
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      D.50844->next = inst;
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      inst->prev = D.50844;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      goto <D.50966>;
      <D.50965>:
      D.50843 = cfg->cbb;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      D.50844 = D.50843->last_ins;
      D.50843->code = D.50844;
      <D.50966>:
    }
  }
  <D.50952>:
  goto <D.50967>;
  <D.50856>:
  {
    struct MonoInst * ins;

    D.50837 = cfg->mempool;
    ins = mono_mempool_alloc (D.50837, 80);
    ins->data.op[1].const_val = 0;
    D.50968 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.50968;
    ins->prev = 0B;
    D.50969 = ins->prev;
    ins->next = D.50969;
    ins->opcode = 788;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.50970 = ins->sreg3;
    ins->sreg2 = D.50970;
    D.50971 = ins->sreg2;
    ins->sreg1 = D.50971;
    D.50842 = cfg->ip;
    ins->cil_code = D.50842;
    ins->sreg1 = array_reg;
    ins->sreg2 = index2_reg;
    ins->data.op[1].const_val = 24;
    D.50972 = ins->flags;
    D.50973 = D.50972 | 32;
    ins->flags = D.50973;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    if (D.50844 != 0B) goto <D.50974>; else goto <D.50975>;
    <D.50974>:
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    D.50844->next = ins;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    ins->prev = D.50844;
    D.50843 = cfg->cbb;
    D.50843->last_ins = ins;
    goto <D.50976>;
    <D.50975>:
    D.50843 = cfg->cbb;
    D.50843 = cfg->cbb;
    D.50843->last_ins = ins;
    D.50844 = D.50843->last_ins;
    D.50843->code = D.50844;
    <D.50976>:
    D.50977 = cfg->flags;
    D.50978 = D.50977 | 256;
    cfg->flags = D.50978;
    D.50843 = cfg->cbb;
    D.50843->has_array_access = 1;
  }
  <D.50967>:
  <D.50853>:
  <D.50849>:
  D.50981 = size + 4294967295;
  D.50982 = D.50981 <= 1;
  D.50983 = size == 4;
  D.50984 = D.50982 | D.50983;
  if (D.50984 != 0) goto <D.50979>; else goto <D.50985>;
  <D.50985>:
  if (size == 8) goto <D.50979>; else goto <D.50980>;
  <D.50979>:
  {
    static const int fast_log2[9] = {1, 0, 1, -1, 2, -1, -1, -1, 3};

    D.50837 = cfg->mempool;
    ins = mono_mempool_alloc (D.50837, 80);
    ins->data.op[1].const_val = 0;
    D.50986 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.50986;
    ins->prev = 0B;
    D.50987 = ins->prev;
    ins->next = D.50987;
    ins->opcode = 1037;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.50988 = ins->sreg3;
    ins->sreg2 = D.50988;
    D.50989 = ins->sreg2;
    ins->sreg1 = D.50989;
    D.50842 = cfg->ip;
    ins->cil_code = D.50842;
    D.50990 = alloc_ireg_mp (cfg);
    D.50991 = (int) D.50990;
    ins->dreg = D.50991;
    ins->sreg1 = array_reg;
    ins->sreg2 = index2_reg;
    ins->data.op[1].const_val = 32;
    D.50992 = fast_log2[size];
    ins->backend.shift_amount = D.50992;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    if (D.50844 != 0B) goto <D.50993>; else goto <D.50994>;
    <D.50993>:
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    D.50844->next = ins;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    ins->prev = D.50844;
    D.50843 = cfg->cbb;
    D.50843->last_ins = ins;
    goto <D.50995>;
    <D.50994>:
    D.50843 = cfg->cbb;
    D.50843 = cfg->cbb;
    D.50843->last_ins = ins;
    D.50844 = D.50843->last_ins;
    D.50843->code = D.50844;
    <D.50995>:
    D.50996 = mono_class_get_element_class (klass);
    ins->klass = D.50996;
    ins->type = 5;
    D.50997 = ins;
    return D.50997;
  }
  <D.50980>:
  D.50998 = alloc_ireg_mp (cfg);
  add_reg = (int) D.50998;
  if (size == 4294967295) goto <D.50999>; else goto <D.51000>;
  <D.50999>:
  {
    struct MonoInst * rgctx_ins;

    D.51001 = cfg->generic_sharing_context;
    D.51002 = D.51001 == 0B;
    D.51003 = (long int) D.51002;
    D.51004 = __builtin_expect (D.51003, 0);
    if (D.51004 != 0) goto <D.51005>; else goto <D.51006>;
    <D.51005>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4718, "cfg->generic_sharing_context");
    <D.51006>:
    context_used = mini_class_check_context_used (cfg, klass);
    D.51007 = context_used == 0;
    D.51008 = (long int) D.51007;
    D.51009 = __builtin_expect (D.51008, 0);
    if (D.51009 != 0) goto <D.51010>; else goto <D.51011>;
    <D.51010>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4720, "context_used");
    <D.51011>:
    D.51012 = &klass->byval_arg;
    rgctx_ins = emit_get_gsharedvt_info (cfg, D.51012, 13);
    {
      struct MonoInst * inst;

      D.50837 = cfg->mempool;
      inst = mono_mempool_alloc (D.50837, 80);
      inst->data.op[1].const_val = 0;
      D.51013 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.51013;
      inst->prev = 0B;
      D.51014 = inst->prev;
      inst->next = D.51014;
      inst->opcode = 571;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.51015 = inst->sreg3;
      inst->sreg2 = D.51015;
      D.51016 = inst->sreg2;
      inst->sreg1 = D.51016;
      D.50842 = cfg->ip;
      inst->cil_code = D.50842;
      inst->dreg = mult_reg;
      inst->sreg1 = index2_reg;
      D.51017 = rgctx_ins->dreg;
      inst->sreg2 = D.51017;
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      if (D.50844 != 0B) goto <D.51018>; else goto <D.51019>;
      <D.51018>:
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      D.50844->next = inst;
      D.50843 = cfg->cbb;
      D.50844 = D.50843->last_ins;
      inst->prev = D.50844;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      goto <D.51020>;
      <D.51019>:
      D.50843 = cfg->cbb;
      D.50843 = cfg->cbb;
      D.50843->last_ins = inst;
      D.50844 = D.50843->last_ins;
      D.50843->code = D.50844;
      <D.51020>:
    }
  }
  goto <D.51021>;
  <D.51000>:
  {
    struct MonoInst * inst;

    D.50837 = cfg->mempool;
    inst = mono_mempool_alloc (D.50837, 80);
    inst->data.op[1].const_val = 0;
    D.51022 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51022;
    inst->prev = 0B;
    D.51023 = inst->prev;
    inst->next = D.51023;
    inst->opcode = 435;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51024 = inst->sreg3;
    inst->sreg2 = D.51024;
    D.51025 = inst->sreg2;
    inst->sreg1 = D.51025;
    D.50842 = cfg->ip;
    inst->cil_code = D.50842;
    inst->dreg = mult_reg;
    inst->sreg1 = index2_reg;
    D.51026 = (long int) size;
    inst->data.op[1].const_val = D.51026;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    if (D.50844 != 0B) goto <D.51027>; else goto <D.51028>;
    <D.51027>:
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    D.50844->next = inst;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    inst->prev = D.50844;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    goto <D.51029>;
    <D.51028>:
    D.50843 = cfg->cbb;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    D.50844 = D.50843->last_ins;
    D.50843->code = D.50844;
    <D.51029>:
  }
  <D.51021>:
  {
    struct MonoInst * inst;

    D.50837 = cfg->mempool;
    inst = mono_mempool_alloc (D.50837, 80);
    inst->data.op[1].const_val = 0;
    D.51030 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51030;
    inst->prev = 0B;
    D.51031 = inst->prev;
    inst->next = D.51031;
    inst->opcode = 483;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51032 = inst->sreg3;
    inst->sreg2 = D.51032;
    D.51033 = inst->sreg2;
    inst->sreg1 = D.51033;
    D.50842 = cfg->ip;
    inst->cil_code = D.50842;
    inst->dreg = add_reg;
    inst->sreg1 = array_reg;
    inst->sreg2 = mult_reg;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    if (D.50844 != 0B) goto <D.51034>; else goto <D.51035>;
    <D.51034>:
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    D.50844->next = inst;
    D.50843 = cfg->cbb;
    D.50844 = D.50843->last_ins;
    inst->prev = D.50844;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    goto <D.51036>;
    <D.51035>:
    D.50843 = cfg->cbb;
    D.50843 = cfg->cbb;
    D.50843->last_ins = inst;
    D.50844 = D.50843->last_ins;
    D.50843->code = D.50844;
    <D.51036>:
  }
  D.50837 = cfg->mempool;
  ins = mono_mempool_alloc (D.50837, 80);
  ins->data.op[1].const_val = 0;
  D.50986 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.50986;
  ins->prev = 0B;
  D.50987 = ins->prev;
  ins->next = D.50987;
  ins->opcode = 542;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.50988 = ins->sreg3;
  ins->sreg2 = D.50988;
  D.50989 = ins->sreg2;
  ins->sreg1 = D.50989;
  D.50842 = cfg->ip;
  ins->cil_code = D.50842;
  ins->dreg = add_reg;
  ins->sreg1 = add_reg;
  ins->data.op[1].const_val = 32;
  D.51037 = mono_class_get_element_class (klass);
  ins->klass = D.51037;
  ins->type = 5;
  D.50843 = cfg->cbb;
  D.50844 = D.50843->last_ins;
  if (D.50844 != 0B) goto <D.51038>; else goto <D.51039>;
  <D.51038>:
  D.50843 = cfg->cbb;
  D.50844 = D.50843->last_ins;
  D.50844->next = ins;
  D.50843 = cfg->cbb;
  D.50844 = D.50843->last_ins;
  ins->prev = D.50844;
  D.50843 = cfg->cbb;
  D.50843->last_ins = ins;
  goto <D.51040>;
  <D.51039>:
  D.50843 = cfg->cbb;
  D.50843 = cfg->cbb;
  D.50843->last_ins = ins;
  D.50844 = D.50843->last_ins;
  D.50843->code = D.50844;
  <D.51040>:
  D.50997 = ins;
  return D.50997;
}


array_access_to_klass (int opcode)
{
  struct MonoClass * D.51042;

  switch (opcode) <default: <D.25160>, case 144: <D.25145>, case 145: <D.25141>, case 146: <D.25147>, case 147: <D.25142>, case 148: <D.25149>, case 149: <D.25151>, case 150: <D.25152>, case 151: <D.25143>, case 152: <D.25154>, case 153: <D.25156>, case 154: <D.25158>, case 155: <D.25144>, case 156: <D.25146>, case 157: <D.25148>, case 158: <D.25150>, case 159: <D.25153>, case 160: <D.25155>, case 161: <D.25157>, case 162: <D.25159>>
  <D.25141>:
  D.51042 = mono_defaults.byte_class;
  return D.51042;
  <D.25142>:
  D.51042 = mono_defaults.uint16_class;
  return D.51042;
  <D.25143>:
  <D.25144>:
  D.51042 = mono_defaults.int_class;
  return D.51042;
  <D.25145>:
  <D.25146>:
  D.51042 = mono_defaults.sbyte_class;
  return D.51042;
  <D.25147>:
  <D.25148>:
  D.51042 = mono_defaults.int16_class;
  return D.51042;
  <D.25149>:
  <D.25150>:
  D.51042 = mono_defaults.int32_class;
  return D.51042;
  <D.25151>:
  D.51042 = mono_defaults.uint32_class;
  return D.51042;
  <D.25152>:
  <D.25153>:
  D.51042 = mono_defaults.int64_class;
  return D.51042;
  <D.25154>:
  <D.25155>:
  D.51042 = mono_defaults.single_class;
  return D.51042;
  <D.25156>:
  <D.25157>:
  D.51042 = mono_defaults.double_class;
  return D.51042;
  <D.25158>:
  <D.25159>:
  D.51042 = mono_defaults.object_class;
  return D.51042;
  <D.25160>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 1271);
  D.51042 = 0B;
  return D.51042;
}


emit_array_store (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * * sp, gboolean safety_checks)
{
  int D.51047;
  struct MonoInst * * D.51049;
  struct MonoInst * D.51050;
  short unsigned int D.51051;
  void * D.51053;
  struct MonoClass * obj_array.484;
  struct MonoClass * tmp_klass.482;
  struct MonoClass * D.51057;
  struct MonoClass * tmp_klass.483;
  _Bool D.51059;
  long int D.51060;
  long int D.51061;
  short int D.51064;
  _Bool D.51067;
  long int D.51068;
  long int D.51069;
  struct MonoInst * D.51072;
  unsigned char D.51073;
  struct MonoInst * D.51076;
  unsigned char D.51077;
  struct MonoInst * D.51080;
  struct MonoInst * D.51081;
  int D.51082;
  struct MonoInst * * D.51085;
  struct MonoInst * D.51086;
  struct MonoMemPool * D.51087;
  long int D.51088;
  struct MonoInst * D.51089;
  struct MonoType * D.51090;
  unsigned int D.51091;
  short unsigned int D.51092;
  int D.51093;
  int D.51094;
  const unsigned char * D.51095;
  int D.51096;
  int D.51097;
  struct MonoClass * D.51098;
  struct MonoBasicBlock * D.51099;
  struct MonoInst * D.51100;
  short unsigned int D.51105;
  int D.51108;
  unsigned int D.51109;
  long int D.51110;
  unsigned int D.51111;
  unsigned int D.51112;
  unsigned int D.51113;
  unsigned int D.51116;
  unsigned int D.51117;
  unsigned int D.51120;
  unsigned char D.51123;
  unsigned char D.51124;
  long int D.51127;
  struct MonoInst * D.51128;
  int D.51129;
  int D.51130;
  long int D.51134;
  struct MonoInst * D.51135;
  int D.51136;
  int D.51137;
  unsigned int D.51144;
  int D.51147;
  long int D.51152;
  struct MonoInst * D.51153;
  int D.51154;
  int D.51155;
  long int D.51159;
  struct MonoInst * D.51160;
  int D.51161;
  int D.51162;
  long int D.51167;
  struct MonoInst * D.51168;
  int D.51169;
  int D.51170;
  unsigned char D.51171;
  int D.51176;
  long int D.51181;
  struct MonoInst * D.51182;
  int D.51183;
  int D.51184;
  long int D.51188;
  struct MonoInst * D.51189;
  int D.51190;
  int D.51191;
  long int D.51196;
  struct MonoInst * D.51197;
  int D.51198;
  int D.51199;
  unsigned char D.51200;
  long int D.51204;
  struct MonoInst * D.51205;
  int D.51206;
  int D.51207;
  long int D.51211;
  struct MonoInst * D.51212;
  int D.51213;
  int D.51214;
  long int D.51219;
  struct MonoInst * D.51220;
  int D.51221;
  int D.51222;
  long int D.51226;
  struct MonoInst * D.51227;
  int D.51228;
  int D.51229;
  long int D.51234;
  struct MonoInst * D.51235;
  int D.51236;
  int D.51237;
  unsigned char D.51238;
  unsigned char D.51239;
  unsigned int D.51243;
  unsigned int D.51244;
  unsigned int D.51245;
  short unsigned int D.51246;
  long int D.51247;
  struct MonoClass * D.51248;
  unsigned int D.51253;
  short unsigned int D.51254;
  int D.51255;
  struct MonoClass * D.51256;
  int D.51260;

  if (safety_checks != 0) goto <D.51046>; else goto <D.51044>;
  <D.51046>:
  D.51047 = generic_class_is_reference_type (cfg, klass);
  if (D.51047 != 0) goto <D.51048>; else goto <D.51044>;
  <D.51048>:
  D.51049 = sp + 16;
  D.51050 = *D.51049;
  D.51051 = D.51050->opcode;
  if (D.51051 != 363) goto <D.51045>; else goto <D.51052>;
  <D.51052>:
  D.51049 = sp + 16;
  D.51050 = *D.51049;
  D.51053 = D.51050->data.op[0].p;
  if (D.51053 != 0B) goto <D.51045>; else goto <D.51044>;
  <D.51045>:
  {
    struct MonoClass * obj_array;
    struct MonoMethod * helper;
    struct MonoInst * iargs[3];

    try
      {
        {
          static struct MonoClass * tmp_klass;

          {
            tmp_klass.482 = tmp_klass;
            if (tmp_klass.482 == 0B) goto <D.51055>; else goto <D.51056>;
            <D.51055>:
            D.51057 = mono_defaults.object_class;
            tmp_klass.483 = mono_array_class_get (D.51057, 1);
            tmp_klass = tmp_klass.483;
            tmp_klass.482 = tmp_klass;
            D.51059 = tmp_klass.482 == 0B;
            D.51060 = (long int) D.51059;
            D.51061 = __builtin_expect (D.51060, 0);
            if (D.51061 != 0) goto <D.51062>; else goto <D.51063>;
            <D.51062>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4919, "tmp_klass");
            <D.51063>:
            <D.51056>:
          }
          obj_array.484 = tmp_klass;
        }
        obj_array = obj_array.484;
        helper = mono_marshal_get_virtual_stelemref (obj_array);
        D.51064 = helper->slot;
        if (D.51064 == 0) goto <D.51065>; else goto <D.51066>;
        <D.51065>:
        mono_class_setup_vtable (obj_array);
        <D.51066>:
        D.51064 = helper->slot;
        D.51067 = D.51064 == 0;
        D.51068 = (long int) D.51067;
        D.51069 = __builtin_expect (D.51068, 0);
        if (D.51069 != 0) goto <D.51070>; else goto <D.51071>;
        <D.51070>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4925, "helper->slot");
        <D.51071>:
        D.51072 = *sp;
        D.51073 = D.51072->type;
        if (D.51073 != 6) goto <D.51074>; else goto <D.51075>;
        <D.51074>:
        D.51076 = 0B;
        return D.51076;
        <D.51075>:
        D.51049 = sp + 16;
        D.51050 = *D.51049;
        D.51077 = D.51050->type;
        if (D.51077 != 6) goto <D.51078>; else goto <D.51079>;
        <D.51078>:
        D.51076 = 0B;
        return D.51076;
        <D.51079>:
        D.51080 = MEM[(struct MonoInst * *)sp + 16B];
        iargs[2] = D.51080;
        D.51081 = MEM[(struct MonoInst * *)sp + 8B];
        iargs[1] = D.51081;
        D.51072 = *sp;
        iargs[0] = D.51072;
        D.51072 = *sp;
        D.51076 = mono_emit_method_call (cfg, helper, &iargs, D.51072);
        return D.51076;
      }
    finally
      {
        iargs = {CLOBBER};
      }
  }
  <D.51044>:
  {
    struct MonoInst * ins;

    D.51082 = mini_is_gsharedvt_variable_klass (cfg, klass);
    if (D.51082 != 0) goto <D.51083>; else goto <D.51084>;
    <D.51083>:
    {
      struct MonoInst * addr;

      D.51085 = sp + 8;
      D.51086 = *D.51085;
      D.51072 = *sp;
      addr = mini_emit_ldelema_1_ins (cfg, klass, D.51072, D.51086, 1);
      D.51087 = cfg->mempool;
      ins = mono_mempool_alloc (D.51087, 80);
      ins->data.op[1].const_val = 0;
      D.51088 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.51088;
      ins->prev = 0B;
      D.51089 = ins->prev;
      ins->next = D.51089;
      D.51090 = &klass->byval_arg;
      D.51091 = mono_type_to_store_membase (cfg, D.51090);
      D.51092 = (short unsigned int) D.51091;
      ins->opcode = D.51092;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.51093 = ins->sreg3;
      ins->sreg2 = D.51093;
      D.51094 = ins->sreg2;
      ins->sreg1 = D.51094;
      D.51095 = cfg->ip;
      ins->cil_code = D.51095;
      D.51049 = sp + 16;
      D.51050 = *D.51049;
      D.51096 = D.51050->dreg;
      ins->sreg1 = D.51096;
      D.51097 = addr->dreg;
      ins->dreg = D.51097;
      ins->data.op[0].const_val = 0;
      D.51090 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.51090, ins);
      D.51090 = &klass->byval_arg;
      D.51098 = mono_class_from_mono_type (D.51090);
      ins->klass = D.51098;
      D.51099 = cfg->cbb;
      D.51100 = D.51099->last_ins;
      if (D.51100 != 0B) goto <D.51101>; else goto <D.51102>;
      <D.51101>:
      D.51099 = cfg->cbb;
      D.51100 = D.51099->last_ins;
      D.51100->next = ins;
      D.51099 = cfg->cbb;
      D.51100 = D.51099->last_ins;
      ins->prev = D.51100;
      D.51099 = cfg->cbb;
      D.51099->last_ins = ins;
      goto <D.51103>;
      <D.51102>:
      D.51099 = cfg->cbb;
      D.51099 = cfg->cbb;
      D.51099->last_ins = ins;
      D.51100 = D.51099->last_ins;
      D.51099->code = D.51100;
      <D.51103>:
      ins->opcode = 390;
    }
    goto <D.51104>;
    <D.51084>:
    D.51085 = sp + 8;
    D.51086 = *D.51085;
    D.51105 = D.51086->opcode;
    if (D.51105 == 362) goto <D.51106>; else goto <D.51107>;
    <D.51106>:
    {
      int array_reg;
      int index_reg;
      int offset;

      D.51072 = *sp;
      array_reg = D.51072->dreg;
      D.51085 = sp + 8;
      D.51086 = *D.51085;
      index_reg = D.51086->dreg;
      D.51108 = mono_class_array_element_size (klass);
      D.51109 = (unsigned int) D.51108;
      D.51085 = sp + 8;
      D.51086 = *D.51085;
      D.51110 = D.51086->data.op[0].const_val;
      D.51111 = (unsigned int) D.51110;
      D.51112 = D.51109 * D.51111;
      D.51113 = D.51112 + 32;
      offset = (int) D.51113;
      if (safety_checks != 0) goto <D.51114>; else goto <D.51115>;
      <D.51114>:
      D.51116 = cfg->opt;
      D.51117 = D.51116 & 134217728;
      if (D.51117 == 0) goto <D.51118>; else goto <D.51119>;
      <D.51118>:
      D.51116 = cfg->opt;
      D.51120 = D.51116 & 262144;
      if (D.51120 == 0) goto <D.51121>; else goto <D.51122>;
      <D.51121>:
      D.51123 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.51124 = D.51123 & 64;
      if (D.51124 != 0) goto <D.51125>; else goto <D.51126>;
      <D.51125>:
      {
        struct MonoInst * inst;

        D.51087 = cfg->mempool;
        inst = mono_mempool_alloc (D.51087, 80);
        inst->data.op[1].const_val = 0;
        D.51127 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51127;
        inst->prev = 0B;
        D.51128 = inst->prev;
        inst->next = D.51128;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51129 = inst->sreg3;
        inst->sreg2 = D.51129;
        D.51130 = inst->sreg2;
        inst->sreg1 = D.51130;
        D.51095 = cfg->ip;
        inst->cil_code = D.51095;
        inst->dreg = -1;
        inst->sreg1 = array_reg;
        inst->data.op[1].const_val = 0;
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        if (D.51100 != 0B) goto <D.51131>; else goto <D.51132>;
        <D.51131>:
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        D.51100->next = inst;
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        inst->prev = D.51100;
        D.51099 = cfg->cbb;
        D.51099->last_ins = inst;
        goto <D.51133>;
        <D.51132>:
        D.51099 = cfg->cbb;
        D.51099 = cfg->cbb;
        D.51099->last_ins = inst;
        D.51100 = D.51099->last_ins;
        D.51099->code = D.51100;
        <D.51133>:
      }
      {
        struct MonoInst * inst;

        D.51087 = cfg->mempool;
        inst = mono_mempool_alloc (D.51087, 80);
        inst->data.op[1].const_val = 0;
        D.51134 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51134;
        inst->prev = 0B;
        D.51135 = inst->prev;
        inst->next = D.51135;
        inst->opcode = 455;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51136 = inst->sreg3;
        inst->sreg2 = D.51136;
        D.51137 = inst->sreg2;
        inst->sreg1 = D.51137;
        D.51095 = cfg->ip;
        inst->cil_code = D.51095;
        inst->data.op[1].p = "NullReferenceException";
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        if (D.51100 != 0B) goto <D.51138>; else goto <D.51139>;
        <D.51138>:
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        D.51100->next = inst;
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        inst->prev = D.51100;
        D.51099 = cfg->cbb;
        D.51099->last_ins = inst;
        goto <D.51140>;
        <D.51139>:
        D.51099 = cfg->cbb;
        D.51099 = cfg->cbb;
        D.51099->last_ins = inst;
        D.51100 = D.51099->last_ins;
        D.51099->code = D.51100;
        <D.51140>:
      }
      goto <D.51141>;
      <D.51126>:
      <D.51141>:
      if (0 != 0) goto <D.51142>; else goto <D.51143>;
      <D.51142>:
      {
        int _length_reg;

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

          __ins_flags = 32;
          D.51147 = __ins_flags & 32;
          if (D.51147 != 0) goto <D.51148>; else goto <D.51149>;
          <D.51148>:
          D.51123 = BIT_FIELD_REF <*cfg, 8, 5632>;
          D.51124 = D.51123 & 64;
          if (D.51124 != 0) goto <D.51150>; else goto <D.51151>;
          <D.51150>:
          {
            struct MonoInst * inst;

            D.51087 = cfg->mempool;
            inst = mono_mempool_alloc (D.51087, 80);
            inst->data.op[1].const_val = 0;
            D.51152 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.51152;
            inst->prev = 0B;
            D.51153 = inst->prev;
            inst->next = D.51153;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.51154 = inst->sreg3;
            inst->sreg2 = D.51154;
            D.51155 = inst->sreg2;
            inst->sreg1 = D.51155;
            D.51095 = cfg->ip;
            inst->cil_code = D.51095;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            if (D.51100 != 0B) goto <D.51156>; else goto <D.51157>;
            <D.51156>:
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            D.51100->next = inst;
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            inst->prev = D.51100;
            D.51099 = cfg->cbb;
            D.51099->last_ins = inst;
            goto <D.51158>;
            <D.51157>:
            D.51099 = cfg->cbb;
            D.51099 = cfg->cbb;
            D.51099->last_ins = inst;
            D.51100 = D.51099->last_ins;
            D.51099->code = D.51100;
            <D.51158>:
          }
          {
            struct MonoInst * inst;

            D.51087 = cfg->mempool;
            inst = mono_mempool_alloc (D.51087, 80);
            inst->data.op[1].const_val = 0;
            D.51159 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.51159;
            inst->prev = 0B;
            D.51160 = inst->prev;
            inst->next = D.51160;
            inst->opcode = 455;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.51161 = inst->sreg3;
            inst->sreg2 = D.51161;
            D.51162 = inst->sreg2;
            inst->sreg1 = D.51162;
            D.51095 = cfg->ip;
            inst->cil_code = D.51095;
            inst->data.op[1].p = "NullReferenceException";
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            if (D.51100 != 0B) goto <D.51163>; else goto <D.51164>;
            <D.51163>:
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            D.51100->next = inst;
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            inst->prev = D.51100;
            D.51099 = cfg->cbb;
            D.51099->last_ins = inst;
            goto <D.51165>;
            <D.51164>:
            D.51099 = cfg->cbb;
            D.51099 = cfg->cbb;
            D.51099->last_ins = inst;
            D.51100 = D.51099->last_ins;
            D.51099->code = D.51100;
            <D.51165>:
          }
          goto <D.51166>;
          <D.51151>:
          <D.51166>:
          <D.51149>:
          D.51087 = cfg->mempool;
          inst = mono_mempool_alloc (D.51087, 80);
          inst->data.op[1].const_val = 0;
          D.51167 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.51167;
          inst->prev = 0B;
          D.51168 = inst->prev;
          inst->next = D.51168;
          inst->opcode = 396;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.51169 = inst->sreg3;
          inst->sreg2 = D.51169;
          D.51170 = inst->sreg2;
          inst->sreg1 = D.51170;
          D.51095 = cfg->ip;
          inst->cil_code = D.51095;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 24;
          inst->type = 1;
          D.51171 = (unsigned char) __ins_flags;
          inst->flags = D.51171;
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          if (D.51100 != 0B) goto <D.51172>; else goto <D.51173>;
          <D.51172>:
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          D.51100->next = inst;
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          inst->prev = D.51100;
          D.51099 = cfg->cbb;
          D.51099->last_ins = inst;
          goto <D.51174>;
          <D.51173>:
          D.51099 = cfg->cbb;
          D.51099 = cfg->cbb;
          D.51099->last_ins = inst;
          D.51100 = D.51099->last_ins;
          D.51099->code = D.51100;
          <D.51174>:
        }
        goto <D.51175>;
        <D.51146>:
        {
          struct MonoInst * inst;
          int __ins_flags;

          __ins_flags = 64;
          D.51176 = __ins_flags & 32;
          if (D.51176 != 0) goto <D.51177>; else goto <D.51178>;
          <D.51177>:
          D.51123 = BIT_FIELD_REF <*cfg, 8, 5632>;
          D.51124 = D.51123 & 64;
          if (D.51124 != 0) goto <D.51179>; else goto <D.51180>;
          <D.51179>:
          {
            struct MonoInst * inst;

            D.51087 = cfg->mempool;
            inst = mono_mempool_alloc (D.51087, 80);
            inst->data.op[1].const_val = 0;
            D.51181 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.51181;
            inst->prev = 0B;
            D.51182 = inst->prev;
            inst->next = D.51182;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.51183 = inst->sreg3;
            inst->sreg2 = D.51183;
            D.51184 = inst->sreg2;
            inst->sreg1 = D.51184;
            D.51095 = cfg->ip;
            inst->cil_code = D.51095;
            inst->dreg = -1;
            inst->sreg1 = array_reg;
            inst->data.op[1].const_val = 0;
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            if (D.51100 != 0B) goto <D.51185>; else goto <D.51186>;
            <D.51185>:
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            D.51100->next = inst;
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            inst->prev = D.51100;
            D.51099 = cfg->cbb;
            D.51099->last_ins = inst;
            goto <D.51187>;
            <D.51186>:
            D.51099 = cfg->cbb;
            D.51099 = cfg->cbb;
            D.51099->last_ins = inst;
            D.51100 = D.51099->last_ins;
            D.51099->code = D.51100;
            <D.51187>:
          }
          {
            struct MonoInst * inst;

            D.51087 = cfg->mempool;
            inst = mono_mempool_alloc (D.51087, 80);
            inst->data.op[1].const_val = 0;
            D.51188 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.51188;
            inst->prev = 0B;
            D.51189 = inst->prev;
            inst->next = D.51189;
            inst->opcode = 455;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.51190 = inst->sreg3;
            inst->sreg2 = D.51190;
            D.51191 = inst->sreg2;
            inst->sreg1 = D.51191;
            D.51095 = cfg->ip;
            inst->cil_code = D.51095;
            inst->data.op[1].p = "NullReferenceException";
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            if (D.51100 != 0B) goto <D.51192>; else goto <D.51193>;
            <D.51192>:
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            D.51100->next = inst;
            D.51099 = cfg->cbb;
            D.51100 = D.51099->last_ins;
            inst->prev = D.51100;
            D.51099 = cfg->cbb;
            D.51099->last_ins = inst;
            goto <D.51194>;
            <D.51193>:
            D.51099 = cfg->cbb;
            D.51099 = cfg->cbb;
            D.51099->last_ins = inst;
            D.51100 = D.51099->last_ins;
            D.51099->code = D.51100;
            <D.51194>:
          }
          goto <D.51195>;
          <D.51180>:
          <D.51195>:
          <D.51178>:
          D.51087 = cfg->mempool;
          inst = mono_mempool_alloc (D.51087, 80);
          inst->data.op[1].const_val = 0;
          D.51196 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.51196;
          inst->prev = 0B;
          D.51197 = inst->prev;
          inst->next = D.51197;
          inst->opcode = 396;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.51198 = inst->sreg3;
          inst->sreg2 = D.51198;
          D.51199 = inst->sreg2;
          inst->sreg1 = D.51199;
          D.51095 = cfg->ip;
          inst->cil_code = D.51095;
          inst->dreg = _length_reg;
          inst->sreg1 = array_reg;
          inst->data.op[0].const_val = 24;
          inst->type = 1;
          D.51200 = (unsigned char) __ins_flags;
          inst->flags = D.51200;
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          if (D.51100 != 0B) goto <D.51201>; else goto <D.51202>;
          <D.51201>:
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          D.51100->next = inst;
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          inst->prev = D.51100;
          D.51099 = cfg->cbb;
          D.51099->last_ins = inst;
          goto <D.51203>;
          <D.51202>:
          D.51099 = cfg->cbb;
          D.51099 = cfg->cbb;
          D.51099->last_ins = inst;
          D.51100 = D.51099->last_ins;
          D.51099->code = D.51100;
          <D.51203>:
        }
        <D.51175>:
        {
          struct MonoInst * inst;

          D.51087 = cfg->mempool;
          inst = mono_mempool_alloc (D.51087, 80);
          inst->data.op[1].const_val = 0;
          D.51204 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.51204;
          inst->prev = 0B;
          D.51205 = inst->prev;
          inst->next = D.51205;
          inst->opcode = 322;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.51206 = inst->sreg3;
          inst->sreg2 = D.51206;
          D.51207 = inst->sreg2;
          inst->sreg1 = D.51207;
          D.51095 = cfg->ip;
          inst->cil_code = D.51095;
          inst->dreg = -1;
          inst->sreg1 = _length_reg;
          inst->sreg2 = index_reg;
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          if (D.51100 != 0B) goto <D.51208>; else goto <D.51209>;
          <D.51208>:
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          D.51100->next = inst;
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          inst->prev = D.51100;
          D.51099 = cfg->cbb;
          D.51099->last_ins = inst;
          goto <D.51210>;
          <D.51209>:
          D.51099 = cfg->cbb;
          D.51099 = cfg->cbb;
          D.51099->last_ins = inst;
          D.51100 = D.51099->last_ins;
          D.51099->code = D.51100;
          <D.51210>:
        }
        {
          struct MonoInst * inst;

          D.51087 = cfg->mempool;
          inst = mono_mempool_alloc (D.51087, 80);
          inst->data.op[1].const_val = 0;
          D.51211 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.51211;
          inst->prev = 0B;
          D.51212 = inst->prev;
          inst->next = D.51212;
          inst->opcode = 463;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.51213 = inst->sreg3;
          inst->sreg2 = D.51213;
          D.51214 = inst->sreg2;
          inst->sreg1 = D.51214;
          D.51095 = cfg->ip;
          inst->cil_code = D.51095;
          inst->data.op[1].p = "IndexOutOfRangeException";
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          if (D.51100 != 0B) goto <D.51215>; else goto <D.51216>;
          <D.51215>:
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          D.51100->next = inst;
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          inst->prev = D.51100;
          D.51099 = cfg->cbb;
          D.51099->last_ins = inst;
          goto <D.51217>;
          <D.51216>:
          D.51099 = cfg->cbb;
          D.51099 = cfg->cbb;
          D.51099->last_ins = inst;
          D.51100 = D.51099->last_ins;
          D.51099->code = D.51100;
          <D.51217>:
        }
      }
      goto <D.51218>;
      <D.51143>:
      {
        struct MonoInst * inst;

        D.51087 = cfg->mempool;
        inst = mono_mempool_alloc (D.51087, 80);
        inst->data.op[1].const_val = 0;
        D.51219 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.51219;
        inst->prev = 0B;
        D.51220 = inst->prev;
        inst->next = D.51220;
        inst->opcode = 1049;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.51221 = inst->sreg3;
        inst->sreg2 = D.51221;
        D.51222 = inst->sreg2;
        inst->sreg1 = D.51222;
        D.51095 = cfg->ip;
        inst->cil_code = D.51095;
        inst->sreg1 = array_reg;
        inst->data.op[0].const_val = 24;
        inst->sreg2 = index_reg;
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        if (D.51100 != 0B) goto <D.51223>; else goto <D.51224>;
        <D.51223>:
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        D.51100->next = inst;
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        inst->prev = D.51100;
        D.51099 = cfg->cbb;
        D.51099->last_ins = inst;
        goto <D.51225>;
        <D.51224>:
        D.51099 = cfg->cbb;
        D.51099 = cfg->cbb;
        D.51099->last_ins = inst;
        D.51100 = D.51099->last_ins;
        D.51099->code = D.51100;
        <D.51225>:
        {
          struct MonoInst * inst;

          D.51087 = cfg->mempool;
          inst = mono_mempool_alloc (D.51087, 80);
          inst->data.op[1].const_val = 0;
          D.51226 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.51226;
          inst->prev = 0B;
          D.51227 = inst->prev;
          inst->next = D.51227;
          inst->opcode = 463;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.51228 = inst->sreg3;
          inst->sreg2 = D.51228;
          D.51229 = inst->sreg2;
          inst->sreg1 = D.51229;
          D.51095 = cfg->ip;
          inst->cil_code = D.51095;
          inst->data.op[1].p = "IndexOutOfRangeException";
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          if (D.51100 != 0B) goto <D.51230>; else goto <D.51231>;
          <D.51230>:
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          D.51100->next = inst;
          D.51099 = cfg->cbb;
          D.51100 = D.51099->last_ins;
          inst->prev = D.51100;
          D.51099 = cfg->cbb;
          D.51099->last_ins = inst;
          goto <D.51232>;
          <D.51231>:
          D.51099 = cfg->cbb;
          D.51099 = cfg->cbb;
          D.51099->last_ins = inst;
          D.51100 = D.51099->last_ins;
          D.51099->code = D.51100;
          <D.51232>:
        }
      }
      <D.51218>:
      goto <D.51233>;
      <D.51122>:
      {
        struct MonoInst * ins;

        D.51087 = cfg->mempool;
        ins = mono_mempool_alloc (D.51087, 80);
        ins->data.op[1].const_val = 0;
        D.51234 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.51234;
        ins->prev = 0B;
        D.51235 = ins->prev;
        ins->next = D.51235;
        ins->opcode = 788;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.51236 = ins->sreg3;
        ins->sreg2 = D.51236;
        D.51237 = ins->sreg2;
        ins->sreg1 = D.51237;
        D.51095 = cfg->ip;
        ins->cil_code = D.51095;
        ins->sreg1 = array_reg;
        ins->sreg2 = index_reg;
        ins->data.op[1].const_val = 24;
        D.51238 = ins->flags;
        D.51239 = D.51238 | 32;
        ins->flags = D.51239;
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        if (D.51100 != 0B) goto <D.51240>; else goto <D.51241>;
        <D.51240>:
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        D.51100->next = ins;
        D.51099 = cfg->cbb;
        D.51100 = D.51099->last_ins;
        ins->prev = D.51100;
        D.51099 = cfg->cbb;
        D.51099->last_ins = ins;
        goto <D.51242>;
        <D.51241>:
        D.51099 = cfg->cbb;
        D.51099 = cfg->cbb;
        D.51099->last_ins = ins;
        D.51100 = D.51099->last_ins;
        D.51099->code = D.51100;
        <D.51242>:
        D.51243 = cfg->flags;
        D.51244 = D.51243 | 256;
        cfg->flags = D.51244;
        D.51099 = cfg->cbb;
        D.51099->has_array_access = 1;
      }
      <D.51233>:
      <D.51119>:
      <D.51115>:
      D.51087 = cfg->mempool;
      ins = mono_mempool_alloc (D.51087, 80);
      ins->data.op[1].const_val = 0;
      D.51088 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.51088;
      ins->prev = 0B;
      D.51089 = ins->prev;
      ins->next = D.51089;
      D.51090 = &klass->byval_arg;
      D.51245 = mono_type_to_store_membase (cfg, D.51090);
      D.51246 = (short unsigned int) D.51245;
      ins->opcode = D.51246;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.51093 = ins->sreg3;
      ins->sreg2 = D.51093;
      D.51094 = ins->sreg2;
      ins->sreg1 = D.51094;
      D.51095 = cfg->ip;
      ins->cil_code = D.51095;
      D.51049 = sp + 16;
      D.51050 = *D.51049;
      D.51096 = D.51050->dreg;
      ins->sreg1 = D.51096;
      ins->dreg = array_reg;
      D.51247 = (long int) offset;
      ins->data.op[0].const_val = D.51247;
      D.51090 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.51090, ins);
      D.51090 = &klass->byval_arg;
      D.51248 = mono_class_from_mono_type (D.51090);
      ins->klass = D.51248;
      D.51099 = cfg->cbb;
      D.51100 = D.51099->last_ins;
      if (D.51100 != 0B) goto <D.51249>; else goto <D.51250>;
      <D.51249>:
      D.51099 = cfg->cbb;
      D.51100 = D.51099->last_ins;
      D.51100->next = ins;
      D.51099 = cfg->cbb;
      D.51100 = D.51099->last_ins;
      ins->prev = D.51100;
      D.51099 = cfg->cbb;
      D.51099->last_ins = ins;
      goto <D.51251>;
      <D.51250>:
      D.51099 = cfg->cbb;
      D.51099 = cfg->cbb;
      D.51099->last_ins = ins;
      D.51100 = D.51099->last_ins;
      D.51099->code = D.51100;
      <D.51251>:
    }
    goto <D.51252>;
    <D.51107>:
    {
      struct MonoInst * addr;

      D.51085 = sp + 8;
      D.51086 = *D.51085;
      D.51072 = *sp;
      addr = mini_emit_ldelema_1_ins (cfg, klass, D.51072, D.51086, safety_checks);
      D.51087 = cfg->mempool;
      ins = mono_mempool_alloc (D.51087, 80);
      ins->data.op[1].const_val = 0;
      D.51088 = ins->data.op[1].const_val;
      ins->data.op[0].const_val = D.51088;
      ins->prev = 0B;
      D.51089 = ins->prev;
      ins->next = D.51089;
      D.51090 = &klass->byval_arg;
      D.51253 = mono_type_to_store_membase (cfg, D.51090);
      D.51254 = (short unsigned int) D.51253;
      ins->opcode = D.51254;
      ins->flags = 0;
      ins->type = 0;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.51093 = ins->sreg3;
      ins->sreg2 = D.51093;
      D.51094 = ins->sreg2;
      ins->sreg1 = D.51094;
      D.51095 = cfg->ip;
      ins->cil_code = D.51095;
      D.51049 = sp + 16;
      D.51050 = *D.51049;
      D.51096 = D.51050->dreg;
      ins->sreg1 = D.51096;
      D.51255 = addr->dreg;
      ins->dreg = D.51255;
      ins->data.op[0].const_val = 0;
      D.51090 = &klass->byval_arg;
      type_to_eval_stack_type (cfg, D.51090, ins);
      D.51090 = &klass->byval_arg;
      D.51256 = mono_class_from_mono_type (D.51090);
      ins->klass = D.51256;
      D.51099 = cfg->cbb;
      D.51100 = D.51099->last_ins;
      if (D.51100 != 0B) goto <D.51257>; else goto <D.51258>;
      <D.51257>:
      D.51099 = cfg->cbb;
      D.51100 = D.51099->last_ins;
      D.51100->next = ins;
      D.51099 = cfg->cbb;
      D.51100 = D.51099->last_ins;
      ins->prev = D.51100;
      D.51099 = cfg->cbb;
      D.51099->last_ins = ins;
      goto <D.51259>;
      <D.51258>:
      D.51099 = cfg->cbb;
      D.51099 = cfg->cbb;
      D.51099->last_ins = ins;
      D.51100 = D.51099->last_ins;
      D.51099->code = D.51100;
      <D.51259>:
      D.51260 = generic_class_is_reference_type (cfg, klass);
      if (D.51260 != 0) goto <D.51261>; else goto <D.51262>;
      <D.51261>:
      D.51049 = sp + 16;
      D.51050 = *D.51049;
      emit_write_barrier (cfg, addr, D.51050);
      <D.51262>:
    }
    <D.51252>:
    <D.51104>:
    D.51076 = ins;
    return D.51076;
  }
}


mini_emit_class_check (struct MonoCompile * cfg, int klass_reg, struct MonoClass * klass)
{
  mini_emit_class_check_inst (cfg, klass_reg, klass, 0B);
}


emit_get_rgctx_field (struct MonoCompile * cfg, int context_used, struct MonoClassField * field, MonoRgctxInfoType rgctx_type)
{
  int D.51265;
  struct MonoMethod * D.51266;
  struct MonoMemPool * D.51267;
  struct MonoInst * D.51268;
  struct MonoJumpInfoRgctxEntry * entry;
  struct MonoInst * rgctx;

  D.51265 = context_used & 2;
  D.51266 = cfg->current_method;
  D.51267 = cfg->mempool;
  entry = mono_patch_info_rgctx_entry_new (D.51267, D.51266, D.51265, 13, field, rgctx_type);
  D.51266 = cfg->current_method;
  rgctx = emit_get_rgctx (cfg, D.51266, context_used);
  D.51268 = emit_rgctx_fetch (cfg, rgctx, entry);
  return D.51268;
}


emit_seq_point (struct MonoCompile * cfg, struct MonoMethod * method, guint8 * ip, gboolean intr_loc, gboolean nonempty_stack)
{
  unsigned char D.51270;
  unsigned char D.51271;
  struct MonoMethod * D.51274;
  struct MonoMemPool * D.51277;
  long int D.51278;
  struct MonoInst * D.51279;
  int D.51280;
  int D.51281;
  const unsigned char * D.51282;
  long int ip.485;
  struct MonoMethodHeader * D.51284;
  const unsigned char * D.51285;
  long int D.51286;
  long int D.51287;
  _Bool D.51288;
  unsigned char D.51289;
  unsigned char D.51292;
  unsigned char D.51293;
  struct MonoBasicBlock * D.51294;
  struct MonoInst * D.51295;
  struct MonoInst * ins;

  D.51270 = BIT_FIELD_REF <*cfg, 8, 5632>;
  D.51271 = D.51270 & 32;
  if (D.51271 != 0) goto <D.51272>; else goto <D.51273>;
  <D.51272>:
  D.51274 = cfg->method;
  if (D.51274 == method) goto <D.51275>; else goto <D.51276>;
  <D.51275>:
  D.51277 = cfg->mempool;
  ins = mono_mempool_alloc (D.51277, 80);
  ins->data.op[1].const_val = 0;
  D.51278 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.51278;
  ins->prev = 0B;
  D.51279 = ins->prev;
  ins->next = D.51279;
  ins->opcode = 341;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.51280 = ins->sreg3;
  ins->sreg2 = D.51280;
  D.51281 = ins->sreg2;
  ins->sreg1 = D.51281;
  D.51282 = cfg->ip;
  ins->cil_code = D.51282;
  ip.485 = (long int) ip;
  D.51284 = cfg->header;
  D.51285 = D.51284->code;
  D.51286 = (long int) D.51285;
  D.51287 = ip.485 - D.51286;
  ins->data.op[1].const_val = D.51287;
  D.51288 = intr_loc != 0;
  D.51289 = (unsigned char) D.51288;
  ins->flags = D.51289;
  if (nonempty_stack != 0) goto <D.51290>; else goto <D.51291>;
  <D.51290>:
  D.51292 = ins->flags;
  D.51293 = D.51292 | 4;
  ins->flags = D.51293;
  <D.51291>:
  D.51294 = cfg->cbb;
  D.51295 = D.51294->last_ins;
  if (D.51295 != 0B) goto <D.51296>; else goto <D.51297>;
  <D.51296>:
  D.51294 = cfg->cbb;
  D.51295 = D.51294->last_ins;
  D.51295->next = ins;
  D.51294 = cfg->cbb;
  D.51295 = D.51294->last_ins;
  ins->prev = D.51295;
  D.51294 = cfg->cbb;
  D.51294->last_ins = ins;
  goto <D.51298>;
  <D.51297>:
  D.51294 = cfg->cbb;
  D.51294 = cfg->cbb;
  D.51294->last_ins = ins;
  D.51295 = D.51294->last_ins;
  D.51294->code = D.51295;
  <D.51298>:
  <D.51276>:
  <D.51273>:
}


mono_find_final_block (struct MonoCompile * cfg, unsigned char * ip, unsigned char * target, int type)
{
  struct MonoExceptionClause * D.51299;
  long unsigned int D.51300;
  long unsigned int D.51301;
  unsigned int D.51304;
  long int D.51305;
  long int ip.486;
  const unsigned char * D.51307;
  long int D.51308;
  long int D.51309;
  unsigned int D.51312;
  unsigned int D.51313;
  long int D.51314;
  long int target.487;
  long int D.51318;
  unsigned int D.51320;
  unsigned int type.488;
  <unnamed-unsigned:15> D.51324;
  int D.51325;
  struct GList * D.51326;
  struct MonoMethodHeader * header;
  struct MonoExceptionClause * clause;
  int i;
  struct GList * res;

  header = cfg->header;
  res = 0B;
  i = 0;
  goto <D.24922>;
  <D.24921>:
  D.51299 = header->clauses;
  D.51300 = (long unsigned int) i;
  D.51301 = D.51300 * 32;
  clause = D.51299 + D.51301;
  D.51304 = clause->try_offset;
  D.51305 = (long int) D.51304;
  ip.486 = (long int) ip;
  D.51307 = header->code;
  D.51308 = (long int) D.51307;
  D.51309 = ip.486 - D.51308;
  if (D.51305 <= D.51309) goto <D.51310>; else goto <D.51311>;
  <D.51310>:
  ip.486 = (long int) ip;
  D.51307 = header->code;
  D.51308 = (long int) D.51307;
  D.51309 = ip.486 - D.51308;
  D.51304 = clause->try_offset;
  D.51312 = clause->try_len;
  D.51313 = D.51304 + D.51312;
  D.51314 = (long int) D.51313;
  if (D.51309 < D.51314) goto <D.51315>; else goto <D.51316>;
  <D.51315>:
  D.51304 = clause->try_offset;
  D.51305 = (long int) D.51304;
  target.487 = (long int) target;
  D.51307 = header->code;
  D.51308 = (long int) D.51307;
  D.51318 = target.487 - D.51308;
  if (D.51305 > D.51318) goto <D.51302>; else goto <D.51319>;
  <D.51319>:
  target.487 = (long int) target;
  D.51307 = header->code;
  D.51308 = (long int) D.51307;
  D.51318 = target.487 - D.51308;
  D.51304 = clause->try_offset;
  D.51312 = clause->try_len;
  D.51313 = D.51304 + D.51312;
  D.51314 = (long int) D.51313;
  if (D.51318 >= D.51314) goto <D.51302>; else goto <D.51303>;
  <D.51302>:
  D.51320 = clause->flags;
  type.488 = (unsigned int) type;
  if (D.51320 == type.488) goto <D.51322>; else goto <D.51323>;
  <D.51322>:
  res = monoeg_g_list_append (res, clause);
  <D.51323>:
  <D.51303>:
  <D.51316>:
  <D.51311>:
  i = i + 1;
  <D.24922>:
  D.51324 = header->num_clauses;
  D.51325 = (int) D.51324;
  if (D.51325 > i) goto <D.24921>; else goto <D.24923>;
  <D.24923>:
  D.51326 = res;
  return D.51326;
}


mono_get_domainvar (struct MonoCompile * cfg)
{
  struct MonoInst * D.51328;
  struct MonoClass * D.51331;
  struct MonoType * D.51332;
  struct MonoInst * D.51333;
  struct MonoInst * D.51334;

  D.51328 = cfg->domainvar;
  if (D.51328 == 0B) goto <D.51329>; else goto <D.51330>;
  <D.51329>:
  D.51331 = mono_defaults.int_class;
  D.51332 = &D.51331->byval_arg;
  D.51333 = mono_compile_create_var (cfg, D.51332, 329);
  cfg->domainvar = D.51333;
  <D.51330>:
  D.51334 = cfg->domainvar;
  return D.51334;
}


handle_cisinst (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src)
{
  unsigned int D.51336;
  unsigned int D.51337;
  struct MonoMemPool * D.51338;
  unsigned int D.51339;
  unsigned int D.51340;
  unsigned int D.51341;
  int D.51342;
  unsigned int D.51343;
  unsigned int D.51344;
  int D.51345;
  unsigned int D.51346;
  unsigned int D.51347;
  int D.51348;
  unsigned int D.51349;
  unsigned int D.51350;
  int D.51351;
  unsigned int D.51352;
  unsigned int D.51353;
  int D.51354;
  long int D.51355;
  struct MonoInst * D.51356;
  int D.51357;
  int D.51358;
  const unsigned char * D.51359;
  struct MonoBasicBlock * D.51360;
  struct MonoInst * D.51361;
  long int D.51365;
  struct MonoInst * D.51366;
  int D.51367;
  int D.51368;
  unsigned int D.51371;
  unsigned int D.51372;
  int D.51373;
  unsigned char * D.51377;
  struct MonoBasicBlock * * D.51380;
  long int D.51381;
  unsigned char * D.51382;
  long int D.51383;
  long int D.51384;
  long unsigned int D.51385;
  long unsigned int D.51386;
  struct MonoBasicBlock * * D.51387;
  unsigned int D.51388;
  short unsigned int D.51393;
  short unsigned int D.51394;
  _Bool D.51395;
  short unsigned int D.51396;
  _Bool D.51397;
  _Bool D.51398;
  short unsigned int D.51400;
  short unsigned int D.51401;
  struct MonoBasicBlock * * D.51402;
  struct MonoBasicBlock * * D.51403;
  struct MonoBasicBlock * D.51404;
  short unsigned int D.51409;
  _Bool D.51410;
  _Bool D.51411;
  _Bool D.51412;
  short unsigned int D.51414;
  short unsigned int D.51415;
  _Bool D.51416;
  short unsigned int D.51417;
  _Bool D.51418;
  _Bool D.51419;
  void * D.51422;
  struct MonoBasicBlock * * D.51423;
  struct MonoBasicBlock * * D.51424;
  unsigned char D.51428;
  unsigned char D.51429;
  unsigned int D.51432;
  unsigned int D.51433;
  int D.51434;
  short unsigned int D.51441;
  short unsigned int D.51442;
  _Bool D.51443;
  short unsigned int D.51444;
  _Bool D.51445;
  _Bool D.51446;
  short unsigned int D.51452;
  _Bool D.51453;
  _Bool D.51454;
  _Bool D.51455;
  short unsigned int D.51457;
  short unsigned int D.51458;
  _Bool D.51459;
  short unsigned int D.51460;
  _Bool D.51461;
  _Bool D.51462;
  unsigned int D.51465;
  unsigned int D.51466;
  unsigned int D.51469;
  unsigned int D.51470;
  int D.51471;
  unsigned int D.51472;
  long int D.51473;
  struct MonoInst * D.51474;
  int D.51475;
  int D.51476;
  unsigned char * D.51480;
  long int D.51483;
  long int D.51484;
  long unsigned int D.51485;
  long unsigned int D.51486;
  struct MonoBasicBlock * * D.51487;
  short unsigned int D.51492;
  short unsigned int D.51493;
  _Bool D.51494;
  short unsigned int D.51495;
  _Bool D.51496;
  _Bool D.51497;
  short unsigned int D.51503;
  _Bool D.51504;
  _Bool D.51505;
  _Bool D.51506;
  short unsigned int D.51508;
  short unsigned int D.51509;
  _Bool D.51510;
  short unsigned int D.51511;
  _Bool D.51512;
  _Bool D.51513;
  long int D.51515;
  struct MonoInst * D.51516;
  int D.51517;
  int D.51518;
  struct MonoClass * D.51522;
  unsigned int D.51523;
  long int D.51524;
  struct MonoInst * D.51525;
  int D.51526;
  int D.51527;
  long int D.51531;
  struct MonoInst * D.51532;
  int D.51533;
  int D.51534;
  long int D.51538;
  struct MonoInst * D.51539;
  int D.51540;
  int D.51541;
  unsigned int D.51544;
  unsigned int D.51545;
  int D.51546;
  unsigned char * D.51550;
  long int D.51553;
  long int D.51554;
  long unsigned int D.51555;
  long unsigned int D.51556;
  struct MonoBasicBlock * * D.51557;
  short unsigned int D.51562;
  short unsigned int D.51563;
  _Bool D.51564;
  short unsigned int D.51565;
  _Bool D.51566;
  _Bool D.51567;
  short unsigned int D.51573;
  _Bool D.51574;
  _Bool D.51575;
  _Bool D.51576;
  short unsigned int D.51578;
  short unsigned int D.51579;
  _Bool D.51580;
  short unsigned int D.51581;
  _Bool D.51582;
  _Bool D.51583;
  void * D.51586;
  struct MonoBasicBlock * * D.51587;
  struct MonoBasicBlock * * D.51588;
  unsigned int D.51594;
  unsigned int D.51595;
  int D.51596;
  short unsigned int D.51603;
  short unsigned int D.51604;
  _Bool D.51605;
  short unsigned int D.51606;
  _Bool D.51607;
  _Bool D.51608;
  short unsigned int D.51614;
  _Bool D.51615;
  _Bool D.51616;
  _Bool D.51617;
  short unsigned int D.51619;
  short unsigned int D.51620;
  _Bool D.51621;
  short unsigned int D.51622;
  _Bool D.51623;
  _Bool D.51624;
  unsigned int D.51628;
  long int D.51629;
  struct MonoInst * D.51630;
  int D.51631;
  int D.51632;
  long int D.51636;
  struct MonoInst * D.51637;
  int D.51638;
  int D.51639;
  unsigned int D.51643;
  long int D.51644;
  struct MonoInst * D.51645;
  int D.51646;
  int D.51647;
  long int D.51651;
  struct MonoInst * D.51652;
  int D.51653;
  int D.51654;
  unsigned int D.51658;
  long int D.51659;
  struct MonoInst * D.51660;
  int D.51661;
  int D.51662;
  long int D.51666;
  struct MonoInst * D.51667;
  int D.51668;
  int D.51669;
  long int D.51673;
  struct MonoInst * D.51674;
  int D.51675;
  int D.51676;
  unsigned int D.51679;
  unsigned int D.51680;
  int D.51681;
  unsigned char * D.51685;
  long int D.51688;
  long int D.51689;
  long unsigned int D.51690;
  long unsigned int D.51691;
  struct MonoBasicBlock * * D.51692;
  short unsigned int D.51697;
  short unsigned int D.51698;
  _Bool D.51699;
  short unsigned int D.51700;
  _Bool D.51701;
  _Bool D.51702;
  short unsigned int D.51708;
  _Bool D.51709;
  _Bool D.51710;
  _Bool D.51711;
  short unsigned int D.51713;
  short unsigned int D.51714;
  _Bool D.51715;
  short unsigned int D.51716;
  _Bool D.51717;
  _Bool D.51718;
  void * D.51721;
  struct MonoBasicBlock * * D.51722;
  struct MonoBasicBlock * * D.51723;
  unsigned int D.51729;
  unsigned int D.51730;
  int D.51731;
  short unsigned int D.51738;
  short unsigned int D.51739;
  _Bool D.51740;
  short unsigned int D.51741;
  _Bool D.51742;
  _Bool D.51743;
  short unsigned int D.51749;
  _Bool D.51750;
  _Bool D.51751;
  _Bool D.51752;
  short unsigned int D.51754;
  short unsigned int D.51755;
  _Bool D.51756;
  short unsigned int D.51757;
  _Bool D.51758;
  _Bool D.51759;
  long int D.51762;
  struct MonoInst * D.51763;
  int D.51764;
  int D.51765;
  unsigned int D.51768;
  unsigned int D.51769;
  int D.51770;
  unsigned char * D.51774;
  long int D.51777;
  long int D.51778;
  long unsigned int D.51779;
  long unsigned int D.51780;
  struct MonoBasicBlock * * D.51781;
  short unsigned int D.51786;
  short unsigned int D.51787;
  _Bool D.51788;
  short unsigned int D.51789;
  _Bool D.51790;
  _Bool D.51791;
  short unsigned int D.51797;
  _Bool D.51798;
  _Bool D.51799;
  _Bool D.51800;
  short unsigned int D.51802;
  short unsigned int D.51803;
  _Bool D.51804;
  short unsigned int D.51805;
  _Bool D.51806;
  _Bool D.51807;
  void * D.51810;
  struct MonoBasicBlock * * D.51811;
  struct MonoBasicBlock * * D.51812;
  unsigned int D.51818;
  unsigned int D.51819;
  int D.51820;
  short unsigned int D.51827;
  short unsigned int D.51828;
  _Bool D.51829;
  short unsigned int D.51830;
  _Bool D.51831;
  _Bool D.51832;
  short unsigned int D.51838;
  _Bool D.51839;
  _Bool D.51840;
  _Bool D.51841;
  short unsigned int D.51843;
  short unsigned int D.51844;
  _Bool D.51845;
  short unsigned int D.51846;
  _Bool D.51847;
  _Bool D.51848;
  unsigned char * D.51851;
  long int D.51854;
  long int D.51855;
  long unsigned int D.51856;
  long unsigned int D.51857;
  struct MonoBasicBlock * * D.51858;
  short unsigned int D.51863;
  short unsigned int D.51864;
  _Bool D.51865;
  short unsigned int D.51866;
  _Bool D.51867;
  _Bool D.51868;
  short unsigned int D.51874;
  _Bool D.51875;
  _Bool D.51876;
  _Bool D.51877;
  short unsigned int D.51879;
  short unsigned int D.51880;
  _Bool D.51881;
  short unsigned int D.51882;
  _Bool D.51883;
  _Bool D.51884;
  unsigned char * D.51886;
  long int D.51889;
  long int D.51890;
  long unsigned int D.51891;
  long unsigned int D.51892;
  struct MonoBasicBlock * * D.51893;
  short unsigned int D.51898;
  short unsigned int D.51899;
  _Bool D.51900;
  short unsigned int D.51901;
  _Bool D.51902;
  _Bool D.51903;
  short unsigned int D.51909;
  _Bool D.51910;
  _Bool D.51911;
  _Bool D.51912;
  short unsigned int D.51914;
  short unsigned int D.51915;
  _Bool D.51916;
  short unsigned int D.51917;
  _Bool D.51918;
  _Bool D.51919;
  long int D.51921;
  struct MonoInst * D.51922;
  int D.51923;
  int D.51924;
  long int D.51928;
  struct MonoInst * D.51929;
  int D.51930;
  int D.51931;
  unsigned int D.51934;
  unsigned int D.51935;
  int D.51936;
  unsigned char * D.51940;
  long int D.51943;
  long int D.51944;
  long unsigned int D.51945;
  long unsigned int D.51946;
  struct MonoBasicBlock * * D.51947;
  short unsigned int D.51952;
  short unsigned int D.51953;
  _Bool D.51954;
  short unsigned int D.51955;
  _Bool D.51956;
  _Bool D.51957;
  short unsigned int D.51963;
  _Bool D.51964;
  _Bool D.51965;
  _Bool D.51966;
  short unsigned int D.51968;
  short unsigned int D.51969;
  _Bool D.51970;
  short unsigned int D.51971;
  _Bool D.51972;
  _Bool D.51973;
  void * D.51976;
  struct MonoBasicBlock * * D.51977;
  struct MonoBasicBlock * * D.51978;
  unsigned int D.51984;
  unsigned int D.51985;
  int D.51986;
  short unsigned int D.51993;
  short unsigned int D.51994;
  _Bool D.51995;
  short unsigned int D.51996;
  _Bool D.51997;
  _Bool D.51998;
  short unsigned int D.52004;
  _Bool D.52005;
  _Bool D.52006;
  _Bool D.52007;
  short unsigned int D.52009;
  short unsigned int D.52010;
  _Bool D.52011;
  short unsigned int D.52012;
  _Bool D.52013;
  _Bool D.52014;
  unsigned char * D.52017;
  long int D.52020;
  long int D.52021;
  long unsigned int D.52022;
  long unsigned int D.52023;
  struct MonoBasicBlock * * D.52024;
  short unsigned int D.52029;
  short unsigned int D.52030;
  _Bool D.52031;
  short unsigned int D.52032;
  _Bool D.52033;
  _Bool D.52034;
  short unsigned int D.52040;
  _Bool D.52041;
  _Bool D.52042;
  _Bool D.52043;
  short unsigned int D.52045;
  short unsigned int D.52046;
  _Bool D.52047;
  short unsigned int D.52048;
  _Bool D.52049;
  _Bool D.52050;
  long int D.52052;
  struct MonoInst * D.52053;
  int D.52054;
  int D.52055;
  long int D.52059;
  struct MonoInst * D.52060;
  int D.52061;
  int D.52062;
  unsigned int D.52065;
  unsigned int D.52066;
  int D.52067;
  unsigned char * D.52071;
  long int D.52074;
  long int D.52075;
  long unsigned int D.52076;
  long unsigned int D.52077;
  struct MonoBasicBlock * * D.52078;
  short unsigned int D.52083;
  short unsigned int D.52084;
  _Bool D.52085;
  short unsigned int D.52086;
  _Bool D.52087;
  _Bool D.52088;
  short unsigned int D.52094;
  _Bool D.52095;
  _Bool D.52096;
  _Bool D.52097;
  short unsigned int D.52099;
  short unsigned int D.52100;
  _Bool D.52101;
  short unsigned int D.52102;
  _Bool D.52103;
  _Bool D.52104;
  void * D.52107;
  struct MonoBasicBlock * * D.52108;
  struct MonoBasicBlock * * D.52109;
  unsigned int D.52115;
  unsigned int D.52116;
  int D.52117;
  short unsigned int D.52124;
  short unsigned int D.52125;
  _Bool D.52126;
  short unsigned int D.52127;
  _Bool D.52128;
  _Bool D.52129;
  short unsigned int D.52135;
  _Bool D.52136;
  _Bool D.52137;
  _Bool D.52138;
  short unsigned int D.52140;
  short unsigned int D.52141;
  _Bool D.52142;
  short unsigned int D.52143;
  _Bool D.52144;
  _Bool D.52145;
  unsigned char * D.52148;
  long int D.52151;
  long int D.52152;
  long unsigned int D.52153;
  long unsigned int D.52154;
  struct MonoBasicBlock * * D.52155;
  short unsigned int D.52160;
  short unsigned int D.52161;
  _Bool D.52162;
  short unsigned int D.52163;
  _Bool D.52164;
  _Bool D.52165;
  short unsigned int D.52171;
  _Bool D.52172;
  _Bool D.52173;
  _Bool D.52174;
  short unsigned int D.52176;
  short unsigned int D.52177;
  _Bool D.52178;
  short unsigned int D.52179;
  _Bool D.52180;
  _Bool D.52181;
  long int D.52183;
  struct MonoInst * D.52184;
  int D.52185;
  int D.52186;
  unsigned char * D.52190;
  long int D.52193;
  long int D.52194;
  long unsigned int D.52195;
  long unsigned int D.52196;
  struct MonoBasicBlock * * D.52197;
  short unsigned int D.52202;
  short unsigned int D.52203;
  _Bool D.52204;
  short unsigned int D.52205;
  _Bool D.52206;
  _Bool D.52207;
  short unsigned int D.52213;
  _Bool D.52214;
  _Bool D.52215;
  _Bool D.52216;
  short unsigned int D.52218;
  short unsigned int D.52219;
  _Bool D.52220;
  short unsigned int D.52221;
  _Bool D.52222;
  _Bool D.52223;
  long int D.52225;
  struct MonoInst * D.52226;
  int D.52227;
  int D.52228;
  struct MonoInst * D.52229;
  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.51336 = alloc_ireg (cfg);
  dreg = (int) D.51336;
  D.51337 = alloc_preg (cfg);
  klass_reg = (int) D.51337;
  D.51338 = cfg->mempool;
  true_bb = mono_mempool_alloc0 (D.51338, 296);
  D.51339 = cfg->num_bblocks;
  D.51340 = D.51339;
  D.51341 = D.51340 + 1;
  cfg->num_bblocks = D.51341;
  D.51342 = (int) D.51340;
  true_bb->block_num = D.51342;
  D.51338 = cfg->mempool;
  false_bb = mono_mempool_alloc0 (D.51338, 296);
  D.51339 = cfg->num_bblocks;
  D.51343 = D.51339;
  D.51344 = D.51343 + 1;
  cfg->num_bblocks = D.51344;
  D.51345 = (int) D.51343;
  false_bb->block_num = D.51345;
  D.51338 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.51338, 296);
  D.51339 = cfg->num_bblocks;
  D.51346 = D.51339;
  D.51347 = D.51346 + 1;
  cfg->num_bblocks = D.51347;
  D.51348 = (int) D.51346;
  end_bb->block_num = D.51348;
  D.51338 = cfg->mempool;
  false2_bb = mono_mempool_alloc0 (D.51338, 296);
  D.51339 = cfg->num_bblocks;
  D.51349 = D.51339;
  D.51350 = D.51349 + 1;
  cfg->num_bblocks = D.51350;
  D.51351 = (int) D.51349;
  false2_bb->block_num = D.51351;
  D.51338 = cfg->mempool;
  no_proxy_bb = mono_mempool_alloc0 (D.51338, 296);
  D.51339 = cfg->num_bblocks;
  D.51352 = D.51339;
  D.51353 = D.51352 + 1;
  cfg->num_bblocks = D.51353;
  D.51354 = (int) D.51352;
  no_proxy_bb->block_num = D.51354;
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51355 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51355;
    inst->prev = 0B;
    D.51356 = inst->prev;
    inst->next = D.51356;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51357 = inst->sreg3;
    inst->sreg2 = D.51357;
    D.51358 = inst->sreg2;
    inst->sreg1 = D.51358;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51362>; else goto <D.51363>;
    <D.51362>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51364>;
    <D.51363>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51364>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51338 = cfg->mempool;
    ins = mono_mempool_alloc (D.51338, 80);
    ins->data.op[1].const_val = 0;
    D.51365 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.51365;
    ins->prev = 0B;
    D.51366 = ins->prev;
    ins->next = D.51366;
    ins->opcode = 555;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.51367 = ins->sreg3;
    ins->sreg2 = D.51367;
    D.51368 = ins->sreg2;
    ins->sreg1 = D.51368;
    D.51359 = cfg->ip;
    ins->cil_code = D.51359;
    if (0 != 0) goto <D.51369>; else goto <D.51370>;
    <D.51369>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.51371 = D.51339;
    D.51372 = D.51371 + 1;
    cfg->num_bblocks = D.51372;
    D.51373 = (int) D.51371;
    falsebb->block_num = D.51373;
    ins->data.op[0].target_block = false_bb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, false_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51374>; else goto <D.51375>;
    <D.51374>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.51376>;
    <D.51375>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51376>:
    D.51377 = falsebb->cil_code;
    if (D.51377 != 0B) goto <D.51378>; else goto <D.51379>;
    <D.51378>:
    D.51380 = cfg->cil_offset_to_bb;
    D.51377 = falsebb->cil_code;
    D.51381 = (long int) D.51377;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.51384 = D.51381 - D.51383;
    D.51385 = (long unsigned int) D.51384;
    D.51386 = D.51385 * 8;
    D.51387 = D.51380 + D.51386;
    *D.51387 = falsebb;
    <D.51379>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51392>; else goto <D.51389>;
    <D.51392>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51393 = D.51361->opcode;
    D.51394 = D.51393 + 64981;
    D.51395 = D.51394 <= 9;
    D.51396 = D.51393 + 64874;
    D.51397 = D.51396 <= 9;
    D.51398 = D.51395 | D.51397;
    if (D.51398 != 0) goto <D.51390>; else goto <D.51399>;
    <D.51399>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.51390>; else goto <D.51389>;
    <D.51390>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.51405>; else goto <D.51389>;
    <D.51405>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.51391>;
    <D.51389>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.51406>; else goto <D.51408>;
    <D.51408>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51409 = D.51361->opcode;
    D.51410 = D.51409 != 446;
    D.51411 = D.51409 != 763;
    D.51412 = D.51410 & D.51411;
    if (D.51412 != 0) goto <D.51413>; else goto <D.51407>;
    <D.51413>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51414 = D.51361->opcode;
    D.51415 = D.51414 + 64981;
    D.51416 = D.51415 > 9;
    D.51417 = D.51414 + 64874;
    D.51418 = D.51417 > 9;
    D.51419 = D.51416 & D.51418;
    if (D.51419 != 0) goto <D.51420>; else goto <D.51407>;
    <D.51420>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.51406>; else goto <D.51407>;
    <D.51406>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.51407>:
    <D.51391>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51421>;
    <D.51370>:
    D.51338 = cfg->mempool;
    D.51422 = mono_mempool_alloc (D.51338, 16);
    ins->data.op[1].many_blocks = D.51422;
    D.51423 = ins->data.op[1].many_blocks;
    *D.51423 = false_bb;
    D.51423 = ins->data.op[1].many_blocks;
    D.51424 = D.51423 + 8;
    *D.51424 = 0B;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, false_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51425>; else goto <D.51426>;
    <D.51425>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.51427>;
    <D.51426>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51427>:
    D.51428 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.51429 = D.51428 & 8;
    if (D.51429 == 0) goto <D.51430>; else goto <D.51431>;
    <D.51430>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.51432 = D.51339;
    D.51433 = D.51432 + 1;
    cfg->num_bblocks = D.51433;
    D.51434 = (int) D.51432;
    falsebb->block_num = D.51434;
    D.51423 = ins->data.op[1].many_blocks;
    D.51424 = D.51423 + 8;
    *D.51424 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    D.51377 = falsebb->cil_code;
    if (D.51377 != 0B) goto <D.51435>; else goto <D.51436>;
    <D.51435>:
    D.51380 = cfg->cil_offset_to_bb;
    D.51377 = falsebb->cil_code;
    D.51381 = (long int) D.51377;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.51384 = D.51381 - D.51383;
    D.51385 = (long unsigned int) D.51384;
    D.51386 = D.51385 * 8;
    D.51387 = D.51380 + D.51386;
    *D.51387 = falsebb;
    <D.51436>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51440>; else goto <D.51437>;
    <D.51440>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51441 = D.51361->opcode;
    D.51442 = D.51441 + 64981;
    D.51443 = D.51442 <= 9;
    D.51444 = D.51441 + 64874;
    D.51445 = D.51444 <= 9;
    D.51446 = D.51443 | D.51445;
    if (D.51446 != 0) goto <D.51438>; else goto <D.51447>;
    <D.51447>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.51438>; else goto <D.51437>;
    <D.51438>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.51448>; else goto <D.51437>;
    <D.51448>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.51439>;
    <D.51437>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.51449>; else goto <D.51451>;
    <D.51451>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51452 = D.51361->opcode;
    D.51453 = D.51452 != 446;
    D.51454 = D.51452 != 763;
    D.51455 = D.51453 & D.51454;
    if (D.51455 != 0) goto <D.51456>; else goto <D.51450>;
    <D.51456>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51457 = D.51361->opcode;
    D.51458 = D.51457 + 64981;
    D.51459 = D.51458 > 9;
    D.51460 = D.51457 + 64874;
    D.51461 = D.51460 > 9;
    D.51462 = D.51459 & D.51461;
    if (D.51462 != 0) goto <D.51463>; else goto <D.51450>;
    <D.51463>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.51449>; else goto <D.51450>;
    <D.51449>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.51450>:
    <D.51439>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51464>;
    <D.51431>:
    D.51360 = cfg->cbb;
    D.51360->extended = 1;
    <D.51464>:
    <D.51421>:
  }
  D.51465 = klass->flags;
  D.51466 = D.51465 & 32;
  if (D.51466 != 0) goto <D.51467>; else goto <D.51468>;
  <D.51467>:
  D.51338 = cfg->mempool;
  interface_fail_bb = mono_mempool_alloc0 (D.51338, 296);
  D.51339 = cfg->num_bblocks;
  D.51469 = D.51339;
  D.51470 = D.51469 + 1;
  cfg->num_bblocks = D.51470;
  D.51471 = (int) D.51469;
  interface_fail_bb->block_num = D.51471;
  D.51472 = alloc_preg (cfg);
  tmp_reg = (int) D.51472;
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51473 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51473;
    inst->prev = 0B;
    D.51474 = inst->prev;
    inst->next = D.51474;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51475 = inst->sreg3;
    inst->sreg2 = D.51475;
    D.51476 = inst->sreg2;
    inst->sreg1 = D.51476;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51477>; else goto <D.51478>;
    <D.51477>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51479>;
    <D.51478>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51479>:
  }
  mini_emit_iface_cast (cfg, tmp_reg, klass, interface_fail_bb, true_bb);
  D.51480 = interface_fail_bb->cil_code;
  if (D.51480 != 0B) goto <D.51481>; else goto <D.51482>;
  <D.51481>:
  D.51380 = cfg->cil_offset_to_bb;
  D.51480 = interface_fail_bb->cil_code;
  D.51483 = (long int) D.51480;
  D.51382 = cfg->cil_start;
  D.51383 = (long int) D.51382;
  D.51484 = D.51483 - D.51383;
  D.51485 = (long unsigned int) D.51484;
  D.51486 = D.51485 * 8;
  D.51487 = D.51380 + D.51486;
  *D.51487 = interface_fail_bb;
  <D.51482>:
  D.51388 = cfg->real_offset;
  interface_fail_bb->real_offset = D.51388;
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 != 0B) goto <D.51491>; else goto <D.51488>;
  <D.51491>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51492 = D.51361->opcode;
  D.51493 = D.51492 + 64981;
  D.51494 = D.51493 <= 9;
  D.51495 = D.51492 + 64874;
  D.51496 = D.51495 <= 9;
  D.51497 = D.51494 | D.51496;
  if (D.51497 != 0) goto <D.51489>; else goto <D.51498>;
  <D.51498>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 <= 9) goto <D.51489>; else goto <D.51488>;
  <D.51489>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  D.51404 = *D.51403;
  if (D.51404 == 0B) goto <D.51499>; else goto <D.51488>;
  <D.51499>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  *D.51403 = interface_fail_bb;
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, interface_fail_bb);
  goto <D.51490>;
  <D.51488>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 == 0B) goto <D.51500>; else goto <D.51502>;
  <D.51502>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51503 = D.51361->opcode;
  D.51504 = D.51503 != 446;
  D.51505 = D.51503 != 763;
  D.51506 = D.51504 & D.51505;
  if (D.51506 != 0) goto <D.51507>; else goto <D.51501>;
  <D.51507>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51508 = D.51361->opcode;
  D.51509 = D.51508 + 64981;
  D.51510 = D.51509 > 9;
  D.51511 = D.51508 + 64874;
  D.51512 = D.51511 > 9;
  D.51513 = D.51510 & D.51512;
  if (D.51513 != 0) goto <D.51514>; else goto <D.51501>;
  <D.51514>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 > 9) goto <D.51500>; else goto <D.51501>;
  <D.51500>:
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, interface_fail_bb);
  <D.51501>:
  <D.51490>:
  D.51360 = cfg->cbb;
  D.51360->next_bb = interface_fail_bb;
  cfg->cbb = interface_fail_bb;
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51515 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51515;
    inst->prev = 0B;
    D.51516 = inst->prev;
    inst->next = D.51516;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51517 = inst->sreg3;
    inst->sreg2 = D.51517;
    D.51518 = inst->sreg2;
    inst->sreg1 = D.51518;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51519>; else goto <D.51520>;
    <D.51519>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51521>;
    <D.51520>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51521>:
  }
  D.51522 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.51522, 560, false_bb);
  D.51523 = alloc_preg (cfg);
  tmp_reg = (int) D.51523;
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51524 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51524;
    inst->prev = 0B;
    D.51525 = inst->prev;
    inst->next = D.51525;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51526 = inst->sreg3;
    inst->sreg2 = D.51526;
    D.51527 = inst->sreg2;
    inst->sreg1 = D.51527;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 32;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51528>; else goto <D.51529>;
    <D.51528>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51530>;
    <D.51529>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51530>:
  }
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51531 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51531;
    inst->prev = 0B;
    D.51532 = inst->prev;
    inst->next = D.51532;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51533 = inst->sreg3;
    inst->sreg2 = D.51533;
    D.51534 = inst->sreg2;
    inst->sreg1 = D.51534;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51535>; else goto <D.51536>;
    <D.51535>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51537>;
    <D.51536>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51537>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51338 = cfg->mempool;
    ins = mono_mempool_alloc (D.51338, 80);
    ins->data.op[1].const_val = 0;
    D.51538 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.51538;
    ins->prev = 0B;
    D.51539 = ins->prev;
    ins->next = D.51539;
    ins->opcode = 560;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.51540 = ins->sreg3;
    ins->sreg2 = D.51540;
    D.51541 = ins->sreg2;
    ins->sreg1 = D.51541;
    D.51359 = cfg->ip;
    ins->cil_code = D.51359;
    if (0 != 0) goto <D.51542>; else goto <D.51543>;
    <D.51542>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.51544 = D.51339;
    D.51545 = D.51544 + 1;
    cfg->num_bblocks = D.51545;
    D.51546 = (int) D.51544;
    falsebb->block_num = D.51546;
    ins->data.op[0].target_block = false2_bb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, false2_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51547>; else goto <D.51548>;
    <D.51547>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.51549>;
    <D.51548>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51549>:
    D.51550 = falsebb->cil_code;
    if (D.51550 != 0B) goto <D.51551>; else goto <D.51552>;
    <D.51551>:
    D.51380 = cfg->cil_offset_to_bb;
    D.51550 = falsebb->cil_code;
    D.51553 = (long int) D.51550;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.51554 = D.51553 - D.51383;
    D.51555 = (long unsigned int) D.51554;
    D.51556 = D.51555 * 8;
    D.51557 = D.51380 + D.51556;
    *D.51557 = falsebb;
    <D.51552>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51561>; else goto <D.51558>;
    <D.51561>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51562 = D.51361->opcode;
    D.51563 = D.51562 + 64981;
    D.51564 = D.51563 <= 9;
    D.51565 = D.51562 + 64874;
    D.51566 = D.51565 <= 9;
    D.51567 = D.51564 | D.51566;
    if (D.51567 != 0) goto <D.51559>; else goto <D.51568>;
    <D.51568>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.51559>; else goto <D.51558>;
    <D.51559>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.51569>; else goto <D.51558>;
    <D.51569>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.51560>;
    <D.51558>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.51570>; else goto <D.51572>;
    <D.51572>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51573 = D.51361->opcode;
    D.51574 = D.51573 != 446;
    D.51575 = D.51573 != 763;
    D.51576 = D.51574 & D.51575;
    if (D.51576 != 0) goto <D.51577>; else goto <D.51571>;
    <D.51577>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51578 = D.51361->opcode;
    D.51579 = D.51578 + 64981;
    D.51580 = D.51579 > 9;
    D.51581 = D.51578 + 64874;
    D.51582 = D.51581 > 9;
    D.51583 = D.51580 & D.51582;
    if (D.51583 != 0) goto <D.51584>; else goto <D.51571>;
    <D.51584>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.51570>; else goto <D.51571>;
    <D.51570>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.51571>:
    <D.51560>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51585>;
    <D.51543>:
    D.51338 = cfg->mempool;
    D.51586 = mono_mempool_alloc (D.51338, 16);
    ins->data.op[1].many_blocks = D.51586;
    D.51587 = ins->data.op[1].many_blocks;
    *D.51587 = false2_bb;
    D.51587 = ins->data.op[1].many_blocks;
    D.51588 = D.51587 + 8;
    *D.51588 = 0B;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, false2_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51589>; else goto <D.51590>;
    <D.51589>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.51591>;
    <D.51590>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51591>:
    D.51428 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.51429 = D.51428 & 8;
    if (D.51429 == 0) goto <D.51592>; else goto <D.51593>;
    <D.51592>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.51594 = D.51339;
    D.51595 = D.51594 + 1;
    cfg->num_bblocks = D.51595;
    D.51596 = (int) D.51594;
    falsebb->block_num = D.51596;
    D.51587 = ins->data.op[1].many_blocks;
    D.51588 = D.51587 + 8;
    *D.51588 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    D.51550 = falsebb->cil_code;
    if (D.51550 != 0B) goto <D.51597>; else goto <D.51598>;
    <D.51597>:
    D.51380 = cfg->cil_offset_to_bb;
    D.51550 = falsebb->cil_code;
    D.51553 = (long int) D.51550;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.51554 = D.51553 - D.51383;
    D.51555 = (long unsigned int) D.51554;
    D.51556 = D.51555 * 8;
    D.51557 = D.51380 + D.51556;
    *D.51557 = falsebb;
    <D.51598>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51602>; else goto <D.51599>;
    <D.51602>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51603 = D.51361->opcode;
    D.51604 = D.51603 + 64981;
    D.51605 = D.51604 <= 9;
    D.51606 = D.51603 + 64874;
    D.51607 = D.51606 <= 9;
    D.51608 = D.51605 | D.51607;
    if (D.51608 != 0) goto <D.51600>; else goto <D.51609>;
    <D.51609>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.51600>; else goto <D.51599>;
    <D.51600>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.51610>; else goto <D.51599>;
    <D.51610>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.51601>;
    <D.51599>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.51611>; else goto <D.51613>;
    <D.51613>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51614 = D.51361->opcode;
    D.51615 = D.51614 != 446;
    D.51616 = D.51614 != 763;
    D.51617 = D.51615 & D.51616;
    if (D.51617 != 0) goto <D.51618>; else goto <D.51612>;
    <D.51618>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51619 = D.51361->opcode;
    D.51620 = D.51619 + 64981;
    D.51621 = D.51620 > 9;
    D.51622 = D.51619 + 64874;
    D.51623 = D.51622 > 9;
    D.51624 = D.51621 & D.51623;
    if (D.51624 != 0) goto <D.51625>; else goto <D.51612>;
    <D.51625>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.51611>; else goto <D.51612>;
    <D.51611>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.51612>:
    <D.51601>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51626>;
    <D.51593>:
    D.51360 = cfg->cbb;
    D.51360->extended = 1;
    <D.51626>:
    <D.51585>:
  }
  goto <D.51627>;
  <D.51468>:
  D.51628 = alloc_preg (cfg);
  tmp_reg = (int) D.51628;
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51629 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51629;
    inst->prev = 0B;
    D.51630 = inst->prev;
    inst->next = D.51630;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51631 = inst->sreg3;
    inst->sreg2 = D.51631;
    D.51632 = inst->sreg2;
    inst->sreg1 = D.51632;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51633>; else goto <D.51634>;
    <D.51633>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51635>;
    <D.51634>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51635>:
  }
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51636 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51636;
    inst->prev = 0B;
    D.51637 = inst->prev;
    inst->next = D.51637;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51638 = inst->sreg3;
    inst->sreg2 = D.51638;
    D.51639 = inst->sreg2;
    inst->sreg1 = D.51639;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51640>; else goto <D.51641>;
    <D.51640>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51642>;
    <D.51641>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51642>:
  }
  D.51522 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.51522, 560, no_proxy_bb);
  D.51643 = alloc_preg (cfg);
  tmp_reg = (int) D.51643;
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51644 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51644;
    inst->prev = 0B;
    D.51645 = inst->prev;
    inst->next = D.51645;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51646 = inst->sreg3;
    inst->sreg2 = D.51646;
    D.51647 = inst->sreg2;
    inst->sreg1 = D.51647;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 24;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51648>; else goto <D.51649>;
    <D.51648>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51650>;
    <D.51649>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51650>:
  }
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51651 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51651;
    inst->prev = 0B;
    D.51652 = inst->prev;
    inst->next = D.51652;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51653 = inst->sreg3;
    inst->sreg2 = D.51653;
    D.51654 = inst->sreg2;
    inst->sreg1 = D.51654;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 16;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51655>; else goto <D.51656>;
    <D.51655>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51657>;
    <D.51656>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51657>:
  }
  D.51658 = alloc_preg (cfg);
  tmp_reg = (int) D.51658;
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51659 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51659;
    inst->prev = 0B;
    D.51660 = inst->prev;
    inst->next = D.51660;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51661 = inst->sreg3;
    inst->sreg2 = D.51661;
    D.51662 = inst->sreg2;
    inst->sreg1 = D.51662;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 32;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51663>; else goto <D.51664>;
    <D.51663>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51665>;
    <D.51664>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51665>:
  }
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51666 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51666;
    inst->prev = 0B;
    D.51667 = inst->prev;
    inst->next = D.51667;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51668 = inst->sreg3;
    inst->sreg2 = D.51668;
    D.51669 = inst->sreg2;
    inst->sreg1 = D.51669;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51670>; else goto <D.51671>;
    <D.51670>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51672>;
    <D.51671>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51672>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51338 = cfg->mempool;
    ins = mono_mempool_alloc (D.51338, 80);
    ins->data.op[1].const_val = 0;
    D.51673 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.51673;
    ins->prev = 0B;
    D.51674 = ins->prev;
    ins->next = D.51674;
    ins->opcode = 555;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.51675 = ins->sreg3;
    ins->sreg2 = D.51675;
    D.51676 = ins->sreg2;
    ins->sreg1 = D.51676;
    D.51359 = cfg->ip;
    ins->cil_code = D.51359;
    if (0 != 0) goto <D.51677>; else goto <D.51678>;
    <D.51677>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.51679 = D.51339;
    D.51680 = D.51679 + 1;
    cfg->num_bblocks = D.51680;
    D.51681 = (int) D.51679;
    falsebb->block_num = D.51681;
    ins->data.op[0].target_block = no_proxy_bb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, no_proxy_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51682>; else goto <D.51683>;
    <D.51682>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.51684>;
    <D.51683>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51684>:
    D.51685 = falsebb->cil_code;
    if (D.51685 != 0B) goto <D.51686>; else goto <D.51687>;
    <D.51686>:
    D.51380 = cfg->cil_offset_to_bb;
    D.51685 = falsebb->cil_code;
    D.51688 = (long int) D.51685;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.51689 = D.51688 - D.51383;
    D.51690 = (long unsigned int) D.51689;
    D.51691 = D.51690 * 8;
    D.51692 = D.51380 + D.51691;
    *D.51692 = falsebb;
    <D.51687>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51696>; else goto <D.51693>;
    <D.51696>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51697 = D.51361->opcode;
    D.51698 = D.51697 + 64981;
    D.51699 = D.51698 <= 9;
    D.51700 = D.51697 + 64874;
    D.51701 = D.51700 <= 9;
    D.51702 = D.51699 | D.51701;
    if (D.51702 != 0) goto <D.51694>; else goto <D.51703>;
    <D.51703>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.51694>; else goto <D.51693>;
    <D.51694>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.51704>; else goto <D.51693>;
    <D.51704>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.51695>;
    <D.51693>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.51705>; else goto <D.51707>;
    <D.51707>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51708 = D.51361->opcode;
    D.51709 = D.51708 != 446;
    D.51710 = D.51708 != 763;
    D.51711 = D.51709 & D.51710;
    if (D.51711 != 0) goto <D.51712>; else goto <D.51706>;
    <D.51712>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51713 = D.51361->opcode;
    D.51714 = D.51713 + 64981;
    D.51715 = D.51714 > 9;
    D.51716 = D.51713 + 64874;
    D.51717 = D.51716 > 9;
    D.51718 = D.51715 & D.51717;
    if (D.51718 != 0) goto <D.51719>; else goto <D.51706>;
    <D.51719>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.51705>; else goto <D.51706>;
    <D.51705>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.51706>:
    <D.51695>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51720>;
    <D.51678>:
    D.51338 = cfg->mempool;
    D.51721 = mono_mempool_alloc (D.51338, 16);
    ins->data.op[1].many_blocks = D.51721;
    D.51722 = ins->data.op[1].many_blocks;
    *D.51722 = no_proxy_bb;
    D.51722 = ins->data.op[1].many_blocks;
    D.51723 = D.51722 + 8;
    *D.51723 = 0B;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, no_proxy_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51724>; else goto <D.51725>;
    <D.51724>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.51726>;
    <D.51725>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51726>:
    D.51428 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.51429 = D.51428 & 8;
    if (D.51429 == 0) goto <D.51727>; else goto <D.51728>;
    <D.51727>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.51729 = D.51339;
    D.51730 = D.51729 + 1;
    cfg->num_bblocks = D.51730;
    D.51731 = (int) D.51729;
    falsebb->block_num = D.51731;
    D.51722 = ins->data.op[1].many_blocks;
    D.51723 = D.51722 + 8;
    *D.51723 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    D.51685 = falsebb->cil_code;
    if (D.51685 != 0B) goto <D.51732>; else goto <D.51733>;
    <D.51732>:
    D.51380 = cfg->cil_offset_to_bb;
    D.51685 = falsebb->cil_code;
    D.51688 = (long int) D.51685;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.51689 = D.51688 - D.51383;
    D.51690 = (long unsigned int) D.51689;
    D.51691 = D.51690 * 8;
    D.51692 = D.51380 + D.51691;
    *D.51692 = falsebb;
    <D.51733>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51737>; else goto <D.51734>;
    <D.51737>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51738 = D.51361->opcode;
    D.51739 = D.51738 + 64981;
    D.51740 = D.51739 <= 9;
    D.51741 = D.51738 + 64874;
    D.51742 = D.51741 <= 9;
    D.51743 = D.51740 | D.51742;
    if (D.51743 != 0) goto <D.51735>; else goto <D.51744>;
    <D.51744>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.51735>; else goto <D.51734>;
    <D.51735>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.51745>; else goto <D.51734>;
    <D.51745>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.51736>;
    <D.51734>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.51746>; else goto <D.51748>;
    <D.51748>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51749 = D.51361->opcode;
    D.51750 = D.51749 != 446;
    D.51751 = D.51749 != 763;
    D.51752 = D.51750 & D.51751;
    if (D.51752 != 0) goto <D.51753>; else goto <D.51747>;
    <D.51753>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51754 = D.51361->opcode;
    D.51755 = D.51754 + 64981;
    D.51756 = D.51755 > 9;
    D.51757 = D.51754 + 64874;
    D.51758 = D.51757 > 9;
    D.51759 = D.51756 & D.51758;
    if (D.51759 != 0) goto <D.51760>; else goto <D.51747>;
    <D.51760>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.51746>; else goto <D.51747>;
    <D.51746>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.51747>:
    <D.51736>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51761>;
    <D.51728>:
    D.51360 = cfg->cbb;
    D.51360->extended = 1;
    <D.51761>:
    <D.51720>:
  }
  mini_emit_isninst_cast (cfg, klass_reg, klass, false2_bb, true_bb);
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51338 = cfg->mempool;
    ins = mono_mempool_alloc (D.51338, 80);
    ins->data.op[1].const_val = 0;
    D.51762 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.51762;
    ins->prev = 0B;
    D.51763 = ins->prev;
    ins->next = D.51763;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.51764 = ins->sreg3;
    ins->sreg2 = D.51764;
    D.51765 = ins->sreg2;
    ins->sreg1 = D.51765;
    D.51359 = cfg->ip;
    ins->cil_code = D.51359;
    if (1 != 0) goto <D.51766>; else goto <D.51767>;
    <D.51766>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.51768 = D.51339;
    D.51769 = D.51768 + 1;
    cfg->num_bblocks = D.51769;
    D.51770 = (int) D.51768;
    falsebb->block_num = D.51770;
    ins->data.op[0].target_block = false2_bb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, false2_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51771>; else goto <D.51772>;
    <D.51771>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.51773>;
    <D.51772>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51773>:
    D.51774 = falsebb->cil_code;
    if (D.51774 != 0B) goto <D.51775>; else goto <D.51776>;
    <D.51775>:
    D.51380 = cfg->cil_offset_to_bb;
    D.51774 = falsebb->cil_code;
    D.51777 = (long int) D.51774;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.51778 = D.51777 - D.51383;
    D.51779 = (long unsigned int) D.51778;
    D.51780 = D.51779 * 8;
    D.51781 = D.51380 + D.51780;
    *D.51781 = falsebb;
    <D.51776>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51785>; else goto <D.51782>;
    <D.51785>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51786 = D.51361->opcode;
    D.51787 = D.51786 + 64981;
    D.51788 = D.51787 <= 9;
    D.51789 = D.51786 + 64874;
    D.51790 = D.51789 <= 9;
    D.51791 = D.51788 | D.51790;
    if (D.51791 != 0) goto <D.51783>; else goto <D.51792>;
    <D.51792>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.51783>; else goto <D.51782>;
    <D.51783>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.51793>; else goto <D.51782>;
    <D.51793>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.51784>;
    <D.51782>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.51794>; else goto <D.51796>;
    <D.51796>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51797 = D.51361->opcode;
    D.51798 = D.51797 != 446;
    D.51799 = D.51797 != 763;
    D.51800 = D.51798 & D.51799;
    if (D.51800 != 0) goto <D.51801>; else goto <D.51795>;
    <D.51801>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51802 = D.51361->opcode;
    D.51803 = D.51802 + 64981;
    D.51804 = D.51803 > 9;
    D.51805 = D.51802 + 64874;
    D.51806 = D.51805 > 9;
    D.51807 = D.51804 & D.51806;
    if (D.51807 != 0) goto <D.51808>; else goto <D.51795>;
    <D.51808>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.51794>; else goto <D.51795>;
    <D.51794>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.51795>:
    <D.51784>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51809>;
    <D.51767>:
    D.51338 = cfg->mempool;
    D.51810 = mono_mempool_alloc (D.51338, 16);
    ins->data.op[1].many_blocks = D.51810;
    D.51811 = ins->data.op[1].many_blocks;
    *D.51811 = false2_bb;
    D.51811 = ins->data.op[1].many_blocks;
    D.51812 = D.51811 + 8;
    *D.51812 = 0B;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, false2_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51813>; else goto <D.51814>;
    <D.51813>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.51815>;
    <D.51814>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51815>:
    D.51428 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.51429 = D.51428 & 8;
    if (D.51429 == 0) goto <D.51816>; else goto <D.51817>;
    <D.51816>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.51818 = D.51339;
    D.51819 = D.51818 + 1;
    cfg->num_bblocks = D.51819;
    D.51820 = (int) D.51818;
    falsebb->block_num = D.51820;
    D.51811 = ins->data.op[1].many_blocks;
    D.51812 = D.51811 + 8;
    *D.51812 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    D.51774 = falsebb->cil_code;
    if (D.51774 != 0B) goto <D.51821>; else goto <D.51822>;
    <D.51821>:
    D.51380 = cfg->cil_offset_to_bb;
    D.51774 = falsebb->cil_code;
    D.51777 = (long int) D.51774;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.51778 = D.51777 - D.51383;
    D.51779 = (long unsigned int) D.51778;
    D.51780 = D.51779 * 8;
    D.51781 = D.51380 + D.51780;
    *D.51781 = falsebb;
    <D.51822>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51826>; else goto <D.51823>;
    <D.51826>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51827 = D.51361->opcode;
    D.51828 = D.51827 + 64981;
    D.51829 = D.51828 <= 9;
    D.51830 = D.51827 + 64874;
    D.51831 = D.51830 <= 9;
    D.51832 = D.51829 | D.51831;
    if (D.51832 != 0) goto <D.51824>; else goto <D.51833>;
    <D.51833>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.51824>; else goto <D.51823>;
    <D.51824>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.51834>; else goto <D.51823>;
    <D.51834>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.51825>;
    <D.51823>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.51835>; else goto <D.51837>;
    <D.51837>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51838 = D.51361->opcode;
    D.51839 = D.51838 != 446;
    D.51840 = D.51838 != 763;
    D.51841 = D.51839 & D.51840;
    if (D.51841 != 0) goto <D.51842>; else goto <D.51836>;
    <D.51842>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51843 = D.51361->opcode;
    D.51844 = D.51843 + 64981;
    D.51845 = D.51844 > 9;
    D.51846 = D.51843 + 64874;
    D.51847 = D.51846 > 9;
    D.51848 = D.51845 & D.51847;
    if (D.51848 != 0) goto <D.51849>; else goto <D.51836>;
    <D.51849>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.51835>; else goto <D.51836>;
    <D.51835>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.51836>:
    <D.51825>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51850>;
    <D.51817>:
    D.51360 = cfg->cbb;
    D.51360->extended = 1;
    <D.51850>:
    <D.51809>:
  }
  D.51851 = no_proxy_bb->cil_code;
  if (D.51851 != 0B) goto <D.51852>; else goto <D.51853>;
  <D.51852>:
  D.51380 = cfg->cil_offset_to_bb;
  D.51851 = no_proxy_bb->cil_code;
  D.51854 = (long int) D.51851;
  D.51382 = cfg->cil_start;
  D.51383 = (long int) D.51382;
  D.51855 = D.51854 - D.51383;
  D.51856 = (long unsigned int) D.51855;
  D.51857 = D.51856 * 8;
  D.51858 = D.51380 + D.51857;
  *D.51858 = no_proxy_bb;
  <D.51853>:
  D.51388 = cfg->real_offset;
  no_proxy_bb->real_offset = D.51388;
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 != 0B) goto <D.51862>; else goto <D.51859>;
  <D.51862>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51863 = D.51361->opcode;
  D.51864 = D.51863 + 64981;
  D.51865 = D.51864 <= 9;
  D.51866 = D.51863 + 64874;
  D.51867 = D.51866 <= 9;
  D.51868 = D.51865 | D.51867;
  if (D.51868 != 0) goto <D.51860>; else goto <D.51869>;
  <D.51869>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 <= 9) goto <D.51860>; else goto <D.51859>;
  <D.51860>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  D.51404 = *D.51403;
  if (D.51404 == 0B) goto <D.51870>; else goto <D.51859>;
  <D.51870>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  *D.51403 = no_proxy_bb;
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, no_proxy_bb);
  goto <D.51861>;
  <D.51859>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 == 0B) goto <D.51871>; else goto <D.51873>;
  <D.51873>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51874 = D.51361->opcode;
  D.51875 = D.51874 != 446;
  D.51876 = D.51874 != 763;
  D.51877 = D.51875 & D.51876;
  if (D.51877 != 0) goto <D.51878>; else goto <D.51872>;
  <D.51878>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51879 = D.51361->opcode;
  D.51880 = D.51879 + 64981;
  D.51881 = D.51880 > 9;
  D.51882 = D.51879 + 64874;
  D.51883 = D.51882 > 9;
  D.51884 = D.51881 & D.51883;
  if (D.51884 != 0) goto <D.51885>; else goto <D.51872>;
  <D.51885>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 > 9) goto <D.51871>; else goto <D.51872>;
  <D.51871>:
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, no_proxy_bb);
  <D.51872>:
  <D.51861>:
  D.51360 = cfg->cbb;
  D.51360->next_bb = no_proxy_bb;
  cfg->cbb = no_proxy_bb;
  mini_emit_isninst_cast (cfg, klass_reg, klass, false_bb, true_bb);
  <D.51627>:
  D.51886 = false_bb->cil_code;
  if (D.51886 != 0B) goto <D.51887>; else goto <D.51888>;
  <D.51887>:
  D.51380 = cfg->cil_offset_to_bb;
  D.51886 = false_bb->cil_code;
  D.51889 = (long int) D.51886;
  D.51382 = cfg->cil_start;
  D.51383 = (long int) D.51382;
  D.51890 = D.51889 - D.51383;
  D.51891 = (long unsigned int) D.51890;
  D.51892 = D.51891 * 8;
  D.51893 = D.51380 + D.51892;
  *D.51893 = false_bb;
  <D.51888>:
  D.51388 = cfg->real_offset;
  false_bb->real_offset = D.51388;
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 != 0B) goto <D.51897>; else goto <D.51894>;
  <D.51897>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51898 = D.51361->opcode;
  D.51899 = D.51898 + 64981;
  D.51900 = D.51899 <= 9;
  D.51901 = D.51898 + 64874;
  D.51902 = D.51901 <= 9;
  D.51903 = D.51900 | D.51902;
  if (D.51903 != 0) goto <D.51895>; else goto <D.51904>;
  <D.51904>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 <= 9) goto <D.51895>; else goto <D.51894>;
  <D.51895>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  D.51404 = *D.51403;
  if (D.51404 == 0B) goto <D.51905>; else goto <D.51894>;
  <D.51905>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  *D.51403 = false_bb;
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, false_bb);
  goto <D.51896>;
  <D.51894>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 == 0B) goto <D.51906>; else goto <D.51908>;
  <D.51908>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51909 = D.51361->opcode;
  D.51910 = D.51909 != 446;
  D.51911 = D.51909 != 763;
  D.51912 = D.51910 & D.51911;
  if (D.51912 != 0) goto <D.51913>; else goto <D.51907>;
  <D.51913>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51914 = D.51361->opcode;
  D.51915 = D.51914 + 64981;
  D.51916 = D.51915 > 9;
  D.51917 = D.51914 + 64874;
  D.51918 = D.51917 > 9;
  D.51919 = D.51916 & D.51918;
  if (D.51919 != 0) goto <D.51920>; else goto <D.51907>;
  <D.51920>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 > 9) goto <D.51906>; else goto <D.51907>;
  <D.51906>:
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, false_bb);
  <D.51907>:
  <D.51896>:
  D.51360 = cfg->cbb;
  D.51360->next_bb = false_bb;
  cfg->cbb = false_bb;
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.51921 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.51921;
    inst->prev = 0B;
    D.51922 = inst->prev;
    inst->next = D.51922;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.51923 = inst->sreg3;
    inst->sreg2 = D.51923;
    D.51924 = inst->sreg2;
    inst->sreg1 = D.51924;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51925>; else goto <D.51926>;
    <D.51925>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.51927>;
    <D.51926>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51927>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51338 = cfg->mempool;
    ins = mono_mempool_alloc (D.51338, 80);
    ins->data.op[1].const_val = 0;
    D.51928 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.51928;
    ins->prev = 0B;
    D.51929 = ins->prev;
    ins->next = D.51929;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.51930 = ins->sreg3;
    ins->sreg2 = D.51930;
    D.51931 = ins->sreg2;
    ins->sreg1 = D.51931;
    D.51359 = cfg->ip;
    ins->cil_code = D.51359;
    if (1 != 0) goto <D.51932>; else goto <D.51933>;
    <D.51932>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.51934 = D.51339;
    D.51935 = D.51934 + 1;
    cfg->num_bblocks = D.51935;
    D.51936 = (int) D.51934;
    falsebb->block_num = D.51936;
    ins->data.op[0].target_block = end_bb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, end_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51937>; else goto <D.51938>;
    <D.51937>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.51939>;
    <D.51938>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51939>:
    D.51940 = falsebb->cil_code;
    if (D.51940 != 0B) goto <D.51941>; else goto <D.51942>;
    <D.51941>:
    D.51380 = cfg->cil_offset_to_bb;
    D.51940 = falsebb->cil_code;
    D.51943 = (long int) D.51940;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.51944 = D.51943 - D.51383;
    D.51945 = (long unsigned int) D.51944;
    D.51946 = D.51945 * 8;
    D.51947 = D.51380 + D.51946;
    *D.51947 = falsebb;
    <D.51942>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51951>; else goto <D.51948>;
    <D.51951>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51952 = D.51361->opcode;
    D.51953 = D.51952 + 64981;
    D.51954 = D.51953 <= 9;
    D.51955 = D.51952 + 64874;
    D.51956 = D.51955 <= 9;
    D.51957 = D.51954 | D.51956;
    if (D.51957 != 0) goto <D.51949>; else goto <D.51958>;
    <D.51958>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.51949>; else goto <D.51948>;
    <D.51949>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.51959>; else goto <D.51948>;
    <D.51959>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.51950>;
    <D.51948>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.51960>; else goto <D.51962>;
    <D.51962>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51963 = D.51361->opcode;
    D.51964 = D.51963 != 446;
    D.51965 = D.51963 != 763;
    D.51966 = D.51964 & D.51965;
    if (D.51966 != 0) goto <D.51967>; else goto <D.51961>;
    <D.51967>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51968 = D.51361->opcode;
    D.51969 = D.51968 + 64981;
    D.51970 = D.51969 > 9;
    D.51971 = D.51968 + 64874;
    D.51972 = D.51971 > 9;
    D.51973 = D.51970 & D.51972;
    if (D.51973 != 0) goto <D.51974>; else goto <D.51961>;
    <D.51974>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.51960>; else goto <D.51961>;
    <D.51960>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.51961>:
    <D.51950>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.51975>;
    <D.51933>:
    D.51338 = cfg->mempool;
    D.51976 = mono_mempool_alloc (D.51338, 16);
    ins->data.op[1].many_blocks = D.51976;
    D.51977 = ins->data.op[1].many_blocks;
    *D.51977 = end_bb;
    D.51977 = ins->data.op[1].many_blocks;
    D.51978 = D.51977 + 8;
    *D.51978 = 0B;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, end_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51979>; else goto <D.51980>;
    <D.51979>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.51981>;
    <D.51980>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.51981>:
    D.51428 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.51429 = D.51428 & 8;
    if (D.51429 == 0) goto <D.51982>; else goto <D.51983>;
    <D.51982>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.51984 = D.51339;
    D.51985 = D.51984 + 1;
    cfg->num_bblocks = D.51985;
    D.51986 = (int) D.51984;
    falsebb->block_num = D.51986;
    D.51977 = ins->data.op[1].many_blocks;
    D.51978 = D.51977 + 8;
    *D.51978 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    D.51940 = falsebb->cil_code;
    if (D.51940 != 0B) goto <D.51987>; else goto <D.51988>;
    <D.51987>:
    D.51380 = cfg->cil_offset_to_bb;
    D.51940 = falsebb->cil_code;
    D.51943 = (long int) D.51940;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.51944 = D.51943 - D.51383;
    D.51945 = (long unsigned int) D.51944;
    D.51946 = D.51945 * 8;
    D.51947 = D.51380 + D.51946;
    *D.51947 = falsebb;
    <D.51988>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.51992>; else goto <D.51989>;
    <D.51992>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51993 = D.51361->opcode;
    D.51994 = D.51993 + 64981;
    D.51995 = D.51994 <= 9;
    D.51996 = D.51993 + 64874;
    D.51997 = D.51996 <= 9;
    D.51998 = D.51995 | D.51997;
    if (D.51998 != 0) goto <D.51990>; else goto <D.51999>;
    <D.51999>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.51990>; else goto <D.51989>;
    <D.51990>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.52000>; else goto <D.51989>;
    <D.52000>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.51991>;
    <D.51989>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.52001>; else goto <D.52003>;
    <D.52003>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.52004 = D.51361->opcode;
    D.52005 = D.52004 != 446;
    D.52006 = D.52004 != 763;
    D.52007 = D.52005 & D.52006;
    if (D.52007 != 0) goto <D.52008>; else goto <D.52002>;
    <D.52008>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.52009 = D.51361->opcode;
    D.52010 = D.52009 + 64981;
    D.52011 = D.52010 > 9;
    D.52012 = D.52009 + 64874;
    D.52013 = D.52012 > 9;
    D.52014 = D.52011 & D.52013;
    if (D.52014 != 0) goto <D.52015>; else goto <D.52002>;
    <D.52015>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.52001>; else goto <D.52002>;
    <D.52001>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.52002>:
    <D.51991>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52016>;
    <D.51983>:
    D.51360 = cfg->cbb;
    D.51360->extended = 1;
    <D.52016>:
    <D.51975>:
  }
  D.52017 = false2_bb->cil_code;
  if (D.52017 != 0B) goto <D.52018>; else goto <D.52019>;
  <D.52018>:
  D.51380 = cfg->cil_offset_to_bb;
  D.52017 = false2_bb->cil_code;
  D.52020 = (long int) D.52017;
  D.51382 = cfg->cil_start;
  D.51383 = (long int) D.51382;
  D.52021 = D.52020 - D.51383;
  D.52022 = (long unsigned int) D.52021;
  D.52023 = D.52022 * 8;
  D.52024 = D.51380 + D.52023;
  *D.52024 = false2_bb;
  <D.52019>:
  D.51388 = cfg->real_offset;
  false2_bb->real_offset = D.51388;
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 != 0B) goto <D.52028>; else goto <D.52025>;
  <D.52028>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.52029 = D.51361->opcode;
  D.52030 = D.52029 + 64981;
  D.52031 = D.52030 <= 9;
  D.52032 = D.52029 + 64874;
  D.52033 = D.52032 <= 9;
  D.52034 = D.52031 | D.52033;
  if (D.52034 != 0) goto <D.52026>; else goto <D.52035>;
  <D.52035>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 <= 9) goto <D.52026>; else goto <D.52025>;
  <D.52026>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  D.51404 = *D.51403;
  if (D.51404 == 0B) goto <D.52036>; else goto <D.52025>;
  <D.52036>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  *D.51403 = false2_bb;
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, false2_bb);
  goto <D.52027>;
  <D.52025>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 == 0B) goto <D.52037>; else goto <D.52039>;
  <D.52039>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.52040 = D.51361->opcode;
  D.52041 = D.52040 != 446;
  D.52042 = D.52040 != 763;
  D.52043 = D.52041 & D.52042;
  if (D.52043 != 0) goto <D.52044>; else goto <D.52038>;
  <D.52044>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.52045 = D.51361->opcode;
  D.52046 = D.52045 + 64981;
  D.52047 = D.52046 > 9;
  D.52048 = D.52045 + 64874;
  D.52049 = D.52048 > 9;
  D.52050 = D.52047 & D.52049;
  if (D.52050 != 0) goto <D.52051>; else goto <D.52038>;
  <D.52051>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 > 9) goto <D.52037>; else goto <D.52038>;
  <D.52037>:
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, false2_bb);
  <D.52038>:
  <D.52027>:
  D.51360 = cfg->cbb;
  D.51360->next_bb = false2_bb;
  cfg->cbb = false2_bb;
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.52052 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52052;
    inst->prev = 0B;
    D.52053 = inst->prev;
    inst->next = D.52053;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52054 = inst->sreg3;
    inst->sreg2 = D.52054;
    D.52055 = inst->sreg2;
    inst->sreg1 = D.52055;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 2;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.52056>; else goto <D.52057>;
    <D.52056>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.52058>;
    <D.52057>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.52058>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.51338 = cfg->mempool;
    ins = mono_mempool_alloc (D.51338, 80);
    ins->data.op[1].const_val = 0;
    D.52059 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52059;
    ins->prev = 0B;
    D.52060 = ins->prev;
    ins->next = D.52060;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52061 = ins->sreg3;
    ins->sreg2 = D.52061;
    D.52062 = ins->sreg2;
    ins->sreg1 = D.52062;
    D.51359 = cfg->ip;
    ins->cil_code = D.51359;
    if (1 != 0) goto <D.52063>; else goto <D.52064>;
    <D.52063>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.52065 = D.51339;
    D.52066 = D.52065 + 1;
    cfg->num_bblocks = D.52066;
    D.52067 = (int) D.52065;
    falsebb->block_num = D.52067;
    ins->data.op[0].target_block = end_bb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, end_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.52068>; else goto <D.52069>;
    <D.52068>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.52070>;
    <D.52069>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.52070>:
    D.52071 = falsebb->cil_code;
    if (D.52071 != 0B) goto <D.52072>; else goto <D.52073>;
    <D.52072>:
    D.51380 = cfg->cil_offset_to_bb;
    D.52071 = falsebb->cil_code;
    D.52074 = (long int) D.52071;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.52075 = D.52074 - D.51383;
    D.52076 = (long unsigned int) D.52075;
    D.52077 = D.52076 * 8;
    D.52078 = D.51380 + D.52077;
    *D.52078 = falsebb;
    <D.52073>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.52082>; else goto <D.52079>;
    <D.52082>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.52083 = D.51361->opcode;
    D.52084 = D.52083 + 64981;
    D.52085 = D.52084 <= 9;
    D.52086 = D.52083 + 64874;
    D.52087 = D.52086 <= 9;
    D.52088 = D.52085 | D.52087;
    if (D.52088 != 0) goto <D.52080>; else goto <D.52089>;
    <D.52089>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.52080>; else goto <D.52079>;
    <D.52080>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.52090>; else goto <D.52079>;
    <D.52090>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.52081>;
    <D.52079>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.52091>; else goto <D.52093>;
    <D.52093>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.52094 = D.51361->opcode;
    D.52095 = D.52094 != 446;
    D.52096 = D.52094 != 763;
    D.52097 = D.52095 & D.52096;
    if (D.52097 != 0) goto <D.52098>; else goto <D.52092>;
    <D.52098>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.52099 = D.51361->opcode;
    D.52100 = D.52099 + 64981;
    D.52101 = D.52100 > 9;
    D.52102 = D.52099 + 64874;
    D.52103 = D.52102 > 9;
    D.52104 = D.52101 & D.52103;
    if (D.52104 != 0) goto <D.52105>; else goto <D.52092>;
    <D.52105>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.52091>; else goto <D.52092>;
    <D.52091>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.52092>:
    <D.52081>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52106>;
    <D.52064>:
    D.51338 = cfg->mempool;
    D.52107 = mono_mempool_alloc (D.51338, 16);
    ins->data.op[1].many_blocks = D.52107;
    D.52108 = ins->data.op[1].many_blocks;
    *D.52108 = end_bb;
    D.52108 = ins->data.op[1].many_blocks;
    D.52109 = D.52108 + 8;
    *D.52109 = 0B;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, end_bb);
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.52110>; else goto <D.52111>;
    <D.52110>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = ins;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    ins->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    goto <D.52112>;
    <D.52111>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = ins;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.52112>:
    D.51428 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.51429 = D.51428 & 8;
    if (D.51429 == 0) goto <D.52113>; else goto <D.52114>;
    <D.52113>:
    D.51338 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.51338, 296);
    D.51339 = cfg->num_bblocks;
    D.52115 = D.51339;
    D.52116 = D.52115 + 1;
    cfg->num_bblocks = D.52116;
    D.52117 = (int) D.52115;
    falsebb->block_num = D.52117;
    D.52108 = ins->data.op[1].many_blocks;
    D.52109 = D.52108 + 8;
    *D.52109 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    D.52071 = falsebb->cil_code;
    if (D.52071 != 0B) goto <D.52118>; else goto <D.52119>;
    <D.52118>:
    D.51380 = cfg->cil_offset_to_bb;
    D.52071 = falsebb->cil_code;
    D.52074 = (long int) D.52071;
    D.51382 = cfg->cil_start;
    D.51383 = (long int) D.51382;
    D.52075 = D.52074 - D.51383;
    D.52076 = (long unsigned int) D.52075;
    D.52077 = D.52076 * 8;
    D.52078 = D.51380 + D.52077;
    *D.52078 = falsebb;
    <D.52119>:
    D.51388 = cfg->real_offset;
    falsebb->real_offset = D.51388;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.52123>; else goto <D.52120>;
    <D.52123>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.52124 = D.51361->opcode;
    D.52125 = D.52124 + 64981;
    D.52126 = D.52125 <= 9;
    D.52127 = D.52124 + 64874;
    D.52128 = D.52127 <= 9;
    D.52129 = D.52126 | D.52128;
    if (D.52129 != 0) goto <D.52121>; else goto <D.52130>;
    <D.52130>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 <= 9) goto <D.52121>; else goto <D.52120>;
    <D.52121>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    D.51404 = *D.51403;
    if (D.51404 == 0B) goto <D.52131>; else goto <D.52120>;
    <D.52131>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51402 = D.51361->data.op[1].many_blocks;
    D.51403 = D.51402 + 8;
    *D.51403 = falsebb;
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    goto <D.52122>;
    <D.52120>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 == 0B) goto <D.52132>; else goto <D.52134>;
    <D.52134>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.52135 = D.51361->opcode;
    D.52136 = D.52135 != 446;
    D.52137 = D.52135 != 763;
    D.52138 = D.52136 & D.52137;
    if (D.52138 != 0) goto <D.52139>; else goto <D.52133>;
    <D.52139>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.52140 = D.51361->opcode;
    D.52141 = D.52140 + 64981;
    D.52142 = D.52141 > 9;
    D.52143 = D.52140 + 64874;
    D.52144 = D.52143 > 9;
    D.52145 = D.52142 & D.52144;
    if (D.52145 != 0) goto <D.52146>; else goto <D.52133>;
    <D.52146>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51400 = D.51361->opcode;
    D.51401 = D.51400 + 64884;
    if (D.51401 > 9) goto <D.52132>; else goto <D.52133>;
    <D.52132>:
    D.51360 = cfg->cbb;
    mono_link_bblock (cfg, D.51360, falsebb);
    <D.52133>:
    <D.52122>:
    D.51360 = cfg->cbb;
    D.51360->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52147>;
    <D.52114>:
    D.51360 = cfg->cbb;
    D.51360->extended = 1;
    <D.52147>:
    <D.52106>:
  }
  D.52148 = true_bb->cil_code;
  if (D.52148 != 0B) goto <D.52149>; else goto <D.52150>;
  <D.52149>:
  D.51380 = cfg->cil_offset_to_bb;
  D.52148 = true_bb->cil_code;
  D.52151 = (long int) D.52148;
  D.51382 = cfg->cil_start;
  D.51383 = (long int) D.51382;
  D.52152 = D.52151 - D.51383;
  D.52153 = (long unsigned int) D.52152;
  D.52154 = D.52153 * 8;
  D.52155 = D.51380 + D.52154;
  *D.52155 = true_bb;
  <D.52150>:
  D.51388 = cfg->real_offset;
  true_bb->real_offset = D.51388;
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 != 0B) goto <D.52159>; else goto <D.52156>;
  <D.52159>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.52160 = D.51361->opcode;
  D.52161 = D.52160 + 64981;
  D.52162 = D.52161 <= 9;
  D.52163 = D.52160 + 64874;
  D.52164 = D.52163 <= 9;
  D.52165 = D.52162 | D.52164;
  if (D.52165 != 0) goto <D.52157>; else goto <D.52166>;
  <D.52166>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 <= 9) goto <D.52157>; else goto <D.52156>;
  <D.52157>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  D.51404 = *D.51403;
  if (D.51404 == 0B) goto <D.52167>; else goto <D.52156>;
  <D.52167>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  *D.51403 = true_bb;
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, true_bb);
  goto <D.52158>;
  <D.52156>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 == 0B) goto <D.52168>; else goto <D.52170>;
  <D.52170>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.52171 = D.51361->opcode;
  D.52172 = D.52171 != 446;
  D.52173 = D.52171 != 763;
  D.52174 = D.52172 & D.52173;
  if (D.52174 != 0) goto <D.52175>; else goto <D.52169>;
  <D.52175>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.52176 = D.51361->opcode;
  D.52177 = D.52176 + 64981;
  D.52178 = D.52177 > 9;
  D.52179 = D.52176 + 64874;
  D.52180 = D.52179 > 9;
  D.52181 = D.52178 & D.52180;
  if (D.52181 != 0) goto <D.52182>; else goto <D.52169>;
  <D.52182>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 > 9) goto <D.52168>; else goto <D.52169>;
  <D.52168>:
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, true_bb);
  <D.52169>:
  <D.52158>:
  D.51360 = cfg->cbb;
  D.51360->next_bb = true_bb;
  cfg->cbb = true_bb;
  {
    struct MonoInst * inst;

    D.51338 = cfg->mempool;
    inst = mono_mempool_alloc (D.51338, 80);
    inst->data.op[1].const_val = 0;
    D.52183 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52183;
    inst->prev = 0B;
    D.52184 = inst->prev;
    inst->next = D.52184;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52185 = inst->sreg3;
    inst->sreg2 = D.52185;
    D.52186 = inst->sreg2;
    inst->sreg1 = D.52186;
    D.51359 = cfg->ip;
    inst->cil_code = D.51359;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    if (D.51361 != 0B) goto <D.52187>; else goto <D.52188>;
    <D.52187>:
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    D.51361->next = inst;
    D.51360 = cfg->cbb;
    D.51361 = D.51360->last_ins;
    inst->prev = D.51361;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    goto <D.52189>;
    <D.52188>:
    D.51360 = cfg->cbb;
    D.51360 = cfg->cbb;
    D.51360->last_ins = inst;
    D.51361 = D.51360->last_ins;
    D.51360->code = D.51361;
    <D.52189>:
  }
  D.52190 = end_bb->cil_code;
  if (D.52190 != 0B) goto <D.52191>; else goto <D.52192>;
  <D.52191>:
  D.51380 = cfg->cil_offset_to_bb;
  D.52190 = end_bb->cil_code;
  D.52193 = (long int) D.52190;
  D.51382 = cfg->cil_start;
  D.51383 = (long int) D.51382;
  D.52194 = D.52193 - D.51383;
  D.52195 = (long unsigned int) D.52194;
  D.52196 = D.52195 * 8;
  D.52197 = D.51380 + D.52196;
  *D.52197 = end_bb;
  <D.52192>:
  D.51388 = cfg->real_offset;
  end_bb->real_offset = D.51388;
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 != 0B) goto <D.52201>; else goto <D.52198>;
  <D.52201>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.52202 = D.51361->opcode;
  D.52203 = D.52202 + 64981;
  D.52204 = D.52203 <= 9;
  D.52205 = D.52202 + 64874;
  D.52206 = D.52205 <= 9;
  D.52207 = D.52204 | D.52206;
  if (D.52207 != 0) goto <D.52199>; else goto <D.52208>;
  <D.52208>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 <= 9) goto <D.52199>; else goto <D.52198>;
  <D.52199>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  D.51404 = *D.51403;
  if (D.51404 == 0B) goto <D.52209>; else goto <D.52198>;
  <D.52209>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51402 = D.51361->data.op[1].many_blocks;
  D.51403 = D.51402 + 8;
  *D.51403 = end_bb;
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, end_bb);
  goto <D.52200>;
  <D.52198>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  if (D.51361 == 0B) goto <D.52210>; else goto <D.52212>;
  <D.52212>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.52213 = D.51361->opcode;
  D.52214 = D.52213 != 446;
  D.52215 = D.52213 != 763;
  D.52216 = D.52214 & D.52215;
  if (D.52216 != 0) goto <D.52217>; else goto <D.52211>;
  <D.52217>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.52218 = D.51361->opcode;
  D.52219 = D.52218 + 64981;
  D.52220 = D.52219 > 9;
  D.52221 = D.52218 + 64874;
  D.52222 = D.52221 > 9;
  D.52223 = D.52220 & D.52222;
  if (D.52223 != 0) goto <D.52224>; else goto <D.52211>;
  <D.52224>:
  D.51360 = cfg->cbb;
  D.51361 = D.51360->last_ins;
  D.51400 = D.51361->opcode;
  D.51401 = D.51400 + 64884;
  if (D.51401 > 9) goto <D.52210>; else goto <D.52211>;
  <D.52210>:
  D.51360 = cfg->cbb;
  mono_link_bblock (cfg, D.51360, end_bb);
  <D.52211>:
  <D.52200>:
  D.51360 = cfg->cbb;
  D.51360->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.51338 = cfg->mempool;
  ins = mono_mempool_alloc (D.51338, 80);
  ins->data.op[1].const_val = 0;
  D.52225 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.52225;
  ins->prev = 0B;
  D.52226 = ins->prev;
  ins->next = D.52226;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.52227 = ins->sreg3;
  ins->sreg2 = D.52227;
  D.52228 = ins->sreg2;
  ins->sreg1 = D.52228;
  D.51359 = cfg->ip;
  ins->cil_code = D.51359;
  ins->dreg = dreg;
  ins->type = 1;
  D.52229 = ins;
  return D.52229;
}


handle_ccastclass (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * src)
{
  unsigned int D.52231;
  unsigned int D.52232;
  unsigned int D.52233;
  struct MonoMemPool * D.52234;
  unsigned int D.52235;
  unsigned int D.52236;
  unsigned int D.52237;
  int D.52238;
  unsigned int D.52239;
  unsigned int D.52240;
  int D.52241;
  long int D.52242;
  struct MonoInst * D.52243;
  int D.52244;
  int D.52245;
  const unsigned char * D.52246;
  struct MonoBasicBlock * D.52247;
  struct MonoInst * D.52248;
  long int D.52252;
  struct MonoInst * D.52253;
  int D.52254;
  int D.52255;
  unsigned int D.52258;
  unsigned int D.52259;
  int D.52260;
  unsigned char * D.52264;
  struct MonoBasicBlock * * D.52267;
  long int D.52268;
  unsigned char * D.52269;
  long int D.52270;
  long int D.52271;
  long unsigned int D.52272;
  long unsigned int D.52273;
  struct MonoBasicBlock * * D.52274;
  unsigned int D.52275;
  short unsigned int D.52280;
  short unsigned int D.52281;
  _Bool D.52282;
  short unsigned int D.52283;
  _Bool D.52284;
  _Bool D.52285;
  short unsigned int D.52287;
  short unsigned int D.52288;
  struct MonoBasicBlock * * D.52289;
  struct MonoBasicBlock * * D.52290;
  struct MonoBasicBlock * D.52291;
  short unsigned int D.52296;
  _Bool D.52297;
  _Bool D.52298;
  _Bool D.52299;
  short unsigned int D.52301;
  short unsigned int D.52302;
  _Bool D.52303;
  short unsigned int D.52304;
  _Bool D.52305;
  _Bool D.52306;
  void * D.52309;
  struct MonoBasicBlock * * D.52310;
  struct MonoBasicBlock * * D.52311;
  unsigned char D.52315;
  unsigned char D.52316;
  unsigned int D.52319;
  unsigned int D.52320;
  int D.52321;
  short unsigned int D.52328;
  short unsigned int D.52329;
  _Bool D.52330;
  short unsigned int D.52331;
  _Bool D.52332;
  _Bool D.52333;
  short unsigned int D.52339;
  _Bool D.52340;
  _Bool D.52341;
  _Bool D.52342;
  short unsigned int D.52344;
  short unsigned int D.52345;
  _Bool D.52346;
  short unsigned int D.52347;
  _Bool D.52348;
  _Bool D.52349;
  unsigned int D.52352;
  unsigned int D.52353;
  unsigned int D.52356;
  unsigned int D.52357;
  int D.52358;
  long int D.52359;
  struct MonoInst * D.52360;
  int D.52361;
  int D.52362;
  unsigned char * D.52366;
  long int D.52369;
  long int D.52370;
  long unsigned int D.52371;
  long unsigned int D.52372;
  struct MonoBasicBlock * * D.52373;
  short unsigned int D.52378;
  short unsigned int D.52379;
  _Bool D.52380;
  short unsigned int D.52381;
  _Bool D.52382;
  _Bool D.52383;
  short unsigned int D.52389;
  _Bool D.52390;
  _Bool D.52391;
  _Bool D.52392;
  short unsigned int D.52394;
  short unsigned int D.52395;
  _Bool D.52396;
  short unsigned int D.52397;
  _Bool D.52398;
  _Bool D.52399;
  long int D.52401;
  struct MonoInst * D.52402;
  int D.52403;
  int D.52404;
  struct MonoClass * D.52408;
  unsigned int D.52409;
  long int D.52410;
  struct MonoInst * D.52411;
  int D.52412;
  int D.52413;
  long int D.52417;
  struct MonoInst * D.52418;
  int D.52419;
  int D.52420;
  long int D.52424;
  struct MonoInst * D.52425;
  int D.52426;
  int D.52427;
  long int D.52431;
  struct MonoInst * D.52432;
  int D.52433;
  int D.52434;
  long int D.52438;
  struct MonoInst * D.52439;
  int D.52440;
  int D.52441;
  unsigned int D.52444;
  unsigned int D.52445;
  int D.52446;
  unsigned char * D.52450;
  long int D.52453;
  long int D.52454;
  long unsigned int D.52455;
  long unsigned int D.52456;
  struct MonoBasicBlock * * D.52457;
  short unsigned int D.52462;
  short unsigned int D.52463;
  _Bool D.52464;
  short unsigned int D.52465;
  _Bool D.52466;
  _Bool D.52467;
  short unsigned int D.52473;
  _Bool D.52474;
  _Bool D.52475;
  _Bool D.52476;
  short unsigned int D.52478;
  short unsigned int D.52479;
  _Bool D.52480;
  short unsigned int D.52481;
  _Bool D.52482;
  _Bool D.52483;
  void * D.52486;
  struct MonoBasicBlock * * D.52487;
  struct MonoBasicBlock * * D.52488;
  unsigned int D.52494;
  unsigned int D.52495;
  int D.52496;
  short unsigned int D.52503;
  short unsigned int D.52504;
  _Bool D.52505;
  short unsigned int D.52506;
  _Bool D.52507;
  _Bool D.52508;
  short unsigned int D.52514;
  _Bool D.52515;
  _Bool D.52516;
  _Bool D.52517;
  short unsigned int D.52519;
  short unsigned int D.52520;
  _Bool D.52521;
  short unsigned int D.52522;
  _Bool D.52523;
  _Bool D.52524;
  unsigned int D.52528;
  unsigned int D.52529;
  int D.52530;
  long int D.52531;
  struct MonoInst * D.52532;
  int D.52533;
  int D.52534;
  long int D.52538;
  struct MonoInst * D.52539;
  int D.52540;
  int D.52541;
  unsigned int D.52545;
  long int D.52546;
  struct MonoInst * D.52547;
  int D.52548;
  int D.52549;
  long int D.52553;
  struct MonoInst * D.52554;
  int D.52555;
  int D.52556;
  unsigned int D.52560;
  long int D.52561;
  struct MonoInst * D.52562;
  int D.52563;
  int D.52564;
  long int D.52568;
  struct MonoInst * D.52569;
  int D.52570;
  int D.52571;
  long int D.52575;
  struct MonoInst * D.52576;
  int D.52577;
  int D.52578;
  unsigned int D.52581;
  unsigned int D.52582;
  int D.52583;
  unsigned char * D.52587;
  long int D.52590;
  long int D.52591;
  long unsigned int D.52592;
  long unsigned int D.52593;
  struct MonoBasicBlock * * D.52594;
  short unsigned int D.52599;
  short unsigned int D.52600;
  _Bool D.52601;
  short unsigned int D.52602;
  _Bool D.52603;
  _Bool D.52604;
  short unsigned int D.52610;
  _Bool D.52611;
  _Bool D.52612;
  _Bool D.52613;
  short unsigned int D.52615;
  short unsigned int D.52616;
  _Bool D.52617;
  short unsigned int D.52618;
  _Bool D.52619;
  _Bool D.52620;
  void * D.52623;
  struct MonoBasicBlock * * D.52624;
  struct MonoBasicBlock * * D.52625;
  unsigned int D.52631;
  unsigned int D.52632;
  int D.52633;
  short unsigned int D.52640;
  short unsigned int D.52641;
  _Bool D.52642;
  short unsigned int D.52643;
  _Bool D.52644;
  _Bool D.52645;
  short unsigned int D.52651;
  _Bool D.52652;
  _Bool D.52653;
  _Bool D.52654;
  short unsigned int D.52656;
  short unsigned int D.52657;
  _Bool D.52658;
  short unsigned int D.52659;
  _Bool D.52660;
  _Bool D.52661;
  unsigned int D.52664;
  unsigned int D.52665;
  int D.52666;
  unsigned char * D.52667;
  long int D.52670;
  long int D.52671;
  long unsigned int D.52672;
  long unsigned int D.52673;
  struct MonoBasicBlock * * D.52674;
  short unsigned int D.52679;
  short unsigned int D.52680;
  _Bool D.52681;
  short unsigned int D.52682;
  _Bool D.52683;
  _Bool D.52684;
  short unsigned int D.52690;
  _Bool D.52691;
  _Bool D.52692;
  _Bool D.52693;
  short unsigned int D.52695;
  short unsigned int D.52696;
  _Bool D.52697;
  short unsigned int D.52698;
  _Bool D.52699;
  _Bool D.52700;
  long int D.52702;
  struct MonoInst * D.52703;
  int D.52704;
  int D.52705;
  long int D.52709;
  struct MonoInst * D.52710;
  int D.52711;
  int D.52712;
  unsigned int D.52715;
  unsigned int D.52716;
  int D.52717;
  unsigned char * D.52721;
  long int D.52724;
  long int D.52725;
  long unsigned int D.52726;
  long unsigned int D.52727;
  struct MonoBasicBlock * * D.52728;
  short unsigned int D.52733;
  short unsigned int D.52734;
  _Bool D.52735;
  short unsigned int D.52736;
  _Bool D.52737;
  _Bool D.52738;
  short unsigned int D.52744;
  _Bool D.52745;
  _Bool D.52746;
  _Bool D.52747;
  short unsigned int D.52749;
  short unsigned int D.52750;
  _Bool D.52751;
  short unsigned int D.52752;
  _Bool D.52753;
  _Bool D.52754;
  void * D.52757;
  struct MonoBasicBlock * * D.52758;
  struct MonoBasicBlock * * D.52759;
  unsigned int D.52765;
  unsigned int D.52766;
  int D.52767;
  short unsigned int D.52774;
  short unsigned int D.52775;
  _Bool D.52776;
  short unsigned int D.52777;
  _Bool D.52778;
  _Bool D.52779;
  short unsigned int D.52785;
  _Bool D.52786;
  _Bool D.52787;
  _Bool D.52788;
  short unsigned int D.52790;
  short unsigned int D.52791;
  _Bool D.52792;
  short unsigned int D.52793;
  _Bool D.52794;
  _Bool D.52795;
  unsigned char * D.52798;
  long int D.52801;
  long int D.52802;
  long unsigned int D.52803;
  long unsigned int D.52804;
  struct MonoBasicBlock * * D.52805;
  short unsigned int D.52810;
  short unsigned int D.52811;
  _Bool D.52812;
  short unsigned int D.52813;
  _Bool D.52814;
  _Bool D.52815;
  short unsigned int D.52821;
  _Bool D.52822;
  _Bool D.52823;
  _Bool D.52824;
  short unsigned int D.52826;
  short unsigned int D.52827;
  _Bool D.52828;
  short unsigned int D.52829;
  _Bool D.52830;
  _Bool D.52831;
  unsigned char * D.52833;
  long int D.52836;
  long int D.52837;
  long unsigned int D.52838;
  long unsigned int D.52839;
  struct MonoBasicBlock * * D.52840;
  short unsigned int D.52845;
  short unsigned int D.52846;
  _Bool D.52847;
  short unsigned int D.52848;
  _Bool D.52849;
  _Bool D.52850;
  short unsigned int D.52856;
  _Bool D.52857;
  _Bool D.52858;
  _Bool D.52859;
  short unsigned int D.52861;
  short unsigned int D.52862;
  _Bool D.52863;
  short unsigned int D.52864;
  _Bool D.52865;
  _Bool D.52866;
  long int D.52868;
  struct MonoInst * D.52869;
  int D.52870;
  int D.52871;
  unsigned char * D.52875;
  long int D.52878;
  long int D.52879;
  long unsigned int D.52880;
  long unsigned int D.52881;
  struct MonoBasicBlock * * D.52882;
  short unsigned int D.52887;
  short unsigned int D.52888;
  _Bool D.52889;
  short unsigned int D.52890;
  _Bool D.52891;
  _Bool D.52892;
  short unsigned int D.52898;
  _Bool D.52899;
  _Bool D.52900;
  _Bool D.52901;
  short unsigned int D.52903;
  short unsigned int D.52904;
  _Bool D.52905;
  short unsigned int D.52906;
  _Bool D.52907;
  _Bool D.52908;
  long int D.52910;
  struct MonoInst * D.52911;
  int D.52912;
  int D.52913;
  struct MonoInst * D.52914;
  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.52231 = alloc_ireg (cfg);
  dreg = (int) D.52231;
  D.52232 = alloc_preg (cfg);
  tmp_reg = (int) D.52232;
  D.52233 = alloc_preg (cfg);
  klass_reg = (int) D.52233;
  D.52234 = cfg->mempool;
  end_bb = mono_mempool_alloc0 (D.52234, 296);
  D.52235 = cfg->num_bblocks;
  D.52236 = D.52235;
  D.52237 = D.52236 + 1;
  cfg->num_bblocks = D.52237;
  D.52238 = (int) D.52236;
  end_bb->block_num = D.52238;
  D.52234 = cfg->mempool;
  ok_result_bb = mono_mempool_alloc0 (D.52234, 296);
  D.52235 = cfg->num_bblocks;
  D.52239 = D.52235;
  D.52240 = D.52239 + 1;
  cfg->num_bblocks = D.52240;
  D.52241 = (int) D.52239;
  ok_result_bb->block_num = D.52241;
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52242 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52242;
    inst->prev = 0B;
    D.52243 = inst->prev;
    inst->next = D.52243;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52244 = inst->sreg3;
    inst->sreg2 = D.52244;
    D.52245 = inst->sreg2;
    inst->sreg1 = D.52245;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = -1;
    inst->sreg1 = obj_reg;
    inst->data.op[1].const_val = 0;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52249>; else goto <D.52250>;
    <D.52249>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52251>;
    <D.52250>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52251>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.52234 = cfg->mempool;
    ins = mono_mempool_alloc (D.52234, 80);
    ins->data.op[1].const_val = 0;
    D.52252 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52252;
    ins->prev = 0B;
    D.52253 = ins->prev;
    ins->next = D.52253;
    ins->opcode = 555;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52254 = ins->sreg3;
    ins->sreg2 = D.52254;
    D.52255 = ins->sreg2;
    ins->sreg1 = D.52255;
    D.52246 = cfg->ip;
    ins->cil_code = D.52246;
    if (0 != 0) goto <D.52256>; else goto <D.52257>;
    <D.52256>:
    D.52234 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52234, 296);
    D.52235 = cfg->num_bblocks;
    D.52258 = D.52235;
    D.52259 = D.52258 + 1;
    cfg->num_bblocks = D.52259;
    D.52260 = (int) D.52258;
    falsebb->block_num = D.52260;
    ins->data.op[0].target_block = ok_result_bb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, ok_result_bb);
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52261>; else goto <D.52262>;
    <D.52261>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = ins;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    ins->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    goto <D.52263>;
    <D.52262>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52263>:
    D.52264 = falsebb->cil_code;
    if (D.52264 != 0B) goto <D.52265>; else goto <D.52266>;
    <D.52265>:
    D.52267 = cfg->cil_offset_to_bb;
    D.52264 = falsebb->cil_code;
    D.52268 = (long int) D.52264;
    D.52269 = cfg->cil_start;
    D.52270 = (long int) D.52269;
    D.52271 = D.52268 - D.52270;
    D.52272 = (long unsigned int) D.52271;
    D.52273 = D.52272 * 8;
    D.52274 = D.52267 + D.52273;
    *D.52274 = falsebb;
    <D.52266>:
    D.52275 = cfg->real_offset;
    falsebb->real_offset = D.52275;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52279>; else goto <D.52276>;
    <D.52279>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52280 = D.52248->opcode;
    D.52281 = D.52280 + 64981;
    D.52282 = D.52281 <= 9;
    D.52283 = D.52280 + 64874;
    D.52284 = D.52283 <= 9;
    D.52285 = D.52282 | D.52284;
    if (D.52285 != 0) goto <D.52277>; else goto <D.52286>;
    <D.52286>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 <= 9) goto <D.52277>; else goto <D.52276>;
    <D.52277>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    D.52291 = *D.52290;
    if (D.52291 == 0B) goto <D.52292>; else goto <D.52276>;
    <D.52292>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    *D.52290 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    goto <D.52278>;
    <D.52276>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 == 0B) goto <D.52293>; else goto <D.52295>;
    <D.52295>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52296 = D.52248->opcode;
    D.52297 = D.52296 != 446;
    D.52298 = D.52296 != 763;
    D.52299 = D.52297 & D.52298;
    if (D.52299 != 0) goto <D.52300>; else goto <D.52294>;
    <D.52300>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52301 = D.52248->opcode;
    D.52302 = D.52301 + 64981;
    D.52303 = D.52302 > 9;
    D.52304 = D.52301 + 64874;
    D.52305 = D.52304 > 9;
    D.52306 = D.52303 & D.52305;
    if (D.52306 != 0) goto <D.52307>; else goto <D.52294>;
    <D.52307>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 > 9) goto <D.52293>; else goto <D.52294>;
    <D.52293>:
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    <D.52294>:
    <D.52278>:
    D.52247 = cfg->cbb;
    D.52247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52308>;
    <D.52257>:
    D.52234 = cfg->mempool;
    D.52309 = mono_mempool_alloc (D.52234, 16);
    ins->data.op[1].many_blocks = D.52309;
    D.52310 = ins->data.op[1].many_blocks;
    *D.52310 = ok_result_bb;
    D.52310 = ins->data.op[1].many_blocks;
    D.52311 = D.52310 + 8;
    *D.52311 = 0B;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, ok_result_bb);
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52312>; else goto <D.52313>;
    <D.52312>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = ins;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    ins->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    goto <D.52314>;
    <D.52313>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52314>:
    D.52315 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.52316 = D.52315 & 8;
    if (D.52316 == 0) goto <D.52317>; else goto <D.52318>;
    <D.52317>:
    D.52234 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52234, 296);
    D.52235 = cfg->num_bblocks;
    D.52319 = D.52235;
    D.52320 = D.52319 + 1;
    cfg->num_bblocks = D.52320;
    D.52321 = (int) D.52319;
    falsebb->block_num = D.52321;
    D.52310 = ins->data.op[1].many_blocks;
    D.52311 = D.52310 + 8;
    *D.52311 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    D.52264 = falsebb->cil_code;
    if (D.52264 != 0B) goto <D.52322>; else goto <D.52323>;
    <D.52322>:
    D.52267 = cfg->cil_offset_to_bb;
    D.52264 = falsebb->cil_code;
    D.52268 = (long int) D.52264;
    D.52269 = cfg->cil_start;
    D.52270 = (long int) D.52269;
    D.52271 = D.52268 - D.52270;
    D.52272 = (long unsigned int) D.52271;
    D.52273 = D.52272 * 8;
    D.52274 = D.52267 + D.52273;
    *D.52274 = falsebb;
    <D.52323>:
    D.52275 = cfg->real_offset;
    falsebb->real_offset = D.52275;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52327>; else goto <D.52324>;
    <D.52327>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52328 = D.52248->opcode;
    D.52329 = D.52328 + 64981;
    D.52330 = D.52329 <= 9;
    D.52331 = D.52328 + 64874;
    D.52332 = D.52331 <= 9;
    D.52333 = D.52330 | D.52332;
    if (D.52333 != 0) goto <D.52325>; else goto <D.52334>;
    <D.52334>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 <= 9) goto <D.52325>; else goto <D.52324>;
    <D.52325>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    D.52291 = *D.52290;
    if (D.52291 == 0B) goto <D.52335>; else goto <D.52324>;
    <D.52335>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    *D.52290 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    goto <D.52326>;
    <D.52324>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 == 0B) goto <D.52336>; else goto <D.52338>;
    <D.52338>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52339 = D.52248->opcode;
    D.52340 = D.52339 != 446;
    D.52341 = D.52339 != 763;
    D.52342 = D.52340 & D.52341;
    if (D.52342 != 0) goto <D.52343>; else goto <D.52337>;
    <D.52343>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52344 = D.52248->opcode;
    D.52345 = D.52344 + 64981;
    D.52346 = D.52345 > 9;
    D.52347 = D.52344 + 64874;
    D.52348 = D.52347 > 9;
    D.52349 = D.52346 & D.52348;
    if (D.52349 != 0) goto <D.52350>; else goto <D.52337>;
    <D.52350>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 > 9) goto <D.52336>; else goto <D.52337>;
    <D.52336>:
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    <D.52337>:
    <D.52326>:
    D.52247 = cfg->cbb;
    D.52247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52351>;
    <D.52318>:
    D.52247 = cfg->cbb;
    D.52247->extended = 1;
    <D.52351>:
    <D.52308>:
  }
  save_cast_details (cfg, klass, obj_reg, 0, 0B);
  D.52352 = klass->flags;
  D.52353 = D.52352 & 32;
  if (D.52353 != 0) goto <D.52354>; else goto <D.52355>;
  <D.52354>:
  D.52234 = cfg->mempool;
  interface_fail_bb = mono_mempool_alloc0 (D.52234, 296);
  D.52235 = cfg->num_bblocks;
  D.52356 = D.52235;
  D.52357 = D.52356 + 1;
  cfg->num_bblocks = D.52357;
  D.52358 = (int) D.52356;
  interface_fail_bb->block_num = D.52358;
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52359 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52359;
    inst->prev = 0B;
    D.52360 = inst->prev;
    inst->next = D.52360;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52361 = inst->sreg3;
    inst->sreg2 = D.52361;
    D.52362 = inst->sreg2;
    inst->sreg1 = D.52362;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52363>; else goto <D.52364>;
    <D.52363>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52365>;
    <D.52364>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52365>:
  }
  mini_emit_iface_cast (cfg, tmp_reg, klass, interface_fail_bb, ok_result_bb);
  D.52366 = interface_fail_bb->cil_code;
  if (D.52366 != 0B) goto <D.52367>; else goto <D.52368>;
  <D.52367>:
  D.52267 = cfg->cil_offset_to_bb;
  D.52366 = interface_fail_bb->cil_code;
  D.52369 = (long int) D.52366;
  D.52269 = cfg->cil_start;
  D.52270 = (long int) D.52269;
  D.52370 = D.52369 - D.52270;
  D.52371 = (long unsigned int) D.52370;
  D.52372 = D.52371 * 8;
  D.52373 = D.52267 + D.52372;
  *D.52373 = interface_fail_bb;
  <D.52368>:
  D.52275 = cfg->real_offset;
  interface_fail_bb->real_offset = D.52275;
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  if (D.52248 != 0B) goto <D.52377>; else goto <D.52374>;
  <D.52377>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52378 = D.52248->opcode;
  D.52379 = D.52378 + 64981;
  D.52380 = D.52379 <= 9;
  D.52381 = D.52378 + 64874;
  D.52382 = D.52381 <= 9;
  D.52383 = D.52380 | D.52382;
  if (D.52383 != 0) goto <D.52375>; else goto <D.52384>;
  <D.52384>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52287 = D.52248->opcode;
  D.52288 = D.52287 + 64884;
  if (D.52288 <= 9) goto <D.52375>; else goto <D.52374>;
  <D.52375>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52289 = D.52248->data.op[1].many_blocks;
  D.52290 = D.52289 + 8;
  D.52291 = *D.52290;
  if (D.52291 == 0B) goto <D.52385>; else goto <D.52374>;
  <D.52385>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52289 = D.52248->data.op[1].many_blocks;
  D.52290 = D.52289 + 8;
  *D.52290 = interface_fail_bb;
  D.52247 = cfg->cbb;
  mono_link_bblock (cfg, D.52247, interface_fail_bb);
  goto <D.52376>;
  <D.52374>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  if (D.52248 == 0B) goto <D.52386>; else goto <D.52388>;
  <D.52388>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52389 = D.52248->opcode;
  D.52390 = D.52389 != 446;
  D.52391 = D.52389 != 763;
  D.52392 = D.52390 & D.52391;
  if (D.52392 != 0) goto <D.52393>; else goto <D.52387>;
  <D.52393>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52394 = D.52248->opcode;
  D.52395 = D.52394 + 64981;
  D.52396 = D.52395 > 9;
  D.52397 = D.52394 + 64874;
  D.52398 = D.52397 > 9;
  D.52399 = D.52396 & D.52398;
  if (D.52399 != 0) goto <D.52400>; else goto <D.52387>;
  <D.52400>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52287 = D.52248->opcode;
  D.52288 = D.52287 + 64884;
  if (D.52288 > 9) goto <D.52386>; else goto <D.52387>;
  <D.52386>:
  D.52247 = cfg->cbb;
  mono_link_bblock (cfg, D.52247, interface_fail_bb);
  <D.52387>:
  <D.52376>:
  D.52247 = cfg->cbb;
  D.52247->next_bb = interface_fail_bb;
  cfg->cbb = interface_fail_bb;
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52401 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52401;
    inst->prev = 0B;
    D.52402 = inst->prev;
    inst->next = D.52402;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52403 = inst->sreg3;
    inst->sreg2 = D.52403;
    D.52404 = inst->sreg2;
    inst->sreg1 = D.52404;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52405>; else goto <D.52406>;
    <D.52405>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52407>;
    <D.52406>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52407>:
  }
  D.52408 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check (cfg, klass_reg, D.52408);
  D.52409 = alloc_preg (cfg);
  tmp_reg = (int) D.52409;
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52410 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52410;
    inst->prev = 0B;
    D.52411 = inst->prev;
    inst->next = D.52411;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52412 = inst->sreg3;
    inst->sreg2 = D.52412;
    D.52413 = inst->sreg2;
    inst->sreg1 = D.52413;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 32;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52414>; else goto <D.52415>;
    <D.52414>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52416>;
    <D.52415>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52416>:
  }
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52417 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52417;
    inst->prev = 0B;
    D.52418 = inst->prev;
    inst->next = D.52418;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52419 = inst->sreg3;
    inst->sreg2 = D.52419;
    D.52420 = inst->sreg2;
    inst->sreg1 = D.52420;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52421>; else goto <D.52422>;
    <D.52421>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52423>;
    <D.52422>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52423>:
  }
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52424 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52424;
    inst->prev = 0B;
    D.52425 = inst->prev;
    inst->next = D.52425;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52426 = inst->sreg3;
    inst->sreg2 = D.52426;
    D.52427 = inst->sreg2;
    inst->sreg1 = D.52427;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->data.op[1].p = "InvalidCastException";
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52428>; else goto <D.52429>;
    <D.52428>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52430>;
    <D.52429>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52430>:
  }
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52431 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52431;
    inst->prev = 0B;
    D.52432 = inst->prev;
    inst->next = D.52432;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52433 = inst->sreg3;
    inst->sreg2 = D.52433;
    D.52434 = inst->sreg2;
    inst->sreg1 = D.52434;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52435>; else goto <D.52436>;
    <D.52435>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52437>;
    <D.52436>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52437>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.52234 = cfg->mempool;
    ins = mono_mempool_alloc (D.52234, 80);
    ins->data.op[1].const_val = 0;
    D.52438 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52438;
    ins->prev = 0B;
    D.52439 = ins->prev;
    ins->next = D.52439;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52440 = ins->sreg3;
    ins->sreg2 = D.52440;
    D.52441 = ins->sreg2;
    ins->sreg1 = D.52441;
    D.52246 = cfg->ip;
    ins->cil_code = D.52246;
    if (1 != 0) goto <D.52442>; else goto <D.52443>;
    <D.52442>:
    D.52234 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52234, 296);
    D.52235 = cfg->num_bblocks;
    D.52444 = D.52235;
    D.52445 = D.52444 + 1;
    cfg->num_bblocks = D.52445;
    D.52446 = (int) D.52444;
    falsebb->block_num = D.52446;
    ins->data.op[0].target_block = end_bb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, end_bb);
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52447>; else goto <D.52448>;
    <D.52447>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = ins;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    ins->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    goto <D.52449>;
    <D.52448>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52449>:
    D.52450 = falsebb->cil_code;
    if (D.52450 != 0B) goto <D.52451>; else goto <D.52452>;
    <D.52451>:
    D.52267 = cfg->cil_offset_to_bb;
    D.52450 = falsebb->cil_code;
    D.52453 = (long int) D.52450;
    D.52269 = cfg->cil_start;
    D.52270 = (long int) D.52269;
    D.52454 = D.52453 - D.52270;
    D.52455 = (long unsigned int) D.52454;
    D.52456 = D.52455 * 8;
    D.52457 = D.52267 + D.52456;
    *D.52457 = falsebb;
    <D.52452>:
    D.52275 = cfg->real_offset;
    falsebb->real_offset = D.52275;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52461>; else goto <D.52458>;
    <D.52461>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52462 = D.52248->opcode;
    D.52463 = D.52462 + 64981;
    D.52464 = D.52463 <= 9;
    D.52465 = D.52462 + 64874;
    D.52466 = D.52465 <= 9;
    D.52467 = D.52464 | D.52466;
    if (D.52467 != 0) goto <D.52459>; else goto <D.52468>;
    <D.52468>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 <= 9) goto <D.52459>; else goto <D.52458>;
    <D.52459>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    D.52291 = *D.52290;
    if (D.52291 == 0B) goto <D.52469>; else goto <D.52458>;
    <D.52469>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    *D.52290 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    goto <D.52460>;
    <D.52458>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 == 0B) goto <D.52470>; else goto <D.52472>;
    <D.52472>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52473 = D.52248->opcode;
    D.52474 = D.52473 != 446;
    D.52475 = D.52473 != 763;
    D.52476 = D.52474 & D.52475;
    if (D.52476 != 0) goto <D.52477>; else goto <D.52471>;
    <D.52477>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52478 = D.52248->opcode;
    D.52479 = D.52478 + 64981;
    D.52480 = D.52479 > 9;
    D.52481 = D.52478 + 64874;
    D.52482 = D.52481 > 9;
    D.52483 = D.52480 & D.52482;
    if (D.52483 != 0) goto <D.52484>; else goto <D.52471>;
    <D.52484>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 > 9) goto <D.52470>; else goto <D.52471>;
    <D.52470>:
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    <D.52471>:
    <D.52460>:
    D.52247 = cfg->cbb;
    D.52247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52485>;
    <D.52443>:
    D.52234 = cfg->mempool;
    D.52486 = mono_mempool_alloc (D.52234, 16);
    ins->data.op[1].many_blocks = D.52486;
    D.52487 = ins->data.op[1].many_blocks;
    *D.52487 = end_bb;
    D.52487 = ins->data.op[1].many_blocks;
    D.52488 = D.52487 + 8;
    *D.52488 = 0B;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, end_bb);
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52489>; else goto <D.52490>;
    <D.52489>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = ins;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    ins->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    goto <D.52491>;
    <D.52490>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52491>:
    D.52315 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.52316 = D.52315 & 8;
    if (D.52316 == 0) goto <D.52492>; else goto <D.52493>;
    <D.52492>:
    D.52234 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52234, 296);
    D.52235 = cfg->num_bblocks;
    D.52494 = D.52235;
    D.52495 = D.52494 + 1;
    cfg->num_bblocks = D.52495;
    D.52496 = (int) D.52494;
    falsebb->block_num = D.52496;
    D.52487 = ins->data.op[1].many_blocks;
    D.52488 = D.52487 + 8;
    *D.52488 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    D.52450 = falsebb->cil_code;
    if (D.52450 != 0B) goto <D.52497>; else goto <D.52498>;
    <D.52497>:
    D.52267 = cfg->cil_offset_to_bb;
    D.52450 = falsebb->cil_code;
    D.52453 = (long int) D.52450;
    D.52269 = cfg->cil_start;
    D.52270 = (long int) D.52269;
    D.52454 = D.52453 - D.52270;
    D.52455 = (long unsigned int) D.52454;
    D.52456 = D.52455 * 8;
    D.52457 = D.52267 + D.52456;
    *D.52457 = falsebb;
    <D.52498>:
    D.52275 = cfg->real_offset;
    falsebb->real_offset = D.52275;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52502>; else goto <D.52499>;
    <D.52502>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52503 = D.52248->opcode;
    D.52504 = D.52503 + 64981;
    D.52505 = D.52504 <= 9;
    D.52506 = D.52503 + 64874;
    D.52507 = D.52506 <= 9;
    D.52508 = D.52505 | D.52507;
    if (D.52508 != 0) goto <D.52500>; else goto <D.52509>;
    <D.52509>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 <= 9) goto <D.52500>; else goto <D.52499>;
    <D.52500>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    D.52291 = *D.52290;
    if (D.52291 == 0B) goto <D.52510>; else goto <D.52499>;
    <D.52510>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    *D.52290 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    goto <D.52501>;
    <D.52499>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 == 0B) goto <D.52511>; else goto <D.52513>;
    <D.52513>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52514 = D.52248->opcode;
    D.52515 = D.52514 != 446;
    D.52516 = D.52514 != 763;
    D.52517 = D.52515 & D.52516;
    if (D.52517 != 0) goto <D.52518>; else goto <D.52512>;
    <D.52518>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52519 = D.52248->opcode;
    D.52520 = D.52519 + 64981;
    D.52521 = D.52520 > 9;
    D.52522 = D.52519 + 64874;
    D.52523 = D.52522 > 9;
    D.52524 = D.52521 & D.52523;
    if (D.52524 != 0) goto <D.52525>; else goto <D.52512>;
    <D.52525>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 > 9) goto <D.52511>; else goto <D.52512>;
    <D.52511>:
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    <D.52512>:
    <D.52501>:
    D.52247 = cfg->cbb;
    D.52247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52526>;
    <D.52493>:
    D.52247 = cfg->cbb;
    D.52247->extended = 1;
    <D.52526>:
    <D.52485>:
  }
  goto <D.52527>;
  <D.52355>:
  D.52234 = cfg->mempool;
  no_proxy_bb = mono_mempool_alloc0 (D.52234, 296);
  D.52235 = cfg->num_bblocks;
  D.52528 = D.52235;
  D.52529 = D.52528 + 1;
  cfg->num_bblocks = D.52529;
  D.52530 = (int) D.52528;
  no_proxy_bb->block_num = D.52530;
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52531 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52531;
    inst->prev = 0B;
    D.52532 = inst->prev;
    inst->next = D.52532;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52533 = inst->sreg3;
    inst->sreg2 = D.52533;
    D.52534 = inst->sreg2;
    inst->sreg1 = D.52534;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 0;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52535>; else goto <D.52536>;
    <D.52535>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52537>;
    <D.52536>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52537>:
  }
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52538 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52538;
    inst->prev = 0B;
    D.52539 = inst->prev;
    inst->next = D.52539;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52540 = inst->sreg3;
    inst->sreg2 = D.52540;
    D.52541 = inst->sreg2;
    inst->sreg1 = D.52541;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 0;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52542>; else goto <D.52543>;
    <D.52542>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52544>;
    <D.52543>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52544>:
  }
  D.52408 = mono_defaults.transparent_proxy_class;
  mini_emit_class_check_branch (cfg, klass_reg, D.52408, 560, no_proxy_bb);
  D.52545 = alloc_preg (cfg);
  tmp_reg = (int) D.52545;
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52546 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52546;
    inst->prev = 0B;
    D.52547 = inst->prev;
    inst->next = D.52547;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52548 = inst->sreg3;
    inst->sreg2 = D.52548;
    D.52549 = inst->sreg2;
    inst->sreg1 = D.52549;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 24;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52550>; else goto <D.52551>;
    <D.52550>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52552>;
    <D.52551>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52552>:
  }
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52553 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52553;
    inst->prev = 0B;
    D.52554 = inst->prev;
    inst->next = D.52554;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52555 = inst->sreg3;
    inst->sreg2 = D.52555;
    D.52556 = inst->sreg2;
    inst->sreg1 = D.52556;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = klass_reg;
    inst->sreg1 = tmp_reg;
    inst->data.op[0].const_val = 16;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52557>; else goto <D.52558>;
    <D.52557>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52559>;
    <D.52558>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52559>:
  }
  D.52560 = alloc_preg (cfg);
  tmp_reg = (int) D.52560;
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52561 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52561;
    inst->prev = 0B;
    D.52562 = inst->prev;
    inst->next = D.52562;
    inst->opcode = 391;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52563 = inst->sreg3;
    inst->sreg2 = D.52563;
    D.52564 = inst->sreg2;
    inst->sreg1 = D.52564;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = tmp_reg;
    inst->sreg1 = obj_reg;
    inst->data.op[0].const_val = 32;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52565>; else goto <D.52566>;
    <D.52565>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52567>;
    <D.52566>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52567>:
  }
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52568 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52568;
    inst->prev = 0B;
    D.52569 = inst->prev;
    inst->next = D.52569;
    inst->opcode = 323;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52570 = inst->sreg3;
    inst->sreg2 = D.52570;
    D.52571 = inst->sreg2;
    inst->sreg1 = D.52571;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = -1;
    inst->sreg1 = tmp_reg;
    inst->data.op[1].const_val = 0;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52572>; else goto <D.52573>;
    <D.52572>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52574>;
    <D.52573>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52574>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.52234 = cfg->mempool;
    ins = mono_mempool_alloc (D.52234, 80);
    ins->data.op[1].const_val = 0;
    D.52575 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52575;
    ins->prev = 0B;
    D.52576 = ins->prev;
    ins->next = D.52576;
    ins->opcode = 555;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52577 = ins->sreg3;
    ins->sreg2 = D.52577;
    D.52578 = ins->sreg2;
    ins->sreg1 = D.52578;
    D.52246 = cfg->ip;
    ins->cil_code = D.52246;
    if (0 != 0) goto <D.52579>; else goto <D.52580>;
    <D.52579>:
    D.52234 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52234, 296);
    D.52235 = cfg->num_bblocks;
    D.52581 = D.52235;
    D.52582 = D.52581 + 1;
    cfg->num_bblocks = D.52582;
    D.52583 = (int) D.52581;
    falsebb->block_num = D.52583;
    ins->data.op[0].target_block = no_proxy_bb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, no_proxy_bb);
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52584>; else goto <D.52585>;
    <D.52584>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = ins;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    ins->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    goto <D.52586>;
    <D.52585>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52586>:
    D.52587 = falsebb->cil_code;
    if (D.52587 != 0B) goto <D.52588>; else goto <D.52589>;
    <D.52588>:
    D.52267 = cfg->cil_offset_to_bb;
    D.52587 = falsebb->cil_code;
    D.52590 = (long int) D.52587;
    D.52269 = cfg->cil_start;
    D.52270 = (long int) D.52269;
    D.52591 = D.52590 - D.52270;
    D.52592 = (long unsigned int) D.52591;
    D.52593 = D.52592 * 8;
    D.52594 = D.52267 + D.52593;
    *D.52594 = falsebb;
    <D.52589>:
    D.52275 = cfg->real_offset;
    falsebb->real_offset = D.52275;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52598>; else goto <D.52595>;
    <D.52598>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52599 = D.52248->opcode;
    D.52600 = D.52599 + 64981;
    D.52601 = D.52600 <= 9;
    D.52602 = D.52599 + 64874;
    D.52603 = D.52602 <= 9;
    D.52604 = D.52601 | D.52603;
    if (D.52604 != 0) goto <D.52596>; else goto <D.52605>;
    <D.52605>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 <= 9) goto <D.52596>; else goto <D.52595>;
    <D.52596>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    D.52291 = *D.52290;
    if (D.52291 == 0B) goto <D.52606>; else goto <D.52595>;
    <D.52606>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    *D.52290 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    goto <D.52597>;
    <D.52595>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 == 0B) goto <D.52607>; else goto <D.52609>;
    <D.52609>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52610 = D.52248->opcode;
    D.52611 = D.52610 != 446;
    D.52612 = D.52610 != 763;
    D.52613 = D.52611 & D.52612;
    if (D.52613 != 0) goto <D.52614>; else goto <D.52608>;
    <D.52614>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52615 = D.52248->opcode;
    D.52616 = D.52615 + 64981;
    D.52617 = D.52616 > 9;
    D.52618 = D.52615 + 64874;
    D.52619 = D.52618 > 9;
    D.52620 = D.52617 & D.52619;
    if (D.52620 != 0) goto <D.52621>; else goto <D.52608>;
    <D.52621>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 > 9) goto <D.52607>; else goto <D.52608>;
    <D.52607>:
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    <D.52608>:
    <D.52597>:
    D.52247 = cfg->cbb;
    D.52247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52622>;
    <D.52580>:
    D.52234 = cfg->mempool;
    D.52623 = mono_mempool_alloc (D.52234, 16);
    ins->data.op[1].many_blocks = D.52623;
    D.52624 = ins->data.op[1].many_blocks;
    *D.52624 = no_proxy_bb;
    D.52624 = ins->data.op[1].many_blocks;
    D.52625 = D.52624 + 8;
    *D.52625 = 0B;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, no_proxy_bb);
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52626>; else goto <D.52627>;
    <D.52626>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = ins;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    ins->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    goto <D.52628>;
    <D.52627>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52628>:
    D.52315 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.52316 = D.52315 & 8;
    if (D.52316 == 0) goto <D.52629>; else goto <D.52630>;
    <D.52629>:
    D.52234 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52234, 296);
    D.52235 = cfg->num_bblocks;
    D.52631 = D.52235;
    D.52632 = D.52631 + 1;
    cfg->num_bblocks = D.52632;
    D.52633 = (int) D.52631;
    falsebb->block_num = D.52633;
    D.52624 = ins->data.op[1].many_blocks;
    D.52625 = D.52624 + 8;
    *D.52625 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    D.52587 = falsebb->cil_code;
    if (D.52587 != 0B) goto <D.52634>; else goto <D.52635>;
    <D.52634>:
    D.52267 = cfg->cil_offset_to_bb;
    D.52587 = falsebb->cil_code;
    D.52590 = (long int) D.52587;
    D.52269 = cfg->cil_start;
    D.52270 = (long int) D.52269;
    D.52591 = D.52590 - D.52270;
    D.52592 = (long unsigned int) D.52591;
    D.52593 = D.52592 * 8;
    D.52594 = D.52267 + D.52593;
    *D.52594 = falsebb;
    <D.52635>:
    D.52275 = cfg->real_offset;
    falsebb->real_offset = D.52275;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52639>; else goto <D.52636>;
    <D.52639>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52640 = D.52248->opcode;
    D.52641 = D.52640 + 64981;
    D.52642 = D.52641 <= 9;
    D.52643 = D.52640 + 64874;
    D.52644 = D.52643 <= 9;
    D.52645 = D.52642 | D.52644;
    if (D.52645 != 0) goto <D.52637>; else goto <D.52646>;
    <D.52646>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 <= 9) goto <D.52637>; else goto <D.52636>;
    <D.52637>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    D.52291 = *D.52290;
    if (D.52291 == 0B) goto <D.52647>; else goto <D.52636>;
    <D.52647>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    *D.52290 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    goto <D.52638>;
    <D.52636>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 == 0B) goto <D.52648>; else goto <D.52650>;
    <D.52650>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52651 = D.52248->opcode;
    D.52652 = D.52651 != 446;
    D.52653 = D.52651 != 763;
    D.52654 = D.52652 & D.52653;
    if (D.52654 != 0) goto <D.52655>; else goto <D.52649>;
    <D.52655>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52656 = D.52248->opcode;
    D.52657 = D.52656 + 64981;
    D.52658 = D.52657 > 9;
    D.52659 = D.52656 + 64874;
    D.52660 = D.52659 > 9;
    D.52661 = D.52658 & D.52660;
    if (D.52661 != 0) goto <D.52662>; else goto <D.52649>;
    <D.52662>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 > 9) goto <D.52648>; else goto <D.52649>;
    <D.52648>:
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    <D.52649>:
    <D.52638>:
    D.52247 = cfg->cbb;
    D.52247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52663>;
    <D.52630>:
    D.52247 = cfg->cbb;
    D.52247->extended = 1;
    <D.52663>:
    <D.52622>:
  }
  D.52234 = cfg->mempool;
  fail_1_bb = mono_mempool_alloc0 (D.52234, 296);
  D.52235 = cfg->num_bblocks;
  D.52664 = D.52235;
  D.52665 = D.52664 + 1;
  cfg->num_bblocks = D.52665;
  D.52666 = (int) D.52664;
  fail_1_bb->block_num = D.52666;
  mini_emit_isninst_cast (cfg, klass_reg, klass, fail_1_bb, ok_result_bb);
  D.52667 = fail_1_bb->cil_code;
  if (D.52667 != 0B) goto <D.52668>; else goto <D.52669>;
  <D.52668>:
  D.52267 = cfg->cil_offset_to_bb;
  D.52667 = fail_1_bb->cil_code;
  D.52670 = (long int) D.52667;
  D.52269 = cfg->cil_start;
  D.52270 = (long int) D.52269;
  D.52671 = D.52670 - D.52270;
  D.52672 = (long unsigned int) D.52671;
  D.52673 = D.52672 * 8;
  D.52674 = D.52267 + D.52673;
  *D.52674 = fail_1_bb;
  <D.52669>:
  D.52275 = cfg->real_offset;
  fail_1_bb->real_offset = D.52275;
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  if (D.52248 != 0B) goto <D.52678>; else goto <D.52675>;
  <D.52678>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52679 = D.52248->opcode;
  D.52680 = D.52679 + 64981;
  D.52681 = D.52680 <= 9;
  D.52682 = D.52679 + 64874;
  D.52683 = D.52682 <= 9;
  D.52684 = D.52681 | D.52683;
  if (D.52684 != 0) goto <D.52676>; else goto <D.52685>;
  <D.52685>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52287 = D.52248->opcode;
  D.52288 = D.52287 + 64884;
  if (D.52288 <= 9) goto <D.52676>; else goto <D.52675>;
  <D.52676>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52289 = D.52248->data.op[1].many_blocks;
  D.52290 = D.52289 + 8;
  D.52291 = *D.52290;
  if (D.52291 == 0B) goto <D.52686>; else goto <D.52675>;
  <D.52686>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52289 = D.52248->data.op[1].many_blocks;
  D.52290 = D.52289 + 8;
  *D.52290 = fail_1_bb;
  D.52247 = cfg->cbb;
  mono_link_bblock (cfg, D.52247, fail_1_bb);
  goto <D.52677>;
  <D.52675>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  if (D.52248 == 0B) goto <D.52687>; else goto <D.52689>;
  <D.52689>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52690 = D.52248->opcode;
  D.52691 = D.52690 != 446;
  D.52692 = D.52690 != 763;
  D.52693 = D.52691 & D.52692;
  if (D.52693 != 0) goto <D.52694>; else goto <D.52688>;
  <D.52694>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52695 = D.52248->opcode;
  D.52696 = D.52695 + 64981;
  D.52697 = D.52696 > 9;
  D.52698 = D.52695 + 64874;
  D.52699 = D.52698 > 9;
  D.52700 = D.52697 & D.52699;
  if (D.52700 != 0) goto <D.52701>; else goto <D.52688>;
  <D.52701>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52287 = D.52248->opcode;
  D.52288 = D.52287 + 64884;
  if (D.52288 > 9) goto <D.52687>; else goto <D.52688>;
  <D.52687>:
  D.52247 = cfg->cbb;
  mono_link_bblock (cfg, D.52247, fail_1_bb);
  <D.52688>:
  <D.52677>:
  D.52247 = cfg->cbb;
  D.52247->next_bb = fail_1_bb;
  cfg->cbb = fail_1_bb;
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52702 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52702;
    inst->prev = 0B;
    D.52703 = inst->prev;
    inst->next = D.52703;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52704 = inst->sreg3;
    inst->sreg2 = D.52704;
    D.52705 = inst->sreg2;
    inst->sreg1 = D.52705;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 1;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52706>; else goto <D.52707>;
    <D.52706>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52708>;
    <D.52707>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52708>:
  }
  {
    struct MonoInst * ins;
    struct MonoBasicBlock * falsebb;

    D.52234 = cfg->mempool;
    ins = mono_mempool_alloc (D.52234, 80);
    ins->data.op[1].const_val = 0;
    D.52709 = ins->data.op[1].const_val;
    ins->data.op[0].const_val = D.52709;
    ins->prev = 0B;
    D.52710 = ins->prev;
    ins->next = D.52710;
    ins->opcode = 446;
    ins->flags = 0;
    ins->type = 0;
    ins->dreg = -1;
    ins->sreg3 = -1;
    D.52711 = ins->sreg3;
    ins->sreg2 = D.52711;
    D.52712 = ins->sreg2;
    ins->sreg1 = D.52712;
    D.52246 = cfg->ip;
    ins->cil_code = D.52246;
    if (1 != 0) goto <D.52713>; else goto <D.52714>;
    <D.52713>:
    D.52234 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52234, 296);
    D.52235 = cfg->num_bblocks;
    D.52715 = D.52235;
    D.52716 = D.52715 + 1;
    cfg->num_bblocks = D.52716;
    D.52717 = (int) D.52715;
    falsebb->block_num = D.52717;
    ins->data.op[0].target_block = end_bb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, end_bb);
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52718>; else goto <D.52719>;
    <D.52718>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = ins;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    ins->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    goto <D.52720>;
    <D.52719>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52720>:
    D.52721 = falsebb->cil_code;
    if (D.52721 != 0B) goto <D.52722>; else goto <D.52723>;
    <D.52722>:
    D.52267 = cfg->cil_offset_to_bb;
    D.52721 = falsebb->cil_code;
    D.52724 = (long int) D.52721;
    D.52269 = cfg->cil_start;
    D.52270 = (long int) D.52269;
    D.52725 = D.52724 - D.52270;
    D.52726 = (long unsigned int) D.52725;
    D.52727 = D.52726 * 8;
    D.52728 = D.52267 + D.52727;
    *D.52728 = falsebb;
    <D.52723>:
    D.52275 = cfg->real_offset;
    falsebb->real_offset = D.52275;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52732>; else goto <D.52729>;
    <D.52732>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52733 = D.52248->opcode;
    D.52734 = D.52733 + 64981;
    D.52735 = D.52734 <= 9;
    D.52736 = D.52733 + 64874;
    D.52737 = D.52736 <= 9;
    D.52738 = D.52735 | D.52737;
    if (D.52738 != 0) goto <D.52730>; else goto <D.52739>;
    <D.52739>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 <= 9) goto <D.52730>; else goto <D.52729>;
    <D.52730>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    D.52291 = *D.52290;
    if (D.52291 == 0B) goto <D.52740>; else goto <D.52729>;
    <D.52740>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    *D.52290 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    goto <D.52731>;
    <D.52729>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 == 0B) goto <D.52741>; else goto <D.52743>;
    <D.52743>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52744 = D.52248->opcode;
    D.52745 = D.52744 != 446;
    D.52746 = D.52744 != 763;
    D.52747 = D.52745 & D.52746;
    if (D.52747 != 0) goto <D.52748>; else goto <D.52742>;
    <D.52748>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52749 = D.52248->opcode;
    D.52750 = D.52749 + 64981;
    D.52751 = D.52750 > 9;
    D.52752 = D.52749 + 64874;
    D.52753 = D.52752 > 9;
    D.52754 = D.52751 & D.52753;
    if (D.52754 != 0) goto <D.52755>; else goto <D.52742>;
    <D.52755>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 > 9) goto <D.52741>; else goto <D.52742>;
    <D.52741>:
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    <D.52742>:
    <D.52731>:
    D.52247 = cfg->cbb;
    D.52247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52756>;
    <D.52714>:
    D.52234 = cfg->mempool;
    D.52757 = mono_mempool_alloc (D.52234, 16);
    ins->data.op[1].many_blocks = D.52757;
    D.52758 = ins->data.op[1].many_blocks;
    *D.52758 = end_bb;
    D.52758 = ins->data.op[1].many_blocks;
    D.52759 = D.52758 + 8;
    *D.52759 = 0B;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, end_bb);
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52760>; else goto <D.52761>;
    <D.52760>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = ins;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    ins->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    goto <D.52762>;
    <D.52761>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = ins;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52762>:
    D.52315 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.52316 = D.52315 & 8;
    if (D.52316 == 0) goto <D.52763>; else goto <D.52764>;
    <D.52763>:
    D.52234 = cfg->mempool;
    falsebb = mono_mempool_alloc0 (D.52234, 296);
    D.52235 = cfg->num_bblocks;
    D.52765 = D.52235;
    D.52766 = D.52765 + 1;
    cfg->num_bblocks = D.52766;
    D.52767 = (int) D.52765;
    falsebb->block_num = D.52767;
    D.52758 = ins->data.op[1].many_blocks;
    D.52759 = D.52758 + 8;
    *D.52759 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    D.52721 = falsebb->cil_code;
    if (D.52721 != 0B) goto <D.52768>; else goto <D.52769>;
    <D.52768>:
    D.52267 = cfg->cil_offset_to_bb;
    D.52721 = falsebb->cil_code;
    D.52724 = (long int) D.52721;
    D.52269 = cfg->cil_start;
    D.52270 = (long int) D.52269;
    D.52725 = D.52724 - D.52270;
    D.52726 = (long unsigned int) D.52725;
    D.52727 = D.52726 * 8;
    D.52728 = D.52267 + D.52727;
    *D.52728 = falsebb;
    <D.52769>:
    D.52275 = cfg->real_offset;
    falsebb->real_offset = D.52275;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52773>; else goto <D.52770>;
    <D.52773>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52774 = D.52248->opcode;
    D.52775 = D.52774 + 64981;
    D.52776 = D.52775 <= 9;
    D.52777 = D.52774 + 64874;
    D.52778 = D.52777 <= 9;
    D.52779 = D.52776 | D.52778;
    if (D.52779 != 0) goto <D.52771>; else goto <D.52780>;
    <D.52780>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 <= 9) goto <D.52771>; else goto <D.52770>;
    <D.52771>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    D.52291 = *D.52290;
    if (D.52291 == 0B) goto <D.52781>; else goto <D.52770>;
    <D.52781>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52289 = D.52248->data.op[1].many_blocks;
    D.52290 = D.52289 + 8;
    *D.52290 = falsebb;
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    goto <D.52772>;
    <D.52770>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 == 0B) goto <D.52782>; else goto <D.52784>;
    <D.52784>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52785 = D.52248->opcode;
    D.52786 = D.52785 != 446;
    D.52787 = D.52785 != 763;
    D.52788 = D.52786 & D.52787;
    if (D.52788 != 0) goto <D.52789>; else goto <D.52783>;
    <D.52789>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52790 = D.52248->opcode;
    D.52791 = D.52790 + 64981;
    D.52792 = D.52791 > 9;
    D.52793 = D.52790 + 64874;
    D.52794 = D.52793 > 9;
    D.52795 = D.52792 & D.52794;
    if (D.52795 != 0) goto <D.52796>; else goto <D.52783>;
    <D.52796>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52287 = D.52248->opcode;
    D.52288 = D.52287 + 64884;
    if (D.52288 > 9) goto <D.52782>; else goto <D.52783>;
    <D.52782>:
    D.52247 = cfg->cbb;
    mono_link_bblock (cfg, D.52247, falsebb);
    <D.52783>:
    <D.52772>:
    D.52247 = cfg->cbb;
    D.52247->next_bb = falsebb;
    cfg->cbb = falsebb;
    goto <D.52797>;
    <D.52764>:
    D.52247 = cfg->cbb;
    D.52247->extended = 1;
    <D.52797>:
    <D.52756>:
  }
  D.52798 = no_proxy_bb->cil_code;
  if (D.52798 != 0B) goto <D.52799>; else goto <D.52800>;
  <D.52799>:
  D.52267 = cfg->cil_offset_to_bb;
  D.52798 = no_proxy_bb->cil_code;
  D.52801 = (long int) D.52798;
  D.52269 = cfg->cil_start;
  D.52270 = (long int) D.52269;
  D.52802 = D.52801 - D.52270;
  D.52803 = (long unsigned int) D.52802;
  D.52804 = D.52803 * 8;
  D.52805 = D.52267 + D.52804;
  *D.52805 = no_proxy_bb;
  <D.52800>:
  D.52275 = cfg->real_offset;
  no_proxy_bb->real_offset = D.52275;
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  if (D.52248 != 0B) goto <D.52809>; else goto <D.52806>;
  <D.52809>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52810 = D.52248->opcode;
  D.52811 = D.52810 + 64981;
  D.52812 = D.52811 <= 9;
  D.52813 = D.52810 + 64874;
  D.52814 = D.52813 <= 9;
  D.52815 = D.52812 | D.52814;
  if (D.52815 != 0) goto <D.52807>; else goto <D.52816>;
  <D.52816>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52287 = D.52248->opcode;
  D.52288 = D.52287 + 64884;
  if (D.52288 <= 9) goto <D.52807>; else goto <D.52806>;
  <D.52807>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52289 = D.52248->data.op[1].many_blocks;
  D.52290 = D.52289 + 8;
  D.52291 = *D.52290;
  if (D.52291 == 0B) goto <D.52817>; else goto <D.52806>;
  <D.52817>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52289 = D.52248->data.op[1].many_blocks;
  D.52290 = D.52289 + 8;
  *D.52290 = no_proxy_bb;
  D.52247 = cfg->cbb;
  mono_link_bblock (cfg, D.52247, no_proxy_bb);
  goto <D.52808>;
  <D.52806>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  if (D.52248 == 0B) goto <D.52818>; else goto <D.52820>;
  <D.52820>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52821 = D.52248->opcode;
  D.52822 = D.52821 != 446;
  D.52823 = D.52821 != 763;
  D.52824 = D.52822 & D.52823;
  if (D.52824 != 0) goto <D.52825>; else goto <D.52819>;
  <D.52825>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52826 = D.52248->opcode;
  D.52827 = D.52826 + 64981;
  D.52828 = D.52827 > 9;
  D.52829 = D.52826 + 64874;
  D.52830 = D.52829 > 9;
  D.52831 = D.52828 & D.52830;
  if (D.52831 != 0) goto <D.52832>; else goto <D.52819>;
  <D.52832>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52287 = D.52248->opcode;
  D.52288 = D.52287 + 64884;
  if (D.52288 > 9) goto <D.52818>; else goto <D.52819>;
  <D.52818>:
  D.52247 = cfg->cbb;
  mono_link_bblock (cfg, D.52247, no_proxy_bb);
  <D.52819>:
  <D.52808>:
  D.52247 = cfg->cbb;
  D.52247->next_bb = no_proxy_bb;
  cfg->cbb = no_proxy_bb;
  mini_emit_castclass (cfg, obj_reg, klass_reg, klass, ok_result_bb);
  <D.52527>:
  D.52833 = ok_result_bb->cil_code;
  if (D.52833 != 0B) goto <D.52834>; else goto <D.52835>;
  <D.52834>:
  D.52267 = cfg->cil_offset_to_bb;
  D.52833 = ok_result_bb->cil_code;
  D.52836 = (long int) D.52833;
  D.52269 = cfg->cil_start;
  D.52270 = (long int) D.52269;
  D.52837 = D.52836 - D.52270;
  D.52838 = (long unsigned int) D.52837;
  D.52839 = D.52838 * 8;
  D.52840 = D.52267 + D.52839;
  *D.52840 = ok_result_bb;
  <D.52835>:
  D.52275 = cfg->real_offset;
  ok_result_bb->real_offset = D.52275;
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  if (D.52248 != 0B) goto <D.52844>; else goto <D.52841>;
  <D.52844>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52845 = D.52248->opcode;
  D.52846 = D.52845 + 64981;
  D.52847 = D.52846 <= 9;
  D.52848 = D.52845 + 64874;
  D.52849 = D.52848 <= 9;
  D.52850 = D.52847 | D.52849;
  if (D.52850 != 0) goto <D.52842>; else goto <D.52851>;
  <D.52851>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52287 = D.52248->opcode;
  D.52288 = D.52287 + 64884;
  if (D.52288 <= 9) goto <D.52842>; else goto <D.52841>;
  <D.52842>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52289 = D.52248->data.op[1].many_blocks;
  D.52290 = D.52289 + 8;
  D.52291 = *D.52290;
  if (D.52291 == 0B) goto <D.52852>; else goto <D.52841>;
  <D.52852>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52289 = D.52248->data.op[1].many_blocks;
  D.52290 = D.52289 + 8;
  *D.52290 = ok_result_bb;
  D.52247 = cfg->cbb;
  mono_link_bblock (cfg, D.52247, ok_result_bb);
  goto <D.52843>;
  <D.52841>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  if (D.52248 == 0B) goto <D.52853>; else goto <D.52855>;
  <D.52855>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52856 = D.52248->opcode;
  D.52857 = D.52856 != 446;
  D.52858 = D.52856 != 763;
  D.52859 = D.52857 & D.52858;
  if (D.52859 != 0) goto <D.52860>; else goto <D.52854>;
  <D.52860>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52861 = D.52248->opcode;
  D.52862 = D.52861 + 64981;
  D.52863 = D.52862 > 9;
  D.52864 = D.52861 + 64874;
  D.52865 = D.52864 > 9;
  D.52866 = D.52863 & D.52865;
  if (D.52866 != 0) goto <D.52867>; else goto <D.52854>;
  <D.52867>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52287 = D.52248->opcode;
  D.52288 = D.52287 + 64884;
  if (D.52288 > 9) goto <D.52853>; else goto <D.52854>;
  <D.52853>:
  D.52247 = cfg->cbb;
  mono_link_bblock (cfg, D.52247, ok_result_bb);
  <D.52854>:
  <D.52843>:
  D.52247 = cfg->cbb;
  D.52247->next_bb = ok_result_bb;
  cfg->cbb = ok_result_bb;
  {
    struct MonoInst * inst;

    D.52234 = cfg->mempool;
    inst = mono_mempool_alloc (D.52234, 80);
    inst->data.op[1].const_val = 0;
    D.52868 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.52868;
    inst->prev = 0B;
    D.52869 = inst->prev;
    inst->next = D.52869;
    inst->opcode = 362;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.52870 = inst->sreg3;
    inst->sreg2 = D.52870;
    D.52871 = inst->sreg2;
    inst->sreg1 = D.52871;
    D.52246 = cfg->ip;
    inst->cil_code = D.52246;
    inst->dreg = dreg;
    inst->data.op[0].const_val = 0;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    if (D.52248 != 0B) goto <D.52872>; else goto <D.52873>;
    <D.52872>:
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    D.52248->next = inst;
    D.52247 = cfg->cbb;
    D.52248 = D.52247->last_ins;
    inst->prev = D.52248;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    goto <D.52874>;
    <D.52873>:
    D.52247 = cfg->cbb;
    D.52247 = cfg->cbb;
    D.52247->last_ins = inst;
    D.52248 = D.52247->last_ins;
    D.52247->code = D.52248;
    <D.52874>:
  }
  D.52875 = end_bb->cil_code;
  if (D.52875 != 0B) goto <D.52876>; else goto <D.52877>;
  <D.52876>:
  D.52267 = cfg->cil_offset_to_bb;
  D.52875 = end_bb->cil_code;
  D.52878 = (long int) D.52875;
  D.52269 = cfg->cil_start;
  D.52270 = (long int) D.52269;
  D.52879 = D.52878 - D.52270;
  D.52880 = (long unsigned int) D.52879;
  D.52881 = D.52880 * 8;
  D.52882 = D.52267 + D.52881;
  *D.52882 = end_bb;
  <D.52877>:
  D.52275 = cfg->real_offset;
  end_bb->real_offset = D.52275;
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  if (D.52248 != 0B) goto <D.52886>; else goto <D.52883>;
  <D.52886>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52887 = D.52248->opcode;
  D.52888 = D.52887 + 64981;
  D.52889 = D.52888 <= 9;
  D.52890 = D.52887 + 64874;
  D.52891 = D.52890 <= 9;
  D.52892 = D.52889 | D.52891;
  if (D.52892 != 0) goto <D.52884>; else goto <D.52893>;
  <D.52893>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52287 = D.52248->opcode;
  D.52288 = D.52287 + 64884;
  if (D.52288 <= 9) goto <D.52884>; else goto <D.52883>;
  <D.52884>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52289 = D.52248->data.op[1].many_blocks;
  D.52290 = D.52289 + 8;
  D.52291 = *D.52290;
  if (D.52291 == 0B) goto <D.52894>; else goto <D.52883>;
  <D.52894>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52289 = D.52248->data.op[1].many_blocks;
  D.52290 = D.52289 + 8;
  *D.52290 = end_bb;
  D.52247 = cfg->cbb;
  mono_link_bblock (cfg, D.52247, end_bb);
  goto <D.52885>;
  <D.52883>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  if (D.52248 == 0B) goto <D.52895>; else goto <D.52897>;
  <D.52897>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52898 = D.52248->opcode;
  D.52899 = D.52898 != 446;
  D.52900 = D.52898 != 763;
  D.52901 = D.52899 & D.52900;
  if (D.52901 != 0) goto <D.52902>; else goto <D.52896>;
  <D.52902>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52903 = D.52248->opcode;
  D.52904 = D.52903 + 64981;
  D.52905 = D.52904 > 9;
  D.52906 = D.52903 + 64874;
  D.52907 = D.52906 > 9;
  D.52908 = D.52905 & D.52907;
  if (D.52908 != 0) goto <D.52909>; else goto <D.52896>;
  <D.52909>:
  D.52247 = cfg->cbb;
  D.52248 = D.52247->last_ins;
  D.52287 = D.52248->opcode;
  D.52288 = D.52287 + 64884;
  if (D.52288 > 9) goto <D.52895>; else goto <D.52896>;
  <D.52895>:
  D.52247 = cfg->cbb;
  mono_link_bblock (cfg, D.52247, end_bb);
  <D.52896>:
  <D.52885>:
  D.52247 = cfg->cbb;
  D.52247->next_bb = end_bb;
  cfg->cbb = end_bb;
  D.52234 = cfg->mempool;
  ins = mono_mempool_alloc (D.52234, 80);
  ins->data.op[1].const_val = 0;
  D.52910 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.52910;
  ins->prev = 0B;
  D.52911 = ins->prev;
  ins->next = D.52911;
  ins->opcode = 362;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.52912 = ins->sreg3;
  ins->sreg2 = D.52912;
  D.52913 = ins->sreg2;
  ins->sreg1 = D.52913;
  D.52246 = cfg->ip;
  ins->cil_code = D.52246;
  ins->dreg = dreg;
  ins->type = 1;
  D.52914 = ins;
  return D.52914;
}


emit_memory_barrier (struct MonoCompile * cfg, int kind)
{
  struct MonoMemPool * D.52916;
  long int D.52917;
  struct MonoInst * D.52918;
  int D.52919;
  int D.52920;
  const unsigned char * D.52921;
  struct MonoBasicBlock * D.52922;
  struct MonoInst * D.52923;
  struct MonoInst * D.52927;
  struct MonoInst * ins;

  ins = 0B;
  D.52916 = cfg->mempool;
  ins = mono_mempool_alloc (D.52916, 80);
  ins->data.op[1].const_val = 0;
  D.52917 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.52917;
  ins->prev = 0B;
  D.52918 = ins->prev;
  ins->next = D.52918;
  ins->opcode = 975;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.52919 = ins->sreg3;
  ins->sreg2 = D.52919;
  D.52920 = ins->sreg2;
  ins->sreg1 = D.52920;
  D.52921 = cfg->ip;
  ins->cil_code = D.52921;
  D.52922 = cfg->cbb;
  D.52923 = D.52922->last_ins;
  if (D.52923 != 0B) goto <D.52924>; else goto <D.52925>;
  <D.52924>:
  D.52922 = cfg->cbb;
  D.52923 = D.52922->last_ins;
  D.52923->next = ins;
  D.52922 = cfg->cbb;
  D.52923 = D.52922->last_ins;
  ins->prev = D.52923;
  D.52922 = cfg->cbb;
  D.52922->last_ins = ins;
  goto <D.52926>;
  <D.52925>:
  D.52922 = cfg->cbb;
  D.52922 = cfg->cbb;
  D.52922->last_ins = ins;
  D.52923 = D.52922->last_ins;
  D.52922->code = D.52923;
  <D.52926>:
  ins->backend.memory_barrier_kind = kind;
  D.52927 = ins;
  return D.52927;
}


type_from_op (struct MonoInst * ins, struct MonoInst * src1, struct MonoInst * src2)
{
  short unsigned int D.52929;
  int D.52930;
  unsigned char D.52931;
  int D.52932;
  unsigned char D.52933;
  int D.52934;
  char D.52935;
  unsigned char D.52936;
  unsigned char D.52937;
  int D.52938;
  short unsigned int D.52939;
  short unsigned int D.52940;
  char D.52941;
  unsigned char D.52942;
  char D.52943;
  unsigned char D.52944;
  char D.52945;
  _Bool D.52946;
  unsigned char D.52947;
  unsigned char D.52952;
  _Bool D.52953;
  _Bool D.52954;
  _Bool D.52955;
  char D.52960;
  _Bool D.52961;
  unsigned char D.52962;
  unsigned char D.52966;
  _Bool D.52967;
  _Bool D.52968;
  _Bool D.52969;
  short unsigned int D.52971;
  short unsigned int D.52972;
  short unsigned int D.52973;
  short unsigned int D.52974;
  int D.52975;
  int D.52976;
  _Bool D.52977;
  unsigned char D.52978;
  char D.52979;
  unsigned char D.52980;
  short unsigned int D.52981;
  short unsigned int D.52982;
  unsigned char D.52983;
  short unsigned int D.52987;
  short unsigned int D.52988;
  short unsigned int D.52990;
  short unsigned int D.52991;
  short unsigned int D.52992;
  short unsigned int D.52993;
  short unsigned int D.52995;
  short unsigned int D.52996;
  struct MonoClass * D.53001;

  D.52929 = ins->opcode;
  D.52930 = (int) D.52929;
  switch (D.52930) <default: <D.25086>, case 59: <D.25009>, case 60: <D.25010>, case 61: <D.25011>, case 62: <D.25012>, case 63: <D.25013>, case 64: <D.25014>, case 65: <D.25015>, case 66: <D.25016>, case 67: <D.25017>, case 68: <D.25018>, case 88: <D.24991>, case 89: <D.24992>, case 90: <D.24993>, case 91: <D.24994>, case 92: <D.24997>, case 93: <D.24995>, case 94: <D.24998>, case 95: <D.24999>, case 96: <D.25000>, case 97: <D.25001>, case 98: <D.25002>, case 99: <D.25003>, case 100: <D.25004>, case 101: <D.25024>, case 102: <D.25025>, case 103: <D.25026>, case 104: <D.25027>, case 105: <D.25028>, case 106: <D.25056>, case 107: <D.25062>, case 108: <D.25063>, case 109: <D.25029>, case 110: <D.25057>, case 118: <D.25030>, case 130: <D.25043>, case 131: <D.25044>, case 132: <D.25045>, case 133: <D.25061>, case 134: <D.25046>, case 135: <D.25047>, case 136: <D.25048>, case 137: <D.25060>, case 138: <D.25041>, case 139: <D.25042>, case 179: <D.25035>, case 180: <D.25036>, case 181: <D.25037>, case 182: <D.25038>, case 183: <D.25039>, case 184: <D.25040>, case 185: <D.25058>, case 186: <D.25059>, case 209: <D.25065>, case 210: <D.25066>, case 211: <D.25067>, case 212: <D.25068>, case 213: <D.25069>, case 214: <D.25070>, case 215: <D.25071>, case 216: <D.25072>, case 217: <D.25073>, case 218: <D.25074>, case 219: <D.25075>, case 224: <D.25049>, case 322: <D.25005>, case 325: <D.25006>, case 326: <D.25007>, case 327: <D.25008>, case 391: <D.25076>, case 392: <D.25077>, case 393: <D.25078>, case 394: <D.25079>, case 395: <D.25080>, case 396: <D.25081>, case 397: <D.25082>, case 398: <D.25083>, case 399: <D.25084>, case 400: <D.25085>, case 450: <D.25019>, case 451: <D.25020>, case 452: <D.25021>, case 453: <D.25022>, case 454: <D.25023>, case 732: <D.25064>>
  <D.24991>:
  <D.24992>:
  <D.24993>:
  <D.24994>:
  <D.24995>:
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52933 = src2->type;
  D.52934 = (int) D.52933;
  D.52935 = bin_num_table[D.52932][D.52934];
  D.52936 = (unsigned char) D.52935;
  ins->type = D.52936;
  D.52929 = ins->opcode;
  D.52937 = ins->type;
  D.52938 = (int) D.52937;
  D.52939 = binops_op_map[D.52938];
  D.52940 = D.52929 + D.52939;
  ins->opcode = D.52940;
  goto <D.24996>;
  <D.24997>:
  <D.24998>:
  <D.24999>:
  <D.25000>:
  <D.25001>:
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52933 = src2->type;
  D.52934 = (int) D.52933;
  D.52941 = bin_int_table[D.52932][D.52934];
  D.52942 = (unsigned char) D.52941;
  ins->type = D.52942;
  D.52929 = ins->opcode;
  D.52937 = ins->type;
  D.52938 = (int) D.52937;
  D.52939 = binops_op_map[D.52938];
  D.52940 = D.52929 + D.52939;
  ins->opcode = D.52940;
  goto <D.24996>;
  <D.25002>:
  <D.25003>:
  <D.25004>:
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52933 = src2->type;
  D.52934 = (int) D.52933;
  D.52943 = shift_table[D.52932][D.52934];
  D.52944 = (unsigned char) D.52943;
  ins->type = D.52944;
  D.52929 = ins->opcode;
  D.52937 = ins->type;
  D.52938 = (int) D.52937;
  D.52939 = binops_op_map[D.52938];
  D.52940 = D.52929 + D.52939;
  ins->opcode = D.52940;
  goto <D.24996>;
  <D.25005>:
  <D.25006>:
  <D.25007>:
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52933 = src2->type;
  D.52934 = (int) D.52933;
  D.52945 = bin_comp_table[D.52932][D.52934];
  D.52946 = D.52945 != 0;
  D.52947 = (unsigned char) D.52946;
  ins->type = D.52947;
  D.52931 = src1->type;
  if (D.52931 == 2) goto <D.52948>; else goto <D.52951>;
  <D.52951>:
  D.52952 = src1->type;
  D.52953 = D.52952 == 3;
  D.52954 = D.52952 == 6;
  D.52955 = D.52953 | D.52954;
  if (D.52955 != 0) goto <D.52948>; else goto <D.52956>;
  <D.52956>:
  D.52931 = src1->type;
  if (D.52931 == 5) goto <D.52948>; else goto <D.52949>;
  <D.52948>:
  ins->opcode = 325;
  goto <D.52950>;
  <D.52949>:
  D.52931 = src1->type;
  if (D.52931 == 4) goto <D.52957>; else goto <D.52958>;
  <D.52957>:
  ins->opcode = 324;
  goto <D.52959>;
  <D.52958>:
  ins->opcode = 326;
  <D.52959>:
  <D.52950>:
  goto <D.24996>;
  <D.25008>:
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52960 = bin_comp_table[D.52932][D.52932];
  D.52961 = D.52960 != 0;
  D.52962 = (unsigned char) D.52961;
  ins->type = D.52962;
  D.52931 = src1->type;
  if (D.52931 == 2) goto <D.52963>; else goto <D.52965>;
  <D.52965>:
  D.52966 = src1->type;
  D.52967 = D.52966 == 3;
  D.52968 = D.52966 == 6;
  D.52969 = D.52967 | D.52968;
  if (D.52969 != 0) goto <D.52963>; else goto <D.52970>;
  <D.52970>:
  D.52931 = src1->type;
  if (D.52931 == 5) goto <D.52963>; else goto <D.52964>;
  <D.52963>:
  ins->opcode = 328;
  <D.52964>:
  goto <D.24996>;
  <D.25009>:
  <D.25010>:
  <D.25011>:
  <D.25012>:
  <D.25013>:
  <D.25014>:
  <D.25015>:
  <D.25016>:
  <D.25017>:
  <D.25018>:
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52971 = beqops_op_map[D.52932];
  D.52972 = D.52929 + D.52971;
  ins->opcode = D.52972;
  goto <D.24996>;
  <D.25019>:
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52933 = src2->type;
  D.52934 = (int) D.52933;
  D.52945 = bin_comp_table[D.52932][D.52934];
  D.52946 = D.52945 != 0;
  D.52947 = (unsigned char) D.52946;
  ins->type = D.52947;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52973 = ceqops_op_map[D.52932];
  D.52974 = D.52929 + D.52973;
  ins->opcode = D.52974;
  goto <D.24996>;
  <D.25020>:
  <D.25021>:
  <D.25022>:
  <D.25023>:
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52933 = src2->type;
  D.52934 = (int) D.52933;
  D.52945 = bin_comp_table[D.52932][D.52934];
  D.52975 = (int) D.52945;
  D.52976 = D.52975 & 1;
  D.52977 = D.52976 != 0;
  D.52978 = (unsigned char) D.52977;
  ins->type = D.52978;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52973 = ceqops_op_map[D.52932];
  D.52974 = D.52929 + D.52973;
  ins->opcode = D.52974;
  goto <D.24996>;
  <D.25024>:
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52979 = neg_table[D.52932];
  D.52980 = (unsigned char) D.52979;
  ins->type = D.52980;
  D.52929 = ins->opcode;
  D.52937 = ins->type;
  D.52938 = (int) D.52937;
  D.52981 = unops_op_map[D.52938];
  D.52982 = D.52929 + D.52981;
  ins->opcode = D.52982;
  goto <D.24996>;
  <D.25025>:
  D.52931 = src1->type;
  D.52983 = D.52931 + 255;
  if (D.52983 <= 2) goto <D.52984>; else goto <D.52985>;
  <D.52984>:
  D.52931 = src1->type;
  ins->type = D.52931;
  goto <D.52986>;
  <D.52985>:
  ins->type = 0;
  <D.52986>:
  D.52929 = ins->opcode;
  D.52937 = ins->type;
  D.52938 = (int) D.52937;
  D.52981 = unops_op_map[D.52938];
  D.52982 = D.52929 + D.52981;
  ins->opcode = D.52982;
  goto <D.24996>;
  <D.25026>:
  <D.25027>:
  <D.25028>:
  <D.25029>:
  ins->type = 1;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52987 = unops_op_map[D.52932];
  D.52988 = D.52929 + D.52987;
  ins->opcode = D.52988;
  goto <D.24996>;
  <D.25030>:
  ins->type = 4;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  switch (D.52932) <default: <D.52989>, case 1: <D.25031>, case 2: <D.25034>, case 3: <D.25032>>
  <D.25031>:
  <D.25032>:
  ins->opcode = 592;
  goto <D.25033>;
  <D.25034>:
  ins->opcode = 540;
  goto <D.25033>;
  <D.52989>:
  <D.25033>:
  goto <D.24996>;
  <D.25035>:
  <D.25036>:
  <D.25037>:
  <D.25038>:
  <D.25039>:
  <D.25040>:
  ins->type = 1;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52990 = ovf3ops_op_map[D.52932];
  D.52991 = D.52929 + D.52990;
  ins->opcode = D.52991;
  goto <D.24996>;
  <D.25041>:
  <D.25042>:
  ins->type = 3;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52992 = ovf2ops_op_map[D.52932];
  D.52993 = D.52929 + D.52992;
  ins->opcode = D.52993;
  goto <D.24996>;
  <D.25043>:
  <D.25044>:
  <D.25045>:
  <D.25046>:
  <D.25047>:
  <D.25048>:
  ins->type = 1;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52992 = ovf2ops_op_map[D.52932];
  D.52993 = D.52929 + D.52992;
  ins->opcode = D.52993;
  goto <D.24996>;
  <D.25049>:
  ins->type = 3;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  switch (D.52932) <default: <D.52994>, case 1: <D.25050>, case 2: <D.25054>, case 3: <D.25052>, case 4: <D.25055>, case 5: <D.25053>>
  <D.25050>:
  ins->opcode = 593;
  goto <D.25051>;
  <D.25052>:
  <D.25053>:
  ins->opcode = 541;
  goto <D.25051>;
  <D.25054>:
  ins->opcode = 541;
  goto <D.25051>;
  <D.25055>:
  ins->opcode = 731;
  goto <D.25051>;
  <D.52994>:
  <D.25051>:
  goto <D.24996>;
  <D.25056>:
  <D.25057>:
  ins->type = 2;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52987 = unops_op_map[D.52932];
  D.52988 = D.52929 + D.52987;
  ins->opcode = D.52988;
  goto <D.24996>;
  <D.25058>:
  <D.25059>:
  ins->type = 2;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52990 = ovf3ops_op_map[D.52932];
  D.52991 = D.52929 + D.52990;
  ins->opcode = D.52991;
  goto <D.24996>;
  <D.25060>:
  <D.25061>:
  ins->type = 2;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52992 = ovf2ops_op_map[D.52932];
  D.52993 = D.52929 + D.52992;
  ins->opcode = D.52993;
  goto <D.24996>;
  <D.25062>:
  <D.25063>:
  ins->type = 4;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52987 = unops_op_map[D.52932];
  D.52988 = D.52929 + D.52987;
  ins->opcode = D.52988;
  goto <D.24996>;
  <D.25064>:
  ins->type = 4;
  goto <D.24996>;
  <D.25065>:
  <D.25066>:
  ins->type = 1;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52995 = ovfops_op_map[D.52932];
  D.52996 = D.52929 + D.52995;
  ins->opcode = D.52996;
  goto <D.24996>;
  <D.25067>:
  <D.25068>:
  <D.25069>:
  ins->type = 3;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52995 = ovfops_op_map[D.52932];
  D.52996 = D.52929 + D.52995;
  ins->opcode = D.52996;
  goto <D.24996>;
  <D.25070>:
  <D.25071>:
  <D.25072>:
  <D.25073>:
  <D.25074>:
  <D.25075>:
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52933 = src2->type;
  D.52934 = (int) D.52933;
  D.52935 = bin_num_table[D.52932][D.52934];
  D.52936 = (unsigned char) D.52935;
  ins->type = D.52936;
  D.52929 = ins->opcode;
  D.52931 = src1->type;
  D.52932 = (int) D.52931;
  D.52995 = ovfops_op_map[D.52932];
  D.52996 = D.52929 + D.52995;
  ins->opcode = D.52996;
  D.52937 = ins->type;
  if (D.52937 == 4) goto <D.52997>; else goto <D.52998>;
  <D.52997>:
  ins->type = 0;
  <D.52998>:
  goto <D.24996>;
  <D.25076>:
  ins->type = 3;
  goto <D.24996>;
  <D.25077>:
  <D.25078>:
  <D.25079>:
  <D.25080>:
  <D.25081>:
  <D.25082>:
  ins->type = 3;
  goto <D.24996>;
  <D.25083>:
  ins->type = 2;
  goto <D.24996>;
  <D.25084>:
  <D.25085>:
  ins->type = 4;
  goto <D.24996>;
  <D.25086>:
  D.52929 = ins->opcode;
  D.52930 = (int) D.52929;
  monoeg_g_log (0B, 4, "opcode 0x%04x not handled in type from op", D.52930);
  <D.25087>:
  goto <D.25087>;
  <D.24996>:
  D.52937 = ins->type;
  if (D.52937 == 5) goto <D.52999>; else goto <D.53000>;
  <D.52999>:
  D.53001 = mono_defaults.object_class;
  ins->klass = D.53001;
  <D.53000>:
}


mono_save_token_info (struct MonoCompile * cfg, struct MonoImage * image, guint32 token, void * key)
{
  unsigned char D.53003;
  unsigned char D.53004;
  struct MonoGenericContext * D.53007;
  unsigned int D.53010;
  struct MonoMemPool * D.53013;
  struct GHashTable * D.53014;

  D.53003 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.53004 = D.53003 & 64;
  if (D.53004 != 0) goto <D.53005>; else goto <D.53006>;
  <D.53005>:
  D.53007 = cfg->generic_context;
  if (D.53007 == 0B) goto <D.53008>; else goto <D.53009>;
  <D.53008>:
  D.53010 = token >> 24;
  if (D.53010 != 0) goto <D.53011>; else goto <D.53012>;
  <D.53011>:
  {
    struct MonoJumpInfoToken * jump_info_token;

    D.53013 = cfg->mempool;
    jump_info_token = mono_mempool_alloc0 (D.53013, 32);
    jump_info_token->image = image;
    jump_info_token->token = token;
    D.53014 = cfg->token_info_hash;
    monoeg_g_hash_table_insert_replace (D.53014, key, jump_info_token, 0);
  }
  <D.53012>:
  <D.53009>:
  <D.53006>:
}


ip_in_bb (struct MonoCompile * cfg, struct MonoBasicBlock * bb, const guint8 * ip)
{
  struct MonoBasicBlock * * D.53015;
  long int ip.489;
  unsigned char * D.53017;
  long int D.53018;
  long int D.53019;
  long unsigned int D.53020;
  long unsigned int D.53021;
  struct MonoBasicBlock * * D.53022;
  gboolean D.53023;
  _Bool D.53024;
  _Bool D.53025;
  _Bool D.53026;
  struct MonoBasicBlock * b;

  D.53015 = cfg->cil_offset_to_bb;
  ip.489 = (long int) ip;
  D.53017 = cfg->cil_start;
  D.53018 = (long int) D.53017;
  D.53019 = ip.489 - D.53018;
  D.53020 = (long unsigned int) D.53019;
  D.53021 = D.53020 * 8;
  D.53022 = D.53015 + D.53021;
  b = *D.53022;
  D.53024 = b == 0B;
  D.53025 = b == bb;
  D.53026 = D.53024 | D.53025;
  D.53023 = (gboolean) D.53026;
  return D.53023;
}


handle_delegate_ctor (struct MonoCompile * cfg, struct MonoClass * klass, struct MonoInst * target, struct MonoMethod * method, int context_used)
{
  struct MonoInst * D.53030;
  short unsigned int D.53033;
  void * D.53035;
  struct MonoMemPool * D.53036;
  long int D.53037;
  struct MonoInst * D.53038;
  int D.53039;
  int D.53040;
  const unsigned char * D.53041;
  int D.53042;
  int D.53043;
  struct MonoBasicBlock * D.53044;
  struct MonoInst * D.53045;
  unsigned char D.53049;
  unsigned char D.53050;
  unsigned int D.53053;
  long int D.53054;
  struct MonoInst * D.53055;
  int D.53056;
  int D.53057;
  long int D.53061;
  struct MonoInst * D.53062;
  int D.53063;
  int D.53064;
  int D.53065;
  unsigned int D.53071;
  unsigned char D.53075;
  unsigned char D.53076;
  unsigned int D.53079;
  unsigned int D.53080;
  union mono_mutex_t * D.53086;
  _Bool D.53089;
  long int D.53090;
  long int D.53091;
  void * D.53094;
  struct GHashTable * D.53095;
  struct GHashTable * D.53098;
  _Bool D.53103;
  long int D.53104;
  long int D.53105;
  unsigned char D.53108;
  unsigned char D.53109;
  long int D.53112;
  struct MonoInst * D.53113;
  guint16 iftmp.490;
  int D.53118;
  int D.53119;
  unsigned int D.53120;
  int D.53121;
  unsigned int D.53126;
  int D.53127;
  long int D.53131;
  struct MonoInst * D.53132;
  int D.53133;
  int D.53134;
  int D.53135;
  long int D.53141;
  struct MonoInst * D.53142;
  guint16 iftmp.491;
  int D.53147;
  int D.53148;
  unsigned int D.53149;
  int D.53150;
  struct MonoDomain * D.53155;
  unsigned int D.53156;
  int D.53157;
  long int D.53161;
  struct MonoInst * D.53162;
  int D.53163;
  int D.53164;
  int D.53165;
  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.53028>; else goto <D.53029>;
  <D.53028>:
  D.53030 = 0B;
  return D.53030;
  <D.53029>:
  D.53033 = target->opcode;
  if (D.53033 != 363) goto <D.53031>; else goto <D.53034>;
  <D.53034>:
  D.53035 = target->data.op[0].p;
  if (D.53035 != 0B) goto <D.53031>; else goto <D.53032>;
  <D.53031>:
  {
    struct MonoInst * inst;

    D.53036 = cfg->mempool;
    inst = mono_mempool_alloc (D.53036, 80);
    inst->data.op[1].const_val = 0;
    D.53037 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53037;
    inst->prev = 0B;
    D.53038 = inst->prev;
    inst->next = D.53038;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53039 = inst->sreg3;
    inst->sreg2 = D.53039;
    D.53040 = inst->sreg2;
    inst->sreg1 = D.53040;
    D.53041 = cfg->ip;
    inst->cil_code = D.53041;
    D.53042 = target->dreg;
    inst->sreg1 = D.53042;
    D.53043 = obj->dreg;
    inst->dreg = D.53043;
    inst->data.op[0].const_val = 32;
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    if (D.53045 != 0B) goto <D.53046>; else goto <D.53047>;
    <D.53046>:
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    D.53045->next = inst;
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    inst->prev = D.53045;
    D.53044 = cfg->cbb;
    D.53044->last_ins = inst;
    goto <D.53048>;
    <D.53047>:
    D.53044 = cfg->cbb;
    D.53044 = cfg->cbb;
    D.53044->last_ins = inst;
    D.53045 = D.53044->last_ins;
    D.53044->code = D.53045;
    <D.53048>:
  }
  D.53049 = BIT_FIELD_REF <*cfg, 8, 5624>;
  D.53050 = D.53049 & 16;
  if (D.53050 != 0) goto <D.53051>; else goto <D.53052>;
  <D.53051>:
  D.53053 = alloc_preg (cfg);
  dreg = (int) D.53053;
  D.53036 = cfg->mempool;
  ptr = mono_mempool_alloc (D.53036, 80);
  ptr->data.op[1].const_val = 0;
  D.53054 = ptr->data.op[1].const_val;
  ptr->data.op[0].const_val = D.53054;
  ptr->prev = 0B;
  D.53055 = ptr->prev;
  ptr->next = D.53055;
  ptr->opcode = 542;
  ptr->flags = 0;
  ptr->type = 0;
  ptr->dreg = -1;
  ptr->sreg3 = -1;
  D.53056 = ptr->sreg3;
  ptr->sreg2 = D.53056;
  D.53057 = ptr->sreg2;
  ptr->sreg1 = D.53057;
  D.53041 = cfg->ip;
  ptr->cil_code = D.53041;
  ptr->dreg = dreg;
  D.53043 = obj->dreg;
  ptr->sreg1 = D.53043;
  ptr->data.op[1].const_val = 32;
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  if (D.53045 != 0B) goto <D.53058>; else goto <D.53059>;
  <D.53058>:
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  D.53045->next = ptr;
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  ptr->prev = D.53045;
  D.53044 = cfg->cbb;
  D.53044->last_ins = ptr;
  goto <D.53060>;
  <D.53059>:
  D.53044 = cfg->cbb;
  D.53044 = cfg->cbb;
  D.53044->last_ins = ptr;
  D.53045 = D.53044->last_ins;
  D.53044->code = D.53045;
  <D.53060>:
  emit_write_barrier (cfg, ptr, target);
  <D.53052>:
  <D.53032>:
  method_ins = emit_get_rgctx_method (cfg, context_used, method, 5);
  {
    struct MonoInst * inst;

    D.53036 = cfg->mempool;
    inst = mono_mempool_alloc (D.53036, 80);
    inst->data.op[1].const_val = 0;
    D.53061 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53061;
    inst->prev = 0B;
    D.53062 = inst->prev;
    inst->next = D.53062;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53063 = inst->sreg3;
    inst->sreg2 = D.53063;
    D.53064 = inst->sreg2;
    inst->sreg1 = D.53064;
    D.53041 = cfg->ip;
    inst->cil_code = D.53041;
    D.53065 = method_ins->dreg;
    inst->sreg1 = D.53065;
    D.53043 = obj->dreg;
    inst->dreg = D.53043;
    inst->data.op[0].const_val = 40;
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    if (D.53045 != 0B) goto <D.53066>; else goto <D.53067>;
    <D.53066>:
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    D.53045->next = inst;
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    inst->prev = D.53045;
    D.53044 = cfg->cbb;
    D.53044->last_ins = inst;
    goto <D.53068>;
    <D.53067>:
    D.53044 = cfg->cbb;
    D.53044 = cfg->cbb;
    D.53044->last_ins = inst;
    D.53045 = D.53044->last_ins;
    D.53044->code = D.53045;
    <D.53068>:
  }
  D.53049 = BIT_FIELD_REF <*cfg, 8, 5624>;
  D.53050 = D.53049 & 16;
  if (D.53050 != 0) goto <D.53069>; else goto <D.53070>;
  <D.53069>:
  D.53071 = alloc_preg (cfg);
  dreg = (int) D.53071;
  D.53036 = cfg->mempool;
  ptr = mono_mempool_alloc (D.53036, 80);
  ptr->data.op[1].const_val = 0;
  D.53054 = ptr->data.op[1].const_val;
  ptr->data.op[0].const_val = D.53054;
  ptr->prev = 0B;
  D.53055 = ptr->prev;
  ptr->next = D.53055;
  ptr->opcode = 542;
  ptr->flags = 0;
  ptr->type = 0;
  ptr->dreg = -1;
  ptr->sreg3 = -1;
  D.53056 = ptr->sreg3;
  ptr->sreg2 = D.53056;
  D.53057 = ptr->sreg2;
  ptr->sreg1 = D.53057;
  D.53041 = cfg->ip;
  ptr->cil_code = D.53041;
  ptr->dreg = dreg;
  D.53043 = obj->dreg;
  ptr->sreg1 = D.53043;
  ptr->data.op[1].const_val = 40;
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  if (D.53045 != 0B) goto <D.53072>; else goto <D.53073>;
  <D.53072>:
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  D.53045->next = ptr;
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  ptr->prev = D.53045;
  D.53044 = cfg->cbb;
  D.53044->last_ins = ptr;
  goto <D.53074>;
  <D.53073>:
  D.53044 = cfg->cbb;
  D.53044 = cfg->cbb;
  D.53044->last_ins = ptr;
  D.53045 = D.53044->last_ins;
  D.53044->code = D.53045;
  <D.53074>:
  emit_write_barrier (cfg, ptr, method_ins);
  <D.53070>:
  D.53075 = BIT_FIELD_REF <*method, 8, 264>;
  D.53076 = D.53075 & 2;
  if (D.53076 == 0) goto <D.53077>; else goto <D.53078>;
  <D.53077>:
  D.53079 = cfg->opt;
  D.53080 = D.53079 & 512;
  if (D.53080 == 0) goto <D.53081>; else goto <D.53082>;
  <D.53081>:
  {
    struct MonoInst * code_slot_ins;

    if (context_used != 0) goto <D.53083>; else goto <D.53084>;
    <D.53083>:
    code_slot_ins = emit_get_rgctx_method (cfg, context_used, method, 11);
    goto <D.53085>;
    <D.53084>:
    domain = mono_domain_get ();
    {
      int ret;

      D.53086 = &domain->lock.mutex;
      ret = pthread_mutex_lock (D.53086);
      if (ret != 0) goto <D.53087>; else goto <D.53088>;
      <D.53087>:
      monoeg_g_log (0B, 16, "Bad call to mono_mutex_lock result %d", ret);
      <D.53088>:
      D.53089 = ret != 0;
      D.53090 = (long int) D.53089;
      D.53091 = __builtin_expect (D.53090, 0);
      if (D.53091 != 0) goto <D.53092>; else goto <D.53093>;
      <D.53092>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4431, "ret == 0");
      <D.53093>:
    }
    D.53094 = domain->runtime_info;
    D.53095 = MEM[(struct MonoJitDomainInfo *)D.53094].method_code_hash;
    if (D.53095 == 0B) goto <D.53096>; else goto <D.53097>;
    <D.53096>:
    D.53094 = domain->runtime_info;
    D.53098 = monoeg_g_hash_table_new (0B, 0B);
    MEM[(struct MonoJitDomainInfo *)D.53094].method_code_hash = D.53098;
    <D.53097>:
    D.53094 = domain->runtime_info;
    D.53095 = MEM[(struct MonoJitDomainInfo *)D.53094].method_code_hash;
    code_slot = monoeg_g_hash_table_lookup (D.53095, method);
    if (code_slot == 0B) goto <D.53099>; else goto <D.53100>;
    <D.53099>:
    code_slot = mono_domain_alloc0 (domain, 8);
    D.53094 = domain->runtime_info;
    D.53095 = MEM[(struct MonoJitDomainInfo *)D.53094].method_code_hash;
    monoeg_g_hash_table_insert_replace (D.53095, method, code_slot, 0);
    <D.53100>:
    {
      int ret;

      D.53086 = &domain->lock.mutex;
      ret = pthread_mutex_unlock (D.53086);
      if (ret != 0) goto <D.53101>; else goto <D.53102>;
      <D.53101>:
      monoeg_g_log (0B, 16, "Bad call to mono_mutex_unlock result %d", ret);
      <D.53102>:
      D.53103 = ret != 0;
      D.53104 = (long int) D.53103;
      D.53105 = __builtin_expect (D.53104, 0);
      if (D.53105 != 0) goto <D.53106>; else goto <D.53107>;
      <D.53106>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 4439, "ret == 0");
      <D.53107>:
    }
    D.53108 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.53109 = D.53108 & 64;
    if (D.53109 != 0) goto <D.53110>; else goto <D.53111>;
    <D.53110>:
    D.53036 = cfg->mempool;
    code_slot_ins = mono_mempool_alloc (D.53036, 80);
    code_slot_ins->data.op[1].const_val = 0;
    D.53112 = code_slot_ins->data.op[1].const_val;
    code_slot_ins->data.op[0].const_val = D.53112;
    code_slot_ins->prev = 0B;
    D.53113 = code_slot_ins->prev;
    code_slot_ins->next = D.53113;
    D.53108 = BIT_FIELD_REF <*cfg, 8, 5600>;
    D.53109 = D.53108 & 64;
    if (D.53109 != 0) goto <D.53115>; else goto <D.53116>;
    <D.53115>:
    iftmp.490 = 736;
    goto <D.53117>;
    <D.53116>:
    iftmp.490 = 363;
    <D.53117>:
    code_slot_ins->opcode = iftmp.490;
    code_slot_ins->flags = 0;
    code_slot_ins->type = 0;
    code_slot_ins->dreg = -1;
    code_slot_ins->sreg3 = -1;
    D.53118 = code_slot_ins->sreg3;
    code_slot_ins->sreg2 = D.53118;
    D.53119 = code_slot_ins->sreg2;
    code_slot_ins->sreg1 = D.53119;
    D.53041 = cfg->ip;
    code_slot_ins->cil_code = D.53041;
    code_slot_ins->data.op[0].p = method;
    code_slot_ins->data.op[1].src = 50B;
    code_slot_ins->type = 3;
    D.53120 = alloc_dreg (cfg, 3);
    D.53121 = (int) D.53120;
    code_slot_ins->dreg = D.53121;
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    if (D.53045 != 0B) goto <D.53122>; else goto <D.53123>;
    <D.53122>:
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    D.53045->next = code_slot_ins;
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    code_slot_ins->prev = D.53045;
    D.53044 = cfg->cbb;
    D.53044->last_ins = code_slot_ins;
    goto <D.53124>;
    <D.53123>:
    D.53044 = cfg->cbb;
    D.53044 = cfg->cbb;
    D.53044->last_ins = code_slot_ins;
    D.53045 = D.53044->last_ins;
    D.53044->code = D.53045;
    <D.53124>:
    goto <D.53125>;
    <D.53111>:
    D.53036 = cfg->mempool;
    code_slot_ins = mono_mempool_alloc (D.53036, 80);
    code_slot_ins->data.op[1].const_val = 0;
    D.53112 = code_slot_ins->data.op[1].const_val;
    code_slot_ins->data.op[0].const_val = D.53112;
    code_slot_ins->prev = 0B;
    D.53113 = code_slot_ins->prev;
    code_slot_ins->next = D.53113;
    code_slot_ins->opcode = 363;
    code_slot_ins->flags = 0;
    code_slot_ins->type = 0;
    code_slot_ins->dreg = -1;
    code_slot_ins->sreg3 = -1;
    D.53118 = code_slot_ins->sreg3;
    code_slot_ins->sreg2 = D.53118;
    D.53119 = code_slot_ins->sreg2;
    code_slot_ins->sreg1 = D.53119;
    D.53041 = cfg->ip;
    code_slot_ins->cil_code = D.53041;
    code_slot_ins->data.op[0].p = code_slot;
    code_slot_ins->type = 3;
    D.53126 = alloc_dreg (cfg, 3);
    D.53127 = (int) D.53126;
    code_slot_ins->dreg = D.53127;
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    if (D.53045 != 0B) goto <D.53128>; else goto <D.53129>;
    <D.53128>:
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    D.53045->next = code_slot_ins;
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    code_slot_ins->prev = D.53045;
    D.53044 = cfg->cbb;
    D.53044->last_ins = code_slot_ins;
    goto <D.53130>;
    <D.53129>:
    D.53044 = cfg->cbb;
    D.53044 = cfg->cbb;
    D.53044->last_ins = code_slot_ins;
    D.53045 = D.53044->last_ins;
    D.53044->code = D.53045;
    <D.53130>:
    <D.53125>:
    <D.53085>:
    {
      struct MonoInst * inst;

      D.53036 = cfg->mempool;
      inst = mono_mempool_alloc (D.53036, 80);
      inst->data.op[1].const_val = 0;
      D.53131 = inst->data.op[1].const_val;
      inst->data.op[0].const_val = D.53131;
      inst->prev = 0B;
      D.53132 = inst->prev;
      inst->next = D.53132;
      inst->opcode = 374;
      inst->flags = 0;
      inst->type = 0;
      inst->dreg = -1;
      inst->sreg3 = -1;
      D.53133 = inst->sreg3;
      inst->sreg2 = D.53133;
      D.53134 = inst->sreg2;
      inst->sreg1 = D.53134;
      D.53041 = cfg->ip;
      inst->cil_code = D.53041;
      D.53135 = code_slot_ins->dreg;
      inst->sreg1 = D.53135;
      D.53043 = obj->dreg;
      inst->dreg = D.53043;
      inst->data.op[0].const_val = 56;
      D.53044 = cfg->cbb;
      D.53045 = D.53044->last_ins;
      if (D.53045 != 0B) goto <D.53136>; else goto <D.53137>;
      <D.53136>:
      D.53044 = cfg->cbb;
      D.53045 = D.53044->last_ins;
      D.53045->next = inst;
      D.53044 = cfg->cbb;
      D.53045 = D.53044->last_ins;
      inst->prev = D.53045;
      D.53044 = cfg->cbb;
      D.53044->last_ins = inst;
      goto <D.53138>;
      <D.53137>:
      D.53044 = cfg->cbb;
      D.53044 = cfg->cbb;
      D.53044->last_ins = inst;
      D.53045 = D.53044->last_ins;
      D.53044->code = D.53045;
      <D.53138>:
    }
  }
  <D.53082>:
  <D.53078>:
  D.53108 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.53109 = D.53108 & 64;
  if (D.53109 != 0) goto <D.53139>; else goto <D.53140>;
  <D.53139>:
  D.53036 = cfg->mempool;
  tramp_ins = mono_mempool_alloc (D.53036, 80);
  tramp_ins->data.op[1].const_val = 0;
  D.53141 = tramp_ins->data.op[1].const_val;
  tramp_ins->data.op[0].const_val = D.53141;
  tramp_ins->prev = 0B;
  D.53142 = tramp_ins->prev;
  tramp_ins->next = D.53142;
  D.53108 = BIT_FIELD_REF <*cfg, 8, 5600>;
  D.53109 = D.53108 & 64;
  if (D.53109 != 0) goto <D.53144>; else goto <D.53145>;
  <D.53144>:
  iftmp.491 = 736;
  goto <D.53146>;
  <D.53145>:
  iftmp.491 = 363;
  <D.53146>:
  tramp_ins->opcode = iftmp.491;
  tramp_ins->flags = 0;
  tramp_ins->type = 0;
  tramp_ins->dreg = -1;
  tramp_ins->sreg3 = -1;
  D.53147 = tramp_ins->sreg3;
  tramp_ins->sreg2 = D.53147;
  D.53148 = tramp_ins->sreg2;
  tramp_ins->sreg1 = D.53148;
  D.53041 = cfg->ip;
  tramp_ins->cil_code = D.53041;
  tramp_ins->data.op[0].p = klass;
  tramp_ins->data.op[1].src = 30B;
  tramp_ins->type = 3;
  D.53149 = alloc_dreg (cfg, 3);
  D.53150 = (int) D.53149;
  tramp_ins->dreg = D.53150;
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  if (D.53045 != 0B) goto <D.53151>; else goto <D.53152>;
  <D.53151>:
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  D.53045->next = tramp_ins;
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  tramp_ins->prev = D.53045;
  D.53044 = cfg->cbb;
  D.53044->last_ins = tramp_ins;
  goto <D.53153>;
  <D.53152>:
  D.53044 = cfg->cbb;
  D.53044 = cfg->cbb;
  D.53044->last_ins = tramp_ins;
  D.53045 = D.53044->last_ins;
  D.53044->code = D.53045;
  <D.53153>:
  goto <D.53154>;
  <D.53140>:
  D.53155 = cfg->domain;
  trampoline = mono_create_delegate_trampoline (D.53155, klass);
  D.53036 = cfg->mempool;
  tramp_ins = mono_mempool_alloc (D.53036, 80);
  tramp_ins->data.op[1].const_val = 0;
  D.53141 = tramp_ins->data.op[1].const_val;
  tramp_ins->data.op[0].const_val = D.53141;
  tramp_ins->prev = 0B;
  D.53142 = tramp_ins->prev;
  tramp_ins->next = D.53142;
  tramp_ins->opcode = 363;
  tramp_ins->flags = 0;
  tramp_ins->type = 0;
  tramp_ins->dreg = -1;
  tramp_ins->sreg3 = -1;
  D.53147 = tramp_ins->sreg3;
  tramp_ins->sreg2 = D.53147;
  D.53148 = tramp_ins->sreg2;
  tramp_ins->sreg1 = D.53148;
  D.53041 = cfg->ip;
  tramp_ins->cil_code = D.53041;
  tramp_ins->data.op[0].p = trampoline;
  tramp_ins->type = 3;
  D.53156 = alloc_dreg (cfg, 3);
  D.53157 = (int) D.53156;
  tramp_ins->dreg = D.53157;
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  if (D.53045 != 0B) goto <D.53158>; else goto <D.53159>;
  <D.53158>:
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  D.53045->next = tramp_ins;
  D.53044 = cfg->cbb;
  D.53045 = D.53044->last_ins;
  tramp_ins->prev = D.53045;
  D.53044 = cfg->cbb;
  D.53044->last_ins = tramp_ins;
  goto <D.53160>;
  <D.53159>:
  D.53044 = cfg->cbb;
  D.53044 = cfg->cbb;
  D.53044->last_ins = tramp_ins;
  D.53045 = D.53044->last_ins;
  D.53044->code = D.53045;
  <D.53160>:
  <D.53154>:
  {
    struct MonoInst * inst;

    D.53036 = cfg->mempool;
    inst = mono_mempool_alloc (D.53036, 80);
    inst->data.op[1].const_val = 0;
    D.53161 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.53161;
    inst->prev = 0B;
    D.53162 = inst->prev;
    inst->next = D.53162;
    inst->opcode = 374;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.53163 = inst->sreg3;
    inst->sreg2 = D.53163;
    D.53164 = inst->sreg2;
    inst->sreg1 = D.53164;
    D.53041 = cfg->ip;
    inst->cil_code = D.53041;
    D.53165 = tramp_ins->dreg;
    inst->sreg1 = D.53165;
    D.53043 = obj->dreg;
    inst->dreg = D.53043;
    inst->data.op[0].const_val = 24;
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    if (D.53045 != 0B) goto <D.53166>; else goto <D.53167>;
    <D.53166>:
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    D.53045->next = inst;
    D.53044 = cfg->cbb;
    D.53045 = D.53044->last_ins;
    inst->prev = D.53045;
    D.53044 = cfg->cbb;
    D.53044->last_ins = inst;
    goto <D.53168>;
    <D.53167>:
    D.53044 = cfg->cbb;
    D.53044 = cfg->cbb;
    D.53044->last_ins = inst;
    D.53045 = D.53044->last_ins;
    D.53044->code = D.53045;
    <D.53168>:
  }
  D.53030 = obj;
  return D.53030;
}


mini_get_method (struct MonoCompile * cfg, struct MonoMethod * m, guint32 token, struct MonoClass * klass, struct MonoGenericContext * context)
{
  _Bool D.53170;
  _Bool D.53171;
  _Bool D.53172;
  struct MonoGenericSharingContext * D.53175;
  struct MonoClass * D.53178;
  struct MonoType * D.53179;
  int D.53180;
  struct MonoMethod * D.53183;
  struct MonoMethod * method;

  method = mini_get_method_allow_open (m, token, klass, context);
  D.53170 = method != 0B;
  D.53171 = cfg != 0B;
  D.53172 = D.53170 & D.53171;
  if (D.53172 != 0) goto <D.53173>; else goto <D.53174>;
  <D.53173>:
  D.53175 = cfg->generic_sharing_context;
  if (D.53175 == 0B) goto <D.53176>; else goto <D.53177>;
  <D.53176>:
  D.53178 = method->klass;
  D.53179 = &D.53178->byval_arg;
  D.53180 = mono_class_is_open_constructed_type (D.53179);
  if (D.53180 != 0) goto <D.53181>; else goto <D.53182>;
  <D.53181>:
  D.53183 = 0B;
  return D.53183;
  <D.53182>:
  <D.53177>:
  <D.53174>:
  D.53183 = method;
  return D.53183;
}


check_linkdemand (struct MonoCompile * cfg, struct MonoMethod * caller, struct MonoMethod * callee)
{
  struct MonoMethod * D.53185;
  unsigned char D.53188;
  gboolean D.53191;
  struct MonoDomain * D.53192;
  struct MonoMemPool * D.53197;
  void * D.53198;
  struct MonoInst * D.53199;
  long int D.53200;
  struct MonoInst * D.53201;
  int D.53202;
  int D.53203;
  const unsigned char * D.53204;
  unsigned int D.53205;
  int D.53206;
  void * D.53207;
  struct MonoInst * D.53208;
  long int D.53209;
  struct MonoInst * D.53210;
  guint16 iftmp.492;
  unsigned char D.53212;
  unsigned char D.53213;
  int D.53217;
  int D.53218;
  unsigned int D.53219;
  int D.53220;
  struct MonoMethod * D.53221;
  unsigned int D.53223;
  guint32 result;

  D.53185 = cfg->method;
  if (D.53185 != caller) goto <D.53186>; else goto <D.53187>;
  <D.53186>:
  D.53188 = mono_method_has_declsec (callee);
  if (D.53188 != 0) goto <D.53189>; else goto <D.53190>;
  <D.53189>:
  D.53191 = 1;
  return D.53191;
  <D.53190>:
  <D.53187>:
  D.53192 = cfg->domain;
  result = mono_declsec_linkdemand (D.53192, caller, callee);
  if (result == 0) goto <D.53193>; else goto <D.53194>;
  <D.53193>:
  D.53191 = 0;
  return D.53191;
  <D.53194>:
  if (result == 4) goto <D.53195>; else goto <D.53196>;
  <D.53195>:
  {
    struct MonoSecurityManager * secman;
    struct MonoInst * args[2];

    try
      {
        secman = mono_security_manager_get_methods ();
        D.53197 = cfg->mempool;
        D.53198 = mono_mempool_alloc (D.53197, 80);
        args[0] = D.53198;
        D.53199 = args[0];
        D.53199 = args[0];
        D.53199->data.op[1].const_val = 0;
        D.53200 = D.53199->data.op[1].const_val;
        D.53199->data.op[0].const_val = D.53200;
        D.53199 = args[0];
        D.53199 = args[0];
        D.53199->prev = 0B;
        D.53201 = D.53199->prev;
        D.53199->next = D.53201;
        D.53199 = args[0];
        D.53199->opcode = 362;
        D.53199 = args[0];
        D.53199->flags = 0;
        D.53199 = args[0];
        D.53199->type = 0;
        D.53199 = args[0];
        D.53199->dreg = -1;
        D.53199 = args[0];
        D.53199 = args[0];
        D.53199 = args[0];
        D.53199->sreg3 = -1;
        D.53202 = D.53199->sreg3;
        D.53199->sreg2 = D.53202;
        D.53203 = D.53199->sreg2;
        D.53199->sreg1 = D.53203;
        D.53199 = args[0];
        D.53204 = cfg->ip;
        D.53199->cil_code = D.53204;
        D.53199 = args[0];
        D.53199->data.op[0].const_val = 4;
        D.53199 = args[0];
        D.53199->type = 1;
        D.53199 = args[0];
        D.53205 = alloc_dreg (cfg, 1);
        D.53206 = (int) D.53205;
        D.53199->dreg = D.53206;
        D.53197 = cfg->mempool;
        D.53207 = mono_mempool_alloc (D.53197, 80);
        args[1] = D.53207;
        D.53208 = args[1];
        D.53208 = args[1];
        D.53208->data.op[1].const_val = 0;
        D.53209 = D.53208->data.op[1].const_val;
        D.53208->data.op[0].const_val = D.53209;
        D.53208 = args[1];
        D.53208 = args[1];
        D.53208->prev = 0B;
        D.53210 = D.53208->prev;
        D.53208->next = D.53210;
        D.53208 = args[1];
        D.53212 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.53213 = D.53212 & 64;
        if (D.53213 != 0) goto <D.53214>; else goto <D.53215>;
        <D.53214>:
        iftmp.492 = 736;
        goto <D.53216>;
        <D.53215>:
        iftmp.492 = 363;
        <D.53216>:
        D.53208->opcode = iftmp.492;
        D.53208 = args[1];
        D.53208->flags = 0;
        D.53208 = args[1];
        D.53208->type = 0;
        D.53208 = args[1];
        D.53208->dreg = -1;
        D.53208 = args[1];
        D.53208 = args[1];
        D.53208 = args[1];
        D.53208->sreg3 = -1;
        D.53217 = D.53208->sreg3;
        D.53208->sreg2 = D.53217;
        D.53218 = D.53208->sreg2;
        D.53208->sreg1 = D.53218;
        D.53208 = args[1];
        D.53204 = cfg->ip;
        D.53208->cil_code = D.53204;
        D.53208 = args[1];
        D.53208->data.op[0].p = caller;
        D.53208 = args[1];
        D.53208->data.op[1].src = 6B;
        D.53208 = args[1];
        D.53208->type = 3;
        D.53208 = args[1];
        D.53219 = alloc_dreg (cfg, 3);
        D.53220 = (int) D.53219;
        D.53208->dreg = D.53220;
        D.53221 = secman->linkdemandsecurityexception;
        mono_emit_method_call (cfg, D.53221, &args, 0B);
      }
    finally
      {
        args = {CLOBBER};
      }
  }
  goto <D.53222>;
  <D.53196>:
  D.53223 = cfg->exception_type;
  if (D.53223 == 0) goto <D.53224>; else goto <D.53225>;
  <D.53224>:
  mono_cfg_set_exception (cfg, 1);
  cfg->exception_data = result;
  D.53191 = 1;
  return D.53191;
  <D.53225>:
  <D.53222>:
  D.53191 = 0;
  return D.53191;
}


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.53227;
  struct MonoException * ex;

  D.53227 = get_original_method (caller);
  ex = mono_security_core_clr_is_call_allowed (D.53227, callee);
  if (ex != 0B) goto <D.53228>; else goto <D.53229>;
  <D.53228>:
  emit_throw_exception (cfg, ex);
  <D.53229>:
}


emit_optimized_ldloca_ir (struct MonoCompile * cfg, unsigned char * ip, unsigned char * end, int size)
{
  unsigned char * D.53232;
  unsigned char D.53233;
  const guint16 * D.53235;
  short unsigned int D.53236;
  unsigned char * D.53237;
  unsigned char D.53240;
  const guint8 * D.53245;
  struct MonoBasicBlock * D.53246;
  int D.53247;
  const guint32 * D.53250;
  unsigned int D.53251;
  struct MonoGenericContext * D.53252;
  unsigned int token.493;
  struct MonoMethod * D.53254;
  unsigned char D.53258;
  struct MonoDebugOptions * D.53259;
  int D.53260;
  struct MonoType * D.53262;
  unsigned char * D.53263;
  int local;
  int token;
  struct MonoClass * klass;
  struct MonoType * type;
  void load_error = <<< error >>>;

  if (size == 1) goto <D.53230>; else goto <D.53231>;
  <D.53230>:
  D.53232 = ip + 1;
  D.53233 = *D.53232;
  local = (int) D.53233;
  ip = ip + 2;
  goto <D.53234>;
  <D.53231>:
  D.53235 = ip + 2;
  D.53236 = *D.53235;
  local = (int) D.53236;
  ip = ip + 4;
  <D.53234>:
  D.53237 = ip + 6;
  if (D.53237 < end) goto <D.53238>; else goto <D.53239>;
  <D.53238>:
  D.53240 = *ip;
  if (D.53240 == 254) goto <D.53241>; else goto <D.53242>;
  <D.53241>:
  D.53232 = ip + 1;
  D.53233 = *D.53232;
  if (D.53233 == 21) goto <D.53243>; else goto <D.53244>;
  <D.53243>:
  D.53245 = ip + 1;
  D.53246 = cfg->cbb;
  D.53247 = ip_in_bb (cfg, D.53246, D.53245);
  if (D.53247 != 0) goto <D.53248>; else goto <D.53249>;
  <D.53248>:
  D.53250 = ip + 2;
  D.53251 = *D.53250;
  token = (int) D.53251;
  D.53252 = cfg->generic_context;
  token.493 = (unsigned int) token;
  D.53254 = cfg->current_method;
  klass = mini_get_class (D.53254, token.493, D.53252);
  if (klass == 0B) goto <D.53255>; else goto <D.53257>;
  <D.53257>:
  D.53258 = klass->exception_type;
  if (D.53258 != 0) goto <D.53255>; else goto <D.53256>;
  <D.53255>:
  cfg->exception_ptr = klass;
  D.53259 = mini_get_debug_options ();
  D.53260 = D.53259->break_on_unverified;
  if (D.53260 != 0) goto <D.53261>; else goto load_error;
  <D.53261>:
  __asm__ __volatile__("int $03");
  <D.53256>:
  D.53262 = &klass->byval_arg;
  type = mini_replace_type (D.53262);
  emit_init_local (cfg, local, type);
  D.53263 = ip + 6;
  return D.53263;
  <D.53249>:
  <D.53244>:
  <D.53242>:
  <D.53239>:
  load_error:
  D.53263 = 0B;
  return D.53263;
}


target_type_is_incompatible (struct MonoCompile * cfg, struct MonoType * target, struct MonoInst * arg)
{
  unsigned char D.53265;
  unsigned char D.53266;
  unsigned char D.53269;
  int D.53272;
  struct MonoClass * D.53273;
  struct MonoClass * D.53274;
  _Bool D.53275;
  unsigned char D.53278;
  int D.53279;
  unsigned char D.53280;
  _Bool D.53281;
  _Bool D.53282;
  _Bool D.53283;
  unsigned char D.53286;
  _Bool D.53287;
  _Bool D.53288;
  _Bool D.53289;
  unsigned char D.53294;
  _Bool D.53295;
  _Bool D.53296;
  _Bool D.53297;
  int D.53316;
  struct MonoGenericSharingContext * D.53325;
  _Bool D.53326;
  long int D.53327;
  long int D.53328;
  int D.53331;
  struct MonoType * simple_type;
  struct MonoClass * klass;

  target = mini_replace_type (target);
  D.53265 = BIT_FIELD_REF <*target, 8, 88>;
  D.53266 = D.53265 & 64;
  if (D.53266 != 0) goto <D.53267>; else goto <D.53268>;
  <D.53267>:
  D.53269 = arg->type;
  if (D.53269 == 5) goto <D.53270>; else goto <D.53271>;
  <D.53270>:
  D.53273 = arg->klass;
  D.53274 = mono_class_from_mono_type (target);
  D.53275 = D.53273 != D.53274;
  D.53272 = (int) D.53275;
  return D.53272;
  <D.53271>:
  D.53269 = arg->type;
  if (D.53269 == 3) goto <D.53276>; else goto <D.53277>;
  <D.53276>:
  D.53272 = 0;
  return D.53272;
  <D.53277>:
  D.53272 = 1;
  return D.53272;
  <D.53268>:
  simple_type = mono_type_get_underlying_type (target);
  D.53278 = simple_type->type;
  D.53279 = (int) D.53278;
  switch (D.53279) <default: <D.25597>, case 1: <D.25570>, case 2: <D.25573>, case 3: <D.25576>, case 4: <D.25571>, case 5: <D.25572>, case 6: <D.25574>, case 7: <D.25575>, case 8: <D.25577>, case 9: <D.25578>, case 10: <D.25588>, case 11: <D.25589>, case 12: <D.25590>, case 13: <D.25591>, case 14: <D.25584>, case 15: <D.25579>, case 17: <D.25592>, case 18: <D.25583>, case 19: <D.25595>, case 20: <D.25587>, case 21: <D.25594>, case 22: <D.25593>, case 24: <D.25580>, case 25: <D.25581>, case 27: <D.25582>, case 28: <D.25585>, case 29: <D.25586>, case 30: <D.25596>>
  <D.25570>:
  D.53272 = 1;
  return D.53272;
  <D.25571>:
  <D.25572>:
  <D.25573>:
  <D.25574>:
  <D.25575>:
  <D.25576>:
  <D.25577>:
  <D.25578>:
  D.53280 = arg->type;
  D.53281 = D.53280 != 1;
  D.53282 = D.53280 != 3;
  D.53283 = D.53281 & D.53282;
  if (D.53283 != 0) goto <D.53284>; else goto <D.53285>;
  <D.53284>:
  D.53272 = 1;
  return D.53272;
  <D.53285>:
  D.53272 = 0;
  return D.53272;
  <D.25579>:
  D.53286 = arg->type;
  D.53287 = D.53286 != 1;
  D.53288 = D.53286 != 3;
  D.53289 = D.53287 & D.53288;
  if (D.53289 != 0) goto <D.53290>; else goto <D.53291>;
  <D.53290>:
  D.53269 = arg->type;
  if (D.53269 != 5) goto <D.53292>; else goto <D.53293>;
  <D.53292>:
  D.53272 = 1;
  return D.53272;
  <D.53293>:
  <D.53291>:
  D.53272 = 0;
  return D.53272;
  <D.25580>:
  <D.25581>:
  <D.25582>:
  D.53294 = arg->type;
  D.53295 = D.53294 != 1;
  D.53296 = D.53294 != 3;
  D.53297 = D.53295 & D.53296;
  if (D.53297 != 0) goto <D.53298>; else goto <D.53299>;
  <D.53298>:
  D.53269 = arg->type;
  if (D.53269 != 5) goto <D.53300>; else goto <D.53301>;
  <D.53300>:
  D.53272 = 1;
  return D.53272;
  <D.53301>:
  <D.53299>:
  D.53272 = 0;
  return D.53272;
  <D.25583>:
  <D.25584>:
  <D.25585>:
  <D.25586>:
  <D.25587>:
  D.53269 = arg->type;
  if (D.53269 != 6) goto <D.53302>; else goto <D.53303>;
  <D.53302>:
  D.53272 = 1;
  return D.53272;
  <D.53303>:
  D.53272 = 0;
  return D.53272;
  <D.25588>:
  <D.25589>:
  D.53269 = arg->type;
  if (D.53269 != 2) goto <D.53304>; else goto <D.53305>;
  <D.53304>:
  D.53272 = 1;
  return D.53272;
  <D.53305>:
  D.53272 = 0;
  return D.53272;
  <D.25590>:
  <D.25591>:
  D.53269 = arg->type;
  if (D.53269 != 4) goto <D.53306>; else goto <D.53307>;
  <D.53306>:
  D.53272 = 1;
  return D.53272;
  <D.53307>:
  D.53272 = 0;
  return D.53272;
  <D.25592>:
  D.53269 = arg->type;
  if (D.53269 != 7) goto <D.53308>; else goto <D.53309>;
  <D.53308>:
  D.53272 = 1;
  return D.53272;
  <D.53309>:
  klass = mono_class_from_mono_type (simple_type);
  D.53273 = arg->klass;
  if (D.53273 != klass) goto <D.53310>; else goto <D.53311>;
  <D.53310>:
  D.53272 = 1;
  return D.53272;
  <D.53311>:
  D.53272 = 0;
  return D.53272;
  <D.25593>:
  D.53269 = arg->type;
  if (D.53269 != 7) goto <D.53312>; else goto <D.53313>;
  <D.53312>:
  D.53272 = 1;
  return D.53272;
  <D.53313>:
  klass = mono_class_from_mono_type (simple_type);
  D.53273 = arg->klass;
  if (D.53273 != klass) goto <D.53314>; else goto <D.53315>;
  <D.53314>:
  D.53272 = 1;
  return D.53272;
  <D.53315>:
  D.53272 = 0;
  return D.53272;
  <D.25594>:
  D.53316 = mono_type_generic_inst_is_valuetype (simple_type);
  if (D.53316 != 0) goto <D.53317>; else goto <D.53318>;
  <D.53317>:
  D.53269 = arg->type;
  if (D.53269 != 7) goto <D.53319>; else goto <D.53320>;
  <D.53319>:
  D.53272 = 1;
  return D.53272;
  <D.53320>:
  klass = mono_class_from_mono_type (simple_type);
  D.53273 = arg->klass;
  if (D.53273 != klass) goto <D.53321>; else goto <D.53322>;
  <D.53321>:
  D.53272 = 1;
  return D.53272;
  <D.53322>:
  D.53272 = 0;
  return D.53272;
  <D.53318>:
  D.53269 = arg->type;
  if (D.53269 != 6) goto <D.53323>; else goto <D.53324>;
  <D.53323>:
  D.53272 = 1;
  return D.53272;
  <D.53324>:
  D.53272 = 0;
  return D.53272;
  <D.25595>:
  <D.25596>:
  D.53325 = cfg->generic_sharing_context;
  D.53326 = D.53325 == 0B;
  D.53327 = (long int) D.53326;
  D.53328 = __builtin_expect (D.53327, 0);
  if (D.53328 != 0) goto <D.53329>; else goto <D.53330>;
  <D.53329>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 2160, "cfg->generic_sharing_context");
  <D.53330>:
  D.53331 = mini_type_var_is_vt (cfg, simple_type);
  if (D.53331 != 0) goto <D.53332>; else goto <D.53333>;
  <D.53332>:
  D.53269 = arg->type;
  if (D.53269 != 7) goto <D.53334>; else goto <D.53335>;
  <D.53334>:
  D.53272 = 1;
  return D.53272;
  <D.53335>:
  goto <D.53336>;
  <D.53333>:
  D.53269 = arg->type;
  if (D.53269 != 6) goto <D.53337>; else goto <D.53338>;
  <D.53337>:
  D.53272 = 1;
  return D.53272;
  <D.53338>:
  <D.53336>:
  D.53272 = 0;
  return D.53272;
  <D.25597>:
  D.53278 = simple_type->type;
  D.53279 = (int) D.53278;
  monoeg_g_log (0B, 4, "unknown type 0x%02x in target_type_is_incompatible", D.53279);
  <D.25598>:
  goto <D.25598>;
  D.53272 = 1;
  return D.53272;
}


emit_stloc_ir (struct MonoCompile * cfg, struct MonoInst * * sp, struct MonoMethodHeader * header, int n)
{
  struct MonoType * D.53340;
  struct MonoBasicBlock * D.53344;
  struct MonoInst * D.53345;
  struct MonoInst * D.53346;
  short unsigned int D.53348;
  short unsigned int D.53349;
  struct MonoInst * * D.53351;
  long unsigned int D.53352;
  long unsigned int D.53353;
  struct MonoInst * * D.53354;
  struct MonoInst * D.53355;
  int D.53356;
  struct MonoMemPool * D.53357;
  long int D.53358;
  struct MonoInst * D.53359;
  int D.53360;
  int D.53361;
  const unsigned char * D.53362;
  struct MonoType * D.53363;
  unsigned int D.53364;
  short unsigned int D.53365;
  struct MonoClass * D.53366;
  int D.53367;
  short unsigned int D.53368;
  struct MonoClass * D.53371;
  struct MonoInst * ins;
  guint32 opcode;

  D.53340 = header->locals[n];
  opcode = mono_type_to_regmove (cfg, D.53340);
  if (opcode == 428) goto <D.53343>; else goto <D.53341>;
  <D.53343>:
  D.53344 = cfg->cbb;
  D.53345 = D.53344->last_ins;
  D.53346 = *sp;
  if (D.53345 == D.53346) goto <D.53347>; else goto <D.53341>;
  <D.53347>:
  D.53346 = *sp;
  D.53348 = D.53346->opcode;
  D.53349 = D.53348 + 65174;
  if (D.53349 <= 1) goto <D.53350>; else goto <D.53341>;
  <D.53350>:
  D.53346 = *sp;
  D.53351 = cfg->locals;
  D.53352 = (long unsigned int) n;
  D.53353 = D.53352 * 8;
  D.53354 = D.53351 + D.53353;
  D.53355 = *D.53354;
  D.53356 = D.53355->dreg;
  D.53346->dreg = D.53356;
  goto <D.53342>;
  <D.53341>:
  D.53357 = cfg->mempool;
  ins = mono_mempool_alloc (D.53357, 80);
  ins->data.op[1].const_val = 0;
  D.53358 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53358;
  ins->prev = 0B;
  D.53359 = ins->prev;
  ins->next = D.53359;
  ins->opcode = 428;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53360 = ins->sreg3;
  ins->sreg2 = D.53360;
  D.53361 = ins->sreg2;
  ins->sreg1 = D.53361;
  D.53362 = cfg->ip;
  ins->cil_code = D.53362;
  D.53351 = cfg->locals;
  D.53352 = (long unsigned int) n;
  D.53353 = D.53352 * 8;
  D.53354 = D.53351 + D.53353;
  D.53355 = *D.53354;
  D.53363 = D.53355->data.op[1].vtype;
  D.53364 = mono_type_to_regmove (cfg, D.53363);
  D.53365 = (short unsigned int) D.53364;
  ins->opcode = D.53365;
  D.53351 = cfg->locals;
  D.53352 = (long unsigned int) n;
  D.53353 = D.53352 * 8;
  D.53354 = D.53351 + D.53353;
  D.53355 = *D.53354;
  D.53366 = D.53355->klass;
  ins->klass = D.53366;
  D.53346 = *sp;
  D.53367 = D.53346->dreg;
  ins->sreg1 = D.53367;
  D.53351 = cfg->locals;
  D.53352 = (long unsigned int) n;
  D.53353 = D.53352 * 8;
  D.53354 = D.53351 + D.53353;
  D.53355 = *D.53354;
  D.53356 = D.53355->dreg;
  ins->dreg = D.53356;
  D.53368 = ins->opcode;
  if (D.53368 == 431) goto <D.53369>; else goto <D.53370>;
  <D.53369>:
  D.53351 = cfg->locals;
  D.53352 = (long unsigned int) n;
  D.53353 = D.53352 * 8;
  D.53354 = D.53351 + D.53353;
  D.53355 = *D.53354;
  D.53363 = D.53355->data.op[1].vtype;
  D.53371 = mono_class_from_mono_type (D.53363);
  ins->klass = D.53371;
  <D.53370>:
  D.53344 = cfg->cbb;
  D.53345 = D.53344->last_ins;
  if (D.53345 != 0B) goto <D.53372>; else goto <D.53373>;
  <D.53372>:
  D.53344 = cfg->cbb;
  D.53345 = D.53344->last_ins;
  D.53345->next = ins;
  D.53344 = cfg->cbb;
  D.53345 = D.53344->last_ins;
  ins->prev = D.53345;
  D.53344 = cfg->cbb;
  D.53344->last_ins = ins;
  goto <D.53374>;
  <D.53373>:
  D.53344 = cfg->cbb;
  D.53344 = cfg->cbb;
  D.53344->last_ins = ins;
  D.53345 = D.53344->last_ins;
  D.53344->code = D.53345;
  <D.53374>:
  <D.53342>:
}


generic_class_is_reference_type (struct MonoCompile * cfg, struct MonoClass * klass)
{
  gboolean D.53375;
  struct MonoType * D.53376;

  D.53376 = &klass->byval_arg;
  D.53375 = mini_type_is_reference (cfg, D.53376);
  return D.53375;
}


mini_get_class (struct MonoMethod * method, guint32 token, struct MonoGenericContext * context)
{
  unsigned char D.53378;
  unsigned char D.53379;
  struct MonoClass * D.53385;
  struct MonoImage * D.53386;
  struct MonoClass * D.53389;
  struct MonoClass * klass;

  D.53378 = BIT_FIELD_REF <*method, 8, 256>;
  D.53379 = D.53378 & 124;
  if (D.53379 != 0) goto <D.53380>; else goto <D.53381>;
  <D.53380>:
  klass = mono_method_get_wrapper_data (method, token);
  if (context != 0B) goto <D.53382>; else goto <D.53383>;
  <D.53382>:
  klass = mono_class_inflate_generic_class (klass, context);
  <D.53383>:
  goto <D.53384>;
  <D.53381>:
  D.53385 = method->klass;
  D.53386 = D.53385->image;
  klass = mono_class_get_full (D.53386, token, context);
  <D.53384>:
  if (klass != 0B) goto <D.53387>; else goto <D.53388>;
  <D.53387>:
  mono_class_init (klass);
  <D.53388>:
  D.53389 = klass;
  return D.53389;
}


handle_gsharedvt_ldaddr (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.53391;
  long int D.53392;
  struct MonoInst * D.53393;
  int D.53394;
  int D.53395;
  const unsigned char * D.53396;
  struct MonoInst * D.53397;
  int D.53398;
  struct MonoBasicBlock * D.53399;
  struct MonoInst * D.53400;
  struct MonoInst * D.53404;
  int D.53405;
  struct MonoInst * use;

  D.53391 = cfg->mempool;
  use = mono_mempool_alloc (D.53391, 80);
  use->data.op[1].const_val = 0;
  D.53392 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.53392;
  use->prev = 0B;
  D.53393 = use->prev;
  use->next = D.53393;
  use->opcode = 800;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.53394 = use->sreg3;
  use->sreg2 = D.53394;
  D.53395 = use->sreg2;
  use->sreg1 = D.53395;
  D.53396 = cfg->ip;
  use->cil_code = D.53396;
  D.53397 = cfg->gsharedvt_info_var;
  D.53398 = D.53397->dreg;
  use->sreg1 = D.53398;
  D.53399 = cfg->cbb;
  D.53400 = D.53399->last_ins;
  if (D.53400 != 0B) goto <D.53401>; else goto <D.53402>;
  <D.53401>:
  D.53399 = cfg->cbb;
  D.53400 = D.53399->last_ins;
  D.53400->next = use;
  D.53399 = cfg->cbb;
  D.53400 = D.53399->last_ins;
  use->prev = D.53400;
  D.53399 = cfg->cbb;
  D.53399->last_ins = use;
  goto <D.53403>;
  <D.53402>:
  D.53399 = cfg->cbb;
  D.53399 = cfg->cbb;
  D.53399->last_ins = use;
  D.53400 = D.53399->last_ins;
  D.53399->code = D.53400;
  <D.53403>:
  D.53391 = cfg->mempool;
  use = mono_mempool_alloc (D.53391, 80);
  use->data.op[1].const_val = 0;
  D.53392 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.53392;
  use->prev = 0B;
  D.53393 = use->prev;
  use->next = D.53393;
  use->opcode = 800;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.53394 = use->sreg3;
  use->sreg2 = D.53394;
  D.53395 = use->sreg2;
  use->sreg1 = D.53395;
  D.53396 = cfg->ip;
  use->cil_code = D.53396;
  D.53404 = cfg->gsharedvt_locals_var;
  D.53405 = D.53404->dreg;
  use->sreg1 = D.53405;
  D.53399 = cfg->cbb;
  D.53400 = D.53399->last_ins;
  if (D.53400 != 0B) goto <D.53406>; else goto <D.53407>;
  <D.53406>:
  D.53399 = cfg->cbb;
  D.53400 = D.53399->last_ins;
  D.53400->next = use;
  D.53399 = cfg->cbb;
  D.53400 = D.53399->last_ins;
  use->prev = D.53400;
  D.53399 = cfg->cbb;
  D.53399->last_ins = use;
  goto <D.53408>;
  <D.53407>:
  D.53399 = cfg->cbb;
  D.53399 = cfg->cbb;
  D.53399->last_ins = use;
  D.53400 = D.53399->last_ins;
  D.53399->code = D.53400;
  <D.53408>:
}


mono_emit_load_got_addr (struct MonoCompile * cfg)
{
  struct MonoInst * D.53411;
  unsigned char D.53413;
  unsigned char D.53414;
  struct MonoMemPool * D.53415;
  long int D.53416;
  struct MonoInst * D.53417;
  int D.53418;
  int D.53419;
  const unsigned char * D.53420;
  struct MonoMethodHeader * D.53421;
  const unsigned char * D.53422;
  int D.53423;
  struct MonoBasicBlock * D.53424;
  struct MonoInst * D.53425;
  struct MonoInst * D.53429;
  long int D.53433;
  struct MonoInst * D.53434;
  int D.53435;
  int D.53436;
  struct MonoBasicBlock * D.53437;
  struct MonoInst * D.53438;
  struct MonoInst * getaddr;
  struct MonoInst * dummy_use;

  D.53411 = cfg->got_var;
  if (D.53411 == 0B) goto <D.53409>; else goto <D.53412>;
  <D.53412>:
  D.53413 = BIT_FIELD_REF <*cfg, 8, 5608>;
  D.53414 = D.53413 & 2;
  if (D.53414 != 0) goto <D.53409>; else goto <D.53410>;
  <D.53409>:
  return;
  <D.53410>:
  D.53415 = cfg->mempool;
  getaddr = mono_mempool_alloc (D.53415, 80);
  getaddr->data.op[1].const_val = 0;
  D.53416 = getaddr->data.op[1].const_val;
  getaddr->data.op[0].const_val = D.53416;
  getaddr->prev = 0B;
  D.53417 = getaddr->prev;
  getaddr->next = D.53417;
  getaddr->opcode = 799;
  getaddr->flags = 0;
  getaddr->type = 0;
  getaddr->dreg = -1;
  getaddr->sreg3 = -1;
  D.53418 = getaddr->sreg3;
  getaddr->sreg2 = D.53418;
  D.53419 = getaddr->sreg2;
  getaddr->sreg1 = D.53419;
  D.53420 = cfg->ip;
  getaddr->cil_code = D.53420;
  D.53421 = cfg->header;
  D.53422 = D.53421->code;
  getaddr->cil_code = D.53422;
  D.53411 = cfg->got_var;
  D.53423 = D.53411->dreg;
  getaddr->dreg = D.53423;
  D.53424 = cfg->bb_entry;
  D.53425 = D.53424->code;
  if (D.53425 != 0B) goto <D.53426>; else goto <D.53427>;
  <D.53426>:
  D.53424 = cfg->bb_entry;
  D.53425 = D.53424->code;
  getaddr->next = D.53425;
  D.53424 = cfg->bb_entry;
  D.53424->code = getaddr;
  goto <D.53428>;
  <D.53427>:
  D.53424 = cfg->bb_entry;
  D.53429 = D.53424->last_ins;
  if (D.53429 != 0B) goto <D.53430>; else goto <D.53431>;
  <D.53430>:
  D.53424 = cfg->bb_entry;
  D.53429 = D.53424->last_ins;
  D.53429->next = getaddr;
  D.53424 = cfg->bb_entry;
  D.53429 = D.53424->last_ins;
  getaddr->prev = D.53429;
  D.53424 = cfg->bb_entry;
  D.53424->last_ins = getaddr;
  goto <D.53432>;
  <D.53431>:
  D.53424 = cfg->bb_entry;
  D.53424 = cfg->bb_entry;
  D.53424->last_ins = getaddr;
  D.53429 = D.53424->last_ins;
  D.53424->code = D.53429;
  <D.53432>:
  <D.53428>:
  cfg->got_var_allocated = 1;
  D.53415 = cfg->mempool;
  dummy_use = mono_mempool_alloc (D.53415, 80);
  dummy_use->data.op[1].const_val = 0;
  D.53433 = dummy_use->data.op[1].const_val;
  dummy_use->data.op[0].const_val = D.53433;
  dummy_use->prev = 0B;
  D.53434 = dummy_use->prev;
  dummy_use->next = D.53434;
  dummy_use->opcode = 800;
  dummy_use->flags = 0;
  dummy_use->type = 0;
  dummy_use->dreg = -1;
  dummy_use->sreg3 = -1;
  D.53435 = dummy_use->sreg3;
  dummy_use->sreg2 = D.53435;
  D.53436 = dummy_use->sreg2;
  dummy_use->sreg1 = D.53436;
  D.53420 = cfg->ip;
  dummy_use->cil_code = D.53420;
  D.53411 = cfg->got_var;
  D.53423 = D.53411->dreg;
  dummy_use->sreg1 = D.53423;
  D.53437 = cfg->bb_exit;
  D.53438 = D.53437->last_ins;
  if (D.53438 != 0B) goto <D.53439>; else goto <D.53440>;
  <D.53439>:
  D.53437 = cfg->bb_exit;
  D.53438 = D.53437->last_ins;
  D.53438->next = dummy_use;
  D.53437 = cfg->bb_exit;
  D.53438 = D.53437->last_ins;
  dummy_use->prev = D.53438;
  D.53437 = cfg->bb_exit;
  D.53437->last_ins = dummy_use;
  goto <D.53441>;
  <D.53440>:
  D.53437 = cfg->bb_exit;
  D.53437 = cfg->bb_exit;
  D.53437->last_ins = dummy_use;
  D.53438 = D.53437->last_ins;
  D.53437->code = D.53438;
  <D.53441>:
}


emit_init_local (struct MonoCompile * cfg, int local, struct MonoType * type)
{
  struct MonoInst * * D.53443;
  long unsigned int D.53444;
  long unsigned int D.53445;
  struct MonoInst * * D.53446;
  unsigned char D.53449;
  <unnamed type> D.53450;
  unsigned int D.53451;
  struct MonoMemPool * D.53452;
  long int D.53453;
  struct MonoInst * D.53454;
  int D.53455;
  int D.53456;
  const unsigned char * D.53457;
  struct MonoInst * D.53458;
  struct MonoType * D.53459;
  unsigned int D.53460;
  short unsigned int D.53461;
  struct MonoClass * D.53462;
  struct MonoBasicBlock * D.53463;
  struct MonoInst * D.53464;
  int D.53465;
  int D.53466;
  short unsigned int D.53467;
  struct MonoClass * D.53470;
  int D.53475;
  struct MonoInst * var;

  D.53443 = cfg->locals;
  D.53444 = (long unsigned int) local;
  D.53445 = D.53444 * 8;
  D.53446 = D.53443 + D.53445;
  var = *D.53446;
  if (0 != 0) goto <D.53447>; else goto <D.53448>;
  <D.53447>:
  {
    struct MonoInst * store;
    int reg;

    D.53449 = var->type;
    D.53450 = (<unnamed type>) D.53449;
    D.53451 = alloc_dreg (cfg, D.53450);
    reg = (int) D.53451;
    emit_init_rvar (cfg, reg, type);
    D.53452 = cfg->mempool;
    store = mono_mempool_alloc (D.53452, 80);
    store->data.op[1].const_val = 0;
    D.53453 = store->data.op[1].const_val;
    store->data.op[0].const_val = D.53453;
    store->prev = 0B;
    D.53454 = store->prev;
    store->next = D.53454;
    store->opcode = 428;
    store->flags = 0;
    store->type = 0;
    store->dreg = -1;
    store->sreg3 = -1;
    D.53455 = store->sreg3;
    store->sreg2 = D.53455;
    D.53456 = store->sreg2;
    store->sreg1 = D.53456;
    D.53457 = cfg->ip;
    store->cil_code = D.53457;
    D.53443 = cfg->locals;
    D.53444 = (long unsigned int) local;
    D.53445 = D.53444 * 8;
    D.53446 = D.53443 + D.53445;
    D.53458 = *D.53446;
    D.53459 = D.53458->data.op[1].vtype;
    D.53460 = mono_type_to_regmove (cfg, D.53459);
    D.53461 = (short unsigned int) D.53460;
    store->opcode = D.53461;
    D.53443 = cfg->locals;
    D.53444 = (long unsigned int) local;
    D.53445 = D.53444 * 8;
    D.53446 = D.53443 + D.53445;
    D.53458 = *D.53446;
    D.53462 = D.53458->klass;
    store->klass = D.53462;
    D.53463 = cfg->cbb;
    D.53464 = D.53463->last_ins;
    D.53465 = D.53464->dreg;
    store->sreg1 = D.53465;
    D.53443 = cfg->locals;
    D.53444 = (long unsigned int) local;
    D.53445 = D.53444 * 8;
    D.53446 = D.53443 + D.53445;
    D.53458 = *D.53446;
    D.53466 = D.53458->dreg;
    store->dreg = D.53466;
    D.53467 = store->opcode;
    if (D.53467 == 431) goto <D.53468>; else goto <D.53469>;
    <D.53468>:
    D.53443 = cfg->locals;
    D.53444 = (long unsigned int) local;
    D.53445 = D.53444 * 8;
    D.53446 = D.53443 + D.53445;
    D.53458 = *D.53446;
    D.53459 = D.53458->data.op[1].vtype;
    D.53470 = mono_class_from_mono_type (D.53459);
    store->klass = D.53470;
    <D.53469>:
    D.53463 = cfg->cbb;
    D.53464 = D.53463->last_ins;
    if (D.53464 != 0B) goto <D.53471>; else goto <D.53472>;
    <D.53471>:
    D.53463 = cfg->cbb;
    D.53464 = D.53463->last_ins;
    D.53464->next = store;
    D.53463 = cfg->cbb;
    D.53464 = D.53463->last_ins;
    store->prev = D.53464;
    D.53463 = cfg->cbb;
    D.53463->last_ins = store;
    goto <D.53473>;
    <D.53472>:
    D.53463 = cfg->cbb;
    D.53463 = cfg->cbb;
    D.53463->last_ins = store;
    D.53464 = D.53463->last_ins;
    D.53463->code = D.53464;
    <D.53473>:
  }
  goto <D.53474>;
  <D.53448>:
  D.53475 = var->dreg;
  emit_init_rvar (cfg, D.53475, type);
  <D.53474>:
}


emit_push_lmf (struct MonoCompile * cfg)
{
  unsigned char D.53476;
  unsigned char D.53477;
  unsigned char D.53482;
  int D.53484;
  _Bool D.53486;
  long int D.53487;
  long int D.53488;
  struct MonoBasicBlock * D.53491;
  struct MonoInst * D.53492;
  struct MonoMemPool * D.53496;
  long int D.53497;
  struct MonoInst * D.53498;
  int D.53499;
  int D.53500;
  const unsigned char * D.53501;
  struct MonoInst * D.53502;
  unsigned char D.53503;
  unsigned char D.53504;
  struct MonoClass * D.53505;
  unsigned int D.53506;
  int D.53507;
  int D.53508;
  _Bool D.53509;
  long int D.53510;
  long int D.53511;
  struct MonoType * D.53514;
  int D.53515;
  struct MonoInst * iftmp.494;
  int D.53521;
  int D.53522;
  unsigned int D.53523;
  unsigned int D.53524;
  struct MonoInst * * D.53527;
  sizetype D.53528;
  sizetype D.53529;
  sizetype D.53530;
  struct MonoInst * * D.53531;
  struct MonoInst * iftmp.495;
  int D.53534;
  unsigned int D.53535;
  sizetype D.53538;
  sizetype D.53539;
  struct MonoInst * * D.53540;
  _Bool D.53542;
  long int D.53543;
  long int D.53544;
  _Bool D.53547;
  long int D.53548;
  long int D.53549;
  unsigned char D.53552;
  unsigned char D.53553;
  unsigned char D.53554;
  unsigned char D.53555;
  int D.53559;
  struct MonoInst * D.53563;
  struct MonoClass * D.53566;
  struct MonoType * D.53567;
  struct MonoInst * D.53568;
  int D.53575;
  unsigned int D.53576;
  int D.53577;
  int D.53580;
  struct MonoInst * iftmp.496;
  struct MonoInst * iftmp.497;
  _Bool D.53593;
  long int D.53594;
  long int D.53595;
  _Bool D.53598;
  long int D.53599;
  long int D.53600;
  unsigned char D.53603;
  unsigned char D.53604;
  unsigned char D.53605;
  unsigned char D.53606;
  unsigned int D.53610;
  int lmf_reg;
  int prev_lmf_reg;
  struct MonoInst * ins;
  struct MonoInst * lmf_ins;

  D.53476 = BIT_FIELD_REF <*cfg, 8, 5624>;
  D.53477 = D.53476 & 4;
  if (D.53477 == 0) goto <D.53478>; else goto <D.53479>;
  <D.53478>:
  return;
  <D.53479>:
  D.53476 = BIT_FIELD_REF <*cfg, 8, 5624>;
  D.53482 = D.53476 & 8;
  if (D.53482 != 0) goto <D.53483>; else goto <D.53480>;
  <D.53483>:
  D.53484 = mini_tls_get_supported (cfg, 3);
  if (D.53484 != 0) goto <D.53485>; else goto <D.53480>;
  <D.53485>:
  lmf_ins = mono_get_lmf_intrinsic (cfg);
  D.53486 = lmf_ins == 0B;
  D.53487 = (long int) D.53486;
  D.53488 = __builtin_expect (D.53487, 0);
  if (D.53488 != 0) goto <D.53489>; else goto <D.53490>;
  <D.53489>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1922, "lmf_ins");
  <D.53490>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  if (D.53492 != 0B) goto <D.53493>; else goto <D.53494>;
  <D.53493>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  D.53492->next = lmf_ins;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  lmf_ins->prev = D.53492;
  D.53491 = cfg->cbb;
  D.53491->last_ins = lmf_ins;
  goto <D.53495>;
  <D.53494>:
  D.53491 = cfg->cbb;
  D.53491 = cfg->cbb;
  D.53491->last_ins = lmf_ins;
  D.53492 = D.53491->last_ins;
  D.53491->code = D.53492;
  <D.53495>:
  D.53496 = cfg->mempool;
  ins = mono_mempool_alloc (D.53496, 80);
  ins->data.op[1].const_val = 0;
  D.53497 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53497;
  ins->prev = 0B;
  D.53498 = ins->prev;
  ins->next = D.53498;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53499 = ins->sreg3;
  ins->sreg2 = D.53499;
  D.53500 = ins->sreg2;
  ins->sreg1 = D.53500;
  D.53501 = cfg->ip;
  ins->cil_code = D.53501;
  D.53502 = cfg->lmf_var;
  ins->data.op[0].p = D.53502;
  D.53502 = cfg->lmf_var;
  D.53502 = cfg->lmf_var;
  D.53503 = D.53502->flags;
  D.53504 = D.53503 | 16;
  D.53502->flags = D.53504;
  ins->type = 5;
  D.53502 = cfg->lmf_var;
  D.53505 = D.53502->klass;
  ins->klass = D.53505;
  D.53506 = alloc_dreg (cfg, 5);
  D.53507 = (int) D.53506;
  ins->dreg = D.53507;
  cfg->has_indirection = 1;
  D.53508 = cfg->gsharedvt;
  D.53509 = D.53508 != 0;
  D.53510 = (long int) D.53509;
  D.53511 = __builtin_expect (D.53510, 0);
  if (D.53511 != 0) goto <D.53512>; else goto <D.53513>;
  <D.53512>:
  D.53502 = cfg->lmf_var;
  D.53514 = D.53502->data.op[1].vtype;
  D.53515 = mini_is_gsharedvt_variable_type (cfg, D.53514);
  if (D.53515 != 0) goto <D.53516>; else goto <D.53517>;
  <D.53516>:
  handle_gsharedvt_ldaddr (cfg);
  <D.53517>:
  <D.53513>:
  if (0 != 0) goto <D.53518>; else goto <D.53519>;
  <D.53518>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.53502 = cfg->lmf_var;
    D.53521 = D.53502->dreg;
    D.53522 = D.53521 + 1;
    D.53523 = (unsigned int) D.53522;
    D.53524 = cfg->vreg_to_inst_len;
    if (D.53523 < D.53524) goto <D.53525>; else goto <D.53526>;
    <D.53525>:
    D.53527 = cfg->vreg_to_inst;
    D.53502 = cfg->lmf_var;
    D.53521 = D.53502->dreg;
    D.53528 = (sizetype) D.53521;
    D.53529 = D.53528 + 1;
    D.53530 = D.53529 * 8;
    D.53531 = D.53527 + D.53530;
    iftmp.494 = *D.53531;
    goto <D.53532>;
    <D.53526>:
    iftmp.494 = 0B;
    <D.53532>:
    var1 = iftmp.494;
    D.53502 = cfg->lmf_var;
    D.53521 = D.53502->dreg;
    D.53534 = D.53521 + 2;
    D.53535 = (unsigned int) D.53534;
    D.53524 = cfg->vreg_to_inst_len;
    if (D.53535 < D.53524) goto <D.53536>; else goto <D.53537>;
    <D.53536>:
    D.53527 = cfg->vreg_to_inst;
    D.53502 = cfg->lmf_var;
    D.53521 = D.53502->dreg;
    D.53528 = (sizetype) D.53521;
    D.53538 = D.53528 + 2;
    D.53539 = D.53538 * 8;
    D.53540 = D.53527 + D.53539;
    iftmp.495 = *D.53540;
    goto <D.53541>;
    <D.53537>:
    iftmp.495 = 0B;
    <D.53541>:
    var2 = iftmp.495;
    D.53542 = var1 == 0B;
    D.53543 = (long int) D.53542;
    D.53544 = __builtin_expect (D.53543, 0);
    if (D.53544 != 0) goto <D.53545>; else goto <D.53546>;
    <D.53545>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1924, "var1");
    <D.53546>:
    D.53547 = var2 == 0B;
    D.53548 = (long int) D.53547;
    D.53549 = __builtin_expect (D.53548, 0);
    if (D.53549 != 0) goto <D.53550>; else goto <D.53551>;
    <D.53550>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1924, "var2");
    <D.53551>:
    D.53552 = var1->flags;
    D.53553 = D.53552 | 16;
    var1->flags = D.53553;
    D.53554 = var2->flags;
    D.53555 = D.53554 | 16;
    var2->flags = D.53555;
  }
  <D.53519>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  if (D.53492 != 0B) goto <D.53556>; else goto <D.53557>;
  <D.53556>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  D.53492->next = ins;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  ins->prev = D.53492;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  goto <D.53558>;
  <D.53557>:
  D.53491 = cfg->cbb;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  D.53492 = D.53491->last_ins;
  D.53491->code = D.53492;
  <D.53558>:
  lmf_reg = ins->dreg;
  D.53496 = cfg->mempool;
  ins = mono_mempool_alloc (D.53496, 80);
  ins->data.op[1].const_val = 0;
  D.53497 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53497;
  ins->prev = 0B;
  D.53498 = ins->prev;
  ins->next = D.53498;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53499 = ins->sreg3;
  ins->sreg2 = D.53499;
  D.53500 = ins->sreg2;
  ins->sreg1 = D.53500;
  D.53501 = cfg->ip;
  ins->cil_code = D.53501;
  D.53559 = lmf_ins->dreg;
  ins->sreg1 = D.53559;
  ins->dreg = lmf_reg;
  ins->data.op[0].const_val = 0;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  if (D.53492 != 0B) goto <D.53560>; else goto <D.53561>;
  <D.53560>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  D.53492->next = ins;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  ins->prev = D.53492;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  goto <D.53562>;
  <D.53561>:
  D.53491 = cfg->cbb;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  D.53492 = D.53491->last_ins;
  D.53491->code = D.53492;
  <D.53562>:
  emit_tls_set (cfg, lmf_reg, 3);
  goto <D.53481>;
  <D.53480>:
  D.53563 = cfg->lmf_addr_var;
  if (D.53563 == 0B) goto <D.53564>; else goto <D.53565>;
  <D.53564>:
  D.53566 = mono_defaults.int_class;
  D.53567 = &D.53566->byval_arg;
  D.53568 = mono_compile_create_var (cfg, D.53567, 329);
  cfg->lmf_addr_var = D.53568;
  <D.53565>:
  lmf_ins = mono_get_lmf_addr_intrinsic (cfg);
  if (lmf_ins != 0B) goto <D.53569>; else goto <D.53570>;
  <D.53569>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  if (D.53492 != 0B) goto <D.53571>; else goto <D.53572>;
  <D.53571>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  D.53492->next = lmf_ins;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  lmf_ins->prev = D.53492;
  D.53491 = cfg->cbb;
  D.53491->last_ins = lmf_ins;
  goto <D.53573>;
  <D.53572>:
  D.53491 = cfg->cbb;
  D.53491 = cfg->cbb;
  D.53491->last_ins = lmf_ins;
  D.53492 = D.53491->last_ins;
  D.53491->code = D.53492;
  <D.53573>:
  goto <D.53574>;
  <D.53570>:
  lmf_ins = mono_emit_jit_icall (cfg, mono_get_lmf_addr, 0B);
  <D.53574>:
  D.53563 = cfg->lmf_addr_var;
  D.53575 = D.53563->dreg;
  lmf_ins->dreg = D.53575;
  D.53496 = cfg->mempool;
  ins = mono_mempool_alloc (D.53496, 80);
  ins->data.op[1].const_val = 0;
  D.53497 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53497;
  ins->prev = 0B;
  D.53498 = ins->prev;
  ins->next = D.53498;
  ins->opcode = 314;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53499 = ins->sreg3;
  ins->sreg2 = D.53499;
  D.53500 = ins->sreg2;
  ins->sreg1 = D.53500;
  D.53501 = cfg->ip;
  ins->cil_code = D.53501;
  D.53502 = cfg->lmf_var;
  ins->data.op[0].p = D.53502;
  D.53502 = cfg->lmf_var;
  D.53502 = cfg->lmf_var;
  D.53503 = D.53502->flags;
  D.53504 = D.53503 | 16;
  D.53502->flags = D.53504;
  ins->type = 5;
  D.53502 = cfg->lmf_var;
  D.53505 = D.53502->klass;
  ins->klass = D.53505;
  D.53576 = alloc_dreg (cfg, 5);
  D.53577 = (int) D.53576;
  ins->dreg = D.53577;
  cfg->has_indirection = 1;
  D.53508 = cfg->gsharedvt;
  D.53509 = D.53508 != 0;
  D.53510 = (long int) D.53509;
  D.53511 = __builtin_expect (D.53510, 0);
  if (D.53511 != 0) goto <D.53578>; else goto <D.53579>;
  <D.53578>:
  D.53502 = cfg->lmf_var;
  D.53514 = D.53502->data.op[1].vtype;
  D.53580 = mini_is_gsharedvt_variable_type (cfg, D.53514);
  if (D.53580 != 0) goto <D.53581>; else goto <D.53582>;
  <D.53581>:
  handle_gsharedvt_ldaddr (cfg);
  <D.53582>:
  <D.53579>:
  if (0 != 0) goto <D.53583>; else goto <D.53584>;
  <D.53583>:
  {
    struct MonoInst * var1;
    struct MonoInst * var2;

    D.53502 = cfg->lmf_var;
    D.53521 = D.53502->dreg;
    D.53522 = D.53521 + 1;
    D.53523 = (unsigned int) D.53522;
    D.53524 = cfg->vreg_to_inst_len;
    if (D.53523 < D.53524) goto <D.53586>; else goto <D.53587>;
    <D.53586>:
    D.53527 = cfg->vreg_to_inst;
    D.53502 = cfg->lmf_var;
    D.53521 = D.53502->dreg;
    D.53528 = (sizetype) D.53521;
    D.53529 = D.53528 + 1;
    D.53530 = D.53529 * 8;
    D.53531 = D.53527 + D.53530;
    iftmp.496 = *D.53531;
    goto <D.53588>;
    <D.53587>:
    iftmp.496 = 0B;
    <D.53588>:
    var1 = iftmp.496;
    D.53502 = cfg->lmf_var;
    D.53521 = D.53502->dreg;
    D.53534 = D.53521 + 2;
    D.53535 = (unsigned int) D.53534;
    D.53524 = cfg->vreg_to_inst_len;
    if (D.53535 < D.53524) goto <D.53590>; else goto <D.53591>;
    <D.53590>:
    D.53527 = cfg->vreg_to_inst;
    D.53502 = cfg->lmf_var;
    D.53521 = D.53502->dreg;
    D.53528 = (sizetype) D.53521;
    D.53538 = D.53528 + 2;
    D.53539 = D.53538 * 8;
    D.53540 = D.53527 + D.53539;
    iftmp.497 = *D.53540;
    goto <D.53592>;
    <D.53591>:
    iftmp.497 = 0B;
    <D.53592>:
    var2 = iftmp.497;
    D.53593 = var1 == 0B;
    D.53594 = (long int) D.53593;
    D.53595 = __builtin_expect (D.53594, 0);
    if (D.53595 != 0) goto <D.53596>; else goto <D.53597>;
    <D.53596>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1944, "var1");
    <D.53597>:
    D.53598 = var2 == 0B;
    D.53599 = (long int) D.53598;
    D.53600 = __builtin_expect (D.53599, 0);
    if (D.53600 != 0) goto <D.53601>; else goto <D.53602>;
    <D.53601>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 1944, "var2");
    <D.53602>:
    D.53603 = var1->flags;
    D.53604 = D.53603 | 16;
    var1->flags = D.53604;
    D.53605 = var2->flags;
    D.53606 = D.53605 | 16;
    var2->flags = D.53606;
  }
  <D.53584>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  if (D.53492 != 0B) goto <D.53607>; else goto <D.53608>;
  <D.53607>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  D.53492->next = ins;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  ins->prev = D.53492;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  goto <D.53609>;
  <D.53608>:
  D.53491 = cfg->cbb;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  D.53492 = D.53491->last_ins;
  D.53491->code = D.53492;
  <D.53609>:
  lmf_reg = ins->dreg;
  D.53610 = alloc_preg (cfg);
  prev_lmf_reg = (int) D.53610;
  D.53496 = cfg->mempool;
  ins = mono_mempool_alloc (D.53496, 80);
  ins->data.op[1].const_val = 0;
  D.53497 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53497;
  ins->prev = 0B;
  D.53498 = ins->prev;
  ins->next = D.53498;
  ins->opcode = 391;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53499 = ins->sreg3;
  ins->sreg2 = D.53499;
  D.53500 = ins->sreg2;
  ins->sreg1 = D.53500;
  D.53501 = cfg->ip;
  ins->cil_code = D.53501;
  ins->dreg = prev_lmf_reg;
  D.53563 = cfg->lmf_addr_var;
  D.53575 = D.53563->dreg;
  ins->sreg1 = D.53575;
  ins->data.op[0].const_val = 0;
  ins->type = 1;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  if (D.53492 != 0B) goto <D.53611>; else goto <D.53612>;
  <D.53611>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  D.53492->next = ins;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  ins->prev = D.53492;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  goto <D.53613>;
  <D.53612>:
  D.53491 = cfg->cbb;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  D.53492 = D.53491->last_ins;
  D.53491->code = D.53492;
  <D.53613>:
  D.53496 = cfg->mempool;
  ins = mono_mempool_alloc (D.53496, 80);
  ins->data.op[1].const_val = 0;
  D.53497 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53497;
  ins->prev = 0B;
  D.53498 = ins->prev;
  ins->next = D.53498;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53499 = ins->sreg3;
  ins->sreg2 = D.53499;
  D.53500 = ins->sreg2;
  ins->sreg1 = D.53500;
  D.53501 = cfg->ip;
  ins->cil_code = D.53501;
  ins->sreg1 = prev_lmf_reg;
  ins->dreg = lmf_reg;
  ins->data.op[0].const_val = 0;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  if (D.53492 != 0B) goto <D.53614>; else goto <D.53615>;
  <D.53614>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  D.53492->next = ins;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  ins->prev = D.53492;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  goto <D.53616>;
  <D.53615>:
  D.53491 = cfg->cbb;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  D.53492 = D.53491->last_ins;
  D.53491->code = D.53492;
  <D.53616>:
  D.53496 = cfg->mempool;
  ins = mono_mempool_alloc (D.53496, 80);
  ins->data.op[1].const_val = 0;
  D.53497 = ins->data.op[1].const_val;
  ins->data.op[0].const_val = D.53497;
  ins->prev = 0B;
  D.53498 = ins->prev;
  ins->next = D.53498;
  ins->opcode = 374;
  ins->flags = 0;
  ins->type = 0;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.53499 = ins->sreg3;
  ins->sreg2 = D.53499;
  D.53500 = ins->sreg2;
  ins->sreg1 = D.53500;
  D.53501 = cfg->ip;
  ins->cil_code = D.53501;
  ins->sreg1 = lmf_reg;
  D.53563 = cfg->lmf_addr_var;
  D.53575 = D.53563->dreg;
  ins->dreg = D.53575;
  ins->data.op[0].const_val = 0;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  if (D.53492 != 0B) goto <D.53617>; else goto <D.53618>;
  <D.53617>:
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  D.53492->next = ins;
  D.53491 = cfg->cbb;
  D.53492 = D.53491->last_ins;
  ins->prev = D.53492;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  goto <D.53619>;
  <D.53618>:
  D.53491 = cfg->cbb;
  D.53491 = cfg->cbb;
  D.53491->last_ins = ins;
  D.53492 = D.53491->last_ins;
  D.53491->code = D.53492;
  <D.53619>:
  <D.53481>:
}


mono_find_block_region (struct MonoCompile * cfg, int offset)
{
  struct MonoExceptionClause * D.53621;
  long unsigned int D.53622;
  long unsigned int D.53623;
  unsigned int D.53624;
  unsigned int offset.498;
  unsigned int D.53628;
  unsigned int D.53631;
  int D.53634;
  int D.53635;
  int D.53636;
  unsigned int D.53637;
  unsigned int D.53638;
  unsigned int D.53639;
  unsigned int D.53642;
  unsigned int D.53643;
  unsigned int D.53648;
  unsigned int D.53651;
  unsigned int D.53652;
  unsigned int D.53653;
  unsigned int D.53656;
  unsigned int D.53657;
  <unnamed-unsigned:15> D.53660;
  int D.53661;
  struct MonoMethodHeader * header;
  struct MonoExceptionClause * clause;
  int i;

  header = cfg->header;
  i = 0;
  goto <D.24909>;
  <D.24908>:
  D.53621 = header->clauses;
  D.53622 = (long unsigned int) i;
  D.53623 = D.53622 * 32;
  clause = D.53621 + D.53623;
  D.53624 = clause->flags;
  if (D.53624 == 1) goto <D.53625>; else goto <D.53626>;
  <D.53625>:
  offset.498 = (unsigned int) offset;
  D.53628 = clause->data.filter_offset;
  if (offset.498 >= D.53628) goto <D.53629>; else goto <D.53630>;
  <D.53629>:
  offset.498 = (unsigned int) offset;
  D.53631 = clause->handler_offset;
  if (offset.498 < D.53631) goto <D.53632>; else goto <D.53633>;
  <D.53632>:
  D.53635 = i + 1;
  D.53636 = D.53635 << 8;
  D.53637 = (unsigned int) D.53636;
  D.53624 = clause->flags;
  D.53638 = D.53637 | D.53624;
  D.53639 = D.53638 | 128;
  D.53634 = (int) D.53639;
  return D.53634;
  <D.53633>:
  <D.53630>:
  <D.53626>:
  D.53631 = clause->handler_offset;
  offset.498 = (unsigned int) offset;
  if (D.53631 <= offset.498) goto <D.53640>; else goto <D.53641>;
  <D.53640>:
  offset.498 = (unsigned int) offset;
  D.53631 = clause->handler_offset;
  D.53642 = clause->handler_len;
  D.53643 = D.53631 + D.53642;
  if (offset.498 < D.53643) goto <D.53644>; else goto <D.53645>;
  <D.53644>:
  D.53624 = clause->flags;
  if (D.53624 == 2) goto <D.53646>; else goto <D.53647>;
  <D.53646>:
  D.53635 = i + 1;
  D.53636 = D.53635 << 8;
  D.53637 = (unsigned int) D.53636;
  D.53624 = clause->flags;
  D.53638 = D.53637 | D.53624;
  D.53648 = D.53638 | 16;
  D.53634 = (int) D.53648;
  return D.53634;
  <D.53647>:
  D.53624 = clause->flags;
  if (D.53624 == 4) goto <D.53649>; else goto <D.53650>;
  <D.53649>:
  D.53635 = i + 1;
  D.53636 = D.53635 << 8;
  D.53637 = (unsigned int) D.53636;
  D.53624 = clause->flags;
  D.53638 = D.53637 | D.53624;
  D.53651 = D.53638 | 64;
  D.53634 = (int) D.53651;
  return D.53634;
  <D.53650>:
  D.53635 = i + 1;
  D.53636 = D.53635 << 8;
  D.53637 = (unsigned int) D.53636;
  D.53624 = clause->flags;
  D.53638 = D.53637 | D.53624;
  D.53652 = D.53638 | 32;
  D.53634 = (int) D.53652;
  return D.53634;
  <D.53645>:
  <D.53641>:
  D.53653 = clause->try_offset;
  offset.498 = (unsigned int) offset;
  if (D.53653 <= offset.498) goto <D.53654>; else goto <D.53655>;
  <D.53654>:
  offset.498 = (unsigned int) offset;
  D.53653 = clause->try_offset;
  D.53656 = clause->try_len;
  D.53657 = D.53653 + D.53656;
  if (offset.498 < D.53657) goto <D.53658>; else goto <D.53659>;
  <D.53658>:
  D.53635 = i + 1;
  D.53636 = D.53635 << 8;
  D.53637 = (unsigned int) D.53636;
  D.53624 = clause->flags;
  D.53638 = D.53637 | D.53624;
  D.53634 = (int) D.53638;
  return D.53634;
  <D.53659>:
  <D.53655>:
  i = i + 1;
  <D.24909>:
  D.53660 = header->num_clauses;
  D.53661 = (int) D.53660;
  if (D.53661 > i) goto <D.24908>; else goto <D.24910>;
  <D.24910>:
  D.53634 = -1;
  return D.53634;
}


mono_create_spvar_for_region (struct MonoCompile * cfg, int region)
{
  long int D.53663;
  const void * D.53664;
  struct GHashTable * D.53665;
  struct MonoClass * D.53668;
  struct MonoType * D.53669;
  unsigned char D.53670;
  unsigned char D.53671;
  void * D.53672;
  struct MonoInst * var;

  D.53663 = (long int) region;
  D.53664 = (const void *) D.53663;
  D.53665 = cfg->spvars;
  var = monoeg_g_hash_table_lookup (D.53665, D.53664);
  if (var != 0B) goto <D.53666>; else goto <D.53667>;
  <D.53666>:
  return;
  <D.53667>:
  D.53668 = mono_defaults.int_class;
  D.53669 = &D.53668->byval_arg;
  var = mono_compile_create_var (cfg, D.53669, 329);
  D.53670 = var->flags;
  D.53671 = D.53670 | 4;
  var->flags = D.53671;
  D.53663 = (long int) region;
  D.53672 = (void *) D.53663;
  D.53665 = cfg->spvars;
  monoeg_g_hash_table_insert_replace (D.53665, D.53672, var, 0);
}


set_exception_type_from_invalid_il (struct MonoCompile * cfg, struct MonoMethod * method, unsigned char * ip)
{
  unsigned int D.53674;
  gchar * D.53678;
  struct GSList * D.53679;
  struct MonoMemPool * D.53680;
  struct GSList * D.53681;
  char * method_fname;
  char * method_code;
  struct MonoMethodHeader * header;

  method_fname = mono_method_full_name (method, 1);
  header = mono_method_get_header (method);
  D.53674 = header->code_size;
  if (D.53674 == 0) goto <D.53675>; else goto <D.53676>;
  <D.53675>:
  method_code = monoeg_strdup ("method body is empty.");
  goto <D.53677>;
  <D.53676>:
  method_code = mono_disasm_code_one (0B, method, ip, 0B);
  <D.53677>:
  mono_cfg_set_exception (cfg, 3);
  D.53678 = monoeg_g_strdup_printf ("Invalid IL code in %s: %s\n", method_fname, method_code);
  cfg->exception_message = D.53678;
  monoeg_g_free (method_fname);
  monoeg_g_free (method_code);
  D.53679 = cfg->headers_to_free;
  D.53680 = cfg->mempool;
  D.53681 = g_slist_prepend_mempool (D.53680, D.53679, header);
  cfg->headers_to_free = D.53681;
}


monoeg_strdup (const gchar * str)
{
  gchar * D.53684;

  if (str != 0B) goto <D.53682>; else goto <D.53683>;
  <D.53682>:
  D.53684 = __strdup (str);
  return D.53684;
  <D.53683>:
  D.53684 = 0B;
  return D.53684;
}


g_slist_prepend_mempool (struct MonoMemPool * mp, struct GSList * list, void * data)
{
  struct GSList * D.53686;
  struct GSList * new_list;

  new_list = mono_mempool_alloc (mp, 16);
  new_list->data = data;
  new_list->next = list;
  D.53686 = new_list;
  return D.53686;
}


mono_op_to_op_imm (int opcode)
{
  int D.53688;

  switch (opcode) <default: <D.53689>, case 322: <D.28560>, case 325: <D.28562>, case 326: <D.28561>, case 338: <D.28574>, case 344: <D.28570>, case 347: <D.28571>, case 350: <D.28573>, case 353: <D.28572>, case 374: <D.28563>, case 375: <D.28564>, case 376: <D.28565>, case 377: <D.28566>, case 483: <D.28552>, case 484: <D.28553>, case 490: <D.28554>, case 491: <D.28555>, case 492: <D.28556>, case 493: <D.28557>, case 494: <D.28558>, case 495: <D.28559>, case 569: <D.28539>, case 570: <D.28540>, case 571: <D.28545>, case 572: <D.28541>, case 573: <D.28542>, case 574: <D.28543>, case 575: <D.28544>, case 576: <D.28546>, case 577: <D.28547>, case 578: <D.28548>, case 579: <D.28549>, case 580: <D.28550>, case 581: <D.28551>, case 1006: <D.28568>, case 1034: <D.28567>, case 1049: <D.28569>>
  <D.28539>:
  D.53688 = 629;
  return D.53688;
  <D.28540>:
  D.53688 = 630;
  return D.53688;
  <D.28541>:
  D.53688 = 632;
  return D.53688;
  <D.28542>:
  D.53688 = 633;
  return D.53688;
  <D.28543>:
  D.53688 = 634;
  return D.53688;
  <D.28544>:
  D.53688 = 635;
  return D.53688;
  <D.28545>:
  D.53688 = 631;
  return D.53688;
  <D.28546>:
  D.53688 = 636;
  return D.53688;
  <D.28547>:
  D.53688 = 637;
  return D.53688;
  <D.28548>:
  D.53688 = 638;
  return D.53688;
  <D.28549>:
  D.53688 = 639;
  return D.53688;
  <D.28550>:
  D.53688 = 640;
  return D.53688;
  <D.28551>:
  D.53688 = 641;
  return D.53688;
  <D.28552>:
  D.53688 = 542;
  return D.53688;
  <D.28553>:
  D.53688 = 543;
  return D.53688;
  <D.28554>:
  D.53688 = 545;
  return D.53688;
  <D.28555>:
  D.53688 = 546;
  return D.53688;
  <D.28556>:
  D.53688 = 547;
  return D.53688;
  <D.28557>:
  D.53688 = 548;
  return D.53688;
  <D.28558>:
  D.53688 = 549;
  return D.53688;
  <D.28559>:
  D.53688 = 550;
  return D.53688;
  <D.28560>:
  D.53688 = 323;
  return D.53688;
  <D.28561>:
  D.53688 = 327;
  return D.53688;
  <D.28562>:
  D.53688 = 328;
  return D.53688;
  <D.28563>:
  D.53688 = 384;
  return D.53688;
  <D.28564>:
  D.53688 = 385;
  return D.53688;
  <D.28565>:
  D.53688 = 386;
  return D.53688;
  <D.28566>:
  D.53688 = 387;
  return D.53688;
  <D.28567>:
  D.53688 = 1033;
  return D.53688;
  <D.28568>:
  D.53688 = 1007;
  return D.53688;
  <D.28569>:
  D.53688 = 1050;
  return D.53688;
  <D.28570>:
  D.53688 = 343;
  return D.53688;
  <D.28571>:
  D.53688 = 346;
  return D.53688;
  <D.28572>:
  D.53688 = 352;
  return D.53688;
  <D.28573>:
  D.53688 = 349;
  return D.53688;
  <D.28574>:
  D.53688 = 339;
  return D.53688;
  <D.53689>:
  D.53688 = -1;
  return D.53688;
}


mono_load_membase_to_load_mem (int opcode)
{
  int D.53691;

  switch (opcode) <default: <D.53692>, case 391: <D.28605>, case 393: <D.28606>, case 395: <D.28607>, case 396: <D.28608>, case 397: <D.28609>, case 398: <D.28610>>
  <D.28605>:
  D.53691 = 421;
  return D.53691;
  <D.28606>:
  D.53691 = 422;
  return D.53691;
  <D.28607>:
  D.53691 = 423;
  return D.53691;
  <D.28608>:
  D.53691 = 424;
  return D.53691;
  <D.28609>:
  D.53691 = 425;
  return D.53691;
  <D.28610>:
  D.53691 = 426;
  return D.53691;
  <D.53692>:
  D.53691 = -1;
  return D.53691;
}


mono_op_to_op_imm_noemul (int opcode)
{
  int D.53694;

  switch (opcode) <default: <D.28677>>
  <D.28677>:
  D.53694 = mono_op_to_op_imm (opcode);
  return D.53694;
}


mono_handle_global_vregs (struct MonoCompile * cfg)
{
  unsigned int D.53696;
  unsigned int D.53697;
  unsigned int D.53698;
  struct MonoMemPool * D.53699;
  unsigned char D.53700;
  unsigned char D.53701;
  unsigned int D.53704;
  int D.53707;
  short unsigned int D.53708;
  int D.53709;
  int D.53710;
  int D.53711;
  _Bool D.53712;
  long int D.53713;
  long int D.53714;
  _Bool D.53717;
  long int D.53718;
  long int D.53719;
  char D.53724;
  const char * D.53730;
  char D.53731;
  const char * D.53737;
  char D.53738;
  const char * D.53744;
  char D.53745;
  _Bool D.53748;
  long int D.53749;
  long int D.53750;
  long unsigned int D.53753;
  long unsigned int D.53754;
  gint32 * D.53755;
  int D.53758;
  _Bool D.53764;
  _Bool D.53765;
  _Bool D.53766;
  _Bool D.53767;
  _Bool D.53768;
  unsigned int vreg.499;
  unsigned int D.53773;
  struct MonoInst * * D.53775;
  long unsigned int D.53776;
  struct MonoInst * * D.53777;
  struct MonoInst * D.53778;
  int D.53781;
  unsigned int D.53784;
  gboolean * D.53786;
  gboolean * D.53787;
  int D.53788;
  struct MonoClass * D.53790;
  struct MonoType * D.53791;
  struct MonoClass * D.53792;
  struct MonoType * D.53793;
  struct MonoClass * D.53794;
  struct MonoType * D.53795;
  struct MonoClass * D.53796;
  struct MonoType * D.53797;
  struct MonoClass * D.53798;
  struct MonoType * D.53799;
  struct MonoInst * * D.53800;
  long unsigned int D.53801;
  long unsigned int D.53802;
  struct MonoInst * * D.53803;
  struct MonoMethodVar * D.53804;
  long unsigned int D.53805;
  unsigned char D.53806;
  int D.53807;
  int D.53808;
  short unsigned int D.53810;
  struct MonoInst * D.53813;
  unsigned char D.53816;
  int D.53817;
  int D.53818;
  int D.53821;
  long unsigned int D.53822;
  long unsigned int D.53823;
  gint32 * D.53824;
  int D.53825;
  struct MonoClass * D.53828;
  unsigned char D.53829;
  unsigned char D.53832;
  unsigned char D.53833;
  struct MonoInst * D.53836;
  struct MonoInst * D.53839;
  struct MonoInst * D.53842;
  unsigned int D.53847;
  unsigned char D.53848;
  long unsigned int D.53849;
  struct MonoInst * * D.53850;
  unsigned int i.500;
  unsigned int D.53853;
  unsigned int D.53856;
  unsigned int pos.501;
  unsigned char D.53860;
  int D.53861;
  int D.53862;
  long unsigned int D.53867;
  long unsigned int D.53868;
  struct MonoInst * * D.53869;
  struct MonoInst * D.53870;
  struct MonoInst * D.53871;
  long int D.53872;
  struct MonoMethodVar * D.53873;
  long unsigned int D.53874;
  struct MonoMethodVar * D.53875;
  gint32 * vreg_to_bb;
  struct MonoBasicBlock * bb;
  int i;
  int pos;

  D.53696 = cfg->next_vreg;
  D.53697 = D.53696 * 8;
  D.53698 = D.53697 + 1;
  D.53699 = cfg->mempool;
  vreg_to_bb = mono_mempool_alloc0 (D.53699, D.53698);
  D.53700 = BIT_FIELD_REF <*cfg, 8, 5632>;
  D.53701 = D.53700 & 8;
  if (D.53701 != 0) goto <D.53702>; else goto <D.53703>;
  <D.53702>:
  mono_simd_simplify_indirection (cfg);
  <D.53703>:
  bb = cfg->bb_entry;
  goto <D.28706>;
  <D.28705>:
  {
    struct MonoInst * ins;
    int block_num;

    ins = bb->code;
    block_num = bb->block_num;
    D.53704 = cfg->verbose_level;
    if (D.53704 > 2) goto <D.53705>; else goto <D.53706>;
    <D.53705>:
    D.53707 = bb->block_num;
    printf ("\nHANDLE-GLOBAL-VREGS BLOCK %d:\n", D.53707);
    <D.53706>:
    cfg->cbb = bb;
    goto <D.28703>;
    <D.28702>:
    {
      const char * spec;
      int regtype;
      int regindex;
      gint32 prev_bb;

      D.53708 = ins->opcode;
      D.53709 = (int) D.53708;
      D.53710 = D.53709 + -313;
      D.53711 = D.53710 * 4;
      spec = &ins_info[D.53711];
      regtype = 0;
      D.53704 = cfg->verbose_level;
      D.53712 = D.53704 > 2;
      D.53713 = (long int) D.53712;
      D.53714 = __builtin_expect (D.53713, 0);
      if (D.53714 != 0) goto <D.53715>; else goto <D.53716>;
      <D.53715>:
      mono_print_ins (ins);
      <D.53716>:
      D.53708 = ins->opcode;
      D.53717 = D.53708 <= 312;
      D.53718 = (long int) D.53717;
      D.53719 = __builtin_expect (D.53718, 0);
      if (D.53719 != 0) goto <D.53720>; else goto <D.53721>;
      <D.53720>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12539, "ins->opcode >= MONO_CEE_LAST");
      <D.53721>:
      regindex = 0;
      goto <D.28700>;
      <D.28699>:
      {
        int vreg;

        vreg = 0;
        if (regindex == 0) goto <D.53722>; else goto <D.53723>;
        <D.53722>:
        D.53724 = *spec;
        regtype = (int) D.53724;
        if (regtype == 32) goto <D.53725>; else goto <D.53726>;
        <D.53725>:
        // predicted unlikely by continue predictor.
        goto <D.28692>;
        <D.53726>:
        vreg = ins->dreg;
        goto <D.53727>;
        <D.53723>:
        if (regindex == 1) goto <D.53728>; else goto <D.53729>;
        <D.53728>:
        D.53730 = spec + 1;
        D.53731 = *D.53730;
        regtype = (int) D.53731;
        if (regtype == 32) goto <D.53732>; else goto <D.53733>;
        <D.53732>:
        // predicted unlikely by continue predictor.
        goto <D.28692>;
        <D.53733>:
        vreg = ins->sreg1;
        goto <D.53734>;
        <D.53729>:
        if (regindex == 2) goto <D.53735>; else goto <D.53736>;
        <D.53735>:
        D.53737 = spec + 2;
        D.53738 = *D.53737;
        regtype = (int) D.53738;
        if (regtype == 32) goto <D.53739>; else goto <D.53740>;
        <D.53739>:
        // predicted unlikely by continue predictor.
        goto <D.28692>;
        <D.53740>:
        vreg = ins->sreg2;
        goto <D.53741>;
        <D.53736>:
        if (regindex == 3) goto <D.53742>; else goto <D.53743>;
        <D.53742>:
        D.53744 = spec + 3;
        D.53745 = *D.53744;
        regtype = (int) D.53745;
        if (regtype == 32) goto <D.53746>; else goto <D.53747>;
        <D.53746>:
        // predicted unlikely by continue predictor.
        goto <D.28692>;
        <D.53747>:
        vreg = ins->sreg3;
        <D.53743>:
        <D.53741>:
        <D.53734>:
        <D.53727>:
        D.53748 = vreg == -1;
        D.53749 = (long int) D.53748;
        D.53750 = __builtin_expect (D.53749, 0);
        if (D.53750 != 0) goto <D.53751>; else goto <D.53752>;
        <D.53751>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12590, "vreg != -1");
        <D.53752>:
        D.53753 = (long unsigned int) vreg;
        D.53754 = D.53753 * 4;
        D.53755 = vreg_to_bb + D.53754;
        prev_bb = *D.53755;
        if (prev_bb == 0) goto <D.53756>; else goto <D.53757>;
        <D.53756>:
        D.53753 = (long unsigned int) vreg;
        D.53754 = D.53753 * 4;
        D.53755 = vreg_to_bb + D.53754;
        D.53758 = block_num + 1;
        *D.53755 = D.53758;
        goto <D.53759>;
        <D.53757>:
        D.53758 = block_num + 1;
        if (D.53758 != prev_bb) goto <D.53760>; else goto <D.53761>;
        <D.53760>:
        if (prev_bb != -1) goto <D.53762>; else goto <D.53763>;
        <D.53762>:
        D.53764 = regtype == 105;
        D.53765 = regtype == 102;
        D.53766 = D.53764 | D.53765;
        D.53767 = vreg <= 15;
        D.53768 = D.53766 & D.53767;
        if (D.53768 != 0) goto <D.53769>; else goto <D.53770>;
        <D.53769>:
        // predicted unlikely by continue predictor.
        goto <D.28692>;
        <D.53770>:
        vreg.499 = (unsigned int) vreg;
        D.53773 = cfg->vreg_to_inst_len;
        if (vreg.499 >= D.53773) goto <D.53771>; else goto <D.53774>;
        <D.53774>:
        D.53775 = cfg->vreg_to_inst;
        D.53753 = (long unsigned int) vreg;
        D.53776 = D.53753 * 8;
        D.53777 = D.53775 + D.53776;
        D.53778 = *D.53777;
        if (D.53778 == 0B) goto <D.53771>; else goto <D.28694>;
        <D.53771>:
        D.53704 = cfg->verbose_level;
        D.53712 = D.53704 > 2;
        D.53713 = (long int) D.53712;
        D.53714 = __builtin_expect (D.53713, 0);
        if (D.53714 != 0) goto <D.53779>; else goto <D.53780>;
        <D.53779>:
        D.53753 = (long unsigned int) vreg;
        D.53754 = D.53753 * 4;
        D.53755 = vreg_to_bb + D.53754;
        D.53781 = *D.53755;
        printf ("VREG R%d used in BB%d and BB%d made global.\n", vreg, D.53781, block_num);
        <D.53780>:
        switch (regtype) <default: <D.28698>, case 102: <D.28696>, case 105: <D.28693>, case 108: <D.28695>, case 118: <D.28697>>
        <D.28693>:
        vreg.499 = (unsigned int) vreg;
        D.53784 = cfg->vreg_is_ref_len;
        if (vreg.499 < D.53784) goto <D.53785>; else goto <D.53782>;
        <D.53785>:
        D.53786 = cfg->vreg_is_ref;
        D.53753 = (long unsigned int) vreg;
        D.53754 = D.53753 * 4;
        D.53787 = D.53786 + D.53754;
        D.53788 = *D.53787;
        if (D.53788 != 0) goto <D.53789>; else goto <D.53782>;
        <D.53789>:
        D.53790 = mono_defaults.object_class;
        D.53791 = &D.53790->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.53791, 329, vreg);
        goto <D.53783>;
        <D.53782>:
        D.53792 = mono_defaults.int_class;
        D.53793 = &D.53792->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.53793, 329, vreg);
        <D.53783>:
        goto <D.28694>;
        <D.28695>:
        D.53794 = mono_defaults.int64_class;
        D.53795 = &D.53794->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.53795, 329, vreg);
        goto <D.28694>;
        <D.28696>:
        D.53796 = mono_defaults.double_class;
        D.53797 = &D.53796->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.53797, 329, vreg);
        goto <D.28694>;
        <D.28697>:
        D.53798 = ins->klass;
        D.53799 = &D.53798->byval_arg;
        mono_compile_create_var_for_vreg (cfg, D.53799, 329, vreg);
        goto <D.28694>;
        <D.28698>:
        monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12621);
        <D.28694>:
        D.53753 = (long unsigned int) vreg;
        D.53754 = D.53753 * 4;
        D.53755 = vreg_to_bb + D.53754;
        *D.53755 = -1;
        <D.53763>:
        <D.53761>:
        <D.53759>:
      }
      <D.28692>:
      regindex = regindex + 1;
      <D.28700>:
      if (regindex <= 3) goto <D.28699>; else goto <D.28701>;
      <D.28701>:
    }
    ins = ins->next;
    <D.28703>:
    if (ins != 0B) goto <D.28702>; else goto <D.28704>;
    <D.28704>:
  }
  bb = bb->next_bb;
  <D.28706>:
  if (bb != 0B) goto <D.28705>; else goto <D.28707>;
  <D.28707>:
  i = 0;
  goto <D.28719>;
  <D.28718>:
  {
    struct MonoInst * var;
    struct MonoMethodVar * vmv;

    D.53800 = cfg->varinfo;
    D.53801 = (long unsigned int) i;
    D.53802 = D.53801 * 8;
    D.53803 = D.53800 + D.53802;
    var = *D.53803;
    D.53804 = cfg->vars;
    D.53801 = (long unsigned int) i;
    D.53805 = D.53801 * 80;
    vmv = D.53804 + D.53805;
    D.53806 = var->type;
    D.53807 = (int) D.53806;
    switch (D.53807) <default: <D.53851>, case 1: <D.28710>, case 2: <D.28715>, case 3: <D.28712>, case 4: <D.28716>, case 5: <D.28713>, case 6: <D.28711>, case 7: <D.28714>>
    <D.28710>:
    <D.28711>:
    <D.28712>:
    <D.28713>:
    <D.28714>:
    <D.28715>:
    <D.28716>:
    D.53808 = mono_arch_is_soft_float ();
    if (D.53808 != 0) goto <D.28717>; else goto <D.53809>;
    <D.53809>:
    D.53810 = var->opcode;
    if (D.53810 != 330) goto <D.53811>; else goto <D.53812>;
    <D.53811>:
    D.53813 = cfg->ret;
    if (D.53813 != var) goto <D.53814>; else goto <D.53815>;
    <D.53814>:
    D.53816 = var->flags;
    D.53817 = (int) D.53816;
    D.53818 = D.53817 & 20;
    if (D.53818 == 0) goto <D.53819>; else goto <D.53820>;
    <D.53819>:
    D.53821 = var->dreg;
    D.53822 = (long unsigned int) D.53821;
    D.53823 = D.53822 * 4;
    D.53824 = vreg_to_bb + D.53823;
    D.53825 = *D.53824;
    if (D.53825 != -1) goto <D.53826>; else goto <D.53827>;
    <D.53826>:
    D.53828 = var->klass;
    D.53829 = D.53828->byval_arg.type;
    if (D.53829 != 12) goto <D.53830>; else goto <D.53831>;
    <D.53830>:
    D.53832 = BIT_FIELD_REF <*cfg, 8, 5616>;
    D.53833 = D.53832 & 64;
    if (D.53833 == 0) goto <D.53834>; else goto <D.53835>;
    <D.53834>:
    D.53836 = cfg->gsharedvt_info_var;
    if (D.53836 != var) goto <D.53837>; else goto <D.53838>;
    <D.53837>:
    D.53839 = cfg->gsharedvt_locals_var;
    if (D.53839 != var) goto <D.53840>; else goto <D.53841>;
    <D.53840>:
    D.53842 = cfg->lmf_addr_var;
    if (D.53842 != var) goto <D.53843>; else goto <D.53844>;
    <D.53843>:
    D.53704 = cfg->verbose_level;
    D.53712 = D.53704 > 2;
    D.53713 = (long int) D.53712;
    D.53714 = __builtin_expect (D.53713, 0);
    if (D.53714 != 0) goto <D.53845>; else goto <D.53846>;
    <D.53845>:
    D.53847 = vmv->idx;
    D.53821 = var->dreg;
    printf ("CONVERTED R%d(%d) TO VREG.\n", D.53821, D.53847);
    <D.53846>:
    D.53816 = var->flags;
    D.53848 = D.53816 | 2;
    var->flags = D.53848;
    D.53775 = cfg->vreg_to_inst;
    D.53821 = var->dreg;
    D.53822 = (long unsigned int) D.53821;
    D.53849 = D.53822 * 8;
    D.53850 = D.53775 + D.53849;
    *D.53850 = 0B;
    <D.53844>:
    <D.53841>:
    <D.53838>:
    <D.53835>:
    <D.53831>:
    <D.53827>:
    <D.53820>:
    <D.53815>:
    <D.53812>:
    goto <D.28717>;
    <D.53851>:
    <D.28717>:
  }
  i = i + 1;
  <D.28719>:
  i.500 = (unsigned int) i;
  D.53853 = cfg->num_varinfo;
  if (i.500 < D.53853) goto <D.28718>; else goto <D.28720>;
  <D.28720>:
  pos = 0;
  i = 0;
  goto <D.28723>;
  <D.28722>:
  {
    struct MonoInst * var;

    D.53800 = cfg->varinfo;
    D.53801 = (long unsigned int) i;
    D.53802 = D.53801 * 8;
    D.53803 = D.53800 + D.53802;
    var = *D.53803;
    if (pos < i) goto <D.53854>; else goto <D.53855>;
    <D.53854>:
    D.53856 = cfg->locals_start;
    i.500 = (unsigned int) i;
    if (D.53856 == i.500) goto <D.53857>; else goto <D.53858>;
    <D.53857>:
    pos.501 = (unsigned int) pos;
    cfg->locals_start = pos.501;
    <D.53858>:
    <D.53855>:
    D.53860 = var->flags;
    D.53861 = (int) D.53860;
    D.53862 = D.53861 & 2;
    if (D.53862 == 0) goto <D.53863>; else goto <D.53864>;
    <D.53863>:
    if (pos < i) goto <D.53865>; else goto <D.53866>;
    <D.53865>:
    D.53800 = cfg->varinfo;
    D.53867 = (long unsigned int) pos;
    D.53868 = D.53867 * 8;
    D.53869 = D.53800 + D.53868;
    D.53800 = cfg->varinfo;
    D.53801 = (long unsigned int) i;
    D.53802 = D.53801 * 8;
    D.53803 = D.53800 + D.53802;
    D.53870 = *D.53803;
    *D.53869 = D.53870;
    D.53800 = cfg->varinfo;
    D.53867 = (long unsigned int) pos;
    D.53868 = D.53867 * 8;
    D.53869 = D.53800 + D.53868;
    D.53871 = *D.53869;
    D.53872 = (long int) pos;
    D.53871->data.op[0].const_val = D.53872;
    D.53804 = cfg->vars;
    D.53801 = (long unsigned int) i;
    D.53805 = D.53801 * 80;
    D.53873 = D.53804 + D.53805;
    D.53804 = cfg->vars;
    D.53867 = (long unsigned int) pos;
    D.53874 = D.53867 * 80;
    D.53875 = D.53804 + D.53874;
    memcpy (D.53875, D.53873, 80);
    D.53804 = cfg->vars;
    D.53867 = (long unsigned int) pos;
    D.53874 = D.53867 * 80;
    D.53875 = D.53804 + D.53874;
    pos.501 = (unsigned int) pos;
    D.53875->idx = pos.501;
    <D.53866>:
    pos = pos + 1;
    <D.53864>:
  }
  i = i + 1;
  <D.28723>:
  i.500 = (unsigned int) i;
  D.53853 = cfg->num_varinfo;
  if (i.500 < D.53853) goto <D.28722>; else goto <D.28724>;
  <D.28724>:
  pos.501 = (unsigned int) pos;
  cfg->num_varinfo = pos.501;
  D.53856 = cfg->locals_start;
  D.53853 = cfg->num_varinfo;
  if (D.53856 > D.53853) goto <D.53876>; else goto <D.53877>;
  <D.53876>:
  D.53853 = cfg->num_varinfo;
  cfg->locals_start = D.53853;
  <D.53877>:
}


memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.53878;
  long unsigned int D.53879;

  D.53879 = __builtin_object_size (__dest, 0);
  D.53878 = __builtin___memcpy_chk (__dest, __src, __len, D.53879);
  return D.53878;
}


mono_spill_global_vars (struct MonoCompile * cfg, gboolean * need_local_opts)
{
  unsigned char D.53881;
  unsigned char D.53882;
  struct MonoInst * * D.53885;
  long unsigned int D.53886;
  long unsigned int D.53887;
  struct MonoInst * * D.53888;
  short unsigned int D.53889;
  unsigned char D.53892;
  unsigned char D.53893;
  unsigned int D.53894;
  int D.53895;
  unsigned int D.53898;
  long unsigned int D.53899;
  long unsigned int D.53900;
  struct MonoType * D.53901;
  int D.53902;
  unsigned int D.53905;
  int D.53908;
  long unsigned int D.53909;
  long unsigned int D.53910;
  int * D.53911;
  int D.53912;
  long int D.53913;
  unsigned int D.53915;
  struct MonoMemPool * D.53916;
  long unsigned int D.53917;
  unsigned int D.53918;
  int D.53921;
  long unsigned int D.53922;
  guint32 * D.53923;
  unsigned int D.53924;
  long unsigned int D.53925;
  long unsigned int D.53926;
  guint32 * D.53927;
  short unsigned int D.53928;
  int D.53929;
  int D.53930;
  int D.53931;
  _Bool D.53932;
  long int D.53933;
  long int D.53934;
  short unsigned int D.53941;
  short unsigned int D.53944;
  int D.53947;
  struct MonoInst * D.53949;
  short unsigned int D.53950;
  int D.53953;
  long int D.53954;
  int D.53960;
  long unsigned int D.53961;
  long unsigned int D.53962;
  int * D.53963;
  int D.53964;
  _Bool D.53966;
  long int D.53967;
  long int D.53968;
  int D.53971;
  long int D.53972;
  _Bool D.53977;
  long int D.53978;
  long int D.53979;
  _Bool D.53982;
  long int D.53983;
  long int D.53984;
  _Bool D.53987;
  long int D.53988;
  long int D.53989;
  short unsigned int D.53992;
  unsigned int D.53995;
  long int D.53996;
  struct MonoInst * D.53997;
  int D.53998;
  int D.53999;
  const unsigned char * D.54000;
  int D.54001;
  long int D.54002;
  unsigned int D.54007;
  long int D.54008;
  struct MonoInst * D.54009;
  int D.54010;
  int D.54011;
  long unsigned int D.54012;
  long unsigned int D.54013;
  long unsigned int D.54014;
  long int D.54015;
  unsigned int D.54016;
  short unsigned int D.54017;
  long int D.54020;
  struct MonoInst * D.54021;
  int D.54022;
  int D.54023;
  int D.54024;
  long int D.54025;
  int D.54029;
  _Bool D.54033;
  long int D.54034;
  long int D.54035;
  short unsigned int D.54040;
  int D.54043;
  char D.54044;
  char D.54045;
  short unsigned int D.54047;
  int D.54052;
  int D.54053;
  int D.54054;
  signed char D.54055;
  int D.54056;
  int iftmp.502;
  _Bool D.54064;
  long int D.54065;
  long int D.54066;
  unsigned int D.54071;
  unsigned int D.54072;
  struct MonoInst * * D.54075;
  long unsigned int D.54076;
  long unsigned int D.54077;
  struct MonoInst * * D.54078;
  struct MonoInst * D.54079;
  struct MonoInst * iftmp.503;
  struct MonoType * D.54086;
  unsigned int D.54087;
  short unsigned int D.54088;
  int D.54091;
  const char * D.54097;
  char D.54098;
  long unsigned int D.54100;
  guint32 * D.54101;
  unsigned int D.54102;
  int D.54104;
  _Bool D.54106;
  long int D.54107;
  long int D.54108;
  int D.54114;
  short unsigned int D.54115;
  int D.54116;
  long int D.54117;
  unsigned int D.54122;
  unsigned int D.54123;
  int D.54124;
  _Bool D.54125;
  long int D.54126;
  long int D.54127;
  long int D.54136;
  int D.54137;
  short unsigned int D.54138;
  short unsigned int D.54143;
  _Bool D.54144;
  _Bool D.54145;
  _Bool D.54146;
  short unsigned int D.54148;
  int D.54152;
  int D.54154;
  short unsigned int D.54155;
  long int D.54156;
  struct MonoInst * D.54157;
  int D.54158;
  int D.54159;
  unsigned char D.54160;
  int D.54161;
  int D.54162;
  long unsigned int D.54167;
  long unsigned int D.54168;
  struct MonoInst * * D.54169;
  struct MonoInst * D.54170;
  struct MonoBasicBlock * * D.54173;
  signed char D.54178;
  long int D.54181;
  struct MonoInst * D.54182;
  int D.54183;
  int D.54184;
  long int D.54185;
  int D.54186;
  sizetype D.54187;
  const char * D.54188;
  char D.54189;
  int iftmp.504;
  _Bool D.54193;
  _Bool D.54194;
  _Bool D.54195;
  _Bool D.54197;
  _Bool D.54198;
  _Bool D.54199;
  _Bool D.54201;
  long int D.54202;
  long int D.54203;
  unsigned int sreg.505;
  long unsigned int D.54211;
  long unsigned int D.54212;
  struct MonoInst * * D.54213;
  struct MonoInst * D.54214;
  struct MonoInst * iftmp.506;
  short unsigned int D.54221;
  int D.54224;
  struct MonoInst * * D.54225;
  struct MonoBasicBlock * * D.54226;
  unsigned char D.54231;
  signed char D.54232;
  long int D.54235;
  struct MonoInst * D.54236;
  int D.54237;
  int D.54238;
  long int D.54239;
  _Bool D.54240;
  long int D.54241;
  long int D.54242;
  struct MonoType * D.54245;
  _Bool D.54246;
  long int D.54247;
  long int D.54248;
  long unsigned int D.54251;
  guint32 * D.54252;
  unsigned int D.54253;
  _Bool D.54256;
  long int D.54257;
  long int D.54258;
  int D.54263;
  int load_opcode.507;
  int D.54268;
  int D.54270;
  short unsigned int D.54271;
  int D.54272;
  long int D.54273;
  int D.54277;
  int D.54279;
  short unsigned int D.54280;
  short unsigned int D.54284;
  _Bool D.54285;
  _Bool D.54286;
  _Bool D.54287;
  unsigned int D.54289;
  int D.54290;
  int D.54291;
  int D.54292;
  long int D.54297;
  long int D.54298;
  long unsigned int D.54301;
  long unsigned int D.54302;
  guint32 * D.54303;
  _Bool D.54304;
  long int D.54305;
  long int D.54306;
  unsigned int lvregs_len.508;
  long unsigned int D.54310;
  long unsigned int D.54311;
  guint32 * D.54312;
  unsigned int D.54313;
  long int D.54314;
  struct MonoInst * D.54315;
  short unsigned int D.54316;
  int D.54317;
  int D.54318;
  long unsigned int D.54321;
  struct MonoInst * * D.54322;
  struct MonoBasicBlock * * D.54323;
  long int D.54330;
  struct MonoInst * D.54331;
  int D.54332;
  int D.54333;
  long int D.54334;
  _Bool D.54337;
  long int D.54338;
  long int D.54339;
  long unsigned int D.54342;
  long unsigned int D.54343;
  guint32 * D.54344;
  unsigned int lvregs_len.509;
  long unsigned int D.54348;
  long unsigned int D.54349;
  guint32 * D.54350;
  unsigned int prev_dreg.510;
  short unsigned int D.54357;
  short unsigned int D.54358;
  _Bool D.54359;
  short unsigned int D.54360;
  _Bool D.54361;
  _Bool D.54362;
  short unsigned int D.54364;
  short unsigned int D.54366;
  short unsigned int D.54368;
  short unsigned int D.54370;
  unsigned char D.54376;
  unsigned char D.54377;
  struct MonoBitSet * D.54380;
  struct MonoInst * D.54383;
  struct MonoMethodVar * D.54386;
  long unsigned int D.54387;
  int iftmp.511;
  int D.54391;
  unsigned int D.54392;
  long unsigned int D.54394;
  long unsigned int D.54395;
  struct MonoInst * * D.54396;
  struct MonoInst * D.54397;
  struct MonoInst * iftmp.512;
  unsigned char D.54403;
  int D.54404;
  int D.54405;
  _Bool D.54407;
  long int D.54408;
  long int D.54409;
  struct MonoBitSet * D.54412;
  unsigned int D.54413;
  long unsigned int D.54414;
  long unsigned int D.54415;
  int i.513;
  int D.54417;
  long unsigned int D.54418;
  long unsigned int D.54419;
  struct MonoInst * * D.54422;
  struct MonoInst * D.54423;
  struct MonoBasicBlock * * D.54426;
  long unsigned int D.54427;
  long unsigned int D.54428;
  long unsigned int D.54429;
  struct MonoInst * * D.54432;
  struct MonoInst * D.54433;
  struct MonoBasicBlock * * D.54434;
  unsigned int D.54437;
  unsigned int D.54438;
  struct MonoMethodVar * D.54441;
  long unsigned int D.54442;
  long unsigned int D.54443;
  struct MonoInst * * D.54444;
  struct MonoInst * D.54445;
  long int D.54448;
  struct MonoInst * D.54449;
  int D.54450;
  int D.54451;
  long int D.54452;
  long int D.54453;
  struct MonoBasicBlock * * D.54454;
  struct MonoBasicBlock * D.54455;
  struct MonoInst * * D.54456;
  struct MonoInst * D.54457;
  struct MonoBasicBlock * * D.54460;
  struct MonoBasicBlock * D.54461;
  struct MonoInst * D.54462;
  struct MonoInst * D.54466;
  struct MonoBasicBlock * bb;
  char spec2[16];
  int orig_next_vreg;
  guint32 * vreg_to_lvreg;
  guint32 * lvregs;
  guint32 i;
  guint32 lvregs_len;
  gboolean dest_has_lvreg;
  guint32 stacktypes[128];
  struct MonoInst * * live_range_start;
  struct MonoInst * * live_range_end;
  struct MonoBasicBlock * * live_range_start_bb;
  struct MonoBasicBlock * * live_range_end_bb;
  int * gsharedvt_vreg_to_idx;

  try
    {
      dest_has_lvreg = 0;
      gsharedvt_vreg_to_idx = 0B;
      *need_local_opts = 0;
      memset (&spec2, 0, 16);
      stacktypes[105] = 3;
      stacktypes[108] = 2;
      stacktypes[102] = 4;
      stacktypes[120] = 7;
      D.53881 = BIT_FIELD_REF <*cfg, 8, 5632>;
      D.53882 = D.53881 & 128;
      if (D.53882 != 0) goto <D.53883>; else goto <D.53884>;
      <D.53883>:
      i = 0;
      goto <D.28745>;
      <D.28744>:
      {
        struct MonoInst * ins;

        D.53885 = cfg->varinfo;
        D.53886 = (long unsigned int) i;
        D.53887 = D.53886 * 8;
        D.53888 = D.53885 + D.53887;
        ins = *D.53888;
        D.53889 = ins->opcode;
        if (D.53889 == 366) goto <D.53890>; else goto <D.53891>;
        <D.53890>:
        D.53892 = ins->flags;
        D.53893 = D.53892 | 128;
        ins->flags = D.53893;
        <D.53891>:
      }
      i = i + 1;
      <D.28745>:
      D.53894 = cfg->num_varinfo;
      if (D.53894 > i) goto <D.28744>; else goto <D.28746>;
      <D.28746>:
      <D.53884>:
      D.53895 = cfg->gsharedvt;
      if (D.53895 != 0) goto <D.53896>; else goto <D.53897>;
      <D.53896>:
      D.53898 = cfg->next_vreg;
      D.53899 = (long unsigned int) D.53898;
      D.53900 = D.53899 * 4;
      gsharedvt_vreg_to_idx = monoeg_malloc0 (D.53900);
      i = 0;
      goto <D.28750>;
      <D.28749>:
      {
        struct MonoInst * ins;
        int idx;

        D.53885 = cfg->varinfo;
        D.53886 = (long unsigned int) i;
        D.53887 = D.53886 * 8;
        D.53888 = D.53885 + D.53887;
        ins = *D.53888;
        D.53901 = ins->data.op[1].vtype;
        D.53902 = mini_is_gsharedvt_variable_type (cfg, D.53901);
        if (D.53902 != 0) goto <D.53903>; else goto <D.53904>;
        <D.53903>:
        D.53905 = cfg->locals_start;
        if (D.53905 <= i) goto <D.53906>; else goto <D.53907>;
        <D.53906>:
        D.53901 = ins->data.op[1].vtype;
        idx = get_gsharedvt_info_slot (cfg, D.53901, 21);
        D.53908 = ins->dreg;
        D.53909 = (long unsigned int) D.53908;
        D.53910 = D.53909 * 4;
        D.53911 = gsharedvt_vreg_to_idx + D.53910;
        D.53912 = idx + 1;
        *D.53911 = D.53912;
        ins->opcode = 331;
        D.53913 = (long int) idx;
        ins->data.op[1].const_val = D.53913;
        goto <D.53914>;
        <D.53907>:
        D.53908 = ins->dreg;
        D.53909 = (long unsigned int) D.53908;
        D.53910 = D.53909 * 4;
        D.53911 = gsharedvt_vreg_to_idx + D.53910;
        *D.53911 = -1;
        ins->opcode = 332;
        <D.53914>:
        <D.53904>:
      }
      i = i + 1;
      <D.28750>:
      D.53894 = cfg->num_varinfo;
      if (D.53894 > i) goto <D.28749>; else goto <D.28751>;
      <D.28751>:
      <D.53897>:
      D.53898 = cfg->next_vreg;
      orig_next_vreg = (int) D.53898;
      D.53898 = cfg->next_vreg;
      D.53915 = D.53898 * 4;
      D.53916 = cfg->mempool;
      vreg_to_lvreg = mono_mempool_alloc0 (D.53916, D.53915);
      D.53916 = cfg->mempool;
      lvregs = mono_mempool_alloc (D.53916, 4096);
      lvregs_len = 0;
      D.53898 = cfg->next_vreg;
      D.53899 = (long unsigned int) D.53898;
      D.53917 = D.53899 * 8;
      live_range_start = monoeg_malloc0 (D.53917);
      D.53898 = cfg->next_vreg;
      D.53899 = (long unsigned int) D.53898;
      D.53917 = D.53899 * 8;
      live_range_end = monoeg_malloc0 (D.53917);
      D.53898 = cfg->next_vreg;
      D.53899 = (long unsigned int) D.53898;
      D.53917 = D.53899 * 8;
      live_range_start_bb = monoeg_malloc (D.53917);
      D.53898 = cfg->next_vreg;
      D.53899 = (long unsigned int) D.53898;
      D.53917 = D.53899 * 8;
      live_range_end_bb = monoeg_malloc (D.53917);
      bb = cfg->bb_entry;
      goto <D.28810>;
      <D.28809>:
      {
        struct MonoInst * ins;

        D.53918 = cfg->verbose_level;
        if (D.53918 > 2) goto <D.53919>; else goto <D.53920>;
        <D.53919>:
        D.53921 = bb->block_num;
        printf ("\nSPILL BLOCK %d:\n", D.53921);
        <D.53920>:
        i = 0;
        goto <D.28754>;
        <D.28753>:
        D.53886 = (long unsigned int) i;
        D.53922 = D.53886 * 4;
        D.53923 = lvregs + D.53922;
        D.53924 = *D.53923;
        D.53925 = (long unsigned int) D.53924;
        D.53926 = D.53925 * 4;
        D.53927 = vreg_to_lvreg + D.53926;
        *D.53927 = 0;
        i = i + 1;
        <D.28754>:
        if (i < lvregs_len) goto <D.28753>; else goto <D.28755>;
        <D.28755>:
        lvregs_len = 0;
        cfg->cbb = bb;
        ins = bb->code;
        goto <D.28802>;
        <D.28801>:
        {
          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.53928 = ins->opcode;
              D.53929 = (int) D.53928;
              D.53930 = D.53929 + -313;
              D.53931 = D.53930 * 4;
              spec = &ins_info[D.53931];
              D.53918 = cfg->verbose_level;
              D.53932 = D.53918 > 2;
              D.53933 = (long int) D.53932;
              D.53934 = __builtin_expect (D.53933, 0);
              if (D.53934 != 0) goto <D.53935>; else goto <D.53936>;
              <D.53935>:
              mono_print_ins (ins);
              <D.53936>:
              D.53928 = ins->opcode;
              if (D.53928 == 316) goto <D.53937>; else goto <D.53938>;
              <D.53937>:
              // predicted unlikely by continue predictor.
              goto <D.28766>;
              <D.53938>:
              D.53928 = ins->opcode;
              if (D.53928 == 314) goto <D.53939>; else goto <D.53940>;
              <D.53939>:
              {
                struct MonoInst * var;

                var = ins->data.op[0].p;
                D.53941 = var->opcode;
                if (D.53941 == 368) goto <D.53942>; else goto <D.53943>;
                <D.53942>:
                {
                  struct MonoInst * vtaddr;

                  vtaddr = var->data.op[0].src;
                  D.53944 = vtaddr->opcode;
                  if (D.53944 == 366) goto <D.53945>; else goto <D.53946>;
                  <D.53945>:
                  ins->opcode = 428;
                  D.53947 = vtaddr->dreg;
                  ins->sreg1 = D.53947;
                  goto <D.53948>;
                  <D.53946>:
                  D.53949 = var->data.op[0].src;
                  D.53950 = D.53949->opcode;
                  if (D.53950 == 367) goto <D.53951>; else goto <D.53952>;
                  <D.53951>:
                  ins->opcode = 391;
                  D.53953 = vtaddr->sreg1;
                  ins->sreg1 = D.53953;
                  D.53954 = vtaddr->data.op[0].const_val;
                  ins->data.op[0].const_val = D.53954;
                  goto <D.53955>;
                  <D.53952>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12918);
                  <D.53955>:
                  <D.53948>:
                }
                goto <D.53956>;
                <D.53943>:
                D.53895 = cfg->gsharedvt;
                if (D.53895 != 0) goto <D.53959>; else goto <D.53957>;
                <D.53959>:
                D.53960 = var->dreg;
                D.53961 = (long unsigned int) D.53960;
                D.53962 = D.53961 * 4;
                D.53963 = gsharedvt_vreg_to_idx + D.53962;
                D.53964 = *D.53963;
                if (D.53964 < 0) goto <D.53965>; else goto <D.53957>;
                <D.53965>:
                D.53941 = var->opcode;
                D.53966 = D.53941 != 332;
                D.53967 = (long int) D.53966;
                D.53968 = __builtin_expect (D.53967, 0);
                if (D.53968 != 0) goto <D.53969>; else goto <D.53970>;
                <D.53969>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12921, "var->opcode == OP_GSHAREDVT_ARG_REGOFFSET");
                <D.53970>:
                ins->opcode = 391;
                D.53971 = var->sreg1;
                ins->sreg1 = D.53971;
                D.53972 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.53972;
                goto <D.53958>;
                <D.53957>:
                D.53895 = cfg->gsharedvt;
                if (D.53895 != 0) goto <D.53975>; else goto <D.53973>;
                <D.53975>:
                D.53960 = var->dreg;
                D.53961 = (long unsigned int) D.53960;
                D.53962 = D.53961 * 4;
                D.53963 = gsharedvt_vreg_to_idx + D.53962;
                D.53964 = *D.53963;
                if (D.53964 != 0) goto <D.53976>; else goto <D.53973>;
                <D.53976>:
                {
                  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.53960 = var->dreg;
                  D.53961 = (long unsigned int) D.53960;
                  D.53962 = D.53961 * 4;
                  D.53963 = gsharedvt_vreg_to_idx + D.53962;
                  D.53964 = *D.53963;
                  idx = D.53964 + -1;
                  info_var = cfg->gsharedvt_info_var;
                  locals_var = cfg->gsharedvt_locals_var;
                  D.53941 = var->opcode;
                  D.53977 = D.53941 != 331;
                  D.53978 = (long int) D.53977;
                  D.53979 = __builtin_expect (D.53978, 0);
                  if (D.53979 != 0) goto <D.53980>; else goto <D.53981>;
                  <D.53980>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12938, "var->opcode == OP_GSHAREDVT_LOCAL");
                  <D.53981>:
                  D.53982 = info_var == 0B;
                  D.53983 = (long int) D.53982;
                  D.53984 = __builtin_expect (D.53983, 0);
                  if (D.53984 != 0) goto <D.53985>; else goto <D.53986>;
                  <D.53985>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12940, "info_var");
                  <D.53986>:
                  D.53987 = locals_var == 0B;
                  D.53988 = (long int) D.53987;
                  D.53989 = __builtin_expect (D.53988, 0);
                  if (D.53989 != 0) goto <D.53990>; else goto <D.53991>;
                  <D.53990>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12941, "locals_var");
                  <D.53991>:
                  cfg->gsharedvt_locals_var_ins = 0B;
                  D.53992 = info_var->opcode;
                  if (D.53992 == 367) goto <D.53993>; else goto <D.53994>;
                  <D.53993>:
                  D.53995 = alloc_ireg (cfg);
                  reg1 = (int) D.53995;
                  D.53916 = cfg->mempool;
                  load = mono_mempool_alloc (D.53916, 80);
                  load->data.op[1].const_val = 0;
                  D.53996 = load->data.op[1].const_val;
                  load->data.op[0].const_val = D.53996;
                  load->prev = 0B;
                  D.53997 = load->prev;
                  load->next = D.53997;
                  load->opcode = 391;
                  load->flags = 0;
                  load->type = 0;
                  load->dreg = -1;
                  load->sreg3 = -1;
                  D.53998 = load->sreg3;
                  load->sreg2 = D.53998;
                  D.53999 = load->sreg2;
                  load->sreg1 = D.53999;
                  D.54000 = cfg->ip;
                  load->cil_code = D.54000;
                  load->dreg = reg1;
                  D.54001 = info_var->sreg1;
                  load->sreg1 = D.54001;
                  D.54002 = info_var->data.op[0].const_val;
                  load->data.op[0].const_val = D.54002;
                  load->type = 1;
                  goto <D.54003>;
                  <D.53994>:
                  D.53992 = info_var->opcode;
                  if (D.53992 == 366) goto <D.54004>; else goto <D.54005>;
                  <D.54004>:
                  load = 0B;
                  reg1 = info_var->dreg;
                  goto <D.54006>;
                  <D.54005>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12954);
                  <D.54006>:
                  <D.54003>:
                  D.54007 = alloc_ireg (cfg);
                  reg2 = (int) D.54007;
                  D.53916 = cfg->mempool;
                  load2 = mono_mempool_alloc (D.53916, 80);
                  load2->data.op[1].const_val = 0;
                  D.54008 = load2->data.op[1].const_val;
                  load2->data.op[0].const_val = D.54008;
                  load2->prev = 0B;
                  D.54009 = load2->prev;
                  load2->next = D.54009;
                  load2->opcode = 396;
                  load2->flags = 0;
                  load2->type = 0;
                  load2->dreg = -1;
                  load2->sreg3 = -1;
                  D.54010 = load2->sreg3;
                  load2->sreg2 = D.54010;
                  D.54011 = load2->sreg2;
                  load2->sreg1 = D.54011;
                  D.54000 = cfg->ip;
                  load2->cil_code = D.54000;
                  load2->dreg = reg2;
                  load2->sreg1 = reg1;
                  D.54012 = (long unsigned int) idx;
                  D.54013 = D.54012 + 1;
                  D.54014 = D.54013 * 8;
                  D.54015 = (long int) D.54014;
                  load2->data.op[0].const_val = D.54015;
                  load2->type = 1;
                  D.54016 = alloc_ireg (cfg);
                  reg3 = (int) D.54016;
                  D.54017 = locals_var->opcode;
                  if (D.54017 == 367) goto <D.54018>; else goto <D.54019>;
                  <D.54018>:
                  D.53916 = cfg->mempool;
                  load3 = mono_mempool_alloc (D.53916, 80);
                  load3->data.op[1].const_val = 0;
                  D.54020 = load3->data.op[1].const_val;
                  load3->data.op[0].const_val = D.54020;
                  load3->prev = 0B;
                  D.54021 = load3->prev;
                  load3->next = D.54021;
                  load3->opcode = 391;
                  load3->flags = 0;
                  load3->type = 0;
                  load3->dreg = -1;
                  load3->sreg3 = -1;
                  D.54022 = load3->sreg3;
                  load3->sreg2 = D.54022;
                  D.54023 = load3->sreg2;
                  load3->sreg1 = D.54023;
                  D.54000 = cfg->ip;
                  load3->cil_code = D.54000;
                  load3->dreg = reg3;
                  D.54024 = locals_var->sreg1;
                  load3->sreg1 = D.54024;
                  D.54025 = locals_var->data.op[0].const_val;
                  load3->data.op[0].const_val = D.54025;
                  load3->type = 1;
                  goto <D.54026>;
                  <D.54019>:
                  D.54017 = locals_var->opcode;
                  if (D.54017 == 366) goto <D.54027>; else goto <D.54028>;
                  <D.54027>:
                  D.53916 = cfg->mempool;
                  load3 = mono_mempool_alloc (D.53916, 80);
                  load3->data.op[1].const_val = 0;
                  D.54020 = load3->data.op[1].const_val;
                  load3->data.op[0].const_val = D.54020;
                  load3->prev = 0B;
                  D.54021 = load3->prev;
                  load3->next = D.54021;
                  load3->opcode = 428;
                  load3->flags = 0;
                  load3->type = 0;
                  load3->dreg = -1;
                  load3->sreg3 = -1;
                  D.54022 = load3->sreg3;
                  load3->sreg2 = D.54022;
                  D.54023 = load3->sreg2;
                  load3->sreg1 = D.54023;
                  D.54000 = cfg->ip;
                  load3->cil_code = D.54000;
                  load3->dreg = reg3;
                  D.54029 = locals_var->dreg;
                  load3->sreg1 = D.54029;
                  goto <D.54030>;
                  <D.54028>:
                  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12965);
                  <D.54030>:
                  <D.54026>:
                  ins->opcode = 483;
                  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.54031>; else goto <D.54032>;
                  <D.54031>:
                  mono_bblock_insert_before_ins (bb, load2, load);
                  <D.54032>:
                }
                goto <D.53974>;
                <D.53973>:
                D.53941 = var->opcode;
                D.54033 = D.53941 != 367;
                D.54034 = (long int) D.54033;
                D.54035 = __builtin_expect (D.54034, 0);
                if (D.54035 != 0) goto <D.54036>; else goto <D.54037>;
                <D.54036>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 12977, "var->opcode == OP_REGOFFSET");
                <D.54037>:
                ins->opcode = 433;
                D.53971 = var->sreg1;
                ins->sreg1 = D.53971;
                D.53972 = var->data.op[0].const_val;
                ins->data.op[1].const_val = D.53972;
                <D.53974>:
                <D.53958>:
                <D.53956>:
                *need_local_opts = 1;
                D.53928 = ins->opcode;
                D.53929 = (int) D.53928;
                D.53930 = D.53929 + -313;
                D.53931 = D.53930 * 4;
                spec = &ins_info[D.53931];
              }
              <D.53940>:
              D.53928 = ins->opcode;
              if (D.53928 <= 312) goto <D.54038>; else goto <D.54039>;
              <D.54038>:
              mono_print_ins (ins);
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12990);
              <D.54039>:
              D.53928 = ins->opcode;
              D.54040 = D.53928 + 65162;
              if (D.54040 <= 16) goto <D.54041>; else goto <D.54042>;
              <D.54041>:
              tmp_reg = ins->dreg;
              D.54043 = ins->sreg2;
              ins->dreg = D.54043;
              ins->sreg2 = tmp_reg;
              store = 1;
              spec2[0] = 32;
              D.54044 = MEM[(const char *)spec + 1B];
              spec2[1] = D.54044;
              D.54045 = *spec;
              spec2[2] = D.54045;
              spec2[3] = 32;
              spec = &spec2;
              goto <D.54046>;
              <D.54042>:
              D.53928 = ins->opcode;
              D.54047 = D.53928 + 65122;
              if (D.54047 <= 6) goto <D.54048>; else goto <D.54049>;
              <D.54048>:
              monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 13010);
              <D.54049>:
              store = 0;
              <D.54046>:
              no_lvreg = 0;
              D.53918 = cfg->verbose_level;
              D.53932 = D.53918 > 2;
              D.53933 = (long int) D.53932;
              D.53934 = __builtin_expect (D.53933, 0);
              if (D.53934 != 0) goto <D.54050>; else goto <D.54051>;
              <D.54050>:
              D.54052 = ins->dreg;
              printf ("\t %.3s %d", spec, D.54052);
              D.54053 = ins->sreg1;
              sregs[0] = D.54053;
              D.54043 = ins->sreg2;
              sregs[1] = D.54043;
              D.54054 = ins->sreg3;
              sregs[2] = D.54054;
              D.53928 = ins->opcode;
              D.53929 = (int) D.53928;
              D.53930 = D.53929 + -313;
              D.54055 = ins_sreg_counts[D.53930];
              num_sregs = (int) D.54055;
              srcindex = 0;
              goto <D.28779>;
              <D.28778>:
              D.54056 = sregs[srcindex];
              printf (" %d", D.54056);
              srcindex = srcindex + 1;
              <D.28779>:
              if (srcindex < num_sregs) goto <D.28778>; else goto <D.28780>;
              <D.28780>:
              printf ("\n");
              <D.54051>:
              D.54045 = *spec;
              regtype = (int) D.54045;
              D.54052 = ins->dreg;
              if (D.54052 != -1) goto <D.54058>; else goto <D.54062>;
              <D.54062>:
              if (regtype != 32) goto <D.54058>; else goto <D.54059>;
              <D.54058>:
              D.54052 = ins->dreg;
              if (D.54052 == -1) goto <D.54060>; else goto <D.54063>;
              <D.54063>:
              if (regtype == 32) goto <D.54060>; else goto <D.54059>;
              <D.54060>:
              iftmp.502 = 1;
              goto <D.54061>;
              <D.54059>:
              iftmp.502 = 0;
              <D.54061>:
              D.54064 = iftmp.502 != 0;
              D.54065 = (long int) D.54064;
              D.54066 = __builtin_expect (D.54065, 0);
              if (D.54066 != 0) goto <D.54067>; else goto <D.54068>;
              <D.54067>:
              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.54068>:
              prev_dreg = -1;
              D.54052 = ins->dreg;
              if (D.54052 != -1) goto <D.54069>; else goto <D.54070>;
              <D.54069>:
              D.54052 = ins->dreg;
              D.54071 = (unsigned int) D.54052;
              D.54072 = cfg->vreg_to_inst_len;
              if (D.54071 < D.54072) goto <D.54073>; else goto <D.54074>;
              <D.54073>:
              D.54075 = cfg->vreg_to_inst;
              D.54052 = ins->dreg;
              D.54076 = (long unsigned int) D.54052;
              D.54077 = D.54076 * 8;
              D.54078 = D.54075 + D.54077;
              D.54079 = *D.54078;
              if (D.54079 != 0B) goto <D.54080>; else goto <D.54081>;
              <D.54080>:
              {
                struct MonoInst * var;
                struct MonoInst * store_ins;
                int store_opcode;
                struct MonoInst * def_ins;
                int dreg;

                D.54052 = ins->dreg;
                D.54071 = (unsigned int) D.54052;
                D.54072 = cfg->vreg_to_inst_len;
                if (D.54071 < D.54072) goto <D.54083>; else goto <D.54084>;
                <D.54083>:
                D.54075 = cfg->vreg_to_inst;
                D.54052 = ins->dreg;
                D.54076 = (long unsigned int) D.54052;
                D.54077 = D.54076 * 8;
                D.54078 = D.54075 + D.54077;
                iftmp.503 = *D.54078;
                goto <D.54085>;
                <D.54084>:
                iftmp.503 = 0B;
                <D.54085>:
                var = iftmp.503;
                def_ins = ins;
                dreg = ins->dreg;
                D.54086 = var->data.op[1].vtype;
                D.54087 = mono_type_to_store_membase (cfg, D.54086);
                store_opcode = (int) D.54087;
                D.54088 = var->opcode;
                if (D.54088 == 366) goto <D.54089>; else goto <D.54090>;
                <D.54089>:
                D.54091 = var->dreg;
                ins->dreg = D.54091;
                goto <D.54092>;
                <D.54090>:
                D.54052 = ins->dreg;
                D.54053 = ins->sreg1;
                if (D.54052 == D.54053) goto <D.54095>; else goto <D.54093>;
                <D.54095>:
                D.54045 = *spec;
                if (D.54045 == 105) goto <D.54096>; else goto <D.54093>;
                <D.54096>:
                D.54097 = spec + 1;
                D.54098 = *D.54097;
                if (D.54098 == 105) goto <D.54099>; else goto <D.54093>;
                <D.54099>:
                D.54052 = ins->dreg;
                D.54076 = (long unsigned int) D.54052;
                D.54100 = D.54076 * 4;
                D.54101 = vreg_to_lvreg + D.54100;
                D.54102 = *D.54101;
                if (D.54102 == 0) goto <D.54103>; else goto <D.54093>;
                <D.54103>:
                D.53928 = ins->opcode;
                D.53929 = (int) D.53928;
                D.54104 = op_to_op_dest_membase (store_opcode, D.53929);
                if (D.54104 != -1) goto <D.54105>; else goto <D.54093>;
                <D.54105>:
                D.54088 = var->opcode;
                D.54106 = D.54088 != 367;
                D.54107 = (long int) D.54106;
                D.54108 = __builtin_expect (D.54107, 0);
                if (D.54108 != 0) goto <D.54109>; else goto <D.54110>;
                <D.54109>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13045, "var->opcode == OP_REGOFFSET");
                <D.54110>:
                D.53928 = ins->opcode;
                if (D.53928 == 428) goto <D.54111>; else goto <D.54112>;
                <D.54111>:
                ins->opcode = 316;
                ins->dreg = -1;
                ins->sreg3 = -1;
                D.54054 = ins->sreg3;
                ins->sreg2 = D.54054;
                D.54043 = ins->sreg2;
                ins->sreg1 = D.54043;
                def_ins = 0B;
                goto <D.54113>;
                <D.54112>:
                D.53928 = ins->opcode;
                D.53929 = (int) D.53928;
                D.54114 = op_to_op_dest_membase (store_opcode, D.53929);
                D.54115 = (short unsigned int) D.54114;
                ins->opcode = D.54115;
                D.54116 = var->sreg1;
                ins->sreg1 = D.54116;
                D.54117 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.54117;
                ins->dreg = -1;
                <D.54113>:
                D.53928 = ins->opcode;
                D.53929 = (int) D.53928;
                D.53930 = D.53929 + -313;
                D.53931 = D.53930 * 4;
                spec = &ins_info[D.53931];
                goto <D.54094>;
                <D.54093>:
                {
                  guint32 lvreg;

                  D.54088 = var->opcode;
                  D.54106 = D.54088 != 367;
                  D.54107 = (long int) D.54106;
                  D.54108 = __builtin_expect (D.54107, 0);
                  if (D.54108 != 0) goto <D.54118>; else goto <D.54119>;
                  <D.54118>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13059, "var->opcode == OP_REGOFFSET");
                  <D.54119>:
                  prev_dreg = ins->dreg;
                  D.54052 = ins->dreg;
                  D.54076 = (long unsigned int) D.54052;
                  D.54100 = D.54076 * 4;
                  D.54101 = vreg_to_lvreg + D.54100;
                  *D.54101 = 0;
                  lvreg = 0;
                  if (0 != 0) goto <D.54120>; else goto <D.54121>;
                  <D.54120>:
                  regtype = 108;
                  store_opcode = 378;
                  <D.54121>:
                  D.54122 = stacktypes[regtype];
                  D.54123 = alloc_dreg (cfg, D.54122);
                  D.54124 = (int) D.54123;
                  ins->dreg = D.54124;
                  D.54125 = store_opcode == 390;
                  D.54126 = (long int) D.54125;
                  D.54127 = __builtin_expect (D.54126, 0);
                  if (D.54127 != 0) goto <D.54128>; else goto <D.54129>;
                  <D.54128>:
                  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13086, "store_opcode != OP_STOREV_MEMBASE");
                  <D.54129>:
                  if (lvreg == 0) goto <D.54133>; else goto <D.54130>;
                  <D.54133>:
                  D.53928 = ins->opcode;
                  if (D.53928 == 362) goto <D.54131>; else goto <D.54134>;
                  <D.54134>:
                  D.53928 = ins->opcode;
                  if (D.53928 == 363) goto <D.54135>; else goto <D.54130>;
                  <D.54135>:
                  D.54136 = ins->data.op[0].const_val;
                  if (D.54136 == 0) goto <D.54131>; else goto <D.54130>;
                  <D.54131>:
                  D.54137 = store_membase_reg_to_store_membase_imm (store_opcode);
                  D.54138 = (short unsigned int) D.54137;
                  ins->opcode = D.54138;
                  D.54136 = ins->data.op[0].const_val;
                  ins->data.op[1].const_val = D.54136;
                  D.54116 = var->sreg1;
                  ins->dreg = D.54116;
                  D.54117 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.54117;
                  D.53928 = ins->opcode;
                  D.53929 = (int) D.53928;
                  D.53930 = D.53929 + -313;
                  D.53931 = D.53930 * 4;
                  spec = &ins_info[D.53931];
                  goto <D.54132>;
                  <D.54130>:
                  if (lvreg == 0) goto <D.54142>; else goto <D.54139>;
                  <D.54142>:
                  D.54143 = ins->opcode;
                  D.54144 = D.54143 == 428;
                  D.54145 = D.54143 == 430;
                  D.54146 = D.54144 | D.54145;
                  if (D.54146 != 0) goto <D.54140>; else goto <D.54147>;
                  <D.54147>:
                  D.53928 = ins->opcode;
                  if (D.53928 == 429) goto <D.54140>; else goto <D.54139>;
                  <D.54140>:
                  D.54148 = (short unsigned int) store_opcode;
                  ins->opcode = D.54148;
                  D.54116 = var->sreg1;
                  ins->dreg = D.54116;
                  D.54117 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.54117;
                  no_lvreg = 1;
                  tmp_reg = ins->dreg;
                  D.54043 = ins->sreg2;
                  ins->dreg = D.54043;
                  ins->sreg2 = tmp_reg;
                  store = 1;
                  spec2[0] = 32;
                  D.54044 = MEM[(const char *)spec + 1B];
                  spec2[1] = D.54044;
                  D.54045 = *spec;
                  spec2[2] = D.54045;
                  spec2[3] = 32;
                  spec = &spec2;
                  goto <D.54141>;
                  <D.54139>:
                  if (lvreg == 0) goto <D.54151>; else goto <D.54149>;
                  <D.54151>:
                  D.53928 = ins->opcode;
                  D.53929 = (int) D.53928;
                  D.54152 = op_to_op_store_membase (store_opcode, D.53929);
                  if (D.54152 != -1) goto <D.54153>; else goto <D.54149>;
                  <D.54153>:
                  D.53928 = ins->opcode;
                  D.53929 = (int) D.53928;
                  D.54154 = op_to_op_store_membase (store_opcode, D.53929);
                  D.54155 = (short unsigned int) D.54154;
                  ins->opcode = D.54155;
                  ins->dreg = -1;
                  D.54116 = var->sreg1;
                  ins->sreg1 = D.54116;
                  D.54117 = var->data.op[0].const_val;
                  ins->data.op[0].const_val = D.54117;
                  D.53928 = ins->opcode;
                  D.53929 = (int) D.53928;
                  D.53930 = D.53929 + -313;
                  D.53931 = D.53930 * 4;
                  spec = &ins_info[D.53931];
                  goto <D.54150>;
                  <D.54149>:
                  D.53916 = cfg->mempool;
                  store_ins = mono_mempool_alloc (D.53916, 80);
                  store_ins->data.op[1].const_val = 0;
                  D.54156 = store_ins->data.op[1].const_val;
                  store_ins->data.op[0].const_val = D.54156;
                  store_ins->prev = 0B;
                  D.54157 = store_ins->prev;
                  store_ins->next = D.54157;
                  D.54148 = (short unsigned int) store_opcode;
                  store_ins->opcode = D.54148;
                  store_ins->flags = 0;
                  store_ins->type = 0;
                  store_ins->dreg = -1;
                  store_ins->sreg3 = -1;
                  D.54158 = store_ins->sreg3;
                  store_ins->sreg2 = D.54158;
                  D.54159 = store_ins->sreg2;
                  store_ins->sreg1 = D.54159;
                  D.54000 = cfg->ip;
                  store_ins->cil_code = D.54000;
                  D.54052 = ins->dreg;
                  store_ins->sreg1 = D.54052;
                  D.54116 = var->sreg1;
                  store_ins->dreg = D.54116;
                  D.54117 = var->data.op[0].const_val;
                  store_ins->data.op[0].const_val = D.54117;
                  mono_bblock_insert_after_ins (bb, ins, store_ins);
                  def_ins = store_ins;
                  D.54160 = var->flags;
                  D.54161 = (int) D.54160;
                  D.54162 = D.54161 & 20;
                  if (D.54162 == 0) goto <D.54163>; else goto <D.54164>;
                  <D.54163>:
                  dest_has_lvreg = 1;
                  <D.54164>:
                  <D.54150>:
                  <D.54141>:
                  <D.54132>:
                }
                <D.54094>:
                <D.54092>:
                if (def_ins != 0B) goto <D.54165>; else goto <D.54166>;
                <D.54165>:
                D.54167 = (long unsigned int) dreg;
                D.54168 = D.54167 * 8;
                D.54169 = live_range_start + D.54168;
                D.54170 = *D.54169;
                if (D.54170 == 0B) goto <D.54171>; else goto <D.54172>;
                <D.54171>:
                D.54167 = (long unsigned int) dreg;
                D.54168 = D.54167 * 8;
                D.54169 = live_range_start + D.54168;
                *D.54169 = def_ins;
                D.54167 = (long unsigned int) dreg;
                D.54168 = D.54167 * 8;
                D.54173 = live_range_start_bb + D.54168;
                *D.54173 = bb;
                <D.54172>:
                <D.54166>:
                D.53881 = BIT_FIELD_REF <*cfg, 8, 5632>;
                D.53882 = D.53881 & 128;
                if (D.53882 != 0) goto <D.54174>; else goto <D.54175>;
                <D.54174>:
                if (def_ins != 0B) goto <D.54176>; else goto <D.54177>;
                <D.54176>:
                D.54160 = var->flags;
                D.54178 = (signed char) D.54160;
                if (D.54178 < 0) goto <D.54179>; else goto <D.54180>;
                <D.54179>:
                {
                  struct MonoInst * tmp;

                  D.53916 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.53916, 80);
                  tmp->data.op[1].const_val = 0;
                  D.54181 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.54181;
                  tmp->prev = 0B;
                  D.54182 = tmp->prev;
                  tmp->next = D.54182;
                  tmp->opcode = 1000;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.54183 = tmp->sreg3;
                  tmp->sreg2 = D.54183;
                  D.54184 = tmp->sreg2;
                  tmp->sreg1 = D.54184;
                  D.54000 = cfg->ip;
                  tmp->cil_code = D.54000;
                  D.54185 = (long int) dreg;
                  tmp->data.op[1].const_val = D.54185;
                  mono_bblock_insert_after_ins (bb, def_ins, tmp);
                }
                <D.54180>:
                <D.54177>:
                <D.54175>:
              }
              <D.54081>:
              <D.54074>:
              <D.54070>:
              D.54053 = ins->sreg1;
              sregs[0] = D.54053;
              D.54043 = ins->sreg2;
              sregs[1] = D.54043;
              D.54054 = ins->sreg3;
              sregs[2] = D.54054;
              D.53928 = ins->opcode;
              D.53929 = (int) D.53928;
              D.53930 = D.53929 + -313;
              D.54055 = ins_sreg_counts[D.53930];
              num_sregs = (int) D.54055;
              srcindex = 0;
              goto <D.28796>;
              <D.28795>:
              D.54186 = srcindex + 1;
              D.54187 = (sizetype) D.54186;
              D.54188 = spec + D.54187;
              D.54189 = *D.54188;
              regtype = (int) D.54189;
              sreg = sregs[srcindex];
              D.54193 = sreg != -1;
              D.54194 = regtype != 32;
              D.54195 = D.54193 | D.54194;
              if (D.54195 != 0) goto <D.54196>; else goto <D.54191>;
              <D.54196>:
              D.54197 = sreg == -1;
              D.54198 = regtype == 32;
              D.54199 = D.54197 | D.54198;
              if (D.54199 != 0) goto <D.54200>; else goto <D.54191>;
              <D.54200>:
              iftmp.504 = 1;
              goto <D.54192>;
              <D.54191>:
              iftmp.504 = 0;
              <D.54192>:
              D.54201 = iftmp.504 != 0;
              D.54202 = (long int) D.54201;
              D.54203 = __builtin_expect (D.54202, 0);
              if (D.54203 != 0) goto <D.54204>; else goto <D.54205>;
              <D.54204>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13163, "((sreg == -1) && (regtype == \' \')) || ((sreg != -1) && (regtype != \' \'))");
              <D.54205>:
              if (sreg != -1) goto <D.54206>; else goto <D.54207>;
              <D.54206>:
              sreg.505 = (unsigned int) sreg;
              D.54072 = cfg->vreg_to_inst_len;
              if (sreg.505 < D.54072) goto <D.54209>; else goto <D.54210>;
              <D.54209>:
              D.54075 = cfg->vreg_to_inst;
              D.54211 = (long unsigned int) sreg;
              D.54212 = D.54211 * 8;
              D.54213 = D.54075 + D.54212;
              D.54214 = *D.54213;
              if (D.54214 != 0B) goto <D.54215>; else goto <D.54216>;
              <D.54215>:
              {
                struct MonoInst * var;
                struct MonoInst * use_ins;
                struct MonoInst * load_ins;
                guint32 load_opcode;

                sreg.505 = (unsigned int) sreg;
                D.54072 = cfg->vreg_to_inst_len;
                if (sreg.505 < D.54072) goto <D.54218>; else goto <D.54219>;
                <D.54218>:
                D.54075 = cfg->vreg_to_inst;
                D.54211 = (long unsigned int) sreg;
                D.54212 = D.54211 * 8;
                D.54213 = D.54075 + D.54212;
                iftmp.506 = *D.54213;
                goto <D.54220>;
                <D.54219>:
                iftmp.506 = 0B;
                <D.54220>:
                var = iftmp.506;
                use_ins = ins;
                D.54221 = var->opcode;
                if (D.54221 == 366) goto <D.54222>; else goto <D.54223>;
                <D.54222>:
                D.54224 = var->dreg;
                sregs[srcindex] = D.54224;
                D.54211 = (long unsigned int) sreg;
                D.54212 = D.54211 * 8;
                D.54225 = live_range_end + D.54212;
                *D.54225 = use_ins;
                D.54211 = (long unsigned int) sreg;
                D.54212 = D.54211 * 8;
                D.54226 = live_range_end_bb + D.54212;
                *D.54226 = bb;
                D.53881 = BIT_FIELD_REF <*cfg, 8, 5632>;
                D.53882 = D.53881 & 128;
                if (D.53882 != 0) goto <D.54227>; else goto <D.54228>;
                <D.54227>:
                D.54224 = var->dreg;
                if (D.54224 < orig_next_vreg) goto <D.54229>; else goto <D.54230>;
                <D.54229>:
                D.54231 = var->flags;
                D.54232 = (signed char) D.54231;
                if (D.54232 < 0) goto <D.54233>; else goto <D.54234>;
                <D.54233>:
                {
                  struct MonoInst * tmp;

                  D.53916 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.53916, 80);
                  tmp->data.op[1].const_val = 0;
                  D.54235 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.54235;
                  tmp->prev = 0B;
                  D.54236 = tmp->prev;
                  tmp->next = D.54236;
                  tmp->opcode = 1001;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.54237 = tmp->sreg3;
                  tmp->sreg2 = D.54237;
                  D.54238 = tmp->sreg2;
                  tmp->sreg1 = D.54238;
                  D.54000 = cfg->ip;
                  tmp->cil_code = D.54000;
                  D.54239 = (long int) sreg;
                  tmp->data.op[1].const_val = D.54239;
                  mono_bblock_insert_after_ins (bb, ins, tmp);
                }
                <D.54234>:
                <D.54230>:
                <D.54228>:
                // predicted unlikely by continue predictor.
                goto <D.28793>;
                <D.54223>:
                D.54221 = var->opcode;
                D.54240 = D.54221 != 367;
                D.54241 = (long int) D.54240;
                D.54242 = __builtin_expect (D.54241, 0);
                if (D.54242 != 0) goto <D.54243>; else goto <D.54244>;
                <D.54243>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13188, "var->opcode == OP_REGOFFSET");
                <D.54244>:
                D.54245 = var->data.op[1].vtype;
                load_opcode = mono_type_to_load_membase (cfg, D.54245);
                D.54246 = load_opcode == 403;
                D.54247 = (long int) D.54246;
                D.54248 = __builtin_expect (D.54247, 0);
                if (D.54248 != 0) goto <D.54249>; else goto <D.54250>;
                <D.54249>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13192, "load_opcode != OP_LOADV_MEMBASE");
                <D.54250>:
                D.54211 = (long unsigned int) sreg;
                D.54251 = D.54211 * 4;
                D.54252 = vreg_to_lvreg + D.54251;
                D.54253 = *D.54252;
                if (D.54253 != 0) goto <D.54254>; else goto <D.54255>;
                <D.54254>:
                D.54211 = (long unsigned int) sreg;
                D.54251 = D.54211 * 4;
                D.54252 = vreg_to_lvreg + D.54251;
                D.54253 = *D.54252;
                D.54256 = D.54253 == 4294967295;
                D.54257 = (long int) D.54256;
                D.54258 = __builtin_expect (D.54257, 0);
                if (D.54258 != 0) goto <D.54259>; else goto <D.54260>;
                <D.54259>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13195, "vreg_to_lvreg [sreg] != -1");
                <D.54260>:
                D.53918 = cfg->verbose_level;
                D.53932 = D.53918 > 2;
                D.53933 = (long int) D.53932;
                D.53934 = __builtin_expect (D.53933, 0);
                if (D.53934 != 0) goto <D.54261>; else goto <D.54262>;
                <D.54261>:
                D.54211 = (long unsigned int) sreg;
                D.54251 = D.54211 * 4;
                D.54252 = vreg_to_lvreg + D.54251;
                D.54253 = *D.54252;
                printf ("\t\tUse lvreg R%d for R%d.\n", D.54253, sreg);
                <D.54262>:
                D.54211 = (long unsigned int) sreg;
                D.54251 = D.54211 * 4;
                D.54252 = vreg_to_lvreg + D.54251;
                D.54253 = *D.54252;
                D.54263 = (int) D.54253;
                sregs[srcindex] = D.54263;
                // predicted unlikely by continue predictor.
                goto <D.28793>;
                <D.54255>:
                if (srcindex == 0) goto <D.54266>; else goto <D.54264>;
                <D.54266>:
                D.53928 = ins->opcode;
                D.53929 = (int) D.53928;
                load_opcode.507 = (int) load_opcode;
                D.54268 = op_to_op_src1_membase (load_opcode.507, D.53929);
                if (D.54268 != -1) goto <D.54269>; else goto <D.54264>;
                <D.54269>:
                D.53928 = ins->opcode;
                D.53929 = (int) D.53928;
                load_opcode.507 = (int) load_opcode;
                D.54270 = op_to_op_src1_membase (load_opcode.507, D.53929);
                D.54271 = (short unsigned int) D.54270;
                ins->opcode = D.54271;
                D.54272 = var->sreg1;
                sregs[0] = D.54272;
                D.54273 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.54273;
                goto <D.54265>;
                <D.54264>:
                if (srcindex == 1) goto <D.54276>; else goto <D.54274>;
                <D.54276>:
                D.53928 = ins->opcode;
                D.53929 = (int) D.53928;
                load_opcode.507 = (int) load_opcode;
                D.54277 = op_to_op_src2_membase (load_opcode.507, D.53929);
                if (D.54277 != -1) goto <D.54278>; else goto <D.54274>;
                <D.54278>:
                D.53928 = ins->opcode;
                D.53929 = (int) D.53928;
                load_opcode.507 = (int) load_opcode;
                D.54279 = op_to_op_src2_membase (load_opcode.507, D.53929);
                D.54280 = (short unsigned int) D.54279;
                ins->opcode = D.54280;
                D.54272 = var->sreg1;
                sregs[1] = D.54272;
                D.54273 = var->data.op[0].const_val;
                ins->data.op[0].const_val = D.54273;
                goto <D.54275>;
                <D.54274>:
                D.54284 = ins->opcode;
                D.54285 = D.54284 == 428;
                D.54286 = D.54284 == 430;
                D.54287 = D.54285 | D.54286;
                if (D.54287 != 0) goto <D.54281>; else goto <D.54288>;
                <D.54288>:
                D.53928 = ins->opcode;
                if (D.53928 == 962) goto <D.54281>; else goto <D.54282>;
                <D.54281>:
                ins->opcode = 316;
                sreg = ins->dreg;
                goto <D.54283>;
                <D.54282>:
                D.54122 = stacktypes[regtype];
                D.54289 = alloc_dreg (cfg, D.54122);
                sreg = (int) D.54289;
                D.54231 = var->flags;
                D.54290 = (int) D.54231;
                D.54291 = D.54290 & 20;
                D.54292 = D.54291 | no_lvreg;
                if (D.54292 == 0) goto <D.54293>; else goto <D.54294>;
                <D.54293>:
                D.54224 = var->dreg;
                if (D.54224 == prev_dreg) goto <D.54295>; else goto <D.54296>;
                <D.54295>:
                sreg = ins->dreg;
                <D.54296>:
                D.54197 = sreg == -1;
                D.54297 = (long int) D.54197;
                D.54298 = __builtin_expect (D.54297, 0);
                if (D.54298 != 0) goto <D.54299>; else goto <D.54300>;
                <D.54299>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13234, "sreg != -1");
                <D.54300>:
                D.54224 = var->dreg;
                D.54301 = (long unsigned int) D.54224;
                D.54302 = D.54301 * 4;
                D.54303 = vreg_to_lvreg + D.54302;
                sreg.505 = (unsigned int) sreg;
                *D.54303 = sreg.505;
                D.54304 = lvregs_len > 1023;
                D.54305 = (long int) D.54304;
                D.54306 = __builtin_expect (D.54305, 0);
                if (D.54306 != 0) goto <D.54307>; else goto <D.54308>;
                <D.54307>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13236, "lvregs_len < 1024");
                <D.54308>:
                lvregs_len.508 = lvregs_len;
                lvregs_len = lvregs_len.508 + 1;
                D.54310 = (long unsigned int) lvregs_len.508;
                D.54311 = D.54310 * 4;
                D.54312 = lvregs + D.54311;
                D.54224 = var->dreg;
                D.54313 = (unsigned int) D.54224;
                *D.54312 = D.54313;
                <D.54294>:
                <D.54283>:
                sregs[srcindex] = sreg;
                D.53916 = cfg->mempool;
                load_ins = mono_mempool_alloc (D.53916, 80);
                load_ins->data.op[1].const_val = 0;
                D.54314 = load_ins->data.op[1].const_val;
                load_ins->data.op[0].const_val = D.54314;
                load_ins->prev = 0B;
                D.54315 = load_ins->prev;
                load_ins->next = D.54315;
                D.54316 = (short unsigned int) load_opcode;
                load_ins->opcode = D.54316;
                load_ins->flags = 0;
                load_ins->type = 0;
                load_ins->dreg = -1;
                load_ins->sreg3 = -1;
                D.54317 = load_ins->sreg3;
                load_ins->sreg2 = D.54317;
                D.54318 = load_ins->sreg2;
                load_ins->sreg1 = D.54318;
                D.54000 = cfg->ip;
                load_ins->cil_code = D.54000;
                load_ins->dreg = sreg;
                D.54272 = var->sreg1;
                load_ins->sreg1 = D.54272;
                D.54273 = var->data.op[0].const_val;
                load_ins->data.op[0].const_val = D.54273;
                load_ins->type = 1;
                mono_bblock_insert_before_ins (bb, ins, load_ins);
                use_ins = load_ins;
                <D.54275>:
                <D.54265>:
                D.54224 = var->dreg;
                if (D.54224 < orig_next_vreg) goto <D.54319>; else goto <D.54320>;
                <D.54319>:
                D.54224 = var->dreg;
                D.54301 = (long unsigned int) D.54224;
                D.54321 = D.54301 * 8;
                D.54322 = live_range_end + D.54321;
                *D.54322 = use_ins;
                D.54224 = var->dreg;
                D.54301 = (long unsigned int) D.54224;
                D.54321 = D.54301 * 8;
                D.54323 = live_range_end_bb + D.54321;
                *D.54323 = bb;
                <D.54320>:
                D.53881 = BIT_FIELD_REF <*cfg, 8, 5632>;
                D.53882 = D.53881 & 128;
                if (D.53882 != 0) goto <D.54324>; else goto <D.54325>;
                <D.54324>:
                D.54224 = var->dreg;
                if (D.54224 < orig_next_vreg) goto <D.54326>; else goto <D.54327>;
                <D.54326>:
                D.54231 = var->flags;
                D.54232 = (signed char) D.54231;
                if (D.54232 < 0) goto <D.54328>; else goto <D.54329>;
                <D.54328>:
                {
                  struct MonoInst * tmp;

                  D.53916 = cfg->mempool;
                  tmp = mono_mempool_alloc (D.53916, 80);
                  tmp->data.op[1].const_val = 0;
                  D.54330 = tmp->data.op[1].const_val;
                  tmp->data.op[0].const_val = D.54330;
                  tmp->prev = 0B;
                  D.54331 = tmp->prev;
                  tmp->next = D.54331;
                  tmp->opcode = 1001;
                  tmp->flags = 0;
                  tmp->type = 0;
                  tmp->dreg = -1;
                  tmp->sreg3 = -1;
                  D.54332 = tmp->sreg3;
                  tmp->sreg2 = D.54332;
                  D.54333 = tmp->sreg2;
                  tmp->sreg1 = D.54333;
                  D.54000 = cfg->ip;
                  tmp->cil_code = D.54000;
                  D.54224 = var->dreg;
                  D.54334 = (long int) D.54224;
                  tmp->data.op[1].const_val = D.54334;
                  mono_bblock_insert_after_ins (bb, ins, tmp);
                }
                <D.54329>:
                <D.54327>:
                <D.54325>:
              }
              <D.54216>:
              <D.54210>:
              <D.54207>:
              <D.28793>:
              srcindex = srcindex + 1;
              <D.28796>:
              if (srcindex <= 2) goto <D.28795>; else goto <D.28797>;
              <D.28797>:
              mono_inst_set_src_registers (ins, &sregs);
              if (dest_has_lvreg != 0) goto <D.54335>; else goto <D.54336>;
              <D.54335>:
              D.54052 = ins->dreg;
              D.54337 = D.54052 == -1;
              D.54338 = (long int) D.54337;
              D.54339 = __builtin_expect (D.54338, 0);
              if (D.54339 != 0) goto <D.54340>; else goto <D.54341>;
              <D.54340>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13281, "ins->dreg != -1");
              <D.54341>:
              D.54342 = (long unsigned int) prev_dreg;
              D.54343 = D.54342 * 4;
              D.54344 = vreg_to_lvreg + D.54343;
              D.54052 = ins->dreg;
              D.54071 = (unsigned int) D.54052;
              *D.54344 = D.54071;
              D.54304 = lvregs_len > 1023;
              D.54305 = (long int) D.54304;
              D.54306 = __builtin_expect (D.54305, 0);
              if (D.54306 != 0) goto <D.54345>; else goto <D.54346>;
              <D.54345>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-to-ir.c", 13283, "lvregs_len < 1024");
              <D.54346>:
              lvregs_len.509 = lvregs_len;
              lvregs_len = lvregs_len.509 + 1;
              D.54348 = (long unsigned int) lvregs_len.509;
              D.54349 = D.54348 * 4;
              D.54350 = lvregs + D.54349;
              prev_dreg.510 = (unsigned int) prev_dreg;
              *D.54350 = prev_dreg.510;
              dest_has_lvreg = 0;
              <D.54336>:
              if (store != 0) goto <D.54352>; else goto <D.54353>;
              <D.54352>:
              tmp_reg = ins->dreg;
              D.54043 = ins->sreg2;
              ins->dreg = D.54043;
              ins->sreg2 = tmp_reg;
              <D.54353>:
              D.54357 = ins->opcode;
              D.54358 = D.54357 + 65193;
              D.54359 = D.54358 <= 2;
              D.54360 = D.54357 + 65187;
              D.54361 = D.54360 <= 2;
              D.54362 = D.54359 | D.54361;
              if (D.54362 != 0) goto <D.54354>; else goto <D.54363>;
              <D.54363>:
              D.53928 = ins->opcode;
              D.54364 = D.53928 + 65184;
              if (D.54364 <= 2) goto <D.54354>; else goto <D.54365>;
              <D.54365>:
              D.53928 = ins->opcode;
              D.54366 = D.53928 + 65181;
              if (D.54366 <= 2) goto <D.54354>; else goto <D.54367>;
              <D.54367>:
              D.53928 = ins->opcode;
              D.54368 = D.53928 + 65190;
              if (D.54368 <= 2) goto <D.54354>; else goto <D.54369>;
              <D.54369>:
              D.53928 = ins->opcode;
              D.54370 = D.53928 + 65178;
              if (D.54370 <= 2) goto <D.54354>; else goto <D.54371>;
              <D.54371>:
              D.53928 = ins->opcode;
              if (D.53928 == 448) goto <D.54354>; else goto <D.54355>;
              <D.54354>:
              i = 0;
              goto <D.28799>;
              <D.28798>:
              D.53886 = (long unsigned int) i;
              D.53922 = D.53886 * 4;
              D.53923 = lvregs + D.53922;
              D.53924 = *D.53923;
              D.53925 = (long unsigned int) D.53924;
              D.53926 = D.53925 * 4;
              D.53927 = vreg_to_lvreg + D.53926;
              *D.53927 = 0;
              i = i + 1;
              <D.28799>:
              if (i < lvregs_len) goto <D.28798>; else goto <D.28800>;
              <D.28800>:
              lvregs_len = 0;
              goto <D.54356>;
              <D.54355>:
              D.53928 = ins->opcode;
              if (D.53928 == 316) goto <D.54372>; else goto <D.54373>;
              <D.54372>:
              ins->dreg = -1;
              ins->sreg3 = -1;
              D.54054 = ins->sreg3;
              ins->sreg2 = D.54054;
              D.54043 = ins->sreg2;
              ins->sreg1 = D.54043;
              <D.54373>:
              <D.54356>:
              D.53918 = cfg->verbose_level;
              if (D.53918 > 2) goto <D.54374>; else goto <D.54375>;
              <D.54374>:
              mono_print_ins_index (1, ins);
              <D.54375>:
            }
          finally
            {
              sregs = {CLOBBER};
            }
        }
        <D.28766>:
        ins = ins->next;
        <D.28802>:
        if (ins != 0B) goto <D.28801>; else goto <D.28803>;
        <D.28803>:
        D.54376 = BIT_FIELD_REF <*cfg, 8, 5624>;
        D.54377 = D.54376 & 128;
        if (D.54377 != 0) goto <D.54378>; else goto <D.54379>;
        <D.54378>:
        D.54380 = bb->live_out_set;
        if (D.54380 != 0B) goto <D.54381>; else goto <D.54382>;
        <D.54381>:
        D.54383 = bb->code;
        if (D.54383 != 0B) goto <D.54384>; else goto <D.54385>;
        <D.54384>:
        i = 0;
        goto <D.28807>;
        <D.28806>:
        {
          struct MonoMethodVar * vi;

          D.54386 = cfg->vars;
          D.53886 = (long unsigned int) i;
          D.54387 = D.53886 * 80;
          vi = D.54386 + D.54387;
          D.54391 = vi->vreg;
          D.54392 = (unsigned int) D.54391;
          D.54072 = cfg->vreg_to_inst_len;
          if (D.54392 < D.54072) goto <D.54393>; else goto <D.54389>;
          <D.54393>:
          D.54075 = cfg->vreg_to_inst;
          D.54391 = vi->vreg;
          D.54394 = (long unsigned int) D.54391;
          D.54395 = D.54394 * 8;
          D.54396 = D.54075 + D.54395;
          D.54397 = *D.54396;
          if (D.54397 != 0B) goto <D.54398>; else goto <D.54389>;
          <D.54398>:
          D.54391 = vi->vreg;
          D.54392 = (unsigned int) D.54391;
          D.54072 = cfg->vreg_to_inst_len;
          if (D.54392 < D.54072) goto <D.54400>; else goto <D.54401>;
          <D.54400>:
          D.54075 = cfg->vreg_to_inst;
          D.54391 = vi->vreg;
          D.54394 = (long unsigned int) D.54391;
          D.54395 = D.54394 * 8;
          D.54396 = D.54075 + D.54395;
          iftmp.512 = *D.54396;
          goto <D.54402>;
          <D.54401>:
          iftmp.512 = 0B;
          <D.54402>:
          D.54403 = iftmp.512->flags;
          D.54404 = (int) D.54403;
          D.54405 = D.54404 & 20;
          if (D.54405 != 0) goto <D.54406>; else goto <D.54389>;
          <D.54406>:
          iftmp.511 = 1;
          goto <D.54390>;
          <D.54389>:
          iftmp.511 = 0;
          <D.54390>:
          D.54407 = iftmp.511 != 0;
          D.54408 = (long int) D.54407;
          D.54409 = __builtin_expect (D.54408, 0);
          if (D.54409 != 0) goto <D.54410>; else goto <D.54411>;
          <D.54410>:
          // predicted unlikely by continue predictor.
          goto <D.28805>;
          <D.54411>:
          D.54412 = bb->live_in_set;
          D.54413 = i / 64;
          D.54414 = (long unsigned int) D.54413;
          D.54415 = D.54412->data[D.54414];
          i.513 = (int) i;
          D.54417 = i.513 & 63;
          D.54418 = D.54415 >> D.54417;
          D.54419 = D.54418 & 1;
          if (D.54419 != 0) goto <D.54420>; else goto <D.54421>;
          <D.54420>:
          D.54391 = vi->vreg;
          D.54394 = (long unsigned int) D.54391;
          D.54395 = D.54394 * 8;
          D.54422 = live_range_start + D.54395;
          D.54423 = *D.54422;
          if (D.54423 == 0B) goto <D.54424>; else goto <D.54425>;
          <D.54424>:
          D.54391 = vi->vreg;
          D.54394 = (long unsigned int) D.54391;
          D.54395 = D.54394 * 8;
          D.54422 = live_range_start + D.54395;
          D.54383 = bb->code;
          *D.54422 = D.54383;
          D.54391 = vi->vreg;
          D.54394 = (long unsigned int) D.54391;
          D.54395 = D.54394 * 8;
          D.54426 = live_range_start_bb + D.54395;
          *D.54426 = bb;
          <D.54425>:
          <D.54421>:
          D.54380 = bb->live_out_set;
          D.54413 = i / 64;
          D.54414 = (long unsigned int) D.54413;
          D.54427 = D.54380->data[D.54414];
          i.513 = (int) i;
          D.54417 = i.513 & 63;
          D.54428 = D.54427 >> D.54417;
          D.54429 = D.54428 & 1;
          if (D.54429 != 0) goto <D.54430>; else goto <D.54431>;
          <D.54430>:
          D.54391 = vi->vreg;
          D.54394 = (long unsigned int) D.54391;
          D.54395 = D.54394 * 8;
          D.54432 = live_range_end + D.54395;
          D.54433 = bb->last_ins;
          *D.54432 = D.54433;
          D.54391 = vi->vreg;
          D.54394 = (long unsigned int) D.54391;
          D.54395 = D.54394 * 8;
          D.54434 = live_range_end_bb + D.54395;
          *D.54434 = bb;
          <D.54431>:
        }
        <D.28805>:
        i = i + 1;
        <D.28807>:
        D.53894 = cfg->num_varinfo;
        if (D.53894 > i) goto <D.28806>; else goto <D.28808>;
        <D.28808>:
        <D.54385>:
        <D.54382>:
        <D.54379>:
      }
      bb = bb->next_bb;
      <D.28810>:
      if (bb != 0B) goto <D.28809>; else goto <D.28811>;
      <D.28811>:
      D.54376 = BIT_FIELD_REF <*cfg, 8, 5624>;
      D.54377 = D.54376 & 128;
      if (D.54377 != 0) goto <D.54435>; else goto <D.54436>;
      <D.54435>:
      D.54437 = cfg->comp_done;
      D.54438 = D.54437 & 16;
      if (D.54438 != 0) goto <D.54439>; else goto <D.54440>;
      <D.54439>:
      i = 0;
      goto <D.28815>;
      <D.28814>:
      {
        int vreg;
        struct MonoInst * ins;

        D.54386 = cfg->vars;
        D.53886 = (long unsigned int) i;
        D.54387 = D.53886 * 80;
        D.54441 = D.54386 + D.54387;
        vreg = D.54441->vreg;
        D.54442 = (long unsigned int) vreg;
        D.54443 = D.54442 * 8;
        D.54444 = live_range_start + D.54443;
        D.54445 = *D.54444;
        if (D.54445 != 0B) goto <D.54446>; else goto <D.54447>;
        <D.54446>:
        D.53916 = cfg->mempool;
        ins = mono_mempool_alloc (D.53916, 80);
        ins->data.op[1].const_val = 0;
        D.54448 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.54448;
        ins->prev = 0B;
        D.54449 = ins->prev;
        ins->next = D.54449;
        ins->opcode = 998;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.54450 = ins->sreg3;
        ins->sreg2 = D.54450;
        D.54451 = ins->sreg2;
        ins->sreg1 = D.54451;
        D.54000 = cfg->ip;
        ins->cil_code = D.54000;
        D.54452 = (long int) i;
        ins->data.op[0].const_val = D.54452;
        D.54453 = (long int) vreg;
        ins->data.op[1].const_val = D.54453;
        D.54442 = (long unsigned int) vreg;
        D.54443 = D.54442 * 8;
        D.54444 = live_range_start + D.54443;
        D.54445 = *D.54444;
        D.54442 = (long unsigned int) vreg;
        D.54443 = D.54442 * 8;
        D.54454 = live_range_start_bb + D.54443;
        D.54455 = *D.54454;
        mono_bblock_insert_after_ins (D.54455, D.54445, ins);
        <D.54447>:
        D.54442 = (long unsigned int) vreg;
        D.54443 = D.54442 * 8;
        D.54456 = live_range_end + D.54443;
        D.54457 = *D.54456;
        if (D.54457 != 0B) goto <D.54458>; else goto <D.54459>;
        <D.54458>:
        D.53916 = cfg->mempool;
        ins = mono_mempool_alloc (D.53916, 80);
        ins->data.op[1].const_val = 0;
        D.54448 = ins->data.op[1].const_val;
        ins->data.op[0].const_val = D.54448;
        ins->prev = 0B;
        D.54449 = ins->prev;
        ins->next = D.54449;
        ins->opcode = 999;
        ins->flags = 0;
        ins->type = 0;
        ins->dreg = -1;
        ins->sreg3 = -1;
        D.54450 = ins->sreg3;
        ins->sreg2 = D.54450;
        D.54451 = ins->sreg2;
        ins->sreg1 = D.54451;
        D.54000 = cfg->ip;
        ins->cil_code = D.54000;
        D.54452 = (long int) i;
        ins->data.op[0].const_val = D.54452;
        D.54453 = (long int) vreg;
        ins->data.op[1].const_val = D.54453;
        D.54442 = (long unsigned int) vreg;
        D.54443 = D.54442 * 8;
        D.54456 = live_range_end + D.54443;
        D.54457 = *D.54456;
        D.54442 = (long unsigned int) vreg;
        D.54443 = D.54442 * 8;
        D.54460 = live_range_end_bb + D.54443;
        D.54461 = *D.54460;
        D.54462 = D.54461->last_ins;
        if (D.54457 == D.54462) goto <D.54463>; else goto <D.54464>;
        <D.54463>:
        D.54442 = (long unsigned int) vreg;
        D.54443 = D.54442 * 8;
        D.54460 = live_range_end_bb + D.54443;
        D.54461 = *D.54460;
        mono_add_ins_to_end (D.54461, ins);
        goto <D.54465>;
        <D.54464>:
        D.54442 = (long unsigned int) vreg;
        D.54443 = D.54442 * 8;
        D.54456 = live_range_end + D.54443;
        D.54457 = *D.54456;
        D.54442 = (long unsigned int) vreg;
        D.54443 = D.54442 * 8;
        D.54460 = live_range_end_bb + D.54443;
        D.54461 = *D.54460;
        mono_bblock_insert_after_ins (D.54461, D.54457, ins);
        <D.54465>:
        <D.54459>:
      }
      i = i + 1;
      <D.28815>:
      D.53894 = cfg->num_varinfo;
      if (D.53894 > i) goto <D.28814>; else goto <D.28816>;
      <D.28816>:
      <D.54440>:
      <D.54436>:
      D.54466 = cfg->gsharedvt_locals_var_ins;
      if (D.54466 != 0B) goto <D.54467>; else goto <D.54468>;
      <D.54467>:
      D.54466 = cfg->gsharedvt_locals_var_ins;
      D.54466->opcode = 363;
      D.54466 = cfg->gsharedvt_locals_var_ins;
      D.54466->data.op[1].const_val = 0;
      <D.54468>:
      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.54473;
  int D.54478;
  void * D.54480;
  long unsigned int D.54481;

  D.54473 = __builtin_constant_p (__len);
  if (D.54473 != 0) goto <D.54474>; else goto <D.54475>;
  <D.54474>:
  if (__len == 0) goto <D.54476>; else goto <D.54477>;
  <D.54476>:
  D.54478 = __builtin_constant_p (__ch);
  if (D.54478 == 0) goto <D.54471>; else goto <D.54479>;
  <D.54479>:
  if (__ch != 0) goto <D.54471>; else goto <D.54472>;
  <D.54471>:
  __warn_memset_zero_len ();
  D.54480 = __dest;
  return D.54480;
  <D.54472>:
  <D.54477>:
  <D.54475>:
  D.54481 = __builtin_object_size (__dest, 0);
  D.54480 = __builtin___memset_chk (__dest, __ch, __len, D.54481);
  return D.54480;
}


op_to_op_dest_membase (int store_opcode, int opcode)
{
  _Bool D.54483;
  _Bool D.54484;
  _Bool D.54485;
  int D.54490;

  D.54483 = store_opcode != 374;
  D.54484 = store_opcode != 377;
  D.54485 = D.54483 & D.54484;
  if (D.54485 != 0) goto <D.54486>; else goto <D.54487>;
  <D.54486>:
  if (store_opcode != 378) goto <D.54488>; else goto <D.54489>;
  <D.54488>:
  D.54490 = -1;
  return D.54490;
  <D.54489>:
  <D.54487>:
  switch (opcode) <default: <D.54491>, case 428: <D.28640>, case 433: <D.28630>, case 434: <D.28632>, case 440: <D.28634>, case 441: <D.28636>, case 442: <D.28638>, case 483: <D.28625>, case 484: <D.28626>, case 490: <D.28627>, case 491: <D.28628>, case 492: <D.28629>, case 542: <D.28631>, case 543: <D.28633>, case 545: <D.28635>, case 546: <D.28637>, case 547: <D.28639>, case 569: <D.28615>, case 570: <D.28616>, case 576: <D.28617>, case 577: <D.28618>, case 578: <D.28619>, case 629: <D.28620>, case 630: <D.28621>, case 636: <D.28622>, case 637: <D.28623>, case 638: <D.28624>>
  <D.28615>:
  D.54490 = 1020;
  return D.54490;
  <D.28616>:
  D.54490 = 1021;
  return D.54490;
  <D.28617>:
  D.54490 = 1022;
  return D.54490;
  <D.28618>:
  D.54490 = 1023;
  return D.54490;
  <D.28619>:
  D.54490 = 1024;
  return D.54490;
  <D.28620>:
  D.54490 = 1015;
  return D.54490;
  <D.28621>:
  D.54490 = 1016;
  return D.54490;
  <D.28622>:
  D.54490 = 1017;
  return D.54490;
  <D.28623>:
  D.54490 = 1018;
  return D.54490;
  <D.28624>:
  D.54490 = 1019;
  return D.54490;
  <D.28625>:
  D.54490 = 1055;
  return D.54490;
  <D.28626>:
  D.54490 = 1056;
  return D.54490;
  <D.28627>:
  D.54490 = 1057;
  return D.54490;
  <D.28628>:
  D.54490 = 1058;
  return D.54490;
  <D.28629>:
  D.54490 = 1059;
  return D.54490;
  <D.28630>:
  <D.28631>:
  D.54490 = 1061;
  return D.54490;
  <D.28632>:
  <D.28633>:
  D.54490 = 1062;
  return D.54490;
  <D.28634>:
  <D.28635>:
  D.54490 = 1063;
  return D.54490;
  <D.28636>:
  <D.28637>:
  D.54490 = 1064;
  return D.54490;
  <D.28638>:
  <D.28639>:
  D.54490 = 1065;
  return D.54490;
  <D.28640>:
  D.54490 = 316;
  return D.54490;
  <D.54491>:
  D.54490 = -1;
  return D.54490;
}


store_membase_reg_to_store_membase_imm (int opcode)
{
  int D.54493;

  switch (opcode) <default: <D.28535>, case 374: <D.28530>, case 375: <D.28531>, case 376: <D.28532>, case 377: <D.28533>, case 378: <D.28534>>
  <D.28530>:
  D.54493 = 384;
  return D.54493;
  <D.28531>:
  D.54493 = 385;
  return D.54493;
  <D.28532>:
  D.54493 = 386;
  return D.54493;
  <D.28533>:
  D.54493 = 387;
  return D.54493;
  <D.28534>:
  D.54493 = 388;
  return D.54493;
  <D.28535>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "method-to-ir.c", 12041);
  D.54493 = -1;
  return D.54493;
}


op_to_op_store_membase (int store_opcode, int opcode)
{
  int D.54497;

  switch (opcode) <default: <D.54500>, case 642: <D.28645>, case 770: <D.28646>>
  <D.28645>:
  if (store_opcode == 375) goto <D.54495>; else goto <D.54496>;
  <D.54495>:
  D.54497 = 1043;
  return D.54497;
  <D.54496>:
  <D.28646>:
  if (store_opcode == 375) goto <D.54498>; else goto <D.54499>;
  <D.54498>:
  D.54497 = 1044;
  return D.54497;
  <D.54499>:
  <D.54500>:
  D.54497 = -1;
  return D.54497;
}


op_to_op_src1_membase (int load_opcode, int opcode)
{
  _Bool D.54502;
  _Bool D.54503;
  _Bool D.54504;
  int D.54507;
  unsigned int load_opcode.514;
  unsigned int D.54509;

  switch (opcode) <default: <D.54516>, case 322: <D.28654>, case 325: <D.28655>, case 326: <D.28656>, case 327: <D.28653>, case 1034: <D.28651>>
  <D.28651>:
  D.54502 = load_opcode == 391;
  D.54503 = load_opcode == 398;
  D.54504 = D.54502 | D.54503;
  if (D.54504 != 0) goto <D.54505>; else goto <D.54506>;
  <D.54505>:
  D.54507 = 1032;
  return D.54507;
  <D.54506>:
  goto <D.28652>;
  <D.28653>:
  load_opcode.514 = (unsigned int) load_opcode;
  D.54509 = load_opcode.514 + 4294966900;
  if (D.54509 <= 1) goto <D.54510>; else goto <D.54511>;
  <D.54510>:
  D.54507 = 1050;
  return D.54507;
  <D.54511>:
  goto <D.28652>;
  <D.28654>:
  <D.28655>:
  D.54502 = load_opcode == 391;
  D.54503 = load_opcode == 398;
  D.54504 = D.54502 | D.54503;
  if (D.54504 != 0) goto <D.54512>; else goto <D.54513>;
  <D.54512>:
  D.54507 = 1052;
  return D.54507;
  <D.54513>:
  goto <D.28652>;
  <D.28656>:
  load_opcode.514 = (unsigned int) load_opcode;
  D.54509 = load_opcode.514 + 4294966900;
  if (D.54509 <= 1) goto <D.54514>; else goto <D.54515>;
  <D.54514>:
  D.54507 = 1049;
  return D.54507;
  <D.54515>:
  goto <D.28652>;
  <D.54516>:
  <D.28652>:
  D.54507 = -1;
  return D.54507;
}


op_to_op_src2_membase (int load_opcode, int opcode)
{
  unsigned int load_opcode.515;
  unsigned int D.54519;
  int D.54522;
  _Bool D.54525;
  _Bool D.54526;
  _Bool D.54527;

  load_opcode.515 = (unsigned int) load_opcode;
  D.54519 = load_opcode.515 + 4294966900;
  if (D.54519 <= 1) goto <D.54520>; else goto <D.54521>;
  <D.54520>:
  switch (opcode) <default: <D.54523>, case 326: <D.28661>, case 569: <D.28662>, case 570: <D.28663>, case 576: <D.28664>, case 577: <D.28665>, case 578: <D.28666>>
  <D.28661>:
  D.54522 = 1051;
  return D.54522;
  <D.28662>:
  D.54522 = 1026;
  return D.54522;
  <D.28663>:
  D.54522 = 1027;
  return D.54522;
  <D.28664>:
  D.54522 = 1029;
  return D.54522;
  <D.28665>:
  D.54522 = 1030;
  return D.54522;
  <D.28666>:
  D.54522 = 1031;
  return D.54522;
  <D.54523>:
  goto <D.54524>;
  <D.54521>:
  D.54525 = load_opcode == 398;
  D.54526 = load_opcode == 391;
  D.54527 = D.54525 | D.54526;
  if (D.54527 != 0) goto <D.54528>; else goto <D.54529>;
  <D.54528>:
  switch (opcode) <default: <D.54530>, case 322: <D.28667>, case 325: <D.28668>, case 483: <D.28669>, case 484: <D.28670>, case 490: <D.28671>, case 491: <D.28672>, case 492: <D.28673>>
  <D.28667>:
  <D.28668>:
  D.54522 = 1054;
  return D.54522;
  <D.28669>:
  D.54522 = 1067;
  return D.54522;
  <D.28670>:
  D.54522 = 1068;
  return D.54522;
  <D.28671>:
  D.54522 = 1069;
  return D.54522;
  <D.28672>:
  D.54522 = 1070;
  return D.54522;
  <D.28673>:
  D.54522 = 1071;
  return D.54522;
  <D.54530>:
  <D.54529>:
  <D.54524>:
  D.54522 = -1;
  return D.54522;
}


