__attribute__((visibility ("hidden")))
mono_decompose_opcode (struct MonoCompile * cfg, struct MonoInst * ins)
{
  unsigned char D.24483;
  short unsigned int D.24484;
  int D.24485;
  struct MonoMemPool * D.24487;
  long int D.24488;
  struct MonoInst * D.24489;
  int D.24490;
  int D.24491;
  const unsigned char * D.24492;
  struct MonoBasicBlock * D.24493;
  struct MonoInst * D.24494;
  long int D.24499;
  struct MonoInst * D.24500;
  int D.24501;
  int D.24502;
  long int D.24507;
  struct MonoInst * D.24508;
  int D.24509;
  int D.24510;
  long int D.24515;
  struct MonoInst * D.24516;
  int D.24517;
  int D.24518;
  long int D.24522;
  struct MonoInst * D.24523;
  int D.24524;
  int D.24525;
  int D.24526;
  long int D.24530;
  struct MonoInst * D.24531;
  int D.24532;
  int D.24533;
  long int D.24537;
  struct MonoInst * D.24538;
  int D.24539;
  int D.24540;
  long int D.24544;
  struct MonoInst * D.24545;
  int D.24546;
  int D.24547;
  long int D.24551;
  struct MonoInst * D.24552;
  int D.24553;
  int D.24554;
  int D.24555;
  int D.24559;
  int D.24560;
  long int D.24561;
  struct MonoInst * D.24562;
  int D.24563;
  int D.24564;
  long int D.24568;
  struct MonoInst * D.24569;
  int D.24570;
  int D.24571;
  long int D.24575;
  struct MonoInst * D.24576;
  int D.24577;
  int D.24578;
  long int D.24582;
  struct MonoInst * D.24583;
  int D.24584;
  int D.24585;
  long int D.24589;
  struct MonoInst * D.24590;
  int D.24591;
  int D.24592;
  long int D.24596;
  struct MonoInst * D.24597;
  int D.24598;
  int D.24599;
  long int D.24603;
  struct MonoInst * D.24604;
  int D.24605;
  int D.24606;
  long int D.24610;
  struct MonoInst * D.24611;
  int D.24612;
  int D.24613;
  long int D.24617;
  struct MonoInst * D.24618;
  int D.24619;
  int D.24620;
  long int D.24624;
  struct MonoInst * D.24625;
  int D.24626;
  int D.24627;
  long int D.24631;
  struct MonoInst * D.24632;
  int D.24633;
  int D.24634;
  long int D.24638;
  struct MonoInst * D.24639;
  int D.24640;
  int D.24641;
  long int D.24645;
  struct MonoInst * D.24646;
  int D.24647;
  int D.24648;
  long int D.24652;
  struct MonoInst * D.24653;
  int D.24654;
  int D.24655;
  long int D.24659;
  struct MonoInst * D.24660;
  int D.24661;
  int D.24662;
  long int D.24666;
  struct MonoInst * D.24667;
  int D.24668;
  int D.24669;
  long int D.24673;
  struct MonoInst * D.24674;
  int D.24675;
  int D.24676;
  long int D.24680;
  struct MonoInst * D.24681;
  int D.24682;
  int D.24683;
  long int D.24687;
  struct MonoInst * D.24688;
  int D.24689;
  int D.24690;
  long int D.24694;
  struct MonoInst * D.24695;
  int D.24696;
  int D.24697;
  gchar * D.24701;
  int D.24704;
  struct MonoMethodSignature * D.24711;
  long unsigned int D.24712;
  long unsigned int D.24713;
  _Bool D.24714;
  long int D.24715;
  long int D.24716;
  short unsigned int D.24719;
  _Bool D.24720;
  long int D.24721;
  long int D.24722;
  unsigned int D.24725;
  unsigned int D.24726;
  int D.24729;
  signed char D.24730;
  int D.24731;
  _Bool D.24732;
  long int D.24733;
  long int D.24734;
  long unsigned int D.24737;
  long unsigned int D.24738;
  struct MonoInst * * D.24739;
  void * D.24740;
  struct MonoInst * D.24741;
  long int D.24742;
  struct MonoInst * D.24743;
  int D.24744;
  int D.24745;
  int D.24746;
  const void * D.24747;
  struct MonoInst * repl.0;
  unsigned char D.24753;
  struct MonoInst * D.24754;
  _Bool D.24755;
  long int D.24756;
  long int D.24757;
  _Bool D.24760;
  long int D.24761;
  long int D.24762;
  struct MonoInst * repl;
  int type;
  int dreg;
  gboolean emulate;

  try
    {
      repl = 0B;
      D.24483 = ins->type;
      type = (int) D.24483;
      dreg = ins->dreg;
      emulate = 0;
      mono_arch_decompose_opts (cfg, ins);
      D.24484 = ins->opcode;
      D.24485 = (int) D.24484;
      switch (D.24485) <default: <D.24294>, case 582: <D.24277>, case 586: <D.24278>, case 589: <D.24282>, case 592: <D.24281>, case 595: <D.24233>, case 596: <D.24236>, case 599: <D.24238>, case 600: <D.24240>, case 601: <D.24248>, case 602: <D.24263>, case 603: <D.24273>, case 605: <D.24253>, case 606: <D.24268>, case 607: <D.24280>, case 611: <D.24242>, case 612: <D.24252>, case 613: <D.24257>, case 614: <D.24267>, case 615: <D.24279>, case 616: <D.24272>, case 682: <D.24283>, case 696: <D.24284>, case 697: <D.24285>, case 698: <D.24286>, case 699: <D.24287>, case 700: <D.24288>, case 701: <D.24289>, case 702: <D.24290>, case 703: <D.24291>, case 704: <D.24292>, case 705: <D.24293>>
      <D.24233>:
      if (0 != 0) goto <D.24234>; else goto <D.24486>;
      <D.24486>:
      ins->opcode = 623;
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24488 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24488;
        inst->prev = 0B;
        D.24489 = inst->prev;
        inst->next = D.24489;
        inst->opcode = 475;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24490 = inst->sreg3;
        inst->sreg2 = D.24490;
        D.24491 = inst->sreg2;
        inst->sreg1 = D.24491;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24495>; else goto <D.24496>;
        <D.24495>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24497>;
        <D.24496>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24497>:
      }
      goto <D.24234>;
      <D.24236>:
      if (0 != 0) goto <D.24234>; else goto <D.24498>;
      <D.24498>:
      ins->opcode = 623;
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24499 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24499;
        inst->prev = 0B;
        D.24500 = inst->prev;
        inst->next = D.24500;
        inst->opcode = 477;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24501 = inst->sreg3;
        inst->sreg2 = D.24501;
        D.24502 = inst->sreg2;
        inst->sreg1 = D.24502;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24503>; else goto <D.24504>;
        <D.24503>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24505>;
        <D.24504>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24505>:
      }
      goto <D.24234>;
      <D.24238>:
      if (0 != 0) goto <D.24234>; else goto <D.24506>;
      <D.24506>:
      ins->opcode = 624;
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24507 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24507;
        inst->prev = 0B;
        D.24508 = inst->prev;
        inst->next = D.24508;
        inst->opcode = 475;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24509 = inst->sreg3;
        inst->sreg2 = D.24509;
        D.24510 = inst->sreg2;
        inst->sreg1 = D.24510;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24511>; else goto <D.24512>;
        <D.24511>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24513>;
        <D.24512>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24513>:
      }
      goto <D.24234>;
      <D.24240>:
      if (0 != 0) goto <D.24234>; else goto <D.24514>;
      <D.24514>:
      ins->opcode = 624;
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24515 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24515;
        inst->prev = 0B;
        D.24516 = inst->prev;
        inst->next = D.24516;
        inst->opcode = 477;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24517 = inst->sreg3;
        inst->sreg2 = D.24517;
        D.24518 = inst->sreg2;
        inst->sreg1 = D.24518;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24519>; else goto <D.24520>;
        <D.24519>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24521>;
        <D.24520>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24521>:
      }
      goto <D.24234>;
      <D.24242>:
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24522 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24522;
        inst->prev = 0B;
        D.24523 = inst->prev;
        inst->next = D.24523;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24524 = inst->sreg3;
        inst->sreg2 = D.24524;
        D.24525 = inst->sreg2;
        inst->sreg1 = D.24525;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        inst->data.op[1].const_val = 127;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24527>; else goto <D.24528>;
        <D.24527>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24529>;
        <D.24528>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24529>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24530 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24530;
        inst->prev = 0B;
        D.24531 = inst->prev;
        inst->next = D.24531;
        inst->opcode = 467;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24532 = inst->sreg3;
        inst->sreg2 = D.24532;
        D.24533 = inst->sreg2;
        inst->sreg1 = D.24533;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24534>; else goto <D.24535>;
        <D.24534>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24536>;
        <D.24535>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24536>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24537 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24537;
        inst->prev = 0B;
        D.24538 = inst->prev;
        inst->next = D.24538;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24539 = inst->sreg3;
        inst->sreg2 = D.24539;
        D.24540 = inst->sreg2;
        inst->sreg1 = D.24540;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        inst->data.op[1].const_val = -128;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24541>; else goto <D.24542>;
        <D.24541>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24543>;
        <D.24542>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24543>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24544 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24544;
        inst->prev = 0B;
        D.24545 = inst->prev;
        inst->next = D.24545;
        inst->opcode = 469;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24546 = inst->sreg3;
        inst->sreg2 = D.24546;
        D.24547 = inst->sreg2;
        inst->sreg1 = D.24547;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24548>; else goto <D.24549>;
        <D.24548>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24550>;
        <D.24549>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24550>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24551 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24551;
        inst->prev = 0B;
        D.24552 = inst->prev;
        inst->next = D.24552;
        inst->opcode = 580;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24553 = inst->sreg3;
        inst->sreg2 = D.24553;
        D.24554 = inst->sreg2;
        inst->sreg1 = D.24554;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24555 = ins->dreg;
        inst->dreg = D.24555;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24556>; else goto <D.24557>;
        <D.24556>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24558>;
        <D.24557>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24558>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24559 = ins->sreg3;
      ins->sreg2 = D.24559;
      D.24560 = ins->sreg2;
      ins->sreg1 = D.24560;
      goto <D.24234>;
      <D.24248>:
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24561 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24561;
        inst->prev = 0B;
        D.24562 = inst->prev;
        inst->next = D.24562;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24563 = inst->sreg3;
        inst->sreg2 = D.24563;
        D.24564 = inst->sreg2;
        inst->sreg1 = D.24564;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        inst->data.op[1].const_val = 127;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24565>; else goto <D.24566>;
        <D.24565>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24567>;
        <D.24566>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24567>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24568 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24568;
        inst->prev = 0B;
        D.24569 = inst->prev;
        inst->next = D.24569;
        inst->opcode = 472;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24570 = inst->sreg3;
        inst->sreg2 = D.24570;
        D.24571 = inst->sreg2;
        inst->sreg1 = D.24571;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24572>; else goto <D.24573>;
        <D.24572>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24574>;
        <D.24573>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24574>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24575 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24575;
        inst->prev = 0B;
        D.24576 = inst->prev;
        inst->next = D.24576;
        inst->opcode = 580;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24577 = inst->sreg3;
        inst->sreg2 = D.24577;
        D.24578 = inst->sreg2;
        inst->sreg1 = D.24578;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24555 = ins->dreg;
        inst->dreg = D.24555;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24579>; else goto <D.24580>;
        <D.24579>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24581>;
        <D.24580>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24581>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24559 = ins->sreg3;
      ins->sreg2 = D.24559;
      D.24560 = ins->sreg2;
      ins->sreg1 = D.24560;
      goto <D.24234>;
      <D.24252>:
      <D.24253>:
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24582 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24582;
        inst->prev = 0B;
        D.24583 = inst->prev;
        inst->next = D.24583;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24584 = inst->sreg3;
        inst->sreg2 = D.24584;
        D.24585 = inst->sreg2;
        inst->sreg1 = D.24585;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        inst->data.op[1].const_val = 255;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24586>; else goto <D.24587>;
        <D.24586>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24588>;
        <D.24587>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24588>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24589 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24589;
        inst->prev = 0B;
        D.24590 = inst->prev;
        inst->next = D.24590;
        inst->opcode = 472;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24591 = inst->sreg3;
        inst->sreg2 = D.24591;
        D.24592 = inst->sreg2;
        inst->sreg1 = D.24592;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24593>; else goto <D.24594>;
        <D.24593>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24595>;
        <D.24594>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24595>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24596 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24596;
        inst->prev = 0B;
        D.24597 = inst->prev;
        inst->next = D.24597;
        inst->opcode = 632;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24598 = inst->sreg3;
        inst->sreg2 = D.24598;
        D.24599 = inst->sreg2;
        inst->sreg1 = D.24599;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24555 = ins->dreg;
        inst->dreg = D.24555;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        inst->data.op[1].const_val = 255;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24600>; else goto <D.24601>;
        <D.24600>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24602>;
        <D.24601>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24602>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24559 = ins->sreg3;
      ins->sreg2 = D.24559;
      D.24560 = ins->sreg2;
      ins->sreg1 = D.24560;
      goto <D.24234>;
      <D.24257>:
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24603 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24603;
        inst->prev = 0B;
        D.24604 = inst->prev;
        inst->next = D.24604;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24605 = inst->sreg3;
        inst->sreg2 = D.24605;
        D.24606 = inst->sreg2;
        inst->sreg1 = D.24606;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        inst->data.op[1].const_val = 32767;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24607>; else goto <D.24608>;
        <D.24607>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24609>;
        <D.24608>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24609>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24610 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24610;
        inst->prev = 0B;
        D.24611 = inst->prev;
        inst->next = D.24611;
        inst->opcode = 467;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24612 = inst->sreg3;
        inst->sreg2 = D.24612;
        D.24613 = inst->sreg2;
        inst->sreg1 = D.24613;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24614>; else goto <D.24615>;
        <D.24614>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24616>;
        <D.24615>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24616>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24617 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24617;
        inst->prev = 0B;
        D.24618 = inst->prev;
        inst->next = D.24618;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24619 = inst->sreg3;
        inst->sreg2 = D.24619;
        D.24620 = inst->sreg2;
        inst->sreg1 = D.24620;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        inst->data.op[1].const_val = -32768;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24621>; else goto <D.24622>;
        <D.24621>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24623>;
        <D.24622>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24623>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24624 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24624;
        inst->prev = 0B;
        D.24625 = inst->prev;
        inst->next = D.24625;
        inst->opcode = 469;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24626 = inst->sreg3;
        inst->sreg2 = D.24626;
        D.24627 = inst->sreg2;
        inst->sreg1 = D.24627;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24628>; else goto <D.24629>;
        <D.24628>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24630>;
        <D.24629>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24630>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24631 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24631;
        inst->prev = 0B;
        D.24632 = inst->prev;
        inst->next = D.24632;
        inst->opcode = 581;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24633 = inst->sreg3;
        inst->sreg2 = D.24633;
        D.24634 = inst->sreg2;
        inst->sreg1 = D.24634;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24555 = ins->dreg;
        inst->dreg = D.24555;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24635>; else goto <D.24636>;
        <D.24635>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24637>;
        <D.24636>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24637>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24559 = ins->sreg3;
      ins->sreg2 = D.24559;
      D.24560 = ins->sreg2;
      ins->sreg1 = D.24560;
      goto <D.24234>;
      <D.24263>:
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24638 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24638;
        inst->prev = 0B;
        D.24639 = inst->prev;
        inst->next = D.24639;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24640 = inst->sreg3;
        inst->sreg2 = D.24640;
        D.24641 = inst->sreg2;
        inst->sreg1 = D.24641;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        inst->data.op[1].const_val = 32767;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24642>; else goto <D.24643>;
        <D.24642>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24644>;
        <D.24643>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24644>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24645 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24645;
        inst->prev = 0B;
        D.24646 = inst->prev;
        inst->next = D.24646;
        inst->opcode = 472;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24647 = inst->sreg3;
        inst->sreg2 = D.24647;
        D.24648 = inst->sreg2;
        inst->sreg1 = D.24648;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24649>; else goto <D.24650>;
        <D.24649>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24651>;
        <D.24650>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24651>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24652 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24652;
        inst->prev = 0B;
        D.24653 = inst->prev;
        inst->next = D.24653;
        inst->opcode = 581;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24654 = inst->sreg3;
        inst->sreg2 = D.24654;
        D.24655 = inst->sreg2;
        inst->sreg1 = D.24655;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24555 = ins->dreg;
        inst->dreg = D.24555;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24656>; else goto <D.24657>;
        <D.24656>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24658>;
        <D.24657>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24658>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24559 = ins->sreg3;
      ins->sreg2 = D.24559;
      D.24560 = ins->sreg2;
      ins->sreg1 = D.24560;
      goto <D.24234>;
      <D.24267>:
      <D.24268>:
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24659 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24659;
        inst->prev = 0B;
        D.24660 = inst->prev;
        inst->next = D.24660;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24661 = inst->sreg3;
        inst->sreg2 = D.24661;
        D.24662 = inst->sreg2;
        inst->sreg1 = D.24662;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        inst->data.op[1].const_val = 65535;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24663>; else goto <D.24664>;
        <D.24663>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24665>;
        <D.24664>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24665>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24666 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24666;
        inst->prev = 0B;
        D.24667 = inst->prev;
        inst->next = D.24667;
        inst->opcode = 472;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24668 = inst->sreg3;
        inst->sreg2 = D.24668;
        D.24669 = inst->sreg2;
        inst->sreg1 = D.24669;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24670>; else goto <D.24671>;
        <D.24670>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24672>;
        <D.24671>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24672>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24673 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24673;
        inst->prev = 0B;
        D.24674 = inst->prev;
        inst->next = D.24674;
        inst->opcode = 632;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24675 = inst->sreg3;
        inst->sreg2 = D.24675;
        D.24676 = inst->sreg2;
        inst->sreg1 = D.24676;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24555 = ins->dreg;
        inst->dreg = D.24555;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        inst->data.op[1].const_val = 65535;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24677>; else goto <D.24678>;
        <D.24677>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24679>;
        <D.24678>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24679>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24559 = ins->sreg3;
      ins->sreg2 = D.24559;
      D.24560 = ins->sreg2;
      ins->sreg1 = D.24560;
      goto <D.24234>;
      <D.24272>:
      <D.24273>:
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24680 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24680;
        inst->prev = 0B;
        D.24681 = inst->prev;
        inst->next = D.24681;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24682 = inst->sreg3;
        inst->sreg2 = D.24682;
        D.24683 = inst->sreg2;
        inst->sreg1 = D.24683;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        inst->data.op[1].const_val = 0;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24684>; else goto <D.24685>;
        <D.24684>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24686>;
        <D.24685>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24686>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24687 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24687;
        inst->prev = 0B;
        D.24688 = inst->prev;
        inst->next = D.24688;
        inst->opcode = 469;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24689 = inst->sreg3;
        inst->sreg2 = D.24689;
        D.24690 = inst->sreg2;
        inst->sreg1 = D.24690;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        inst->data.op[1].p = "OverflowException";
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24691>; else goto <D.24692>;
        <D.24691>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24693>;
        <D.24692>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24693>:
      }
      {
        struct MonoInst * inst;

        D.24487 = cfg->mempool;
        inst = mono_mempool_alloc (D.24487, 80);
        inst->data.op[1].const_val = 0;
        D.24694 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24694;
        inst->prev = 0B;
        D.24695 = inst->prev;
        inst->next = D.24695;
        inst->opcode = 424;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24696 = inst->sreg3;
        inst->sreg2 = D.24696;
        D.24697 = inst->sreg2;
        inst->sreg1 = D.24697;
        D.24492 = cfg->ip;
        inst->cil_code = D.24492;
        D.24555 = ins->dreg;
        inst->dreg = D.24555;
        D.24526 = ins->sreg1;
        inst->sreg1 = D.24526;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        if (D.24494 != 0B) goto <D.24698>; else goto <D.24699>;
        <D.24698>:
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        D.24494->next = inst;
        D.24493 = cfg->cbb;
        D.24494 = D.24493->last_ins;
        inst->prev = D.24494;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        goto <D.24700>;
        <D.24699>:
        D.24493 = cfg->cbb;
        D.24493 = cfg->cbb;
        D.24493->last_ins = inst;
        D.24494 = D.24493->last_ins;
        D.24493->code = D.24494;
        <D.24700>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24559 = ins->sreg3;
      ins->sreg2 = D.24559;
      D.24560 = ins->sreg2;
      ins->sreg1 = D.24560;
      goto <D.24234>;
      <D.24277>:
      <D.24278>:
      <D.24279>:
      <D.24280>:
      ins->opcode = 424;
      goto <D.24234>;
      <D.24281>:
      ins->opcode = 762;
      goto <D.24234>;
      <D.24282>:
      ins->opcode = 765;
      goto <D.24234>;
      <D.24283>:
      ins->opcode = 426;
      goto <D.24234>;
      <D.24284>:
      <D.24285>:
      <D.24286>:
      <D.24287>:
      <D.24288>:
      <D.24289>:
      <D.24290>:
      <D.24291>:
      <D.24292>:
      <D.24293>:
      cfg->exception_type = 3;
      D.24701 = monoeg_g_strdup_printf ("float conv.ovf.un opcodes not supported.");
      cfg->exception_message = D.24701;
      goto <D.24234>;
      <D.24294>:
      emulate = 1;
      goto <D.24234>;
      <D.24234>:
      if (emulate != 0) goto <D.24702>; else goto <D.24703>;
      <D.24702>:
      {
        struct MonoJitICallInfo * info;

        info = 0B;
        D.24704 = decompose_long_opcode (cfg, ins, &repl);
        if (D.24704 != 0) goto <D.24705>; else goto <D.24706>;
        <D.24705>:
        emulate = 0;
        <D.24706>:
        if (emulate != 0) goto <D.24707>; else goto <D.24708>;
        <D.24707>:
        D.24484 = ins->opcode;
        D.24485 = (int) D.24484;
        info = mono_find_jit_opcode_emulation (D.24485);
        <D.24708>:
        if (info != 0B) goto <D.24709>; else goto <D.24710>;
        <D.24709>:
        {
          struct MonoInst * * args;
          struct MonoInst * call;

          D.24711 = info->sig;
          D.24712 = BIT_FIELD_REF <*D.24711, 64, 64>;
          D.24713 = D.24712 & 512;
          D.24714 = D.24713 != 0;
          D.24715 = (long int) D.24714;
          D.24716 = __builtin_expect (D.24715, 0);
          if (D.24716 != 0) goto <D.24717>; else goto <D.24718>;
          <D.24717>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 468, "!info->sig->hasthis");
          <D.24718>:
          D.24711 = info->sig;
          D.24719 = D.24711->param_count;
          D.24720 = D.24719 > 3;
          D.24721 = (long int) D.24720;
          D.24722 = __builtin_expect (D.24721, 0);
          if (D.24722 != 0) goto <D.24723>; else goto <D.24724>;
          <D.24723>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 469, "info->sig->param_count <= MONO_MAX_SRC_REGS");
          <D.24724>:
          D.24487 = cfg->mempool;
          D.24711 = info->sig;
          D.24719 = D.24711->param_count;
          D.24725 = (unsigned int) D.24719;
          D.24726 = D.24725 * 8;
          args = mono_mempool_alloc0 (D.24487, D.24726);
          D.24711 = info->sig;
          D.24719 = D.24711->param_count;
          if (D.24719 != 0) goto <D.24727>; else goto <D.24728>;
          <D.24727>:
          {
            int sregs[3];
            int num_sregs;
            int i;

            try
              {
                D.24526 = ins->sreg1;
                sregs[0] = D.24526;
                D.24560 = ins->sreg2;
                sregs[1] = D.24560;
                D.24559 = ins->sreg3;
                sregs[2] = D.24559;
                D.24484 = ins->opcode;
                D.24485 = (int) D.24484;
                D.24729 = D.24485 + -313;
                D.24730 = ins_sreg_counts[D.24729];
                num_sregs = (int) D.24730;
                D.24711 = info->sig;
                D.24719 = D.24711->param_count;
                D.24731 = (int) D.24719;
                D.24732 = D.24731 != num_sregs;
                D.24733 = (long int) D.24732;
                D.24734 = __builtin_expect (D.24733, 0);
                if (D.24734 != 0) goto <D.24735>; else goto <D.24736>;
                <D.24735>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 476, "num_sregs == info->sig->param_count");
                <D.24736>:
                i = 0;
                goto <D.24302>;
                <D.24301>:
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24487 = cfg->mempool;
                D.24740 = mono_mempool_alloc (D.24487, 80);
                *D.24739 = D.24740;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24741->data.op[1].const_val = 0;
                D.24742 = D.24741->data.op[1].const_val;
                D.24741->data.op[0].const_val = D.24742;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24741->prev = 0B;
                D.24743 = D.24741->prev;
                D.24741->next = D.24743;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24741->opcode = 330;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24741->flags = 0;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24741->type = 0;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24741->dreg = -1;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24741->sreg3 = -1;
                D.24744 = D.24741->sreg3;
                D.24741->sreg2 = D.24744;
                D.24745 = D.24741->sreg2;
                D.24741->sreg1 = D.24745;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24492 = cfg->ip;
                D.24741->cil_code = D.24492;
                D.24737 = (long unsigned int) i;
                D.24738 = D.24737 * 8;
                D.24739 = args + D.24738;
                D.24741 = *D.24739;
                D.24746 = sregs[i];
                D.24741->dreg = D.24746;
                i = i + 1;
                <D.24302>:
                if (i < num_sregs) goto <D.24301>; else goto <D.24303>;
                <D.24303>:
              }
            finally
              {
                sregs = {CLOBBER};
              }
          }
          <D.24728>:
          D.24747 = mono_icall_get_wrapper (info);
          D.24711 = info->sig;
          call = mono_emit_native_call (cfg, D.24747, D.24711, args);
          D.24555 = ins->dreg;
          call->dreg = D.24555;
          ins->opcode = 316;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.24559 = ins->sreg3;
          ins->sreg2 = D.24559;
          D.24560 = ins->sreg2;
          ins->sreg1 = D.24560;
        }
        <D.24710>:
      }
      <D.24703>:
      D.24484 = ins->opcode;
      if (D.24484 == 316) goto <D.24748>; else goto <D.24749>;
      <D.24748>:
      repl.0 = repl;
      if (repl.0 != 0B) goto <D.24751>; else goto <D.24752>;
      <D.24751>:
      repl.0 = repl;
      D.24753 = (unsigned char) type;
      repl.0->type = D.24753;
      D.24754 = repl;
      return D.24754;
      <D.24752>:
      D.24493 = cfg->cbb;
      ins = D.24493->last_ins;
      D.24755 = ins == 0B;
      D.24756 = (long int) D.24755;
      D.24757 = __builtin_expect (D.24756, 0);
      if (D.24757 != 0) goto <D.24758>; else goto <D.24759>;
      <D.24758>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 497, "ins");
      <D.24759>:
      D.24753 = (unsigned char) type;
      ins->type = D.24753;
      D.24555 = ins->dreg;
      D.24760 = D.24555 != dreg;
      D.24761 = (long int) D.24760;
      D.24762 = __builtin_expect (D.24761, 0);
      if (D.24762 != 0) goto <D.24763>; else goto <D.24764>;
      <D.24763>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 499, "ins->dreg == dreg");
      <D.24764>:
      D.24754 = ins;
      return D.24754;
      <D.24749>:
      D.24754 = ins;
      return D.24754;
    }
  finally
    {
      repl = {CLOBBER};
    }
}


