mono_is_power_of_two (guint32 val)
{
  unsigned int j.0;
  unsigned int D.22486;
  unsigned int k.1;
  unsigned int D.22492;
  int D.22493;
  int i;
  int j;
  int k;

  i = 0;
  j = 1;
  k = -2;
  goto <D.22351>;
  <D.22350>:
  j.0 = (unsigned int) j;
  D.22486 = val & j.0;
  if (D.22486 != 0) goto <D.22349>; else goto <D.22487>;
  <D.22487>:
  i = i + 1;
  j = j << 1;
  k = k << 1;
  <D.22351>:
  if (i <= 31) goto <D.22350>; else goto <D.22349>;
  <D.22349>:
  if (i == 32) goto <D.22488>; else goto <D.22490>;
  <D.22490>:
  k.1 = (unsigned int) k;
  D.22492 = val & k.1;
  if (D.22492 != 0) goto <D.22488>; else goto <D.22489>;
  <D.22488>:
  D.22493 = -1;
  return D.22493;
  <D.22489>:
  D.22493 = i;
  return D.22493;
}


mono_constant_fold_ins (struct MonoCompile * cfg, struct MonoInst * ins, struct MonoInst * arg1, struct MonoInst * arg2, gboolean overwrite)
{
  short unsigned int D.22497;
  int D.22498;
  short unsigned int D.22499;
  short unsigned int D.22502;
  struct MonoMemPool * D.22507;
  long int D.22508;
  struct MonoInst * D.22509;
  int D.22510;
  int D.22511;
  const unsigned char * D.22512;
  int D.22513;
  long int D.22514;
  long int D.22515;
  long int D.22516;
  long int D.22517;
  long int D.22518;
  long int D.22519;
  long int D.22520;
  int D.22525;
  int D.22530;
  short unsigned int D.22531;
  int D.22532;
  long int D.22537;
  long int D.22538;
  long int D.22539;
  long int D.22540;
  long int D.22541;
  long int D.22542;
  long int D.22543;
  int D.22544;
  int D.22545;
  int D.22546;
  long int D.22547;
  int D.22548;
  long int D.22549;
  unsigned int D.22550;
  int D.22551;
  unsigned int D.22552;
  long int D.22553;
  long int D.22554;
  long int D.22562;
  int D.22563;
  long int D.22564;
  long int D.22565;
  int D.22566;
  unsigned int D.22567;
  long int D.22568;
  struct MonoInst * D.22578;
  int D.22581;
  long int D.22582;
  unsigned int D.22583;
  unsigned int D.22584;
  long int D.22585;
  int D.22586;
  long int D.22587;
  unsigned int D.22588;
  long int D.22589;
  int D.22599;
  long int D.22600;
  unsigned int D.22601;
  unsigned int D.22602;
  long int D.22603;
  int D.22604;
  long int D.22605;
  unsigned int D.22606;
  long int D.22607;
  long int D.22612;
  long int D.22613;
  short unsigned int D.22615;
  struct MonoInst * D.22634;
  short unsigned int D.22637;
  int D.22638;
  _Bool D.22639;
  _Bool D.22640;
  _Bool D.22641;
  _Bool D.22642;
  _Bool D.22643;
  int D.22647;
  long int D.22648;
  int D.22649;
  int D.22650;
  _Bool D.22654;
  _Bool D.22655;
  _Bool D.22656;
  _Bool D.22657;
  _Bool D.22658;
  unsigned char D.22664;
  unsigned char D.22665;
  unsigned char D.22667;
  struct MonoInst * D.22671;
  void * D.22680;
  struct MonoInst * dest;

  dest = 0B;
  if (overwrite != 0) goto <D.22495>; else goto <D.22496>;
  <D.22495>:
  dest = ins;
  <D.22496>:
  D.22497 = ins->opcode;
  D.22498 = (int) D.22497;
  switch (D.22498) <default: <D.22483>, case 322: <D.22429>, case 323: <D.22431>, case 326: <D.22430>, case 327: <D.22432>, case 424: <D.22426>, case 426: <D.22482>, case 427: <D.22427>, case 439: <D.22381>, case 565: <D.22361>, case 566: <D.22393>, case 567: <D.22360>, case 568: <D.22402>, case 569: <D.22403>, case 570: <D.22404>, case 571: <D.22405>, case 572: <D.22362>, case 573: <D.22363>, case 574: <D.22364>, case 575: <D.22394>, case 576: <D.22395>, case 577: <D.22396>, case 578: <D.22422>, case 579: <D.22421>, case 625: <D.22373>, case 626: <D.22377>, case 627: <D.22372>, case 628: <D.22411>, case 629: <D.22412>, case 630: <D.22413>, case 631: <D.22414>, case 632: <D.22374>, case 633: <D.22375>, case 634: <D.22376>, case 635: <D.22378>, case 636: <D.22379>, case 637: <D.22380>, case 800: <D.22428>>
  <D.22360>:
  <D.22361>:
  <D.22362>:
  <D.22363>:
  <D.22364>:
  D.22499 = arg2->opcode;
  if (D.22499 == 362) goto <D.22500>; else goto <D.22501>;
  <D.22500>:
  D.22502 = arg1->opcode;
  if (D.22502 == 362) goto <D.22503>; else goto <D.22504>;
  <D.22503>:
  if (dest == 0B) goto <D.22505>; else goto <D.22506>;
  <D.22505>:
  D.22507 = cfg->mempool;
  dest = mono_mempool_alloc (D.22507, 80);
  dest->data.op[1].const_val = 0;
  D.22508 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22508;
  dest->prev = 0B;
  D.22509 = dest->prev;
  dest->next = D.22509;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22512 = cfg->ip;
  dest->cil_code = D.22512;
  D.22513 = ins->dreg;
  dest->dreg = D.22513;
  <D.22506>:
  D.22497 = ins->opcode;
  D.22498 = (int) D.22497;
  switch (D.22498) <default: <D.22521>, case 565: <D.22367>, case 567: <D.22365>, case 572: <D.22368>, case 573: <D.22369>, case 574: <D.22370>>
  <D.22365>:
  D.22514 = arg1->data.op[0].const_val;
  D.22515 = arg2->data.op[0].const_val;
  D.22516 = D.22514 * D.22515;
  dest->data.op[0].const_val = D.22516;
  goto <D.22366>;
  <D.22367>:
  D.22514 = arg1->data.op[0].const_val;
  D.22515 = arg2->data.op[0].const_val;
  D.22517 = D.22514 + D.22515;
  dest->data.op[0].const_val = D.22517;
  goto <D.22366>;
  <D.22368>:
  D.22514 = arg1->data.op[0].const_val;
  D.22515 = arg2->data.op[0].const_val;
  D.22518 = D.22514 & D.22515;
  dest->data.op[0].const_val = D.22518;
  goto <D.22366>;
  <D.22369>:
  D.22514 = arg1->data.op[0].const_val;
  D.22515 = arg2->data.op[0].const_val;
  D.22519 = D.22514 | D.22515;
  dest->data.op[0].const_val = D.22519;
  goto <D.22366>;
  <D.22370>:
  D.22514 = arg1->data.op[0].const_val;
  D.22515 = arg2->data.op[0].const_val;
  D.22520 = D.22514 ^ D.22515;
  dest->data.op[0].const_val = D.22520;
  goto <D.22366>;
  <D.22521>:
  <D.22366>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  <D.22504>:
  goto <D.22522>;
  <D.22501>:
  D.22502 = arg1->opcode;
  if (D.22502 == 362) goto <D.22523>; else goto <D.22524>;
  <D.22523>:
  D.22497 = ins->opcode;
  D.22498 = (int) D.22497;
  D.22525 = mono_op_to_op_imm (D.22498);
  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.22507 = cfg->mempool;
  dest = mono_mempool_alloc (D.22507, 80);
  dest->data.op[1].const_val = 0;
  D.22508 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22508;
  dest->prev = 0B;
  D.22509 = dest->prev;
  dest->next = D.22509;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22512 = cfg->ip;
  dest->cil_code = D.22512;
  D.22513 = ins->dreg;
  dest->dreg = D.22513;
  <D.22529>:
  D.22497 = ins->opcode;
  D.22498 = (int) D.22497;
  D.22530 = mono_op_to_op_imm (D.22498);
  D.22531 = (short unsigned int) D.22530;
  dest->opcode = D.22531;
  D.22532 = ins->sreg2;
  dest->sreg1 = D.22532;
  dest->sreg2 = -1;
  D.22514 = arg1->data.op[0].const_val;
  dest->data.op[1].const_val = D.22514;
  <D.22527>:
  <D.22524>:
  <D.22522>:
  goto <D.22371>;
  <D.22372>:
  <D.22373>:
  <D.22374>:
  <D.22375>:
  <D.22376>:
  <D.22377>:
  <D.22378>:
  <D.22379>:
  <D.22380>:
  <D.22381>:
  D.22502 = arg1->opcode;
  if (D.22502 == 362) goto <D.22533>; else goto <D.22534>;
  <D.22533>:
  if (dest == 0B) goto <D.22535>; else goto <D.22536>;
  <D.22535>:
  D.22507 = cfg->mempool;
  dest = mono_mempool_alloc (D.22507, 80);
  dest->data.op[1].const_val = 0;
  D.22508 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22508;
  dest->prev = 0B;
  D.22509 = dest->prev;
  dest->next = D.22509;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22512 = cfg->ip;
  dest->cil_code = D.22512;
  D.22513 = ins->dreg;
  dest->dreg = D.22513;
  <D.22536>:
  D.22497 = ins->opcode;
  D.22498 = (int) D.22497;
  switch (D.22498) <default: <D.22555>, case 439: <D.22392>, case 625: <D.22384>, case 626: <D.22388>, case 627: <D.22382>, case 632: <D.22385>, case 633: <D.22386>, case 634: <D.22387>, case 635: <D.22389>, case 636: <D.22390>, case 637: <D.22391>>
  <D.22382>:
  D.22514 = arg1->data.op[0].const_val;
  D.22537 = ins->data.op[1].const_val;
  D.22538 = D.22514 * D.22537;
  dest->data.op[0].const_val = D.22538;
  goto <D.22383>;
  <D.22384>:
  D.22514 = arg1->data.op[0].const_val;
  D.22537 = ins->data.op[1].const_val;
  D.22539 = D.22514 + D.22537;
  dest->data.op[0].const_val = D.22539;
  goto <D.22383>;
  <D.22385>:
  D.22514 = arg1->data.op[0].const_val;
  D.22537 = ins->data.op[1].const_val;
  D.22540 = D.22514 & D.22537;
  dest->data.op[0].const_val = D.22540;
  goto <D.22383>;
  <D.22386>:
  D.22514 = arg1->data.op[0].const_val;
  D.22537 = ins->data.op[1].const_val;
  D.22541 = D.22514 | D.22537;
  dest->data.op[0].const_val = D.22541;
  goto <D.22383>;
  <D.22387>:
  D.22514 = arg1->data.op[0].const_val;
  D.22537 = ins->data.op[1].const_val;
  D.22542 = D.22514 ^ D.22537;
  dest->data.op[0].const_val = D.22542;
  goto <D.22383>;
  <D.22388>:
  D.22514 = arg1->data.op[0].const_val;
  D.22537 = ins->data.op[1].const_val;
  D.22543 = D.22514 - D.22537;
  dest->data.op[0].const_val = D.22543;
  goto <D.22383>;
  <D.22389>:
  D.22514 = arg1->data.op[0].const_val;
  D.22544 = (int) D.22514;
  D.22537 = ins->data.op[1].const_val;
  D.22545 = (int) D.22537;
  D.22546 = D.22544 << D.22545;
  D.22547 = (long int) D.22546;
  dest->data.op[0].const_val = D.22547;
  goto <D.22383>;
  <D.22390>:
  D.22514 = arg1->data.op[0].const_val;
  D.22544 = (int) D.22514;
  D.22537 = ins->data.op[1].const_val;
  D.22545 = (int) D.22537;
  D.22548 = D.22544 >> D.22545;
  D.22549 = (long int) D.22548;
  dest->data.op[0].const_val = D.22549;
  goto <D.22383>;
  <D.22391>:
  D.22514 = arg1->data.op[0].const_val;
  D.22550 = (unsigned int) D.22514;
  D.22537 = ins->data.op[1].const_val;
  D.22551 = (int) D.22537;
  D.22552 = D.22550 >> D.22551;
  D.22553 = (long int) D.22552;
  dest->data.op[0].const_val = D.22553;
  goto <D.22383>;
  <D.22392>:
  D.22514 = arg1->data.op[0].const_val;
  D.22537 = ins->data.op[1].const_val;
  D.22545 = (int) D.22537;
  D.22554 = D.22514 << D.22545;
  dest->data.op[0].const_val = D.22554;
  goto <D.22383>;
  <D.22555>:
  <D.22383>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  <D.22534>:
  goto <D.22371>;
  <D.22393>:
  <D.22394>:
  <D.22395>:
  <D.22396>:
  D.22502 = arg1->opcode;
  if (D.22502 == 362) goto <D.22556>; else goto <D.22557>;
  <D.22556>:
  D.22499 = arg2->opcode;
  if (D.22499 == 362) goto <D.22558>; else goto <D.22559>;
  <D.22558>:
  if (dest == 0B) goto <D.22560>; else goto <D.22561>;
  <D.22560>:
  D.22507 = cfg->mempool;
  dest = mono_mempool_alloc (D.22507, 80);
  dest->data.op[1].const_val = 0;
  D.22508 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22508;
  dest->prev = 0B;
  D.22509 = dest->prev;
  dest->next = D.22509;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22512 = cfg->ip;
  dest->cil_code = D.22512;
  D.22513 = ins->dreg;
  dest->dreg = D.22513;
  <D.22561>:
  D.22497 = ins->opcode;
  D.22498 = (int) D.22497;
  switch (D.22498) <default: <D.22569>, case 566: <D.22397>, case 575: <D.22399>, case 576: <D.22400>, case 577: <D.22401>>
  <D.22397>:
  D.22514 = arg1->data.op[0].const_val;
  D.22515 = arg2->data.op[0].const_val;
  D.22562 = D.22514 - D.22515;
  dest->data.op[0].const_val = D.22562;
  goto <D.22398>;
  <D.22399>:
  D.22514 = arg1->data.op[0].const_val;
  D.22515 = arg2->data.op[0].const_val;
  D.22563 = (int) D.22515;
  D.22564 = D.22514 << D.22563;
  dest->data.op[0].const_val = D.22564;
  goto <D.22398>;
  <D.22400>:
  D.22514 = arg1->data.op[0].const_val;
  D.22515 = arg2->data.op[0].const_val;
  D.22563 = (int) D.22515;
  D.22565 = D.22514 >> D.22563;
  dest->data.op[0].const_val = D.22565;
  goto <D.22398>;
  <D.22401>:
  D.22514 = arg1->data.op[0].const_val;
  D.22550 = (unsigned int) D.22514;
  D.22515 = arg2->data.op[0].const_val;
  D.22566 = (int) D.22515;
  D.22567 = D.22550 >> D.22566;
  D.22568 = (long int) D.22567;
  dest->data.op[0].const_val = D.22568;
  goto <D.22398>;
  <D.22569>:
  <D.22398>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  <D.22559>:
  <D.22557>:
  goto <D.22371>;
  <D.22402>:
  <D.22403>:
  <D.22404>:
  <D.22405>:
  D.22502 = arg1->opcode;
  if (D.22502 == 362) goto <D.22570>; else goto <D.22571>;
  <D.22570>:
  D.22499 = arg2->opcode;
  if (D.22499 == 362) goto <D.22572>; else goto <D.22573>;
  <D.22572>:
  D.22515 = arg2->data.op[0].const_val;
  if (D.22515 == 0) goto <D.22574>; else goto <D.22576>;
  <D.22576>:
  D.22514 = arg1->data.op[0].const_val;
  if (D.22514 == -2147483648) goto <D.22577>; else goto <D.22575>;
  <D.22577>:
  D.22515 = arg2->data.op[0].const_val;
  if (D.22515 == -1) goto <D.22574>; else goto <D.22575>;
  <D.22574>:
  D.22578 = 0B;
  return D.22578;
  <D.22575>:
  if (dest == 0B) goto <D.22579>; else goto <D.22580>;
  <D.22579>:
  D.22507 = cfg->mempool;
  dest = mono_mempool_alloc (D.22507, 80);
  dest->data.op[1].const_val = 0;
  D.22508 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22508;
  dest->prev = 0B;
  D.22509 = dest->prev;
  dest->next = D.22509;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22512 = cfg->ip;
  dest->cil_code = D.22512;
  D.22513 = ins->dreg;
  dest->dreg = D.22513;
  <D.22580>:
  D.22497 = ins->opcode;
  D.22498 = (int) D.22497;
  switch (D.22498) <default: <D.22590>, case 568: <D.22406>, case 569: <D.22408>, case 570: <D.22409>, case 571: <D.22410>>
  <D.22406>:
  D.22514 = arg1->data.op[0].const_val;
  D.22544 = (int) D.22514;
  D.22515 = arg2->data.op[0].const_val;
  D.22563 = (int) D.22515;
  D.22581 = D.22544 / D.22563;
  D.22582 = (long int) D.22581;
  dest->data.op[0].const_val = D.22582;
  goto <D.22407>;
  <D.22408>:
  D.22514 = arg1->data.op[0].const_val;
  D.22550 = (unsigned int) D.22514;
  D.22515 = arg2->data.op[0].const_val;
  D.22583 = (unsigned int) D.22515;
  D.22584 = D.22550 / D.22583;
  D.22585 = (long int) D.22584;
  dest->data.op[0].const_val = D.22585;
  goto <D.22407>;
  <D.22409>:
  D.22514 = arg1->data.op[0].const_val;
  D.22544 = (int) D.22514;
  D.22515 = arg2->data.op[0].const_val;
  D.22563 = (int) D.22515;
  D.22586 = D.22544 % D.22563;
  D.22587 = (long int) D.22586;
  dest->data.op[0].const_val = D.22587;
  goto <D.22407>;
  <D.22410>:
  D.22514 = arg1->data.op[0].const_val;
  D.22550 = (unsigned int) D.22514;
  D.22515 = arg2->data.op[0].const_val;
  D.22583 = (unsigned int) D.22515;
  D.22588 = D.22550 % D.22583;
  D.22589 = (long int) D.22588;
  dest->data.op[0].const_val = D.22589;
  goto <D.22407>;
  <D.22590>:
  <D.22407>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  <D.22573>:
  <D.22571>:
  goto <D.22371>;
  <D.22411>:
  <D.22412>:
  <D.22413>:
  <D.22414>:
  D.22502 = arg1->opcode;
  if (D.22502 == 362) goto <D.22591>; else goto <D.22592>;
  <D.22591>:
  D.22537 = ins->data.op[1].const_val;
  if (D.22537 == 0) goto <D.22593>; else goto <D.22595>;
  <D.22595>:
  D.22514 = arg1->data.op[0].const_val;
  if (D.22514 == -2147483648) goto <D.22596>; else goto <D.22594>;
  <D.22596>:
  D.22537 = ins->data.op[1].const_val;
  if (D.22537 == -1) goto <D.22593>; else goto <D.22594>;
  <D.22593>:
  D.22578 = 0B;
  return D.22578;
  <D.22594>:
  if (dest == 0B) goto <D.22597>; else goto <D.22598>;
  <D.22597>:
  D.22507 = cfg->mempool;
  dest = mono_mempool_alloc (D.22507, 80);
  dest->data.op[1].const_val = 0;
  D.22508 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22508;
  dest->prev = 0B;
  D.22509 = dest->prev;
  dest->next = D.22509;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22512 = cfg->ip;
  dest->cil_code = D.22512;
  D.22513 = ins->dreg;
  dest->dreg = D.22513;
  <D.22598>:
  D.22497 = ins->opcode;
  D.22498 = (int) D.22497;
  switch (D.22498) <default: <D.22420>, case 628: <D.22415>, case 629: <D.22417>, case 630: <D.22418>, case 631: <D.22419>>
  <D.22415>:
  D.22514 = arg1->data.op[0].const_val;
  D.22544 = (int) D.22514;
  D.22537 = ins->data.op[1].const_val;
  D.22545 = (int) D.22537;
  D.22599 = D.22544 / D.22545;
  D.22600 = (long int) D.22599;
  dest->data.op[0].const_val = D.22600;
  goto <D.22416>;
  <D.22417>:
  D.22514 = arg1->data.op[0].const_val;
  D.22550 = (unsigned int) D.22514;
  D.22537 = ins->data.op[1].const_val;
  D.22601 = (unsigned int) D.22537;
  D.22602 = D.22550 / D.22601;
  D.22603 = (long int) D.22602;
  dest->data.op[0].const_val = D.22603;
  goto <D.22416>;
  <D.22418>:
  D.22514 = arg1->data.op[0].const_val;
  D.22544 = (int) D.22514;
  D.22537 = ins->data.op[1].const_val;
  D.22545 = (int) D.22537;
  D.22604 = D.22544 % D.22545;
  D.22605 = (long int) D.22604;
  dest->data.op[0].const_val = D.22605;
  goto <D.22416>;
  <D.22419>:
  D.22514 = arg1->data.op[0].const_val;
  D.22550 = (unsigned int) D.22514;
  D.22537 = ins->data.op[1].const_val;
  D.22601 = (unsigned int) D.22537;
  D.22606 = D.22550 % D.22601;
  D.22607 = (long int) D.22606;
  dest->data.op[0].const_val = D.22607;
  goto <D.22416>;
  <D.22420>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "cfold.c", 199);
  <D.22416>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  <D.22592>:
  goto <D.22371>;
  <D.22421>:
  <D.22422>:
  D.22502 = arg1->opcode;
  if (D.22502 == 362) goto <D.22608>; else goto <D.22609>;
  <D.22608>:
  if (dest == 0B) goto <D.22610>; else goto <D.22611>;
  <D.22610>:
  D.22507 = cfg->mempool;
  dest = mono_mempool_alloc (D.22507, 80);
  dest->data.op[1].const_val = 0;
  D.22508 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22508;
  dest->prev = 0B;
  D.22509 = dest->prev;
  dest->next = D.22509;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22512 = cfg->ip;
  dest->cil_code = D.22512;
  D.22513 = ins->dreg;
  dest->dreg = D.22513;
  <D.22611>:
  D.22497 = ins->opcode;
  D.22498 = (int) D.22497;
  switch (D.22498) <default: <D.22614>, case 578: <D.22423>, case 579: <D.22425>>
  <D.22423>:
  D.22514 = arg1->data.op[0].const_val;
  D.22612 = -D.22514;
  dest->data.op[0].const_val = D.22612;
  goto <D.22424>;
  <D.22425>:
  D.22514 = arg1->data.op[0].const_val;
  D.22613 = ~D.22514;
  dest->data.op[0].const_val = D.22613;
  goto <D.22424>;
  <D.22614>:
  <D.22424>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  <D.22609>:
  goto <D.22371>;
  <D.22426>:
  D.22502 = arg1->opcode;
  D.22615 = D.22502 + 65174;
  if (D.22615 <= 1) goto <D.22616>; else goto <D.22617>;
  <D.22616>:
  if (dest == 0B) goto <D.22618>; else goto <D.22619>;
  <D.22618>:
  D.22507 = cfg->mempool;
  dest = mono_mempool_alloc (D.22507, 80);
  dest->data.op[1].const_val = 0;
  D.22508 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22508;
  dest->prev = 0B;
  D.22509 = dest->prev;
  dest->next = D.22509;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22512 = cfg->ip;
  dest->cil_code = D.22512;
  D.22513 = ins->dreg;
  dest->dreg = D.22513;
  <D.22619>:
  D.22502 = arg1->opcode;
  dest->opcode = D.22502;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22514 = arg1->data.op[0].const_val;
  dest->data.op[0].const_val = D.22514;
  <D.22617>:
  goto <D.22371>;
  <D.22427>:
  D.22502 = arg1->opcode;
  if (D.22502 == 428) goto <D.22620>; else goto <D.22621>;
  <D.22620>:
  if (dest == 0B) goto <D.22622>; else goto <D.22623>;
  <D.22622>:
  D.22507 = cfg->mempool;
  dest = mono_mempool_alloc (D.22507, 80);
  dest->data.op[1].const_val = 0;
  D.22508 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22508;
  dest->prev = 0B;
  D.22509 = dest->prev;
  dest->next = D.22509;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22512 = cfg->ip;
  dest->cil_code = D.22512;
  D.22513 = ins->dreg;
  dest->dreg = D.22513;
  <D.22623>:
  dest->opcode = 428;
  dest->sreg1 = -1;
  <D.22621>:
  goto <D.22371>;
  <D.22428>:
  D.22502 = arg1->opcode;
  if (D.22502 == 801) goto <D.22624>; else goto <D.22625>;
  <D.22624>:
  if (dest == 0B) goto <D.22626>; else goto <D.22627>;
  <D.22626>:
  D.22507 = cfg->mempool;
  dest = mono_mempool_alloc (D.22507, 80);
  dest->data.op[1].const_val = 0;
  D.22508 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22508;
  dest->prev = 0B;
  D.22509 = dest->prev;
  dest->next = D.22509;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22512 = cfg->ip;
  dest->cil_code = D.22512;
  D.22513 = ins->dreg;
  dest->dreg = D.22513;
  <D.22627>:
  dest->opcode = 801;
  dest->sreg1 = -1;
  <D.22625>:
  goto <D.22371>;
  <D.22429>:
  <D.22430>:
  <D.22431>:
  <D.22432>:
  {
    struct MonoInst dummy_arg2;

    try
      {
        D.22532 = ins->sreg2;
        if (D.22532 == -1) goto <D.22628>; else goto <D.22629>;
        <D.22628>:
        arg2 = &dummy_arg2;
        arg2->opcode = 362;
        D.22537 = ins->data.op[1].const_val;
        arg2->data.op[0].const_val = D.22537;
        <D.22629>:
        D.22502 = arg1->opcode;
        if (D.22502 == 362) goto <D.22630>; else goto <D.22631>;
        <D.22630>:
        D.22499 = arg2->opcode;
        if (D.22499 == 362) goto <D.22632>; else goto <D.22633>;
        <D.22632>:
        D.22634 = ins->next;
        if (D.22634 != 0B) goto <D.22635>; else goto <D.22636>;
        <D.22635>:
        {
          struct MonoInst * next;
          gboolean res;

          next = ins->next;
          res = 0;
          D.22637 = next->opcode;
          D.22638 = (int) D.22637;
          switch (D.22638) <default: <D.22481>, case 316: <D.22479>, case 442: <D.22480>, case 446: <D.22436>, case 447: <D.22438>, case 448: <D.22440>, case 449: <D.22442>, case 450: <D.22444>, case 638: <D.22437>, case 639: <D.22439>, case 640: <D.22441>, case 641: <D.22443>, case 642: <D.22445>, case 648: <D.22458>, case 649: <D.22462>, case 650: <D.22460>, case 651: <D.22466>, case 652: <D.22464>, case 653: <D.22459>, case 654: <D.22463>, case 655: <D.22461>, case 656: <D.22467>, case 657: <D.22465>>
          <D.22436>:
          <D.22437>:
          <D.22438>:
          <D.22439>:
          <D.22440>:
          <D.22441>:
          <D.22442>:
          <D.22443>:
          <D.22444>:
          <D.22445>:
          D.22637 = next->opcode;
          D.22638 = (int) D.22637;
          switch (D.22638) <default: <D.22644>, case 446: <D.22446>, case 447: <D.22449>, case 448: <D.22451>, case 449: <D.22453>, case 450: <D.22455>, case 638: <D.22448>, case 639: <D.22450>, case 640: <D.22452>, case 641: <D.22454>, case 642: <D.22456>>
          <D.22446>:
          D.22514 = arg1->data.op[0].const_val;
          D.22544 = (int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22563 = (int) D.22515;
          D.22639 = D.22544 == D.22563;
          res = (gboolean) D.22639;
          goto <D.22447>;
          <D.22448>:
          D.22514 = arg1->data.op[0].const_val;
          D.22544 = (int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22563 = (int) D.22515;
          D.22639 = D.22544 == D.22563;
          res = (gboolean) D.22639;
          goto <D.22447>;
          <D.22449>:
          D.22514 = arg1->data.op[0].const_val;
          D.22544 = (int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22563 = (int) D.22515;
          D.22640 = D.22544 > D.22563;
          res = (gboolean) D.22640;
          goto <D.22447>;
          <D.22450>:
          D.22514 = arg1->data.op[0].const_val;
          D.22544 = (int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22563 = (int) D.22515;
          D.22640 = D.22544 > D.22563;
          res = (gboolean) D.22640;
          goto <D.22447>;
          <D.22451>:
          D.22514 = arg1->data.op[0].const_val;
          D.22550 = (unsigned int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22583 = (unsigned int) D.22515;
          D.22641 = D.22550 > D.22583;
          res = (gboolean) D.22641;
          goto <D.22447>;
          <D.22452>:
          D.22514 = arg1->data.op[0].const_val;
          D.22550 = (unsigned int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22583 = (unsigned int) D.22515;
          D.22641 = D.22550 > D.22583;
          res = (gboolean) D.22641;
          goto <D.22447>;
          <D.22453>:
          D.22514 = arg1->data.op[0].const_val;
          D.22544 = (int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22563 = (int) D.22515;
          D.22642 = D.22544 < D.22563;
          res = (gboolean) D.22642;
          goto <D.22447>;
          <D.22454>:
          D.22514 = arg1->data.op[0].const_val;
          D.22544 = (int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22563 = (int) D.22515;
          D.22642 = D.22544 < D.22563;
          res = (gboolean) D.22642;
          goto <D.22447>;
          <D.22455>:
          D.22514 = arg1->data.op[0].const_val;
          D.22550 = (unsigned int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22583 = (unsigned int) D.22515;
          D.22643 = D.22550 < D.22583;
          res = (gboolean) D.22643;
          goto <D.22447>;
          <D.22456>:
          D.22514 = arg1->data.op[0].const_val;
          D.22550 = (unsigned int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22583 = (unsigned int) D.22515;
          D.22643 = D.22550 < D.22583;
          res = (gboolean) D.22643;
          goto <D.22447>;
          <D.22644>:
          <D.22447>:
          if (overwrite != 0) goto <D.22645>; else goto <D.22646>;
          <D.22645>:
          ins->opcode = 316;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.22647 = ins->sreg3;
          ins->sreg2 = D.22647;
          D.22532 = ins->sreg2;
          ins->sreg1 = D.22532;
          next->opcode = 362;
          D.22648 = (long int) res;
          next->data.op[0].const_val = D.22648;
          next->sreg3 = -1;
          D.22649 = next->sreg3;
          next->sreg2 = D.22649;
          D.22650 = next->sreg2;
          next->sreg1 = D.22650;
          goto <D.22651>;
          <D.22646>:
          if (dest == 0B) goto <D.22652>; else goto <D.22653>;
          <D.22652>:
          D.22507 = cfg->mempool;
          dest = mono_mempool_alloc (D.22507, 80);
          dest->data.op[1].const_val = 0;
          D.22508 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.22508;
          dest->prev = 0B;
          D.22509 = dest->prev;
          dest->next = D.22509;
          dest->opcode = 65535;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.22510 = dest->sreg3;
          dest->sreg2 = D.22510;
          D.22511 = dest->sreg2;
          dest->sreg1 = D.22511;
          D.22512 = cfg->ip;
          dest->cil_code = D.22512;
          D.22513 = ins->dreg;
          dest->dreg = D.22513;
          <D.22653>:
          dest->opcode = 362;
          D.22648 = (long int) res;
          dest->data.op[0].const_val = D.22648;
          <D.22651>:
          goto <D.22457>;
          <D.22458>:
          <D.22459>:
          <D.22460>:
          <D.22461>:
          <D.22462>:
          <D.22463>:
          <D.22464>:
          <D.22465>:
          <D.22466>:
          <D.22467>:
          D.22637 = next->opcode;
          D.22638 = (int) D.22637;
          switch (D.22638) <default: <D.22659>, case 648: <D.22468>, case 649: <D.22473>, case 650: <D.22471>, case 651: <D.22477>, case 652: <D.22475>, case 653: <D.22470>, case 654: <D.22474>, case 655: <D.22472>, case 656: <D.22478>, case 657: <D.22476>>
          <D.22468>:
          D.22514 = arg1->data.op[0].const_val;
          D.22544 = (int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22563 = (int) D.22515;
          D.22639 = D.22544 == D.22563;
          res = (gboolean) D.22639;
          goto <D.22469>;
          <D.22470>:
          D.22514 = arg1->data.op[0].const_val;
          D.22550 = (unsigned int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22583 = (unsigned int) D.22515;
          D.22654 = D.22550 != D.22583;
          res = (gboolean) D.22654;
          goto <D.22469>;
          <D.22471>:
          D.22514 = arg1->data.op[0].const_val;
          D.22544 = (int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22563 = (int) D.22515;
          D.22640 = D.22544 > D.22563;
          res = (gboolean) D.22640;
          goto <D.22469>;
          <D.22472>:
          D.22514 = arg1->data.op[0].const_val;
          D.22550 = (unsigned int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22583 = (unsigned int) D.22515;
          D.22641 = D.22550 > D.22583;
          res = (gboolean) D.22641;
          goto <D.22469>;
          <D.22473>:
          D.22514 = arg1->data.op[0].const_val;
          D.22544 = (int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22563 = (int) D.22515;
          D.22655 = D.22544 >= D.22563;
          res = (gboolean) D.22655;
          goto <D.22469>;
          <D.22474>:
          D.22514 = arg1->data.op[0].const_val;
          D.22550 = (unsigned int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22583 = (unsigned int) D.22515;
          D.22656 = D.22550 >= D.22583;
          res = (gboolean) D.22656;
          goto <D.22469>;
          <D.22475>:
          D.22514 = arg1->data.op[0].const_val;
          D.22544 = (int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22563 = (int) D.22515;
          D.22642 = D.22544 < D.22563;
          res = (gboolean) D.22642;
          goto <D.22469>;
          <D.22476>:
          D.22514 = arg1->data.op[0].const_val;
          D.22550 = (unsigned int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22583 = (unsigned int) D.22515;
          D.22643 = D.22550 < D.22583;
          res = (gboolean) D.22643;
          goto <D.22469>;
          <D.22477>:
          D.22514 = arg1->data.op[0].const_val;
          D.22544 = (int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22563 = (int) D.22515;
          D.22657 = D.22544 <= D.22563;
          res = (gboolean) D.22657;
          goto <D.22469>;
          <D.22478>:
          D.22514 = arg1->data.op[0].const_val;
          D.22550 = (unsigned int) D.22514;
          D.22515 = arg2->data.op[0].const_val;
          D.22583 = (unsigned int) D.22515;
          D.22658 = D.22550 <= D.22583;
          res = (gboolean) D.22658;
          goto <D.22469>;
          <D.22659>:
          <D.22469>:
          if (overwrite != 0) goto <D.22660>; else goto <D.22661>;
          <D.22660>:
          if (res != 0) goto <D.22662>; else goto <D.22663>;
          <D.22662>:
          D.22664 = next->flags;
          D.22665 = D.22664 | 8;
          next->flags = D.22665;
          goto <D.22666>;
          <D.22663>:
          D.22664 = next->flags;
          D.22667 = D.22664 | 16;
          next->flags = D.22667;
          <D.22666>:
          goto <D.22668>;
          <D.22661>:
          if (dest == 0B) goto <D.22669>; else goto <D.22670>;
          <D.22669>:
          D.22507 = cfg->mempool;
          dest = mono_mempool_alloc (D.22507, 80);
          dest->data.op[1].const_val = 0;
          D.22508 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.22508;
          dest->prev = 0B;
          D.22509 = dest->prev;
          dest->next = D.22509;
          dest->opcode = 65535;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.22510 = dest->sreg3;
          dest->sreg2 = D.22510;
          D.22511 = dest->sreg2;
          dest->sreg1 = D.22511;
          D.22512 = cfg->ip;
          dest->cil_code = D.22512;
          D.22513 = ins->dreg;
          dest->dreg = D.22513;
          <D.22670>:
          dest->opcode = 362;
          D.22648 = (long int) res;
          dest->data.op[0].const_val = D.22648;
          <D.22668>:
          goto <D.22457>;
          <D.22479>:
          <D.22480>:
          D.22671 = next->next;
          if (D.22671 == 0B) goto <D.22672>; else goto <D.22673>;
          <D.22672>:
          if (overwrite != 0) goto <D.22674>; else goto <D.22675>;
          <D.22674>:
          ins->opcode = 316;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.22647 = ins->sreg3;
          ins->sreg2 = D.22647;
          D.22532 = ins->sreg2;
          ins->sreg1 = D.22532;
          <D.22675>:
          <D.22673>:
          goto <D.22457>;
          <D.22481>:
          D.22578 = 0B;
          return D.22578;
          <D.22457>:
        }
        <D.22636>:
        <D.22633>:
        <D.22631>:
        goto <D.22371>;
      }
    finally
      {
        dummy_arg2 = {CLOBBER};
      }
  }
  <D.22482>:
  D.22502 = arg1->opcode;
  if (D.22502 == 365) goto <D.22676>; else goto <D.22677>;
  <D.22676>:
  if (dest == 0B) goto <D.22678>; else goto <D.22679>;
  <D.22678>:
  D.22507 = cfg->mempool;
  dest = mono_mempool_alloc (D.22507, 80);
  dest->data.op[1].const_val = 0;
  D.22508 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22508;
  dest->prev = 0B;
  D.22509 = dest->prev;
  dest->next = D.22509;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22510 = dest->sreg3;
  dest->sreg2 = D.22510;
  D.22511 = dest->sreg2;
  dest->sreg1 = D.22511;
  D.22512 = cfg->ip;
  dest->cil_code = D.22512;
  D.22513 = ins->dreg;
  dest->dreg = D.22513;
  <D.22679>:
  dest->opcode = 365;
  dest->sreg1 = -1;
  D.22680 = arg1->data.op[0].p;
  dest->data.op[0].p = D.22680;
  <D.22677>:
  goto <D.22371>;
  <D.22483>:
  D.22578 = 0B;
  return D.22578;
  <D.22371>:
  D.22578 = dest;
  return D.22578;
}


