mono_is_power_of_two (guint32 val)
{
  unsigned int j.0;
  unsigned int D.21959;
  unsigned int k.1;
  unsigned int D.21965;
  int D.21966;
  int i;
  int j;
  int k;

  i = 0;
  j = 1;
  k = -2;
  goto <D.21824>;
  <D.21823>:
  j.0 = (unsigned int) j;
  D.21959 = val & j.0;
  if (D.21959 != 0) goto <D.21822>; else goto <D.21960>;
  <D.21960>:
  i = i + 1;
  j = j << 1;
  k = k << 1;
  <D.21824>:
  if (i <= 31) goto <D.21823>; else goto <D.21822>;
  <D.21822>:
  if (i == 32) goto <D.21961>; else goto <D.21963>;
  <D.21963>:
  k.1 = (unsigned int) k;
  D.21965 = val & k.1;
  if (D.21965 != 0) goto <D.21961>; else goto <D.21962>;
  <D.21961>:
  D.21966 = -1;
  return D.21966;
  <D.21962>:
  D.21966 = i;
  return D.21966;
}


mono_constant_fold_ins (struct MonoCompile * cfg, struct MonoInst * ins, struct MonoInst * arg1, struct MonoInst * arg2, gboolean overwrite)
{
  short unsigned int D.21970;
  int D.21971;
  short unsigned int D.21972;
  short unsigned int D.21975;
  struct MonoMemPool * D.21980;
  int D.21981;
  struct MonoInst * D.21982;
  int D.21983;
  int D.21984;
  const unsigned char * D.21985;
  int D.21986;
  int D.21987;
  int D.21988;
  int D.21989;
  int D.21990;
  int D.21991;
  int D.21992;
  int D.21993;
  int D.21998;
  int D.22003;
  short unsigned int D.22004;
  int D.22005;
  int D.22010;
  int D.22011;
  int D.22012;
  int D.22013;
  int D.22014;
  int D.22015;
  int D.22016;
  int D.22017;
  int D.22018;
  unsigned int D.22019;
  unsigned int D.22020;
  int D.22021;
  int D.22029;
  int D.22030;
  int D.22031;
  unsigned int D.22032;
  int D.22033;
  struct MonoInst * D.22043;
  int D.22046;
  unsigned int D.22047;
  unsigned int D.22048;
  int D.22049;
  int D.22050;
  unsigned int D.22051;
  int D.22052;
  int D.22062;
  unsigned int D.22063;
  unsigned int D.22064;
  int D.22065;
  int D.22066;
  unsigned int D.22067;
  int D.22068;
  int D.22075;
  int D.22076;
  struct MonoInst * D.22096;
  short unsigned int D.22099;
  int D.22100;
  _Bool D.22101;
  _Bool D.22102;
  _Bool D.22103;
  _Bool D.22104;
  _Bool D.22105;
  int D.22109;
  int D.22110;
  int D.22111;
  _Bool D.22115;
  _Bool D.22116;
  _Bool D.22117;
  _Bool D.22118;
  _Bool D.22119;
  unsigned char D.22125;
  unsigned char D.22126;
  unsigned char D.22128;
  struct MonoInst * D.22132;
  void * D.22141;
  struct MonoInst * dest;

  dest = 0B;
  if (overwrite != 0) goto <D.21968>; else goto <D.21969>;
  <D.21968>:
  dest = ins;
  <D.21969>:
  D.21970 = ins->opcode;
  D.21971 = (int) D.21970;
  switch (D.21971) <default: <D.21956>, case 322: <D.21902>, case 323: <D.21904>, case 326: <D.21903>, case 327: <D.21905>, case 428: <D.21899>, case 430: <D.21955>, case 431: <D.21900>, case 443: <D.21854>, case 569: <D.21834>, case 570: <D.21866>, case 571: <D.21833>, case 572: <D.21875>, case 573: <D.21876>, case 574: <D.21877>, case 575: <D.21878>, case 576: <D.21835>, case 577: <D.21836>, case 578: <D.21837>, case 579: <D.21867>, case 580: <D.21868>, case 581: <D.21869>, case 582: <D.21895>, case 583: <D.21894>, case 629: <D.21846>, case 630: <D.21850>, case 631: <D.21845>, case 632: <D.21884>, case 633: <D.21885>, case 634: <D.21886>, case 635: <D.21887>, case 636: <D.21847>, case 637: <D.21848>, case 638: <D.21849>, case 639: <D.21851>, case 640: <D.21852>, case 641: <D.21853>, case 962: <D.21901>>
  <D.21833>:
  <D.21834>:
  <D.21835>:
  <D.21836>:
  <D.21837>:
  D.21972 = arg2->opcode;
  if (D.21972 == 362) goto <D.21973>; else goto <D.21974>;
  <D.21973>:
  D.21975 = arg1->opcode;
  if (D.21975 == 362) goto <D.21976>; else goto <D.21977>;
  <D.21976>:
  if (dest == 0B) goto <D.21978>; else goto <D.21979>;
  <D.21978>:
  D.21980 = cfg->mempool;
  dest = mono_mempool_alloc (D.21980, 48);
  dest->data.op[1].const_val = 0;
  D.21981 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.21981;
  dest->prev = 0B;
  D.21982 = dest->prev;
  dest->next = D.21982;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21985 = cfg->ip;
  dest->cil_code = D.21985;
  D.21986 = ins->dreg;
  dest->dreg = D.21986;
  <D.21979>:
  D.21970 = ins->opcode;
  D.21971 = (int) D.21970;
  switch (D.21971) <default: <D.21994>, case 569: <D.21840>, case 571: <D.21838>, case 576: <D.21841>, case 577: <D.21842>, case 578: <D.21843>>
  <D.21838>:
  D.21987 = arg1->data.op[0].const_val;
  D.21988 = arg2->data.op[0].const_val;
  D.21989 = D.21987 * D.21988;
  dest->data.op[0].const_val = D.21989;
  goto <D.21839>;
  <D.21840>:
  D.21987 = arg1->data.op[0].const_val;
  D.21988 = arg2->data.op[0].const_val;
  D.21990 = D.21987 + D.21988;
  dest->data.op[0].const_val = D.21990;
  goto <D.21839>;
  <D.21841>:
  D.21987 = arg1->data.op[0].const_val;
  D.21988 = arg2->data.op[0].const_val;
  D.21991 = D.21987 & D.21988;
  dest->data.op[0].const_val = D.21991;
  goto <D.21839>;
  <D.21842>:
  D.21987 = arg1->data.op[0].const_val;
  D.21988 = arg2->data.op[0].const_val;
  D.21992 = D.21987 | D.21988;
  dest->data.op[0].const_val = D.21992;
  goto <D.21839>;
  <D.21843>:
  D.21987 = arg1->data.op[0].const_val;
  D.21988 = arg2->data.op[0].const_val;
  D.21993 = D.21987 ^ D.21988;
  dest->data.op[0].const_val = D.21993;
  goto <D.21839>;
  <D.21994>:
  <D.21839>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  <D.21977>:
  goto <D.21995>;
  <D.21974>:
  D.21975 = arg1->opcode;
  if (D.21975 == 362) goto <D.21996>; else goto <D.21997>;
  <D.21996>:
  D.21970 = ins->opcode;
  D.21971 = (int) D.21970;
  D.21998 = mono_op_to_op_imm (D.21971);
  if (D.21998 != -1) goto <D.21999>; else goto <D.22000>;
  <D.21999>:
  if (dest == 0B) goto <D.22001>; else goto <D.22002>;
  <D.22001>:
  D.21980 = cfg->mempool;
  dest = mono_mempool_alloc (D.21980, 48);
  dest->data.op[1].const_val = 0;
  D.21981 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.21981;
  dest->prev = 0B;
  D.21982 = dest->prev;
  dest->next = D.21982;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21985 = cfg->ip;
  dest->cil_code = D.21985;
  D.21986 = ins->dreg;
  dest->dreg = D.21986;
  <D.22002>:
  D.21970 = ins->opcode;
  D.21971 = (int) D.21970;
  D.22003 = mono_op_to_op_imm (D.21971);
  D.22004 = (short unsigned int) D.22003;
  dest->opcode = D.22004;
  D.22005 = ins->sreg2;
  dest->sreg1 = D.22005;
  dest->sreg2 = -1;
  D.21987 = arg1->data.op[0].const_val;
  dest->data.op[1].const_val = D.21987;
  <D.22000>:
  <D.21997>:
  <D.21995>:
  goto <D.21844>;
  <D.21845>:
  <D.21846>:
  <D.21847>:
  <D.21848>:
  <D.21849>:
  <D.21850>:
  <D.21851>:
  <D.21852>:
  <D.21853>:
  <D.21854>:
  D.21975 = arg1->opcode;
  if (D.21975 == 362) goto <D.22006>; else goto <D.22007>;
  <D.22006>:
  if (dest == 0B) goto <D.22008>; else goto <D.22009>;
  <D.22008>:
  D.21980 = cfg->mempool;
  dest = mono_mempool_alloc (D.21980, 48);
  dest->data.op[1].const_val = 0;
  D.21981 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.21981;
  dest->prev = 0B;
  D.21982 = dest->prev;
  dest->next = D.21982;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21985 = cfg->ip;
  dest->cil_code = D.21985;
  D.21986 = ins->dreg;
  dest->dreg = D.21986;
  <D.22009>:
  D.21970 = ins->opcode;
  D.21971 = (int) D.21970;
  switch (D.21971) <default: <D.22022>, case 443: <D.21865>, case 629: <D.21857>, case 630: <D.21861>, case 631: <D.21855>, case 636: <D.21858>, case 637: <D.21859>, case 638: <D.21860>, case 639: <D.21862>, case 640: <D.21863>, case 641: <D.21864>>
  <D.21855>:
  D.21987 = arg1->data.op[0].const_val;
  D.22010 = ins->data.op[1].const_val;
  D.22011 = D.21987 * D.22010;
  dest->data.op[0].const_val = D.22011;
  goto <D.21856>;
  <D.21857>:
  D.21987 = arg1->data.op[0].const_val;
  D.22010 = ins->data.op[1].const_val;
  D.22012 = D.21987 + D.22010;
  dest->data.op[0].const_val = D.22012;
  goto <D.21856>;
  <D.21858>:
  D.21987 = arg1->data.op[0].const_val;
  D.22010 = ins->data.op[1].const_val;
  D.22013 = D.21987 & D.22010;
  dest->data.op[0].const_val = D.22013;
  goto <D.21856>;
  <D.21859>:
  D.21987 = arg1->data.op[0].const_val;
  D.22010 = ins->data.op[1].const_val;
  D.22014 = D.21987 | D.22010;
  dest->data.op[0].const_val = D.22014;
  goto <D.21856>;
  <D.21860>:
  D.21987 = arg1->data.op[0].const_val;
  D.22010 = ins->data.op[1].const_val;
  D.22015 = D.21987 ^ D.22010;
  dest->data.op[0].const_val = D.22015;
  goto <D.21856>;
  <D.21861>:
  D.21987 = arg1->data.op[0].const_val;
  D.22010 = ins->data.op[1].const_val;
  D.22016 = D.21987 - D.22010;
  dest->data.op[0].const_val = D.22016;
  goto <D.21856>;
  <D.21862>:
  D.21987 = arg1->data.op[0].const_val;
  D.22010 = ins->data.op[1].const_val;
  D.22017 = D.21987 << D.22010;
  dest->data.op[0].const_val = D.22017;
  goto <D.21856>;
  <D.21863>:
  D.21987 = arg1->data.op[0].const_val;
  D.22010 = ins->data.op[1].const_val;
  D.22018 = D.21987 >> D.22010;
  dest->data.op[0].const_val = D.22018;
  goto <D.21856>;
  <D.21864>:
  D.21987 = arg1->data.op[0].const_val;
  D.22019 = (unsigned int) D.21987;
  D.22010 = ins->data.op[1].const_val;
  D.22020 = D.22019 >> D.22010;
  D.22021 = (int) D.22020;
  dest->data.op[0].const_val = D.22021;
  goto <D.21856>;
  <D.21865>:
  D.21987 = arg1->data.op[0].const_val;
  D.22010 = ins->data.op[1].const_val;
  D.22017 = D.21987 << D.22010;
  dest->data.op[0].const_val = D.22017;
  goto <D.21856>;
  <D.22022>:
  <D.21856>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  <D.22007>:
  goto <D.21844>;
  <D.21866>:
  <D.21867>:
  <D.21868>:
  <D.21869>:
  D.21975 = arg1->opcode;
  if (D.21975 == 362) goto <D.22023>; else goto <D.22024>;
  <D.22023>:
  D.21972 = arg2->opcode;
  if (D.21972 == 362) goto <D.22025>; else goto <D.22026>;
  <D.22025>:
  if (dest == 0B) goto <D.22027>; else goto <D.22028>;
  <D.22027>:
  D.21980 = cfg->mempool;
  dest = mono_mempool_alloc (D.21980, 48);
  dest->data.op[1].const_val = 0;
  D.21981 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.21981;
  dest->prev = 0B;
  D.21982 = dest->prev;
  dest->next = D.21982;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21985 = cfg->ip;
  dest->cil_code = D.21985;
  D.21986 = ins->dreg;
  dest->dreg = D.21986;
  <D.22028>:
  D.21970 = ins->opcode;
  D.21971 = (int) D.21970;
  switch (D.21971) <default: <D.22034>, case 570: <D.21870>, case 579: <D.21872>, case 580: <D.21873>, case 581: <D.21874>>
  <D.21870>:
  D.21987 = arg1->data.op[0].const_val;
  D.21988 = arg2->data.op[0].const_val;
  D.22029 = D.21987 - D.21988;
  dest->data.op[0].const_val = D.22029;
  goto <D.21871>;
  <D.21872>:
  D.21987 = arg1->data.op[0].const_val;
  D.21988 = arg2->data.op[0].const_val;
  D.22030 = D.21987 << D.21988;
  dest->data.op[0].const_val = D.22030;
  goto <D.21871>;
  <D.21873>:
  D.21987 = arg1->data.op[0].const_val;
  D.21988 = arg2->data.op[0].const_val;
  D.22031 = D.21987 >> D.21988;
  dest->data.op[0].const_val = D.22031;
  goto <D.21871>;
  <D.21874>:
  D.21987 = arg1->data.op[0].const_val;
  D.22019 = (unsigned int) D.21987;
  D.21988 = arg2->data.op[0].const_val;
  D.22032 = D.22019 >> D.21988;
  D.22033 = (int) D.22032;
  dest->data.op[0].const_val = D.22033;
  goto <D.21871>;
  <D.22034>:
  <D.21871>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  <D.22026>:
  <D.22024>:
  goto <D.21844>;
  <D.21875>:
  <D.21876>:
  <D.21877>:
  <D.21878>:
  D.21975 = arg1->opcode;
  if (D.21975 == 362) goto <D.22035>; else goto <D.22036>;
  <D.22035>:
  D.21972 = arg2->opcode;
  if (D.21972 == 362) goto <D.22037>; else goto <D.22038>;
  <D.22037>:
  D.21988 = arg2->data.op[0].const_val;
  if (D.21988 == 0) goto <D.22039>; else goto <D.22041>;
  <D.22041>:
  D.21987 = arg1->data.op[0].const_val;
  if (D.21987 == -2147483648) goto <D.22042>; else goto <D.22040>;
  <D.22042>:
  D.21988 = arg2->data.op[0].const_val;
  if (D.21988 == -1) goto <D.22039>; else goto <D.22040>;
  <D.22039>:
  D.22043 = 0B;
  return D.22043;
  <D.22040>:
  if (dest == 0B) goto <D.22044>; else goto <D.22045>;
  <D.22044>:
  D.21980 = cfg->mempool;
  dest = mono_mempool_alloc (D.21980, 48);
  dest->data.op[1].const_val = 0;
  D.21981 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.21981;
  dest->prev = 0B;
  D.21982 = dest->prev;
  dest->next = D.21982;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21985 = cfg->ip;
  dest->cil_code = D.21985;
  D.21986 = ins->dreg;
  dest->dreg = D.21986;
  <D.22045>:
  D.21970 = ins->opcode;
  D.21971 = (int) D.21970;
  switch (D.21971) <default: <D.22053>, case 572: <D.21879>, case 573: <D.21881>, case 574: <D.21882>, case 575: <D.21883>>
  <D.21879>:
  D.21987 = arg1->data.op[0].const_val;
  D.21988 = arg2->data.op[0].const_val;
  D.22046 = D.21987 / D.21988;
  dest->data.op[0].const_val = D.22046;
  goto <D.21880>;
  <D.21881>:
  D.21987 = arg1->data.op[0].const_val;
  D.22019 = (unsigned int) D.21987;
  D.21988 = arg2->data.op[0].const_val;
  D.22047 = (unsigned int) D.21988;
  D.22048 = D.22019 / D.22047;
  D.22049 = (int) D.22048;
  dest->data.op[0].const_val = D.22049;
  goto <D.21880>;
  <D.21882>:
  D.21987 = arg1->data.op[0].const_val;
  D.21988 = arg2->data.op[0].const_val;
  D.22050 = D.21987 % D.21988;
  dest->data.op[0].const_val = D.22050;
  goto <D.21880>;
  <D.21883>:
  D.21987 = arg1->data.op[0].const_val;
  D.22019 = (unsigned int) D.21987;
  D.21988 = arg2->data.op[0].const_val;
  D.22047 = (unsigned int) D.21988;
  D.22051 = D.22019 % D.22047;
  D.22052 = (int) D.22051;
  dest->data.op[0].const_val = D.22052;
  goto <D.21880>;
  <D.22053>:
  <D.21880>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  <D.22038>:
  <D.22036>:
  goto <D.21844>;
  <D.21884>:
  <D.21885>:
  <D.21886>:
  <D.21887>:
  D.21975 = arg1->opcode;
  if (D.21975 == 362) goto <D.22054>; else goto <D.22055>;
  <D.22054>:
  D.22010 = ins->data.op[1].const_val;
  if (D.22010 == 0) goto <D.22056>; else goto <D.22058>;
  <D.22058>:
  D.21987 = arg1->data.op[0].const_val;
  if (D.21987 == -2147483648) goto <D.22059>; else goto <D.22057>;
  <D.22059>:
  D.22010 = ins->data.op[1].const_val;
  if (D.22010 == -1) goto <D.22056>; else goto <D.22057>;
  <D.22056>:
  D.22043 = 0B;
  return D.22043;
  <D.22057>:
  if (dest == 0B) goto <D.22060>; else goto <D.22061>;
  <D.22060>:
  D.21980 = cfg->mempool;
  dest = mono_mempool_alloc (D.21980, 48);
  dest->data.op[1].const_val = 0;
  D.21981 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.21981;
  dest->prev = 0B;
  D.21982 = dest->prev;
  dest->next = D.21982;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21985 = cfg->ip;
  dest->cil_code = D.21985;
  D.21986 = ins->dreg;
  dest->dreg = D.21986;
  <D.22061>:
  D.21970 = ins->opcode;
  D.21971 = (int) D.21970;
  switch (D.21971) <default: <D.21893>, case 632: <D.21888>, case 633: <D.21890>, case 634: <D.21891>, case 635: <D.21892>>
  <D.21888>:
  D.21987 = arg1->data.op[0].const_val;
  D.22010 = ins->data.op[1].const_val;
  D.22062 = D.21987 / D.22010;
  dest->data.op[0].const_val = D.22062;
  goto <D.21889>;
  <D.21890>:
  D.21987 = arg1->data.op[0].const_val;
  D.22019 = (unsigned int) D.21987;
  D.22010 = ins->data.op[1].const_val;
  D.22063 = (unsigned int) D.22010;
  D.22064 = D.22019 / D.22063;
  D.22065 = (int) D.22064;
  dest->data.op[0].const_val = D.22065;
  goto <D.21889>;
  <D.21891>:
  D.21987 = arg1->data.op[0].const_val;
  D.22010 = ins->data.op[1].const_val;
  D.22066 = D.21987 % D.22010;
  dest->data.op[0].const_val = D.22066;
  goto <D.21889>;
  <D.21892>:
  D.21987 = arg1->data.op[0].const_val;
  D.22019 = (unsigned int) D.21987;
  D.22010 = ins->data.op[1].const_val;
  D.22063 = (unsigned int) D.22010;
  D.22067 = D.22019 % D.22063;
  D.22068 = (int) D.22067;
  dest->data.op[0].const_val = D.22068;
  goto <D.21889>;
  <D.21893>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "cfold.c", 199);
  <D.21889>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  <D.22055>:
  goto <D.21844>;
  <D.21894>:
  <D.21895>:
  D.21975 = arg1->opcode;
  if (D.21975 == 362) goto <D.22069>; else goto <D.22070>;
  <D.22069>:
  D.21970 = ins->opcode;
  if (D.21970 == 582) goto <D.22071>; else goto <D.22072>;
  <D.22071>:
  D.22043 = 0B;
  return D.22043;
  <D.22072>:
  if (dest == 0B) goto <D.22073>; else goto <D.22074>;
  <D.22073>:
  D.21980 = cfg->mempool;
  dest = mono_mempool_alloc (D.21980, 48);
  dest->data.op[1].const_val = 0;
  D.21981 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.21981;
  dest->prev = 0B;
  D.21982 = dest->prev;
  dest->next = D.21982;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21985 = cfg->ip;
  dest->cil_code = D.21985;
  D.21986 = ins->dreg;
  dest->dreg = D.21986;
  <D.22074>:
  D.21970 = ins->opcode;
  D.21971 = (int) D.21970;
  switch (D.21971) <default: <D.22077>, case 582: <D.21896>, case 583: <D.21898>>
  <D.21896>:
  D.21987 = arg1->data.op[0].const_val;
  D.22075 = -D.21987;
  dest->data.op[0].const_val = D.22075;
  goto <D.21897>;
  <D.21898>:
  D.21987 = arg1->data.op[0].const_val;
  D.22076 = ~D.21987;
  dest->data.op[0].const_val = D.22076;
  goto <D.21897>;
  <D.22077>:
  <D.21897>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  <D.22070>:
  goto <D.21844>;
  <D.21899>:
  D.21975 = arg1->opcode;
  if (D.21975 == 362) goto <D.22078>; else goto <D.22079>;
  <D.22078>:
  if (dest == 0B) goto <D.22080>; else goto <D.22081>;
  <D.22080>:
  D.21980 = cfg->mempool;
  dest = mono_mempool_alloc (D.21980, 48);
  dest->data.op[1].const_val = 0;
  D.21981 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.21981;
  dest->prev = 0B;
  D.21982 = dest->prev;
  dest->next = D.21982;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21985 = cfg->ip;
  dest->cil_code = D.21985;
  D.21986 = ins->dreg;
  dest->dreg = D.21986;
  <D.22081>:
  D.21975 = arg1->opcode;
  dest->opcode = D.21975;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21987 = arg1->data.op[0].const_val;
  dest->data.op[0].const_val = D.21987;
  <D.22079>:
  goto <D.21844>;
  <D.21900>:
  D.21975 = arg1->opcode;
  if (D.21975 == 432) goto <D.22082>; else goto <D.22083>;
  <D.22082>:
  if (dest == 0B) goto <D.22084>; else goto <D.22085>;
  <D.22084>:
  D.21980 = cfg->mempool;
  dest = mono_mempool_alloc (D.21980, 48);
  dest->data.op[1].const_val = 0;
  D.21981 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.21981;
  dest->prev = 0B;
  D.21982 = dest->prev;
  dest->next = D.21982;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21985 = cfg->ip;
  dest->cil_code = D.21985;
  D.21986 = ins->dreg;
  dest->dreg = D.21986;
  <D.22085>:
  dest->opcode = 432;
  dest->sreg1 = -1;
  <D.22083>:
  goto <D.21844>;
  <D.21901>:
  D.21975 = arg1->opcode;
  if (D.21975 == 963) goto <D.22086>; else goto <D.22087>;
  <D.22086>:
  if (dest == 0B) goto <D.22088>; else goto <D.22089>;
  <D.22088>:
  D.21980 = cfg->mempool;
  dest = mono_mempool_alloc (D.21980, 48);
  dest->data.op[1].const_val = 0;
  D.21981 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.21981;
  dest->prev = 0B;
  D.21982 = dest->prev;
  dest->next = D.21982;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21985 = cfg->ip;
  dest->cil_code = D.21985;
  D.21986 = ins->dreg;
  dest->dreg = D.21986;
  <D.22089>:
  dest->opcode = 963;
  dest->sreg1 = -1;
  <D.22087>:
  goto <D.21844>;
  <D.21902>:
  <D.21903>:
  <D.21904>:
  <D.21905>:
  {
    struct MonoInst dummy_arg2;

    try
      {
        D.22005 = ins->sreg2;
        if (D.22005 == -1) goto <D.22090>; else goto <D.22091>;
        <D.22090>:
        arg2 = &dummy_arg2;
        arg2->opcode = 362;
        D.22010 = ins->data.op[1].const_val;
        arg2->data.op[0].const_val = D.22010;
        <D.22091>:
        D.21975 = arg1->opcode;
        if (D.21975 == 362) goto <D.22092>; else goto <D.22093>;
        <D.22092>:
        D.21972 = arg2->opcode;
        if (D.21972 == 362) goto <D.22094>; else goto <D.22095>;
        <D.22094>:
        D.22096 = ins->next;
        if (D.22096 != 0B) goto <D.22097>; else goto <D.22098>;
        <D.22097>:
        {
          struct MonoInst * next;
          gboolean res;

          next = ins->next;
          res = 0;
          D.22099 = next->opcode;
          D.22100 = (int) D.22099;
          switch (D.22100) <default: <D.21954>, case 316: <D.21952>, case 446: <D.21953>, case 450: <D.21909>, case 451: <D.21911>, case 452: <D.21913>, case 453: <D.21915>, case 454: <D.21917>, case 642: <D.21910>, case 643: <D.21912>, case 644: <D.21914>, case 645: <D.21916>, case 646: <D.21918>, case 652: <D.21931>, case 653: <D.21935>, case 654: <D.21933>, case 655: <D.21939>, case 656: <D.21937>, case 657: <D.21932>, case 658: <D.21936>, case 659: <D.21934>, case 660: <D.21940>, case 661: <D.21938>>
          <D.21909>:
          <D.21910>:
          <D.21911>:
          <D.21912>:
          <D.21913>:
          <D.21914>:
          <D.21915>:
          <D.21916>:
          <D.21917>:
          <D.21918>:
          D.22099 = next->opcode;
          D.22100 = (int) D.22099;
          switch (D.22100) <default: <D.22106>, case 450: <D.21919>, case 451: <D.21922>, case 452: <D.21924>, case 453: <D.21926>, case 454: <D.21928>, case 642: <D.21921>, case 643: <D.21923>, case 644: <D.21925>, case 645: <D.21927>, case 646: <D.21929>>
          <D.21919>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22101 = D.21987 == D.21988;
          res = (gboolean) D.22101;
          goto <D.21920>;
          <D.21921>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22101 = D.21987 == D.21988;
          res = (gboolean) D.22101;
          goto <D.21920>;
          <D.21922>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22102 = D.21987 > D.21988;
          res = (gboolean) D.22102;
          goto <D.21920>;
          <D.21923>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22102 = D.21987 > D.21988;
          res = (gboolean) D.22102;
          goto <D.21920>;
          <D.21924>:
          D.21987 = arg1->data.op[0].const_val;
          D.22019 = (unsigned int) D.21987;
          D.21988 = arg2->data.op[0].const_val;
          D.22047 = (unsigned int) D.21988;
          D.22103 = D.22019 > D.22047;
          res = (gboolean) D.22103;
          goto <D.21920>;
          <D.21925>:
          D.21987 = arg1->data.op[0].const_val;
          D.22019 = (unsigned int) D.21987;
          D.21988 = arg2->data.op[0].const_val;
          D.22047 = (unsigned int) D.21988;
          D.22103 = D.22019 > D.22047;
          res = (gboolean) D.22103;
          goto <D.21920>;
          <D.21926>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22104 = D.21987 < D.21988;
          res = (gboolean) D.22104;
          goto <D.21920>;
          <D.21927>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22104 = D.21987 < D.21988;
          res = (gboolean) D.22104;
          goto <D.21920>;
          <D.21928>:
          D.21987 = arg1->data.op[0].const_val;
          D.22019 = (unsigned int) D.21987;
          D.21988 = arg2->data.op[0].const_val;
          D.22047 = (unsigned int) D.21988;
          D.22105 = D.22019 < D.22047;
          res = (gboolean) D.22105;
          goto <D.21920>;
          <D.21929>:
          D.21987 = arg1->data.op[0].const_val;
          D.22019 = (unsigned int) D.21987;
          D.21988 = arg2->data.op[0].const_val;
          D.22047 = (unsigned int) D.21988;
          D.22105 = D.22019 < D.22047;
          res = (gboolean) D.22105;
          goto <D.21920>;
          <D.22106>:
          <D.21920>:
          if (overwrite != 0) goto <D.22107>; else goto <D.22108>;
          <D.22107>:
          ins->opcode = 316;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.22109 = ins->sreg3;
          ins->sreg2 = D.22109;
          D.22005 = ins->sreg2;
          ins->sreg1 = D.22005;
          next->opcode = 362;
          next->data.op[0].const_val = res;
          next->sreg3 = -1;
          D.22110 = next->sreg3;
          next->sreg2 = D.22110;
          D.22111 = next->sreg2;
          next->sreg1 = D.22111;
          goto <D.22112>;
          <D.22108>:
          if (dest == 0B) goto <D.22113>; else goto <D.22114>;
          <D.22113>:
          D.21980 = cfg->mempool;
          dest = mono_mempool_alloc (D.21980, 48);
          dest->data.op[1].const_val = 0;
          D.21981 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.21981;
          dest->prev = 0B;
          D.21982 = dest->prev;
          dest->next = D.21982;
          dest->opcode = 65535;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.21983 = dest->sreg3;
          dest->sreg2 = D.21983;
          D.21984 = dest->sreg2;
          dest->sreg1 = D.21984;
          D.21985 = cfg->ip;
          dest->cil_code = D.21985;
          D.21986 = ins->dreg;
          dest->dreg = D.21986;
          <D.22114>:
          dest->opcode = 362;
          dest->data.op[0].const_val = res;
          <D.22112>:
          goto <D.21930>;
          <D.21931>:
          <D.21932>:
          <D.21933>:
          <D.21934>:
          <D.21935>:
          <D.21936>:
          <D.21937>:
          <D.21938>:
          <D.21939>:
          <D.21940>:
          D.22099 = next->opcode;
          D.22100 = (int) D.22099;
          switch (D.22100) <default: <D.22120>, case 652: <D.21941>, case 653: <D.21946>, case 654: <D.21944>, case 655: <D.21950>, case 656: <D.21948>, case 657: <D.21943>, case 658: <D.21947>, case 659: <D.21945>, case 660: <D.21951>, case 661: <D.21949>>
          <D.21941>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22101 = D.21987 == D.21988;
          res = (gboolean) D.22101;
          goto <D.21942>;
          <D.21943>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22115 = D.21987 != D.21988;
          res = (gboolean) D.22115;
          goto <D.21942>;
          <D.21944>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22102 = D.21987 > D.21988;
          res = (gboolean) D.22102;
          goto <D.21942>;
          <D.21945>:
          D.21987 = arg1->data.op[0].const_val;
          D.22019 = (unsigned int) D.21987;
          D.21988 = arg2->data.op[0].const_val;
          D.22047 = (unsigned int) D.21988;
          D.22103 = D.22019 > D.22047;
          res = (gboolean) D.22103;
          goto <D.21942>;
          <D.21946>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22116 = D.21987 >= D.21988;
          res = (gboolean) D.22116;
          goto <D.21942>;
          <D.21947>:
          D.21987 = arg1->data.op[0].const_val;
          D.22019 = (unsigned int) D.21987;
          D.21988 = arg2->data.op[0].const_val;
          D.22047 = (unsigned int) D.21988;
          D.22117 = D.22019 >= D.22047;
          res = (gboolean) D.22117;
          goto <D.21942>;
          <D.21948>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22104 = D.21987 < D.21988;
          res = (gboolean) D.22104;
          goto <D.21942>;
          <D.21949>:
          D.21987 = arg1->data.op[0].const_val;
          D.22019 = (unsigned int) D.21987;
          D.21988 = arg2->data.op[0].const_val;
          D.22047 = (unsigned int) D.21988;
          D.22105 = D.22019 < D.22047;
          res = (gboolean) D.22105;
          goto <D.21942>;
          <D.21950>:
          D.21987 = arg1->data.op[0].const_val;
          D.21988 = arg2->data.op[0].const_val;
          D.22118 = D.21987 <= D.21988;
          res = (gboolean) D.22118;
          goto <D.21942>;
          <D.21951>:
          D.21987 = arg1->data.op[0].const_val;
          D.22019 = (unsigned int) D.21987;
          D.21988 = arg2->data.op[0].const_val;
          D.22047 = (unsigned int) D.21988;
          D.22119 = D.22019 <= D.22047;
          res = (gboolean) D.22119;
          goto <D.21942>;
          <D.22120>:
          <D.21942>:
          if (overwrite != 0) goto <D.22121>; else goto <D.22122>;
          <D.22121>:
          if (res != 0) goto <D.22123>; else goto <D.22124>;
          <D.22123>:
          D.22125 = next->flags;
          D.22126 = D.22125 | 8;
          next->flags = D.22126;
          goto <D.22127>;
          <D.22124>:
          D.22125 = next->flags;
          D.22128 = D.22125 | 16;
          next->flags = D.22128;
          <D.22127>:
          goto <D.22129>;
          <D.22122>:
          if (dest == 0B) goto <D.22130>; else goto <D.22131>;
          <D.22130>:
          D.21980 = cfg->mempool;
          dest = mono_mempool_alloc (D.21980, 48);
          dest->data.op[1].const_val = 0;
          D.21981 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.21981;
          dest->prev = 0B;
          D.21982 = dest->prev;
          dest->next = D.21982;
          dest->opcode = 65535;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.21983 = dest->sreg3;
          dest->sreg2 = D.21983;
          D.21984 = dest->sreg2;
          dest->sreg1 = D.21984;
          D.21985 = cfg->ip;
          dest->cil_code = D.21985;
          D.21986 = ins->dreg;
          dest->dreg = D.21986;
          <D.22131>:
          dest->opcode = 362;
          dest->data.op[0].const_val = res;
          <D.22129>:
          goto <D.21930>;
          <D.21952>:
          <D.21953>:
          D.22132 = next->next;
          if (D.22132 == 0B) goto <D.22133>; else goto <D.22134>;
          <D.22133>:
          if (overwrite != 0) goto <D.22135>; else goto <D.22136>;
          <D.22135>:
          ins->opcode = 316;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.22109 = ins->sreg3;
          ins->sreg2 = D.22109;
          D.22005 = ins->sreg2;
          ins->sreg1 = D.22005;
          <D.22136>:
          <D.22134>:
          goto <D.21930>;
          <D.21954>:
          D.22043 = 0B;
          return D.22043;
          <D.21930>:
        }
        <D.22098>:
        <D.22095>:
        <D.22093>:
        goto <D.21844>;
      }
    finally
      {
        dummy_arg2 = {CLOBBER};
      }
  }
  <D.21955>:
  D.21975 = arg1->opcode;
  if (D.21975 == 365) goto <D.22137>; else goto <D.22138>;
  <D.22137>:
  if (dest == 0B) goto <D.22139>; else goto <D.22140>;
  <D.22139>:
  D.21980 = cfg->mempool;
  dest = mono_mempool_alloc (D.21980, 48);
  dest->data.op[1].const_val = 0;
  D.21981 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.21981;
  dest->prev = 0B;
  D.21982 = dest->prev;
  dest->next = D.21982;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.21983 = dest->sreg3;
  dest->sreg2 = D.21983;
  D.21984 = dest->sreg2;
  dest->sreg1 = D.21984;
  D.21985 = cfg->ip;
  dest->cil_code = D.21985;
  D.21986 = ins->dreg;
  dest->dreg = D.21986;
  <D.22140>:
  dest->opcode = 365;
  dest->sreg1 = -1;
  D.22141 = arg1->data.op[0].p;
  dest->data.op[0].p = D.22141;
  <D.22138>:
  goto <D.21844>;
  <D.21956>:
  D.22043 = 0B;
  return D.22043;
  <D.21844>:
  D.22043 = dest;
  return D.22043;
}