decompose_long_opcode (struct MonoCompile * cfg, struct MonoInst * ins, struct MonoInst * * repl_ins)
{
  short unsigned int D.24771;
  int D.24772;
  struct MonoMemPool * D.24773;
  long int D.24774;
  struct MonoInst * D.24775;
  int D.24776;
  int D.24777;
  const unsigned char * D.24778;
  int D.24779;
  int D.24780;
  struct MonoBasicBlock * D.24781;
  struct MonoInst * D.24782;
  int D.24786;
  int D.24787;
  long int D.24789;
  struct MonoInst * D.24790;
  short unsigned int D.24791;
  int D.24792;
  int D.24793;
  long int D.24797;
  struct MonoInst * D.24798;
  int D.24799;
  int D.24800;
  short unsigned int D.24805;
  long int D.24809;
  struct MonoInst * D.24810;
  int D.24811;
  int D.24812;
  short unsigned int D.24817;
  long int D.24821;
  struct MonoInst * D.24822;
  int D.24823;
  int D.24824;
  short unsigned int D.24829;
  long int D.24833;
  struct MonoInst * D.24834;
  int D.24835;
  int D.24836;
  long int D.24840;
  struct MonoInst * D.24841;
  int D.24842;
  int D.24843;
  long int _l.1;
  long int D.24847;
  long unsigned int D.24848;
  long int D.24849;
  long int D.24854;
  struct MonoInst * D.24855;
  int D.24856;
  int D.24857;
  long int D.24861;
  struct MonoInst * D.24862;
  int D.24863;
  int D.24864;
  long int D.24868;
  struct MonoInst * D.24869;
  int D.24870;
  int D.24871;
  long int D.24875;
  struct MonoInst * D.24876;
  int D.24877;
  int D.24878;
  long int _l.2;
  long int D.24882;
  long unsigned int D.24883;
  long int D.24884;
  long int D.24889;
  struct MonoInst * D.24890;
  int D.24891;
  int D.24892;
  long int D.24896;
  struct MonoInst * D.24897;
  int D.24898;
  int D.24899;
  long int _l.3;
  long int D.24903;
  long unsigned int D.24904;
  long int D.24905;
  long int D.24910;
  struct MonoInst * D.24911;
  int D.24912;
  int D.24913;
  long int D.24917;
  struct MonoInst * D.24918;
  int D.24919;
  int D.24920;
  long int D.24924;
  struct MonoInst * D.24925;
  int D.24926;
  int D.24927;
  long int _l.4;
  long int D.24931;
  long unsigned int D.24932;
  long int D.24933;
  long int D.24938;
  struct MonoInst * D.24939;
  int D.24940;
  int D.24941;
  long int D.24945;
  struct MonoInst * D.24946;
  int D.24947;
  int D.24948;
  long int D.24952;
  struct MonoInst * D.24953;
  int D.24954;
  int D.24955;
  long int _l.5;
  long int D.24959;
  long unsigned int D.24960;
  long int D.24961;
  long int D.24966;
  struct MonoInst * D.24967;
  int D.24968;
  int D.24969;
  long int D.24973;
  struct MonoInst * D.24974;
  int D.24975;
  int D.24976;
  long int D.24980;
  struct MonoInst * D.24981;
  int D.24982;
  int D.24983;
  long int _l.6;
  long int D.24987;
  long unsigned int D.24988;
  long int D.24989;
  long int D.24994;
  struct MonoInst * D.24995;
  int D.24996;
  int D.24997;
  long int D.25001;
  struct MonoInst * D.25002;
  int D.25003;
  int D.25004;
  long int D.25008;
  struct MonoInst * D.25009;
  int D.25010;
  int D.25011;
  long int _l.7;
  long int D.25015;
  long unsigned int D.25016;
  long int D.25017;
  long int D.25022;
  struct MonoInst * D.25023;
  int D.25024;
  int D.25025;
  long int D.25029;
  struct MonoInst * D.25030;
  int D.25031;
  int D.25032;
  long int _l.8;
  long int D.25036;
  long unsigned int D.25037;
  long int D.25038;
  long int D.25043;
  struct MonoInst * D.25044;
  int D.25045;
  int D.25046;
  long int D.25050;
  struct MonoInst * D.25051;
  int D.25052;
  int D.25053;
  long int D.25057;
  struct MonoInst * D.25058;
  int D.25059;
  int D.25060;
  long int _l.9;
  long int D.25064;
  long unsigned int D.25065;
  long int D.25066;
  long int D.25071;
  struct MonoInst * D.25072;
  int D.25073;
  int D.25074;
  long int D.25078;
  struct MonoInst * D.25079;
  int D.25080;
  int D.25081;
  long int D.25085;
  struct MonoInst * D.25086;
  int D.25087;
  int D.25088;
  long int _l.10;
  long int D.25092;
  long unsigned int D.25093;
  long int D.25094;
  long int D.25099;
  struct MonoInst * D.25100;
  int D.25101;
  int D.25102;
  long int D.25106;
  struct MonoInst * D.25107;
  int D.25108;
  int D.25109;
  long int D.25113;
  struct MonoInst * D.25114;
  int D.25115;
  int D.25116;
  long int _l.11;
  long int D.25120;
  long unsigned int D.25121;
  long int D.25122;
  long int D.25127;
  struct MonoInst * D.25128;
  int D.25129;
  int D.25130;
  long int D.25134;
  struct MonoInst * D.25135;
  int D.25136;
  int D.25137;
  long int D.25141;
  struct MonoInst * D.25142;
  int D.25143;
  int D.25144;
  long int _l.12;
  long int D.25148;
  long unsigned int D.25149;
  long int D.25150;
  long int D.25155;
  struct MonoInst * D.25156;
  int D.25157;
  int D.25158;
  long int D.25162;
  struct MonoInst * D.25163;
  int D.25164;
  int D.25165;
  long int _l.13;
  long int D.25169;
  long unsigned int D.25170;
  long int D.25171;
  long int D.25176;
  struct MonoInst * D.25177;
  int D.25178;
  int D.25179;
  long int D.25183;
  struct MonoInst * D.25184;
  int D.25185;
  int D.25186;
  long int D.25190;
  struct MonoInst * D.25191;
  int D.25192;
  int D.25193;
  long int _l.14;
  long int D.25197;
  long unsigned int D.25198;
  long int D.25199;
  long int D.25204;
  struct MonoInst * D.25205;
  int D.25206;
  int D.25207;
  long int D.25211;
  struct MonoInst * D.25212;
  int D.25213;
  int D.25214;
  long int D.25218;
  struct MonoInst * D.25219;
  int D.25220;
  int D.25221;
  long int _l.15;
  long int D.25225;
  long unsigned int D.25226;
  long int D.25227;
  long int D.25232;
  struct MonoInst * D.25233;
  int D.25234;
  int D.25235;
  long int D.25239;
  struct MonoInst * D.25240;
  int D.25241;
  int D.25242;
  long int _l.16;
  long int D.25246;
  long unsigned int D.25247;
  long int D.25248;
  long int D.25253;
  struct MonoInst * D.25254;
  int D.25255;
  int D.25256;
  long int D.25260;
  struct MonoInst * D.25261;
  int D.25262;
  int D.25263;
  long int D.25267;
  struct MonoInst * D.25268;
  int D.25269;
  int D.25270;
  long int _l.17;
  long int D.25274;
  long unsigned int D.25275;
  long int D.25276;
  long int D.25281;
  struct MonoInst * D.25282;
  int D.25283;
  int D.25284;
  long int D.25288;
  struct MonoInst * D.25289;
  int D.25290;
  int D.25291;
  long int D.25295;
  struct MonoInst * D.25296;
  int D.25297;
  int D.25298;
  long int _l.18;
  long int D.25302;
  long unsigned int D.25303;
  long int D.25304;
  long int D.25309;
  struct MonoInst * D.25310;
  int D.25311;
  int D.25312;
  long int D.25316;
  struct MonoInst * D.25317;
  int D.25318;
  int D.25319;
  long int D.25323;
  struct MonoInst * D.25324;
  int D.25325;
  int D.25326;
  long int _l.19;
  long int D.25330;
  long unsigned int D.25331;
  long int D.25332;
  long int D.25337;
  struct MonoInst * D.25338;
  int D.25339;
  int D.25340;
  long int D.25344;
  struct MonoInst * D.25345;
  int D.25346;
  int D.25347;
  gboolean D.25351;
  struct MonoInst * repl;

  repl = 0B;
  *repl_ins = 0B;
  D.24771 = ins->opcode;
  D.24772 = (int) D.24771;
  switch (D.24772) <default: <D.24224>, case 496: <D.24101>, case 497: <D.24103>, case 500: <D.24109>, case 501: <D.24105>, case 504: <D.24104>, case 505: <D.24208>, case 506: <D.24219>, case 507: <D.24111>, case 508: <D.24114>, case 511: <D.24117>, case 512: <D.24120>, case 513: <D.24144>, case 514: <D.24167>, case 515: <D.24190>, case 516: <D.24213>, case 517: <D.24154>, case 518: <D.24177>, case 519: <D.24203>, case 520: <D.24210>, case 521: <D.24212>, case 522: <D.24209>, case 523: <D.24136>, case 524: <D.24149>, case 525: <D.24159>, case 526: <D.24172>, case 527: <D.24182>, case 528: <D.24195>, case 529: <D.24211>, case 530: <D.24218>, case 537: <D.24106>, case 583: <D.24107>, case 587: <D.24108>, case 593: <D.24124>, case 594: <D.24126>, case 604: <D.24131>, case 608: <D.24132>, case 609: <D.24133>, case 610: <D.24134>, case 617: <D.24123>, case 618: <D.24125>>
  <D.24101>:
  ins->opcode = 762;
  goto <D.24102>;
  <D.24103>:
  <D.24104>:
  <D.24105>:
  <D.24106>:
  ins->opcode = 424;
  goto <D.24102>;
  <D.24107>:
  ins->opcode = 762;
  goto <D.24102>;
  <D.24108>:
  ins->opcode = 765;
  goto <D.24102>;
  <D.24109>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24774 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24774;
    inst->prev = 0B;
    D.24775 = inst->prev;
    inst->next = D.24775;
    inst->opcode = 637;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24776 = inst->sreg3;
    inst->sreg2 = D.24776;
    D.24777 = inst->sreg2;
    inst->sreg1 = D.24777;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    inst->data.op[1].const_val = 0;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24783>; else goto <D.24784>;
    <D.24783>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24785>;
    <D.24784>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24785>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24111>:
  if (0 != 0) goto <D.24102>; else goto <D.24788>;
  <D.24788>:
  {
    int opcode;

    opcode = 755;
    D.24773 = cfg->mempool;
    repl = mono_mempool_alloc (D.24773, 80);
    repl->data.op[1].const_val = 0;
    D.24789 = repl->data.op[1].const_val;
    repl->data.op[0].const_val = D.24789;
    repl->prev = 0B;
    D.24790 = repl->prev;
    repl->next = D.24790;
    D.24791 = (short unsigned int) opcode;
    repl->opcode = D.24791;
    repl->flags = 0;
    repl->type = 0;
    repl->dreg = -1;
    repl->sreg3 = -1;
    D.24792 = repl->sreg3;
    repl->sreg2 = D.24792;
    D.24793 = repl->sreg2;
    repl->sreg1 = D.24793;
    D.24778 = cfg->ip;
    repl->cil_code = D.24778;
    D.24779 = ins->dreg;
    repl->dreg = D.24779;
    D.24780 = ins->sreg1;
    repl->sreg1 = D.24780;
    D.24787 = ins->sreg2;
    repl->sreg2 = D.24787;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24794>; else goto <D.24795>;
    <D.24794>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = repl;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    repl->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = repl;
    goto <D.24796>;
    <D.24795>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = repl;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24796>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24797 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24797;
    inst->prev = 0B;
    D.24798 = inst->prev;
    inst->next = D.24798;
    inst->opcode = 461;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24799 = inst->sreg3;
    inst->sreg2 = D.24799;
    D.24800 = inst->sreg2;
    inst->sreg1 = D.24800;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24801>; else goto <D.24802>;
    <D.24801>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24803>;
    <D.24802>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24803>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24114>:
  if (0 != 0) goto <D.24102>; else goto <D.24804>;
  <D.24804>:
  {
    int opcode;

    opcode = 755;
    D.24773 = cfg->mempool;
    repl = mono_mempool_alloc (D.24773, 80);
    repl->data.op[1].const_val = 0;
    D.24789 = repl->data.op[1].const_val;
    repl->data.op[0].const_val = D.24789;
    repl->prev = 0B;
    D.24790 = repl->prev;
    repl->next = D.24790;
    D.24805 = (short unsigned int) opcode;
    repl->opcode = D.24805;
    repl->flags = 0;
    repl->type = 0;
    repl->dreg = -1;
    repl->sreg3 = -1;
    D.24792 = repl->sreg3;
    repl->sreg2 = D.24792;
    D.24793 = repl->sreg2;
    repl->sreg1 = D.24793;
    D.24778 = cfg->ip;
    repl->cil_code = D.24778;
    D.24779 = ins->dreg;
    repl->dreg = D.24779;
    D.24780 = ins->sreg1;
    repl->sreg1 = D.24780;
    D.24787 = ins->sreg2;
    repl->sreg2 = D.24787;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24806>; else goto <D.24807>;
    <D.24806>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = repl;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    repl->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = repl;
    goto <D.24808>;
    <D.24807>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = repl;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24808>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24809 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24809;
    inst->prev = 0B;
    D.24810 = inst->prev;
    inst->next = D.24810;
    inst->opcode = 463;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24811 = inst->sreg3;
    inst->sreg2 = D.24811;
    D.24812 = inst->sreg2;
    inst->sreg1 = D.24812;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24813>; else goto <D.24814>;
    <D.24813>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24815>;
    <D.24814>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24815>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24117>:
  if (0 != 0) goto <D.24102>; else goto <D.24816>;
  <D.24816>:
  {
    int opcode;

    opcode = 757;
    D.24773 = cfg->mempool;
    repl = mono_mempool_alloc (D.24773, 80);
    repl->data.op[1].const_val = 0;
    D.24789 = repl->data.op[1].const_val;
    repl->data.op[0].const_val = D.24789;
    repl->prev = 0B;
    D.24790 = repl->prev;
    repl->next = D.24790;
    D.24817 = (short unsigned int) opcode;
    repl->opcode = D.24817;
    repl->flags = 0;
    repl->type = 0;
    repl->dreg = -1;
    repl->sreg3 = -1;
    D.24792 = repl->sreg3;
    repl->sreg2 = D.24792;
    D.24793 = repl->sreg2;
    repl->sreg1 = D.24793;
    D.24778 = cfg->ip;
    repl->cil_code = D.24778;
    D.24779 = ins->dreg;
    repl->dreg = D.24779;
    D.24780 = ins->sreg1;
    repl->sreg1 = D.24780;
    D.24787 = ins->sreg2;
    repl->sreg2 = D.24787;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24818>; else goto <D.24819>;
    <D.24818>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = repl;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    repl->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = repl;
    goto <D.24820>;
    <D.24819>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = repl;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24820>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24821 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24821;
    inst->prev = 0B;
    D.24822 = inst->prev;
    inst->next = D.24822;
    inst->opcode = 461;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24823 = inst->sreg3;
    inst->sreg2 = D.24823;
    D.24824 = inst->sreg2;
    inst->sreg1 = D.24824;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24825>; else goto <D.24826>;
    <D.24825>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24827>;
    <D.24826>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24827>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24120>:
  if (0 != 0) goto <D.24102>; else goto <D.24828>;
  <D.24828>:
  {
    int opcode;

    opcode = 757;
    D.24773 = cfg->mempool;
    repl = mono_mempool_alloc (D.24773, 80);
    repl->data.op[1].const_val = 0;
    D.24789 = repl->data.op[1].const_val;
    repl->data.op[0].const_val = D.24789;
    repl->prev = 0B;
    D.24790 = repl->prev;
    repl->next = D.24790;
    D.24829 = (short unsigned int) opcode;
    repl->opcode = D.24829;
    repl->flags = 0;
    repl->type = 0;
    repl->dreg = -1;
    repl->sreg3 = -1;
    D.24792 = repl->sreg3;
    repl->sreg2 = D.24792;
    D.24793 = repl->sreg2;
    repl->sreg1 = D.24793;
    D.24778 = cfg->ip;
    repl->cil_code = D.24778;
    D.24779 = ins->dreg;
    repl->dreg = D.24779;
    D.24780 = ins->sreg1;
    repl->sreg1 = D.24780;
    D.24787 = ins->sreg2;
    repl->sreg2 = D.24787;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24830>; else goto <D.24831>;
    <D.24830>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = repl;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    repl->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = repl;
    goto <D.24832>;
    <D.24831>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = repl;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24832>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24833 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24833;
    inst->prev = 0B;
    D.24834 = inst->prev;
    inst->next = D.24834;
    inst->opcode = 463;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24835 = inst->sreg3;
    inst->sreg2 = D.24835;
    D.24836 = inst->sreg2;
    inst->sreg1 = D.24836;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24837>; else goto <D.24838>;
    <D.24837>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24839>;
    <D.24838>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24839>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24123>:
  <D.24124>:
  ins->opcode = 762;
  goto <D.24102>;
  <D.24125>:
  <D.24126>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24840 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24840;
    inst->prev = 0B;
    D.24841 = inst->prev;
    inst->next = D.24841;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24842 = inst->sreg3;
    inst->sreg2 = D.24842;
    D.24843 = inst->sreg2;
    inst->sreg1 = D.24843;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.24844>; else goto <D.24845>;
    <D.24844>:
    {
      guint64 _l;

      _l = 0;
      _l.1 = (long int) _l;
      D.24847 = _l.1 & 4294967295;
      inst->data.op[1].const_val = D.24847;
      D.24848 = _l >> 32;
      D.24849 = (long int) D.24848;
      inst->data.op[0].const_val = D.24849;
    }
    goto <D.24850>;
    <D.24845>:
    inst->data.op[1].const_val = 0;
    <D.24850>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24851>; else goto <D.24852>;
    <D.24851>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24853>;
    <D.24852>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24853>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24854 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24854;
    inst->prev = 0B;
    D.24855 = inst->prev;
    inst->next = D.24855;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24856 = inst->sreg3;
    inst->sreg2 = D.24856;
    D.24857 = inst->sreg2;
    inst->sreg1 = D.24857;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24858>; else goto <D.24859>;
    <D.24858>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24860>;
    <D.24859>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24860>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24861 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24861;
    inst->prev = 0B;
    D.24862 = inst->prev;
    inst->next = D.24862;
    inst->opcode = 765;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24863 = inst->sreg3;
    inst->sreg2 = D.24863;
    D.24864 = inst->sreg2;
    inst->sreg1 = D.24864;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24865>; else goto <D.24866>;
    <D.24865>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24867>;
    <D.24866>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24867>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24131>:
  <D.24132>:
  <D.24133>:
  <D.24134>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24868 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24868;
    inst->prev = 0B;
    D.24869 = inst->prev;
    inst->next = D.24869;
    inst->opcode = 637;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24870 = inst->sreg3;
    inst->sreg2 = D.24870;
    D.24871 = inst->sreg2;
    inst->sreg1 = D.24871;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    inst->data.op[1].const_val = 0;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24872>; else goto <D.24873>;
    <D.24872>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24874>;
    <D.24873>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24874>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24136>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24875 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24875;
    inst->prev = 0B;
    D.24876 = inst->prev;
    inst->next = D.24876;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24877 = inst->sreg3;
    inst->sreg2 = D.24877;
    D.24878 = inst->sreg2;
    inst->sreg1 = D.24878;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.24879>; else goto <D.24880>;
    <D.24879>:
    {
      guint64 _l;

      _l = 127;
      _l.2 = (long int) _l;
      D.24882 = _l.2 & 4294967295;
      inst->data.op[1].const_val = D.24882;
      D.24883 = _l >> 32;
      D.24884 = (long int) D.24883;
      inst->data.op[0].const_val = D.24884;
    }
    goto <D.24885>;
    <D.24880>:
    inst->data.op[1].const_val = 127;
    <D.24885>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24886>; else goto <D.24887>;
    <D.24886>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24888>;
    <D.24887>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24888>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24889 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24889;
    inst->prev = 0B;
    D.24890 = inst->prev;
    inst->next = D.24890;
    inst->opcode = 453;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24891 = inst->sreg3;
    inst->sreg2 = D.24891;
    D.24892 = inst->sreg2;
    inst->sreg1 = D.24892;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24893>; else goto <D.24894>;
    <D.24893>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24895>;
    <D.24894>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24895>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24896 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24896;
    inst->prev = 0B;
    D.24897 = inst->prev;
    inst->next = D.24897;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24898 = inst->sreg3;
    inst->sreg2 = D.24898;
    D.24899 = inst->sreg2;
    inst->sreg1 = D.24899;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.24900>; else goto <D.24901>;
    <D.24900>:
    {
      guint64 _l;

      _l = 18446744073709551488;
      _l.3 = (long int) _l;
      D.24903 = _l.3 & 4294967295;
      inst->data.op[1].const_val = D.24903;
      D.24904 = _l >> 32;
      D.24905 = (long int) D.24904;
      inst->data.op[0].const_val = D.24905;
    }
    goto <D.24906>;
    <D.24901>:
    inst->data.op[1].const_val = -128;
    <D.24906>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24907>; else goto <D.24908>;
    <D.24907>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24909>;
    <D.24908>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24909>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24910 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24910;
    inst->prev = 0B;
    D.24911 = inst->prev;
    inst->next = D.24911;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24912 = inst->sreg3;
    inst->sreg2 = D.24912;
    D.24913 = inst->sreg2;
    inst->sreg1 = D.24913;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24914>; else goto <D.24915>;
    <D.24914>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24916>;
    <D.24915>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24916>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24917 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24917;
    inst->prev = 0B;
    D.24918 = inst->prev;
    inst->next = D.24918;
    inst->opcode = 494;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24919 = inst->sreg3;
    inst->sreg2 = D.24919;
    D.24920 = inst->sreg2;
    inst->sreg1 = D.24920;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24921>; else goto <D.24922>;
    <D.24921>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24923>;
    <D.24922>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24923>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24144>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24924 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24924;
    inst->prev = 0B;
    D.24925 = inst->prev;
    inst->next = D.24925;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24926 = inst->sreg3;
    inst->sreg2 = D.24926;
    D.24927 = inst->sreg2;
    inst->sreg1 = D.24927;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.24928>; else goto <D.24929>;
    <D.24928>:
    {
      guint64 _l;

      _l = 127;
      _l.4 = (long int) _l;
      D.24931 = _l.4 & 4294967295;
      inst->data.op[1].const_val = D.24931;
      D.24932 = _l >> 32;
      D.24933 = (long int) D.24932;
      inst->data.op[0].const_val = D.24933;
    }
    goto <D.24934>;
    <D.24929>:
    inst->data.op[1].const_val = 127;
    <D.24934>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24935>; else goto <D.24936>;
    <D.24935>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24937>;
    <D.24936>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24937>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24938 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24938;
    inst->prev = 0B;
    D.24939 = inst->prev;
    inst->next = D.24939;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24940 = inst->sreg3;
    inst->sreg2 = D.24940;
    D.24941 = inst->sreg2;
    inst->sreg1 = D.24941;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24942>; else goto <D.24943>;
    <D.24942>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24944>;
    <D.24943>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24944>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24945 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24945;
    inst->prev = 0B;
    D.24946 = inst->prev;
    inst->next = D.24946;
    inst->opcode = 494;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24947 = inst->sreg3;
    inst->sreg2 = D.24947;
    D.24948 = inst->sreg2;
    inst->sreg1 = D.24948;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24949>; else goto <D.24950>;
    <D.24949>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24951>;
    <D.24950>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24951>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24149>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24952 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24952;
    inst->prev = 0B;
    D.24953 = inst->prev;
    inst->next = D.24953;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24954 = inst->sreg3;
    inst->sreg2 = D.24954;
    D.24955 = inst->sreg2;
    inst->sreg1 = D.24955;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.24956>; else goto <D.24957>;
    <D.24956>:
    {
      guint64 _l;

      _l = 255;
      _l.5 = (long int) _l;
      D.24959 = _l.5 & 4294967295;
      inst->data.op[1].const_val = D.24959;
      D.24960 = _l >> 32;
      D.24961 = (long int) D.24960;
      inst->data.op[0].const_val = D.24961;
    }
    goto <D.24962>;
    <D.24957>:
    inst->data.op[1].const_val = 255;
    <D.24962>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24963>; else goto <D.24964>;
    <D.24963>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24965>;
    <D.24964>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24965>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24966 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24966;
    inst->prev = 0B;
    D.24967 = inst->prev;
    inst->next = D.24967;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24968 = inst->sreg3;
    inst->sreg2 = D.24968;
    D.24969 = inst->sreg2;
    inst->sreg1 = D.24969;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24970>; else goto <D.24971>;
    <D.24970>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24972>;
    <D.24971>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24972>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24973 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24973;
    inst->prev = 0B;
    D.24974 = inst->prev;
    inst->next = D.24974;
    inst->opcode = 436;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24975 = inst->sreg3;
    inst->sreg2 = D.24975;
    D.24976 = inst->sreg2;
    inst->sreg1 = D.24976;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    inst->data.op[1].const_val = 255;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24977>; else goto <D.24978>;
    <D.24977>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24979>;
    <D.24978>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24979>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24154>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24980 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24980;
    inst->prev = 0B;
    D.24981 = inst->prev;
    inst->next = D.24981;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24982 = inst->sreg3;
    inst->sreg2 = D.24982;
    D.24983 = inst->sreg2;
    inst->sreg1 = D.24983;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.24984>; else goto <D.24985>;
    <D.24984>:
    {
      guint64 _l;

      _l = 255;
      _l.6 = (long int) _l;
      D.24987 = _l.6 & 4294967295;
      inst->data.op[1].const_val = D.24987;
      D.24988 = _l >> 32;
      D.24989 = (long int) D.24988;
      inst->data.op[0].const_val = D.24989;
    }
    goto <D.24990>;
    <D.24985>:
    inst->data.op[1].const_val = 255;
    <D.24990>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24991>; else goto <D.24992>;
    <D.24991>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.24993>;
    <D.24992>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.24993>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.24994 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24994;
    inst->prev = 0B;
    D.24995 = inst->prev;
    inst->next = D.24995;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24996 = inst->sreg3;
    inst->sreg2 = D.24996;
    D.24997 = inst->sreg2;
    inst->sreg1 = D.24997;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.24998>; else goto <D.24999>;
    <D.24998>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25000>;
    <D.24999>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25000>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25001 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25001;
    inst->prev = 0B;
    D.25002 = inst->prev;
    inst->next = D.25002;
    inst->opcode = 436;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25003 = inst->sreg3;
    inst->sreg2 = D.25003;
    D.25004 = inst->sreg2;
    inst->sreg1 = D.25004;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    inst->data.op[1].const_val = 255;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25005>; else goto <D.25006>;
    <D.25005>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25007>;
    <D.25006>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25007>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24159>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25008 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25008;
    inst->prev = 0B;
    D.25009 = inst->prev;
    inst->next = D.25009;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25010 = inst->sreg3;
    inst->sreg2 = D.25010;
    D.25011 = inst->sreg2;
    inst->sreg1 = D.25011;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25012>; else goto <D.25013>;
    <D.25012>:
    {
      guint64 _l;

      _l = 32767;
      _l.7 = (long int) _l;
      D.25015 = _l.7 & 4294967295;
      inst->data.op[1].const_val = D.25015;
      D.25016 = _l >> 32;
      D.25017 = (long int) D.25016;
      inst->data.op[0].const_val = D.25017;
    }
    goto <D.25018>;
    <D.25013>:
    inst->data.op[1].const_val = 32767;
    <D.25018>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25019>; else goto <D.25020>;
    <D.25019>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25021>;
    <D.25020>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25021>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25022 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25022;
    inst->prev = 0B;
    D.25023 = inst->prev;
    inst->next = D.25023;
    inst->opcode = 453;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25024 = inst->sreg3;
    inst->sreg2 = D.25024;
    D.25025 = inst->sreg2;
    inst->sreg1 = D.25025;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25026>; else goto <D.25027>;
    <D.25026>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25028>;
    <D.25027>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25028>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25029 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25029;
    inst->prev = 0B;
    D.25030 = inst->prev;
    inst->next = D.25030;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25031 = inst->sreg3;
    inst->sreg2 = D.25031;
    D.25032 = inst->sreg2;
    inst->sreg1 = D.25032;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25033>; else goto <D.25034>;
    <D.25033>:
    {
      guint64 _l;

      _l = 18446744073709518848;
      _l.8 = (long int) _l;
      D.25036 = _l.8 & 4294967295;
      inst->data.op[1].const_val = D.25036;
      D.25037 = _l >> 32;
      D.25038 = (long int) D.25037;
      inst->data.op[0].const_val = D.25038;
    }
    goto <D.25039>;
    <D.25034>:
    inst->data.op[1].const_val = -32768;
    <D.25039>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25040>; else goto <D.25041>;
    <D.25040>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25042>;
    <D.25041>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25042>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25043 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25043;
    inst->prev = 0B;
    D.25044 = inst->prev;
    inst->next = D.25044;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25045 = inst->sreg3;
    inst->sreg2 = D.25045;
    D.25046 = inst->sreg2;
    inst->sreg1 = D.25046;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25047>; else goto <D.25048>;
    <D.25047>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25049>;
    <D.25048>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25049>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25050 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25050;
    inst->prev = 0B;
    D.25051 = inst->prev;
    inst->next = D.25051;
    inst->opcode = 495;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25052 = inst->sreg3;
    inst->sreg2 = D.25052;
    D.25053 = inst->sreg2;
    inst->sreg1 = D.25053;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25054>; else goto <D.25055>;
    <D.25054>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25056>;
    <D.25055>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25056>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24167>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25057 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25057;
    inst->prev = 0B;
    D.25058 = inst->prev;
    inst->next = D.25058;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25059 = inst->sreg3;
    inst->sreg2 = D.25059;
    D.25060 = inst->sreg2;
    inst->sreg1 = D.25060;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25061>; else goto <D.25062>;
    <D.25061>:
    {
      guint64 _l;

      _l = 32767;
      _l.9 = (long int) _l;
      D.25064 = _l.9 & 4294967295;
      inst->data.op[1].const_val = D.25064;
      D.25065 = _l >> 32;
      D.25066 = (long int) D.25065;
      inst->data.op[0].const_val = D.25066;
    }
    goto <D.25067>;
    <D.25062>:
    inst->data.op[1].const_val = 32767;
    <D.25067>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25068>; else goto <D.25069>;
    <D.25068>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25070>;
    <D.25069>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25070>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25071 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25071;
    inst->prev = 0B;
    D.25072 = inst->prev;
    inst->next = D.25072;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25073 = inst->sreg3;
    inst->sreg2 = D.25073;
    D.25074 = inst->sreg2;
    inst->sreg1 = D.25074;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25075>; else goto <D.25076>;
    <D.25075>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25077>;
    <D.25076>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25077>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25078 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25078;
    inst->prev = 0B;
    D.25079 = inst->prev;
    inst->next = D.25079;
    inst->opcode = 495;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25080 = inst->sreg3;
    inst->sreg2 = D.25080;
    D.25081 = inst->sreg2;
    inst->sreg1 = D.25081;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25082>; else goto <D.25083>;
    <D.25082>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25084>;
    <D.25083>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25084>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24172>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25085 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25085;
    inst->prev = 0B;
    D.25086 = inst->prev;
    inst->next = D.25086;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25087 = inst->sreg3;
    inst->sreg2 = D.25087;
    D.25088 = inst->sreg2;
    inst->sreg1 = D.25088;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25089>; else goto <D.25090>;
    <D.25089>:
    {
      guint64 _l;

      _l = 65535;
      _l.10 = (long int) _l;
      D.25092 = _l.10 & 4294967295;
      inst->data.op[1].const_val = D.25092;
      D.25093 = _l >> 32;
      D.25094 = (long int) D.25093;
      inst->data.op[0].const_val = D.25094;
    }
    goto <D.25095>;
    <D.25090>:
    inst->data.op[1].const_val = 65535;
    <D.25095>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25096>; else goto <D.25097>;
    <D.25096>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25098>;
    <D.25097>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25098>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25099 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25099;
    inst->prev = 0B;
    D.25100 = inst->prev;
    inst->next = D.25100;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25101 = inst->sreg3;
    inst->sreg2 = D.25101;
    D.25102 = inst->sreg2;
    inst->sreg1 = D.25102;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25103>; else goto <D.25104>;
    <D.25103>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25105>;
    <D.25104>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25105>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25106 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25106;
    inst->prev = 0B;
    D.25107 = inst->prev;
    inst->next = D.25107;
    inst->opcode = 436;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25108 = inst->sreg3;
    inst->sreg2 = D.25108;
    D.25109 = inst->sreg2;
    inst->sreg1 = D.25109;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    inst->data.op[1].const_val = 65535;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25110>; else goto <D.25111>;
    <D.25110>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25112>;
    <D.25111>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25112>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24177>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25113 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25113;
    inst->prev = 0B;
    D.25114 = inst->prev;
    inst->next = D.25114;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25115 = inst->sreg3;
    inst->sreg2 = D.25115;
    D.25116 = inst->sreg2;
    inst->sreg1 = D.25116;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25117>; else goto <D.25118>;
    <D.25117>:
    {
      guint64 _l;

      _l = 65535;
      _l.11 = (long int) _l;
      D.25120 = _l.11 & 4294967295;
      inst->data.op[1].const_val = D.25120;
      D.25121 = _l >> 32;
      D.25122 = (long int) D.25121;
      inst->data.op[0].const_val = D.25122;
    }
    goto <D.25123>;
    <D.25118>:
    inst->data.op[1].const_val = 65535;
    <D.25123>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25124>; else goto <D.25125>;
    <D.25124>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25126>;
    <D.25125>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25126>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25127 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25127;
    inst->prev = 0B;
    D.25128 = inst->prev;
    inst->next = D.25128;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25129 = inst->sreg3;
    inst->sreg2 = D.25129;
    D.25130 = inst->sreg2;
    inst->sreg1 = D.25130;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25131>; else goto <D.25132>;
    <D.25131>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25133>;
    <D.25132>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25133>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25134 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25134;
    inst->prev = 0B;
    D.25135 = inst->prev;
    inst->next = D.25135;
    inst->opcode = 436;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25136 = inst->sreg3;
    inst->sreg2 = D.25136;
    D.25137 = inst->sreg2;
    inst->sreg1 = D.25137;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    inst->data.op[1].const_val = 65535;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25138>; else goto <D.25139>;
    <D.25138>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25140>;
    <D.25139>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25140>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24182>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25141 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25141;
    inst->prev = 0B;
    D.25142 = inst->prev;
    inst->next = D.25142;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25143 = inst->sreg3;
    inst->sreg2 = D.25143;
    D.25144 = inst->sreg2;
    inst->sreg1 = D.25144;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25145>; else goto <D.25146>;
    <D.25145>:
    {
      guint64 _l;

      _l = 2147483647;
      _l.12 = (long int) _l;
      D.25148 = _l.12 & 4294967295;
      inst->data.op[1].const_val = D.25148;
      D.25149 = _l >> 32;
      D.25150 = (long int) D.25149;
      inst->data.op[0].const_val = D.25150;
    }
    goto <D.25151>;
    <D.25146>:
    inst->data.op[1].const_val = 2147483647;
    <D.25151>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25152>; else goto <D.25153>;
    <D.25152>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25154>;
    <D.25153>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25154>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25155 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25155;
    inst->prev = 0B;
    D.25156 = inst->prev;
    inst->next = D.25156;
    inst->opcode = 453;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25157 = inst->sreg3;
    inst->sreg2 = D.25157;
    D.25158 = inst->sreg2;
    inst->sreg1 = D.25158;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25159>; else goto <D.25160>;
    <D.25159>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25161>;
    <D.25160>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25161>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25162 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25162;
    inst->prev = 0B;
    D.25163 = inst->prev;
    inst->next = D.25163;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25164 = inst->sreg3;
    inst->sreg2 = D.25164;
    D.25165 = inst->sreg2;
    inst->sreg1 = D.25165;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25166>; else goto <D.25167>;
    <D.25166>:
    {
      guint64 _l;

      _l = 18446744071562067968;
      _l.13 = (long int) _l;
      D.25169 = _l.13 & 4294967295;
      inst->data.op[1].const_val = D.25169;
      D.25170 = _l >> 32;
      D.25171 = (long int) D.25170;
      inst->data.op[0].const_val = D.25171;
    }
    goto <D.25172>;
    <D.25167>:
    inst->data.op[1].const_val = -2147483648;
    <D.25172>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25173>; else goto <D.25174>;
    <D.25173>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25175>;
    <D.25174>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25175>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25176 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25176;
    inst->prev = 0B;
    D.25177 = inst->prev;
    inst->next = D.25177;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25178 = inst->sreg3;
    inst->sreg2 = D.25178;
    D.25179 = inst->sreg2;
    inst->sreg1 = D.25179;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25180>; else goto <D.25181>;
    <D.25180>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25182>;
    <D.25181>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25182>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25183 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25183;
    inst->prev = 0B;
    D.25184 = inst->prev;
    inst->next = D.25184;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25185 = inst->sreg3;
    inst->sreg2 = D.25185;
    D.25186 = inst->sreg2;
    inst->sreg1 = D.25186;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25187>; else goto <D.25188>;
    <D.25187>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25189>;
    <D.25188>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25189>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24190>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25190 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25190;
    inst->prev = 0B;
    D.25191 = inst->prev;
    inst->next = D.25191;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25192 = inst->sreg3;
    inst->sreg2 = D.25192;
    D.25193 = inst->sreg2;
    inst->sreg1 = D.25193;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25194>; else goto <D.25195>;
    <D.25194>:
    {
      guint64 _l;

      _l = 2147483647;
      _l.14 = (long int) _l;
      D.25197 = _l.14 & 4294967295;
      inst->data.op[1].const_val = D.25197;
      D.25198 = _l >> 32;
      D.25199 = (long int) D.25198;
      inst->data.op[0].const_val = D.25199;
    }
    goto <D.25200>;
    <D.25195>:
    inst->data.op[1].const_val = 2147483647;
    <D.25200>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25201>; else goto <D.25202>;
    <D.25201>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25203>;
    <D.25202>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25203>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25204 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25204;
    inst->prev = 0B;
    D.25205 = inst->prev;
    inst->next = D.25205;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25206 = inst->sreg3;
    inst->sreg2 = D.25206;
    D.25207 = inst->sreg2;
    inst->sreg1 = D.25207;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25208>; else goto <D.25209>;
    <D.25208>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25210>;
    <D.25209>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25210>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25211 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25211;
    inst->prev = 0B;
    D.25212 = inst->prev;
    inst->next = D.25212;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25213 = inst->sreg3;
    inst->sreg2 = D.25213;
    D.25214 = inst->sreg2;
    inst->sreg1 = D.25214;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25215>; else goto <D.25216>;
    <D.25215>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25217>;
    <D.25216>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25217>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24195>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25218 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25218;
    inst->prev = 0B;
    D.25219 = inst->prev;
    inst->next = D.25219;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25220 = inst->sreg3;
    inst->sreg2 = D.25220;
    D.25221 = inst->sreg2;
    inst->sreg1 = D.25221;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25222>; else goto <D.25223>;
    <D.25222>:
    {
      guint64 _l;

      _l = 4294967295;
      _l.15 = (long int) _l;
      D.25225 = _l.15 & 4294967295;
      inst->data.op[1].const_val = D.25225;
      D.25226 = _l >> 32;
      D.25227 = (long int) D.25226;
      inst->data.op[0].const_val = D.25227;
    }
    goto <D.25228>;
    <D.25223>:
    inst->data.op[1].const_val = 4294967295;
    <D.25228>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25229>; else goto <D.25230>;
    <D.25229>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25231>;
    <D.25230>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25231>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25232 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25232;
    inst->prev = 0B;
    D.25233 = inst->prev;
    inst->next = D.25233;
    inst->opcode = 453;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25234 = inst->sreg3;
    inst->sreg2 = D.25234;
    D.25235 = inst->sreg2;
    inst->sreg1 = D.25235;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25236>; else goto <D.25237>;
    <D.25236>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25238>;
    <D.25237>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25238>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25239 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25239;
    inst->prev = 0B;
    D.25240 = inst->prev;
    inst->next = D.25240;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25241 = inst->sreg3;
    inst->sreg2 = D.25241;
    D.25242 = inst->sreg2;
    inst->sreg1 = D.25242;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25243>; else goto <D.25244>;
    <D.25243>:
    {
      guint64 _l;

      _l = 0;
      _l.16 = (long int) _l;
      D.25246 = _l.16 & 4294967295;
      inst->data.op[1].const_val = D.25246;
      D.25247 = _l >> 32;
      D.25248 = (long int) D.25247;
      inst->data.op[0].const_val = D.25248;
    }
    goto <D.25249>;
    <D.25244>:
    inst->data.op[1].const_val = 0;
    <D.25249>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25250>; else goto <D.25251>;
    <D.25250>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25252>;
    <D.25251>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25252>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25253 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25253;
    inst->prev = 0B;
    D.25254 = inst->prev;
    inst->next = D.25254;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25255 = inst->sreg3;
    inst->sreg2 = D.25255;
    D.25256 = inst->sreg2;
    inst->sreg1 = D.25256;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25257>; else goto <D.25258>;
    <D.25257>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25259>;
    <D.25258>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25259>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25260 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25260;
    inst->prev = 0B;
    D.25261 = inst->prev;
    inst->next = D.25261;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25262 = inst->sreg3;
    inst->sreg2 = D.25262;
    D.25263 = inst->sreg2;
    inst->sreg1 = D.25263;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25264>; else goto <D.25265>;
    <D.25264>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25266>;
    <D.25265>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25266>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24203>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25267 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25267;
    inst->prev = 0B;
    D.25268 = inst->prev;
    inst->next = D.25268;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25269 = inst->sreg3;
    inst->sreg2 = D.25269;
    D.25270 = inst->sreg2;
    inst->sreg1 = D.25270;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25271>; else goto <D.25272>;
    <D.25271>:
    {
      guint64 _l;

      _l = 4294967295;
      _l.17 = (long int) _l;
      D.25274 = _l.17 & 4294967295;
      inst->data.op[1].const_val = D.25274;
      D.25275 = _l >> 32;
      D.25276 = (long int) D.25275;
      inst->data.op[0].const_val = D.25276;
    }
    goto <D.25277>;
    <D.25272>:
    inst->data.op[1].const_val = 4294967295;
    <D.25277>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25278>; else goto <D.25279>;
    <D.25278>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25280>;
    <D.25279>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25280>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25281 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25281;
    inst->prev = 0B;
    D.25282 = inst->prev;
    inst->next = D.25282;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25283 = inst->sreg3;
    inst->sreg2 = D.25283;
    D.25284 = inst->sreg2;
    inst->sreg1 = D.25284;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25285>; else goto <D.25286>;
    <D.25285>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25287>;
    <D.25286>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25287>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25288 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25288;
    inst->prev = 0B;
    D.25289 = inst->prev;
    inst->next = D.25289;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25290 = inst->sreg3;
    inst->sreg2 = D.25290;
    D.25291 = inst->sreg2;
    inst->sreg1 = D.25291;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25292>; else goto <D.25293>;
    <D.25292>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25294>;
    <D.25293>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25294>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24208>:
  <D.24209>:
  <D.24210>:
  <D.24211>:
  ins->opcode = 424;
  goto <D.24102>;
  <D.24212>:
  <D.24213>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25295 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25295;
    inst->prev = 0B;
    D.25296 = inst->prev;
    inst->next = D.25296;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25297 = inst->sreg3;
    inst->sreg2 = D.25297;
    D.25298 = inst->sreg2;
    inst->sreg1 = D.25298;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25299>; else goto <D.25300>;
    <D.25299>:
    {
      guint64 _l;

      _l = 0;
      _l.18 = (long int) _l;
      D.25302 = _l.18 & 4294967295;
      inst->data.op[1].const_val = D.25302;
      D.25303 = _l >> 32;
      D.25304 = (long int) D.25303;
      inst->data.op[0].const_val = D.25304;
    }
    goto <D.25305>;
    <D.25300>:
    inst->data.op[1].const_val = 0;
    <D.25305>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25306>; else goto <D.25307>;
    <D.25306>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25308>;
    <D.25307>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25308>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25309 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25309;
    inst->prev = 0B;
    D.25310 = inst->prev;
    inst->next = D.25310;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25311 = inst->sreg3;
    inst->sreg2 = D.25311;
    D.25312 = inst->sreg2;
    inst->sreg1 = D.25312;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25313>; else goto <D.25314>;
    <D.25313>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25315>;
    <D.25314>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25315>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25316 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25316;
    inst->prev = 0B;
    D.25317 = inst->prev;
    inst->next = D.25317;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25318 = inst->sreg3;
    inst->sreg2 = D.25318;
    D.25319 = inst->sreg2;
    inst->sreg1 = D.25319;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25320>; else goto <D.25321>;
    <D.25320>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25322>;
    <D.25321>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25322>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24218>:
  <D.24219>:
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25323 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25323;
    inst->prev = 0B;
    D.25324 = inst->prev;
    inst->next = D.25324;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25325 = inst->sreg3;
    inst->sreg2 = D.25325;
    D.25326 = inst->sreg2;
    inst->sreg1 = D.25326;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    if (0 != 0) goto <D.25327>; else goto <D.25328>;
    <D.25327>:
    {
      guint64 _l;

      _l = 0;
      _l.19 = (long int) _l;
      D.25330 = _l.19 & 4294967295;
      inst->data.op[1].const_val = D.25330;
      D.25331 = _l >> 32;
      D.25332 = (long int) D.25331;
      inst->data.op[0].const_val = D.25332;
    }
    goto <D.25333>;
    <D.25328>:
    inst->data.op[1].const_val = 0;
    <D.25333>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25334>; else goto <D.25335>;
    <D.25334>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25336>;
    <D.25335>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25336>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25337 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25337;
    inst->prev = 0B;
    D.25338 = inst->prev;
    inst->next = D.25338;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25339 = inst->sreg3;
    inst->sreg2 = D.25339;
    D.25340 = inst->sreg2;
    inst->sreg1 = D.25340;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    inst->data.op[1].p = "OverflowException";
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25341>; else goto <D.25342>;
    <D.25341>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25343>;
    <D.25342>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25343>:
  }
  {
    struct MonoInst * inst;

    D.24773 = cfg->mempool;
    inst = mono_mempool_alloc (D.24773, 80);
    inst->data.op[1].const_val = 0;
    D.25344 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25344;
    inst->prev = 0B;
    D.25345 = inst->prev;
    inst->next = D.25345;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25346 = inst->sreg3;
    inst->sreg2 = D.25346;
    D.25347 = inst->sreg2;
    inst->sreg1 = D.25347;
    D.24778 = cfg->ip;
    inst->cil_code = D.24778;
    D.24779 = ins->dreg;
    inst->dreg = D.24779;
    D.24780 = ins->sreg1;
    inst->sreg1 = D.24780;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    if (D.24782 != 0B) goto <D.25348>; else goto <D.25349>;
    <D.25348>:
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    D.24782->next = inst;
    D.24781 = cfg->cbb;
    D.24782 = D.24781->last_ins;
    inst->prev = D.24782;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    goto <D.25350>;
    <D.25349>:
    D.24781 = cfg->cbb;
    D.24781 = cfg->cbb;
    D.24781->last_ins = inst;
    D.24782 = D.24781->last_ins;
    D.24781->code = D.24782;
    <D.25350>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24786 = ins->sreg3;
  ins->sreg2 = D.24786;
  D.24787 = ins->sreg2;
  ins->sreg1 = D.24787;
  goto <D.24102>;
  <D.24224>:
  D.25351 = 0;
  return D.25351;
  <D.24102>:
  *repl_ins = repl;
  D.25351 = 1;
  return D.25351;
}


__attribute__((visibility ("hidden")))
mono_decompose_long_opts (struct MonoCompile * cfg)
{

}


__attribute__((visibility ("hidden")))
mono_decompose_vtype_opts (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.25357;
  void * D.25358;
  unsigned int D.25359;
  struct MonoBasicBlock * D.25362;
  struct MonoInst * D.25363;
  short unsigned int D.25364;
  int D.25365;
  struct MonoInst * iftmp.20;
  int D.25367;
  unsigned int D.25368;
  unsigned int D.25369;
  struct MonoInst * * D.25372;
  long unsigned int D.25373;
  long unsigned int D.25374;
  struct MonoInst * * D.25375;
  struct MonoInst * iftmp.21;
  int D.25378;
  unsigned int D.25379;
  long unsigned int D.25382;
  long unsigned int D.25383;
  struct MonoInst * * D.25384;
  struct MonoClass * D.25386;
  _Bool D.25387;
  long int D.25388;
  long int D.25389;
  struct MonoType * D.25394;
  int D.25397;
  long int D.25400;
  struct MonoInst * D.25401;
  int D.25402;
  int D.25403;
  const unsigned char * D.25404;
  unsigned char D.25405;
  unsigned char D.25406;
  struct MonoClass * D.25407;
  unsigned int D.25408;
  int D.25409;
  int D.25410;
  _Bool D.25411;
  long int D.25412;
  long int D.25413;
  struct MonoType * D.25416;
  int D.25417;
  struct MonoInst * iftmp.22;
  int D.25423;
  int D.25424;
  unsigned int D.25425;
  sizetype D.25428;
  sizetype D.25429;
  sizetype D.25430;
  struct MonoInst * * D.25431;
  struct MonoInst * iftmp.23;
  int D.25434;
  unsigned int D.25435;
  sizetype D.25438;
  sizetype D.25439;
  struct MonoInst * * D.25440;
  _Bool D.25442;
  long int D.25443;
  long int D.25444;
  _Bool D.25447;
  long int D.25448;
  long int D.25449;
  unsigned char D.25452;
  unsigned char D.25453;
  unsigned char D.25454;
  unsigned char D.25455;
  long int D.25459;
  struct MonoInst * D.25460;
  int D.25461;
  int D.25462;
  unsigned char D.25463;
  unsigned char D.25464;
  struct MonoClass * D.25465;
  unsigned int D.25466;
  int D.25467;
  struct MonoType * D.25470;
  int D.25471;
  struct MonoInst * iftmp.24;
  int D.25477;
  int D.25478;
  unsigned int D.25479;
  sizetype D.25482;
  sizetype D.25483;
  sizetype D.25484;
  struct MonoInst * * D.25485;
  struct MonoInst * iftmp.25;
  int D.25488;
  unsigned int D.25489;
  sizetype D.25492;
  sizetype D.25493;
  struct MonoInst * * D.25494;
  _Bool D.25496;
  long int D.25497;
  long int D.25498;
  _Bool D.25501;
  long int D.25502;
  long int D.25503;
  unsigned char D.25506;
  unsigned char D.25507;
  unsigned char D.25508;
  unsigned char D.25509;
  struct MonoInst * iftmp.26;
  unsigned char D.25521;
  unsigned char D.25522;
  struct MonoClass * D.25523;
  unsigned int D.25524;
  int D.25525;
  struct MonoType * D.25528;
  int D.25529;
  struct MonoInst * iftmp.27;
  int D.25535;
  int D.25536;
  unsigned int D.25537;
  sizetype D.25540;
  sizetype D.25541;
  sizetype D.25542;
  struct MonoInst * * D.25543;
  struct MonoInst * iftmp.28;
  int D.25546;
  unsigned int D.25547;
  sizetype D.25550;
  sizetype D.25551;
  struct MonoInst * * D.25552;
  _Bool D.25554;
  long int D.25555;
  long int D.25556;
  _Bool D.25559;
  long int D.25560;
  long int D.25561;
  unsigned char D.25564;
  unsigned char D.25565;
  unsigned char D.25566;
  unsigned char D.25567;
  long unsigned int D.25571;
  long unsigned int D.25572;
  long int D.25575;
  struct MonoInst * D.25576;
  int D.25577;
  int D.25578;
  long int D.25579;
  struct MonoInst * iftmp.29;
  struct MonoInst * iftmp.30;
  unsigned char D.25597;
  unsigned char D.25598;
  struct MonoClass * D.25599;
  unsigned int D.25600;
  int D.25601;
  struct MonoType * D.25604;
  int D.25605;
  struct MonoInst * iftmp.31;
  int D.25611;
  int D.25612;
  unsigned int D.25613;
  sizetype D.25616;
  sizetype D.25617;
  sizetype D.25618;
  struct MonoInst * * D.25619;
  struct MonoInst * iftmp.32;
  int D.25622;
  unsigned int D.25623;
  sizetype D.25626;
  sizetype D.25627;
  struct MonoInst * * D.25628;
  _Bool D.25630;
  long int D.25631;
  long int D.25632;
  _Bool D.25635;
  long int D.25636;
  long int D.25637;
  unsigned char D.25640;
  unsigned char D.25641;
  unsigned char D.25642;
  unsigned char D.25643;
  unsigned int D.25647;
  long int D.25648;
  struct MonoInst * iftmp.33;
  unsigned int D.25660;
  unsigned int D.25664;
  int D.25665;
  int D.25668;
  struct MonoInst * iftmp.34;
  struct MonoInst * iftmp.35;
  _Bool D.25681;
  long int D.25682;
  long int D.25683;
  _Bool D.25686;
  long int D.25687;
  long int D.25688;
  unsigned char D.25691;
  unsigned char D.25692;
  unsigned char D.25693;
  unsigned char D.25694;
  int D.25698;
  struct MonoInst * iftmp.36;
  unsigned int D.25707;
  int D.25708;
  int D.25711;
  struct MonoInst * iftmp.37;
  struct MonoInst * iftmp.38;
  _Bool D.25724;
  long int D.25725;
  long int D.25726;
  _Bool D.25729;
  long int D.25730;
  long int D.25731;
  unsigned char D.25734;
  unsigned char D.25735;
  unsigned char D.25736;
  unsigned char D.25737;
  struct MonoInst * iftmp.39;
  int D.25742;
  unsigned int D.25743;
  long unsigned int D.25746;
  long unsigned int D.25747;
  struct MonoInst * * D.25748;
  struct MonoMethodSignature * D.25752;
  struct MonoType * D.25753;
  unsigned int D.25754;
  int D.25755;
  int D.25758;
  struct MonoInst * iftmp.40;
  struct MonoInst * iftmp.41;
  _Bool D.25771;
  long int D.25772;
  long int D.25773;
  _Bool D.25776;
  long int D.25777;
  long int D.25778;
  unsigned char D.25781;
  unsigned char D.25782;
  unsigned char D.25783;
  unsigned char D.25784;
  long unsigned int D.25788;
  long unsigned int D.25789;
  int D.25792;
  int D.25793;
  unsigned int D.25795;
  int D.25796;
  struct MonoInst * iftmp.42;
  int D.25801;
  unsigned int D.25802;
  long unsigned int D.25805;
  long unsigned int D.25806;
  struct MonoInst * * D.25807;
  struct MonoMethodSignature * D.25811;
  struct MonoType * D.25812;
  unsigned int D.25813;
  int D.25814;
  int D.25817;
  struct MonoInst * iftmp.43;
  struct MonoInst * iftmp.44;
  _Bool D.25830;
  long int D.25831;
  long int D.25832;
  _Bool D.25835;
  long int D.25836;
  long int D.25837;
  unsigned char D.25840;
  unsigned char D.25841;
  unsigned char D.25842;
  unsigned char D.25843;
  struct MonoClass * D.25849;
  long int D.25851;
  struct MonoInst * D.25852;
  int D.25853;
  int D.25854;
  int D.25855;
  int D.25856;
  long int D.25860;
  struct MonoInst * D.25861;
  int D.25862;
  int D.25863;
  long int D.25867;
  struct MonoInst * D.25868;
  int D.25869;
  int D.25870;
  long int D.25874;
  struct MonoInst * D.25875;
  int D.25876;
  int D.25877;
  long int D.25881;
  struct MonoInst * D.25882;
  int D.25883;
  int D.25884;
  _Bool D.25890;
  long int D.25891;
  long int D.25892;
  struct MonoInst * D.25898;
  struct MonoInst * D.25900;
  short int D.25901;
  struct MonoBasicBlock * bb;
  struct MonoBasicBlock * first_bb;

  D.25357 = cfg->mempool;
  D.25358 = mono_mempool_alloc0 (D.25357, 296);
  cfg->cbb = D.25358;
  first_bb = cfg->cbb;
  bb = cfg->bb_entry;
  goto <D.24384>;
  <D.24383>:
  {
    struct MonoInst * ins;
    struct MonoInst * prev;
    struct MonoInst * src_var;
    struct MonoInst * dest_var;
    struct MonoInst * src;
    struct MonoInst * dest;
    gboolean restart;
    int dreg;

    try
      {
        prev = 0B;
        D.25359 = cfg->verbose_level;
        if (D.25359 > 2) goto <D.25360>; else goto <D.25361>;
        <D.25360>:
        mono_print_bb (bb, "BEFORE LOWER-VTYPE-OPTS ");
        <D.25361>:
        D.25362 = cfg->cbb;
        D.25362 = cfg->cbb;
        D.25362->last_ins = 0B;
        D.25363 = D.25362->last_ins;
        D.25362->code = D.25363;
        restart = 1;
        goto <D.24381>;
        <D.24380>:
        restart = 0;
        ins = bb->code;
        goto <D.24378>;
        <D.24377>:
        D.25364 = ins->opcode;
        D.25365 = (int) D.25364;
        switch (D.25365) <default: <D.24376>, case 333: <D.24338>, case 334: <D.24341>, case 355: <D.24345>, case 356: <D.24346>, case 357: <D.24347>, case 387: <D.24331>, case 399: <D.24335>, case 427: <D.24320>, case 428: <D.24326>>
        <D.24320>:
        D.25367 = ins->sreg1;
        D.25368 = (unsigned int) D.25367;
        D.25369 = cfg->vreg_to_inst_len;
        if (D.25368 < D.25369) goto <D.25370>; else goto <D.25371>;
        <D.25370>:
        D.25372 = cfg->vreg_to_inst;
        D.25367 = ins->sreg1;
        D.25373 = (long unsigned int) D.25367;
        D.25374 = D.25373 * 8;
        D.25375 = D.25372 + D.25374;
        iftmp.20 = *D.25375;
        goto <D.25376>;
        <D.25371>:
        iftmp.20 = 0B;
        <D.25376>:
        src_var = iftmp.20;
        D.25378 = ins->dreg;
        D.25379 = (unsigned int) D.25378;
        D.25369 = cfg->vreg_to_inst_len;
        if (D.25379 < D.25369) goto <D.25380>; else goto <D.25381>;
        <D.25380>:
        D.25372 = cfg->vreg_to_inst;
        D.25378 = ins->dreg;
        D.25382 = (long unsigned int) D.25378;
        D.25383 = D.25382 * 8;
        D.25384 = D.25372 + D.25383;
        iftmp.21 = *D.25384;
        goto <D.25385>;
        <D.25381>:
        iftmp.21 = 0B;
        <D.25385>:
        dest_var = iftmp.21;
        D.25386 = ins->klass;
        D.25387 = D.25386 == 0B;
        D.25388 = (long int) D.25387;
        D.25389 = __builtin_expect (D.25388, 0);
        if (D.25389 != 0) goto <D.25390>; else goto <D.25391>;
        <D.25390>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1153, "ins->klass");
        <D.25391>:
        if (src_var == 0B) goto <D.25392>; else goto <D.25393>;
        <D.25392>:
        D.25386 = ins->klass;
        D.25394 = &D.25386->byval_arg;
        D.25378 = ins->dreg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25394, 329, D.25378);
        <D.25393>:
        if (dest_var == 0B) goto <D.25395>; else goto <D.25396>;
        <D.25395>:
        D.25386 = ins->klass;
        D.25394 = &D.25386->byval_arg;
        D.25378 = ins->dreg;
        dest_var = mono_compile_create_var_for_vreg (cfg, D.25394, 329, D.25378);
        <D.25396>:
        D.25397 = src_var->backend.is_pinvoke;
        if (D.25397 != 0) goto <D.25398>; else goto <D.25399>;
        <D.25398>:
        dest_var->backend.is_pinvoke = 1;
        <D.25399>:
        D.25357 = cfg->mempool;
        src = mono_mempool_alloc (D.25357, 80);
        src->data.op[1].const_val = 0;
        D.25400 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.25400;
        src->prev = 0B;
        D.25401 = src->prev;
        src->next = D.25401;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.25402 = src->sreg3;
        src->sreg2 = D.25402;
        D.25403 = src->sreg2;
        src->sreg1 = D.25403;
        D.25404 = cfg->ip;
        src->cil_code = D.25404;
        src->data.op[0].p = src_var;
        D.25405 = src_var->flags;
        D.25406 = D.25405 | 16;
        src_var->flags = D.25406;
        src->type = 5;
        D.25407 = src_var->klass;
        src->klass = D.25407;
        D.25408 = alloc_dreg (cfg, 5);
        D.25409 = (int) D.25408;
        src->dreg = D.25409;
        cfg->has_indirection = 1;
        D.25410 = cfg->gsharedvt;
        D.25411 = D.25410 != 0;
        D.25412 = (long int) D.25411;
        D.25413 = __builtin_expect (D.25412, 0);
        if (D.25413 != 0) goto <D.25414>; else goto <D.25415>;
        <D.25414>:
        D.25416 = src_var->data.op[1].vtype;
        D.25417 = mini_is_gsharedvt_variable_type (cfg, D.25416);
        if (D.25417 != 0) goto <D.25418>; else goto <D.25419>;
        <D.25418>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25419>:
        <D.25415>:
        if (0 != 0) goto <D.25420>; else goto <D.25421>;
        <D.25420>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25423 = src_var->dreg;
          D.25424 = D.25423 + 1;
          D.25425 = (unsigned int) D.25424;
          D.25369 = cfg->vreg_to_inst_len;
          if (D.25425 < D.25369) goto <D.25426>; else goto <D.25427>;
          <D.25426>:
          D.25372 = cfg->vreg_to_inst;
          D.25423 = src_var->dreg;
          D.25428 = (sizetype) D.25423;
          D.25429 = D.25428 + 1;
          D.25430 = D.25429 * 8;
          D.25431 = D.25372 + D.25430;
          iftmp.22 = *D.25431;
          goto <D.25432>;
          <D.25427>:
          iftmp.22 = 0B;
          <D.25432>:
          var1 = iftmp.22;
          D.25423 = src_var->dreg;
          D.25434 = D.25423 + 2;
          D.25435 = (unsigned int) D.25434;
          D.25369 = cfg->vreg_to_inst_len;
          if (D.25435 < D.25369) goto <D.25436>; else goto <D.25437>;
          <D.25436>:
          D.25372 = cfg->vreg_to_inst;
          D.25423 = src_var->dreg;
          D.25428 = (sizetype) D.25423;
          D.25438 = D.25428 + 2;
          D.25439 = D.25438 * 8;
          D.25440 = D.25372 + D.25439;
          iftmp.23 = *D.25440;
          goto <D.25441>;
          <D.25437>:
          iftmp.23 = 0B;
          <D.25441>:
          var2 = iftmp.23;
          D.25442 = var1 == 0B;
          D.25443 = (long int) D.25442;
          D.25444 = __builtin_expect (D.25443, 0);
          if (D.25444 != 0) goto <D.25445>; else goto <D.25446>;
          <D.25445>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1165, "var1");
          <D.25446>:
          D.25447 = var2 == 0B;
          D.25448 = (long int) D.25447;
          D.25449 = __builtin_expect (D.25448, 0);
          if (D.25449 != 0) goto <D.25450>; else goto <D.25451>;
          <D.25450>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1165, "var2");
          <D.25451>:
          D.25452 = var1->flags;
          D.25453 = D.25452 | 16;
          var1->flags = D.25453;
          D.25454 = var2->flags;
          D.25455 = D.25454 | 16;
          var2->flags = D.25455;
        }
        <D.25421>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        if (D.25363 != 0B) goto <D.25456>; else goto <D.25457>;
        <D.25456>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        D.25363->next = src;
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        src->prev = D.25363;
        D.25362 = cfg->cbb;
        D.25362->last_ins = src;
        goto <D.25458>;
        <D.25457>:
        D.25362 = cfg->cbb;
        D.25362 = cfg->cbb;
        D.25362->last_ins = src;
        D.25363 = D.25362->last_ins;
        D.25362->code = D.25363;
        <D.25458>:
        D.25357 = cfg->mempool;
        dest = mono_mempool_alloc (D.25357, 80);
        dest->data.op[1].const_val = 0;
        D.25459 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.25459;
        dest->prev = 0B;
        D.25460 = dest->prev;
        dest->next = D.25460;
        dest->opcode = 314;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.25461 = dest->sreg3;
        dest->sreg2 = D.25461;
        D.25462 = dest->sreg2;
        dest->sreg1 = D.25462;
        D.25404 = cfg->ip;
        dest->cil_code = D.25404;
        dest->data.op[0].p = dest_var;
        D.25463 = dest_var->flags;
        D.25464 = D.25463 | 16;
        dest_var->flags = D.25464;
        dest->type = 5;
        D.25465 = dest_var->klass;
        dest->klass = D.25465;
        D.25466 = alloc_dreg (cfg, 5);
        D.25467 = (int) D.25466;
        dest->dreg = D.25467;
        cfg->has_indirection = 1;
        D.25410 = cfg->gsharedvt;
        D.25411 = D.25410 != 0;
        D.25412 = (long int) D.25411;
        D.25413 = __builtin_expect (D.25412, 0);
        if (D.25413 != 0) goto <D.25468>; else goto <D.25469>;
        <D.25468>:
        D.25470 = dest_var->data.op[1].vtype;
        D.25471 = mini_is_gsharedvt_variable_type (cfg, D.25470);
        if (D.25471 != 0) goto <D.25472>; else goto <D.25473>;
        <D.25472>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25473>:
        <D.25469>:
        if (0 != 0) goto <D.25474>; else goto <D.25475>;
        <D.25474>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25477 = dest_var->dreg;
          D.25478 = D.25477 + 1;
          D.25479 = (unsigned int) D.25478;
          D.25369 = cfg->vreg_to_inst_len;
          if (D.25479 < D.25369) goto <D.25480>; else goto <D.25481>;
          <D.25480>:
          D.25372 = cfg->vreg_to_inst;
          D.25477 = dest_var->dreg;
          D.25482 = (sizetype) D.25477;
          D.25483 = D.25482 + 1;
          D.25484 = D.25483 * 8;
          D.25485 = D.25372 + D.25484;
          iftmp.24 = *D.25485;
          goto <D.25486>;
          <D.25481>:
          iftmp.24 = 0B;
          <D.25486>:
          var1 = iftmp.24;
          D.25477 = dest_var->dreg;
          D.25488 = D.25477 + 2;
          D.25489 = (unsigned int) D.25488;
          D.25369 = cfg->vreg_to_inst_len;
          if (D.25489 < D.25369) goto <D.25490>; else goto <D.25491>;
          <D.25490>:
          D.25372 = cfg->vreg_to_inst;
          D.25477 = dest_var->dreg;
          D.25482 = (sizetype) D.25477;
          D.25492 = D.25482 + 2;
          D.25493 = D.25492 * 8;
          D.25494 = D.25372 + D.25493;
          iftmp.25 = *D.25494;
          goto <D.25495>;
          <D.25491>:
          iftmp.25 = 0B;
          <D.25495>:
          var2 = iftmp.25;
          D.25496 = var1 == 0B;
          D.25497 = (long int) D.25496;
          D.25498 = __builtin_expect (D.25497, 0);
          if (D.25498 != 0) goto <D.25499>; else goto <D.25500>;
          <D.25499>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1166, "var1");
          <D.25500>:
          D.25501 = var2 == 0B;
          D.25502 = (long int) D.25501;
          D.25503 = __builtin_expect (D.25502, 0);
          if (D.25503 != 0) goto <D.25504>; else goto <D.25505>;
          <D.25504>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1166, "var2");
          <D.25505>:
          D.25506 = var1->flags;
          D.25507 = D.25506 | 16;
          var1->flags = D.25507;
          D.25508 = var2->flags;
          D.25509 = D.25508 | 16;
          var2->flags = D.25509;
        }
        <D.25475>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        if (D.25363 != 0B) goto <D.25510>; else goto <D.25511>;
        <D.25510>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        D.25363->next = dest;
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        dest->prev = D.25363;
        D.25362 = cfg->cbb;
        D.25362->last_ins = dest;
        goto <D.25512>;
        <D.25511>:
        D.25362 = cfg->cbb;
        D.25362 = cfg->cbb;
        D.25362->last_ins = dest;
        D.25363 = D.25362->last_ins;
        D.25362->code = D.25363;
        <D.25512>:
        D.25407 = src_var->klass;
        D.25397 = src_var->backend.is_pinvoke;
        mini_emit_stobj (cfg, dest, src, D.25407, D.25397);
        goto <D.24325>;
        <D.24326>:
        D.25386 = ins->klass;
        D.25387 = D.25386 == 0B;
        D.25388 = (long int) D.25387;
        D.25389 = __builtin_expect (D.25388, 0);
        if (D.25389 != 0) goto <D.25513>; else goto <D.25514>;
        <D.25513>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1172, "ins->klass");
        <D.25514>:
        {
          struct MonoInst * var;

          D.25378 = ins->dreg;
          D.25379 = (unsigned int) D.25378;
          D.25369 = cfg->vreg_to_inst_len;
          if (D.25379 < D.25369) goto <D.25516>; else goto <D.25517>;
          <D.25516>:
          D.25372 = cfg->vreg_to_inst;
          D.25378 = ins->dreg;
          D.25382 = (long unsigned int) D.25378;
          D.25383 = D.25382 * 8;
          D.25384 = D.25372 + D.25383;
          iftmp.26 = *D.25384;
          goto <D.25518>;
          <D.25517>:
          iftmp.26 = 0B;
          <D.25518>:
          var = iftmp.26;
          if (var == 0B) goto <D.25519>; else goto <D.25520>;
          <D.25519>:
          D.25386 = ins->klass;
          D.25394 = &D.25386->byval_arg;
          D.25378 = ins->dreg;
          var = mono_compile_create_var_for_vreg (cfg, D.25394, 329, D.25378);
          <D.25520>:
          D.25357 = cfg->mempool;
          dest = mono_mempool_alloc (D.25357, 80);
          dest->data.op[1].const_val = 0;
          D.25459 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.25459;
          dest->prev = 0B;
          D.25460 = dest->prev;
          dest->next = D.25460;
          dest->opcode = 314;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.25461 = dest->sreg3;
          dest->sreg2 = D.25461;
          D.25462 = dest->sreg2;
          dest->sreg1 = D.25462;
          D.25404 = cfg->ip;
          dest->cil_code = D.25404;
          dest->data.op[0].p = var;
          D.25521 = var->flags;
          D.25522 = D.25521 | 16;
          var->flags = D.25522;
          dest->type = 5;
          D.25523 = var->klass;
          dest->klass = D.25523;
          D.25524 = alloc_dreg (cfg, 5);
          D.25525 = (int) D.25524;
          dest->dreg = D.25525;
          cfg->has_indirection = 1;
          D.25410 = cfg->gsharedvt;
          D.25411 = D.25410 != 0;
          D.25412 = (long int) D.25411;
          D.25413 = __builtin_expect (D.25412, 0);
          if (D.25413 != 0) goto <D.25526>; else goto <D.25527>;
          <D.25526>:
          D.25528 = var->data.op[1].vtype;
          D.25529 = mini_is_gsharedvt_variable_type (cfg, D.25528);
          if (D.25529 != 0) goto <D.25530>; else goto <D.25531>;
          <D.25530>:
          handle_gsharedvt_ldaddr (cfg);
          <D.25531>:
          <D.25527>:
          if (0 != 0) goto <D.25532>; else goto <D.25533>;
          <D.25532>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.25535 = var->dreg;
            D.25536 = D.25535 + 1;
            D.25537 = (unsigned int) D.25536;
            D.25369 = cfg->vreg_to_inst_len;
            if (D.25537 < D.25369) goto <D.25538>; else goto <D.25539>;
            <D.25538>:
            D.25372 = cfg->vreg_to_inst;
            D.25535 = var->dreg;
            D.25540 = (sizetype) D.25535;
            D.25541 = D.25540 + 1;
            D.25542 = D.25541 * 8;
            D.25543 = D.25372 + D.25542;
            iftmp.27 = *D.25543;
            goto <D.25544>;
            <D.25539>:
            iftmp.27 = 0B;
            <D.25544>:
            var1 = iftmp.27;
            D.25535 = var->dreg;
            D.25546 = D.25535 + 2;
            D.25547 = (unsigned int) D.25546;
            D.25369 = cfg->vreg_to_inst_len;
            if (D.25547 < D.25369) goto <D.25548>; else goto <D.25549>;
            <D.25548>:
            D.25372 = cfg->vreg_to_inst;
            D.25535 = var->dreg;
            D.25540 = (sizetype) D.25535;
            D.25550 = D.25540 + 2;
            D.25551 = D.25550 * 8;
            D.25552 = D.25372 + D.25551;
            iftmp.28 = *D.25552;
            goto <D.25553>;
            <D.25549>:
            iftmp.28 = 0B;
            <D.25553>:
            var2 = iftmp.28;
            D.25554 = var1 == 0B;
            D.25555 = (long int) D.25554;
            D.25556 = __builtin_expect (D.25555, 0);
            if (D.25556 != 0) goto <D.25557>; else goto <D.25558>;
            <D.25557>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1174, "var1");
            <D.25558>:
            D.25559 = var2 == 0B;
            D.25560 = (long int) D.25559;
            D.25561 = __builtin_expect (D.25560, 0);
            if (D.25561 != 0) goto <D.25562>; else goto <D.25563>;
            <D.25562>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1174, "var2");
            <D.25563>:
            D.25564 = var1->flags;
            D.25565 = D.25564 | 16;
            var1->flags = D.25565;
            D.25566 = var2->flags;
            D.25567 = D.25566 | 16;
            var2->flags = D.25567;
          }
          <D.25533>:
        }
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        if (D.25363 != 0B) goto <D.25568>; else goto <D.25569>;
        <D.25568>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        D.25363->next = dest;
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        dest->prev = D.25363;
        D.25362 = cfg->cbb;
        D.25362->last_ins = dest;
        goto <D.25570>;
        <D.25569>:
        D.25362 = cfg->cbb;
        D.25362 = cfg->cbb;
        D.25362->last_ins = dest;
        D.25363 = D.25362->last_ins;
        D.25362->code = D.25363;
        <D.25570>:
        D.25386 = ins->klass;
        mini_emit_initobj (cfg, dest, 0B, D.25386);
        D.25571 = BIT_FIELD_REF <*cfg, 64, 5632>;
        D.25572 = D.25571 & 72057594037927936;
        if (D.25572 != 0) goto <D.25573>; else goto <D.25574>;
        <D.25573>:
        {
          struct MonoInst * tmp;

          D.25357 = cfg->mempool;
          tmp = mono_mempool_alloc (D.25357, 80);
          tmp->data.op[1].const_val = 0;
          D.25575 = tmp->data.op[1].const_val;
          tmp->data.op[0].const_val = D.25575;
          tmp->prev = 0B;
          D.25576 = tmp->prev;
          tmp->next = D.25576;
          tmp->opcode = 838;
          tmp->flags = 0;
          tmp->type = 0;
          tmp->dreg = -1;
          tmp->sreg3 = -1;
          D.25577 = tmp->sreg3;
          tmp->sreg2 = D.25577;
          D.25578 = tmp->sreg2;
          tmp->sreg1 = D.25578;
          D.25404 = cfg->ip;
          tmp->cil_code = D.25404;
          D.25378 = ins->dreg;
          D.25579 = (long int) D.25378;
          tmp->data.op[1].const_val = D.25579;
          D.25362 = cfg->cbb;
          D.25363 = D.25362->last_ins;
          if (D.25363 != 0B) goto <D.25580>; else goto <D.25581>;
          <D.25580>:
          D.25362 = cfg->cbb;
          D.25363 = D.25362->last_ins;
          D.25363->next = tmp;
          D.25362 = cfg->cbb;
          D.25363 = D.25362->last_ins;
          tmp->prev = D.25363;
          D.25362 = cfg->cbb;
          D.25362->last_ins = tmp;
          goto <D.25582>;
          <D.25581>:
          D.25362 = cfg->cbb;
          D.25362 = cfg->cbb;
          D.25362->last_ins = tmp;
          D.25363 = D.25362->last_ins;
          D.25362->code = D.25363;
          <D.25582>:
        }
        <D.25574>:
        goto <D.24325>;
        <D.24331>:
        D.25367 = ins->sreg1;
        D.25368 = (unsigned int) D.25367;
        D.25369 = cfg->vreg_to_inst_len;
        if (D.25368 < D.25369) goto <D.25584>; else goto <D.25585>;
        <D.25584>:
        D.25372 = cfg->vreg_to_inst;
        D.25367 = ins->sreg1;
        D.25373 = (long unsigned int) D.25367;
        D.25374 = D.25373 * 8;
        D.25375 = D.25372 + D.25374;
        iftmp.29 = *D.25375;
        goto <D.25586>;
        <D.25585>:
        iftmp.29 = 0B;
        <D.25586>:
        src_var = iftmp.29;
        if (src_var == 0B) goto <D.25587>; else goto <D.25588>;
        <D.25587>:
        D.25386 = ins->klass;
        D.25387 = D.25386 == 0B;
        D.25388 = (long int) D.25387;
        D.25389 = __builtin_expect (D.25388, 0);
        if (D.25389 != 0) goto <D.25589>; else goto <D.25590>;
        <D.25589>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1193, "ins->klass");
        <D.25590>:
        D.25386 = ins->klass;
        D.25394 = &D.25386->byval_arg;
        D.25367 = ins->sreg1;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25394, 329, D.25367);
        <D.25588>:
        {
          struct MonoInst * var;

          D.25367 = ins->sreg1;
          D.25368 = (unsigned int) D.25367;
          D.25369 = cfg->vreg_to_inst_len;
          if (D.25368 < D.25369) goto <D.25592>; else goto <D.25593>;
          <D.25592>:
          D.25372 = cfg->vreg_to_inst;
          D.25367 = ins->sreg1;
          D.25373 = (long unsigned int) D.25367;
          D.25374 = D.25373 * 8;
          D.25375 = D.25372 + D.25374;
          iftmp.30 = *D.25375;
          goto <D.25594>;
          <D.25593>:
          iftmp.30 = 0B;
          <D.25594>:
          var = iftmp.30;
          if (var == 0B) goto <D.25595>; else goto <D.25596>;
          <D.25595>:
          D.25386 = ins->klass;
          D.25394 = &D.25386->byval_arg;
          D.25367 = ins->sreg1;
          var = mono_compile_create_var_for_vreg (cfg, D.25394, 329, D.25367);
          <D.25596>:
          D.25357 = cfg->mempool;
          src = mono_mempool_alloc (D.25357, 80);
          src->data.op[1].const_val = 0;
          D.25400 = src->data.op[1].const_val;
          src->data.op[0].const_val = D.25400;
          src->prev = 0B;
          D.25401 = src->prev;
          src->next = D.25401;
          src->opcode = 314;
          src->flags = 0;
          src->type = 0;
          src->dreg = -1;
          src->sreg3 = -1;
          D.25402 = src->sreg3;
          src->sreg2 = D.25402;
          D.25403 = src->sreg2;
          src->sreg1 = D.25403;
          D.25404 = cfg->ip;
          src->cil_code = D.25404;
          src->data.op[0].p = var;
          D.25597 = var->flags;
          D.25598 = D.25597 | 16;
          var->flags = D.25598;
          src->type = 5;
          D.25599 = var->klass;
          src->klass = D.25599;
          D.25600 = alloc_dreg (cfg, 5);
          D.25601 = (int) D.25600;
          src->dreg = D.25601;
          cfg->has_indirection = 1;
          D.25410 = cfg->gsharedvt;
          D.25411 = D.25410 != 0;
          D.25412 = (long int) D.25411;
          D.25413 = __builtin_expect (D.25412, 0);
          if (D.25413 != 0) goto <D.25602>; else goto <D.25603>;
          <D.25602>:
          D.25604 = var->data.op[1].vtype;
          D.25605 = mini_is_gsharedvt_variable_type (cfg, D.25604);
          if (D.25605 != 0) goto <D.25606>; else goto <D.25607>;
          <D.25606>:
          handle_gsharedvt_ldaddr (cfg);
          <D.25607>:
          <D.25603>:
          if (0 != 0) goto <D.25608>; else goto <D.25609>;
          <D.25608>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.25611 = var->dreg;
            D.25612 = D.25611 + 1;
            D.25613 = (unsigned int) D.25612;
            D.25369 = cfg->vreg_to_inst_len;
            if (D.25613 < D.25369) goto <D.25614>; else goto <D.25615>;
            <D.25614>:
            D.25372 = cfg->vreg_to_inst;
            D.25611 = var->dreg;
            D.25616 = (sizetype) D.25611;
            D.25617 = D.25616 + 1;
            D.25618 = D.25617 * 8;
            D.25619 = D.25372 + D.25618;
            iftmp.31 = *D.25619;
            goto <D.25620>;
            <D.25615>:
            iftmp.31 = 0B;
            <D.25620>:
            var1 = iftmp.31;
            D.25611 = var->dreg;
            D.25622 = D.25611 + 2;
            D.25623 = (unsigned int) D.25622;
            D.25369 = cfg->vreg_to_inst_len;
            if (D.25623 < D.25369) goto <D.25624>; else goto <D.25625>;
            <D.25624>:
            D.25372 = cfg->vreg_to_inst;
            D.25611 = var->dreg;
            D.25616 = (sizetype) D.25611;
            D.25626 = D.25616 + 2;
            D.25627 = D.25626 * 8;
            D.25628 = D.25372 + D.25627;
            iftmp.32 = *D.25628;
            goto <D.25629>;
            <D.25625>:
            iftmp.32 = 0B;
            <D.25629>:
            var2 = iftmp.32;
            D.25630 = var1 == 0B;
            D.25631 = (long int) D.25630;
            D.25632 = __builtin_expect (D.25631, 0);
            if (D.25632 != 0) goto <D.25633>; else goto <D.25634>;
            <D.25633>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1197, "var1");
            <D.25634>:
            D.25635 = var2 == 0B;
            D.25636 = (long int) D.25635;
            D.25637 = __builtin_expect (D.25636, 0);
            if (D.25637 != 0) goto <D.25638>; else goto <D.25639>;
            <D.25638>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1197, "var2");
            <D.25639>:
            D.25640 = var1->flags;
            D.25641 = D.25640 | 16;
            var1->flags = D.25641;
            D.25642 = var2->flags;
            D.25643 = D.25642 | 16;
            var2->flags = D.25643;
          }
          <D.25609>:
        }
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        if (D.25363 != 0B) goto <D.25644>; else goto <D.25645>;
        <D.25644>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        D.25363->next = src;
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        src->prev = D.25363;
        D.25362 = cfg->cbb;
        D.25362->last_ins = src;
        goto <D.25646>;
        <D.25645>:
        D.25362 = cfg->cbb;
        D.25362 = cfg->cbb;
        D.25362->last_ins = src;
        D.25363 = D.25362->last_ins;
        D.25362->code = D.25363;
        <D.25646>:
        D.25647 = alloc_preg (cfg);
        dreg = (int) D.25647;
        D.25357 = cfg->mempool;
        dest = mono_mempool_alloc (D.25357, 80);
        dest->data.op[1].const_val = 0;
        D.25459 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.25459;
        dest->prev = 0B;
        D.25460 = dest->prev;
        dest->next = D.25460;
        dest->opcode = 429;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.25461 = dest->sreg3;
        dest->sreg2 = D.25461;
        D.25462 = dest->sreg2;
        dest->sreg1 = D.25462;
        D.25404 = cfg->ip;
        dest->cil_code = D.25404;
        dest->dreg = dreg;
        D.25378 = ins->dreg;
        dest->sreg1 = D.25378;
        D.25648 = ins->data.op[0].const_val;
        dest->data.op[1].const_val = D.25648;
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        if (D.25363 != 0B) goto <D.25649>; else goto <D.25650>;
        <D.25649>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        D.25363->next = dest;
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        dest->prev = D.25363;
        D.25362 = cfg->cbb;
        D.25362->last_ins = dest;
        goto <D.25651>;
        <D.25650>:
        D.25362 = cfg->cbb;
        D.25362 = cfg->cbb;
        D.25362->last_ins = dest;
        D.25363 = D.25362->last_ins;
        D.25362->code = D.25363;
        <D.25651>:
        D.25407 = src_var->klass;
        D.25397 = src_var->backend.is_pinvoke;
        mini_emit_stobj (cfg, dest, src, D.25407, D.25397);
        goto <D.24325>;
        <D.24335>:
        D.25386 = ins->klass;
        D.25387 = D.25386 == 0B;
        D.25388 = (long int) D.25387;
        D.25389 = __builtin_expect (D.25388, 0);
        if (D.25389 != 0) goto <D.25652>; else goto <D.25653>;
        <D.25652>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1205, "ins->klass");
        <D.25653>:
        D.25378 = ins->dreg;
        D.25379 = (unsigned int) D.25378;
        D.25369 = cfg->vreg_to_inst_len;
        if (D.25379 < D.25369) goto <D.25655>; else goto <D.25656>;
        <D.25655>:
        D.25372 = cfg->vreg_to_inst;
        D.25378 = ins->dreg;
        D.25382 = (long unsigned int) D.25378;
        D.25383 = D.25382 * 8;
        D.25384 = D.25372 + D.25383;
        iftmp.33 = *D.25384;
        goto <D.25657>;
        <D.25656>:
        iftmp.33 = 0B;
        <D.25657>:
        dest_var = iftmp.33;
        if (dest_var == 0B) goto <D.25658>; else goto <D.25659>;
        <D.25658>:
        D.25386 = ins->klass;
        D.25394 = &D.25386->byval_arg;
        D.25378 = ins->dreg;
        dest_var = mono_compile_create_var_for_vreg (cfg, D.25394, 329, D.25378);
        <D.25659>:
        D.25660 = alloc_preg (cfg);
        dreg = (int) D.25660;
        D.25357 = cfg->mempool;
        src = mono_mempool_alloc (D.25357, 80);
        src->data.op[1].const_val = 0;
        D.25400 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.25400;
        src->prev = 0B;
        D.25401 = src->prev;
        src->next = D.25401;
        src->opcode = 429;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.25402 = src->sreg3;
        src->sreg2 = D.25402;
        D.25403 = src->sreg2;
        src->sreg1 = D.25403;
        D.25404 = cfg->ip;
        src->cil_code = D.25404;
        src->dreg = dreg;
        D.25367 = ins->sreg1;
        src->sreg1 = D.25367;
        D.25648 = ins->data.op[0].const_val;
        src->data.op[1].const_val = D.25648;
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        if (D.25363 != 0B) goto <D.25661>; else goto <D.25662>;
        <D.25661>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        D.25363->next = src;
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        src->prev = D.25363;
        D.25362 = cfg->cbb;
        D.25362->last_ins = src;
        goto <D.25663>;
        <D.25662>:
        D.25362 = cfg->cbb;
        D.25362 = cfg->cbb;
        D.25362->last_ins = src;
        D.25363 = D.25362->last_ins;
        D.25362->code = D.25363;
        <D.25663>:
        D.25357 = cfg->mempool;
        dest = mono_mempool_alloc (D.25357, 80);
        dest->data.op[1].const_val = 0;
        D.25459 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.25459;
        dest->prev = 0B;
        D.25460 = dest->prev;
        dest->next = D.25460;
        dest->opcode = 314;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.25461 = dest->sreg3;
        dest->sreg2 = D.25461;
        D.25462 = dest->sreg2;
        dest->sreg1 = D.25462;
        D.25404 = cfg->ip;
        dest->cil_code = D.25404;
        dest->data.op[0].p = dest_var;
        D.25463 = dest_var->flags;
        D.25464 = D.25463 | 16;
        dest_var->flags = D.25464;
        dest->type = 5;
        D.25465 = dest_var->klass;
        dest->klass = D.25465;
        D.25664 = alloc_dreg (cfg, 5);
        D.25665 = (int) D.25664;
        dest->dreg = D.25665;
        cfg->has_indirection = 1;
        D.25410 = cfg->gsharedvt;
        D.25411 = D.25410 != 0;
        D.25412 = (long int) D.25411;
        D.25413 = __builtin_expect (D.25412, 0);
        if (D.25413 != 0) goto <D.25666>; else goto <D.25667>;
        <D.25666>:
        D.25470 = dest_var->data.op[1].vtype;
        D.25668 = mini_is_gsharedvt_variable_type (cfg, D.25470);
        if (D.25668 != 0) goto <D.25669>; else goto <D.25670>;
        <D.25669>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25670>:
        <D.25667>:
        if (0 != 0) goto <D.25671>; else goto <D.25672>;
        <D.25671>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25477 = dest_var->dreg;
          D.25478 = D.25477 + 1;
          D.25479 = (unsigned int) D.25478;
          D.25369 = cfg->vreg_to_inst_len;
          if (D.25479 < D.25369) goto <D.25674>; else goto <D.25675>;
          <D.25674>:
          D.25372 = cfg->vreg_to_inst;
          D.25477 = dest_var->dreg;
          D.25482 = (sizetype) D.25477;
          D.25483 = D.25482 + 1;
          D.25484 = D.25483 * 8;
          D.25485 = D.25372 + D.25484;
          iftmp.34 = *D.25485;
          goto <D.25676>;
          <D.25675>:
          iftmp.34 = 0B;
          <D.25676>:
          var1 = iftmp.34;
          D.25477 = dest_var->dreg;
          D.25488 = D.25477 + 2;
          D.25489 = (unsigned int) D.25488;
          D.25369 = cfg->vreg_to_inst_len;
          if (D.25489 < D.25369) goto <D.25678>; else goto <D.25679>;
          <D.25678>:
          D.25372 = cfg->vreg_to_inst;
          D.25477 = dest_var->dreg;
          D.25482 = (sizetype) D.25477;
          D.25492 = D.25482 + 2;
          D.25493 = D.25492 * 8;
          D.25494 = D.25372 + D.25493;
          iftmp.35 = *D.25494;
          goto <D.25680>;
          <D.25679>:
          iftmp.35 = 0B;
          <D.25680>:
          var2 = iftmp.35;
          D.25681 = var1 == 0B;
          D.25682 = (long int) D.25681;
          D.25683 = __builtin_expect (D.25682, 0);
          if (D.25683 != 0) goto <D.25684>; else goto <D.25685>;
          <D.25684>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1215, "var1");
          <D.25685>:
          D.25686 = var2 == 0B;
          D.25687 = (long int) D.25686;
          D.25688 = __builtin_expect (D.25687, 0);
          if (D.25688 != 0) goto <D.25689>; else goto <D.25690>;
          <D.25689>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1215, "var2");
          <D.25690>:
          D.25691 = var1->flags;
          D.25692 = D.25691 | 16;
          var1->flags = D.25692;
          D.25693 = var2->flags;
          D.25694 = D.25693 | 16;
          var2->flags = D.25694;
        }
        <D.25672>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        if (D.25363 != 0B) goto <D.25695>; else goto <D.25696>;
        <D.25695>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        D.25363->next = dest;
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        dest->prev = D.25363;
        D.25362 = cfg->cbb;
        D.25362->last_ins = dest;
        goto <D.25697>;
        <D.25696>:
        D.25362 = cfg->cbb;
        D.25362 = cfg->cbb;
        D.25362->last_ins = dest;
        D.25363 = D.25362->last_ins;
        D.25362->code = D.25363;
        <D.25697>:
        D.25465 = dest_var->klass;
        D.25698 = dest_var->backend.is_pinvoke;
        mini_emit_stobj (cfg, dest, src, D.25465, D.25698);
        goto <D.24325>;
        <D.24338>:
        D.25386 = ins->klass;
        D.25387 = D.25386 == 0B;
        D.25388 = (long int) D.25387;
        D.25389 = __builtin_expect (D.25388, 0);
        if (D.25389 != 0) goto <D.25699>; else goto <D.25700>;
        <D.25699>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1220, "ins->klass");
        <D.25700>:
        D.25367 = ins->sreg1;
        D.25368 = (unsigned int) D.25367;
        D.25369 = cfg->vreg_to_inst_len;
        if (D.25368 < D.25369) goto <D.25702>; else goto <D.25703>;
        <D.25702>:
        D.25372 = cfg->vreg_to_inst;
        D.25367 = ins->sreg1;
        D.25373 = (long unsigned int) D.25367;
        D.25374 = D.25373 * 8;
        D.25375 = D.25372 + D.25374;
        iftmp.36 = *D.25375;
        goto <D.25704>;
        <D.25703>:
        iftmp.36 = 0B;
        <D.25704>:
        src_var = iftmp.36;
        if (src_var == 0B) goto <D.25705>; else goto <D.25706>;
        <D.25705>:
        D.25386 = ins->klass;
        D.25394 = &D.25386->byval_arg;
        D.25367 = ins->sreg1;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25394, 329, D.25367);
        <D.25706>:
        D.25357 = cfg->mempool;
        src = mono_mempool_alloc (D.25357, 80);
        src->data.op[1].const_val = 0;
        D.25400 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.25400;
        src->prev = 0B;
        D.25401 = src->prev;
        src->next = D.25401;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.25402 = src->sreg3;
        src->sreg2 = D.25402;
        D.25403 = src->sreg2;
        src->sreg1 = D.25403;
        D.25404 = cfg->ip;
        src->cil_code = D.25404;
        src->data.op[0].p = src_var;
        D.25405 = src_var->flags;
        D.25406 = D.25405 | 16;
        src_var->flags = D.25406;
        src->type = 5;
        D.25407 = src_var->klass;
        src->klass = D.25407;
        D.25707 = alloc_dreg (cfg, 5);
        D.25708 = (int) D.25707;
        src->dreg = D.25708;
        cfg->has_indirection = 1;
        D.25410 = cfg->gsharedvt;
        D.25411 = D.25410 != 0;
        D.25412 = (long int) D.25411;
        D.25413 = __builtin_expect (D.25412, 0);
        if (D.25413 != 0) goto <D.25709>; else goto <D.25710>;
        <D.25709>:
        D.25416 = src_var->data.op[1].vtype;
        D.25711 = mini_is_gsharedvt_variable_type (cfg, D.25416);
        if (D.25711 != 0) goto <D.25712>; else goto <D.25713>;
        <D.25712>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25713>:
        <D.25710>:
        if (0 != 0) goto <D.25714>; else goto <D.25715>;
        <D.25714>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25423 = src_var->dreg;
          D.25424 = D.25423 + 1;
          D.25425 = (unsigned int) D.25424;
          D.25369 = cfg->vreg_to_inst_len;
          if (D.25425 < D.25369) goto <D.25717>; else goto <D.25718>;
          <D.25717>:
          D.25372 = cfg->vreg_to_inst;
          D.25423 = src_var->dreg;
          D.25428 = (sizetype) D.25423;
          D.25429 = D.25428 + 1;
          D.25430 = D.25429 * 8;
          D.25431 = D.25372 + D.25430;
          iftmp.37 = *D.25431;
          goto <D.25719>;
          <D.25718>:
          iftmp.37 = 0B;
          <D.25719>:
          var1 = iftmp.37;
          D.25423 = src_var->dreg;
          D.25434 = D.25423 + 2;
          D.25435 = (unsigned int) D.25434;
          D.25369 = cfg->vreg_to_inst_len;
          if (D.25435 < D.25369) goto <D.25721>; else goto <D.25722>;
          <D.25721>:
          D.25372 = cfg->vreg_to_inst;
          D.25423 = src_var->dreg;
          D.25428 = (sizetype) D.25423;
          D.25438 = D.25428 + 2;
          D.25439 = D.25438 * 8;
          D.25440 = D.25372 + D.25439;
          iftmp.38 = *D.25440;
          goto <D.25723>;
          <D.25722>:
          iftmp.38 = 0B;
          <D.25723>:
          var2 = iftmp.38;
          D.25724 = var1 == 0B;
          D.25725 = (long int) D.25724;
          D.25726 = __builtin_expect (D.25725, 0);
          if (D.25726 != 0) goto <D.25727>; else goto <D.25728>;
          <D.25727>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1225, "var1");
          <D.25728>:
          D.25729 = var2 == 0B;
          D.25730 = (long int) D.25729;
          D.25731 = __builtin_expect (D.25730, 0);
          if (D.25731 != 0) goto <D.25732>; else goto <D.25733>;
          <D.25732>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1225, "var2");
          <D.25733>:
          D.25734 = var1->flags;
          D.25735 = D.25734 | 16;
          var1->flags = D.25735;
          D.25736 = var2->flags;
          D.25737 = D.25736 | 16;
          var2->flags = D.25737;
        }
        <D.25715>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        if (D.25363 != 0B) goto <D.25738>; else goto <D.25739>;
        <D.25738>:
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        D.25363->next = src;
        D.25362 = cfg->cbb;
        D.25363 = D.25362->last_ins;
        src->prev = D.25363;
        D.25362 = cfg->cbb;
        D.25362->last_ins = src;
        goto <D.25740>;
        <D.25739>:
        D.25362 = cfg->cbb;
        D.25362 = cfg->cbb;
        D.25362->last_ins = src;
        D.25363 = D.25362->last_ins;
        D.25362->code = D.25363;
        <D.25740>:
        mono_arch_emit_outarg_vt (cfg, ins, src);
        restart = 1;
        goto <D.24325>;
        <D.24341>:
        {
          struct MonoCallInst * call;

          call = ins->data.op[1].p;
          D.25742 = call->inst.dreg;
          D.25743 = (unsigned int) D.25742;
          D.25369 = cfg->vreg_to_inst_len;
          if (D.25743 < D.25369) goto <D.25744>; else goto <D.25745>;
          <D.25744>:
          D.25372 = cfg->vreg_to_inst;
          D.25742 = call->inst.dreg;
          D.25746 = (long unsigned int) D.25742;
          D.25747 = D.25746 * 8;
          D.25748 = D.25372 + D.25747;
          iftmp.39 = *D.25748;
          goto <D.25749>;
          <D.25745>:
          iftmp.39 = 0B;
          <D.25749>:
          src_var = iftmp.39;
          if (src_var == 0B) goto <D.25750>; else goto <D.25751>;
          <D.25750>:
          D.25752 = call->signature;
          D.25753 = D.25752->ret;
          D.25742 = call->inst.dreg;
          src_var = mono_compile_create_var_for_vreg (cfg, D.25753, 329, D.25742);
          <D.25751>:
          D.25357 = cfg->mempool;
          src = mono_mempool_alloc (D.25357, 80);
          src->data.op[1].const_val = 0;
          D.25400 = src->data.op[1].const_val;
          src->data.op[0].const_val = D.25400;
          src->prev = 0B;
          D.25401 = src->prev;
          src->next = D.25401;
          src->opcode = 314;
          src->flags = 0;
          src->type = 0;
          src->dreg = -1;
          src->sreg3 = -1;
          D.25402 = src->sreg3;
          src->sreg2 = D.25402;
          D.25403 = src->sreg2;
          src->sreg1 = D.25403;
          D.25404 = cfg->ip;
          src->cil_code = D.25404;
          src->data.op[0].p = src_var;
          D.25405 = src_var->flags;
          D.25406 = D.25405 | 16;
          src_var->flags = D.25406;
          src->type = 5;
          D.25407 = src_var->klass;
          src->klass = D.25407;
          D.25754 = alloc_dreg (cfg, 5);
          D.25755 = (int) D.25754;
          src->dreg = D.25755;
          cfg->has_indirection = 1;
          D.25410 = cfg->gsharedvt;
          D.25411 = D.25410 != 0;
          D.25412 = (long int) D.25411;
          D.25413 = __builtin_expect (D.25412, 0);
          if (D.25413 != 0) goto <D.25756>; else goto <D.25757>;
          <D.25756>:
          D.25416 = src_var->data.op[1].vtype;
          D.25758 = mini_is_gsharedvt_variable_type (cfg, D.25416);
          if (D.25758 != 0) goto <D.25759>; else goto <D.25760>;
          <D.25759>:
          handle_gsharedvt_ldaddr (cfg);
          <D.25760>:
          <D.25757>:
          if (0 != 0) goto <D.25761>; else goto <D.25762>;
          <D.25761>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.25423 = src_var->dreg;
            D.25424 = D.25423 + 1;
            D.25425 = (unsigned int) D.25424;
            D.25369 = cfg->vreg_to_inst_len;
            if (D.25425 < D.25369) goto <D.25764>; else goto <D.25765>;
            <D.25764>:
            D.25372 = cfg->vreg_to_inst;
            D.25423 = src_var->dreg;
            D.25428 = (sizetype) D.25423;
            D.25429 = D.25428 + 1;
            D.25430 = D.25429 * 8;
            D.25431 = D.25372 + D.25430;
            iftmp.40 = *D.25431;
            goto <D.25766>;
            <D.25765>:
            iftmp.40 = 0B;
            <D.25766>:
            var1 = iftmp.40;
            D.25423 = src_var->dreg;
            D.25434 = D.25423 + 2;
            D.25435 = (unsigned int) D.25434;
            D.25369 = cfg->vreg_to_inst_len;
            if (D.25435 < D.25369) goto <D.25768>; else goto <D.25769>;
            <D.25768>:
            D.25372 = cfg->vreg_to_inst;
            D.25423 = src_var->dreg;
            D.25428 = (sizetype) D.25423;
            D.25438 = D.25428 + 2;
            D.25439 = D.25438 * 8;
            D.25440 = D.25372 + D.25439;
            iftmp.41 = *D.25440;
            goto <D.25770>;
            <D.25769>:
            iftmp.41 = 0B;
            <D.25770>:
            var2 = iftmp.41;
            D.25771 = var1 == 0B;
            D.25772 = (long int) D.25771;
            D.25773 = __builtin_expect (D.25772, 0);
            if (D.25773 != 0) goto <D.25774>; else goto <D.25775>;
            <D.25774>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1241, "var1");
            <D.25775>:
            D.25776 = var2 == 0B;
            D.25777 = (long int) D.25776;
            D.25778 = __builtin_expect (D.25777, 0);
            if (D.25778 != 0) goto <D.25779>; else goto <D.25780>;
            <D.25779>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1241, "var2");
            <D.25780>:
            D.25781 = var1->flags;
            D.25782 = D.25781 | 16;
            var1->flags = D.25782;
            D.25783 = var2->flags;
            D.25784 = D.25783 | 16;
            var2->flags = D.25784;
          }
          <D.25762>:
          D.25362 = cfg->cbb;
          D.25363 = D.25362->last_ins;
          if (D.25363 != 0B) goto <D.25785>; else goto <D.25786>;
          <D.25785>:
          D.25362 = cfg->cbb;
          D.25363 = D.25362->last_ins;
          D.25363->next = src;
          D.25362 = cfg->cbb;
          D.25363 = D.25362->last_ins;
          src->prev = D.25363;
          D.25362 = cfg->cbb;
          D.25362->last_ins = src;
          goto <D.25787>;
          <D.25786>:
          D.25362 = cfg->cbb;
          D.25362 = cfg->cbb;
          D.25362->last_ins = src;
          D.25363 = D.25362->last_ins;
          D.25362->code = D.25363;
          <D.25787>:
          D.25378 = ins->dreg;
          src->dreg = D.25378;
          goto <D.24325>;
        }
        <D.24345>:
        <D.24346>:
        <D.24347>:
        {
          struct MonoCallInst * call;
          int size;

          call = ins;
          D.25788 = BIT_FIELD_REF <*call, 64, 1088>;
          D.25789 = D.25788 & 1152921504606846976;
          if (D.25789 != 0) goto <D.25790>; else goto <D.25791>;
          <D.25790>:
          {
            struct MonoCallInst * call2;

            D.25357 = cfg->mempool;
            call2 = mono_mempool_alloc0 (D.25357, 192);
            call2->inst.opcode = 316;
            call2->inst.dreg = -1;
            call2->inst.sreg3 = -1;
            D.25792 = call2->inst.sreg3;
            call2->inst.sreg2 = D.25792;
            D.25793 = call2->inst.sreg2;
            call2->inst.sreg1 = D.25793;
            D.25404 = cfg->ip;
            call2->inst.cil_code = D.25404;
            memcpy (call2, call, 192);
            D.25364 = ins->opcode;
            D.25365 = (int) D.25364;
            switch (D.25365) <default: <D.25794>, case 355: <D.24351>, case 356: <D.24353>, case 357: <D.24354>>
            <D.24351>:
            call2->inst.opcode = 346;
            goto <D.24352>;
            <D.24353>:
            call2->inst.opcode = 347;
            goto <D.24352>;
            <D.24354>:
            call2->inst.opcode = 348;
            goto <D.24352>;
            <D.25794>:
            <D.24352>:
            D.25795 = alloc_preg (cfg);
            D.25796 = (int) D.25795;
            call2->inst.dreg = D.25796;
            D.25362 = cfg->cbb;
            D.25363 = D.25362->last_ins;
            if (D.25363 != 0B) goto <D.25797>; else goto <D.25798>;
            <D.25797>:
            D.25362 = cfg->cbb;
            D.25363 = D.25362->last_ins;
            D.25363->next = call2;
            D.25362 = cfg->cbb;
            D.25363 = D.25362->last_ins;
            MEM[(struct MonoInst *)call2].prev = D.25363;
            D.25362 = cfg->cbb;
            D.25362->last_ins = call2;
            goto <D.25799>;
            <D.25798>:
            D.25362 = cfg->cbb;
            D.25362 = cfg->cbb;
            D.25362->last_ins = call2;
            D.25363 = D.25362->last_ins;
            D.25362->code = D.25363;
            <D.25799>:
            D.25801 = call->inst.dreg;
            D.25802 = (unsigned int) D.25801;
            D.25369 = cfg->vreg_to_inst_len;
            if (D.25802 < D.25369) goto <D.25803>; else goto <D.25804>;
            <D.25803>:
            D.25372 = cfg->vreg_to_inst;
            D.25801 = call->inst.dreg;
            D.25805 = (long unsigned int) D.25801;
            D.25806 = D.25805 * 8;
            D.25807 = D.25372 + D.25806;
            iftmp.42 = *D.25807;
            goto <D.25808>;
            <D.25804>:
            iftmp.42 = 0B;
            <D.25808>:
            dest_var = iftmp.42;
            if (dest_var == 0B) goto <D.25809>; else goto <D.25810>;
            <D.25809>:
            D.25811 = call->signature;
            D.25812 = D.25811->ret;
            D.25801 = call->inst.dreg;
            dest_var = mono_compile_create_var_for_vreg (cfg, D.25812, 329, D.25801);
            <D.25810>:
            D.25357 = cfg->mempool;
            dest = mono_mempool_alloc (D.25357, 80);
            dest->data.op[1].const_val = 0;
            D.25459 = dest->data.op[1].const_val;
            dest->data.op[0].const_val = D.25459;
            dest->prev = 0B;
            D.25460 = dest->prev;
            dest->next = D.25460;
            dest->opcode = 314;
            dest->flags = 0;
            dest->type = 0;
            dest->dreg = -1;
            dest->sreg3 = -1;
            D.25461 = dest->sreg3;
            dest->sreg2 = D.25461;
            D.25462 = dest->sreg2;
            dest->sreg1 = D.25462;
            D.25404 = cfg->ip;
            dest->cil_code = D.25404;
            dest->data.op[0].p = dest_var;
            D.25463 = dest_var->flags;
            D.25464 = D.25463 | 16;
            dest_var->flags = D.25464;
            dest->type = 5;
            D.25465 = dest_var->klass;
            dest->klass = D.25465;
            D.25813 = alloc_dreg (cfg, 5);
            D.25814 = (int) D.25813;
            dest->dreg = D.25814;
            cfg->has_indirection = 1;
            D.25410 = cfg->gsharedvt;
            D.25411 = D.25410 != 0;
            D.25412 = (long int) D.25411;
            D.25413 = __builtin_expect (D.25412, 0);
            if (D.25413 != 0) goto <D.25815>; else goto <D.25816>;
            <D.25815>:
            D.25470 = dest_var->data.op[1].vtype;
            D.25817 = mini_is_gsharedvt_variable_type (cfg, D.25470);
            if (D.25817 != 0) goto <D.25818>; else goto <D.25819>;
            <D.25818>:
            handle_gsharedvt_ldaddr (cfg);
            <D.25819>:
            <D.25816>:
            if (0 != 0) goto <D.25820>; else goto <D.25821>;
            <D.25820>:
            {
              struct MonoInst * var1;
              struct MonoInst * var2;

              D.25477 = dest_var->dreg;
              D.25478 = D.25477 + 1;
              D.25479 = (unsigned int) D.25478;
              D.25369 = cfg->vreg_to_inst_len;
              if (D.25479 < D.25369) goto <D.25823>; else goto <D.25824>;
              <D.25823>:
              D.25372 = cfg->vreg_to_inst;
              D.25477 = dest_var->dreg;
              D.25482 = (sizetype) D.25477;
              D.25483 = D.25482 + 1;
              D.25484 = D.25483 * 8;
              D.25485 = D.25372 + D.25484;
              iftmp.43 = *D.25485;
              goto <D.25825>;
              <D.25824>:
              iftmp.43 = 0B;
              <D.25825>:
              var1 = iftmp.43;
              D.25477 = dest_var->dreg;
              D.25488 = D.25477 + 2;
              D.25489 = (unsigned int) D.25488;
              D.25369 = cfg->vreg_to_inst_len;
              if (D.25489 < D.25369) goto <D.25827>; else goto <D.25828>;
              <D.25827>:
              D.25372 = cfg->vreg_to_inst;
              D.25477 = dest_var->dreg;
              D.25482 = (sizetype) D.25477;
              D.25492 = D.25482 + 2;
              D.25493 = D.25492 * 8;
              D.25494 = D.25372 + D.25493;
              iftmp.44 = *D.25494;
              goto <D.25829>;
              <D.25828>:
              iftmp.44 = 0B;
              <D.25829>:
              var2 = iftmp.44;
              D.25830 = var1 == 0B;
              D.25831 = (long int) D.25830;
              D.25832 = __builtin_expect (D.25831, 0);
              if (D.25832 != 0) goto <D.25833>; else goto <D.25834>;
              <D.25833>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1275, "var1");
              <D.25834>:
              D.25835 = var2 == 0B;
              D.25836 = (long int) D.25835;
              D.25837 = __builtin_expect (D.25836, 0);
              if (D.25837 != 0) goto <D.25838>; else goto <D.25839>;
              <D.25838>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1275, "var2");
              <D.25839>:
              D.25840 = var1->flags;
              D.25841 = D.25840 | 16;
              var1->flags = D.25841;
              D.25842 = var2->flags;
              D.25843 = D.25842 | 16;
              var2->flags = D.25843;
            }
            <D.25821>:
            D.25362 = cfg->cbb;
            D.25363 = D.25362->last_ins;
            if (D.25363 != 0B) goto <D.25844>; else goto <D.25845>;
            <D.25844>:
            D.25362 = cfg->cbb;
            D.25363 = D.25362->last_ins;
            D.25363->next = dest;
            D.25362 = cfg->cbb;
            D.25363 = D.25362->last_ins;
            dest->prev = D.25363;
            D.25362 = cfg->cbb;
            D.25362->last_ins = dest;
            goto <D.25846>;
            <D.25845>:
            D.25362 = cfg->cbb;
            D.25362 = cfg->cbb;
            D.25362->last_ins = dest;
            D.25363 = D.25362->last_ins;
            D.25362->code = D.25363;
            <D.25846>:
            D.25698 = dest_var->backend.is_pinvoke;
            if (D.25698 != 0) goto <D.25847>; else goto <D.25848>;
            <D.25847>:
            D.25470 = dest_var->data.op[1].vtype;
            D.25849 = mono_class_from_mono_type (D.25470);
            size = mono_class_native_size (D.25849, 0B);
            goto <D.25850>;
            <D.25848>:
            D.25470 = dest_var->data.op[1].vtype;
            size = mono_type_size (D.25470, 0B);
            <D.25850>:
            switch (size) <default: <D.24370>, case 1: <D.24357>, case 2: <D.24360>, case 3: <D.24362>, case 4: <D.24363>, case 5: <D.24365>, case 6: <D.24366>, case 7: <D.24367>, case 8: <D.24368>>
            <D.24357>:
            {
              struct MonoInst * inst;

              D.25357 = cfg->mempool;
              inst = mono_mempool_alloc (D.25357, 80);
              inst->data.op[1].const_val = 0;
              D.25851 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25851;
              inst->prev = 0B;
              D.25852 = inst->prev;
              inst->next = D.25852;
              inst->opcode = 375;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25853 = inst->sreg3;
              inst->sreg2 = D.25853;
              D.25854 = inst->sreg2;
              inst->sreg1 = D.25854;
              D.25404 = cfg->ip;
              inst->cil_code = D.25404;
              D.25855 = call2->inst.dreg;
              inst->sreg1 = D.25855;
              D.25856 = dest->dreg;
              inst->dreg = D.25856;
              inst->data.op[0].const_val = 0;
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              if (D.25363 != 0B) goto <D.25857>; else goto <D.25858>;
              <D.25857>:
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              D.25363->next = inst;
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              inst->prev = D.25363;
              D.25362 = cfg->cbb;
              D.25362->last_ins = inst;
              goto <D.25859>;
              <D.25858>:
              D.25362 = cfg->cbb;
              D.25362 = cfg->cbb;
              D.25362->last_ins = inst;
              D.25363 = D.25362->last_ins;
              D.25362->code = D.25363;
              <D.25859>:
            }
            goto <D.24359>;
            <D.24360>:
            {
              struct MonoInst * inst;

              D.25357 = cfg->mempool;
              inst = mono_mempool_alloc (D.25357, 80);
              inst->data.op[1].const_val = 0;
              D.25860 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25860;
              inst->prev = 0B;
              D.25861 = inst->prev;
              inst->next = D.25861;
              inst->opcode = 376;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25862 = inst->sreg3;
              inst->sreg2 = D.25862;
              D.25863 = inst->sreg2;
              inst->sreg1 = D.25863;
              D.25404 = cfg->ip;
              inst->cil_code = D.25404;
              D.25855 = call2->inst.dreg;
              inst->sreg1 = D.25855;
              D.25856 = dest->dreg;
              inst->dreg = D.25856;
              inst->data.op[0].const_val = 0;
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              if (D.25363 != 0B) goto <D.25864>; else goto <D.25865>;
              <D.25864>:
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              D.25363->next = inst;
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              inst->prev = D.25363;
              D.25362 = cfg->cbb;
              D.25362->last_ins = inst;
              goto <D.25866>;
              <D.25865>:
              D.25362 = cfg->cbb;
              D.25362 = cfg->cbb;
              D.25362->last_ins = inst;
              D.25363 = D.25362->last_ins;
              D.25362->code = D.25363;
              <D.25866>:
            }
            goto <D.24359>;
            <D.24362>:
            <D.24363>:
            {
              struct MonoInst * inst;

              D.25357 = cfg->mempool;
              inst = mono_mempool_alloc (D.25357, 80);
              inst->data.op[1].const_val = 0;
              D.25867 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25867;
              inst->prev = 0B;
              D.25868 = inst->prev;
              inst->next = D.25868;
              inst->opcode = 377;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25869 = inst->sreg3;
              inst->sreg2 = D.25869;
              D.25870 = inst->sreg2;
              inst->sreg1 = D.25870;
              D.25404 = cfg->ip;
              inst->cil_code = D.25404;
              D.25855 = call2->inst.dreg;
              inst->sreg1 = D.25855;
              D.25856 = dest->dreg;
              inst->dreg = D.25856;
              inst->data.op[0].const_val = 0;
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              if (D.25363 != 0B) goto <D.25871>; else goto <D.25872>;
              <D.25871>:
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              D.25363->next = inst;
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              inst->prev = D.25363;
              D.25362 = cfg->cbb;
              D.25362->last_ins = inst;
              goto <D.25873>;
              <D.25872>:
              D.25362 = cfg->cbb;
              D.25362 = cfg->cbb;
              D.25362->last_ins = inst;
              D.25363 = D.25362->last_ins;
              D.25362->code = D.25363;
              <D.25873>:
            }
            goto <D.24359>;
            <D.24365>:
            <D.24366>:
            <D.24367>:
            <D.24368>:
            {
              struct MonoInst * inst;

              D.25357 = cfg->mempool;
              inst = mono_mempool_alloc (D.25357, 80);
              inst->data.op[1].const_val = 0;
              D.25874 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25874;
              inst->prev = 0B;
              D.25875 = inst->prev;
              inst->next = D.25875;
              inst->opcode = 378;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25876 = inst->sreg3;
              inst->sreg2 = D.25876;
              D.25877 = inst->sreg2;
              inst->sreg1 = D.25877;
              D.25404 = cfg->ip;
              inst->cil_code = D.25404;
              D.25855 = call2->inst.dreg;
              inst->sreg1 = D.25855;
              D.25856 = dest->dreg;
              inst->dreg = D.25856;
              inst->data.op[0].const_val = 0;
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              if (D.25363 != 0B) goto <D.25878>; else goto <D.25879>;
              <D.25878>:
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              D.25363->next = inst;
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              inst->prev = D.25363;
              D.25362 = cfg->cbb;
              D.25362->last_ins = inst;
              goto <D.25880>;
              <D.25879>:
              D.25362 = cfg->cbb;
              D.25362 = cfg->cbb;
              D.25362->last_ins = inst;
              D.25363 = D.25362->last_ins;
              D.25362->code = D.25363;
              <D.25880>:
            }
            goto <D.24359>;
            <D.24370>:
            {
              struct MonoInst * inst;

              D.25357 = cfg->mempool;
              inst = mono_mempool_alloc (D.25357, 80);
              inst->data.op[1].const_val = 0;
              D.25881 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25881;
              inst->prev = 0B;
              D.25882 = inst->prev;
              inst->next = D.25882;
              inst->opcode = 374;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25883 = inst->sreg3;
              inst->sreg2 = D.25883;
              D.25884 = inst->sreg2;
              inst->sreg1 = D.25884;
              D.25404 = cfg->ip;
              inst->cil_code = D.25404;
              D.25855 = call2->inst.dreg;
              inst->sreg1 = D.25855;
              D.25856 = dest->dreg;
              inst->dreg = D.25856;
              inst->data.op[0].const_val = 0;
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              if (D.25363 != 0B) goto <D.25885>; else goto <D.25886>;
              <D.25885>:
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              D.25363->next = inst;
              D.25362 = cfg->cbb;
              D.25363 = D.25362->last_ins;
              inst->prev = D.25363;
              D.25362 = cfg->cbb;
              D.25362->last_ins = inst;
              goto <D.25887>;
              <D.25886>:
              D.25362 = cfg->cbb;
              D.25362 = cfg->cbb;
              D.25362->last_ins = inst;
              D.25363 = D.25362->last_ins;
              D.25362->code = D.25363;
              <D.25887>:
            }
            goto <D.24359>;
            <D.24359>:
          }
          goto <D.25888>;
          <D.25791>:
          D.25364 = ins->opcode;
          D.25365 = (int) D.25364;
          switch (D.25365) <default: <D.25889>, case 355: <D.24372>, case 356: <D.24374>, case 357: <D.24375>>
          <D.24372>:
          ins->opcode = 358;
          goto <D.24373>;
          <D.24374>:
          ins->opcode = 359;
          goto <D.24373>;
          <D.24375>:
          ins->opcode = 360;
          goto <D.24373>;
          <D.25889>:
          <D.24373>:
          ins->dreg = -1;
          <D.25888>:
          goto <D.24325>;
        }
        <D.24376>:
        goto <D.24325>;
        <D.24325>:
        D.25362 = cfg->cbb;
        D.25890 = D.25362 != first_bb;
        D.25891 = (long int) D.25890;
        D.25892 = __builtin_expect (D.25891, 0);
        if (D.25892 != 0) goto <D.25893>; else goto <D.25894>;
        <D.25893>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1345, "cfg->cbb == first_bb");
        <D.25894>:
        D.25362 = cfg->cbb;
        D.25898 = D.25362->code;
        if (D.25898 != 0B) goto <D.25895>; else goto <D.25899>;
        <D.25899>:
        D.25362 = cfg->cbb;
        if (D.25362 != first_bb) goto <D.25895>; else goto <D.25896>;
        <D.25895>:
        D.25362 = cfg->cbb;
        mono_replace_ins (cfg, bb, ins, &prev, first_bb, D.25362);
        first_bb->last_ins = 0B;
        D.25900 = first_bb->last_ins;
        first_bb->code = D.25900;
        first_bb->out_count = 0;
        D.25901 = first_bb->out_count;
        first_bb->in_count = D.25901;
        cfg->cbb = first_bb;
        goto <D.25897>;
        <D.25896>:
        prev = ins;
        <D.25897>:
        ins = ins->next;
        <D.24378>:
        if (ins != 0B) goto <D.24377>; else goto <D.24379>;
        <D.24379>:
        <D.24381>:
        if (restart != 0) goto <D.24380>; else goto <D.24382>;
        <D.24382>:
        D.25359 = cfg->verbose_level;
        if (D.25359 > 2) goto <D.25902>; else goto <D.25903>;
        <D.25902>:
        mono_print_bb (bb, "AFTER LOWER-VTYPE-OPTS ");
        <D.25903>:
      }
    finally
      {
        prev = {CLOBBER};
      }
  }
  bb = bb->next_bb;
  <D.24384>:
  if (bb != 0B) goto <D.24383>; else goto <D.24385>;
  <D.24385>:
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__, __nothrow__, __leaf__))
memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.25905;
  long unsigned int D.25906;

  D.25906 = __builtin_object_size (__dest, 0);
  D.25905 = __builtin___memcpy_chk (__dest, __src, __len, D.25906);
  return D.25905;
}


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

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


