__attribute__((visibility ("hidden")))
mono_is_power_of_two (guint32 val)
{
  unsigned int j.0;
  unsigned int D.22316;
  unsigned int k.1;
  unsigned int D.22322;
  int D.22323;
  int i;
  int j;
  int k;

  i = 0;
  j = 1;
  k = -2;
  goto <D.22181>;
  <D.22180>:
  j.0 = (unsigned int) j;
  D.22316 = val & j.0;
  if (D.22316 != 0) goto <D.22179>; else goto <D.22317>;
  <D.22317>:
  i = i + 1;
  j = j << 1;
  k = k << 1;
  <D.22181>:
  if (i <= 31) goto <D.22180>; else goto <D.22179>;
  <D.22179>:
  if (i == 32) goto <D.22318>; else goto <D.22320>;
  <D.22320>:
  k.1 = (unsigned int) k;
  D.22322 = val & k.1;
  if (D.22322 != 0) goto <D.22318>; else goto <D.22319>;
  <D.22318>:
  D.22323 = -1;
  return D.22323;
  <D.22319>:
  D.22323 = i;
  return D.22323;
}


__attribute__((visibility ("hidden")))
mono_constant_fold_ins (struct MonoCompile * cfg, struct MonoInst * ins, struct MonoInst * arg1, struct MonoInst * arg2, gboolean overwrite)
{
  short unsigned int D.22327;
  int D.22328;
  short unsigned int D.22329;
  short unsigned int D.22332;
  struct MonoMemPool * D.22337;
  long int D.22338;
  struct MonoInst * D.22339;
  int D.22340;
  int D.22341;
  const unsigned char * D.22342;
  int D.22343;
  long int D.22344;
  long int D.22345;
  long int D.22346;
  long int D.22347;
  long int D.22348;
  long int D.22349;
  long int D.22350;
  int D.22355;
  int D.22360;
  short unsigned int D.22361;
  int D.22362;
  long int D.22367;
  long int D.22368;
  long int D.22369;
  long int D.22370;
  long int D.22371;
  long int D.22372;
  long int D.22373;
  int D.22374;
  int D.22375;
  int D.22376;
  long int D.22377;
  int D.22378;
  long int D.22379;
  unsigned int D.22380;
  unsigned int D.22381;
  unsigned int D.22382;
  long int D.22383;
  long int D.22384;
  long int D.22392;
  unsigned int D.22393;
  long int D.22394;
  long int D.22395;
  unsigned int D.22396;
  long int D.22397;
  struct MonoInst * D.22407;
  int D.22410;
  int D.22411;
  long int D.22412;
  unsigned int D.22413;
  long int D.22414;
  int D.22415;
  long int D.22416;
  unsigned int D.22417;
  long int D.22418;
  int D.22428;
  long int D.22429;
  unsigned int D.22430;
  long int D.22431;
  int D.22432;
  long int D.22433;
  unsigned int D.22434;
  long int D.22435;
  long int D.22440;
  long int D.22441;
  short unsigned int D.22443;
  struct MonoInst * D.22462;
  short unsigned int D.22465;
  int D.22466;
  _Bool D.22467;
  _Bool D.22468;
  _Bool D.22469;
  _Bool D.22470;
  _Bool D.22471;
  int D.22475;
  long int D.22476;
  int D.22477;
  int D.22478;
  _Bool D.22482;
  _Bool D.22483;
  _Bool D.22484;
  _Bool D.22485;
  _Bool D.22486;
  unsigned char D.22492;
  unsigned char D.22493;
  unsigned char D.22495;
  struct MonoInst * D.22499;
  void * D.22508;
  struct MonoInst * dest;

  dest = 0B;
  if (overwrite != 0) goto <D.22325>; else goto <D.22326>;
  <D.22325>:
  dest = ins;
  <D.22326>:
  D.22327 = ins->opcode;
  D.22328 = (int) D.22327;
  switch (D.22328) <default: <D.22313>, case 322: <D.22259>, case 323: <D.22261>, case 326: <D.22260>, case 327: <D.22262>, case 424: <D.22256>, case 426: <D.22312>, case 427: <D.22257>, case 439: <D.22211>, case 565: <D.22191>, case 566: <D.22223>, case 567: <D.22190>, case 568: <D.22232>, case 569: <D.22233>, case 570: <D.22234>, case 571: <D.22235>, case 572: <D.22192>, case 573: <D.22193>, case 574: <D.22194>, case 575: <D.22224>, case 576: <D.22225>, case 577: <D.22226>, case 578: <D.22252>, case 579: <D.22251>, case 625: <D.22203>, case 626: <D.22207>, case 627: <D.22202>, case 628: <D.22241>, case 629: <D.22242>, case 630: <D.22243>, case 631: <D.22244>, case 632: <D.22204>, case 633: <D.22205>, case 634: <D.22206>, case 635: <D.22208>, case 636: <D.22209>, case 637: <D.22210>, case 800: <D.22258>>
  <D.22190>:
  <D.22191>:
  <D.22192>:
  <D.22193>:
  <D.22194>:
  D.22329 = arg2->opcode;
  if (D.22329 == 362) goto <D.22330>; else goto <D.22331>;
  <D.22330>:
  D.22332 = arg1->opcode;
  if (D.22332 == 362) goto <D.22333>; else goto <D.22334>;
  <D.22333>:
  if (dest == 0B) goto <D.22335>; else goto <D.22336>;
  <D.22335>:
  D.22337 = cfg->mempool;
  dest = mono_mempool_alloc (D.22337, 80);
  dest->data.op[1].const_val = 0;
  D.22338 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22338;
  dest->prev = 0B;
  D.22339 = dest->prev;
  dest->next = D.22339;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22342 = cfg->ip;
  dest->cil_code = D.22342;
  D.22343 = ins->dreg;
  dest->dreg = D.22343;
  <D.22336>:
  D.22327 = ins->opcode;
  D.22328 = (int) D.22327;
  switch (D.22328) <default: <D.22351>, case 565: <D.22197>, case 567: <D.22195>, case 572: <D.22198>, case 573: <D.22199>, case 574: <D.22200>>
  <D.22195>:
  D.22344 = arg1->data.op[0].const_val;
  D.22345 = arg2->data.op[0].const_val;
  D.22346 = D.22344 * D.22345;
  dest->data.op[0].const_val = D.22346;
  goto <D.22196>;
  <D.22197>:
  D.22344 = arg1->data.op[0].const_val;
  D.22345 = arg2->data.op[0].const_val;
  D.22347 = D.22344 + D.22345;
  dest->data.op[0].const_val = D.22347;
  goto <D.22196>;
  <D.22198>:
  D.22344 = arg1->data.op[0].const_val;
  D.22345 = arg2->data.op[0].const_val;
  D.22348 = D.22344 & D.22345;
  dest->data.op[0].const_val = D.22348;
  goto <D.22196>;
  <D.22199>:
  D.22344 = arg1->data.op[0].const_val;
  D.22345 = arg2->data.op[0].const_val;
  D.22349 = D.22344 | D.22345;
  dest->data.op[0].const_val = D.22349;
  goto <D.22196>;
  <D.22200>:
  D.22344 = arg1->data.op[0].const_val;
  D.22345 = arg2->data.op[0].const_val;
  D.22350 = D.22344 ^ D.22345;
  dest->data.op[0].const_val = D.22350;
  goto <D.22196>;
  <D.22351>:
  <D.22196>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  <D.22334>:
  goto <D.22352>;
  <D.22331>:
  D.22332 = arg1->opcode;
  if (D.22332 == 362) goto <D.22353>; else goto <D.22354>;
  <D.22353>:
  D.22327 = ins->opcode;
  D.22328 = (int) D.22327;
  D.22355 = mono_op_to_op_imm (D.22328);
  if (D.22355 != -1) goto <D.22356>; else goto <D.22357>;
  <D.22356>:
  if (dest == 0B) goto <D.22358>; else goto <D.22359>;
  <D.22358>:
  D.22337 = cfg->mempool;
  dest = mono_mempool_alloc (D.22337, 80);
  dest->data.op[1].const_val = 0;
  D.22338 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22338;
  dest->prev = 0B;
  D.22339 = dest->prev;
  dest->next = D.22339;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22342 = cfg->ip;
  dest->cil_code = D.22342;
  D.22343 = ins->dreg;
  dest->dreg = D.22343;
  <D.22359>:
  D.22327 = ins->opcode;
  D.22328 = (int) D.22327;
  D.22360 = mono_op_to_op_imm (D.22328);
  D.22361 = (short unsigned int) D.22360;
  dest->opcode = D.22361;
  D.22362 = ins->sreg2;
  dest->sreg1 = D.22362;
  dest->sreg2 = -1;
  D.22344 = arg1->data.op[0].const_val;
  dest->data.op[1].const_val = D.22344;
  <D.22357>:
  <D.22354>:
  <D.22352>:
  goto <D.22201>;
  <D.22202>:
  <D.22203>:
  <D.22204>:
  <D.22205>:
  <D.22206>:
  <D.22207>:
  <D.22208>:
  <D.22209>:
  <D.22210>:
  <D.22211>:
  D.22332 = arg1->opcode;
  if (D.22332 == 362) goto <D.22363>; else goto <D.22364>;
  <D.22363>:
  if (dest == 0B) goto <D.22365>; else goto <D.22366>;
  <D.22365>:
  D.22337 = cfg->mempool;
  dest = mono_mempool_alloc (D.22337, 80);
  dest->data.op[1].const_val = 0;
  D.22338 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22338;
  dest->prev = 0B;
  D.22339 = dest->prev;
  dest->next = D.22339;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22342 = cfg->ip;
  dest->cil_code = D.22342;
  D.22343 = ins->dreg;
  dest->dreg = D.22343;
  <D.22366>:
  D.22327 = ins->opcode;
  D.22328 = (int) D.22327;
  switch (D.22328) <default: <D.22385>, case 439: <D.22222>, case 625: <D.22214>, case 626: <D.22218>, case 627: <D.22212>, case 632: <D.22215>, case 633: <D.22216>, case 634: <D.22217>, case 635: <D.22219>, case 636: <D.22220>, case 637: <D.22221>>
  <D.22212>:
  D.22344 = arg1->data.op[0].const_val;
  D.22367 = ins->data.op[1].const_val;
  D.22368 = D.22344 * D.22367;
  dest->data.op[0].const_val = D.22368;
  goto <D.22213>;
  <D.22214>:
  D.22344 = arg1->data.op[0].const_val;
  D.22367 = ins->data.op[1].const_val;
  D.22369 = D.22344 + D.22367;
  dest->data.op[0].const_val = D.22369;
  goto <D.22213>;
  <D.22215>:
  D.22344 = arg1->data.op[0].const_val;
  D.22367 = ins->data.op[1].const_val;
  D.22370 = D.22344 & D.22367;
  dest->data.op[0].const_val = D.22370;
  goto <D.22213>;
  <D.22216>:
  D.22344 = arg1->data.op[0].const_val;
  D.22367 = ins->data.op[1].const_val;
  D.22371 = D.22344 | D.22367;
  dest->data.op[0].const_val = D.22371;
  goto <D.22213>;
  <D.22217>:
  D.22344 = arg1->data.op[0].const_val;
  D.22367 = ins->data.op[1].const_val;
  D.22372 = D.22344 ^ D.22367;
  dest->data.op[0].const_val = D.22372;
  goto <D.22213>;
  <D.22218>:
  D.22344 = arg1->data.op[0].const_val;
  D.22367 = ins->data.op[1].const_val;
  D.22373 = D.22344 - D.22367;
  dest->data.op[0].const_val = D.22373;
  goto <D.22213>;
  <D.22219>:
  D.22344 = arg1->data.op[0].const_val;
  D.22374 = (int) D.22344;
  D.22367 = ins->data.op[1].const_val;
  D.22375 = (int) D.22367;
  D.22376 = D.22374 << D.22375;
  D.22377 = (long int) D.22376;
  dest->data.op[0].const_val = D.22377;
  goto <D.22213>;
  <D.22220>:
  D.22344 = arg1->data.op[0].const_val;
  D.22374 = (int) D.22344;
  D.22367 = ins->data.op[1].const_val;
  D.22375 = (int) D.22367;
  D.22378 = D.22374 >> D.22375;
  D.22379 = (long int) D.22378;
  dest->data.op[0].const_val = D.22379;
  goto <D.22213>;
  <D.22221>:
  D.22344 = arg1->data.op[0].const_val;
  D.22380 = (unsigned int) D.22344;
  D.22367 = ins->data.op[1].const_val;
  D.22381 = (unsigned int) D.22367;
  D.22382 = D.22380 >> D.22381;
  D.22383 = (long int) D.22382;
  dest->data.op[0].const_val = D.22383;
  goto <D.22213>;
  <D.22222>:
  D.22344 = arg1->data.op[0].const_val;
  D.22367 = ins->data.op[1].const_val;
  D.22381 = (unsigned int) D.22367;
  D.22384 = D.22344 << D.22381;
  dest->data.op[0].const_val = D.22384;
  goto <D.22213>;
  <D.22385>:
  <D.22213>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  <D.22364>:
  goto <D.22201>;
  <D.22223>:
  <D.22224>:
  <D.22225>:
  <D.22226>:
  D.22332 = arg1->opcode;
  if (D.22332 == 362) goto <D.22386>; else goto <D.22387>;
  <D.22386>:
  D.22329 = arg2->opcode;
  if (D.22329 == 362) goto <D.22388>; else goto <D.22389>;
  <D.22388>:
  if (dest == 0B) goto <D.22390>; else goto <D.22391>;
  <D.22390>:
  D.22337 = cfg->mempool;
  dest = mono_mempool_alloc (D.22337, 80);
  dest->data.op[1].const_val = 0;
  D.22338 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22338;
  dest->prev = 0B;
  D.22339 = dest->prev;
  dest->next = D.22339;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22342 = cfg->ip;
  dest->cil_code = D.22342;
  D.22343 = ins->dreg;
  dest->dreg = D.22343;
  <D.22391>:
  D.22327 = ins->opcode;
  D.22328 = (int) D.22327;
  switch (D.22328) <default: <D.22398>, case 566: <D.22227>, case 575: <D.22229>, case 576: <D.22230>, case 577: <D.22231>>
  <D.22227>:
  D.22344 = arg1->data.op[0].const_val;
  D.22345 = arg2->data.op[0].const_val;
  D.22392 = D.22344 - D.22345;
  dest->data.op[0].const_val = D.22392;
  goto <D.22228>;
  <D.22229>:
  D.22344 = arg1->data.op[0].const_val;
  D.22345 = arg2->data.op[0].const_val;
  D.22393 = (unsigned int) D.22345;
  D.22394 = D.22344 << D.22393;
  dest->data.op[0].const_val = D.22394;
  goto <D.22228>;
  <D.22230>:
  D.22344 = arg1->data.op[0].const_val;
  D.22345 = arg2->data.op[0].const_val;
  D.22393 = (unsigned int) D.22345;
  D.22395 = D.22344 >> D.22393;
  dest->data.op[0].const_val = D.22395;
  goto <D.22228>;
  <D.22231>:
  D.22344 = arg1->data.op[0].const_val;
  D.22380 = (unsigned int) D.22344;
  D.22345 = arg2->data.op[0].const_val;
  D.22393 = (unsigned int) D.22345;
  D.22396 = D.22380 >> D.22393;
  D.22397 = (long int) D.22396;
  dest->data.op[0].const_val = D.22397;
  goto <D.22228>;
  <D.22398>:
  <D.22228>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  <D.22389>:
  <D.22387>:
  goto <D.22201>;
  <D.22232>:
  <D.22233>:
  <D.22234>:
  <D.22235>:
  D.22332 = arg1->opcode;
  if (D.22332 == 362) goto <D.22399>; else goto <D.22400>;
  <D.22399>:
  D.22329 = arg2->opcode;
  if (D.22329 == 362) goto <D.22401>; else goto <D.22402>;
  <D.22401>:
  D.22345 = arg2->data.op[0].const_val;
  if (D.22345 == 0) goto <D.22403>; else goto <D.22405>;
  <D.22405>:
  D.22344 = arg1->data.op[0].const_val;
  if (D.22344 == -2147483648) goto <D.22406>; else goto <D.22404>;
  <D.22406>:
  D.22345 = arg2->data.op[0].const_val;
  if (D.22345 == -1) goto <D.22403>; else goto <D.22404>;
  <D.22403>:
  D.22407 = 0B;
  return D.22407;
  <D.22404>:
  if (dest == 0B) goto <D.22408>; else goto <D.22409>;
  <D.22408>:
  D.22337 = cfg->mempool;
  dest = mono_mempool_alloc (D.22337, 80);
  dest->data.op[1].const_val = 0;
  D.22338 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22338;
  dest->prev = 0B;
  D.22339 = dest->prev;
  dest->next = D.22339;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22342 = cfg->ip;
  dest->cil_code = D.22342;
  D.22343 = ins->dreg;
  dest->dreg = D.22343;
  <D.22409>:
  D.22327 = ins->opcode;
  D.22328 = (int) D.22327;
  switch (D.22328) <default: <D.22419>, case 568: <D.22236>, case 569: <D.22238>, case 570: <D.22239>, case 571: <D.22240>>
  <D.22236>:
  D.22344 = arg1->data.op[0].const_val;
  D.22374 = (int) D.22344;
  D.22345 = arg2->data.op[0].const_val;
  D.22410 = (int) D.22345;
  D.22411 = D.22374 / D.22410;
  D.22412 = (long int) D.22411;
  dest->data.op[0].const_val = D.22412;
  goto <D.22237>;
  <D.22238>:
  D.22344 = arg1->data.op[0].const_val;
  D.22380 = (unsigned int) D.22344;
  D.22345 = arg2->data.op[0].const_val;
  D.22393 = (unsigned int) D.22345;
  D.22413 = D.22380 / D.22393;
  D.22414 = (long int) D.22413;
  dest->data.op[0].const_val = D.22414;
  goto <D.22237>;
  <D.22239>:
  D.22344 = arg1->data.op[0].const_val;
  D.22374 = (int) D.22344;
  D.22345 = arg2->data.op[0].const_val;
  D.22410 = (int) D.22345;
  D.22415 = D.22374 % D.22410;
  D.22416 = (long int) D.22415;
  dest->data.op[0].const_val = D.22416;
  goto <D.22237>;
  <D.22240>:
  D.22344 = arg1->data.op[0].const_val;
  D.22380 = (unsigned int) D.22344;
  D.22345 = arg2->data.op[0].const_val;
  D.22393 = (unsigned int) D.22345;
  D.22417 = D.22380 % D.22393;
  D.22418 = (long int) D.22417;
  dest->data.op[0].const_val = D.22418;
  goto <D.22237>;
  <D.22419>:
  <D.22237>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  <D.22402>:
  <D.22400>:
  goto <D.22201>;
  <D.22241>:
  <D.22242>:
  <D.22243>:
  <D.22244>:
  D.22332 = arg1->opcode;
  if (D.22332 == 362) goto <D.22420>; else goto <D.22421>;
  <D.22420>:
  D.22367 = ins->data.op[1].const_val;
  if (D.22367 == 0) goto <D.22422>; else goto <D.22424>;
  <D.22424>:
  D.22344 = arg1->data.op[0].const_val;
  if (D.22344 == -2147483648) goto <D.22425>; else goto <D.22423>;
  <D.22425>:
  D.22367 = ins->data.op[1].const_val;
  if (D.22367 == -1) goto <D.22422>; else goto <D.22423>;
  <D.22422>:
  D.22407 = 0B;
  return D.22407;
  <D.22423>:
  if (dest == 0B) goto <D.22426>; else goto <D.22427>;
  <D.22426>:
  D.22337 = cfg->mempool;
  dest = mono_mempool_alloc (D.22337, 80);
  dest->data.op[1].const_val = 0;
  D.22338 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22338;
  dest->prev = 0B;
  D.22339 = dest->prev;
  dest->next = D.22339;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22342 = cfg->ip;
  dest->cil_code = D.22342;
  D.22343 = ins->dreg;
  dest->dreg = D.22343;
  <D.22427>:
  D.22327 = ins->opcode;
  D.22328 = (int) D.22327;
  switch (D.22328) <default: <D.22250>, case 628: <D.22245>, case 629: <D.22247>, case 630: <D.22248>, case 631: <D.22249>>
  <D.22245>:
  D.22344 = arg1->data.op[0].const_val;
  D.22374 = (int) D.22344;
  D.22367 = ins->data.op[1].const_val;
  D.22375 = (int) D.22367;
  D.22428 = D.22374 / D.22375;
  D.22429 = (long int) D.22428;
  dest->data.op[0].const_val = D.22429;
  goto <D.22246>;
  <D.22247>:
  D.22344 = arg1->data.op[0].const_val;
  D.22380 = (unsigned int) D.22344;
  D.22367 = ins->data.op[1].const_val;
  D.22381 = (unsigned int) D.22367;
  D.22430 = D.22380 / D.22381;
  D.22431 = (long int) D.22430;
  dest->data.op[0].const_val = D.22431;
  goto <D.22246>;
  <D.22248>:
  D.22344 = arg1->data.op[0].const_val;
  D.22374 = (int) D.22344;
  D.22367 = ins->data.op[1].const_val;
  D.22375 = (int) D.22367;
  D.22432 = D.22374 % D.22375;
  D.22433 = (long int) D.22432;
  dest->data.op[0].const_val = D.22433;
  goto <D.22246>;
  <D.22249>:
  D.22344 = arg1->data.op[0].const_val;
  D.22380 = (unsigned int) D.22344;
  D.22367 = ins->data.op[1].const_val;
  D.22381 = (unsigned int) D.22367;
  D.22434 = D.22380 % D.22381;
  D.22435 = (long int) D.22434;
  dest->data.op[0].const_val = D.22435;
  goto <D.22246>;
  <D.22250>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "cfold.c", 199);
  <D.22246>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  <D.22421>:
  goto <D.22201>;
  <D.22251>:
  <D.22252>:
  D.22332 = arg1->opcode;
  if (D.22332 == 362) goto <D.22436>; else goto <D.22437>;
  <D.22436>:
  if (dest == 0B) goto <D.22438>; else goto <D.22439>;
  <D.22438>:
  D.22337 = cfg->mempool;
  dest = mono_mempool_alloc (D.22337, 80);
  dest->data.op[1].const_val = 0;
  D.22338 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22338;
  dest->prev = 0B;
  D.22339 = dest->prev;
  dest->next = D.22339;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22342 = cfg->ip;
  dest->cil_code = D.22342;
  D.22343 = ins->dreg;
  dest->dreg = D.22343;
  <D.22439>:
  D.22327 = ins->opcode;
  D.22328 = (int) D.22327;
  switch (D.22328) <default: <D.22442>, case 578: <D.22253>, case 579: <D.22255>>
  <D.22253>:
  D.22344 = arg1->data.op[0].const_val;
  D.22440 = -D.22344;
  dest->data.op[0].const_val = D.22440;
  goto <D.22254>;
  <D.22255>:
  D.22344 = arg1->data.op[0].const_val;
  D.22441 = ~D.22344;
  dest->data.op[0].const_val = D.22441;
  goto <D.22254>;
  <D.22442>:
  <D.22254>:
  dest->opcode = 362;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  <D.22437>:
  goto <D.22201>;
  <D.22256>:
  D.22332 = arg1->opcode;
  D.22443 = D.22332 + 65174;
  if (D.22443 <= 1) goto <D.22444>; else goto <D.22445>;
  <D.22444>:
  if (dest == 0B) goto <D.22446>; else goto <D.22447>;
  <D.22446>:
  D.22337 = cfg->mempool;
  dest = mono_mempool_alloc (D.22337, 80);
  dest->data.op[1].const_val = 0;
  D.22338 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22338;
  dest->prev = 0B;
  D.22339 = dest->prev;
  dest->next = D.22339;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22342 = cfg->ip;
  dest->cil_code = D.22342;
  D.22343 = ins->dreg;
  dest->dreg = D.22343;
  <D.22447>:
  D.22332 = arg1->opcode;
  dest->opcode = D.22332;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22344 = arg1->data.op[0].const_val;
  dest->data.op[0].const_val = D.22344;
  <D.22445>:
  goto <D.22201>;
  <D.22257>:
  D.22332 = arg1->opcode;
  if (D.22332 == 428) goto <D.22448>; else goto <D.22449>;
  <D.22448>:
  if (dest == 0B) goto <D.22450>; else goto <D.22451>;
  <D.22450>:
  D.22337 = cfg->mempool;
  dest = mono_mempool_alloc (D.22337, 80);
  dest->data.op[1].const_val = 0;
  D.22338 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22338;
  dest->prev = 0B;
  D.22339 = dest->prev;
  dest->next = D.22339;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22342 = cfg->ip;
  dest->cil_code = D.22342;
  D.22343 = ins->dreg;
  dest->dreg = D.22343;
  <D.22451>:
  dest->opcode = 428;
  dest->sreg1 = -1;
  <D.22449>:
  goto <D.22201>;
  <D.22258>:
  D.22332 = arg1->opcode;
  if (D.22332 == 801) goto <D.22452>; else goto <D.22453>;
  <D.22452>:
  if (dest == 0B) goto <D.22454>; else goto <D.22455>;
  <D.22454>:
  D.22337 = cfg->mempool;
  dest = mono_mempool_alloc (D.22337, 80);
  dest->data.op[1].const_val = 0;
  D.22338 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22338;
  dest->prev = 0B;
  D.22339 = dest->prev;
  dest->next = D.22339;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22342 = cfg->ip;
  dest->cil_code = D.22342;
  D.22343 = ins->dreg;
  dest->dreg = D.22343;
  <D.22455>:
  dest->opcode = 801;
  dest->sreg1 = -1;
  <D.22453>:
  goto <D.22201>;
  <D.22259>:
  <D.22260>:
  <D.22261>:
  <D.22262>:
  {
    struct MonoInst dummy_arg2;

    try
      {
        D.22362 = ins->sreg2;
        if (D.22362 == -1) goto <D.22456>; else goto <D.22457>;
        <D.22456>:
        arg2 = &dummy_arg2;
        arg2->opcode = 362;
        D.22367 = ins->data.op[1].const_val;
        arg2->data.op[0].const_val = D.22367;
        <D.22457>:
        D.22332 = arg1->opcode;
        if (D.22332 == 362) goto <D.22458>; else goto <D.22459>;
        <D.22458>:
        D.22329 = arg2->opcode;
        if (D.22329 == 362) goto <D.22460>; else goto <D.22461>;
        <D.22460>:
        D.22462 = ins->next;
        if (D.22462 != 0B) goto <D.22463>; else goto <D.22464>;
        <D.22463>:
        {
          struct MonoInst * next;
          gboolean res;

          next = ins->next;
          res = 0;
          D.22465 = next->opcode;
          D.22466 = (int) D.22465;
          switch (D.22466) <default: <D.22311>, case 316: <D.22309>, case 442: <D.22310>, case 446: <D.22266>, case 447: <D.22268>, case 448: <D.22270>, case 449: <D.22272>, case 450: <D.22274>, case 638: <D.22267>, case 639: <D.22269>, case 640: <D.22271>, case 641: <D.22273>, case 642: <D.22275>, case 648: <D.22288>, case 649: <D.22292>, case 650: <D.22290>, case 651: <D.22296>, case 652: <D.22294>, case 653: <D.22289>, case 654: <D.22293>, case 655: <D.22291>, case 656: <D.22297>, case 657: <D.22295>>
          <D.22266>:
          <D.22267>:
          <D.22268>:
          <D.22269>:
          <D.22270>:
          <D.22271>:
          <D.22272>:
          <D.22273>:
          <D.22274>:
          <D.22275>:
          D.22465 = next->opcode;
          D.22466 = (int) D.22465;
          switch (D.22466) <default: <D.22472>, case 446: <D.22276>, case 447: <D.22279>, case 448: <D.22281>, case 449: <D.22283>, case 450: <D.22285>, case 638: <D.22278>, case 639: <D.22280>, case 640: <D.22282>, case 641: <D.22284>, case 642: <D.22286>>
          <D.22276>:
          D.22344 = arg1->data.op[0].const_val;
          D.22374 = (int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22410 = (int) D.22345;
          D.22467 = D.22374 == D.22410;
          res = (gboolean) D.22467;
          goto <D.22277>;
          <D.22278>:
          D.22344 = arg1->data.op[0].const_val;
          D.22374 = (int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22410 = (int) D.22345;
          D.22467 = D.22374 == D.22410;
          res = (gboolean) D.22467;
          goto <D.22277>;
          <D.22279>:
          D.22344 = arg1->data.op[0].const_val;
          D.22374 = (int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22410 = (int) D.22345;
          D.22468 = D.22374 > D.22410;
          res = (gboolean) D.22468;
          goto <D.22277>;
          <D.22280>:
          D.22344 = arg1->data.op[0].const_val;
          D.22374 = (int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22410 = (int) D.22345;
          D.22468 = D.22374 > D.22410;
          res = (gboolean) D.22468;
          goto <D.22277>;
          <D.22281>:
          D.22344 = arg1->data.op[0].const_val;
          D.22380 = (unsigned int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22393 = (unsigned int) D.22345;
          D.22469 = D.22380 > D.22393;
          res = (gboolean) D.22469;
          goto <D.22277>;
          <D.22282>:
          D.22344 = arg1->data.op[0].const_val;
          D.22380 = (unsigned int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22393 = (unsigned int) D.22345;
          D.22469 = D.22380 > D.22393;
          res = (gboolean) D.22469;
          goto <D.22277>;
          <D.22283>:
          D.22344 = arg1->data.op[0].const_val;
          D.22374 = (int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22410 = (int) D.22345;
          D.22470 = D.22374 < D.22410;
          res = (gboolean) D.22470;
          goto <D.22277>;
          <D.22284>:
          D.22344 = arg1->data.op[0].const_val;
          D.22374 = (int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22410 = (int) D.22345;
          D.22470 = D.22374 < D.22410;
          res = (gboolean) D.22470;
          goto <D.22277>;
          <D.22285>:
          D.22344 = arg1->data.op[0].const_val;
          D.22380 = (unsigned int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22393 = (unsigned int) D.22345;
          D.22471 = D.22380 < D.22393;
          res = (gboolean) D.22471;
          goto <D.22277>;
          <D.22286>:
          D.22344 = arg1->data.op[0].const_val;
          D.22380 = (unsigned int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22393 = (unsigned int) D.22345;
          D.22471 = D.22380 < D.22393;
          res = (gboolean) D.22471;
          goto <D.22277>;
          <D.22472>:
          <D.22277>:
          if (overwrite != 0) goto <D.22473>; else goto <D.22474>;
          <D.22473>:
          ins->opcode = 316;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.22475 = ins->sreg3;
          ins->sreg2 = D.22475;
          D.22362 = ins->sreg2;
          ins->sreg1 = D.22362;
          next->opcode = 362;
          D.22476 = (long int) res;
          next->data.op[0].const_val = D.22476;
          next->sreg3 = -1;
          D.22477 = next->sreg3;
          next->sreg2 = D.22477;
          D.22478 = next->sreg2;
          next->sreg1 = D.22478;
          goto <D.22479>;
          <D.22474>:
          if (dest == 0B) goto <D.22480>; else goto <D.22481>;
          <D.22480>:
          D.22337 = cfg->mempool;
          dest = mono_mempool_alloc (D.22337, 80);
          dest->data.op[1].const_val = 0;
          D.22338 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.22338;
          dest->prev = 0B;
          D.22339 = dest->prev;
          dest->next = D.22339;
          dest->opcode = 65535;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.22340 = dest->sreg3;
          dest->sreg2 = D.22340;
          D.22341 = dest->sreg2;
          dest->sreg1 = D.22341;
          D.22342 = cfg->ip;
          dest->cil_code = D.22342;
          D.22343 = ins->dreg;
          dest->dreg = D.22343;
          <D.22481>:
          dest->opcode = 362;
          D.22476 = (long int) res;
          dest->data.op[0].const_val = D.22476;
          <D.22479>:
          goto <D.22287>;
          <D.22288>:
          <D.22289>:
          <D.22290>:
          <D.22291>:
          <D.22292>:
          <D.22293>:
          <D.22294>:
          <D.22295>:
          <D.22296>:
          <D.22297>:
          D.22465 = next->opcode;
          D.22466 = (int) D.22465;
          switch (D.22466) <default: <D.22487>, case 648: <D.22298>, case 649: <D.22303>, case 650: <D.22301>, case 651: <D.22307>, case 652: <D.22305>, case 653: <D.22300>, case 654: <D.22304>, case 655: <D.22302>, case 656: <D.22308>, case 657: <D.22306>>
          <D.22298>:
          D.22344 = arg1->data.op[0].const_val;
          D.22374 = (int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22410 = (int) D.22345;
          D.22467 = D.22374 == D.22410;
          res = (gboolean) D.22467;
          goto <D.22299>;
          <D.22300>:
          D.22344 = arg1->data.op[0].const_val;
          D.22380 = (unsigned int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22393 = (unsigned int) D.22345;
          D.22482 = D.22380 != D.22393;
          res = (gboolean) D.22482;
          goto <D.22299>;
          <D.22301>:
          D.22344 = arg1->data.op[0].const_val;
          D.22374 = (int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22410 = (int) D.22345;
          D.22468 = D.22374 > D.22410;
          res = (gboolean) D.22468;
          goto <D.22299>;
          <D.22302>:
          D.22344 = arg1->data.op[0].const_val;
          D.22380 = (unsigned int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22393 = (unsigned int) D.22345;
          D.22469 = D.22380 > D.22393;
          res = (gboolean) D.22469;
          goto <D.22299>;
          <D.22303>:
          D.22344 = arg1->data.op[0].const_val;
          D.22374 = (int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22410 = (int) D.22345;
          D.22483 = D.22374 >= D.22410;
          res = (gboolean) D.22483;
          goto <D.22299>;
          <D.22304>:
          D.22344 = arg1->data.op[0].const_val;
          D.22380 = (unsigned int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22393 = (unsigned int) D.22345;
          D.22484 = D.22380 >= D.22393;
          res = (gboolean) D.22484;
          goto <D.22299>;
          <D.22305>:
          D.22344 = arg1->data.op[0].const_val;
          D.22374 = (int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22410 = (int) D.22345;
          D.22470 = D.22374 < D.22410;
          res = (gboolean) D.22470;
          goto <D.22299>;
          <D.22306>:
          D.22344 = arg1->data.op[0].const_val;
          D.22380 = (unsigned int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22393 = (unsigned int) D.22345;
          D.22471 = D.22380 < D.22393;
          res = (gboolean) D.22471;
          goto <D.22299>;
          <D.22307>:
          D.22344 = arg1->data.op[0].const_val;
          D.22374 = (int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22410 = (int) D.22345;
          D.22485 = D.22374 <= D.22410;
          res = (gboolean) D.22485;
          goto <D.22299>;
          <D.22308>:
          D.22344 = arg1->data.op[0].const_val;
          D.22380 = (unsigned int) D.22344;
          D.22345 = arg2->data.op[0].const_val;
          D.22393 = (unsigned int) D.22345;
          D.22486 = D.22380 <= D.22393;
          res = (gboolean) D.22486;
          goto <D.22299>;
          <D.22487>:
          <D.22299>:
          if (overwrite != 0) goto <D.22488>; else goto <D.22489>;
          <D.22488>:
          if (res != 0) goto <D.22490>; else goto <D.22491>;
          <D.22490>:
          D.22492 = next->flags;
          D.22493 = D.22492 | 8;
          next->flags = D.22493;
          goto <D.22494>;
          <D.22491>:
          D.22492 = next->flags;
          D.22495 = D.22492 | 16;
          next->flags = D.22495;
          <D.22494>:
          goto <D.22496>;
          <D.22489>:
          if (dest == 0B) goto <D.22497>; else goto <D.22498>;
          <D.22497>:
          D.22337 = cfg->mempool;
          dest = mono_mempool_alloc (D.22337, 80);
          dest->data.op[1].const_val = 0;
          D.22338 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.22338;
          dest->prev = 0B;
          D.22339 = dest->prev;
          dest->next = D.22339;
          dest->opcode = 65535;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.22340 = dest->sreg3;
          dest->sreg2 = D.22340;
          D.22341 = dest->sreg2;
          dest->sreg1 = D.22341;
          D.22342 = cfg->ip;
          dest->cil_code = D.22342;
          D.22343 = ins->dreg;
          dest->dreg = D.22343;
          <D.22498>:
          dest->opcode = 362;
          D.22476 = (long int) res;
          dest->data.op[0].const_val = D.22476;
          <D.22496>:
          goto <D.22287>;
          <D.22309>:
          <D.22310>:
          D.22499 = next->next;
          if (D.22499 == 0B) goto <D.22500>; else goto <D.22501>;
          <D.22500>:
          if (overwrite != 0) goto <D.22502>; else goto <D.22503>;
          <D.22502>:
          ins->opcode = 316;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.22475 = ins->sreg3;
          ins->sreg2 = D.22475;
          D.22362 = ins->sreg2;
          ins->sreg1 = D.22362;
          <D.22503>:
          <D.22501>:
          goto <D.22287>;
          <D.22311>:
          D.22407 = 0B;
          return D.22407;
          <D.22287>:
        }
        <D.22464>:
        <D.22461>:
        <D.22459>:
        goto <D.22201>;
      }
    finally
      {
        dummy_arg2 = {CLOBBER};
      }
  }
  <D.22312>:
  D.22332 = arg1->opcode;
  if (D.22332 == 365) goto <D.22504>; else goto <D.22505>;
  <D.22504>:
  if (dest == 0B) goto <D.22506>; else goto <D.22507>;
  <D.22506>:
  D.22337 = cfg->mempool;
  dest = mono_mempool_alloc (D.22337, 80);
  dest->data.op[1].const_val = 0;
  D.22338 = dest->data.op[1].const_val;
  dest->data.op[0].const_val = D.22338;
  dest->prev = 0B;
  D.22339 = dest->prev;
  dest->next = D.22339;
  dest->opcode = 65535;
  dest->flags = 0;
  dest->type = 0;
  dest->dreg = -1;
  dest->sreg3 = -1;
  D.22340 = dest->sreg3;
  dest->sreg2 = D.22340;
  D.22341 = dest->sreg2;
  dest->sreg1 = D.22341;
  D.22342 = cfg->ip;
  dest->cil_code = D.22342;
  D.22343 = ins->dreg;
  dest->dreg = D.22343;
  <D.22507>:
  dest->opcode = 365;
  dest->sreg1 = -1;
  D.22508 = arg1->data.op[0].p;
  dest->data.op[0].p = D.22508;
  <D.22505>:
  goto <D.22201>;
  <D.22313>:
  D.22407 = 0B;
  return D.22407;
  <D.22201>:
  D.22407 = dest;
  return D.22407;
}


