mono_is_power_of_two (guint32 val)
{
  unsigned int j.0;
  unsigned int D.22396;
  unsigned int k.1;
  unsigned int D.22402;
  int D.22403;
  int i;
  int j;
  int k;

  i = 0;
  j = 1;
  k = -2;
  goto <D.22261>;
  <D.22260>:
  j.0 = (unsigned int) j;
  D.22396 = val & j.0;
  if (D.22396 != 0) goto <D.22259>; else goto <D.22397>;
  <D.22397>:
  i = i + 1;
  j = j << 1;
  k = k << 1;
  <D.22261>:
  if (i <= 31) goto <D.22260>; else goto <D.22259>;
  <D.22259>:
  if (i == 32) goto <D.22398>; else goto <D.22400>;
  <D.22400>:
  k.1 = (unsigned int) k;
  D.22402 = val & k.1;
  if (D.22402 != 0) goto <D.22398>; else goto <D.22399>;
  <D.22398>:
  D.22403 = -1;
  return D.22403;
  <D.22399>:
  D.22403 = i;
  return D.22403;
}


mono_constant_fold_ins (struct MonoCompile * cfg, struct MonoInst * ins, struct MonoInst * arg1, struct MonoInst * arg2, gboolean overwrite)
{
  short unsigned int D.22407;
  int D.22408;
  short unsigned int D.22409;
  short unsigned int D.22412;
  struct MonoMemPool * D.22417;
  long int D.22418;
  struct MonoInst * D.22419;
  int D.22420;
  int D.22421;
  const unsigned char * D.22422;
  int D.22423;
  long int D.22424;
  long int D.22425;
  long int D.22426;
  long int D.22427;
  long int D.22428;
  long int D.22429;
  long int D.22430;
  int D.22435;
  int D.22440;
  short unsigned int D.22441;
  int D.22442;
  long int D.22447;
  long int D.22448;
  long int D.22449;
  long int D.22450;
  long int D.22451;
  long int D.22452;
  long int D.22453;
  int D.22454;
  int D.22455;
  int D.22456;
  long int D.22457;
  int D.22458;
  long int D.22459;
  unsigned int D.22460;
  int D.22461;
  unsigned int D.22462;
  long int D.22463;
  long int D.22464;
  long int D.22472;
  int D.22473;
  long int D.22474;
  long int D.22475;
  int D.22476;
  unsigned int D.22477;
  long int D.22478;
  struct MonoInst * D.22488;
  int D.22491;
  long int D.22492;
  unsigned int D.22493;
  unsigned int D.22494;
  long int D.22495;
  int D.22496;
  long int D.22497;
  unsigned int D.22498;
  long int D.22499;
  int D.22509;
  long int D.22510;
  unsigned int D.22511;
  unsigned int D.22512;
  long int D.22513;
  int D.22514;
  long int D.22515;
  unsigned int D.22516;
  long int D.22517;
  long int D.22522;
  long int D.22523;
  short unsigned int D.22525;
  struct MonoInst * D.22544;
  short unsigned int D.22547;
  int D.22548;
  _Bool D.22549;
  _Bool D.22550;
  _Bool D.22551;
  _Bool D.22552;
  _Bool D.22553;
  int D.22557;
  long int D.22558;
  int D.22559;
  int D.22560;
  _Bool D.22564;
  _Bool D.22565;
  _Bool D.22566;
  _Bool D.22567;
  _Bool D.22568;
  unsigned char D.22574;
  unsigned char D.22575;
  unsigned char D.22577;
  struct MonoInst * D.22581;
  void * D.22590;
  struct MonoInst * dest;

  dest = 0B;
  if (overwrite != 0) goto <D.22405>; else goto <D.22406>;
  <D.22405>:
  dest = ins;
  <D.22406>:
  D.22407 = ins->opcode;
  D.22408 = (int) D.22407;
  switch (D.22408) <default: <D.22393>, case 322: <D.22339>, case 323: <D.22341>, case 326: <D.22340>, case 327: <D.22342>, case 428: <D.22336>, case 430: <D.22392>, case 431: <D.22337>, case 443: <D.22291>, case 569: <D.22271>, case 570: <D.22303>, case 571: <D.22270>, case 572: <D.22312>, case 573: <D.22313>, case 574: <D.22314>, case 575: <D.22315>, case 576: <D.22272>, case 577: <D.22273>, case 578: <D.22274>, case 579: <D.22304>, case 580: <D.22305>, case 581: <D.22306>, case 582: <D.22332>, case 583: <D.22331>, case 629: <D.22283>, case 630: <D.22287>, case 631: <D.22282>, case 632: <D.22321>, case 633: <D.22322>, case 634: <D.22323>, case 635: <D.22324>, case 636: <D.22284>, case 637: <D.22285>, case 638: <D.22286>, case 639: <D.22288>, case 640: <D.22289>, case 641: <D.22290>, case 962: <D.22338>>
  <D.22270>:
  <D.22271>:
  <D.22272>:
  <D.22273>:
  <D.22274>:
  D.22409 = arg2->opcode;
  if (D.22409 == 362) goto <D.22410>; else goto <D.22411>;
  <D.22410>:
  D.22412 = arg1->opcode;
  if (D.22412 == 362) goto <D.22413>; else goto <D.22414>;
  <D.22413>:
  if (dest == 0B) goto <D.22415>; else goto <D.22416>;
  <D.22415>:
  D.22417 = cfg->mempool;
  dest = mono_mempool_alloc (D.22417, 80);
  dest->data.op[1].const_val = 0;
  D.22418 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22418;
  dest->prev = 0B;
  D.22419 = dest->prev;
  dest->next = D.22419;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22422 = cfg->ip;
  dest->cil_code = D.22422;
  D.22423 = ins->dreg;
  dest->dreg = D.22423;
  <D.22416>:
  D.22407 = ins->opcode;
  D.22408 = (int) D.22407;
  switch (D.22408) <default: <D.22431>, case 569: <D.22277>, case 571: <D.22275>, case 576: <D.22278>, case 577: <D.22279>, case 578: <D.22280>>
  <D.22275>:
  D.22424 = arg1->data.op[0].const_val;
  D.22425 = arg2->data.op[0].const_val;
  D.22426 = D.22424 * D.22425;
  dest->data.op[0].const_val = D.22426;
  goto <D.22276>;
  <D.22277>:
  D.22424 = arg1->data.op[0].const_val;
  D.22425 = arg2->data.op[0].const_val;
  D.22427 = D.22424 + D.22425;
  dest->data.op[0].const_val = D.22427;
  goto <D.22276>;
  <D.22278>:
  D.22424 = arg1->data.op[0].const_val;
  D.22425 = arg2->data.op[0].const_val;
  D.22428 = D.22424 & D.22425;
  dest->data.op[0].const_val = D.22428;
  goto <D.22276>;
  <D.22279>:
  D.22424 = arg1->data.op[0].const_val;
  D.22425 = arg2->data.op[0].const_val;
  D.22429 = D.22424 | D.22425;
  dest->data.op[0].const_val = D.22429;
  goto <D.22276>;
  <D.22280>:
  D.22424 = arg1->data.op[0].const_val;
  D.22425 = arg2->data.op[0].const_val;
  D.22430 = D.22424 ^ D.22425;
  dest->data.op[0].const_val = D.22430;
  goto <D.22276>;
  <D.22431>:
  <D.22276>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  <D.22414>:
  goto <D.22432>;
  <D.22411>:
  D.22412 = arg1->opcode;
  if (D.22412 == 362) goto <D.22433>; else goto <D.22434>;
  <D.22433>:
  D.22407 = ins->opcode;
  D.22408 = (int) D.22407;
  D.22435 = mono_op_to_op_imm (D.22408);
  if (D.22435 != -1) goto <D.22436>; else goto <D.22437>;
  <D.22436>:
  if (dest == 0B) goto <D.22438>; else goto <D.22439>;
  <D.22438>:
  D.22417 = cfg->mempool;
  dest = mono_mempool_alloc (D.22417, 80);
  dest->data.op[1].const_val = 0;
  D.22418 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22418;
  dest->prev = 0B;
  D.22419 = dest->prev;
  dest->next = D.22419;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22422 = cfg->ip;
  dest->cil_code = D.22422;
  D.22423 = ins->dreg;
  dest->dreg = D.22423;
  <D.22439>:
  D.22407 = ins->opcode;
  D.22408 = (int) D.22407;
  D.22440 = mono_op_to_op_imm (D.22408);
  D.22441 = (short unsigned int) D.22440;
  dest->opcode = D.22441;
  D.22442 = ins->sreg2;
  dest->sreg1 = D.22442;
  dest->sreg2 = -1;
  D.22424 = arg1->data.op[0].const_val;
  dest->data.op[1].const_val = D.22424;
  <D.22437>:
  <D.22434>:
  <D.22432>:
  goto <D.22281>;
  <D.22282>:
  <D.22283>:
  <D.22284>:
  <D.22285>:
  <D.22286>:
  <D.22287>:
  <D.22288>:
  <D.22289>:
  <D.22290>:
  <D.22291>:
  D.22412 = arg1->opcode;
  if (D.22412 == 362) goto <D.22443>; else goto <D.22444>;
  <D.22443>:
  if (dest == 0B) goto <D.22445>; else goto <D.22446>;
  <D.22445>:
  D.22417 = cfg->mempool;
  dest = mono_mempool_alloc (D.22417, 80);
  dest->data.op[1].const_val = 0;
  D.22418 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22418;
  dest->prev = 0B;
  D.22419 = dest->prev;
  dest->next = D.22419;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22422 = cfg->ip;
  dest->cil_code = D.22422;
  D.22423 = ins->dreg;
  dest->dreg = D.22423;
  <D.22446>:
  D.22407 = ins->opcode;
  D.22408 = (int) D.22407;
  switch (D.22408) <default: <D.22465>, case 443: <D.22302>, case 629: <D.22294>, case 630: <D.22298>, case 631: <D.22292>, case 636: <D.22295>, case 637: <D.22296>, case 638: <D.22297>, case 639: <D.22299>, case 640: <D.22300>, case 641: <D.22301>>
  <D.22292>:
  D.22424 = arg1->data.op[0].const_val;
  D.22447 = ins->data.op[1].const_val;
  D.22448 = D.22424 * D.22447;
  dest->data.op[0].const_val = D.22448;
  goto <D.22293>;
  <D.22294>:
  D.22424 = arg1->data.op[0].const_val;
  D.22447 = ins->data.op[1].const_val;
  D.22449 = D.22424 + D.22447;
  dest->data.op[0].const_val = D.22449;
  goto <D.22293>;
  <D.22295>:
  D.22424 = arg1->data.op[0].const_val;
  D.22447 = ins->data.op[1].const_val;
  D.22450 = D.22424 & D.22447;
  dest->data.op[0].const_val = D.22450;
  goto <D.22293>;
  <D.22296>:
  D.22424 = arg1->data.op[0].const_val;
  D.22447 = ins->data.op[1].const_val;
  D.22451 = D.22424 | D.22447;
  dest->data.op[0].const_val = D.22451;
  goto <D.22293>;
  <D.22297>:
  D.22424 = arg1->data.op[0].const_val;
  D.22447 = ins->data.op[1].const_val;
  D.22452 = D.22424 ^ D.22447;
  dest->data.op[0].const_val = D.22452;
  goto <D.22293>;
  <D.22298>:
  D.22424 = arg1->data.op[0].const_val;
  D.22447 = ins->data.op[1].const_val;
  D.22453 = D.22424 - D.22447;
  dest->data.op[0].const_val = D.22453;
  goto <D.22293>;
  <D.22299>:
  D.22424 = arg1->data.op[0].const_val;
  D.22454 = (int) D.22424;
  D.22447 = ins->data.op[1].const_val;
  D.22455 = (int) D.22447;
  D.22456 = D.22454 << D.22455;
  D.22457 = (long int) D.22456;
  dest->data.op[0].const_val = D.22457;
  goto <D.22293>;
  <D.22300>:
  D.22424 = arg1->data.op[0].const_val;
  D.22454 = (int) D.22424;
  D.22447 = ins->data.op[1].const_val;
  D.22455 = (int) D.22447;
  D.22458 = D.22454 >> D.22455;
  D.22459 = (long int) D.22458;
  dest->data.op[0].const_val = D.22459;
  goto <D.22293>;
  <D.22301>:
  D.22424 = arg1->data.op[0].const_val;
  D.22460 = (unsigned int) D.22424;
  D.22447 = ins->data.op[1].const_val;
  D.22461 = (int) D.22447;
  D.22462 = D.22460 >> D.22461;
  D.22463 = (long int) D.22462;
  dest->data.op[0].const_val = D.22463;
  goto <D.22293>;
  <D.22302>:
  D.22424 = arg1->data.op[0].const_val;
  D.22447 = ins->data.op[1].const_val;
  D.22455 = (int) D.22447;
  D.22464 = D.22424 << D.22455;
  dest->data.op[0].const_val = D.22464;
  goto <D.22293>;
  <D.22465>:
  <D.22293>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  <D.22444>:
  goto <D.22281>;
  <D.22303>:
  <D.22304>:
  <D.22305>:
  <D.22306>:
  D.22412 = arg1->opcode;
  if (D.22412 == 362) goto <D.22466>; else goto <D.22467>;
  <D.22466>:
  D.22409 = arg2->opcode;
  if (D.22409 == 362) goto <D.22468>; else goto <D.22469>;
  <D.22468>:
  if (dest == 0B) goto <D.22470>; else goto <D.22471>;
  <D.22470>:
  D.22417 = cfg->mempool;
  dest = mono_mempool_alloc (D.22417, 80);
  dest->data.op[1].const_val = 0;
  D.22418 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22418;
  dest->prev = 0B;
  D.22419 = dest->prev;
  dest->next = D.22419;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22422 = cfg->ip;
  dest->cil_code = D.22422;
  D.22423 = ins->dreg;
  dest->dreg = D.22423;
  <D.22471>:
  D.22407 = ins->opcode;
  D.22408 = (int) D.22407;
  switch (D.22408) <default: <D.22479>, case 570: <D.22307>, case 579: <D.22309>, case 580: <D.22310>, case 581: <D.22311>>
  <D.22307>:
  D.22424 = arg1->data.op[0].const_val;
  D.22425 = arg2->data.op[0].const_val;
  D.22472 = D.22424 - D.22425;
  dest->data.op[0].const_val = D.22472;
  goto <D.22308>;
  <D.22309>:
  D.22424 = arg1->data.op[0].const_val;
  D.22425 = arg2->data.op[0].const_val;
  D.22473 = (int) D.22425;
  D.22474 = D.22424 << D.22473;
  dest->data.op[0].const_val = D.22474;
  goto <D.22308>;
  <D.22310>:
  D.22424 = arg1->data.op[0].const_val;
  D.22425 = arg2->data.op[0].const_val;
  D.22473 = (int) D.22425;
  D.22475 = D.22424 >> D.22473;
  dest->data.op[0].const_val = D.22475;
  goto <D.22308>;
  <D.22311>:
  D.22424 = arg1->data.op[0].const_val;
  D.22460 = (unsigned int) D.22424;
  D.22425 = arg2->data.op[0].const_val;
  D.22476 = (int) D.22425;
  D.22477 = D.22460 >> D.22476;
  D.22478 = (long int) D.22477;
  dest->data.op[0].const_val = D.22478;
  goto <D.22308>;
  <D.22479>:
  <D.22308>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  <D.22469>:
  <D.22467>:
  goto <D.22281>;
  <D.22312>:
  <D.22313>:
  <D.22314>:
  <D.22315>:
  D.22412 = arg1->opcode;
  if (D.22412 == 362) goto <D.22480>; else goto <D.22481>;
  <D.22480>:
  D.22409 = arg2->opcode;
  if (D.22409 == 362) goto <D.22482>; else goto <D.22483>;
  <D.22482>:
  D.22425 = arg2->data.op[0].const_val;
  if (D.22425 == 0) goto <D.22484>; else goto <D.22486>;
  <D.22486>:
  D.22424 = arg1->data.op[0].const_val;
  if (D.22424 == -2147483648) goto <D.22487>; else goto <D.22485>;
  <D.22487>:
  D.22425 = arg2->data.op[0].const_val;
  if (D.22425 == -1) goto <D.22484>; else goto <D.22485>;
  <D.22484>:
  D.22488 = 0B;
  return D.22488;
  <D.22485>:
  if (dest == 0B) goto <D.22489>; else goto <D.22490>;
  <D.22489>:
  D.22417 = cfg->mempool;
  dest = mono_mempool_alloc (D.22417, 80);
  dest->data.op[1].const_val = 0;
  D.22418 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22418;
  dest->prev = 0B;
  D.22419 = dest->prev;
  dest->next = D.22419;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22422 = cfg->ip;
  dest->cil_code = D.22422;
  D.22423 = ins->dreg;
  dest->dreg = D.22423;
  <D.22490>:
  D.22407 = ins->opcode;
  D.22408 = (int) D.22407;
  switch (D.22408) <default: <D.22500>, case 572: <D.22316>, case 573: <D.22318>, case 574: <D.22319>, case 575: <D.22320>>
  <D.22316>:
  D.22424 = arg1->data.op[0].const_val;
  D.22454 = (int) D.22424;
  D.22425 = arg2->data.op[0].const_val;
  D.22473 = (int) D.22425;
  D.22491 = D.22454 / D.22473;
  D.22492 = (long int) D.22491;
  dest->data.op[0].const_val = D.22492;
  goto <D.22317>;
  <D.22318>:
  D.22424 = arg1->data.op[0].const_val;
  D.22460 = (unsigned int) D.22424;
  D.22425 = arg2->data.op[0].const_val;
  D.22493 = (unsigned int) D.22425;
  D.22494 = D.22460 / D.22493;
  D.22495 = (long int) D.22494;
  dest->data.op[0].const_val = D.22495;
  goto <D.22317>;
  <D.22319>:
  D.22424 = arg1->data.op[0].const_val;
  D.22454 = (int) D.22424;
  D.22425 = arg2->data.op[0].const_val;
  D.22473 = (int) D.22425;
  D.22496 = D.22454 % D.22473;
  D.22497 = (long int) D.22496;
  dest->data.op[0].const_val = D.22497;
  goto <D.22317>;
  <D.22320>:
  D.22424 = arg1->data.op[0].const_val;
  D.22460 = (unsigned int) D.22424;
  D.22425 = arg2->data.op[0].const_val;
  D.22493 = (unsigned int) D.22425;
  D.22498 = D.22460 % D.22493;
  D.22499 = (long int) D.22498;
  dest->data.op[0].const_val = D.22499;
  goto <D.22317>;
  <D.22500>:
  <D.22317>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  <D.22483>:
  <D.22481>:
  goto <D.22281>;
  <D.22321>:
  <D.22322>:
  <D.22323>:
  <D.22324>:
  D.22412 = arg1->opcode;
  if (D.22412 == 362) goto <D.22501>; else goto <D.22502>;
  <D.22501>:
  D.22447 = ins->data.op[1].const_val;
  if (D.22447 == 0) goto <D.22503>; else goto <D.22505>;
  <D.22505>:
  D.22424 = arg1->data.op[0].const_val;
  if (D.22424 == -2147483648) goto <D.22506>; else goto <D.22504>;
  <D.22506>:
  D.22447 = ins->data.op[1].const_val;
  if (D.22447 == -1) goto <D.22503>; else goto <D.22504>;
  <D.22503>:
  D.22488 = 0B;
  return D.22488;
  <D.22504>:
  if (dest == 0B) goto <D.22507>; else goto <D.22508>;
  <D.22507>:
  D.22417 = cfg->mempool;
  dest = mono_mempool_alloc (D.22417, 80);
  dest->data.op[1].const_val = 0;
  D.22418 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22418;
  dest->prev = 0B;
  D.22419 = dest->prev;
  dest->next = D.22419;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22422 = cfg->ip;
  dest->cil_code = D.22422;
  D.22423 = ins->dreg;
  dest->dreg = D.22423;
  <D.22508>:
  D.22407 = ins->opcode;
  D.22408 = (int) D.22407;
  switch (D.22408) <default: <D.22330>, case 632: <D.22325>, case 633: <D.22327>, case 634: <D.22328>, case 635: <D.22329>>
  <D.22325>:
  D.22424 = arg1->data.op[0].const_val;
  D.22454 = (int) D.22424;
  D.22447 = ins->data.op[1].const_val;
  D.22455 = (int) D.22447;
  D.22509 = D.22454 / D.22455;
  D.22510 = (long int) D.22509;
  dest->data.op[0].const_val = D.22510;
  goto <D.22326>;
  <D.22327>:
  D.22424 = arg1->data.op[0].const_val;
  D.22460 = (unsigned int) D.22424;
  D.22447 = ins->data.op[1].const_val;
  D.22511 = (unsigned int) D.22447;
  D.22512 = D.22460 / D.22511;
  D.22513 = (long int) D.22512;
  dest->data.op[0].const_val = D.22513;
  goto <D.22326>;
  <D.22328>:
  D.22424 = arg1->data.op[0].const_val;
  D.22454 = (int) D.22424;
  D.22447 = ins->data.op[1].const_val;
  D.22455 = (int) D.22447;
  D.22514 = D.22454 % D.22455;
  D.22515 = (long int) D.22514;
  dest->data.op[0].const_val = D.22515;
  goto <D.22326>;
  <D.22329>:
  D.22424 = arg1->data.op[0].const_val;
  D.22460 = (unsigned int) D.22424;
  D.22447 = ins->data.op[1].const_val;
  D.22511 = (unsigned int) D.22447;
  D.22516 = D.22460 % D.22511;
  D.22517 = (long int) D.22516;
  dest->data.op[0].const_val = D.22517;
  goto <D.22326>;
  <D.22330>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "cfold.c", 199);
  <D.22326>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  <D.22502>:
  goto <D.22281>;
  <D.22331>:
  <D.22332>:
  D.22412 = arg1->opcode;
  if (D.22412 == 362) goto <D.22518>; else goto <D.22519>;
  <D.22518>:
  if (dest == 0B) goto <D.22520>; else goto <D.22521>;
  <D.22520>:
  D.22417 = cfg->mempool;
  dest = mono_mempool_alloc (D.22417, 80);
  dest->data.op[1].const_val = 0;
  D.22418 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22418;
  dest->prev = 0B;
  D.22419 = dest->prev;
  dest->next = D.22419;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22422 = cfg->ip;
  dest->cil_code = D.22422;
  D.22423 = ins->dreg;
  dest->dreg = D.22423;
  <D.22521>:
  D.22407 = ins->opcode;
  D.22408 = (int) D.22407;
  switch (D.22408) <default: <D.22524>, case 582: <D.22333>, case 583: <D.22335>>
  <D.22333>:
  D.22424 = arg1->data.op[0].const_val;
  D.22522 = -D.22424;
  dest->data.op[0].const_val = D.22522;
  goto <D.22334>;
  <D.22335>:
  D.22424 = arg1->data.op[0].const_val;
  D.22523 = ~D.22424;
  dest->data.op[0].const_val = D.22523;
  goto <D.22334>;
  <D.22524>:
  <D.22334>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  <D.22519>:
  goto <D.22281>;
  <D.22336>:
  D.22412 = arg1->opcode;
  D.22525 = D.22412 + 65174;
  if (D.22525 <= 1) goto <D.22526>; else goto <D.22527>;
  <D.22526>:
  if (dest == 0B) goto <D.22528>; else goto <D.22529>;
  <D.22528>:
  D.22417 = cfg->mempool;
  dest = mono_mempool_alloc (D.22417, 80);
  dest->data.op[1].const_val = 0;
  D.22418 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22418;
  dest->prev = 0B;
  D.22419 = dest->prev;
  dest->next = D.22419;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22422 = cfg->ip;
  dest->cil_code = D.22422;
  D.22423 = ins->dreg;
  dest->dreg = D.22423;
  <D.22529>:
  D.22412 = arg1->opcode;
  dest->opcode = D.22412;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22424 = arg1->data.op[0].const_val;
  dest->data.op[0].const_val = D.22424;
  <D.22527>:
  goto <D.22281>;
  <D.22337>:
  D.22412 = arg1->opcode;
  if (D.22412 == 432) goto <D.22530>; else goto <D.22531>;
  <D.22530>:
  if (dest == 0B) goto <D.22532>; else goto <D.22533>;
  <D.22532>:
  D.22417 = cfg->mempool;
  dest = mono_mempool_alloc (D.22417, 80);
  dest->data.op[1].const_val = 0;
  D.22418 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22418;
  dest->prev = 0B;
  D.22419 = dest->prev;
  dest->next = D.22419;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22422 = cfg->ip;
  dest->cil_code = D.22422;
  D.22423 = ins->dreg;
  dest->dreg = D.22423;
  <D.22533>:
  dest->opcode = 432;
  dest->sreg1 = -1;
  <D.22531>:
  goto <D.22281>;
  <D.22338>:
  D.22412 = arg1->opcode;
  if (D.22412 == 963) goto <D.22534>; else goto <D.22535>;
  <D.22534>:
  if (dest == 0B) goto <D.22536>; else goto <D.22537>;
  <D.22536>:
  D.22417 = cfg->mempool;
  dest = mono_mempool_alloc (D.22417, 80);
  dest->data.op[1].const_val = 0;
  D.22418 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22418;
  dest->prev = 0B;
  D.22419 = dest->prev;
  dest->next = D.22419;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22422 = cfg->ip;
  dest->cil_code = D.22422;
  D.22423 = ins->dreg;
  dest->dreg = D.22423;
  <D.22537>:
  dest->opcode = 963;
  dest->sreg1 = -1;
  <D.22535>:
  goto <D.22281>;
  <D.22339>:
  <D.22340>:
  <D.22341>:
  <D.22342>:
  {
    struct MonoInst dummy_arg2;

    try
      {
        D.22442 = ins->sreg2;
        if (D.22442 == -1) goto <D.22538>; else goto <D.22539>;
        <D.22538>:
        arg2 = &dummy_arg2;
        arg2->opcode = 362;
        D.22447 = ins->data.op[1].const_val;
        arg2->data.op[0].const_val = D.22447;
        <D.22539>:
        D.22412 = arg1->opcode;
        if (D.22412 == 362) goto <D.22540>; else goto <D.22541>;
        <D.22540>:
        D.22409 = arg2->opcode;
        if (D.22409 == 362) goto <D.22542>; else goto <D.22543>;
        <D.22542>:
        D.22544 = ins->next;
        if (D.22544 != 0B) goto <D.22545>; else goto <D.22546>;
        <D.22545>:
        {
          struct MonoInst * next;
          gboolean res;

          next = ins->next;
          res = 0;
          D.22547 = next->opcode;
          D.22548 = (int) D.22547;
          switch (D.22548) <default: <D.22391>, case 316: <D.22389>, case 446: <D.22390>, case 450: <D.22346>, case 451: <D.22348>, case 452: <D.22350>, case 453: <D.22352>, case 454: <D.22354>, case 642: <D.22347>, case 643: <D.22349>, case 644: <D.22351>, case 645: <D.22353>, case 646: <D.22355>, case 652: <D.22368>, case 653: <D.22372>, case 654: <D.22370>, case 655: <D.22376>, case 656: <D.22374>, case 657: <D.22369>, case 658: <D.22373>, case 659: <D.22371>, case 660: <D.22377>, case 661: <D.22375>>
          <D.22346>:
          <D.22347>:
          <D.22348>:
          <D.22349>:
          <D.22350>:
          <D.22351>:
          <D.22352>:
          <D.22353>:
          <D.22354>:
          <D.22355>:
          D.22547 = next->opcode;
          D.22548 = (int) D.22547;
          switch (D.22548) <default: <D.22554>, case 450: <D.22356>, case 451: <D.22359>, case 452: <D.22361>, case 453: <D.22363>, case 454: <D.22365>, case 642: <D.22358>, case 643: <D.22360>, case 644: <D.22362>, case 645: <D.22364>, case 646: <D.22366>>
          <D.22356>:
          D.22424 = arg1->data.op[0].const_val;
          D.22454 = (int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22473 = (int) D.22425;
          D.22549 = D.22454 == D.22473;
          res = (gboolean) D.22549;
          goto <D.22357>;
          <D.22358>:
          D.22424 = arg1->data.op[0].const_val;
          D.22454 = (int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22473 = (int) D.22425;
          D.22549 = D.22454 == D.22473;
          res = (gboolean) D.22549;
          goto <D.22357>;
          <D.22359>:
          D.22424 = arg1->data.op[0].const_val;
          D.22454 = (int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22473 = (int) D.22425;
          D.22550 = D.22454 > D.22473;
          res = (gboolean) D.22550;
          goto <D.22357>;
          <D.22360>:
          D.22424 = arg1->data.op[0].const_val;
          D.22454 = (int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22473 = (int) D.22425;
          D.22550 = D.22454 > D.22473;
          res = (gboolean) D.22550;
          goto <D.22357>;
          <D.22361>:
          D.22424 = arg1->data.op[0].const_val;
          D.22460 = (unsigned int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22493 = (unsigned int) D.22425;
          D.22551 = D.22460 > D.22493;
          res = (gboolean) D.22551;
          goto <D.22357>;
          <D.22362>:
          D.22424 = arg1->data.op[0].const_val;
          D.22460 = (unsigned int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22493 = (unsigned int) D.22425;
          D.22551 = D.22460 > D.22493;
          res = (gboolean) D.22551;
          goto <D.22357>;
          <D.22363>:
          D.22424 = arg1->data.op[0].const_val;
          D.22454 = (int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22473 = (int) D.22425;
          D.22552 = D.22454 < D.22473;
          res = (gboolean) D.22552;
          goto <D.22357>;
          <D.22364>:
          D.22424 = arg1->data.op[0].const_val;
          D.22454 = (int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22473 = (int) D.22425;
          D.22552 = D.22454 < D.22473;
          res = (gboolean) D.22552;
          goto <D.22357>;
          <D.22365>:
          D.22424 = arg1->data.op[0].const_val;
          D.22460 = (unsigned int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22493 = (unsigned int) D.22425;
          D.22553 = D.22460 < D.22493;
          res = (gboolean) D.22553;
          goto <D.22357>;
          <D.22366>:
          D.22424 = arg1->data.op[0].const_val;
          D.22460 = (unsigned int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22493 = (unsigned int) D.22425;
          D.22553 = D.22460 < D.22493;
          res = (gboolean) D.22553;
          goto <D.22357>;
          <D.22554>:
          <D.22357>:
          if (overwrite != 0) goto <D.22555>; else goto <D.22556>;
          <D.22555>:
          ins->opcode = 316;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.22557 = ins->sreg3;
          ins->sreg2 = D.22557;
          D.22442 = ins->sreg2;
          ins->sreg1 = D.22442;
          next->opcode = 362;
          D.22558 = (long int) res;
          next->data.op[0].const_val = D.22558;
          next->sreg3 = -1;
          D.22559 = next->sreg3;
          next->sreg2 = D.22559;
          D.22560 = next->sreg2;
          next->sreg1 = D.22560;
          goto <D.22561>;
          <D.22556>:
          if (dest == 0B) goto <D.22562>; else goto <D.22563>;
          <D.22562>:
          D.22417 = cfg->mempool;
          dest = mono_mempool_alloc (D.22417, 80);
          dest->data.op[1].const_val = 0;
          D.22418 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.22418;
          dest->prev = 0B;
          D.22419 = dest->prev;
          dest->next = D.22419;
          dest->opcode = 65535;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.22420 = dest->sreg3;
          dest->sreg2 = D.22420;
          D.22421 = dest->sreg2;
          dest->sreg1 = D.22421;
          D.22422 = cfg->ip;
          dest->cil_code = D.22422;
          D.22423 = ins->dreg;
          dest->dreg = D.22423;
          <D.22563>:
          dest->opcode = 362;
          D.22558 = (long int) res;
          dest->data.op[0].const_val = D.22558;
          <D.22561>:
          goto <D.22367>;
          <D.22368>:
          <D.22369>:
          <D.22370>:
          <D.22371>:
          <D.22372>:
          <D.22373>:
          <D.22374>:
          <D.22375>:
          <D.22376>:
          <D.22377>:
          D.22547 = next->opcode;
          D.22548 = (int) D.22547;
          switch (D.22548) <default: <D.22569>, case 652: <D.22378>, case 653: <D.22383>, case 654: <D.22381>, case 655: <D.22387>, case 656: <D.22385>, case 657: <D.22380>, case 658: <D.22384>, case 659: <D.22382>, case 660: <D.22388>, case 661: <D.22386>>
          <D.22378>:
          D.22424 = arg1->data.op[0].const_val;
          D.22454 = (int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22473 = (int) D.22425;
          D.22549 = D.22454 == D.22473;
          res = (gboolean) D.22549;
          goto <D.22379>;
          <D.22380>:
          D.22424 = arg1->data.op[0].const_val;
          D.22460 = (unsigned int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22493 = (unsigned int) D.22425;
          D.22564 = D.22460 != D.22493;
          res = (gboolean) D.22564;
          goto <D.22379>;
          <D.22381>:
          D.22424 = arg1->data.op[0].const_val;
          D.22454 = (int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22473 = (int) D.22425;
          D.22550 = D.22454 > D.22473;
          res = (gboolean) D.22550;
          goto <D.22379>;
          <D.22382>:
          D.22424 = arg1->data.op[0].const_val;
          D.22460 = (unsigned int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22493 = (unsigned int) D.22425;
          D.22551 = D.22460 > D.22493;
          res = (gboolean) D.22551;
          goto <D.22379>;
          <D.22383>:
          D.22424 = arg1->data.op[0].const_val;
          D.22454 = (int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22473 = (int) D.22425;
          D.22565 = D.22454 >= D.22473;
          res = (gboolean) D.22565;
          goto <D.22379>;
          <D.22384>:
          D.22424 = arg1->data.op[0].const_val;
          D.22460 = (unsigned int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22493 = (unsigned int) D.22425;
          D.22566 = D.22460 >= D.22493;
          res = (gboolean) D.22566;
          goto <D.22379>;
          <D.22385>:
          D.22424 = arg1->data.op[0].const_val;
          D.22454 = (int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22473 = (int) D.22425;
          D.22552 = D.22454 < D.22473;
          res = (gboolean) D.22552;
          goto <D.22379>;
          <D.22386>:
          D.22424 = arg1->data.op[0].const_val;
          D.22460 = (unsigned int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22493 = (unsigned int) D.22425;
          D.22553 = D.22460 < D.22493;
          res = (gboolean) D.22553;
          goto <D.22379>;
          <D.22387>:
          D.22424 = arg1->data.op[0].const_val;
          D.22454 = (int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22473 = (int) D.22425;
          D.22567 = D.22454 <= D.22473;
          res = (gboolean) D.22567;
          goto <D.22379>;
          <D.22388>:
          D.22424 = arg1->data.op[0].const_val;
          D.22460 = (unsigned int) D.22424;
          D.22425 = arg2->data.op[0].const_val;
          D.22493 = (unsigned int) D.22425;
          D.22568 = D.22460 <= D.22493;
          res = (gboolean) D.22568;
          goto <D.22379>;
          <D.22569>:
          <D.22379>:
          if (overwrite != 0) goto <D.22570>; else goto <D.22571>;
          <D.22570>:
          if (res != 0) goto <D.22572>; else goto <D.22573>;
          <D.22572>:
          D.22574 = next->flags;
          D.22575 = D.22574 | 8;
          next->flags = D.22575;
          goto <D.22576>;
          <D.22573>:
          D.22574 = next->flags;
          D.22577 = D.22574 | 16;
          next->flags = D.22577;
          <D.22576>:
          goto <D.22578>;
          <D.22571>:
          if (dest == 0B) goto <D.22579>; else goto <D.22580>;
          <D.22579>:
          D.22417 = cfg->mempool;
          dest = mono_mempool_alloc (D.22417, 80);
          dest->data.op[1].const_val = 0;
          D.22418 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.22418;
          dest->prev = 0B;
          D.22419 = dest->prev;
          dest->next = D.22419;
          dest->opcode = 65535;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.22420 = dest->sreg3;
          dest->sreg2 = D.22420;
          D.22421 = dest->sreg2;
          dest->sreg1 = D.22421;
          D.22422 = cfg->ip;
          dest->cil_code = D.22422;
          D.22423 = ins->dreg;
          dest->dreg = D.22423;
          <D.22580>:
          dest->opcode = 362;
          D.22558 = (long int) res;
          dest->data.op[0].const_val = D.22558;
          <D.22578>:
          goto <D.22367>;
          <D.22389>:
          <D.22390>:
          D.22581 = next->next;
          if (D.22581 == 0B) goto <D.22582>; else goto <D.22583>;
          <D.22582>:
          if (overwrite != 0) goto <D.22584>; else goto <D.22585>;
          <D.22584>:
          ins->opcode = 316;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.22557 = ins->sreg3;
          ins->sreg2 = D.22557;
          D.22442 = ins->sreg2;
          ins->sreg1 = D.22442;
          <D.22585>:
          <D.22583>:
          goto <D.22367>;
          <D.22391>:
          D.22488 = 0B;
          return D.22488;
          <D.22367>:
        }
        <D.22546>:
        <D.22543>:
        <D.22541>:
        goto <D.22281>;
      }
    finally
      {
        dummy_arg2 = {CLOBBER};
      }
  }
  <D.22392>:
  D.22412 = arg1->opcode;
  if (D.22412 == 365) goto <D.22586>; else goto <D.22587>;
  <D.22586>:
  if (dest == 0B) goto <D.22588>; else goto <D.22589>;
  <D.22588>:
  D.22417 = cfg->mempool;
  dest = mono_mempool_alloc (D.22417, 80);
  dest->data.op[1].const_val = 0;
  D.22418 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22418;
  dest->prev = 0B;
  D.22419 = dest->prev;
  dest->next = D.22419;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22420 = dest->sreg3;
  dest->sreg2 = D.22420;
  D.22421 = dest->sreg2;
  dest->sreg1 = D.22421;
  D.22422 = cfg->ip;
  dest->cil_code = D.22422;
  D.22423 = ins->dreg;
  dest->dreg = D.22423;
  <D.22589>:
  dest->opcode = 365;
  dest->sreg1 = -1;
  D.22590 = arg1->data.op[0].p;
  dest->data.op[0].p = D.22590;
  <D.22587>:
  goto <D.22281>;
  <D.22393>:
  D.22488 = 0B;
  return D.22488;
  <D.22281>:
  D.22488 = dest;
  return D.22488;
}