alloc_ireg (struct MonoCompile * cfg)
{
  guint32 D.25910;
  unsigned int D.25911;
  unsigned int D.25912;
  unsigned int D.25913;

  D.25911 = cfg->next_vreg;
  D.25912 = D.25911;
  D.25913 = D.25912 + 1;
  cfg->next_vreg = D.25913;
  D.25910 = D.25912;
  return D.25910;
}


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

  switch (stack_type) <default: <D.22168>, case 1: <D.22161>, case 2: <D.22166>, case 3: <D.22162>, case 4: <D.22165>, case 5: <D.22163>, case 6: <D.22164>, case 7: <D.22167>>
  <D.22161>:
  <D.22162>:
  D.25915 = alloc_ireg (cfg);
  return D.25915;
  <D.22163>:
  D.25915 = alloc_ireg_mp (cfg);
  return D.25915;
  <D.22164>:
  D.25915 = alloc_ireg_ref (cfg);
  return D.25915;
  <D.22165>:
  D.25915 = alloc_freg (cfg);
  return D.25915;
  <D.22166>:
  D.25915 = alloc_lreg (cfg);
  return D.25915;
  <D.22167>:
  D.25915 = alloc_ireg (cfg);
  return D.25915;
  <D.22168>:
  monoeg_g_log (0B, 16, "Unknown stack type %x\n", stack_type);
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "ir-emit.h", 97);
  D.25915 = 4294967295;
  return D.25915;
}


alloc_ireg_mp (struct MonoCompile * cfg)
{
  unsigned int D.25917;
  long unsigned int D.25918;
  long unsigned int D.25919;
  guint32 D.25922;
  int vreg;

  D.25917 = alloc_ireg (cfg);
  vreg = (int) D.25917;
  D.25918 = BIT_FIELD_REF <*cfg, 64, 5632>;
  D.25919 = D.25918 & 72057594037927936;
  if (D.25919 != 0) goto <D.25920>; else goto <D.25921>;
  <D.25920>:
  mono_mark_vreg_as_mp (cfg, vreg);
  <D.25921>:
  D.25922 = (guint32) vreg;
  return D.25922;
}


alloc_ireg_ref (struct MonoCompile * cfg)
{
  unsigned int D.25924;
  long unsigned int D.25925;
  long unsigned int D.25926;
  guint32 D.25929;
  int vreg;

  D.25924 = alloc_ireg (cfg);
  vreg = (int) D.25924;
  D.25925 = BIT_FIELD_REF <*cfg, 64, 5632>;
  D.25926 = D.25925 & 72057594037927936;
  if (D.25926 != 0) goto <D.25927>; else goto <D.25928>;
  <D.25927>:
  mono_mark_vreg_as_ref (cfg, vreg);
  <D.25928>:
  D.25929 = (guint32) vreg;
  return D.25929;
}


alloc_freg (struct MonoCompile * cfg)
{
  int D.25931;
  guint32 D.25934;
  unsigned int D.25935;
  unsigned int D.25936;
  unsigned int D.25937;

  D.25931 = mono_arch_is_soft_float ();
  if (D.25931 != 0) goto <D.25932>; else goto <D.25933>;
  <D.25932>:
  D.25934 = alloc_lreg (cfg);
  return D.25934;
  <D.25933>:
  D.25935 = cfg->next_vreg;
  D.25936 = D.25935;
  D.25937 = D.25936 + 1;
  cfg->next_vreg = D.25937;
  D.25934 = D.25936;
  return D.25934;
}


__attribute__((always_inline))
mono_arch_is_soft_float ()
{
  gboolean D.25939;

  D.25939 = 0;
  return D.25939;
}


alloc_lreg (struct MonoCompile * cfg)
{
  guint32 D.25941;
  unsigned int D.25942;
  unsigned int D.25943;
  unsigned int D.25944;

  D.25942 = cfg->next_vreg;
  D.25943 = D.25942;
  D.25944 = D.25943 + 1;
  cfg->next_vreg = D.25944;
  D.25941 = D.25943;
  return D.25941;
}


handle_gsharedvt_ldaddr (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.25946;
  long int D.25947;
  struct MonoInst * D.25948;
  int D.25949;
  int D.25950;
  const unsigned char * D.25951;
  struct MonoInst * D.25952;
  int D.25953;
  struct MonoBasicBlock * D.25954;
  struct MonoInst * D.25955;
  struct MonoInst * D.25959;
  int D.25960;
  struct MonoInst * use;

  D.25946 = cfg->mempool;
  use = mono_mempool_alloc (D.25946, 80);
  use->data.op[1].const_val = 0;
  D.25947 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.25947;
  use->prev = 0B;
  D.25948 = use->prev;
  use->next = D.25948;
  use->opcode = 796;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.25949 = use->sreg3;
  use->sreg2 = D.25949;
  D.25950 = use->sreg2;
  use->sreg1 = D.25950;
  D.25951 = cfg->ip;
  use->cil_code = D.25951;
  D.25952 = cfg->gsharedvt_info_var;
  D.25953 = D.25952->dreg;
  use->sreg1 = D.25953;
  D.25954 = cfg->cbb;
  D.25955 = D.25954->last_ins;
  if (D.25955 != 0B) goto <D.25956>; else goto <D.25957>;
  <D.25956>:
  D.25954 = cfg->cbb;
  D.25955 = D.25954->last_ins;
  D.25955->next = use;
  D.25954 = cfg->cbb;
  D.25955 = D.25954->last_ins;
  use->prev = D.25955;
  D.25954 = cfg->cbb;
  D.25954->last_ins = use;
  goto <D.25958>;
  <D.25957>:
  D.25954 = cfg->cbb;
  D.25954 = cfg->cbb;
  D.25954->last_ins = use;
  D.25955 = D.25954->last_ins;
  D.25954->code = D.25955;
  <D.25958>:
  D.25946 = cfg->mempool;
  use = mono_mempool_alloc (D.25946, 80);
  use->data.op[1].const_val = 0;
  D.25947 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.25947;
  use->prev = 0B;
  D.25948 = use->prev;
  use->next = D.25948;
  use->opcode = 796;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.25949 = use->sreg3;
  use->sreg2 = D.25949;
  D.25950 = use->sreg2;
  use->sreg1 = D.25950;
  D.25951 = cfg->ip;
  use->cil_code = D.25951;
  D.25959 = cfg->gsharedvt_locals_var;
  D.25960 = D.25959->dreg;
  use->sreg1 = D.25960;
  D.25954 = cfg->cbb;
  D.25955 = D.25954->last_ins;
  if (D.25955 != 0B) goto <D.25961>; else goto <D.25962>;
  <D.25961>:
  D.25954 = cfg->cbb;
  D.25955 = D.25954->last_ins;
  D.25955->next = use;
  D.25954 = cfg->cbb;
  D.25955 = D.25954->last_ins;
  use->prev = D.25955;
  D.25954 = cfg->cbb;
  D.25954->last_ins = use;
  goto <D.25963>;
  <D.25962>:
  D.25954 = cfg->cbb;
  D.25954 = cfg->cbb;
  D.25954->last_ins = use;
  D.25955 = D.25954->last_ins;
  D.25954->code = D.25955;
  <D.25963>:
}


__attribute__((visibility ("hidden")))
mono_decompose_vtype_opts_llvm (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.25964;
  void * D.25965;
  unsigned int D.25966;
  struct MonoBasicBlock * D.25969;
  struct MonoInst * D.25970;
  short unsigned int D.25971;
  int D.25972;
  struct MonoInst * iftmp.45;
  int D.25974;
  unsigned int D.25975;
  unsigned int D.25976;
  struct MonoInst * * D.25979;
  long unsigned int D.25980;
  long unsigned int D.25981;
  struct MonoInst * * D.25982;
  struct MonoClass * D.25986;
  _Bool D.25987;
  long int D.25988;
  long int D.25989;
  struct MonoType * D.25992;
  struct MonoInst * iftmp.46;
  long int D.25999;
  struct MonoInst * D.26000;
  int D.26001;
  int D.26002;
  const unsigned char * D.26003;
  unsigned char D.26004;
  unsigned char D.26005;
  struct MonoClass * D.26006;
  unsigned int D.26007;
  int D.26008;
  int D.26009;
  _Bool D.26010;
  long int D.26011;
  long int D.26012;
  struct MonoType * D.26015;
  int D.26016;
  struct MonoInst * iftmp.47;
  int D.26022;
  int D.26023;
  unsigned int D.26024;
  sizetype D.26027;
  sizetype D.26028;
  sizetype D.26029;
  struct MonoInst * * D.26030;
  struct MonoInst * iftmp.48;
  int D.26033;
  unsigned int D.26034;
  sizetype D.26037;
  sizetype D.26038;
  struct MonoInst * * D.26039;
  _Bool D.26041;
  long int D.26042;
  long int D.26043;
  _Bool D.26046;
  long int D.26047;
  long int D.26048;
  unsigned char D.26051;
  unsigned char D.26052;
  unsigned char D.26053;
  unsigned char D.26054;
  unsigned int D.26058;
  long int D.26059;
  struct MonoInst * D.26060;
  int D.26061;
  int D.26062;
  int D.26063;
  long int D.26064;
  struct MonoClass * D.26068;
  int D.26069;
  _Bool D.26070;
  long int D.26071;
  long int D.26072;
  struct MonoInst * D.26078;
  struct MonoInst * D.26080;
  short int D.26081;
  struct MonoBasicBlock * bb;
  struct MonoBasicBlock * first_bb;

  D.25964 = cfg->mempool;
  D.25965 = mono_mempool_alloc0 (D.25964, 296);
  cfg->cbb = D.25965;
  first_bb = cfg->cbb;
  bb = cfg->bb_entry;
  goto <D.24411>;
  <D.24410>:
  {
    struct MonoInst * ins;
    struct MonoInst * prev;
    struct MonoInst * src_var;
    struct MonoInst * src;
    struct MonoInst * dest;
    gboolean restart;
    int dreg;

    try
      {
        prev = 0B;
        D.25966 = cfg->verbose_level;
        if (D.25966 > 2) goto <D.25967>; else goto <D.25968>;
        <D.25967>:
        mono_print_bb (bb, "BEFORE LOWER-VTYPE-OPTS(LLVM) ");
        <D.25968>:
        D.25969 = cfg->cbb;
        D.25969 = cfg->cbb;
        D.25969->last_ins = 0B;
        D.25970 = D.25969->last_ins;
        D.25969->code = D.25970;
        restart = 1;
        goto <D.24408>;
        <D.24407>:
        restart = 0;
        ins = bb->code;
        goto <D.24405>;
        <D.24404>:
        D.25971 = ins->opcode;
        D.25972 = (int) D.25971;
        switch (D.25972) <default: <D.24403>, case 387: <D.24398>>
        <D.24398>:
        D.25974 = ins->sreg1;
        D.25975 = (unsigned int) D.25974;
        D.25976 = cfg->vreg_to_inst_len;
        if (D.25975 < D.25976) goto <D.25977>; else goto <D.25978>;
        <D.25977>:
        D.25979 = cfg->vreg_to_inst;
        D.25974 = ins->sreg1;
        D.25980 = (long unsigned int) D.25974;
        D.25981 = D.25980 * 8;
        D.25982 = D.25979 + D.25981;
        iftmp.45 = *D.25982;
        goto <D.25983>;
        <D.25978>:
        iftmp.45 = 0B;
        <D.25983>:
        src_var = iftmp.45;
        if (src_var == 0B) goto <D.25984>; else goto <D.25985>;
        <D.25984>:
        D.25986 = ins->klass;
        D.25987 = D.25986 == 0B;
        D.25988 = (long int) D.25987;
        D.25989 = __builtin_expect (D.25988, 0);
        if (D.25989 != 0) goto <D.25990>; else goto <D.25991>;
        <D.25990>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1395, "ins->klass");
        <D.25991>:
        D.25986 = ins->klass;
        D.25992 = &D.25986->byval_arg;
        D.25974 = ins->sreg1;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25992, 329, D.25974);
        <D.25985>:
        {
          struct MonoInst * var;

          D.25974 = ins->sreg1;
          D.25975 = (unsigned int) D.25974;
          D.25976 = cfg->vreg_to_inst_len;
          if (D.25975 < D.25976) goto <D.25994>; else goto <D.25995>;
          <D.25994>:
          D.25979 = cfg->vreg_to_inst;
          D.25974 = ins->sreg1;
          D.25980 = (long unsigned int) D.25974;
          D.25981 = D.25980 * 8;
          D.25982 = D.25979 + D.25981;
          iftmp.46 = *D.25982;
          goto <D.25996>;
          <D.25995>:
          iftmp.46 = 0B;
          <D.25996>:
          var = iftmp.46;
          if (var == 0B) goto <D.25997>; else goto <D.25998>;
          <D.25997>:
          D.25986 = ins->klass;
          D.25992 = &D.25986->byval_arg;
          D.25974 = ins->sreg1;
          var = mono_compile_create_var_for_vreg (cfg, D.25992, 329, D.25974);
          <D.25998>:
          D.25964 = cfg->mempool;
          src = mono_mempool_alloc (D.25964, 80);
          src->data.op[1].const_val = 0;
          D.25999 = src->data.op[1].const_val;
          src->data.op[0].const_val = D.25999;
          src->prev = 0B;
          D.26000 = src->prev;
          src->next = D.26000;
          src->opcode = 314;
          src->flags = 0;
          src->type = 0;
          src->dreg = -1;
          src->sreg3 = -1;
          D.26001 = src->sreg3;
          src->sreg2 = D.26001;
          D.26002 = src->sreg2;
          src->sreg1 = D.26002;
          D.26003 = cfg->ip;
          src->cil_code = D.26003;
          src->data.op[0].p = var;
          D.26004 = var->flags;
          D.26005 = D.26004 | 16;
          var->flags = D.26005;
          src->type = 5;
          D.26006 = var->klass;
          src->klass = D.26006;
          D.26007 = alloc_dreg (cfg, 5);
          D.26008 = (int) D.26007;
          src->dreg = D.26008;
          cfg->has_indirection = 1;
          D.26009 = cfg->gsharedvt;
          D.26010 = D.26009 != 0;
          D.26011 = (long int) D.26010;
          D.26012 = __builtin_expect (D.26011, 0);
          if (D.26012 != 0) goto <D.26013>; else goto <D.26014>;
          <D.26013>:
          D.26015 = var->data.op[1].vtype;
          D.26016 = mini_is_gsharedvt_variable_type (cfg, D.26015);
          if (D.26016 != 0) goto <D.26017>; else goto <D.26018>;
          <D.26017>:
          handle_gsharedvt_ldaddr (cfg);
          <D.26018>:
          <D.26014>:
          if (0 != 0) goto <D.26019>; else goto <D.26020>;
          <D.26019>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.26022 = var->dreg;
            D.26023 = D.26022 + 1;
            D.26024 = (unsigned int) D.26023;
            D.25976 = cfg->vreg_to_inst_len;
            if (D.26024 < D.25976) goto <D.26025>; else goto <D.26026>;
            <D.26025>:
            D.25979 = cfg->vreg_to_inst;
            D.26022 = var->dreg;
            D.26027 = (sizetype) D.26022;
            D.26028 = D.26027 + 1;
            D.26029 = D.26028 * 8;
            D.26030 = D.25979 + D.26029;
            iftmp.47 = *D.26030;
            goto <D.26031>;
            <D.26026>:
            iftmp.47 = 0B;
            <D.26031>:
            var1 = iftmp.47;
            D.26022 = var->dreg;
            D.26033 = D.26022 + 2;
            D.26034 = (unsigned int) D.26033;
            D.25976 = cfg->vreg_to_inst_len;
            if (D.26034 < D.25976) goto <D.26035>; else goto <D.26036>;
            <D.26035>:
            D.25979 = cfg->vreg_to_inst;
            D.26022 = var->dreg;
            D.26027 = (sizetype) D.26022;
            D.26037 = D.26027 + 2;
            D.26038 = D.26037 * 8;
            D.26039 = D.25979 + D.26038;
            iftmp.48 = *D.26039;
            goto <D.26040>;
            <D.26036>:
            iftmp.48 = 0B;
            <D.26040>:
            var2 = iftmp.48;
            D.26041 = var1 == 0B;
            D.26042 = (long int) D.26041;
            D.26043 = __builtin_expect (D.26042, 0);
            if (D.26043 != 0) goto <D.26044>; else goto <D.26045>;
            <D.26044>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1399, "var1");
            <D.26045>:
            D.26046 = var2 == 0B;
            D.26047 = (long int) D.26046;
            D.26048 = __builtin_expect (D.26047, 0);
            if (D.26048 != 0) goto <D.26049>; else goto <D.26050>;
            <D.26049>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1399, "var2");
            <D.26050>:
            D.26051 = var1->flags;
            D.26052 = D.26051 | 16;
            var1->flags = D.26052;
            D.26053 = var2->flags;
            D.26054 = D.26053 | 16;
            var2->flags = D.26054;
          }
          <D.26020>:
        }
        D.25969 = cfg->cbb;
        D.25970 = D.25969->last_ins;
        if (D.25970 != 0B) goto <D.26055>; else goto <D.26056>;
        <D.26055>:
        D.25969 = cfg->cbb;
        D.25970 = D.25969->last_ins;
        D.25970->next = src;
        D.25969 = cfg->cbb;
        D.25970 = D.25969->last_ins;
        src->prev = D.25970;
        D.25969 = cfg->cbb;
        D.25969->last_ins = src;
        goto <D.26057>;
        <D.26056>:
        D.25969 = cfg->cbb;
        D.25969 = cfg->cbb;
        D.25969->last_ins = src;
        D.25970 = D.25969->last_ins;
        D.25969->code = D.25970;
        <D.26057>:
        D.26058 = alloc_preg (cfg);
        dreg = (int) D.26058;
        D.25964 = cfg->mempool;
        dest = mono_mempool_alloc (D.25964, 80);
        dest->data.op[1].const_val = 0;
        D.26059 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.26059;
        dest->prev = 0B;
        D.26060 = dest->prev;
        dest->next = D.26060;
        dest->opcode = 429;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.26061 = dest->sreg3;
        dest->sreg2 = D.26061;
        D.26062 = dest->sreg2;
        dest->sreg1 = D.26062;
        D.26003 = cfg->ip;
        dest->cil_code = D.26003;
        dest->dreg = dreg;
        D.26063 = ins->dreg;
        dest->sreg1 = D.26063;
        D.26064 = ins->data.op[0].const_val;
        dest->data.op[1].const_val = D.26064;
        D.25969 = cfg->cbb;
        D.25970 = D.25969->last_ins;
        if (D.25970 != 0B) goto <D.26065>; else goto <D.26066>;
        <D.26065>:
        D.25969 = cfg->cbb;
        D.25970 = D.25969->last_ins;
        D.25970->next = dest;
        D.25969 = cfg->cbb;
        D.25970 = D.25969->last_ins;
        dest->prev = D.25970;
        D.25969 = cfg->cbb;
        D.25969->last_ins = dest;
        goto <D.26067>;
        <D.26066>:
        D.25969 = cfg->cbb;
        D.25969 = cfg->cbb;
        D.25969->last_ins = dest;
        D.25970 = D.25969->last_ins;
        D.25969->code = D.25970;
        <D.26067>:
        D.26068 = src_var->klass;
        D.26069 = src_var->backend.is_pinvoke;
        mini_emit_stobj (cfg, dest, src, D.26068, D.26069);
        goto <D.24402>;
        <D.24403>:
        goto <D.24402>;
        <D.24402>:
        D.25969 = cfg->cbb;
        D.26070 = D.25969 != first_bb;
        D.26071 = (long int) D.26070;
        D.26072 = __builtin_expect (D.26071, 0);
        if (D.26072 != 0) goto <D.26073>; else goto <D.26074>;
        <D.26073>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1410, "cfg->cbb == first_bb");
        <D.26074>:
        D.25969 = cfg->cbb;
        D.26078 = D.25969->code;
        if (D.26078 != 0B) goto <D.26075>; else goto <D.26079>;
        <D.26079>:
        D.25969 = cfg->cbb;
        if (D.25969 != first_bb) goto <D.26075>; else goto <D.26076>;
        <D.26075>:
        D.25969 = cfg->cbb;
        mono_replace_ins (cfg, bb, ins, &prev, first_bb, D.25969);
        first_bb->last_ins = 0B;
        D.26080 = first_bb->last_ins;
        first_bb->code = D.26080;
        first_bb->out_count = 0;
        D.26081 = first_bb->out_count;
        first_bb->in_count = D.26081;
        cfg->cbb = first_bb;
        goto <D.26077>;
        <D.26076>:
        prev = ins;
        <D.26077>:
        ins = ins->next;
        <D.24405>:
        if (ins != 0B) goto <D.24404>; else goto <D.24406>;
        <D.24406>:
        <D.24408>:
        if (restart != 0) goto <D.24407>; else goto <D.24409>;
        <D.24409>:
        D.25966 = cfg->verbose_level;
        if (D.25966 > 2) goto <D.26082>; else goto <D.26083>;
        <D.26082>:
        mono_print_bb (bb, "AFTER LOWER-VTYPE-OPTS(LLVM) ");
        <D.26083>:
      }
    finally
      {
        prev = {CLOBBER};
      }
  }
  bb = bb->next_bb;
  <D.24411>:
  if (bb != 0B) goto <D.24410>; else goto <D.24412>;
  <D.24412>:
}


__attribute__((visibility ("hidden")))
mono_decompose_array_access_opts (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.26085;
  void * D.26086;
  long unsigned int D.26087;
  long unsigned int D.26088;
  unsigned int D.26091;
  struct MonoBasicBlock * D.26094;
  struct MonoInst * D.26095;
  short unsigned int D.26096;
  int D.26097;
  unsigned char D.26098;
  unsigned char D.26099;
  int D.26100;
  long unsigned int D.26103;
  long unsigned int D.26104;
  long int D.26107;
  struct MonoInst * D.26108;
  int D.26109;
  int D.26110;
  const unsigned char * D.26111;
  int D.26112;
  long int D.26116;
  struct MonoInst * D.26117;
  int D.26118;
  int D.26119;
  long int D.26124;
  struct MonoInst * D.26125;
  int D.26126;
  int D.26127;
  int D.26128;
  unsigned char D.26129;
  long int D.26135;
  struct MonoInst * D.26136;
  int D.26137;
  int D.26138;
  long int D.26142;
  struct MonoInst * D.26143;
  int D.26144;
  int D.26145;
  unsigned int D.26152;
  int D.26153;
  int D.26154;
  int D.26157;
  long int D.26162;
  struct MonoInst * D.26163;
  int D.26164;
  int D.26165;
  long int D.26169;
  struct MonoInst * D.26170;
  int D.26171;
  int D.26172;
  long int D.26177;
  struct MonoInst * D.26178;
  int D.26179;
  int D.26180;
  long int D.26181;
  unsigned char D.26182;
  int D.26187;
  long int D.26192;
  struct MonoInst * D.26193;
  int D.26194;
  int D.26195;
  long int D.26199;
  struct MonoInst * D.26200;
  int D.26201;
  int D.26202;
  long int D.26207;
  struct MonoInst * D.26208;
  int D.26209;
  int D.26210;
  unsigned char D.26211;
  long int D.26215;
  struct MonoInst * D.26216;
  int D.26217;
  int D.26218;
  int D.26219;
  long int D.26223;
  struct MonoInst * D.26224;
  int D.26225;
  int D.26226;
  unsigned int D.26231;
  int D.26234;
  long int D.26239;
  struct MonoInst * D.26240;
  int D.26241;
  int D.26242;
  long int D.26246;
  struct MonoInst * D.26247;
  int D.26248;
  int D.26249;
  long int D.26254;
  struct MonoInst * D.26255;
  int D.26256;
  int D.26257;
  unsigned char D.26258;
  int D.26263;
  long int D.26268;
  struct MonoInst * D.26269;
  int D.26270;
  int D.26271;
  long int D.26275;
  struct MonoInst * D.26276;
  int D.26277;
  int D.26278;
  long int D.26283;
  struct MonoInst * D.26284;
  int D.26285;
  int D.26286;
  unsigned char D.26287;
  long int D.26291;
  struct MonoInst * D.26292;
  int D.26293;
  int D.26294;
  long int D.26298;
  struct MonoInst * D.26299;
  int D.26300;
  int D.26301;
  unsigned int D.26305;
  unsigned int D.26306;
  long unsigned int D.26313;
  long unsigned int D.26314;
  void * D.26315;
  struct MonoInst * D.26316;
  long int D.26317;
  struct MonoInst * D.26318;
  int D.26319;
  int D.26320;
  struct MonoInst * * D.26321;
  long int D.26322;
  long unsigned int D.26323;
  long unsigned int D.26324;
  struct MonoInst * * D.26325;
  struct MonoInst * D.26326;
  struct MonoType * D.26327;
  unsigned int D.26328;
  short unsigned int D.26329;
  struct MonoClass * D.26330;
  int D.26331;
  unsigned char D.26332;
  <unnamed type> D.26333;
  unsigned int D.26334;
  int D.26335;
  short unsigned int D.26336;
  struct MonoClass * D.26339;
  void * D.26340;
  struct MonoDomain * D.26341;
  unsigned int D.26342;
  int D.26343;
  void * D.26347;
  struct MonoInst * D.26348;
  long int D.26349;
  struct MonoInst * D.26350;
  guint16 iftmp.49;
  int D.26355;
  int D.26356;
  struct MonoClass * D.26357;
  unsigned int D.26358;
  int D.26359;
  void * D.26363;
  struct MonoInst * D.26364;
  long int D.26365;
  struct MonoInst * D.26366;
  int D.26367;
  int D.26368;
  _Bool D.26370;
  long int D.26371;
  long int D.26372;
  void * D.26375;
  guint16 iftmp.50;
  void * iftmp.51;
  unsigned int D.26384;
  int D.26385;
  void * D.26389;
  int D.26393;
  long int D.26398;
  struct MonoInst * D.26399;
  int D.26400;
  int D.26401;
  long int D.26405;
  struct MonoInst * D.26406;
  int D.26407;
  int D.26408;
  long int D.26413;
  struct MonoInst * D.26414;
  int D.26415;
  int D.26416;
  unsigned char D.26417;
  _Bool D.26421;
  long int D.26422;
  long int D.26423;
  struct MonoInst * D.26429;
  struct MonoInst * D.26431;
  short int D.26432;
  struct MonoBasicBlock * bb;
  struct MonoBasicBlock * first_bb;

  D.26085 = cfg->mempool;
  D.26086 = mono_mempool_alloc0 (D.26085, 296);
  cfg->cbb = D.26086;
  first_bb = cfg->cbb;
  bb = cfg->bb_entry;
  goto <D.24475>;
  <D.24474>:
  {
    struct MonoInst * ins;
    struct MonoInst * prev;
    struct MonoInst * dest;
    struct MonoInst * iargs[3];
    gboolean restart;

    try
      {
        prev = 0B;
        D.26087 = BIT_FIELD_REF <*bb, 64, 1472>;
        D.26088 = D.26087 & 35184372088832;
        if (D.26088 == 0) goto <D.26089>; else goto <D.26090>;
        <D.26089>:
        // predicted unlikely by continue predictor.
        goto <D.24426>;
        <D.26090>:
        D.26091 = cfg->verbose_level;
        if (D.26091 > 3) goto <D.26092>; else goto <D.26093>;
        <D.26092>:
        mono_print_bb (bb, "BEFORE DECOMPOSE-ARRAY-ACCESS-OPTS ");
        <D.26093>:
        D.26094 = cfg->cbb;
        D.26094 = cfg->cbb;
        D.26094->last_ins = 0B;
        D.26095 = D.26094->last_ins;
        D.26094->code = D.26095;
        restart = 1;
        goto <D.24472>;
        <D.24471>:
        restart = 0;
        ins = bb->code;
        goto <D.24469>;
        <D.24468>:
        D.26096 = ins->opcode;
        D.26097 = (int) D.26096;
        switch (D.26097) <default: <D.24467>, case 781: <D.24462>, case 782: <D.24457>, case 783: <D.24427>, case 784: <D.24432>>
        <D.24427>:
        {
          int __ins_flags;

          D.26098 = ins->flags;
          D.26099 = D.26098 | 64;
          __ins_flags = (int) D.26099;
          D.26100 = __ins_flags & 32;
          if (D.26100 != 0) goto <D.26101>; else goto <D.26102>;
          <D.26101>:
          D.26103 = BIT_FIELD_REF <*cfg, 64, 5632>;
          D.26104 = D.26103 & 144115188075855872;
          if (D.26104 != 0) goto <D.26105>; else goto <D.26106>;
          <D.26105>:
          {
            struct MonoInst * inst;

            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26107 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26107;
            inst->prev = 0B;
            D.26108 = inst->prev;
            inst->next = D.26108;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26109 = inst->sreg3;
            inst->sreg2 = D.26109;
            D.26110 = inst->sreg2;
            inst->sreg1 = D.26110;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->dreg = -1;
            D.26112 = ins->sreg1;
            inst->sreg1 = D.26112;
            inst->data.op[1].const_val = 0;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26113>; else goto <D.26114>;
            <D.26113>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26115>;
            <D.26114>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26115>:
          }
          {
            struct MonoInst * inst;

            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26116 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26116;
            inst->prev = 0B;
            D.26117 = inst->prev;
            inst->next = D.26117;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26118 = inst->sreg3;
            inst->sreg2 = D.26118;
            D.26119 = inst->sreg2;
            inst->sreg1 = D.26119;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->data.op[1].p = "NullReferenceException";
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26120>; else goto <D.26121>;
            <D.26120>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26122>;
            <D.26121>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26122>:
          }
          goto <D.26123>;
          <D.26106>:
          <D.26123>:
          <D.26102>:
          D.26085 = cfg->mempool;
          dest = mono_mempool_alloc (D.26085, 80);
          dest->data.op[1].const_val = 0;
          D.26124 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.26124;
          dest->prev = 0B;
          D.26125 = dest->prev;
          dest->next = D.26125;
          dest->opcode = 393;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.26126 = dest->sreg3;
          dest->sreg2 = D.26126;
          D.26127 = dest->sreg2;
          dest->sreg1 = D.26127;
          D.26111 = cfg->ip;
          dest->cil_code = D.26111;
          D.26128 = ins->dreg;
          dest->dreg = D.26128;
          D.26112 = ins->sreg1;
          dest->sreg1 = D.26112;
          dest->data.op[0].const_val = 24;
          dest->type = 1;
          D.26129 = (unsigned char) __ins_flags;
          dest->flags = D.26129;
        }
        D.26094 = cfg->cbb;
        D.26095 = D.26094->last_ins;
        if (D.26095 != 0B) goto <D.26130>; else goto <D.26131>;
        <D.26130>:
        D.26094 = cfg->cbb;
        D.26095 = D.26094->last_ins;
        D.26095->next = dest;
        D.26094 = cfg->cbb;
        D.26095 = D.26094->last_ins;
        dest->prev = D.26095;
        D.26094 = cfg->cbb;
        D.26094->last_ins = dest;
        goto <D.26132>;
        <D.26131>:
        D.26094 = cfg->cbb;
        D.26094 = cfg->cbb;
        D.26094->last_ins = dest;
        D.26095 = D.26094->last_ins;
        D.26094->code = D.26095;
        <D.26132>:
        goto <D.24431>;
        <D.24432>:
        D.26103 = BIT_FIELD_REF <*cfg, 64, 5632>;
        D.26104 = D.26103 & 144115188075855872;
        if (D.26104 != 0) goto <D.26133>; else goto <D.26134>;
        <D.26133>:
        {
          struct MonoInst * inst;

          D.26085 = cfg->mempool;
          inst = mono_mempool_alloc (D.26085, 80);
          inst->data.op[1].const_val = 0;
          D.26135 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.26135;
          inst->prev = 0B;
          D.26136 = inst->prev;
          inst->next = D.26136;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.26137 = inst->sreg3;
          inst->sreg2 = D.26137;
          D.26138 = inst->sreg2;
          inst->sreg1 = D.26138;
          D.26111 = cfg->ip;
          inst->cil_code = D.26111;
          inst->dreg = -1;
          D.26112 = ins->sreg1;
          inst->sreg1 = D.26112;
          inst->data.op[1].const_val = 0;
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          if (D.26095 != 0B) goto <D.26139>; else goto <D.26140>;
          <D.26139>:
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          D.26095->next = inst;
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          inst->prev = D.26095;
          D.26094 = cfg->cbb;
          D.26094->last_ins = inst;
          goto <D.26141>;
          <D.26140>:
          D.26094 = cfg->cbb;
          D.26094 = cfg->cbb;
          D.26094->last_ins = inst;
          D.26095 = D.26094->last_ins;
          D.26094->code = D.26095;
          <D.26141>:
        }
        {
          struct MonoInst * inst;

          D.26085 = cfg->mempool;
          inst = mono_mempool_alloc (D.26085, 80);
          inst->data.op[1].const_val = 0;
          D.26142 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.26142;
          inst->prev = 0B;
          D.26143 = inst->prev;
          inst->next = D.26143;
          inst->opcode = 451;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.26144 = inst->sreg3;
          inst->sreg2 = D.26144;
          D.26145 = inst->sreg2;
          inst->sreg1 = D.26145;
          D.26111 = cfg->ip;
          inst->cil_code = D.26111;
          inst->data.op[1].p = "NullReferenceException";
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          if (D.26095 != 0B) goto <D.26146>; else goto <D.26147>;
          <D.26146>:
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          D.26095->next = inst;
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          inst->prev = D.26095;
          D.26094 = cfg->cbb;
          D.26094->last_ins = inst;
          goto <D.26148>;
          <D.26147>:
          D.26094 = cfg->cbb;
          D.26094 = cfg->cbb;
          D.26094->last_ins = inst;
          D.26095 = D.26094->last_ins;
          D.26094->code = D.26095;
          <D.26148>:
        }
        goto <D.26149>;
        <D.26134>:
        <D.26149>:
        if (0 != 0) goto <D.26150>; else goto <D.26151>;
        <D.26150>:
        {
          int _length_reg;

          D.26152 = alloc_ireg (cfg);
          _length_reg = (int) D.26152;
          D.26098 = ins->flags;
          D.26153 = (int) D.26098;
          D.26154 = D.26153 & 32;
          if (D.26154 != 0) goto <D.26155>; else goto <D.26156>;
          <D.26155>:
          {
            struct MonoInst * inst;
            int __ins_flags;

            __ins_flags = 32;
            D.26157 = __ins_flags & 32;
            if (D.26157 != 0) goto <D.26158>; else goto <D.26159>;
            <D.26158>:
            D.26103 = BIT_FIELD_REF <*cfg, 64, 5632>;
            D.26104 = D.26103 & 144115188075855872;
            if (D.26104 != 0) goto <D.26160>; else goto <D.26161>;
            <D.26160>:
            {
              struct MonoInst * inst;

              D.26085 = cfg->mempool;
              inst = mono_mempool_alloc (D.26085, 80);
              inst->data.op[1].const_val = 0;
              D.26162 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26162;
              inst->prev = 0B;
              D.26163 = inst->prev;
              inst->next = D.26163;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26164 = inst->sreg3;
              inst->sreg2 = D.26164;
              D.26165 = inst->sreg2;
              inst->sreg1 = D.26165;
              D.26111 = cfg->ip;
              inst->cil_code = D.26111;
              inst->dreg = -1;
              D.26112 = ins->sreg1;
              inst->sreg1 = D.26112;
              inst->data.op[1].const_val = 0;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              if (D.26095 != 0B) goto <D.26166>; else goto <D.26167>;
              <D.26166>:
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              D.26095->next = inst;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              inst->prev = D.26095;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              goto <D.26168>;
              <D.26167>:
              D.26094 = cfg->cbb;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              D.26095 = D.26094->last_ins;
              D.26094->code = D.26095;
              <D.26168>:
            }
            {
              struct MonoInst * inst;

              D.26085 = cfg->mempool;
              inst = mono_mempool_alloc (D.26085, 80);
              inst->data.op[1].const_val = 0;
              D.26169 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26169;
              inst->prev = 0B;
              D.26170 = inst->prev;
              inst->next = D.26170;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26171 = inst->sreg3;
              inst->sreg2 = D.26171;
              D.26172 = inst->sreg2;
              inst->sreg1 = D.26172;
              D.26111 = cfg->ip;
              inst->cil_code = D.26111;
              inst->data.op[1].p = "NullReferenceException";
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              if (D.26095 != 0B) goto <D.26173>; else goto <D.26174>;
              <D.26173>:
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              D.26095->next = inst;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              inst->prev = D.26095;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              goto <D.26175>;
              <D.26174>:
              D.26094 = cfg->cbb;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              D.26095 = D.26094->last_ins;
              D.26094->code = D.26095;
              <D.26175>:
            }
            goto <D.26176>;
            <D.26161>:
            <D.26176>:
            <D.26159>:
            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26177 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26177;
            inst->prev = 0B;
            D.26178 = inst->prev;
            inst->next = D.26178;
            inst->opcode = 393;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26179 = inst->sreg3;
            inst->sreg2 = D.26179;
            D.26180 = inst->sreg2;
            inst->sreg1 = D.26180;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->dreg = _length_reg;
            D.26112 = ins->sreg1;
            inst->sreg1 = D.26112;
            D.26181 = ins->data.op[1].const_val;
            inst->data.op[0].const_val = D.26181;
            inst->type = 1;
            D.26182 = (unsigned char) __ins_flags;
            inst->flags = D.26182;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26183>; else goto <D.26184>;
            <D.26183>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26185>;
            <D.26184>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26185>:
          }
          goto <D.26186>;
          <D.26156>:
          {
            struct MonoInst * inst;
            int __ins_flags;

            __ins_flags = 64;
            D.26187 = __ins_flags & 32;
            if (D.26187 != 0) goto <D.26188>; else goto <D.26189>;
            <D.26188>:
            D.26103 = BIT_FIELD_REF <*cfg, 64, 5632>;
            D.26104 = D.26103 & 144115188075855872;
            if (D.26104 != 0) goto <D.26190>; else goto <D.26191>;
            <D.26190>:
            {
              struct MonoInst * inst;

              D.26085 = cfg->mempool;
              inst = mono_mempool_alloc (D.26085, 80);
              inst->data.op[1].const_val = 0;
              D.26192 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26192;
              inst->prev = 0B;
              D.26193 = inst->prev;
              inst->next = D.26193;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26194 = inst->sreg3;
              inst->sreg2 = D.26194;
              D.26195 = inst->sreg2;
              inst->sreg1 = D.26195;
              D.26111 = cfg->ip;
              inst->cil_code = D.26111;
              inst->dreg = -1;
              D.26112 = ins->sreg1;
              inst->sreg1 = D.26112;
              inst->data.op[1].const_val = 0;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              if (D.26095 != 0B) goto <D.26196>; else goto <D.26197>;
              <D.26196>:
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              D.26095->next = inst;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              inst->prev = D.26095;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              goto <D.26198>;
              <D.26197>:
              D.26094 = cfg->cbb;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              D.26095 = D.26094->last_ins;
              D.26094->code = D.26095;
              <D.26198>:
            }
            {
              struct MonoInst * inst;

              D.26085 = cfg->mempool;
              inst = mono_mempool_alloc (D.26085, 80);
              inst->data.op[1].const_val = 0;
              D.26199 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26199;
              inst->prev = 0B;
              D.26200 = inst->prev;
              inst->next = D.26200;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26201 = inst->sreg3;
              inst->sreg2 = D.26201;
              D.26202 = inst->sreg2;
              inst->sreg1 = D.26202;
              D.26111 = cfg->ip;
              inst->cil_code = D.26111;
              inst->data.op[1].p = "NullReferenceException";
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              if (D.26095 != 0B) goto <D.26203>; else goto <D.26204>;
              <D.26203>:
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              D.26095->next = inst;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              inst->prev = D.26095;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              goto <D.26205>;
              <D.26204>:
              D.26094 = cfg->cbb;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              D.26095 = D.26094->last_ins;
              D.26094->code = D.26095;
              <D.26205>:
            }
            goto <D.26206>;
            <D.26191>:
            <D.26206>:
            <D.26189>:
            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26207 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26207;
            inst->prev = 0B;
            D.26208 = inst->prev;
            inst->next = D.26208;
            inst->opcode = 393;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26209 = inst->sreg3;
            inst->sreg2 = D.26209;
            D.26210 = inst->sreg2;
            inst->sreg1 = D.26210;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->dreg = _length_reg;
            D.26112 = ins->sreg1;
            inst->sreg1 = D.26112;
            D.26181 = ins->data.op[1].const_val;
            inst->data.op[0].const_val = D.26181;
            inst->type = 1;
            D.26211 = (unsigned char) __ins_flags;
            inst->flags = D.26211;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26212>; else goto <D.26213>;
            <D.26212>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26214>;
            <D.26213>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26214>:
          }
          <D.26186>:
          {
            struct MonoInst * inst;

            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26215 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26215;
            inst->prev = 0B;
            D.26216 = inst->prev;
            inst->next = D.26216;
            inst->opcode = 322;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26217 = inst->sreg3;
            inst->sreg2 = D.26217;
            D.26218 = inst->sreg2;
            inst->sreg1 = D.26218;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->dreg = -1;
            inst->sreg1 = _length_reg;
            D.26219 = ins->sreg2;
            inst->sreg2 = D.26219;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26220>; else goto <D.26221>;
            <D.26220>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26222>;
            <D.26221>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26222>:
          }
          {
            struct MonoInst * inst;

            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26223 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26223;
            inst->prev = 0B;
            D.26224 = inst->prev;
            inst->next = D.26224;
            inst->opcode = 459;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26225 = inst->sreg3;
            inst->sreg2 = D.26225;
            D.26226 = inst->sreg2;
            inst->sreg1 = D.26226;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->data.op[1].p = "IndexOutOfRangeException";
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26227>; else goto <D.26228>;
            <D.26227>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26229>;
            <D.26228>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26229>:
          }
        }
        goto <D.26230>;
        <D.26151>:
        {
          int _length_reg;

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

            __ins_flags = 32;
            D.26234 = __ins_flags & 32;
            if (D.26234 != 0) goto <D.26235>; else goto <D.26236>;
            <D.26235>:
            D.26103 = BIT_FIELD_REF <*cfg, 64, 5632>;
            D.26104 = D.26103 & 144115188075855872;
            if (D.26104 != 0) goto <D.26237>; else goto <D.26238>;
            <D.26237>:
            {
              struct MonoInst * inst;

              D.26085 = cfg->mempool;
              inst = mono_mempool_alloc (D.26085, 80);
              inst->data.op[1].const_val = 0;
              D.26239 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26239;
              inst->prev = 0B;
              D.26240 = inst->prev;
              inst->next = D.26240;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26241 = inst->sreg3;
              inst->sreg2 = D.26241;
              D.26242 = inst->sreg2;
              inst->sreg1 = D.26242;
              D.26111 = cfg->ip;
              inst->cil_code = D.26111;
              inst->dreg = -1;
              D.26112 = ins->sreg1;
              inst->sreg1 = D.26112;
              inst->data.op[1].const_val = 0;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              if (D.26095 != 0B) goto <D.26243>; else goto <D.26244>;
              <D.26243>:
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              D.26095->next = inst;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              inst->prev = D.26095;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              goto <D.26245>;
              <D.26244>:
              D.26094 = cfg->cbb;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              D.26095 = D.26094->last_ins;
              D.26094->code = D.26095;
              <D.26245>:
            }
            {
              struct MonoInst * inst;

              D.26085 = cfg->mempool;
              inst = mono_mempool_alloc (D.26085, 80);
              inst->data.op[1].const_val = 0;
              D.26246 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26246;
              inst->prev = 0B;
              D.26247 = inst->prev;
              inst->next = D.26247;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26248 = inst->sreg3;
              inst->sreg2 = D.26248;
              D.26249 = inst->sreg2;
              inst->sreg1 = D.26249;
              D.26111 = cfg->ip;
              inst->cil_code = D.26111;
              inst->data.op[1].p = "NullReferenceException";
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              if (D.26095 != 0B) goto <D.26250>; else goto <D.26251>;
              <D.26250>:
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              D.26095->next = inst;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              inst->prev = D.26095;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              goto <D.26252>;
              <D.26251>:
              D.26094 = cfg->cbb;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              D.26095 = D.26094->last_ins;
              D.26094->code = D.26095;
              <D.26252>:
            }
            goto <D.26253>;
            <D.26238>:
            <D.26253>:
            <D.26236>:
            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26254 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26254;
            inst->prev = 0B;
            D.26255 = inst->prev;
            inst->next = D.26255;
            inst->opcode = 393;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26256 = inst->sreg3;
            inst->sreg2 = D.26256;
            D.26257 = inst->sreg2;
            inst->sreg1 = D.26257;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->dreg = _length_reg;
            D.26112 = ins->sreg1;
            inst->sreg1 = D.26112;
            D.26181 = ins->data.op[1].const_val;
            inst->data.op[0].const_val = D.26181;
            inst->type = 1;
            D.26258 = (unsigned char) __ins_flags;
            inst->flags = D.26258;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26259>; else goto <D.26260>;
            <D.26259>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26261>;
            <D.26260>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26261>:
          }
          goto <D.26262>;
          <D.26233>:
          {
            struct MonoInst * inst;
            int __ins_flags;

            __ins_flags = 64;
            D.26263 = __ins_flags & 32;
            if (D.26263 != 0) goto <D.26264>; else goto <D.26265>;
            <D.26264>:
            D.26103 = BIT_FIELD_REF <*cfg, 64, 5632>;
            D.26104 = D.26103 & 144115188075855872;
            if (D.26104 != 0) goto <D.26266>; else goto <D.26267>;
            <D.26266>:
            {
              struct MonoInst * inst;

              D.26085 = cfg->mempool;
              inst = mono_mempool_alloc (D.26085, 80);
              inst->data.op[1].const_val = 0;
              D.26268 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26268;
              inst->prev = 0B;
              D.26269 = inst->prev;
              inst->next = D.26269;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26270 = inst->sreg3;
              inst->sreg2 = D.26270;
              D.26271 = inst->sreg2;
              inst->sreg1 = D.26271;
              D.26111 = cfg->ip;
              inst->cil_code = D.26111;
              inst->dreg = -1;
              D.26112 = ins->sreg1;
              inst->sreg1 = D.26112;
              inst->data.op[1].const_val = 0;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              if (D.26095 != 0B) goto <D.26272>; else goto <D.26273>;
              <D.26272>:
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              D.26095->next = inst;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              inst->prev = D.26095;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              goto <D.26274>;
              <D.26273>:
              D.26094 = cfg->cbb;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              D.26095 = D.26094->last_ins;
              D.26094->code = D.26095;
              <D.26274>:
            }
            {
              struct MonoInst * inst;

              D.26085 = cfg->mempool;
              inst = mono_mempool_alloc (D.26085, 80);
              inst->data.op[1].const_val = 0;
              D.26275 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26275;
              inst->prev = 0B;
              D.26276 = inst->prev;
              inst->next = D.26276;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26277 = inst->sreg3;
              inst->sreg2 = D.26277;
              D.26278 = inst->sreg2;
              inst->sreg1 = D.26278;
              D.26111 = cfg->ip;
              inst->cil_code = D.26111;
              inst->data.op[1].p = "NullReferenceException";
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              if (D.26095 != 0B) goto <D.26279>; else goto <D.26280>;
              <D.26279>:
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              D.26095->next = inst;
              D.26094 = cfg->cbb;
              D.26095 = D.26094->last_ins;
              inst->prev = D.26095;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              goto <D.26281>;
              <D.26280>:
              D.26094 = cfg->cbb;
              D.26094 = cfg->cbb;
              D.26094->last_ins = inst;
              D.26095 = D.26094->last_ins;
              D.26094->code = D.26095;
              <D.26281>:
            }
            goto <D.26282>;
            <D.26267>:
            <D.26282>:
            <D.26265>:
            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26283 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26283;
            inst->prev = 0B;
            D.26284 = inst->prev;
            inst->next = D.26284;
            inst->opcode = 393;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26285 = inst->sreg3;
            inst->sreg2 = D.26285;
            D.26286 = inst->sreg2;
            inst->sreg1 = D.26286;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->dreg = _length_reg;
            D.26112 = ins->sreg1;
            inst->sreg1 = D.26112;
            D.26181 = ins->data.op[1].const_val;
            inst->data.op[0].const_val = D.26181;
            inst->type = 1;
            D.26287 = (unsigned char) __ins_flags;
            inst->flags = D.26287;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26288>; else goto <D.26289>;
            <D.26288>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26290>;
            <D.26289>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26290>:
          }
          <D.26262>:
          {
            struct MonoInst * inst;

            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26291 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26291;
            inst->prev = 0B;
            D.26292 = inst->prev;
            inst->next = D.26292;
            inst->opcode = 322;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26293 = inst->sreg3;
            inst->sreg2 = D.26293;
            D.26294 = inst->sreg2;
            inst->sreg1 = D.26294;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->dreg = -1;
            inst->sreg1 = _length_reg;
            D.26219 = ins->sreg2;
            inst->sreg2 = D.26219;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26295>; else goto <D.26296>;
            <D.26295>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26297>;
            <D.26296>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26297>:
          }
          {
            struct MonoInst * inst;

            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26298 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26298;
            inst->prev = 0B;
            D.26299 = inst->prev;
            inst->next = D.26299;
            inst->opcode = 459;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26300 = inst->sreg3;
            inst->sreg2 = D.26300;
            D.26301 = inst->sreg2;
            inst->sreg1 = D.26301;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->data.op[1].p = "IndexOutOfRangeException";
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26302>; else goto <D.26303>;
            <D.26302>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26304>;
            <D.26303>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26304>:
          }
        }
        <D.26230>:
        goto <D.24431>;
        <D.24457>:
        D.26305 = cfg->opt;
        D.26306 = D.26305 & 512;
        if (D.26306 != 0) goto <D.26307>; else goto <D.26308>;
        <D.26307>:
        D.26305 = cfg->opt;
        D.26306 = D.26305 & 512;
        if (D.26306 != 0) goto <D.26309>; else goto <D.26312>;
        <D.26312>:
        D.26313 = BIT_FIELD_REF <*cfg, 64, 5568>;
        D.26314 = D.26313 & 33554432;
        if (D.26314 != 0) goto <D.26309>; else goto <D.26310>;
        <D.26309>:
        {
          struct MonoInst * __domain_var;

          __domain_var = mono_get_domainvar (cfg);
          D.26085 = cfg->mempool;
          D.26315 = mono_mempool_alloc (D.26085, 80);
          iargs[0] = D.26315;
          D.26316 = iargs[0];
          D.26316 = iargs[0];
          D.26316->data.op[1].const_val = 0;
          D.26317 = D.26316->data.op[1].const_val;
          D.26316->data.op[0].const_val = D.26317;
          D.26316 = iargs[0];
          D.26316 = iargs[0];
          D.26316->prev = 0B;
          D.26318 = D.26316->prev;
          D.26316->next = D.26318;
          D.26316 = iargs[0];
          D.26316->opcode = 424;
          D.26316 = iargs[0];
          D.26316->flags = 0;
          D.26316 = iargs[0];
          D.26316->type = 0;
          D.26316 = iargs[0];
          D.26316->dreg = -1;
          D.26316 = iargs[0];
          D.26316 = iargs[0];
          D.26316 = iargs[0];
          D.26316->sreg3 = -1;
          D.26319 = D.26316->sreg3;
          D.26316->sreg2 = D.26319;
          D.26320 = D.26316->sreg2;
          D.26316->sreg1 = D.26320;
          D.26316 = iargs[0];
          D.26111 = cfg->ip;
          D.26316->cil_code = D.26111;
          D.26316 = iargs[0];
          D.26321 = cfg->varinfo;
          D.26322 = __domain_var->data.op[0].const_val;
          D.26323 = (long unsigned int) D.26322;
          D.26324 = D.26323 * 8;
          D.26325 = D.26321 + D.26324;
          D.26326 = *D.26325;
          D.26327 = D.26326->data.op[1].vtype;
          D.26328 = mono_type_to_regmove (cfg, D.26327);
          D.26329 = (short unsigned int) D.26328;
          D.26316->opcode = D.26329;
          D.26321 = cfg->varinfo;
          D.26322 = __domain_var->data.op[0].const_val;
          D.26323 = (long unsigned int) D.26322;
          D.26324 = D.26323 * 8;
          D.26325 = D.26321 + D.26324;
          D.26326 = *D.26325;
          D.26327 = D.26326->data.op[1].vtype;
          D.26316 = iargs[0];
          type_to_eval_stack_type (cfg, D.26327, D.26316);
          D.26316 = iargs[0];
          D.26321 = cfg->varinfo;
          D.26322 = __domain_var->data.op[0].const_val;
          D.26323 = (long unsigned int) D.26322;
          D.26324 = D.26323 * 8;
          D.26325 = D.26321 + D.26324;
          D.26326 = *D.26325;
          D.26330 = D.26326->klass;
          D.26316->klass = D.26330;
          D.26316 = iargs[0];
          D.26321 = cfg->varinfo;
          D.26322 = __domain_var->data.op[0].const_val;
          D.26323 = (long unsigned int) D.26322;
          D.26324 = D.26323 * 8;
          D.26325 = D.26321 + D.26324;
          D.26326 = *D.26325;
          D.26331 = D.26326->dreg;
          D.26316->sreg1 = D.26331;
          D.26316 = iargs[0];
          D.26316 = iargs[0];
          D.26332 = D.26316->type;
          D.26333 = (<unnamed type>) D.26332;
          D.26334 = alloc_dreg (cfg, D.26333);
          D.26335 = (int) D.26334;
          D.26316->dreg = D.26335;
          D.26316 = iargs[0];
          D.26336 = D.26316->opcode;
          if (D.26336 == 427) goto <D.26337>; else goto <D.26338>;
          <D.26337>:
          D.26316 = iargs[0];
          D.26321 = cfg->varinfo;
          D.26322 = __domain_var->data.op[0].const_val;
          D.26323 = (long unsigned int) D.26322;
          D.26324 = D.26323 * 8;
          D.26325 = D.26321 + D.26324;
          D.26326 = *D.26325;
          D.26327 = D.26326->data.op[1].vtype;
          D.26339 = mono_class_from_mono_type (D.26327);
          D.26316->klass = D.26339;
          <D.26338>:
        }
        goto <D.26311>;
        <D.26310>:
        D.26085 = cfg->mempool;
        D.26340 = mono_mempool_alloc (D.26085, 80);
        iargs[0] = D.26340;
        D.26316 = iargs[0];
        D.26316 = iargs[0];
        D.26316->data.op[1].const_val = 0;
        D.26317 = D.26316->data.op[1].const_val;
        D.26316->data.op[0].const_val = D.26317;
        D.26316 = iargs[0];
        D.26316 = iargs[0];
        D.26316->prev = 0B;
        D.26318 = D.26316->prev;
        D.26316->next = D.26318;
        D.26316 = iargs[0];
        D.26316->opcode = 363;
        D.26316 = iargs[0];
        D.26316->flags = 0;
        D.26316 = iargs[0];
        D.26316->type = 0;
        D.26316 = iargs[0];
        D.26316->dreg = -1;
        D.26316 = iargs[0];
        D.26316 = iargs[0];
        D.26316 = iargs[0];
        D.26316->sreg3 = -1;
        D.26319 = D.26316->sreg3;
        D.26316->sreg2 = D.26319;
        D.26320 = D.26316->sreg2;
        D.26316->sreg1 = D.26320;
        D.26316 = iargs[0];
        D.26111 = cfg->ip;
        D.26316->cil_code = D.26111;
        D.26316 = iargs[0];
        D.26341 = cfg->domain;
        D.26316->data.op[0].p = D.26341;
        D.26316 = iargs[0];
        D.26316->type = 3;
        D.26316 = iargs[0];
        D.26342 = alloc_dreg (cfg, 3);
        D.26343 = (int) D.26342;
        D.26316->dreg = D.26343;
        <D.26311>:
        D.26094 = cfg->cbb;
        D.26095 = D.26094->last_ins;
        if (D.26095 != 0B) goto <D.26344>; else goto <D.26345>;
        <D.26344>:
        D.26094 = cfg->cbb;
        D.26095 = D.26094->last_ins;
        D.26316 = iargs[0];
        D.26095->next = D.26316;
        D.26316 = iargs[0];
        D.26094 = cfg->cbb;
        D.26095 = D.26094->last_ins;
        D.26316->prev = D.26095;
        D.26094 = cfg->cbb;
        D.26316 = iargs[0];
        D.26094->last_ins = D.26316;
        goto <D.26346>;
        <D.26345>:
        D.26094 = cfg->cbb;
        D.26094 = cfg->cbb;
        D.26316 = iargs[0];
        D.26094->last_ins = D.26316;
        D.26095 = D.26094->last_ins;
        D.26094->code = D.26095;
        <D.26346>:
        D.26085 = cfg->mempool;
        D.26347 = mono_mempool_alloc (D.26085, 80);
        iargs[1] = D.26347;
        D.26348 = iargs[1];
        D.26348 = iargs[1];
        D.26348->data.op[1].const_val = 0;
        D.26349 = D.26348->data.op[1].const_val;
        D.26348->data.op[0].const_val = D.26349;
        D.26348 = iargs[1];
        D.26348 = iargs[1];
        D.26348->prev = 0B;
        D.26350 = D.26348->prev;
        D.26348->next = D.26350;
        D.26348 = iargs[1];
        D.26313 = BIT_FIELD_REF <*cfg, 64, 5568>;
        D.26314 = D.26313 & 33554432;
        if (D.26314 != 0) goto <D.26352>; else goto <D.26353>;
        <D.26352>:
        iftmp.49 = 732;
        goto <D.26354>;
        <D.26353>:
        iftmp.49 = 363;
        <D.26354>:
        D.26348->opcode = iftmp.49;
        D.26348 = iargs[1];
        D.26348->flags = 0;
        D.26348 = iargs[1];
        D.26348->type = 0;
        D.26348 = iargs[1];
        D.26348->dreg = -1;
        D.26348 = iargs[1];
        D.26348 = iargs[1];
        D.26348 = iargs[1];
        D.26348->sreg3 = -1;
        D.26355 = D.26348->sreg3;
        D.26348->sreg2 = D.26355;
        D.26356 = D.26348->sreg2;
        D.26348->sreg1 = D.26356;
        D.26348 = iargs[1];
        D.26111 = cfg->ip;
        D.26348->cil_code = D.26111;
        D.26348 = iargs[1];
        D.26357 = ins->data.op[1].klass;
        D.26348->data.op[0].p = D.26357;
        D.26348 = iargs[1];
        D.26348->data.op[1].src = 11B;
        D.26348 = iargs[1];
        D.26348->type = 3;
        D.26348 = iargs[1];
        D.26358 = alloc_dreg (cfg, 3);
        D.26359 = (int) D.26358;
        D.26348->dreg = D.26359;
        D.26094 = cfg->cbb;
        D.26095 = D.26094->last_ins;
        if (D.26095 != 0B) goto <D.26360>; else goto <D.26361>;
        <D.26360>:
        D.26094 = cfg->cbb;
        D.26095 = D.26094->last_ins;
        D.26348 = iargs[1];
        D.26095->next = D.26348;
        D.26348 = iargs[1];
        D.26094 = cfg->cbb;
        D.26095 = D.26094->last_ins;
        D.26348->prev = D.26095;
        D.26094 = cfg->cbb;
        D.26348 = iargs[1];
        D.26094->last_ins = D.26348;
        goto <D.26362>;
        <D.26361>:
        D.26094 = cfg->cbb;
        D.26094 = cfg->cbb;
        D.26348 = iargs[1];
        D.26094->last_ins = D.26348;
        D.26095 = D.26094->last_ins;
        D.26094->code = D.26095;
        <D.26362>:
        D.26085 = cfg->mempool;
        D.26363 = mono_mempool_alloc (D.26085, 80);
        iargs[2] = D.26363;
        D.26364 = iargs[2];
        D.26364 = iargs[2];
        D.26364->data.op[1].const_val = 0;
        D.26365 = D.26364->data.op[1].const_val;
        D.26364->data.op[0].const_val = D.26365;
        D.26364 = iargs[2];
        D.26364 = iargs[2];
        D.26364->prev = 0B;
        D.26366 = D.26364->prev;
        D.26364->next = D.26366;
        D.26364 = iargs[2];
        D.26364->opcode = 424;
        D.26364 = iargs[2];
        D.26364->flags = 0;
        D.26364 = iargs[2];
        D.26364->type = 0;
        D.26364 = iargs[2];
        D.26364->dreg = -1;
        D.26364 = iargs[2];
        D.26364 = iargs[2];
        D.26364 = iargs[2];
        D.26364->sreg3 = -1;
        D.26367 = D.26364->sreg3;
        D.26364->sreg2 = D.26367;
        D.26368 = D.26364->sreg2;
        D.26364->sreg1 = D.26368;
        D.26364 = iargs[2];
        D.26111 = cfg->ip;
        D.26364->cil_code = D.26111;
        D.26364 = iargs[2];
        D.26112 = ins->sreg1;
        D.26364->dreg = D.26112;
        dest = mono_emit_jit_icall (cfg, mono_array_new, &iargs);
        D.26128 = ins->dreg;
        dest->dreg = D.26128;
        goto <D.26369>;
        <D.26308>:
        {
          struct MonoClass * array_class;
          struct MonoVTable * vtable;
          struct MonoMethod * managed_alloc;

          D.26357 = ins->data.op[1].klass;
          array_class = mono_array_class_get (D.26357, 1);
          D.26341 = cfg->domain;
          vtable = mono_class_vtable (D.26341, array_class);
          managed_alloc = mono_gc_get_managed_array_allocator (array_class);
          D.26370 = vtable == 0B;
          D.26371 = (long int) D.26370;
          D.26372 = __builtin_expect (D.26371, 0);
          if (D.26372 != 0) goto <D.26373>; else goto <D.26374>;
          <D.26373>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1505, "vtable");
          <D.26374>:
          D.26085 = cfg->mempool;
          D.26375 = mono_mempool_alloc (D.26085, 80);
          iargs[0] = D.26375;
          D.26316 = iargs[0];
          D.26316 = iargs[0];
          D.26316->data.op[1].const_val = 0;
          D.26317 = D.26316->data.op[1].const_val;
          D.26316->data.op[0].const_val = D.26317;
          D.26316 = iargs[0];
          D.26316 = iargs[0];
          D.26316->prev = 0B;
          D.26318 = D.26316->prev;
          D.26316->next = D.26318;
          D.26316 = iargs[0];
          D.26313 = BIT_FIELD_REF <*cfg, 64, 5568>;
          D.26314 = D.26313 & 33554432;
          if (D.26314 != 0) goto <D.26377>; else goto <D.26378>;
          <D.26377>:
          iftmp.50 = 732;
          goto <D.26379>;
          <D.26378>:
          iftmp.50 = 363;
          <D.26379>:
          D.26316->opcode = iftmp.50;
          D.26316 = iargs[0];
          D.26316->flags = 0;
          D.26316 = iargs[0];
          D.26316->type = 0;
          D.26316 = iargs[0];
          D.26316->dreg = -1;
          D.26316 = iargs[0];
          D.26316 = iargs[0];
          D.26316 = iargs[0];
          D.26316->sreg3 = -1;
          D.26319 = D.26316->sreg3;
          D.26316->sreg2 = D.26319;
          D.26320 = D.26316->sreg2;
          D.26316->sreg1 = D.26320;
          D.26316 = iargs[0];
          D.26111 = cfg->ip;
          D.26316->cil_code = D.26111;
          D.26316 = iargs[0];
          D.26313 = BIT_FIELD_REF <*cfg, 64, 5568>;
          D.26314 = D.26313 & 33554432;
          if (D.26314 != 0) goto <D.26381>; else goto <D.26382>;
          <D.26381>:
          iftmp.51 = vtable->klass;
          goto <D.26383>;
          <D.26382>:
          iftmp.51 = vtable;
          <D.26383>:
          D.26316->data.op[0].p = iftmp.51;
          D.26316 = iargs[0];
          D.26316->data.op[1].src = 14B;
          D.26316 = iargs[0];
          D.26316->type = 3;
          D.26316 = iargs[0];
          D.26384 = alloc_dreg (cfg, 3);
          D.26385 = (int) D.26384;
          D.26316->dreg = D.26385;
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          if (D.26095 != 0B) goto <D.26386>; else goto <D.26387>;
          <D.26386>:
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          D.26316 = iargs[0];
          D.26095->next = D.26316;
          D.26316 = iargs[0];
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          D.26316->prev = D.26095;
          D.26094 = cfg->cbb;
          D.26316 = iargs[0];
          D.26094->last_ins = D.26316;
          goto <D.26388>;
          <D.26387>:
          D.26094 = cfg->cbb;
          D.26094 = cfg->cbb;
          D.26316 = iargs[0];
          D.26094->last_ins = D.26316;
          D.26095 = D.26094->last_ins;
          D.26094->code = D.26095;
          <D.26388>:
          D.26085 = cfg->mempool;
          D.26389 = mono_mempool_alloc (D.26085, 80);
          iargs[1] = D.26389;
          D.26348 = iargs[1];
          D.26348 = iargs[1];
          D.26348->data.op[1].const_val = 0;
          D.26349 = D.26348->data.op[1].const_val;
          D.26348->data.op[0].const_val = D.26349;
          D.26348 = iargs[1];
          D.26348 = iargs[1];
          D.26348->prev = 0B;
          D.26350 = D.26348->prev;
          D.26348->next = D.26350;
          D.26348 = iargs[1];
          D.26348->opcode = 424;
          D.26348 = iargs[1];
          D.26348->flags = 0;
          D.26348 = iargs[1];
          D.26348->type = 0;
          D.26348 = iargs[1];
          D.26348->dreg = -1;
          D.26348 = iargs[1];
          D.26348 = iargs[1];
          D.26348 = iargs[1];
          D.26348->sreg3 = -1;
          D.26355 = D.26348->sreg3;
          D.26348->sreg2 = D.26355;
          D.26356 = D.26348->sreg2;
          D.26348->sreg1 = D.26356;
          D.26348 = iargs[1];
          D.26111 = cfg->ip;
          D.26348->cil_code = D.26111;
          D.26348 = iargs[1];
          D.26112 = ins->sreg1;
          D.26348->dreg = D.26112;
          if (managed_alloc != 0B) goto <D.26390>; else goto <D.26391>;
          <D.26390>:
          dest = mono_emit_method_call (cfg, managed_alloc, &iargs, 0B);
          goto <D.26392>;
          <D.26391>:
          dest = mono_emit_jit_icall (cfg, mono_array_new_specific, &iargs);
          <D.26392>:
          D.26128 = ins->dreg;
          dest->dreg = D.26128;
        }
        <D.26369>:
        goto <D.24431>;
        <D.24462>:
        {
          struct MonoInst * inst;
          int __ins_flags;

          D.26098 = ins->flags;
          D.26099 = D.26098 | 64;
          __ins_flags = (int) D.26099;
          D.26393 = __ins_flags & 32;
          if (D.26393 != 0) goto <D.26394>; else goto <D.26395>;
          <D.26394>:
          D.26103 = BIT_FIELD_REF <*cfg, 64, 5632>;
          D.26104 = D.26103 & 144115188075855872;
          if (D.26104 != 0) goto <D.26396>; else goto <D.26397>;
          <D.26396>:
          {
            struct MonoInst * inst;

            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26398 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26398;
            inst->prev = 0B;
            D.26399 = inst->prev;
            inst->next = D.26399;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26400 = inst->sreg3;
            inst->sreg2 = D.26400;
            D.26401 = inst->sreg2;
            inst->sreg1 = D.26401;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->dreg = -1;
            D.26112 = ins->sreg1;
            inst->sreg1 = D.26112;
            inst->data.op[1].const_val = 0;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26402>; else goto <D.26403>;
            <D.26402>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26404>;
            <D.26403>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26404>:
          }
          {
            struct MonoInst * inst;

            D.26085 = cfg->mempool;
            inst = mono_mempool_alloc (D.26085, 80);
            inst->data.op[1].const_val = 0;
            D.26405 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26405;
            inst->prev = 0B;
            D.26406 = inst->prev;
            inst->next = D.26406;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26407 = inst->sreg3;
            inst->sreg2 = D.26407;
            D.26408 = inst->sreg2;
            inst->sreg1 = D.26408;
            D.26111 = cfg->ip;
            inst->cil_code = D.26111;
            inst->data.op[1].p = "NullReferenceException";
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            if (D.26095 != 0B) goto <D.26409>; else goto <D.26410>;
            <D.26409>:
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            D.26095->next = inst;
            D.26094 = cfg->cbb;
            D.26095 = D.26094->last_ins;
            inst->prev = D.26095;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            goto <D.26411>;
            <D.26410>:
            D.26094 = cfg->cbb;
            D.26094 = cfg->cbb;
            D.26094->last_ins = inst;
            D.26095 = D.26094->last_ins;
            D.26094->code = D.26095;
            <D.26411>:
          }
          goto <D.26412>;
          <D.26397>:
          <D.26412>:
          <D.26395>:
          D.26085 = cfg->mempool;
          inst = mono_mempool_alloc (D.26085, 80);
          inst->data.op[1].const_val = 0;
          D.26413 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.26413;
          inst->prev = 0B;
          D.26414 = inst->prev;
          inst->next = D.26414;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.26415 = inst->sreg3;
          inst->sreg2 = D.26415;
          D.26416 = inst->sreg2;
          inst->sreg1 = D.26416;
          D.26111 = cfg->ip;
          inst->cil_code = D.26111;
          D.26128 = ins->dreg;
          inst->dreg = D.26128;
          D.26112 = ins->sreg1;
          inst->sreg1 = D.26112;
          inst->data.op[0].const_val = 16;
          inst->type = 1;
          D.26417 = (unsigned char) __ins_flags;
          inst->flags = D.26417;
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          if (D.26095 != 0B) goto <D.26418>; else goto <D.26419>;
          <D.26418>:
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          D.26095->next = inst;
          D.26094 = cfg->cbb;
          D.26095 = D.26094->last_ins;
          inst->prev = D.26095;
          D.26094 = cfg->cbb;
          D.26094->last_ins = inst;
          goto <D.26420>;
          <D.26419>:
          D.26094 = cfg->cbb;
          D.26094 = cfg->cbb;
          D.26094->last_ins = inst;
          D.26095 = D.26094->last_ins;
          D.26094->code = D.26095;
          <D.26420>:
        }
        goto <D.24431>;
        <D.24467>:
        goto <D.24431>;
        <D.24431>:
        D.26094 = cfg->cbb;
        D.26421 = D.26094 != first_bb;
        D.26422 = (long int) D.26421;
        D.26423 = __builtin_expect (D.26422, 0);
        if (D.26423 != 0) goto <D.26424>; else goto <D.26425>;
        <D.26424>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1526, "cfg->cbb == first_bb");
        <D.26425>:
        D.26094 = cfg->cbb;
        D.26429 = D.26094->code;
        if (D.26429 != 0B) goto <D.26426>; else goto <D.26430>;
        <D.26430>:
        D.26094 = cfg->cbb;
        if (D.26094 != first_bb) goto <D.26426>; else goto <D.26427>;
        <D.26426>:
        D.26094 = cfg->cbb;
        mono_replace_ins (cfg, bb, ins, &prev, first_bb, D.26094);
        first_bb->last_ins = 0B;
        D.26431 = first_bb->last_ins;
        first_bb->code = D.26431;
        first_bb->out_count = 0;
        D.26432 = first_bb->out_count;
        first_bb->in_count = D.26432;
        cfg->cbb = first_bb;
        goto <D.26428>;
        <D.26427>:
        prev = ins;
        <D.26428>:
        ins = ins->next;
        <D.24469>:
        if (ins != 0B) goto <D.24468>; else goto <D.24470>;
        <D.24470>:
        <D.24472>:
        if (restart != 0) goto <D.24471>; else goto <D.24473>;
        <D.24473>:
        D.26091 = cfg->verbose_level;
        if (D.26091 > 3) goto <D.26433>; else goto <D.26434>;
        <D.26433>:
        mono_print_bb (bb, "AFTER DECOMPOSE-ARRAY-ACCESS-OPTS ");
        <D.26434>:
      }
    finally
      {
        prev = {CLOBBER};
        iargs = {CLOBBER};
      }
  }
  <D.24426>:
  bb = bb->next_bb;
  <D.24475>:
  if (bb != 0B) goto <D.24474>; else goto <D.24476>;
  <D.24476>:
}


mono_get_domainvar (struct MonoCompile * cfg)
{
  struct MonoInst * D.26438;
  struct MonoClass * D.26441;
  struct MonoType * D.26442;
  struct MonoInst * D.26443;
  struct MonoInst * D.26444;

  D.26438 = cfg->domainvar;
  if (D.26438 == 0B) goto <D.26439>; else goto <D.26440>;
  <D.26439>:
  D.26441 = mono_defaults.int_class;
  D.26442 = &D.26441->byval_arg;
  D.26443 = mono_compile_create_var (cfg, D.26442, 329);
  cfg->domainvar = D.26443;
  <D.26440>:
  D.26444 = cfg->domainvar;
  return D.26444;
}


