mono_decompose_opcode (struct MonoCompile * cfg, struct MonoInst * ins)
{
  unsigned char D.24296;
  short unsigned int D.24297;
  int D.24298;
  struct MonoMemPool * D.24300;
  long int D.24301;
  struct MonoInst * D.24302;
  int D.24303;
  int D.24304;
  const unsigned char * D.24305;
  struct MonoBasicBlock * D.24306;
  struct MonoInst * D.24307;
  long int D.24312;
  struct MonoInst * D.24313;
  int D.24314;
  int D.24315;
  long int D.24320;
  struct MonoInst * D.24321;
  int D.24322;
  int D.24323;
  long int D.24328;
  struct MonoInst * D.24329;
  int D.24330;
  int D.24331;
  long int D.24335;
  struct MonoInst * D.24336;
  int D.24337;
  int D.24338;
  int D.24339;
  long int D.24343;
  struct MonoInst * D.24344;
  int D.24345;
  int D.24346;
  long int D.24350;
  struct MonoInst * D.24351;
  int D.24352;
  int D.24353;
  long int D.24357;
  struct MonoInst * D.24358;
  int D.24359;
  int D.24360;
  long int D.24364;
  struct MonoInst * D.24365;
  int D.24366;
  int D.24367;
  int D.24368;
  int D.24372;
  int D.24373;
  long int D.24374;
  struct MonoInst * D.24375;
  int D.24376;
  int D.24377;
  long int D.24381;
  struct MonoInst * D.24382;
  int D.24383;
  int D.24384;
  long int D.24388;
  struct MonoInst * D.24389;
  int D.24390;
  int D.24391;
  long int D.24395;
  struct MonoInst * D.24396;
  int D.24397;
  int D.24398;
  long int D.24402;
  struct MonoInst * D.24403;
  int D.24404;
  int D.24405;
  long int D.24409;
  struct MonoInst * D.24410;
  int D.24411;
  int D.24412;
  long int D.24416;
  struct MonoInst * D.24417;
  int D.24418;
  int D.24419;
  long int D.24423;
  struct MonoInst * D.24424;
  int D.24425;
  int D.24426;
  long int D.24430;
  struct MonoInst * D.24431;
  int D.24432;
  int D.24433;
  long int D.24437;
  struct MonoInst * D.24438;
  int D.24439;
  int D.24440;
  long int D.24444;
  struct MonoInst * D.24445;
  int D.24446;
  int D.24447;
  long int D.24451;
  struct MonoInst * D.24452;
  int D.24453;
  int D.24454;
  long int D.24458;
  struct MonoInst * D.24459;
  int D.24460;
  int D.24461;
  long int D.24465;
  struct MonoInst * D.24466;
  int D.24467;
  int D.24468;
  long int D.24472;
  struct MonoInst * D.24473;
  int D.24474;
  int D.24475;
  long int D.24479;
  struct MonoInst * D.24480;
  int D.24481;
  int D.24482;
  long int D.24486;
  struct MonoInst * D.24487;
  int D.24488;
  int D.24489;
  long int D.24493;
  struct MonoInst * D.24494;
  int D.24495;
  int D.24496;
  long int D.24500;
  struct MonoInst * D.24501;
  int D.24502;
  int D.24503;
  long int D.24507;
  struct MonoInst * D.24508;
  int D.24509;
  int D.24510;
  gchar * D.24514;
  int D.24517;
  struct MonoMethodSignature * D.24524;
  unsigned char D.24525;
  unsigned char D.24526;
  _Bool D.24527;
  long int D.24528;
  long int D.24529;
  short unsigned int D.24532;
  _Bool D.24533;
  long int D.24534;
  long int D.24535;
  unsigned int D.24538;
  unsigned int D.24539;
  int D.24542;
  signed char D.24543;
  int D.24544;
  _Bool D.24545;
  long int D.24546;
  long int D.24547;
  long unsigned int D.24550;
  long unsigned int D.24551;
  struct MonoInst * * D.24552;
  void * D.24553;
  struct MonoInst * D.24554;
  long int D.24555;
  struct MonoInst * D.24556;
  int D.24557;
  int D.24558;
  int D.24559;
  const void * D.24560;
  struct MonoInst * repl.0;
  unsigned char D.24566;
  struct MonoInst * D.24567;
  _Bool D.24568;
  long int D.24569;
  long int D.24570;
  _Bool D.24573;
  long int D.24574;
  long int D.24575;
  struct MonoInst * repl;
  int type;
  int dreg;
  gboolean emulate;

  try
    {
      repl = 0B;
      D.24296 = ins->type;
      type = (int) D.24296;
      dreg = ins->dreg;
      emulate = 0;
      D.24297 = ins->opcode;
      D.24298 = (int) D.24297;
      switch (D.24298) <default: <D.24116>, case 586: <D.24099>, case 590: <D.24100>, case 593: <D.24104>, case 596: <D.24103>, case 599: <D.24055>, case 600: <D.24058>, case 603: <D.24060>, case 604: <D.24062>, case 605: <D.24070>, case 606: <D.24085>, case 607: <D.24095>, case 609: <D.24075>, case 610: <D.24090>, case 611: <D.24102>, case 615: <D.24064>, case 616: <D.24074>, case 617: <D.24079>, case 618: <D.24089>, case 619: <D.24101>, case 620: <D.24094>, case 686: <D.24105>, case 700: <D.24106>, case 701: <D.24107>, case 702: <D.24108>, case 703: <D.24109>, case 704: <D.24110>, case 705: <D.24111>, case 706: <D.24112>, case 707: <D.24113>, case 708: <D.24114>, case 709: <D.24115>>
      <D.24055>:
      if (0 != 0) goto <D.24056>; else goto <D.24299>;
      <D.24299>:
      ins->opcode = 627;
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24301 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24301;
        inst->prev = 0B;
        D.24302 = inst->prev;
        inst->next = D.24302;
        inst->opcode = 479;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24303 = inst->sreg3;
        inst->sreg2 = D.24303;
        D.24304 = inst->sreg2;
        inst->sreg1 = D.24304;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24308>; else goto <D.24309>;
        <D.24308>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24310>;
        <D.24309>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24310>:
      }
      goto <D.24056>;
      <D.24058>:
      if (0 != 0) goto <D.24056>; else goto <D.24311>;
      <D.24311>:
      ins->opcode = 627;
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24312 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24312;
        inst->prev = 0B;
        D.24313 = inst->prev;
        inst->next = D.24313;
        inst->opcode = 481;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24314 = inst->sreg3;
        inst->sreg2 = D.24314;
        D.24315 = inst->sreg2;
        inst->sreg1 = D.24315;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24316>; else goto <D.24317>;
        <D.24316>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24318>;
        <D.24317>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24318>:
      }
      goto <D.24056>;
      <D.24060>:
      if (0 != 0) goto <D.24056>; else goto <D.24319>;
      <D.24319>:
      ins->opcode = 628;
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24320 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24320;
        inst->prev = 0B;
        D.24321 = inst->prev;
        inst->next = D.24321;
        inst->opcode = 479;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24322 = inst->sreg3;
        inst->sreg2 = D.24322;
        D.24323 = inst->sreg2;
        inst->sreg1 = D.24323;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24324>; else goto <D.24325>;
        <D.24324>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24326>;
        <D.24325>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24326>:
      }
      goto <D.24056>;
      <D.24062>:
      if (0 != 0) goto <D.24056>; else goto <D.24327>;
      <D.24327>:
      ins->opcode = 628;
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24328 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24328;
        inst->prev = 0B;
        D.24329 = inst->prev;
        inst->next = D.24329;
        inst->opcode = 481;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24330 = inst->sreg3;
        inst->sreg2 = D.24330;
        D.24331 = inst->sreg2;
        inst->sreg1 = D.24331;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24332>; else goto <D.24333>;
        <D.24332>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24334>;
        <D.24333>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24334>:
      }
      goto <D.24056>;
      <D.24064>:
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24335 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24335;
        inst->prev = 0B;
        D.24336 = inst->prev;
        inst->next = D.24336;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24337 = inst->sreg3;
        inst->sreg2 = D.24337;
        D.24338 = inst->sreg2;
        inst->sreg1 = D.24338;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        inst->data.op[1].const_val = 127;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24340>; else goto <D.24341>;
        <D.24340>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24342>;
        <D.24341>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24342>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24343 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24343;
        inst->prev = 0B;
        D.24344 = inst->prev;
        inst->next = D.24344;
        inst->opcode = 471;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24345 = inst->sreg3;
        inst->sreg2 = D.24345;
        D.24346 = inst->sreg2;
        inst->sreg1 = D.24346;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24347>; else goto <D.24348>;
        <D.24347>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24349>;
        <D.24348>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24349>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24350 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24350;
        inst->prev = 0B;
        D.24351 = inst->prev;
        inst->next = D.24351;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24352 = inst->sreg3;
        inst->sreg2 = D.24352;
        D.24353 = inst->sreg2;
        inst->sreg1 = D.24353;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        inst->data.op[1].const_val = -128;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24354>; else goto <D.24355>;
        <D.24354>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24356>;
        <D.24355>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24356>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24357 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24357;
        inst->prev = 0B;
        D.24358 = inst->prev;
        inst->next = D.24358;
        inst->opcode = 473;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24359 = inst->sreg3;
        inst->sreg2 = D.24359;
        D.24360 = inst->sreg2;
        inst->sreg1 = D.24360;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24361>; else goto <D.24362>;
        <D.24361>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24363>;
        <D.24362>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24363>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24364 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24364;
        inst->prev = 0B;
        D.24365 = inst->prev;
        inst->next = D.24365;
        inst->opcode = 584;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24366 = inst->sreg3;
        inst->sreg2 = D.24366;
        D.24367 = inst->sreg2;
        inst->sreg1 = D.24367;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24368 = ins->dreg;
        inst->dreg = D.24368;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24369>; else goto <D.24370>;
        <D.24369>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24371>;
        <D.24370>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24371>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24372 = ins->sreg3;
      ins->sreg2 = D.24372;
      D.24373 = ins->sreg2;
      ins->sreg1 = D.24373;
      goto <D.24056>;
      <D.24070>:
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24374 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24374;
        inst->prev = 0B;
        D.24375 = inst->prev;
        inst->next = D.24375;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24376 = inst->sreg3;
        inst->sreg2 = D.24376;
        D.24377 = inst->sreg2;
        inst->sreg1 = D.24377;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        inst->data.op[1].const_val = 127;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24378>; else goto <D.24379>;
        <D.24378>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24380>;
        <D.24379>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24380>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24381 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24381;
        inst->prev = 0B;
        D.24382 = inst->prev;
        inst->next = D.24382;
        inst->opcode = 476;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24383 = inst->sreg3;
        inst->sreg2 = D.24383;
        D.24384 = inst->sreg2;
        inst->sreg1 = D.24384;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24385>; else goto <D.24386>;
        <D.24385>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24387>;
        <D.24386>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24387>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24388 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24388;
        inst->prev = 0B;
        D.24389 = inst->prev;
        inst->next = D.24389;
        inst->opcode = 584;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24390 = inst->sreg3;
        inst->sreg2 = D.24390;
        D.24391 = inst->sreg2;
        inst->sreg1 = D.24391;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24368 = ins->dreg;
        inst->dreg = D.24368;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24392>; else goto <D.24393>;
        <D.24392>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24394>;
        <D.24393>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24394>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24372 = ins->sreg3;
      ins->sreg2 = D.24372;
      D.24373 = ins->sreg2;
      ins->sreg1 = D.24373;
      goto <D.24056>;
      <D.24074>:
      <D.24075>:
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24395 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24395;
        inst->prev = 0B;
        D.24396 = inst->prev;
        inst->next = D.24396;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24397 = inst->sreg3;
        inst->sreg2 = D.24397;
        D.24398 = inst->sreg2;
        inst->sreg1 = D.24398;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        inst->data.op[1].const_val = 255;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24399>; else goto <D.24400>;
        <D.24399>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24401>;
        <D.24400>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24401>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24402 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24402;
        inst->prev = 0B;
        D.24403 = inst->prev;
        inst->next = D.24403;
        inst->opcode = 476;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24404 = inst->sreg3;
        inst->sreg2 = D.24404;
        D.24405 = inst->sreg2;
        inst->sreg1 = D.24405;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24406>; else goto <D.24407>;
        <D.24406>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24408>;
        <D.24407>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24408>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24409 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24409;
        inst->prev = 0B;
        D.24410 = inst->prev;
        inst->next = D.24410;
        inst->opcode = 636;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24411 = inst->sreg3;
        inst->sreg2 = D.24411;
        D.24412 = inst->sreg2;
        inst->sreg1 = D.24412;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24368 = ins->dreg;
        inst->dreg = D.24368;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        inst->data.op[1].const_val = 255;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24413>; else goto <D.24414>;
        <D.24413>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24415>;
        <D.24414>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24415>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24372 = ins->sreg3;
      ins->sreg2 = D.24372;
      D.24373 = ins->sreg2;
      ins->sreg1 = D.24373;
      goto <D.24056>;
      <D.24079>:
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24416 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24416;
        inst->prev = 0B;
        D.24417 = inst->prev;
        inst->next = D.24417;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24418 = inst->sreg3;
        inst->sreg2 = D.24418;
        D.24419 = inst->sreg2;
        inst->sreg1 = D.24419;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        inst->data.op[1].const_val = 32767;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24420>; else goto <D.24421>;
        <D.24420>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24422>;
        <D.24421>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24422>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24423 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24423;
        inst->prev = 0B;
        D.24424 = inst->prev;
        inst->next = D.24424;
        inst->opcode = 471;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24425 = inst->sreg3;
        inst->sreg2 = D.24425;
        D.24426 = inst->sreg2;
        inst->sreg1 = D.24426;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24427>; else goto <D.24428>;
        <D.24427>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24429>;
        <D.24428>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24429>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24430 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24430;
        inst->prev = 0B;
        D.24431 = inst->prev;
        inst->next = D.24431;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24432 = inst->sreg3;
        inst->sreg2 = D.24432;
        D.24433 = inst->sreg2;
        inst->sreg1 = D.24433;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        inst->data.op[1].const_val = -32768;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24434>; else goto <D.24435>;
        <D.24434>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24436>;
        <D.24435>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24436>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24437 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24437;
        inst->prev = 0B;
        D.24438 = inst->prev;
        inst->next = D.24438;
        inst->opcode = 473;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24439 = inst->sreg3;
        inst->sreg2 = D.24439;
        D.24440 = inst->sreg2;
        inst->sreg1 = D.24440;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24441>; else goto <D.24442>;
        <D.24441>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24443>;
        <D.24442>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24443>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24444 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24444;
        inst->prev = 0B;
        D.24445 = inst->prev;
        inst->next = D.24445;
        inst->opcode = 585;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24446 = inst->sreg3;
        inst->sreg2 = D.24446;
        D.24447 = inst->sreg2;
        inst->sreg1 = D.24447;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24368 = ins->dreg;
        inst->dreg = D.24368;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24448>; else goto <D.24449>;
        <D.24448>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24450>;
        <D.24449>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24450>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24372 = ins->sreg3;
      ins->sreg2 = D.24372;
      D.24373 = ins->sreg2;
      ins->sreg1 = D.24373;
      goto <D.24056>;
      <D.24085>:
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24451 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24451;
        inst->prev = 0B;
        D.24452 = inst->prev;
        inst->next = D.24452;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24453 = inst->sreg3;
        inst->sreg2 = D.24453;
        D.24454 = inst->sreg2;
        inst->sreg1 = D.24454;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        inst->data.op[1].const_val = 32767;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24455>; else goto <D.24456>;
        <D.24455>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24457>;
        <D.24456>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24457>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24458 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24458;
        inst->prev = 0B;
        D.24459 = inst->prev;
        inst->next = D.24459;
        inst->opcode = 476;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24460 = inst->sreg3;
        inst->sreg2 = D.24460;
        D.24461 = inst->sreg2;
        inst->sreg1 = D.24461;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24462>; else goto <D.24463>;
        <D.24462>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24464>;
        <D.24463>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24464>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24465 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24465;
        inst->prev = 0B;
        D.24466 = inst->prev;
        inst->next = D.24466;
        inst->opcode = 585;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24467 = inst->sreg3;
        inst->sreg2 = D.24467;
        D.24468 = inst->sreg2;
        inst->sreg1 = D.24468;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24368 = ins->dreg;
        inst->dreg = D.24368;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24469>; else goto <D.24470>;
        <D.24469>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24471>;
        <D.24470>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24471>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24372 = ins->sreg3;
      ins->sreg2 = D.24372;
      D.24373 = ins->sreg2;
      ins->sreg1 = D.24373;
      goto <D.24056>;
      <D.24089>:
      <D.24090>:
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24472 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24472;
        inst->prev = 0B;
        D.24473 = inst->prev;
        inst->next = D.24473;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24474 = inst->sreg3;
        inst->sreg2 = D.24474;
        D.24475 = inst->sreg2;
        inst->sreg1 = D.24475;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        inst->data.op[1].const_val = 65535;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24476>; else goto <D.24477>;
        <D.24476>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24478>;
        <D.24477>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24478>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24479 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24479;
        inst->prev = 0B;
        D.24480 = inst->prev;
        inst->next = D.24480;
        inst->opcode = 476;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24481 = inst->sreg3;
        inst->sreg2 = D.24481;
        D.24482 = inst->sreg2;
        inst->sreg1 = D.24482;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24483>; else goto <D.24484>;
        <D.24483>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24485>;
        <D.24484>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24485>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24486 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24486;
        inst->prev = 0B;
        D.24487 = inst->prev;
        inst->next = D.24487;
        inst->opcode = 636;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24488 = inst->sreg3;
        inst->sreg2 = D.24488;
        D.24489 = inst->sreg2;
        inst->sreg1 = D.24489;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24368 = ins->dreg;
        inst->dreg = D.24368;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        inst->data.op[1].const_val = 65535;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24490>; else goto <D.24491>;
        <D.24490>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24492>;
        <D.24491>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24492>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24372 = ins->sreg3;
      ins->sreg2 = D.24372;
      D.24373 = ins->sreg2;
      ins->sreg1 = D.24373;
      goto <D.24056>;
      <D.24094>:
      <D.24095>:
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24493 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24493;
        inst->prev = 0B;
        D.24494 = inst->prev;
        inst->next = D.24494;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24495 = inst->sreg3;
        inst->sreg2 = D.24495;
        D.24496 = inst->sreg2;
        inst->sreg1 = D.24496;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        inst->data.op[1].const_val = 0;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24497>; else goto <D.24498>;
        <D.24497>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24499>;
        <D.24498>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24499>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 80);
        inst->data.op[1].const_val = 0;
        D.24500 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24500;
        inst->prev = 0B;
        D.24501 = inst->prev;
        inst->next = D.24501;
        inst->opcode = 473;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24502 = inst->sreg3;
        inst->sreg2 = D.24502;
        D.24503 = inst->sreg2;
        inst->sreg1 = D.24503;
        D.24305 = cfg->ip;
        inst->cil_code = D.24305;
        inst->data.op[1].p = "OverflowException";
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24504>; else goto <D.24505>;
        <D.24504>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24506>;
        <D.24505>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24506>:
      }
      {
        struct MonoInst * inst;

        D.24300 = cfg->mempool;
        inst = mono_mempool_alloc (D.24300, 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 = 428;
        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.24305 = cfg->ip;
        inst->cil_code = D.24305;
        D.24368 = ins->dreg;
        inst->dreg = D.24368;
        D.24339 = ins->sreg1;
        inst->sreg1 = D.24339;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        if (D.24307 != 0B) goto <D.24511>; else goto <D.24512>;
        <D.24511>:
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        D.24307->next = inst;
        D.24306 = cfg->cbb;
        D.24307 = D.24306->last_ins;
        inst->prev = D.24307;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        goto <D.24513>;
        <D.24512>:
        D.24306 = cfg->cbb;
        D.24306 = cfg->cbb;
        D.24306->last_ins = inst;
        D.24307 = D.24306->last_ins;
        D.24306->code = D.24307;
        <D.24513>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24372 = ins->sreg3;
      ins->sreg2 = D.24372;
      D.24373 = ins->sreg2;
      ins->sreg1 = D.24373;
      goto <D.24056>;
      <D.24099>:
      <D.24100>:
      <D.24101>:
      <D.24102>:
      ins->opcode = 428;
      goto <D.24056>;
      <D.24103>:
      ins->opcode = 766;
      goto <D.24056>;
      <D.24104>:
      ins->opcode = 769;
      goto <D.24056>;
      <D.24105>:
      ins->opcode = 430;
      goto <D.24056>;
      <D.24106>:
      <D.24107>:
      <D.24108>:
      <D.24109>:
      <D.24110>:
      <D.24111>:
      <D.24112>:
      <D.24113>:
      <D.24114>:
      <D.24115>:
      cfg->exception_type = 3;
      D.24514 = monoeg_g_strdup_printf ("float conv.ovf.un opcodes not supported.");
      cfg->exception_message = D.24514;
      goto <D.24056>;
      <D.24116>:
      emulate = 1;
      goto <D.24056>;
      <D.24056>:
      if (emulate != 0) goto <D.24515>; else goto <D.24516>;
      <D.24515>:
      {
        struct MonoJitICallInfo * info;

        info = 0B;
        D.24517 = decompose_long_opcode (cfg, ins, &repl);
        if (D.24517 != 0) goto <D.24518>; else goto <D.24519>;
        <D.24518>:
        emulate = 0;
        <D.24519>:
        if (emulate != 0) goto <D.24520>; else goto <D.24521>;
        <D.24520>:
        D.24297 = ins->opcode;
        D.24298 = (int) D.24297;
        info = mono_find_jit_opcode_emulation (D.24298);
        <D.24521>:
        if (info != 0B) goto <D.24522>; else goto <D.24523>;
        <D.24522>:
        {
          struct MonoInst * * args;
          struct MonoInst * call;

          D.24524 = info->sig;
          D.24525 = BIT_FIELD_REF <*D.24524, 8, 112>;
          D.24526 = D.24525 & 64;
          D.24527 = D.24526 != 0;
          D.24528 = (long int) D.24527;
          D.24529 = __builtin_expect (D.24528, 0);
          if (D.24529 != 0) goto <D.24530>; else goto <D.24531>;
          <D.24530>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 468, "!info->sig->hasthis");
          <D.24531>:
          D.24524 = info->sig;
          D.24532 = D.24524->param_count;
          D.24533 = D.24532 > 3;
          D.24534 = (long int) D.24533;
          D.24535 = __builtin_expect (D.24534, 0);
          if (D.24535 != 0) goto <D.24536>; else goto <D.24537>;
          <D.24536>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 469, "info->sig->param_count <= MONO_MAX_SRC_REGS");
          <D.24537>:
          D.24524 = info->sig;
          D.24532 = D.24524->param_count;
          D.24538 = (unsigned int) D.24532;
          D.24539 = D.24538 * 8;
          D.24300 = cfg->mempool;
          args = mono_mempool_alloc0 (D.24300, D.24539);
          D.24524 = info->sig;
          D.24532 = D.24524->param_count;
          if (D.24532 != 0) goto <D.24540>; else goto <D.24541>;
          <D.24540>:
          {
            int sregs[3];
            int num_sregs;
            int i;

            try
              {
                D.24339 = ins->sreg1;
                sregs[0] = D.24339;
                D.24373 = ins->sreg2;
                sregs[1] = D.24373;
                D.24372 = ins->sreg3;
                sregs[2] = D.24372;
                D.24297 = ins->opcode;
                D.24298 = (int) D.24297;
                D.24542 = D.24298 + -313;
                D.24543 = ins_sreg_counts[D.24542];
                num_sregs = (int) D.24543;
                D.24524 = info->sig;
                D.24532 = D.24524->param_count;
                D.24544 = (int) D.24532;
                D.24545 = D.24544 != num_sregs;
                D.24546 = (long int) D.24545;
                D.24547 = __builtin_expect (D.24546, 0);
                if (D.24547 != 0) goto <D.24548>; else goto <D.24549>;
                <D.24548>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 476, "num_sregs == info->sig->param_count");
                <D.24549>:
                i = 0;
                goto <D.24124>;
                <D.24123>:
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24300 = cfg->mempool;
                D.24553 = mono_mempool_alloc (D.24300, 80);
                *D.24552 = D.24553;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24554->data.op[1].const_val = 0;
                D.24555 = D.24554->data.op[1].const_val;
                D.24554->data.op[0].const_val = D.24555;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24554->prev = 0B;
                D.24556 = D.24554->prev;
                D.24554->next = D.24556;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24554->opcode = 330;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24554->flags = 0;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24554->type = 0;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24554->dreg = -1;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24554->sreg3 = -1;
                D.24557 = D.24554->sreg3;
                D.24554->sreg2 = D.24557;
                D.24558 = D.24554->sreg2;
                D.24554->sreg1 = D.24558;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24305 = cfg->ip;
                D.24554->cil_code = D.24305;
                D.24550 = (long unsigned int) i;
                D.24551 = D.24550 * 8;
                D.24552 = args + D.24551;
                D.24554 = *D.24552;
                D.24559 = sregs[i];
                D.24554->dreg = D.24559;
                i = i + 1;
                <D.24124>:
                if (i < num_sregs) goto <D.24123>; else goto <D.24125>;
                <D.24125>:
              }
            finally
              {
                sregs = {CLOBBER};
              }
          }
          <D.24541>:
          D.24524 = info->sig;
          D.24560 = mono_icall_get_wrapper (info);
          call = mono_emit_native_call (cfg, D.24560, D.24524, args);
          D.24368 = ins->dreg;
          call->dreg = D.24368;
          ins->opcode = 316;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.24372 = ins->sreg3;
          ins->sreg2 = D.24372;
          D.24373 = ins->sreg2;
          ins->sreg1 = D.24373;
        }
        <D.24523>:
      }
      <D.24516>:
      D.24297 = ins->opcode;
      if (D.24297 == 316) goto <D.24561>; else goto <D.24562>;
      <D.24561>:
      repl.0 = repl;
      if (repl.0 != 0B) goto <D.24564>; else goto <D.24565>;
      <D.24564>:
      repl.0 = repl;
      D.24566 = (unsigned char) type;
      repl.0->type = D.24566;
      D.24567 = repl;
      return D.24567;
      <D.24565>:
      D.24306 = cfg->cbb;
      ins = D.24306->last_ins;
      D.24568 = ins == 0B;
      D.24569 = (long int) D.24568;
      D.24570 = __builtin_expect (D.24569, 0);
      if (D.24570 != 0) goto <D.24571>; else goto <D.24572>;
      <D.24571>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 497, "ins");
      <D.24572>:
      D.24566 = (unsigned char) type;
      ins->type = D.24566;
      D.24368 = ins->dreg;
      D.24573 = D.24368 != dreg;
      D.24574 = (long int) D.24573;
      D.24575 = __builtin_expect (D.24574, 0);
      if (D.24575 != 0) goto <D.24576>; else goto <D.24577>;
      <D.24576>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 499, "ins->dreg == dreg");
      <D.24577>:
      D.24567 = ins;
      return D.24567;
      <D.24562>:
      D.24567 = ins;
      return D.24567;
    }
  finally
    {
      repl = {CLOBBER};
    }
}


decompose_long_opcode (struct MonoCompile * cfg, struct MonoInst * ins, struct MonoInst * * repl_ins)
{
  short unsigned int D.24584;
  int D.24585;
  struct MonoMemPool * D.24586;
  long int D.24587;
  struct MonoInst * D.24588;
  int D.24589;
  int D.24590;
  const unsigned char * D.24591;
  int D.24592;
  int D.24593;
  struct MonoBasicBlock * D.24594;
  struct MonoInst * D.24595;
  int D.24599;
  int D.24600;
  long int D.24602;
  struct MonoInst * D.24603;
  short unsigned int D.24604;
  int D.24605;
  int D.24606;
  long int D.24610;
  struct MonoInst * D.24611;
  int D.24612;
  int D.24613;
  short unsigned int D.24618;
  long int D.24622;
  struct MonoInst * D.24623;
  int D.24624;
  int D.24625;
  short unsigned int D.24630;
  long int D.24634;
  struct MonoInst * D.24635;
  int D.24636;
  int D.24637;
  short unsigned int D.24642;
  long int D.24646;
  struct MonoInst * D.24647;
  int D.24648;
  int D.24649;
  long int D.24653;
  struct MonoInst * D.24654;
  int D.24655;
  int D.24656;
  long int _l.1;
  long int D.24660;
  long unsigned int D.24661;
  long int D.24662;
  long int D.24667;
  struct MonoInst * D.24668;
  int D.24669;
  int D.24670;
  long int D.24674;
  struct MonoInst * D.24675;
  int D.24676;
  int D.24677;
  long int D.24681;
  struct MonoInst * D.24682;
  int D.24683;
  int D.24684;
  long int D.24688;
  struct MonoInst * D.24689;
  int D.24690;
  int D.24691;
  long int _l.2;
  long int D.24695;
  long unsigned int D.24696;
  long int D.24697;
  long int D.24702;
  struct MonoInst * D.24703;
  int D.24704;
  int D.24705;
  long int D.24709;
  struct MonoInst * D.24710;
  int D.24711;
  int D.24712;
  long int _l.3;
  long int D.24716;
  long unsigned int D.24717;
  long int D.24718;
  long int D.24723;
  struct MonoInst * D.24724;
  int D.24725;
  int D.24726;
  long int D.24730;
  struct MonoInst * D.24731;
  int D.24732;
  int D.24733;
  long int D.24737;
  struct MonoInst * D.24738;
  int D.24739;
  int D.24740;
  long int _l.4;
  long int D.24744;
  long unsigned int D.24745;
  long int D.24746;
  long int D.24751;
  struct MonoInst * D.24752;
  int D.24753;
  int D.24754;
  long int D.24758;
  struct MonoInst * D.24759;
  int D.24760;
  int D.24761;
  long int D.24765;
  struct MonoInst * D.24766;
  int D.24767;
  int D.24768;
  long int _l.5;
  long int D.24772;
  long unsigned int D.24773;
  long int D.24774;
  long int D.24779;
  struct MonoInst * D.24780;
  int D.24781;
  int D.24782;
  long int D.24786;
  struct MonoInst * D.24787;
  int D.24788;
  int D.24789;
  long int D.24793;
  struct MonoInst * D.24794;
  int D.24795;
  int D.24796;
  long int _l.6;
  long int D.24800;
  long unsigned int D.24801;
  long int D.24802;
  long int D.24807;
  struct MonoInst * D.24808;
  int D.24809;
  int D.24810;
  long int D.24814;
  struct MonoInst * D.24815;
  int D.24816;
  int D.24817;
  long int D.24821;
  struct MonoInst * D.24822;
  int D.24823;
  int D.24824;
  long int _l.7;
  long int D.24828;
  long unsigned int D.24829;
  long int D.24830;
  long int D.24835;
  struct MonoInst * D.24836;
  int D.24837;
  int D.24838;
  long int D.24842;
  struct MonoInst * D.24843;
  int D.24844;
  int D.24845;
  long int _l.8;
  long int D.24849;
  long unsigned int D.24850;
  long int D.24851;
  long int D.24856;
  struct MonoInst * D.24857;
  int D.24858;
  int D.24859;
  long int D.24863;
  struct MonoInst * D.24864;
  int D.24865;
  int D.24866;
  long int D.24870;
  struct MonoInst * D.24871;
  int D.24872;
  int D.24873;
  long int _l.9;
  long int D.24877;
  long unsigned int D.24878;
  long int D.24879;
  long int D.24884;
  struct MonoInst * D.24885;
  int D.24886;
  int D.24887;
  long int D.24891;
  struct MonoInst * D.24892;
  int D.24893;
  int D.24894;
  long int D.24898;
  struct MonoInst * D.24899;
  int D.24900;
  int D.24901;
  long int _l.10;
  long int D.24905;
  long unsigned int D.24906;
  long int D.24907;
  long int D.24912;
  struct MonoInst * D.24913;
  int D.24914;
  int D.24915;
  long int D.24919;
  struct MonoInst * D.24920;
  int D.24921;
  int D.24922;
  long int D.24926;
  struct MonoInst * D.24927;
  int D.24928;
  int D.24929;
  long int _l.11;
  long int D.24933;
  long unsigned int D.24934;
  long int D.24935;
  long int D.24940;
  struct MonoInst * D.24941;
  int D.24942;
  int D.24943;
  long int D.24947;
  struct MonoInst * D.24948;
  int D.24949;
  int D.24950;
  long int D.24954;
  struct MonoInst * D.24955;
  int D.24956;
  int D.24957;
  long int _l.12;
  long int D.24961;
  long unsigned int D.24962;
  long int D.24963;
  long int D.24968;
  struct MonoInst * D.24969;
  int D.24970;
  int D.24971;
  long int D.24975;
  struct MonoInst * D.24976;
  int D.24977;
  int D.24978;
  long int _l.13;
  long int D.24982;
  long unsigned int D.24983;
  long int D.24984;
  long int D.24989;
  struct MonoInst * D.24990;
  int D.24991;
  int D.24992;
  long int D.24996;
  struct MonoInst * D.24997;
  int D.24998;
  int D.24999;
  long int D.25003;
  struct MonoInst * D.25004;
  int D.25005;
  int D.25006;
  long int _l.14;
  long int D.25010;
  long unsigned int D.25011;
  long int D.25012;
  long int D.25017;
  struct MonoInst * D.25018;
  int D.25019;
  int D.25020;
  long int D.25024;
  struct MonoInst * D.25025;
  int D.25026;
  int D.25027;
  long int D.25031;
  struct MonoInst * D.25032;
  int D.25033;
  int D.25034;
  long int _l.15;
  long int D.25038;
  long unsigned int D.25039;
  long int D.25040;
  long int D.25045;
  struct MonoInst * D.25046;
  int D.25047;
  int D.25048;
  long int D.25052;
  struct MonoInst * D.25053;
  int D.25054;
  int D.25055;
  long int _l.16;
  long int D.25059;
  long unsigned int D.25060;
  long int D.25061;
  long int D.25066;
  struct MonoInst * D.25067;
  int D.25068;
  int D.25069;
  long int D.25073;
  struct MonoInst * D.25074;
  int D.25075;
  int D.25076;
  long int D.25080;
  struct MonoInst * D.25081;
  int D.25082;
  int D.25083;
  long int _l.17;
  long int D.25087;
  long unsigned int D.25088;
  long int D.25089;
  long int D.25094;
  struct MonoInst * D.25095;
  int D.25096;
  int D.25097;
  long int D.25101;
  struct MonoInst * D.25102;
  int D.25103;
  int D.25104;
  long int D.25108;
  struct MonoInst * D.25109;
  int D.25110;
  int D.25111;
  long int _l.18;
  long int D.25115;
  long unsigned int D.25116;
  long int D.25117;
  long int D.25122;
  struct MonoInst * D.25123;
  int D.25124;
  int D.25125;
  long int D.25129;
  struct MonoInst * D.25130;
  int D.25131;
  int D.25132;
  long int D.25136;
  struct MonoInst * D.25137;
  int D.25138;
  int D.25139;
  long int _l.19;
  long int D.25143;
  long unsigned int D.25144;
  long int D.25145;
  long int D.25150;
  struct MonoInst * D.25151;
  int D.25152;
  int D.25153;
  long int D.25157;
  struct MonoInst * D.25158;
  int D.25159;
  int D.25160;
  gboolean D.25164;
  struct MonoInst * repl;

  repl = 0B;
  *repl_ins = 0B;
  D.24584 = ins->opcode;
  D.24585 = (int) D.24584;
  switch (D.24585) <default: <D.24046>, case 500: <D.23923>, case 501: <D.23925>, case 504: <D.23931>, case 505: <D.23927>, case 508: <D.23926>, case 509: <D.24030>, case 510: <D.24041>, case 511: <D.23933>, case 512: <D.23936>, case 515: <D.23939>, case 516: <D.23942>, case 517: <D.23966>, case 518: <D.23989>, case 519: <D.24012>, case 520: <D.24035>, case 521: <D.23976>, case 522: <D.23999>, case 523: <D.24025>, case 524: <D.24032>, case 525: <D.24034>, case 526: <D.24031>, case 527: <D.23958>, case 528: <D.23971>, case 529: <D.23981>, case 530: <D.23994>, case 531: <D.24004>, case 532: <D.24017>, case 533: <D.24033>, case 534: <D.24040>, case 541: <D.23928>, case 587: <D.23929>, case 591: <D.23930>, case 597: <D.23946>, case 598: <D.23948>, case 608: <D.23953>, case 612: <D.23954>, case 613: <D.23955>, case 614: <D.23956>, case 621: <D.23945>, case 622: <D.23947>>
  <D.23923>:
  ins->opcode = 766;
  goto <D.23924>;
  <D.23925>:
  <D.23926>:
  <D.23927>:
  <D.23928>:
  ins->opcode = 428;
  goto <D.23924>;
  <D.23929>:
  ins->opcode = 766;
  goto <D.23924>;
  <D.23930>:
  ins->opcode = 769;
  goto <D.23924>;
  <D.23931>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24587 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24587;
    inst->prev = 0B;
    D.24588 = inst->prev;
    inst->next = D.24588;
    inst->opcode = 641;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24589 = inst->sreg3;
    inst->sreg2 = D.24589;
    D.24590 = inst->sreg2;
    inst->sreg1 = D.24590;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    inst->data.op[1].const_val = 0;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24596>; else goto <D.24597>;
    <D.24596>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24598>;
    <D.24597>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24598>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23933>:
  if (0 != 0) goto <D.23924>; else goto <D.24601>;
  <D.24601>:
  {
    int opcode;

    opcode = 759;
    D.24586 = cfg->mempool;
    repl = mono_mempool_alloc (D.24586, 80);
    repl->data.op[1].const_val = 0;
    D.24602 = repl->data.op[1].const_val;
    repl->data.op[0].const_val = D.24602;
    repl->prev = 0B;
    D.24603 = repl->prev;
    repl->next = D.24603;
    D.24604 = (short unsigned int) opcode;
    repl->opcode = D.24604;
    repl->flags = 0;
    repl->type = 0;
    repl->dreg = -1;
    repl->sreg3 = -1;
    D.24605 = repl->sreg3;
    repl->sreg2 = D.24605;
    D.24606 = repl->sreg2;
    repl->sreg1 = D.24606;
    D.24591 = cfg->ip;
    repl->cil_code = D.24591;
    D.24592 = ins->dreg;
    repl->dreg = D.24592;
    D.24593 = ins->sreg1;
    repl->sreg1 = D.24593;
    D.24600 = ins->sreg2;
    repl->sreg2 = D.24600;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24607>; else goto <D.24608>;
    <D.24607>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = repl;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    repl->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = repl;
    goto <D.24609>;
    <D.24608>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = repl;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24609>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 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 = 465;
    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.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24614>; else goto <D.24615>;
    <D.24614>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24616>;
    <D.24615>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24616>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23936>:
  if (0 != 0) goto <D.23924>; else goto <D.24617>;
  <D.24617>:
  {
    int opcode;

    opcode = 759;
    D.24586 = cfg->mempool;
    repl = mono_mempool_alloc (D.24586, 80);
    repl->data.op[1].const_val = 0;
    D.24602 = repl->data.op[1].const_val;
    repl->data.op[0].const_val = D.24602;
    repl->prev = 0B;
    D.24603 = repl->prev;
    repl->next = D.24603;
    D.24618 = (short unsigned int) opcode;
    repl->opcode = D.24618;
    repl->flags = 0;
    repl->type = 0;
    repl->dreg = -1;
    repl->sreg3 = -1;
    D.24605 = repl->sreg3;
    repl->sreg2 = D.24605;
    D.24606 = repl->sreg2;
    repl->sreg1 = D.24606;
    D.24591 = cfg->ip;
    repl->cil_code = D.24591;
    D.24592 = ins->dreg;
    repl->dreg = D.24592;
    D.24593 = ins->sreg1;
    repl->sreg1 = D.24593;
    D.24600 = ins->sreg2;
    repl->sreg2 = D.24600;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24619>; else goto <D.24620>;
    <D.24619>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = repl;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    repl->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = repl;
    goto <D.24621>;
    <D.24620>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = repl;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24621>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24622 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24622;
    inst->prev = 0B;
    D.24623 = inst->prev;
    inst->next = D.24623;
    inst->opcode = 467;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24624 = inst->sreg3;
    inst->sreg2 = D.24624;
    D.24625 = inst->sreg2;
    inst->sreg1 = D.24625;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24626>; else goto <D.24627>;
    <D.24626>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24628>;
    <D.24627>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24628>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23939>:
  if (0 != 0) goto <D.23924>; else goto <D.24629>;
  <D.24629>:
  {
    int opcode;

    opcode = 761;
    D.24586 = cfg->mempool;
    repl = mono_mempool_alloc (D.24586, 80);
    repl->data.op[1].const_val = 0;
    D.24602 = repl->data.op[1].const_val;
    repl->data.op[0].const_val = D.24602;
    repl->prev = 0B;
    D.24603 = repl->prev;
    repl->next = D.24603;
    D.24630 = (short unsigned int) opcode;
    repl->opcode = D.24630;
    repl->flags = 0;
    repl->type = 0;
    repl->dreg = -1;
    repl->sreg3 = -1;
    D.24605 = repl->sreg3;
    repl->sreg2 = D.24605;
    D.24606 = repl->sreg2;
    repl->sreg1 = D.24606;
    D.24591 = cfg->ip;
    repl->cil_code = D.24591;
    D.24592 = ins->dreg;
    repl->dreg = D.24592;
    D.24593 = ins->sreg1;
    repl->sreg1 = D.24593;
    D.24600 = ins->sreg2;
    repl->sreg2 = D.24600;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24631>; else goto <D.24632>;
    <D.24631>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = repl;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    repl->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = repl;
    goto <D.24633>;
    <D.24632>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = repl;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24633>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24634 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24634;
    inst->prev = 0B;
    D.24635 = inst->prev;
    inst->next = D.24635;
    inst->opcode = 465;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24636 = inst->sreg3;
    inst->sreg2 = D.24636;
    D.24637 = inst->sreg2;
    inst->sreg1 = D.24637;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24638>; else goto <D.24639>;
    <D.24638>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24640>;
    <D.24639>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24640>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23942>:
  if (0 != 0) goto <D.23924>; else goto <D.24641>;
  <D.24641>:
  {
    int opcode;

    opcode = 761;
    D.24586 = cfg->mempool;
    repl = mono_mempool_alloc (D.24586, 80);
    repl->data.op[1].const_val = 0;
    D.24602 = repl->data.op[1].const_val;
    repl->data.op[0].const_val = D.24602;
    repl->prev = 0B;
    D.24603 = repl->prev;
    repl->next = D.24603;
    D.24642 = (short unsigned int) opcode;
    repl->opcode = D.24642;
    repl->flags = 0;
    repl->type = 0;
    repl->dreg = -1;
    repl->sreg3 = -1;
    D.24605 = repl->sreg3;
    repl->sreg2 = D.24605;
    D.24606 = repl->sreg2;
    repl->sreg1 = D.24606;
    D.24591 = cfg->ip;
    repl->cil_code = D.24591;
    D.24592 = ins->dreg;
    repl->dreg = D.24592;
    D.24593 = ins->sreg1;
    repl->sreg1 = D.24593;
    D.24600 = ins->sreg2;
    repl->sreg2 = D.24600;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24643>; else goto <D.24644>;
    <D.24643>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = repl;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    repl->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = repl;
    goto <D.24645>;
    <D.24644>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = repl;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24645>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24646 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24646;
    inst->prev = 0B;
    D.24647 = inst->prev;
    inst->next = D.24647;
    inst->opcode = 467;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24648 = inst->sreg3;
    inst->sreg2 = D.24648;
    D.24649 = inst->sreg2;
    inst->sreg1 = D.24649;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24650>; else goto <D.24651>;
    <D.24650>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24652>;
    <D.24651>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24652>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23945>:
  <D.23946>:
  ins->opcode = 766;
  goto <D.23924>;
  <D.23947>:
  <D.23948>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24653 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24653;
    inst->prev = 0B;
    D.24654 = inst->prev;
    inst->next = D.24654;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24655 = inst->sreg3;
    inst->sreg2 = D.24655;
    D.24656 = inst->sreg2;
    inst->sreg1 = D.24656;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.24657>; else goto <D.24658>;
    <D.24657>:
    {
      guint64 _l;

      _l = 0;
      _l.1 = (long int) _l;
      D.24660 = _l.1 & 4294967295;
      inst->data.op[1].const_val = D.24660;
      D.24661 = _l >> 32;
      D.24662 = (long int) D.24661;
      inst->data.op[0].const_val = D.24662;
    }
    goto <D.24663>;
    <D.24658>:
    inst->data.op[1].const_val = 0;
    <D.24663>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24664>; else goto <D.24665>;
    <D.24664>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24666>;
    <D.24665>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24666>:
  }
  {
    struct MonoInst * inst;

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

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24674 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24674;
    inst->prev = 0B;
    D.24675 = inst->prev;
    inst->next = D.24675;
    inst->opcode = 769;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24676 = inst->sreg3;
    inst->sreg2 = D.24676;
    D.24677 = inst->sreg2;
    inst->sreg1 = D.24677;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24678>; else goto <D.24679>;
    <D.24678>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24680>;
    <D.24679>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24680>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23953>:
  <D.23954>:
  <D.23955>:
  <D.23956>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24681 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24681;
    inst->prev = 0B;
    D.24682 = inst->prev;
    inst->next = D.24682;
    inst->opcode = 641;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24683 = inst->sreg3;
    inst->sreg2 = D.24683;
    D.24684 = inst->sreg2;
    inst->sreg1 = D.24684;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    inst->data.op[1].const_val = 0;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24685>; else goto <D.24686>;
    <D.24685>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24687>;
    <D.24686>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24687>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23958>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24688 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24688;
    inst->prev = 0B;
    D.24689 = inst->prev;
    inst->next = D.24689;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24690 = inst->sreg3;
    inst->sreg2 = D.24690;
    D.24691 = inst->sreg2;
    inst->sreg1 = D.24691;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.24692>; else goto <D.24693>;
    <D.24692>:
    {
      guint64 _l;

      _l = 127;
      _l.2 = (long int) _l;
      D.24695 = _l.2 & 4294967295;
      inst->data.op[1].const_val = D.24695;
      D.24696 = _l >> 32;
      D.24697 = (long int) D.24696;
      inst->data.op[0].const_val = D.24697;
    }
    goto <D.24698>;
    <D.24693>:
    inst->data.op[1].const_val = 127;
    <D.24698>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24699>; else goto <D.24700>;
    <D.24699>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24701>;
    <D.24700>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24701>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24702 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24702;
    inst->prev = 0B;
    D.24703 = inst->prev;
    inst->next = D.24703;
    inst->opcode = 457;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24704 = inst->sreg3;
    inst->sreg2 = D.24704;
    D.24705 = inst->sreg2;
    inst->sreg1 = D.24705;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24706>; else goto <D.24707>;
    <D.24706>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24708>;
    <D.24707>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24708>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24709 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24709;
    inst->prev = 0B;
    D.24710 = inst->prev;
    inst->next = D.24710;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24711 = inst->sreg3;
    inst->sreg2 = D.24711;
    D.24712 = inst->sreg2;
    inst->sreg1 = D.24712;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.24713>; else goto <D.24714>;
    <D.24713>:
    {
      guint64 _l;

      _l = 18446744073709551488;
      _l.3 = (long int) _l;
      D.24716 = _l.3 & 4294967295;
      inst->data.op[1].const_val = D.24716;
      D.24717 = _l >> 32;
      D.24718 = (long int) D.24717;
      inst->data.op[0].const_val = D.24718;
    }
    goto <D.24719>;
    <D.24714>:
    inst->data.op[1].const_val = -128;
    <D.24719>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24720>; else goto <D.24721>;
    <D.24720>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24722>;
    <D.24721>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24722>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24723 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24723;
    inst->prev = 0B;
    D.24724 = inst->prev;
    inst->next = D.24724;
    inst->opcode = 459;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24725 = inst->sreg3;
    inst->sreg2 = D.24725;
    D.24726 = inst->sreg2;
    inst->sreg1 = D.24726;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24727>; else goto <D.24728>;
    <D.24727>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24729>;
    <D.24728>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24729>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24730 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24730;
    inst->prev = 0B;
    D.24731 = inst->prev;
    inst->next = D.24731;
    inst->opcode = 498;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24732 = inst->sreg3;
    inst->sreg2 = D.24732;
    D.24733 = inst->sreg2;
    inst->sreg1 = D.24733;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24734>; else goto <D.24735>;
    <D.24734>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24736>;
    <D.24735>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24736>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23966>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24737 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24737;
    inst->prev = 0B;
    D.24738 = inst->prev;
    inst->next = D.24738;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24739 = inst->sreg3;
    inst->sreg2 = D.24739;
    D.24740 = inst->sreg2;
    inst->sreg1 = D.24740;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.24741>; else goto <D.24742>;
    <D.24741>:
    {
      guint64 _l;

      _l = 127;
      _l.4 = (long int) _l;
      D.24744 = _l.4 & 4294967295;
      inst->data.op[1].const_val = D.24744;
      D.24745 = _l >> 32;
      D.24746 = (long int) D.24745;
      inst->data.op[0].const_val = D.24746;
    }
    goto <D.24747>;
    <D.24742>:
    inst->data.op[1].const_val = 127;
    <D.24747>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24748>; else goto <D.24749>;
    <D.24748>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24750>;
    <D.24749>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24750>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24751 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24751;
    inst->prev = 0B;
    D.24752 = inst->prev;
    inst->next = D.24752;
    inst->opcode = 462;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24753 = inst->sreg3;
    inst->sreg2 = D.24753;
    D.24754 = inst->sreg2;
    inst->sreg1 = D.24754;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24755>; else goto <D.24756>;
    <D.24755>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24757>;
    <D.24756>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24757>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24758 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24758;
    inst->prev = 0B;
    D.24759 = inst->prev;
    inst->next = D.24759;
    inst->opcode = 498;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24760 = inst->sreg3;
    inst->sreg2 = D.24760;
    D.24761 = inst->sreg2;
    inst->sreg1 = D.24761;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24762>; else goto <D.24763>;
    <D.24762>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24764>;
    <D.24763>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24764>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23971>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24765 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24765;
    inst->prev = 0B;
    D.24766 = inst->prev;
    inst->next = D.24766;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24767 = inst->sreg3;
    inst->sreg2 = D.24767;
    D.24768 = inst->sreg2;
    inst->sreg1 = D.24768;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.24769>; else goto <D.24770>;
    <D.24769>:
    {
      guint64 _l;

      _l = 255;
      _l.5 = (long int) _l;
      D.24772 = _l.5 & 4294967295;
      inst->data.op[1].const_val = D.24772;
      D.24773 = _l >> 32;
      D.24774 = (long int) D.24773;
      inst->data.op[0].const_val = D.24774;
    }
    goto <D.24775>;
    <D.24770>:
    inst->data.op[1].const_val = 255;
    <D.24775>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24776>; else goto <D.24777>;
    <D.24776>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24778>;
    <D.24777>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24778>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24779 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24779;
    inst->prev = 0B;
    D.24780 = inst->prev;
    inst->next = D.24780;
    inst->opcode = 462;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24781 = inst->sreg3;
    inst->sreg2 = D.24781;
    D.24782 = inst->sreg2;
    inst->sreg1 = D.24782;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24783>; else goto <D.24784>;
    <D.24783>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24785>;
    <D.24784>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24785>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24786 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24786;
    inst->prev = 0B;
    D.24787 = inst->prev;
    inst->next = D.24787;
    inst->opcode = 440;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24788 = inst->sreg3;
    inst->sreg2 = D.24788;
    D.24789 = inst->sreg2;
    inst->sreg1 = D.24789;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    inst->data.op[1].const_val = 255;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24790>; else goto <D.24791>;
    <D.24790>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24792>;
    <D.24791>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24792>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23976>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24793 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24793;
    inst->prev = 0B;
    D.24794 = inst->prev;
    inst->next = D.24794;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24795 = inst->sreg3;
    inst->sreg2 = D.24795;
    D.24796 = inst->sreg2;
    inst->sreg1 = D.24796;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.24797>; else goto <D.24798>;
    <D.24797>:
    {
      guint64 _l;

      _l = 255;
      _l.6 = (long int) _l;
      D.24800 = _l.6 & 4294967295;
      inst->data.op[1].const_val = D.24800;
      D.24801 = _l >> 32;
      D.24802 = (long int) D.24801;
      inst->data.op[0].const_val = D.24802;
    }
    goto <D.24803>;
    <D.24798>:
    inst->data.op[1].const_val = 255;
    <D.24803>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24804>; else goto <D.24805>;
    <D.24804>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24806>;
    <D.24805>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24806>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24807 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24807;
    inst->prev = 0B;
    D.24808 = inst->prev;
    inst->next = D.24808;
    inst->opcode = 462;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24809 = inst->sreg3;
    inst->sreg2 = D.24809;
    D.24810 = inst->sreg2;
    inst->sreg1 = D.24810;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24811>; else goto <D.24812>;
    <D.24811>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24813>;
    <D.24812>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24813>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24814 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24814;
    inst->prev = 0B;
    D.24815 = inst->prev;
    inst->next = D.24815;
    inst->opcode = 440;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24816 = inst->sreg3;
    inst->sreg2 = D.24816;
    D.24817 = inst->sreg2;
    inst->sreg1 = D.24817;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    inst->data.op[1].const_val = 255;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24818>; else goto <D.24819>;
    <D.24818>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24820>;
    <D.24819>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24820>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23981>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 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 = 328;
    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.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.24825>; else goto <D.24826>;
    <D.24825>:
    {
      guint64 _l;

      _l = 32767;
      _l.7 = (long int) _l;
      D.24828 = _l.7 & 4294967295;
      inst->data.op[1].const_val = D.24828;
      D.24829 = _l >> 32;
      D.24830 = (long int) D.24829;
      inst->data.op[0].const_val = D.24830;
    }
    goto <D.24831>;
    <D.24826>:
    inst->data.op[1].const_val = 32767;
    <D.24831>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24832>; else goto <D.24833>;
    <D.24832>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24834>;
    <D.24833>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24834>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24835 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24835;
    inst->prev = 0B;
    D.24836 = inst->prev;
    inst->next = D.24836;
    inst->opcode = 457;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24837 = inst->sreg3;
    inst->sreg2 = D.24837;
    D.24838 = inst->sreg2;
    inst->sreg1 = D.24838;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24839>; else goto <D.24840>;
    <D.24839>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24841>;
    <D.24840>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24841>:
  }
  {
    struct MonoInst * inst;

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

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

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24856 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24856;
    inst->prev = 0B;
    D.24857 = inst->prev;
    inst->next = D.24857;
    inst->opcode = 459;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24858 = inst->sreg3;
    inst->sreg2 = D.24858;
    D.24859 = inst->sreg2;
    inst->sreg1 = D.24859;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24860>; else goto <D.24861>;
    <D.24860>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24862>;
    <D.24861>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24862>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24863 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24863;
    inst->prev = 0B;
    D.24864 = inst->prev;
    inst->next = D.24864;
    inst->opcode = 499;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24865 = inst->sreg3;
    inst->sreg2 = D.24865;
    D.24866 = inst->sreg2;
    inst->sreg1 = D.24866;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24867>; else goto <D.24868>;
    <D.24867>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24869>;
    <D.24868>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24869>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23989>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24870 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24870;
    inst->prev = 0B;
    D.24871 = inst->prev;
    inst->next = D.24871;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24872 = inst->sreg3;
    inst->sreg2 = D.24872;
    D.24873 = inst->sreg2;
    inst->sreg1 = D.24873;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.24874>; else goto <D.24875>;
    <D.24874>:
    {
      guint64 _l;

      _l = 32767;
      _l.9 = (long int) _l;
      D.24877 = _l.9 & 4294967295;
      inst->data.op[1].const_val = D.24877;
      D.24878 = _l >> 32;
      D.24879 = (long int) D.24878;
      inst->data.op[0].const_val = D.24879;
    }
    goto <D.24880>;
    <D.24875>:
    inst->data.op[1].const_val = 32767;
    <D.24880>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24881>; else goto <D.24882>;
    <D.24881>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24883>;
    <D.24882>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24883>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24884 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24884;
    inst->prev = 0B;
    D.24885 = inst->prev;
    inst->next = D.24885;
    inst->opcode = 462;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24886 = inst->sreg3;
    inst->sreg2 = D.24886;
    D.24887 = inst->sreg2;
    inst->sreg1 = D.24887;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24888>; else goto <D.24889>;
    <D.24888>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24890>;
    <D.24889>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24890>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24891 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24891;
    inst->prev = 0B;
    D.24892 = inst->prev;
    inst->next = D.24892;
    inst->opcode = 499;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24893 = inst->sreg3;
    inst->sreg2 = D.24893;
    D.24894 = inst->sreg2;
    inst->sreg1 = D.24894;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24895>; else goto <D.24896>;
    <D.24895>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24897>;
    <D.24896>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24897>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23994>:
  {
    struct MonoInst * inst;

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

      _l = 65535;
      _l.10 = (long int) _l;
      D.24905 = _l.10 & 4294967295;
      inst->data.op[1].const_val = D.24905;
      D.24906 = _l >> 32;
      D.24907 = (long int) D.24906;
      inst->data.op[0].const_val = D.24907;
    }
    goto <D.24908>;
    <D.24903>:
    inst->data.op[1].const_val = 65535;
    <D.24908>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24909>; else goto <D.24910>;
    <D.24909>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24911>;
    <D.24910>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24911>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24912 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24912;
    inst->prev = 0B;
    D.24913 = inst->prev;
    inst->next = D.24913;
    inst->opcode = 462;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24914 = inst->sreg3;
    inst->sreg2 = D.24914;
    D.24915 = inst->sreg2;
    inst->sreg1 = D.24915;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24916>; else goto <D.24917>;
    <D.24916>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24918>;
    <D.24917>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24918>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24919 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24919;
    inst->prev = 0B;
    D.24920 = inst->prev;
    inst->next = D.24920;
    inst->opcode = 440;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24921 = inst->sreg3;
    inst->sreg2 = D.24921;
    D.24922 = inst->sreg2;
    inst->sreg1 = D.24922;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    inst->data.op[1].const_val = 65535;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24923>; else goto <D.24924>;
    <D.24923>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24925>;
    <D.24924>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24925>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.23999>:
  {
    struct MonoInst * inst;

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

      _l = 65535;
      _l.11 = (long int) _l;
      D.24933 = _l.11 & 4294967295;
      inst->data.op[1].const_val = D.24933;
      D.24934 = _l >> 32;
      D.24935 = (long int) D.24934;
      inst->data.op[0].const_val = D.24935;
    }
    goto <D.24936>;
    <D.24931>:
    inst->data.op[1].const_val = 65535;
    <D.24936>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24937>; else goto <D.24938>;
    <D.24937>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24939>;
    <D.24938>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24939>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24940 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24940;
    inst->prev = 0B;
    D.24941 = inst->prev;
    inst->next = D.24941;
    inst->opcode = 462;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24942 = inst->sreg3;
    inst->sreg2 = D.24942;
    D.24943 = inst->sreg2;
    inst->sreg1 = D.24943;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24944>; else goto <D.24945>;
    <D.24944>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24946>;
    <D.24945>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24946>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24947 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24947;
    inst->prev = 0B;
    D.24948 = inst->prev;
    inst->next = D.24948;
    inst->opcode = 440;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24949 = inst->sreg3;
    inst->sreg2 = D.24949;
    D.24950 = inst->sreg2;
    inst->sreg1 = D.24950;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    inst->data.op[1].const_val = 65535;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24951>; else goto <D.24952>;
    <D.24951>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24953>;
    <D.24952>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24953>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.24004>:
  {
    struct MonoInst * inst;

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

      _l = 2147483647;
      _l.12 = (long int) _l;
      D.24961 = _l.12 & 4294967295;
      inst->data.op[1].const_val = D.24961;
      D.24962 = _l >> 32;
      D.24963 = (long int) D.24962;
      inst->data.op[0].const_val = D.24963;
    }
    goto <D.24964>;
    <D.24959>:
    inst->data.op[1].const_val = 2147483647;
    <D.24964>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24965>; else goto <D.24966>;
    <D.24965>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24967>;
    <D.24966>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24967>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24968 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24968;
    inst->prev = 0B;
    D.24969 = inst->prev;
    inst->next = D.24969;
    inst->opcode = 457;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24970 = inst->sreg3;
    inst->sreg2 = D.24970;
    D.24971 = inst->sreg2;
    inst->sreg1 = D.24971;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24972>; else goto <D.24973>;
    <D.24972>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24974>;
    <D.24973>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24974>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24975 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24975;
    inst->prev = 0B;
    D.24976 = inst->prev;
    inst->next = D.24976;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24977 = inst->sreg3;
    inst->sreg2 = D.24977;
    D.24978 = inst->sreg2;
    inst->sreg1 = D.24978;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.24979>; else goto <D.24980>;
    <D.24979>:
    {
      guint64 _l;

      _l = 18446744071562067968;
      _l.13 = (long int) _l;
      D.24982 = _l.13 & 4294967295;
      inst->data.op[1].const_val = D.24982;
      D.24983 = _l >> 32;
      D.24984 = (long int) D.24983;
      inst->data.op[0].const_val = D.24984;
    }
    goto <D.24985>;
    <D.24980>:
    inst->data.op[1].const_val = -2147483648;
    <D.24985>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24986>; else goto <D.24987>;
    <D.24986>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24988>;
    <D.24987>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24988>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24989 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24989;
    inst->prev = 0B;
    D.24990 = inst->prev;
    inst->next = D.24990;
    inst->opcode = 459;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24991 = inst->sreg3;
    inst->sreg2 = D.24991;
    D.24992 = inst->sreg2;
    inst->sreg1 = D.24992;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.24993>; else goto <D.24994>;
    <D.24993>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.24995>;
    <D.24994>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.24995>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.24996 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24996;
    inst->prev = 0B;
    D.24997 = inst->prev;
    inst->next = D.24997;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24998 = inst->sreg3;
    inst->sreg2 = D.24998;
    D.24999 = inst->sreg2;
    inst->sreg1 = D.24999;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25000>; else goto <D.25001>;
    <D.25000>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25002>;
    <D.25001>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25002>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.24012>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25003 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25003;
    inst->prev = 0B;
    D.25004 = inst->prev;
    inst->next = D.25004;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25005 = inst->sreg3;
    inst->sreg2 = D.25005;
    D.25006 = inst->sreg2;
    inst->sreg1 = D.25006;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.25007>; else goto <D.25008>;
    <D.25007>:
    {
      guint64 _l;

      _l = 2147483647;
      _l.14 = (long int) _l;
      D.25010 = _l.14 & 4294967295;
      inst->data.op[1].const_val = D.25010;
      D.25011 = _l >> 32;
      D.25012 = (long int) D.25011;
      inst->data.op[0].const_val = D.25012;
    }
    goto <D.25013>;
    <D.25008>:
    inst->data.op[1].const_val = 2147483647;
    <D.25013>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25014>; else goto <D.25015>;
    <D.25014>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25016>;
    <D.25015>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25016>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25017 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25017;
    inst->prev = 0B;
    D.25018 = inst->prev;
    inst->next = D.25018;
    inst->opcode = 462;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25019 = inst->sreg3;
    inst->sreg2 = D.25019;
    D.25020 = inst->sreg2;
    inst->sreg1 = D.25020;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25021>; else goto <D.25022>;
    <D.25021>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25023>;
    <D.25022>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25023>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25024 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25024;
    inst->prev = 0B;
    D.25025 = inst->prev;
    inst->next = D.25025;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25026 = inst->sreg3;
    inst->sreg2 = D.25026;
    D.25027 = inst->sreg2;
    inst->sreg1 = D.25027;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25028>; else goto <D.25029>;
    <D.25028>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25030>;
    <D.25029>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25030>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.24017>:
  {
    struct MonoInst * inst;

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

      _l = 4294967295;
      _l.15 = (long int) _l;
      D.25038 = _l.15 & 4294967295;
      inst->data.op[1].const_val = D.25038;
      D.25039 = _l >> 32;
      D.25040 = (long int) D.25039;
      inst->data.op[0].const_val = D.25040;
    }
    goto <D.25041>;
    <D.25036>:
    inst->data.op[1].const_val = 4294967295;
    <D.25041>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25042>; else goto <D.25043>;
    <D.25042>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25044>;
    <D.25043>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25044>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25045 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25045;
    inst->prev = 0B;
    D.25046 = inst->prev;
    inst->next = D.25046;
    inst->opcode = 457;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25047 = inst->sreg3;
    inst->sreg2 = D.25047;
    D.25048 = inst->sreg2;
    inst->sreg1 = D.25048;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25049>; else goto <D.25050>;
    <D.25049>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25051>;
    <D.25050>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25051>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25052 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25052;
    inst->prev = 0B;
    D.25053 = inst->prev;
    inst->next = D.25053;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25054 = inst->sreg3;
    inst->sreg2 = D.25054;
    D.25055 = inst->sreg2;
    inst->sreg1 = D.25055;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.25056>; else goto <D.25057>;
    <D.25056>:
    {
      guint64 _l;

      _l = 0;
      _l.16 = (long int) _l;
      D.25059 = _l.16 & 4294967295;
      inst->data.op[1].const_val = D.25059;
      D.25060 = _l >> 32;
      D.25061 = (long int) D.25060;
      inst->data.op[0].const_val = D.25061;
    }
    goto <D.25062>;
    <D.25057>:
    inst->data.op[1].const_val = 0;
    <D.25062>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25063>; else goto <D.25064>;
    <D.25063>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25065>;
    <D.25064>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25065>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25066 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25066;
    inst->prev = 0B;
    D.25067 = inst->prev;
    inst->next = D.25067;
    inst->opcode = 459;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25068 = inst->sreg3;
    inst->sreg2 = D.25068;
    D.25069 = inst->sreg2;
    inst->sreg1 = D.25069;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25070>; else goto <D.25071>;
    <D.25070>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25072>;
    <D.25071>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25072>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25073 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25073;
    inst->prev = 0B;
    D.25074 = inst->prev;
    inst->next = D.25074;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25075 = inst->sreg3;
    inst->sreg2 = D.25075;
    D.25076 = inst->sreg2;
    inst->sreg1 = D.25076;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25077>; else goto <D.25078>;
    <D.25077>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25079>;
    <D.25078>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25079>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.24025>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25080 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25080;
    inst->prev = 0B;
    D.25081 = inst->prev;
    inst->next = D.25081;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25082 = inst->sreg3;
    inst->sreg2 = D.25082;
    D.25083 = inst->sreg2;
    inst->sreg1 = D.25083;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.25084>; else goto <D.25085>;
    <D.25084>:
    {
      guint64 _l;

      _l = 4294967295;
      _l.17 = (long int) _l;
      D.25087 = _l.17 & 4294967295;
      inst->data.op[1].const_val = D.25087;
      D.25088 = _l >> 32;
      D.25089 = (long int) D.25088;
      inst->data.op[0].const_val = D.25089;
    }
    goto <D.25090>;
    <D.25085>:
    inst->data.op[1].const_val = 4294967295;
    <D.25090>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25091>; else goto <D.25092>;
    <D.25091>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25093>;
    <D.25092>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25093>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25094 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25094;
    inst->prev = 0B;
    D.25095 = inst->prev;
    inst->next = D.25095;
    inst->opcode = 462;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25096 = inst->sreg3;
    inst->sreg2 = D.25096;
    D.25097 = inst->sreg2;
    inst->sreg1 = D.25097;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25098>; else goto <D.25099>;
    <D.25098>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25100>;
    <D.25099>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25100>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25101 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25101;
    inst->prev = 0B;
    D.25102 = inst->prev;
    inst->next = D.25102;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25103 = inst->sreg3;
    inst->sreg2 = D.25103;
    D.25104 = inst->sreg2;
    inst->sreg1 = D.25104;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25105>; else goto <D.25106>;
    <D.25105>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25107>;
    <D.25106>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25107>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.24030>:
  <D.24031>:
  <D.24032>:
  <D.24033>:
  ins->opcode = 428;
  goto <D.23924>;
  <D.24034>:
  <D.24035>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25108 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25108;
    inst->prev = 0B;
    D.25109 = inst->prev;
    inst->next = D.25109;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25110 = inst->sreg3;
    inst->sreg2 = D.25110;
    D.25111 = inst->sreg2;
    inst->sreg1 = D.25111;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.25112>; else goto <D.25113>;
    <D.25112>:
    {
      guint64 _l;

      _l = 0;
      _l.18 = (long int) _l;
      D.25115 = _l.18 & 4294967295;
      inst->data.op[1].const_val = D.25115;
      D.25116 = _l >> 32;
      D.25117 = (long int) D.25116;
      inst->data.op[0].const_val = D.25117;
    }
    goto <D.25118>;
    <D.25113>:
    inst->data.op[1].const_val = 0;
    <D.25118>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25119>; else goto <D.25120>;
    <D.25119>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25121>;
    <D.25120>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25121>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25122 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25122;
    inst->prev = 0B;
    D.25123 = inst->prev;
    inst->next = D.25123;
    inst->opcode = 459;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25124 = inst->sreg3;
    inst->sreg2 = D.25124;
    D.25125 = inst->sreg2;
    inst->sreg1 = D.25125;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25126>; else goto <D.25127>;
    <D.25126>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25128>;
    <D.25127>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25128>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25129 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25129;
    inst->prev = 0B;
    D.25130 = inst->prev;
    inst->next = D.25130;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25131 = inst->sreg3;
    inst->sreg2 = D.25131;
    D.25132 = inst->sreg2;
    inst->sreg1 = D.25132;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25133>; else goto <D.25134>;
    <D.25133>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25135>;
    <D.25134>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25135>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.24040>:
  <D.24041>:
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25136 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25136;
    inst->prev = 0B;
    D.25137 = inst->prev;
    inst->next = D.25137;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25138 = inst->sreg3;
    inst->sreg2 = D.25138;
    D.25139 = inst->sreg2;
    inst->sreg1 = D.25139;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    if (0 != 0) goto <D.25140>; else goto <D.25141>;
    <D.25140>:
    {
      guint64 _l;

      _l = 0;
      _l.19 = (long int) _l;
      D.25143 = _l.19 & 4294967295;
      inst->data.op[1].const_val = D.25143;
      D.25144 = _l >> 32;
      D.25145 = (long int) D.25144;
      inst->data.op[0].const_val = D.25145;
    }
    goto <D.25146>;
    <D.25141>:
    inst->data.op[1].const_val = 0;
    <D.25146>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25147>; else goto <D.25148>;
    <D.25147>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25149>;
    <D.25148>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25149>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25150 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25150;
    inst->prev = 0B;
    D.25151 = inst->prev;
    inst->next = D.25151;
    inst->opcode = 459;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25152 = inst->sreg3;
    inst->sreg2 = D.25152;
    D.25153 = inst->sreg2;
    inst->sreg1 = D.25153;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    inst->data.op[1].p = "OverflowException";
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25154>; else goto <D.25155>;
    <D.25154>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25156>;
    <D.25155>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25156>:
  }
  {
    struct MonoInst * inst;

    D.24586 = cfg->mempool;
    inst = mono_mempool_alloc (D.24586, 80);
    inst->data.op[1].const_val = 0;
    D.25157 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25157;
    inst->prev = 0B;
    D.25158 = inst->prev;
    inst->next = D.25158;
    inst->opcode = 428;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25159 = inst->sreg3;
    inst->sreg2 = D.25159;
    D.25160 = inst->sreg2;
    inst->sreg1 = D.25160;
    D.24591 = cfg->ip;
    inst->cil_code = D.24591;
    D.24592 = ins->dreg;
    inst->dreg = D.24592;
    D.24593 = ins->sreg1;
    inst->sreg1 = D.24593;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    if (D.24595 != 0B) goto <D.25161>; else goto <D.25162>;
    <D.25161>:
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    D.24595->next = inst;
    D.24594 = cfg->cbb;
    D.24595 = D.24594->last_ins;
    inst->prev = D.24595;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    goto <D.25163>;
    <D.25162>:
    D.24594 = cfg->cbb;
    D.24594 = cfg->cbb;
    D.24594->last_ins = inst;
    D.24595 = D.24594->last_ins;
    D.24594->code = D.24595;
    <D.25163>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24599 = ins->sreg3;
  ins->sreg2 = D.24599;
  D.24600 = ins->sreg2;
  ins->sreg1 = D.24600;
  goto <D.23924>;
  <D.24046>:
  D.25164 = 0;
  return D.25164;
  <D.23924>:
  *repl_ins = repl;
  D.25164 = 1;
  return D.25164;
}


mono_decompose_long_opts (struct MonoCompile * cfg)
{

}


mono_decompose_vtype_opts (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.25170;
  void * D.25171;
  unsigned int D.25172;
  struct MonoBasicBlock * D.25175;
  struct MonoInst * D.25176;
  short unsigned int D.25177;
  int D.25178;
  struct MonoInst * iftmp.20;
  int D.25180;
  unsigned int D.25181;
  unsigned int D.25182;
  struct MonoInst * * D.25185;
  long unsigned int D.25186;
  long unsigned int D.25187;
  struct MonoInst * * D.25188;
  struct MonoInst * iftmp.21;
  int D.25191;
  unsigned int D.25192;
  long unsigned int D.25195;
  long unsigned int D.25196;
  struct MonoInst * * D.25197;
  struct MonoClass * D.25199;
  _Bool D.25200;
  long int D.25201;
  long int D.25202;
  struct MonoType * D.25207;
  int D.25210;
  long int D.25213;
  struct MonoInst * D.25214;
  int D.25215;
  int D.25216;
  const unsigned char * D.25217;
  unsigned char D.25218;
  unsigned char D.25219;
  struct MonoClass * D.25220;
  unsigned int D.25221;
  int D.25222;
  int D.25223;
  _Bool D.25224;
  long int D.25225;
  long int D.25226;
  struct MonoType * D.25229;
  int D.25230;
  struct MonoInst * iftmp.22;
  int D.25236;
  int D.25237;
  unsigned int D.25238;
  sizetype D.25241;
  sizetype D.25242;
  sizetype D.25243;
  struct MonoInst * * D.25244;
  struct MonoInst * iftmp.23;
  int D.25247;
  unsigned int D.25248;
  sizetype D.25251;
  sizetype D.25252;
  struct MonoInst * * D.25253;
  _Bool D.25255;
  long int D.25256;
  long int D.25257;
  _Bool D.25260;
  long int D.25261;
  long int D.25262;
  unsigned char D.25265;
  unsigned char D.25266;
  unsigned char D.25267;
  unsigned char D.25268;
  long int D.25272;
  struct MonoInst * D.25273;
  int D.25274;
  int D.25275;
  unsigned char D.25276;
  unsigned char D.25277;
  struct MonoClass * D.25278;
  unsigned int D.25279;
  int D.25280;
  struct MonoType * D.25283;
  int D.25284;
  struct MonoInst * iftmp.24;
  int D.25290;
  int D.25291;
  unsigned int D.25292;
  sizetype D.25295;
  sizetype D.25296;
  sizetype D.25297;
  struct MonoInst * * D.25298;
  struct MonoInst * iftmp.25;
  int D.25301;
  unsigned int D.25302;
  sizetype D.25305;
  sizetype D.25306;
  struct MonoInst * * D.25307;
  _Bool D.25309;
  long int D.25310;
  long int D.25311;
  _Bool D.25314;
  long int D.25315;
  long int D.25316;
  unsigned char D.25319;
  unsigned char D.25320;
  unsigned char D.25321;
  unsigned char D.25322;
  struct MonoInst * iftmp.26;
  unsigned char D.25334;
  unsigned char D.25335;
  struct MonoClass * D.25336;
  unsigned int D.25337;
  int D.25338;
  struct MonoType * D.25341;
  int D.25342;
  struct MonoInst * iftmp.27;
  int D.25348;
  int D.25349;
  unsigned int D.25350;
  sizetype D.25353;
  sizetype D.25354;
  sizetype D.25355;
  struct MonoInst * * D.25356;
  struct MonoInst * iftmp.28;
  int D.25359;
  unsigned int D.25360;
  sizetype D.25363;
  sizetype D.25364;
  struct MonoInst * * D.25365;
  _Bool D.25367;
  long int D.25368;
  long int D.25369;
  _Bool D.25372;
  long int D.25373;
  long int D.25374;
  unsigned char D.25377;
  unsigned char D.25378;
  unsigned char D.25379;
  unsigned char D.25380;
  unsigned char D.25384;
  unsigned char D.25385;
  long int D.25388;
  struct MonoInst * D.25389;
  int D.25390;
  int D.25391;
  long int D.25392;
  struct MonoInst * iftmp.29;
  struct MonoInst * iftmp.30;
  unsigned char D.25410;
  unsigned char D.25411;
  struct MonoClass * D.25412;
  unsigned int D.25413;
  int D.25414;
  struct MonoType * D.25417;
  int D.25418;
  struct MonoInst * iftmp.31;
  int D.25424;
  int D.25425;
  unsigned int D.25426;
  sizetype D.25429;
  sizetype D.25430;
  sizetype D.25431;
  struct MonoInst * * D.25432;
  struct MonoInst * iftmp.32;
  int D.25435;
  unsigned int D.25436;
  sizetype D.25439;
  sizetype D.25440;
  struct MonoInst * * D.25441;
  _Bool D.25443;
  long int D.25444;
  long int D.25445;
  _Bool D.25448;
  long int D.25449;
  long int D.25450;
  unsigned char D.25453;
  unsigned char D.25454;
  unsigned char D.25455;
  unsigned char D.25456;
  unsigned int D.25460;
  long int D.25461;
  struct MonoInst * iftmp.33;
  unsigned int D.25473;
  unsigned int D.25477;
  int D.25478;
  int D.25481;
  struct MonoInst * iftmp.34;
  struct MonoInst * iftmp.35;
  _Bool D.25494;
  long int D.25495;
  long int D.25496;
  _Bool D.25499;
  long int D.25500;
  long int D.25501;
  unsigned char D.25504;
  unsigned char D.25505;
  unsigned char D.25506;
  unsigned char D.25507;
  int D.25511;
  struct MonoInst * iftmp.36;
  unsigned int D.25520;
  int D.25521;
  int D.25524;
  struct MonoInst * iftmp.37;
  struct MonoInst * iftmp.38;
  _Bool D.25537;
  long int D.25538;
  long int D.25539;
  _Bool D.25542;
  long int D.25543;
  long int D.25544;
  unsigned char D.25547;
  unsigned char D.25548;
  unsigned char D.25549;
  unsigned char D.25550;
  struct MonoInst * iftmp.39;
  int D.25555;
  unsigned int D.25556;
  long unsigned int D.25559;
  long unsigned int D.25560;
  struct MonoInst * * D.25561;
  struct MonoMethodSignature * D.25565;
  struct MonoType * D.25566;
  unsigned int D.25567;
  int D.25568;
  int D.25571;
  struct MonoInst * iftmp.40;
  struct MonoInst * iftmp.41;
  _Bool D.25584;
  long int D.25585;
  long int D.25586;
  _Bool D.25589;
  long int D.25590;
  long int D.25591;
  unsigned char D.25594;
  unsigned char D.25595;
  unsigned char D.25596;
  unsigned char D.25597;
  unsigned char D.25601;
  unsigned char D.25602;
  int D.25605;
  int D.25606;
  unsigned int D.25608;
  int D.25609;
  struct MonoInst * iftmp.42;
  int D.25614;
  unsigned int D.25615;
  long unsigned int D.25618;
  long unsigned int D.25619;
  struct MonoInst * * D.25620;
  struct MonoMethodSignature * D.25624;
  struct MonoType * D.25625;
  unsigned int D.25626;
  int D.25627;
  int D.25630;
  struct MonoInst * iftmp.43;
  struct MonoInst * iftmp.44;
  _Bool D.25643;
  long int D.25644;
  long int D.25645;
  _Bool D.25648;
  long int D.25649;
  long int D.25650;
  unsigned char D.25653;
  unsigned char D.25654;
  unsigned char D.25655;
  unsigned char D.25656;
  struct MonoClass * D.25662;
  long int D.25664;
  struct MonoInst * D.25665;
  int D.25666;
  int D.25667;
  int D.25668;
  int D.25669;
  long int D.25673;
  struct MonoInst * D.25674;
  int D.25675;
  int D.25676;
  long int D.25680;
  struct MonoInst * D.25681;
  int D.25682;
  int D.25683;
  long int D.25687;
  struct MonoInst * D.25688;
  int D.25689;
  int D.25690;
  long int D.25694;
  struct MonoInst * D.25695;
  int D.25696;
  int D.25697;
  _Bool D.25703;
  long int D.25704;
  long int D.25705;
  struct MonoInst * D.25711;
  struct MonoInst * D.25713;
  short int D.25714;
  struct MonoBasicBlock * bb;
  struct MonoBasicBlock * first_bb;

  D.25170 = cfg->mempool;
  D.25171 = mono_mempool_alloc0 (D.25170, 296);
  cfg->cbb = D.25171;
  first_bb = cfg->cbb;
  bb = cfg->bb_entry;
  goto <D.24206>;
  <D.24205>:
  {
    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.25172 = cfg->verbose_level;
        if (D.25172 > 2) goto <D.25173>; else goto <D.25174>;
        <D.25173>:
        mono_print_bb (bb, "BEFORE LOWER-VTYPE-OPTS ");
        <D.25174>:
        D.25175 = cfg->cbb;
        D.25175 = cfg->cbb;
        D.25175->last_ins = 0B;
        D.25176 = D.25175->last_ins;
        D.25175->code = D.25176;
        restart = 1;
        goto <D.24203>;
        <D.24202>:
        restart = 0;
        ins = bb->code;
        goto <D.24200>;
        <D.24199>:
        D.25177 = ins->opcode;
        D.25178 = (int) D.25177;
        switch (D.25178) <default: <D.24198>, case 333: <D.24160>, case 334: <D.24163>, case 355: <D.24167>, case 356: <D.24168>, case 357: <D.24169>, case 390: <D.24153>, case 403: <D.24157>, case 431: <D.24142>, case 432: <D.24148>>
        <D.24142>:
        D.25180 = ins->sreg1;
        D.25181 = (unsigned int) D.25180;
        D.25182 = cfg->vreg_to_inst_len;
        if (D.25181 < D.25182) goto <D.25183>; else goto <D.25184>;
        <D.25183>:
        D.25185 = cfg->vreg_to_inst;
        D.25180 = ins->sreg1;
        D.25186 = (long unsigned int) D.25180;
        D.25187 = D.25186 * 8;
        D.25188 = D.25185 + D.25187;
        iftmp.20 = *D.25188;
        goto <D.25189>;
        <D.25184>:
        iftmp.20 = 0B;
        <D.25189>:
        src_var = iftmp.20;
        D.25191 = ins->dreg;
        D.25192 = (unsigned int) D.25191;
        D.25182 = cfg->vreg_to_inst_len;
        if (D.25192 < D.25182) goto <D.25193>; else goto <D.25194>;
        <D.25193>:
        D.25185 = cfg->vreg_to_inst;
        D.25191 = ins->dreg;
        D.25195 = (long unsigned int) D.25191;
        D.25196 = D.25195 * 8;
        D.25197 = D.25185 + D.25196;
        iftmp.21 = *D.25197;
        goto <D.25198>;
        <D.25194>:
        iftmp.21 = 0B;
        <D.25198>:
        dest_var = iftmp.21;
        D.25199 = ins->klass;
        D.25200 = D.25199 == 0B;
        D.25201 = (long int) D.25200;
        D.25202 = __builtin_expect (D.25201, 0);
        if (D.25202 != 0) goto <D.25203>; else goto <D.25204>;
        <D.25203>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1153, "ins->klass");
        <D.25204>:
        if (src_var == 0B) goto <D.25205>; else goto <D.25206>;
        <D.25205>:
        D.25191 = ins->dreg;
        D.25199 = ins->klass;
        D.25207 = &D.25199->byval_arg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25207, 329, D.25191);
        <D.25206>:
        if (dest_var == 0B) goto <D.25208>; else goto <D.25209>;
        <D.25208>:
        D.25191 = ins->dreg;
        D.25199 = ins->klass;
        D.25207 = &D.25199->byval_arg;
        dest_var = mono_compile_create_var_for_vreg (cfg, D.25207, 329, D.25191);
        <D.25209>:
        D.25210 = src_var->backend.is_pinvoke;
        if (D.25210 != 0) goto <D.25211>; else goto <D.25212>;
        <D.25211>:
        dest_var->backend.is_pinvoke = 1;
        <D.25212>:
        D.25170 = cfg->mempool;
        src = mono_mempool_alloc (D.25170, 80);
        src->data.op[1].const_val = 0;
        D.25213 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.25213;
        src->prev = 0B;
        D.25214 = src->prev;
        src->next = D.25214;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.25215 = src->sreg3;
        src->sreg2 = D.25215;
        D.25216 = src->sreg2;
        src->sreg1 = D.25216;
        D.25217 = cfg->ip;
        src->cil_code = D.25217;
        src->data.op[0].p = src_var;
        D.25218 = src_var->flags;
        D.25219 = D.25218 | 16;
        src_var->flags = D.25219;
        src->type = 5;
        D.25220 = src_var->klass;
        src->klass = D.25220;
        D.25221 = alloc_dreg (cfg, 5);
        D.25222 = (int) D.25221;
        src->dreg = D.25222;
        cfg->has_indirection = 1;
        D.25223 = cfg->gsharedvt;
        D.25224 = D.25223 != 0;
        D.25225 = (long int) D.25224;
        D.25226 = __builtin_expect (D.25225, 0);
        if (D.25226 != 0) goto <D.25227>; else goto <D.25228>;
        <D.25227>:
        D.25229 = src_var->data.op[1].vtype;
        D.25230 = mini_is_gsharedvt_variable_type (cfg, D.25229);
        if (D.25230 != 0) goto <D.25231>; else goto <D.25232>;
        <D.25231>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25232>:
        <D.25228>:
        if (0 != 0) goto <D.25233>; else goto <D.25234>;
        <D.25233>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25236 = src_var->dreg;
          D.25237 = D.25236 + 1;
          D.25238 = (unsigned int) D.25237;
          D.25182 = cfg->vreg_to_inst_len;
          if (D.25238 < D.25182) goto <D.25239>; else goto <D.25240>;
          <D.25239>:
          D.25185 = cfg->vreg_to_inst;
          D.25236 = src_var->dreg;
          D.25241 = (sizetype) D.25236;
          D.25242 = D.25241 + 1;
          D.25243 = D.25242 * 8;
          D.25244 = D.25185 + D.25243;
          iftmp.22 = *D.25244;
          goto <D.25245>;
          <D.25240>:
          iftmp.22 = 0B;
          <D.25245>:
          var1 = iftmp.22;
          D.25236 = src_var->dreg;
          D.25247 = D.25236 + 2;
          D.25248 = (unsigned int) D.25247;
          D.25182 = cfg->vreg_to_inst_len;
          if (D.25248 < D.25182) goto <D.25249>; else goto <D.25250>;
          <D.25249>:
          D.25185 = cfg->vreg_to_inst;
          D.25236 = src_var->dreg;
          D.25241 = (sizetype) D.25236;
          D.25251 = D.25241 + 2;
          D.25252 = D.25251 * 8;
          D.25253 = D.25185 + D.25252;
          iftmp.23 = *D.25253;
          goto <D.25254>;
          <D.25250>:
          iftmp.23 = 0B;
          <D.25254>:
          var2 = iftmp.23;
          D.25255 = var1 == 0B;
          D.25256 = (long int) D.25255;
          D.25257 = __builtin_expect (D.25256, 0);
          if (D.25257 != 0) goto <D.25258>; else goto <D.25259>;
          <D.25258>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1165, "var1");
          <D.25259>:
          D.25260 = var2 == 0B;
          D.25261 = (long int) D.25260;
          D.25262 = __builtin_expect (D.25261, 0);
          if (D.25262 != 0) goto <D.25263>; else goto <D.25264>;
          <D.25263>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1165, "var2");
          <D.25264>:
          D.25265 = var1->flags;
          D.25266 = D.25265 | 16;
          var1->flags = D.25266;
          D.25267 = var2->flags;
          D.25268 = D.25267 | 16;
          var2->flags = D.25268;
        }
        <D.25234>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        if (D.25176 != 0B) goto <D.25269>; else goto <D.25270>;
        <D.25269>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        D.25176->next = src;
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        src->prev = D.25176;
        D.25175 = cfg->cbb;
        D.25175->last_ins = src;
        goto <D.25271>;
        <D.25270>:
        D.25175 = cfg->cbb;
        D.25175 = cfg->cbb;
        D.25175->last_ins = src;
        D.25176 = D.25175->last_ins;
        D.25175->code = D.25176;
        <D.25271>:
        D.25170 = cfg->mempool;
        dest = mono_mempool_alloc (D.25170, 80);
        dest->data.op[1].const_val = 0;
        D.25272 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.25272;
        dest->prev = 0B;
        D.25273 = dest->prev;
        dest->next = D.25273;
        dest->opcode = 314;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.25274 = dest->sreg3;
        dest->sreg2 = D.25274;
        D.25275 = dest->sreg2;
        dest->sreg1 = D.25275;
        D.25217 = cfg->ip;
        dest->cil_code = D.25217;
        dest->data.op[0].p = dest_var;
        D.25276 = dest_var->flags;
        D.25277 = D.25276 | 16;
        dest_var->flags = D.25277;
        dest->type = 5;
        D.25278 = dest_var->klass;
        dest->klass = D.25278;
        D.25279 = alloc_dreg (cfg, 5);
        D.25280 = (int) D.25279;
        dest->dreg = D.25280;
        cfg->has_indirection = 1;
        D.25223 = cfg->gsharedvt;
        D.25224 = D.25223 != 0;
        D.25225 = (long int) D.25224;
        D.25226 = __builtin_expect (D.25225, 0);
        if (D.25226 != 0) goto <D.25281>; else goto <D.25282>;
        <D.25281>:
        D.25283 = dest_var->data.op[1].vtype;
        D.25284 = mini_is_gsharedvt_variable_type (cfg, D.25283);
        if (D.25284 != 0) goto <D.25285>; else goto <D.25286>;
        <D.25285>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25286>:
        <D.25282>:
        if (0 != 0) goto <D.25287>; else goto <D.25288>;
        <D.25287>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25290 = dest_var->dreg;
          D.25291 = D.25290 + 1;
          D.25292 = (unsigned int) D.25291;
          D.25182 = cfg->vreg_to_inst_len;
          if (D.25292 < D.25182) goto <D.25293>; else goto <D.25294>;
          <D.25293>:
          D.25185 = cfg->vreg_to_inst;
          D.25290 = dest_var->dreg;
          D.25295 = (sizetype) D.25290;
          D.25296 = D.25295 + 1;
          D.25297 = D.25296 * 8;
          D.25298 = D.25185 + D.25297;
          iftmp.24 = *D.25298;
          goto <D.25299>;
          <D.25294>:
          iftmp.24 = 0B;
          <D.25299>:
          var1 = iftmp.24;
          D.25290 = dest_var->dreg;
          D.25301 = D.25290 + 2;
          D.25302 = (unsigned int) D.25301;
          D.25182 = cfg->vreg_to_inst_len;
          if (D.25302 < D.25182) goto <D.25303>; else goto <D.25304>;
          <D.25303>:
          D.25185 = cfg->vreg_to_inst;
          D.25290 = dest_var->dreg;
          D.25295 = (sizetype) D.25290;
          D.25305 = D.25295 + 2;
          D.25306 = D.25305 * 8;
          D.25307 = D.25185 + D.25306;
          iftmp.25 = *D.25307;
          goto <D.25308>;
          <D.25304>:
          iftmp.25 = 0B;
          <D.25308>:
          var2 = iftmp.25;
          D.25309 = var1 == 0B;
          D.25310 = (long int) D.25309;
          D.25311 = __builtin_expect (D.25310, 0);
          if (D.25311 != 0) goto <D.25312>; else goto <D.25313>;
          <D.25312>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1166, "var1");
          <D.25313>:
          D.25314 = var2 == 0B;
          D.25315 = (long int) D.25314;
          D.25316 = __builtin_expect (D.25315, 0);
          if (D.25316 != 0) goto <D.25317>; else goto <D.25318>;
          <D.25317>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1166, "var2");
          <D.25318>:
          D.25319 = var1->flags;
          D.25320 = D.25319 | 16;
          var1->flags = D.25320;
          D.25321 = var2->flags;
          D.25322 = D.25321 | 16;
          var2->flags = D.25322;
        }
        <D.25288>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        if (D.25176 != 0B) goto <D.25323>; else goto <D.25324>;
        <D.25323>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        D.25176->next = dest;
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        dest->prev = D.25176;
        D.25175 = cfg->cbb;
        D.25175->last_ins = dest;
        goto <D.25325>;
        <D.25324>:
        D.25175 = cfg->cbb;
        D.25175 = cfg->cbb;
        D.25175->last_ins = dest;
        D.25176 = D.25175->last_ins;
        D.25175->code = D.25176;
        <D.25325>:
        D.25210 = src_var->backend.is_pinvoke;
        D.25220 = src_var->klass;
        mini_emit_stobj (cfg, dest, src, D.25220, D.25210);
        goto <D.24147>;
        <D.24148>:
        D.25199 = ins->klass;
        D.25200 = D.25199 == 0B;
        D.25201 = (long int) D.25200;
        D.25202 = __builtin_expect (D.25201, 0);
        if (D.25202 != 0) goto <D.25326>; else goto <D.25327>;
        <D.25326>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1172, "ins->klass");
        <D.25327>:
        {
          struct MonoInst * var;

          D.25191 = ins->dreg;
          D.25192 = (unsigned int) D.25191;
          D.25182 = cfg->vreg_to_inst_len;
          if (D.25192 < D.25182) goto <D.25329>; else goto <D.25330>;
          <D.25329>:
          D.25185 = cfg->vreg_to_inst;
          D.25191 = ins->dreg;
          D.25195 = (long unsigned int) D.25191;
          D.25196 = D.25195 * 8;
          D.25197 = D.25185 + D.25196;
          iftmp.26 = *D.25197;
          goto <D.25331>;
          <D.25330>:
          iftmp.26 = 0B;
          <D.25331>:
          var = iftmp.26;
          if (var == 0B) goto <D.25332>; else goto <D.25333>;
          <D.25332>:
          D.25191 = ins->dreg;
          D.25199 = ins->klass;
          D.25207 = &D.25199->byval_arg;
          var = mono_compile_create_var_for_vreg (cfg, D.25207, 329, D.25191);
          <D.25333>:
          D.25170 = cfg->mempool;
          dest = mono_mempool_alloc (D.25170, 80);
          dest->data.op[1].const_val = 0;
          D.25272 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.25272;
          dest->prev = 0B;
          D.25273 = dest->prev;
          dest->next = D.25273;
          dest->opcode = 314;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.25274 = dest->sreg3;
          dest->sreg2 = D.25274;
          D.25275 = dest->sreg2;
          dest->sreg1 = D.25275;
          D.25217 = cfg->ip;
          dest->cil_code = D.25217;
          dest->data.op[0].p = var;
          D.25334 = var->flags;
          D.25335 = D.25334 | 16;
          var->flags = D.25335;
          dest->type = 5;
          D.25336 = var->klass;
          dest->klass = D.25336;
          D.25337 = alloc_dreg (cfg, 5);
          D.25338 = (int) D.25337;
          dest->dreg = D.25338;
          cfg->has_indirection = 1;
          D.25223 = cfg->gsharedvt;
          D.25224 = D.25223 != 0;
          D.25225 = (long int) D.25224;
          D.25226 = __builtin_expect (D.25225, 0);
          if (D.25226 != 0) goto <D.25339>; else goto <D.25340>;
          <D.25339>:
          D.25341 = var->data.op[1].vtype;
          D.25342 = mini_is_gsharedvt_variable_type (cfg, D.25341);
          if (D.25342 != 0) goto <D.25343>; else goto <D.25344>;
          <D.25343>:
          handle_gsharedvt_ldaddr (cfg);
          <D.25344>:
          <D.25340>:
          if (0 != 0) goto <D.25345>; else goto <D.25346>;
          <D.25345>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.25348 = var->dreg;
            D.25349 = D.25348 + 1;
            D.25350 = (unsigned int) D.25349;
            D.25182 = cfg->vreg_to_inst_len;
            if (D.25350 < D.25182) goto <D.25351>; else goto <D.25352>;
            <D.25351>:
            D.25185 = cfg->vreg_to_inst;
            D.25348 = var->dreg;
            D.25353 = (sizetype) D.25348;
            D.25354 = D.25353 + 1;
            D.25355 = D.25354 * 8;
            D.25356 = D.25185 + D.25355;
            iftmp.27 = *D.25356;
            goto <D.25357>;
            <D.25352>:
            iftmp.27 = 0B;
            <D.25357>:
            var1 = iftmp.27;
            D.25348 = var->dreg;
            D.25359 = D.25348 + 2;
            D.25360 = (unsigned int) D.25359;
            D.25182 = cfg->vreg_to_inst_len;
            if (D.25360 < D.25182) goto <D.25361>; else goto <D.25362>;
            <D.25361>:
            D.25185 = cfg->vreg_to_inst;
            D.25348 = var->dreg;
            D.25353 = (sizetype) D.25348;
            D.25363 = D.25353 + 2;
            D.25364 = D.25363 * 8;
            D.25365 = D.25185 + D.25364;
            iftmp.28 = *D.25365;
            goto <D.25366>;
            <D.25362>:
            iftmp.28 = 0B;
            <D.25366>:
            var2 = iftmp.28;
            D.25367 = var1 == 0B;
            D.25368 = (long int) D.25367;
            D.25369 = __builtin_expect (D.25368, 0);
            if (D.25369 != 0) goto <D.25370>; else goto <D.25371>;
            <D.25370>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1174, "var1");
            <D.25371>:
            D.25372 = var2 == 0B;
            D.25373 = (long int) D.25372;
            D.25374 = __builtin_expect (D.25373, 0);
            if (D.25374 != 0) goto <D.25375>; else goto <D.25376>;
            <D.25375>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1174, "var2");
            <D.25376>:
            D.25377 = var1->flags;
            D.25378 = D.25377 | 16;
            var1->flags = D.25378;
            D.25379 = var2->flags;
            D.25380 = D.25379 | 16;
            var2->flags = D.25380;
          }
          <D.25346>:
        }
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        if (D.25176 != 0B) goto <D.25381>; else goto <D.25382>;
        <D.25381>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        D.25176->next = dest;
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        dest->prev = D.25176;
        D.25175 = cfg->cbb;
        D.25175->last_ins = dest;
        goto <D.25383>;
        <D.25382>:
        D.25175 = cfg->cbb;
        D.25175 = cfg->cbb;
        D.25175->last_ins = dest;
        D.25176 = D.25175->last_ins;
        D.25175->code = D.25176;
        <D.25383>:
        D.25199 = ins->klass;
        mini_emit_initobj (cfg, dest, 0B, D.25199);
        D.25384 = BIT_FIELD_REF <*cfg, 8, 5632>;
        D.25385 = D.25384 & 128;
        if (D.25385 != 0) goto <D.25386>; else goto <D.25387>;
        <D.25386>:
        {
          struct MonoInst * tmp;

          D.25170 = cfg->mempool;
          tmp = mono_mempool_alloc (D.25170, 80);
          tmp->data.op[1].const_val = 0;
          D.25388 = tmp->data.op[1].const_val;
          tmp->data.op[0].const_val = D.25388;
          tmp->prev = 0B;
          D.25389 = tmp->prev;
          tmp->next = D.25389;
          tmp->opcode = 1000;
          tmp->flags = 0;
          tmp->type = 0;
          tmp->dreg = -1;
          tmp->sreg3 = -1;
          D.25390 = tmp->sreg3;
          tmp->sreg2 = D.25390;
          D.25391 = tmp->sreg2;
          tmp->sreg1 = D.25391;
          D.25217 = cfg->ip;
          tmp->cil_code = D.25217;
          D.25191 = ins->dreg;
          D.25392 = (long int) D.25191;
          tmp->data.op[1].const_val = D.25392;
          D.25175 = cfg->cbb;
          D.25176 = D.25175->last_ins;
          if (D.25176 != 0B) goto <D.25393>; else goto <D.25394>;
          <D.25393>:
          D.25175 = cfg->cbb;
          D.25176 = D.25175->last_ins;
          D.25176->next = tmp;
          D.25175 = cfg->cbb;
          D.25176 = D.25175->last_ins;
          tmp->prev = D.25176;
          D.25175 = cfg->cbb;
          D.25175->last_ins = tmp;
          goto <D.25395>;
          <D.25394>:
          D.25175 = cfg->cbb;
          D.25175 = cfg->cbb;
          D.25175->last_ins = tmp;
          D.25176 = D.25175->last_ins;
          D.25175->code = D.25176;
          <D.25395>:
        }
        <D.25387>:
        goto <D.24147>;
        <D.24153>:
        D.25180 = ins->sreg1;
        D.25181 = (unsigned int) D.25180;
        D.25182 = cfg->vreg_to_inst_len;
        if (D.25181 < D.25182) goto <D.25397>; else goto <D.25398>;
        <D.25397>:
        D.25185 = cfg->vreg_to_inst;
        D.25180 = ins->sreg1;
        D.25186 = (long unsigned int) D.25180;
        D.25187 = D.25186 * 8;
        D.25188 = D.25185 + D.25187;
        iftmp.29 = *D.25188;
        goto <D.25399>;
        <D.25398>:
        iftmp.29 = 0B;
        <D.25399>:
        src_var = iftmp.29;
        if (src_var == 0B) goto <D.25400>; else goto <D.25401>;
        <D.25400>:
        D.25199 = ins->klass;
        D.25200 = D.25199 == 0B;
        D.25201 = (long int) D.25200;
        D.25202 = __builtin_expect (D.25201, 0);
        if (D.25202 != 0) goto <D.25402>; else goto <D.25403>;
        <D.25402>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1193, "ins->klass");
        <D.25403>:
        D.25180 = ins->sreg1;
        D.25199 = ins->klass;
        D.25207 = &D.25199->byval_arg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25207, 329, D.25180);
        <D.25401>:
        {
          struct MonoInst * var;

          D.25180 = ins->sreg1;
          D.25181 = (unsigned int) D.25180;
          D.25182 = cfg->vreg_to_inst_len;
          if (D.25181 < D.25182) goto <D.25405>; else goto <D.25406>;
          <D.25405>:
          D.25185 = cfg->vreg_to_inst;
          D.25180 = ins->sreg1;
          D.25186 = (long unsigned int) D.25180;
          D.25187 = D.25186 * 8;
          D.25188 = D.25185 + D.25187;
          iftmp.30 = *D.25188;
          goto <D.25407>;
          <D.25406>:
          iftmp.30 = 0B;
          <D.25407>:
          var = iftmp.30;
          if (var == 0B) goto <D.25408>; else goto <D.25409>;
          <D.25408>:
          D.25180 = ins->sreg1;
          D.25199 = ins->klass;
          D.25207 = &D.25199->byval_arg;
          var = mono_compile_create_var_for_vreg (cfg, D.25207, 329, D.25180);
          <D.25409>:
          D.25170 = cfg->mempool;
          src = mono_mempool_alloc (D.25170, 80);
          src->data.op[1].const_val = 0;
          D.25213 = src->data.op[1].const_val;
          src->data.op[0].const_val = D.25213;
          src->prev = 0B;
          D.25214 = src->prev;
          src->next = D.25214;
          src->opcode = 314;
          src->flags = 0;
          src->type = 0;
          src->dreg = -1;
          src->sreg3 = -1;
          D.25215 = src->sreg3;
          src->sreg2 = D.25215;
          D.25216 = src->sreg2;
          src->sreg1 = D.25216;
          D.25217 = cfg->ip;
          src->cil_code = D.25217;
          src->data.op[0].p = var;
          D.25410 = var->flags;
          D.25411 = D.25410 | 16;
          var->flags = D.25411;
          src->type = 5;
          D.25412 = var->klass;
          src->klass = D.25412;
          D.25413 = alloc_dreg (cfg, 5);
          D.25414 = (int) D.25413;
          src->dreg = D.25414;
          cfg->has_indirection = 1;
          D.25223 = cfg->gsharedvt;
          D.25224 = D.25223 != 0;
          D.25225 = (long int) D.25224;
          D.25226 = __builtin_expect (D.25225, 0);
          if (D.25226 != 0) goto <D.25415>; else goto <D.25416>;
          <D.25415>:
          D.25417 = var->data.op[1].vtype;
          D.25418 = mini_is_gsharedvt_variable_type (cfg, D.25417);
          if (D.25418 != 0) goto <D.25419>; else goto <D.25420>;
          <D.25419>:
          handle_gsharedvt_ldaddr (cfg);
          <D.25420>:
          <D.25416>:
          if (0 != 0) goto <D.25421>; else goto <D.25422>;
          <D.25421>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.25424 = var->dreg;
            D.25425 = D.25424 + 1;
            D.25426 = (unsigned int) D.25425;
            D.25182 = cfg->vreg_to_inst_len;
            if (D.25426 < D.25182) goto <D.25427>; else goto <D.25428>;
            <D.25427>:
            D.25185 = cfg->vreg_to_inst;
            D.25424 = var->dreg;
            D.25429 = (sizetype) D.25424;
            D.25430 = D.25429 + 1;
            D.25431 = D.25430 * 8;
            D.25432 = D.25185 + D.25431;
            iftmp.31 = *D.25432;
            goto <D.25433>;
            <D.25428>:
            iftmp.31 = 0B;
            <D.25433>:
            var1 = iftmp.31;
            D.25424 = var->dreg;
            D.25435 = D.25424 + 2;
            D.25436 = (unsigned int) D.25435;
            D.25182 = cfg->vreg_to_inst_len;
            if (D.25436 < D.25182) goto <D.25437>; else goto <D.25438>;
            <D.25437>:
            D.25185 = cfg->vreg_to_inst;
            D.25424 = var->dreg;
            D.25429 = (sizetype) D.25424;
            D.25439 = D.25429 + 2;
            D.25440 = D.25439 * 8;
            D.25441 = D.25185 + D.25440;
            iftmp.32 = *D.25441;
            goto <D.25442>;
            <D.25438>:
            iftmp.32 = 0B;
            <D.25442>:
            var2 = iftmp.32;
            D.25443 = var1 == 0B;
            D.25444 = (long int) D.25443;
            D.25445 = __builtin_expect (D.25444, 0);
            if (D.25445 != 0) goto <D.25446>; else goto <D.25447>;
            <D.25446>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1197, "var1");
            <D.25447>:
            D.25448 = var2 == 0B;
            D.25449 = (long int) D.25448;
            D.25450 = __builtin_expect (D.25449, 0);
            if (D.25450 != 0) goto <D.25451>; else goto <D.25452>;
            <D.25451>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1197, "var2");
            <D.25452>:
            D.25453 = var1->flags;
            D.25454 = D.25453 | 16;
            var1->flags = D.25454;
            D.25455 = var2->flags;
            D.25456 = D.25455 | 16;
            var2->flags = D.25456;
          }
          <D.25422>:
        }
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        if (D.25176 != 0B) goto <D.25457>; else goto <D.25458>;
        <D.25457>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        D.25176->next = src;
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        src->prev = D.25176;
        D.25175 = cfg->cbb;
        D.25175->last_ins = src;
        goto <D.25459>;
        <D.25458>:
        D.25175 = cfg->cbb;
        D.25175 = cfg->cbb;
        D.25175->last_ins = src;
        D.25176 = D.25175->last_ins;
        D.25175->code = D.25176;
        <D.25459>:
        D.25460 = alloc_preg (cfg);
        dreg = (int) D.25460;
        D.25170 = cfg->mempool;
        dest = mono_mempool_alloc (D.25170, 80);
        dest->data.op[1].const_val = 0;
        D.25272 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.25272;
        dest->prev = 0B;
        D.25273 = dest->prev;
        dest->next = D.25273;
        dest->opcode = 433;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.25274 = dest->sreg3;
        dest->sreg2 = D.25274;
        D.25275 = dest->sreg2;
        dest->sreg1 = D.25275;
        D.25217 = cfg->ip;
        dest->cil_code = D.25217;
        dest->dreg = dreg;
        D.25191 = ins->dreg;
        dest->sreg1 = D.25191;
        D.25461 = ins->data.op[0].const_val;
        dest->data.op[1].const_val = D.25461;
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        if (D.25176 != 0B) goto <D.25462>; else goto <D.25463>;
        <D.25462>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        D.25176->next = dest;
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        dest->prev = D.25176;
        D.25175 = cfg->cbb;
        D.25175->last_ins = dest;
        goto <D.25464>;
        <D.25463>:
        D.25175 = cfg->cbb;
        D.25175 = cfg->cbb;
        D.25175->last_ins = dest;
        D.25176 = D.25175->last_ins;
        D.25175->code = D.25176;
        <D.25464>:
        D.25210 = src_var->backend.is_pinvoke;
        D.25220 = src_var->klass;
        mini_emit_stobj (cfg, dest, src, D.25220, D.25210);
        goto <D.24147>;
        <D.24157>:
        D.25199 = ins->klass;
        D.25200 = D.25199 == 0B;
        D.25201 = (long int) D.25200;
        D.25202 = __builtin_expect (D.25201, 0);
        if (D.25202 != 0) goto <D.25465>; else goto <D.25466>;
        <D.25465>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1205, "ins->klass");
        <D.25466>:
        D.25191 = ins->dreg;
        D.25192 = (unsigned int) D.25191;
        D.25182 = cfg->vreg_to_inst_len;
        if (D.25192 < D.25182) goto <D.25468>; else goto <D.25469>;
        <D.25468>:
        D.25185 = cfg->vreg_to_inst;
        D.25191 = ins->dreg;
        D.25195 = (long unsigned int) D.25191;
        D.25196 = D.25195 * 8;
        D.25197 = D.25185 + D.25196;
        iftmp.33 = *D.25197;
        goto <D.25470>;
        <D.25469>:
        iftmp.33 = 0B;
        <D.25470>:
        dest_var = iftmp.33;
        if (dest_var == 0B) goto <D.25471>; else goto <D.25472>;
        <D.25471>:
        D.25191 = ins->dreg;
        D.25199 = ins->klass;
        D.25207 = &D.25199->byval_arg;
        dest_var = mono_compile_create_var_for_vreg (cfg, D.25207, 329, D.25191);
        <D.25472>:
        D.25473 = alloc_preg (cfg);
        dreg = (int) D.25473;
        D.25170 = cfg->mempool;
        src = mono_mempool_alloc (D.25170, 80);
        src->data.op[1].const_val = 0;
        D.25213 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.25213;
        src->prev = 0B;
        D.25214 = src->prev;
        src->next = D.25214;
        src->opcode = 433;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.25215 = src->sreg3;
        src->sreg2 = D.25215;
        D.25216 = src->sreg2;
        src->sreg1 = D.25216;
        D.25217 = cfg->ip;
        src->cil_code = D.25217;
        src->dreg = dreg;
        D.25180 = ins->sreg1;
        src->sreg1 = D.25180;
        D.25461 = ins->data.op[0].const_val;
        src->data.op[1].const_val = D.25461;
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        if (D.25176 != 0B) goto <D.25474>; else goto <D.25475>;
        <D.25474>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        D.25176->next = src;
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        src->prev = D.25176;
        D.25175 = cfg->cbb;
        D.25175->last_ins = src;
        goto <D.25476>;
        <D.25475>:
        D.25175 = cfg->cbb;
        D.25175 = cfg->cbb;
        D.25175->last_ins = src;
        D.25176 = D.25175->last_ins;
        D.25175->code = D.25176;
        <D.25476>:
        D.25170 = cfg->mempool;
        dest = mono_mempool_alloc (D.25170, 80);
        dest->data.op[1].const_val = 0;
        D.25272 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.25272;
        dest->prev = 0B;
        D.25273 = dest->prev;
        dest->next = D.25273;
        dest->opcode = 314;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.25274 = dest->sreg3;
        dest->sreg2 = D.25274;
        D.25275 = dest->sreg2;
        dest->sreg1 = D.25275;
        D.25217 = cfg->ip;
        dest->cil_code = D.25217;
        dest->data.op[0].p = dest_var;
        D.25276 = dest_var->flags;
        D.25277 = D.25276 | 16;
        dest_var->flags = D.25277;
        dest->type = 5;
        D.25278 = dest_var->klass;
        dest->klass = D.25278;
        D.25477 = alloc_dreg (cfg, 5);
        D.25478 = (int) D.25477;
        dest->dreg = D.25478;
        cfg->has_indirection = 1;
        D.25223 = cfg->gsharedvt;
        D.25224 = D.25223 != 0;
        D.25225 = (long int) D.25224;
        D.25226 = __builtin_expect (D.25225, 0);
        if (D.25226 != 0) goto <D.25479>; else goto <D.25480>;
        <D.25479>:
        D.25283 = dest_var->data.op[1].vtype;
        D.25481 = mini_is_gsharedvt_variable_type (cfg, D.25283);
        if (D.25481 != 0) goto <D.25482>; else goto <D.25483>;
        <D.25482>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25483>:
        <D.25480>:
        if (0 != 0) goto <D.25484>; else goto <D.25485>;
        <D.25484>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25290 = dest_var->dreg;
          D.25291 = D.25290 + 1;
          D.25292 = (unsigned int) D.25291;
          D.25182 = cfg->vreg_to_inst_len;
          if (D.25292 < D.25182) goto <D.25487>; else goto <D.25488>;
          <D.25487>:
          D.25185 = cfg->vreg_to_inst;
          D.25290 = dest_var->dreg;
          D.25295 = (sizetype) D.25290;
          D.25296 = D.25295 + 1;
          D.25297 = D.25296 * 8;
          D.25298 = D.25185 + D.25297;
          iftmp.34 = *D.25298;
          goto <D.25489>;
          <D.25488>:
          iftmp.34 = 0B;
          <D.25489>:
          var1 = iftmp.34;
          D.25290 = dest_var->dreg;
          D.25301 = D.25290 + 2;
          D.25302 = (unsigned int) D.25301;
          D.25182 = cfg->vreg_to_inst_len;
          if (D.25302 < D.25182) goto <D.25491>; else goto <D.25492>;
          <D.25491>:
          D.25185 = cfg->vreg_to_inst;
          D.25290 = dest_var->dreg;
          D.25295 = (sizetype) D.25290;
          D.25305 = D.25295 + 2;
          D.25306 = D.25305 * 8;
          D.25307 = D.25185 + D.25306;
          iftmp.35 = *D.25307;
          goto <D.25493>;
          <D.25492>:
          iftmp.35 = 0B;
          <D.25493>:
          var2 = iftmp.35;
          D.25494 = var1 == 0B;
          D.25495 = (long int) D.25494;
          D.25496 = __builtin_expect (D.25495, 0);
          if (D.25496 != 0) goto <D.25497>; else goto <D.25498>;
          <D.25497>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1215, "var1");
          <D.25498>:
          D.25499 = var2 == 0B;
          D.25500 = (long int) D.25499;
          D.25501 = __builtin_expect (D.25500, 0);
          if (D.25501 != 0) goto <D.25502>; else goto <D.25503>;
          <D.25502>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1215, "var2");
          <D.25503>:
          D.25504 = var1->flags;
          D.25505 = D.25504 | 16;
          var1->flags = D.25505;
          D.25506 = var2->flags;
          D.25507 = D.25506 | 16;
          var2->flags = D.25507;
        }
        <D.25485>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        if (D.25176 != 0B) goto <D.25508>; else goto <D.25509>;
        <D.25508>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        D.25176->next = dest;
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        dest->prev = D.25176;
        D.25175 = cfg->cbb;
        D.25175->last_ins = dest;
        goto <D.25510>;
        <D.25509>:
        D.25175 = cfg->cbb;
        D.25175 = cfg->cbb;
        D.25175->last_ins = dest;
        D.25176 = D.25175->last_ins;
        D.25175->code = D.25176;
        <D.25510>:
        D.25511 = dest_var->backend.is_pinvoke;
        D.25278 = dest_var->klass;
        mini_emit_stobj (cfg, dest, src, D.25278, D.25511);
        goto <D.24147>;
        <D.24160>:
        D.25199 = ins->klass;
        D.25200 = D.25199 == 0B;
        D.25201 = (long int) D.25200;
        D.25202 = __builtin_expect (D.25201, 0);
        if (D.25202 != 0) goto <D.25512>; else goto <D.25513>;
        <D.25512>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1220, "ins->klass");
        <D.25513>:
        D.25180 = ins->sreg1;
        D.25181 = (unsigned int) D.25180;
        D.25182 = cfg->vreg_to_inst_len;
        if (D.25181 < D.25182) goto <D.25515>; else goto <D.25516>;
        <D.25515>:
        D.25185 = cfg->vreg_to_inst;
        D.25180 = ins->sreg1;
        D.25186 = (long unsigned int) D.25180;
        D.25187 = D.25186 * 8;
        D.25188 = D.25185 + D.25187;
        iftmp.36 = *D.25188;
        goto <D.25517>;
        <D.25516>:
        iftmp.36 = 0B;
        <D.25517>:
        src_var = iftmp.36;
        if (src_var == 0B) goto <D.25518>; else goto <D.25519>;
        <D.25518>:
        D.25180 = ins->sreg1;
        D.25199 = ins->klass;
        D.25207 = &D.25199->byval_arg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25207, 329, D.25180);
        <D.25519>:
        D.25170 = cfg->mempool;
        src = mono_mempool_alloc (D.25170, 80);
        src->data.op[1].const_val = 0;
        D.25213 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.25213;
        src->prev = 0B;
        D.25214 = src->prev;
        src->next = D.25214;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.25215 = src->sreg3;
        src->sreg2 = D.25215;
        D.25216 = src->sreg2;
        src->sreg1 = D.25216;
        D.25217 = cfg->ip;
        src->cil_code = D.25217;
        src->data.op[0].p = src_var;
        D.25218 = src_var->flags;
        D.25219 = D.25218 | 16;
        src_var->flags = D.25219;
        src->type = 5;
        D.25220 = src_var->klass;
        src->klass = D.25220;
        D.25520 = alloc_dreg (cfg, 5);
        D.25521 = (int) D.25520;
        src->dreg = D.25521;
        cfg->has_indirection = 1;
        D.25223 = cfg->gsharedvt;
        D.25224 = D.25223 != 0;
        D.25225 = (long int) D.25224;
        D.25226 = __builtin_expect (D.25225, 0);
        if (D.25226 != 0) goto <D.25522>; else goto <D.25523>;
        <D.25522>:
        D.25229 = src_var->data.op[1].vtype;
        D.25524 = mini_is_gsharedvt_variable_type (cfg, D.25229);
        if (D.25524 != 0) goto <D.25525>; else goto <D.25526>;
        <D.25525>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25526>:
        <D.25523>:
        if (0 != 0) goto <D.25527>; else goto <D.25528>;
        <D.25527>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25236 = src_var->dreg;
          D.25237 = D.25236 + 1;
          D.25238 = (unsigned int) D.25237;
          D.25182 = cfg->vreg_to_inst_len;
          if (D.25238 < D.25182) goto <D.25530>; else goto <D.25531>;
          <D.25530>:
          D.25185 = cfg->vreg_to_inst;
          D.25236 = src_var->dreg;
          D.25241 = (sizetype) D.25236;
          D.25242 = D.25241 + 1;
          D.25243 = D.25242 * 8;
          D.25244 = D.25185 + D.25243;
          iftmp.37 = *D.25244;
          goto <D.25532>;
          <D.25531>:
          iftmp.37 = 0B;
          <D.25532>:
          var1 = iftmp.37;
          D.25236 = src_var->dreg;
          D.25247 = D.25236 + 2;
          D.25248 = (unsigned int) D.25247;
          D.25182 = cfg->vreg_to_inst_len;
          if (D.25248 < D.25182) goto <D.25534>; else goto <D.25535>;
          <D.25534>:
          D.25185 = cfg->vreg_to_inst;
          D.25236 = src_var->dreg;
          D.25241 = (sizetype) D.25236;
          D.25251 = D.25241 + 2;
          D.25252 = D.25251 * 8;
          D.25253 = D.25185 + D.25252;
          iftmp.38 = *D.25253;
          goto <D.25536>;
          <D.25535>:
          iftmp.38 = 0B;
          <D.25536>:
          var2 = iftmp.38;
          D.25537 = var1 == 0B;
          D.25538 = (long int) D.25537;
          D.25539 = __builtin_expect (D.25538, 0);
          if (D.25539 != 0) goto <D.25540>; else goto <D.25541>;
          <D.25540>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1225, "var1");
          <D.25541>:
          D.25542 = var2 == 0B;
          D.25543 = (long int) D.25542;
          D.25544 = __builtin_expect (D.25543, 0);
          if (D.25544 != 0) goto <D.25545>; else goto <D.25546>;
          <D.25545>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1225, "var2");
          <D.25546>:
          D.25547 = var1->flags;
          D.25548 = D.25547 | 16;
          var1->flags = D.25548;
          D.25549 = var2->flags;
          D.25550 = D.25549 | 16;
          var2->flags = D.25550;
        }
        <D.25528>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        if (D.25176 != 0B) goto <D.25551>; else goto <D.25552>;
        <D.25551>:
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        D.25176->next = src;
        D.25175 = cfg->cbb;
        D.25176 = D.25175->last_ins;
        src->prev = D.25176;
        D.25175 = cfg->cbb;
        D.25175->last_ins = src;
        goto <D.25553>;
        <D.25552>:
        D.25175 = cfg->cbb;
        D.25175 = cfg->cbb;
        D.25175->last_ins = src;
        D.25176 = D.25175->last_ins;
        D.25175->code = D.25176;
        <D.25553>:
        mono_arch_emit_outarg_vt (cfg, ins, src);
        restart = 1;
        goto <D.24147>;
        <D.24163>:
        {
          struct MonoCallInst * call;

          call = ins->data.op[1].p;
          D.25555 = call->inst.dreg;
          D.25556 = (unsigned int) D.25555;
          D.25182 = cfg->vreg_to_inst_len;
          if (D.25556 < D.25182) goto <D.25557>; else goto <D.25558>;
          <D.25557>:
          D.25185 = cfg->vreg_to_inst;
          D.25555 = call->inst.dreg;
          D.25559 = (long unsigned int) D.25555;
          D.25560 = D.25559 * 8;
          D.25561 = D.25185 + D.25560;
          iftmp.39 = *D.25561;
          goto <D.25562>;
          <D.25558>:
          iftmp.39 = 0B;
          <D.25562>:
          src_var = iftmp.39;
          if (src_var == 0B) goto <D.25563>; else goto <D.25564>;
          <D.25563>:
          D.25555 = call->inst.dreg;
          D.25565 = call->signature;
          D.25566 = D.25565->ret;
          src_var = mono_compile_create_var_for_vreg (cfg, D.25566, 329, D.25555);
          <D.25564>:
          D.25170 = cfg->mempool;
          src = mono_mempool_alloc (D.25170, 80);
          src->data.op[1].const_val = 0;
          D.25213 = src->data.op[1].const_val;
          src->data.op[0].const_val = D.25213;
          src->prev = 0B;
          D.25214 = src->prev;
          src->next = D.25214;
          src->opcode = 314;
          src->flags = 0;
          src->type = 0;
          src->dreg = -1;
          src->sreg3 = -1;
          D.25215 = src->sreg3;
          src->sreg2 = D.25215;
          D.25216 = src->sreg2;
          src->sreg1 = D.25216;
          D.25217 = cfg->ip;
          src->cil_code = D.25217;
          src->data.op[0].p = src_var;
          D.25218 = src_var->flags;
          D.25219 = D.25218 | 16;
          src_var->flags = D.25219;
          src->type = 5;
          D.25220 = src_var->klass;
          src->klass = D.25220;
          D.25567 = alloc_dreg (cfg, 5);
          D.25568 = (int) D.25567;
          src->dreg = D.25568;
          cfg->has_indirection = 1;
          D.25223 = cfg->gsharedvt;
          D.25224 = D.25223 != 0;
          D.25225 = (long int) D.25224;
          D.25226 = __builtin_expect (D.25225, 0);
          if (D.25226 != 0) goto <D.25569>; else goto <D.25570>;
          <D.25569>:
          D.25229 = src_var->data.op[1].vtype;
          D.25571 = mini_is_gsharedvt_variable_type (cfg, D.25229);
          if (D.25571 != 0) goto <D.25572>; else goto <D.25573>;
          <D.25572>:
          handle_gsharedvt_ldaddr (cfg);
          <D.25573>:
          <D.25570>:
          if (0 != 0) goto <D.25574>; else goto <D.25575>;
          <D.25574>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.25236 = src_var->dreg;
            D.25237 = D.25236 + 1;
            D.25238 = (unsigned int) D.25237;
            D.25182 = cfg->vreg_to_inst_len;
            if (D.25238 < D.25182) goto <D.25577>; else goto <D.25578>;
            <D.25577>:
            D.25185 = cfg->vreg_to_inst;
            D.25236 = src_var->dreg;
            D.25241 = (sizetype) D.25236;
            D.25242 = D.25241 + 1;
            D.25243 = D.25242 * 8;
            D.25244 = D.25185 + D.25243;
            iftmp.40 = *D.25244;
            goto <D.25579>;
            <D.25578>:
            iftmp.40 = 0B;
            <D.25579>:
            var1 = iftmp.40;
            D.25236 = src_var->dreg;
            D.25247 = D.25236 + 2;
            D.25248 = (unsigned int) D.25247;
            D.25182 = cfg->vreg_to_inst_len;
            if (D.25248 < D.25182) goto <D.25581>; else goto <D.25582>;
            <D.25581>:
            D.25185 = cfg->vreg_to_inst;
            D.25236 = src_var->dreg;
            D.25241 = (sizetype) D.25236;
            D.25251 = D.25241 + 2;
            D.25252 = D.25251 * 8;
            D.25253 = D.25185 + D.25252;
            iftmp.41 = *D.25253;
            goto <D.25583>;
            <D.25582>:
            iftmp.41 = 0B;
            <D.25583>:
            var2 = iftmp.41;
            D.25584 = var1 == 0B;
            D.25585 = (long int) D.25584;
            D.25586 = __builtin_expect (D.25585, 0);
            if (D.25586 != 0) goto <D.25587>; else goto <D.25588>;
            <D.25587>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1241, "var1");
            <D.25588>:
            D.25589 = var2 == 0B;
            D.25590 = (long int) D.25589;
            D.25591 = __builtin_expect (D.25590, 0);
            if (D.25591 != 0) goto <D.25592>; else goto <D.25593>;
            <D.25592>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1241, "var2");
            <D.25593>:
            D.25594 = var1->flags;
            D.25595 = D.25594 | 16;
            var1->flags = D.25595;
            D.25596 = var2->flags;
            D.25597 = D.25596 | 16;
            var2->flags = D.25597;
          }
          <D.25575>:
          D.25175 = cfg->cbb;
          D.25176 = D.25175->last_ins;
          if (D.25176 != 0B) goto <D.25598>; else goto <D.25599>;
          <D.25598>:
          D.25175 = cfg->cbb;
          D.25176 = D.25175->last_ins;
          D.25176->next = src;
          D.25175 = cfg->cbb;
          D.25176 = D.25175->last_ins;
          src->prev = D.25176;
          D.25175 = cfg->cbb;
          D.25175->last_ins = src;
          goto <D.25600>;
          <D.25599>:
          D.25175 = cfg->cbb;
          D.25175 = cfg->cbb;
          D.25175->last_ins = src;
          D.25176 = D.25175->last_ins;
          D.25175->code = D.25176;
          <D.25600>:
          D.25191 = ins->dreg;
          src->dreg = D.25191;
          goto <D.24147>;
        }
        <D.24167>:
        <D.24168>:
        <D.24169>:
        {
          struct MonoCallInst * call;
          int size;

          call = ins;
          D.25601 = BIT_FIELD_REF <*call, 8, 1088>;
          D.25602 = D.25601 & 8;
          if (D.25602 != 0) goto <D.25603>; else goto <D.25604>;
          <D.25603>:
          {
            struct MonoCallInst * call2;

            D.25170 = cfg->mempool;
            call2 = mono_mempool_alloc0 (D.25170, 192);
            call2->inst.opcode = 316;
            call2->inst.dreg = -1;
            call2->inst.sreg3 = -1;
            D.25605 = call2->inst.sreg3;
            call2->inst.sreg2 = D.25605;
            D.25606 = call2->inst.sreg2;
            call2->inst.sreg1 = D.25606;
            D.25217 = cfg->ip;
            call2->inst.cil_code = D.25217;
            memcpy (call2, call, 192);
            D.25177 = ins->opcode;
            D.25178 = (int) D.25177;
            switch (D.25178) <default: <D.25607>, case 355: <D.24173>, case 356: <D.24175>, case 357: <D.24176>>
            <D.24173>:
            call2->inst.opcode = 346;
            goto <D.24174>;
            <D.24175>:
            call2->inst.opcode = 347;
            goto <D.24174>;
            <D.24176>:
            call2->inst.opcode = 348;
            goto <D.24174>;
            <D.25607>:
            <D.24174>:
            D.25608 = alloc_preg (cfg);
            D.25609 = (int) D.25608;
            call2->inst.dreg = D.25609;
            D.25175 = cfg->cbb;
            D.25176 = D.25175->last_ins;
            if (D.25176 != 0B) goto <D.25610>; else goto <D.25611>;
            <D.25610>:
            D.25175 = cfg->cbb;
            D.25176 = D.25175->last_ins;
            D.25176->next = call2;
            D.25175 = cfg->cbb;
            D.25176 = D.25175->last_ins;
            MEM[(struct MonoInst *)call2].prev = D.25176;
            D.25175 = cfg->cbb;
            D.25175->last_ins = call2;
            goto <D.25612>;
            <D.25611>:
            D.25175 = cfg->cbb;
            D.25175 = cfg->cbb;
            D.25175->last_ins = call2;
            D.25176 = D.25175->last_ins;
            D.25175->code = D.25176;
            <D.25612>:
            D.25614 = call->inst.dreg;
            D.25615 = (unsigned int) D.25614;
            D.25182 = cfg->vreg_to_inst_len;
            if (D.25615 < D.25182) goto <D.25616>; else goto <D.25617>;
            <D.25616>:
            D.25185 = cfg->vreg_to_inst;
            D.25614 = call->inst.dreg;
            D.25618 = (long unsigned int) D.25614;
            D.25619 = D.25618 * 8;
            D.25620 = D.25185 + D.25619;
            iftmp.42 = *D.25620;
            goto <D.25621>;
            <D.25617>:
            iftmp.42 = 0B;
            <D.25621>:
            dest_var = iftmp.42;
            if (dest_var == 0B) goto <D.25622>; else goto <D.25623>;
            <D.25622>:
            D.25614 = call->inst.dreg;
            D.25624 = call->signature;
            D.25625 = D.25624->ret;
            dest_var = mono_compile_create_var_for_vreg (cfg, D.25625, 329, D.25614);
            <D.25623>:
            D.25170 = cfg->mempool;
            dest = mono_mempool_alloc (D.25170, 80);
            dest->data.op[1].const_val = 0;
            D.25272 = dest->data.op[1].const_val;
            dest->data.op[0].const_val = D.25272;
            dest->prev = 0B;
            D.25273 = dest->prev;
            dest->next = D.25273;
            dest->opcode = 314;
            dest->flags = 0;
            dest->type = 0;
            dest->dreg = -1;
            dest->sreg3 = -1;
            D.25274 = dest->sreg3;
            dest->sreg2 = D.25274;
            D.25275 = dest->sreg2;
            dest->sreg1 = D.25275;
            D.25217 = cfg->ip;
            dest->cil_code = D.25217;
            dest->data.op[0].p = dest_var;
            D.25276 = dest_var->flags;
            D.25277 = D.25276 | 16;
            dest_var->flags = D.25277;
            dest->type = 5;
            D.25278 = dest_var->klass;
            dest->klass = D.25278;
            D.25626 = alloc_dreg (cfg, 5);
            D.25627 = (int) D.25626;
            dest->dreg = D.25627;
            cfg->has_indirection = 1;
            D.25223 = cfg->gsharedvt;
            D.25224 = D.25223 != 0;
            D.25225 = (long int) D.25224;
            D.25226 = __builtin_expect (D.25225, 0);
            if (D.25226 != 0) goto <D.25628>; else goto <D.25629>;
            <D.25628>:
            D.25283 = dest_var->data.op[1].vtype;
            D.25630 = mini_is_gsharedvt_variable_type (cfg, D.25283);
            if (D.25630 != 0) goto <D.25631>; else goto <D.25632>;
            <D.25631>:
            handle_gsharedvt_ldaddr (cfg);
            <D.25632>:
            <D.25629>:
            if (0 != 0) goto <D.25633>; else goto <D.25634>;
            <D.25633>:
            {
              struct MonoInst * var1;
              struct MonoInst * var2;

              D.25290 = dest_var->dreg;
              D.25291 = D.25290 + 1;
              D.25292 = (unsigned int) D.25291;
              D.25182 = cfg->vreg_to_inst_len;
              if (D.25292 < D.25182) goto <D.25636>; else goto <D.25637>;
              <D.25636>:
              D.25185 = cfg->vreg_to_inst;
              D.25290 = dest_var->dreg;
              D.25295 = (sizetype) D.25290;
              D.25296 = D.25295 + 1;
              D.25297 = D.25296 * 8;
              D.25298 = D.25185 + D.25297;
              iftmp.43 = *D.25298;
              goto <D.25638>;
              <D.25637>:
              iftmp.43 = 0B;
              <D.25638>:
              var1 = iftmp.43;
              D.25290 = dest_var->dreg;
              D.25301 = D.25290 + 2;
              D.25302 = (unsigned int) D.25301;
              D.25182 = cfg->vreg_to_inst_len;
              if (D.25302 < D.25182) goto <D.25640>; else goto <D.25641>;
              <D.25640>:
              D.25185 = cfg->vreg_to_inst;
              D.25290 = dest_var->dreg;
              D.25295 = (sizetype) D.25290;
              D.25305 = D.25295 + 2;
              D.25306 = D.25305 * 8;
              D.25307 = D.25185 + D.25306;
              iftmp.44 = *D.25307;
              goto <D.25642>;
              <D.25641>:
              iftmp.44 = 0B;
              <D.25642>:
              var2 = iftmp.44;
              D.25643 = var1 == 0B;
              D.25644 = (long int) D.25643;
              D.25645 = __builtin_expect (D.25644, 0);
              if (D.25645 != 0) goto <D.25646>; else goto <D.25647>;
              <D.25646>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1275, "var1");
              <D.25647>:
              D.25648 = var2 == 0B;
              D.25649 = (long int) D.25648;
              D.25650 = __builtin_expect (D.25649, 0);
              if (D.25650 != 0) goto <D.25651>; else goto <D.25652>;
              <D.25651>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1275, "var2");
              <D.25652>:
              D.25653 = var1->flags;
              D.25654 = D.25653 | 16;
              var1->flags = D.25654;
              D.25655 = var2->flags;
              D.25656 = D.25655 | 16;
              var2->flags = D.25656;
            }
            <D.25634>:
            D.25175 = cfg->cbb;
            D.25176 = D.25175->last_ins;
            if (D.25176 != 0B) goto <D.25657>; else goto <D.25658>;
            <D.25657>:
            D.25175 = cfg->cbb;
            D.25176 = D.25175->last_ins;
            D.25176->next = dest;
            D.25175 = cfg->cbb;
            D.25176 = D.25175->last_ins;
            dest->prev = D.25176;
            D.25175 = cfg->cbb;
            D.25175->last_ins = dest;
            goto <D.25659>;
            <D.25658>:
            D.25175 = cfg->cbb;
            D.25175 = cfg->cbb;
            D.25175->last_ins = dest;
            D.25176 = D.25175->last_ins;
            D.25175->code = D.25176;
            <D.25659>:
            D.25511 = dest_var->backend.is_pinvoke;
            if (D.25511 != 0) goto <D.25660>; else goto <D.25661>;
            <D.25660>:
            D.25283 = dest_var->data.op[1].vtype;
            D.25662 = mono_class_from_mono_type (D.25283);
            size = mono_class_native_size (D.25662, 0B);
            goto <D.25663>;
            <D.25661>:
            D.25283 = dest_var->data.op[1].vtype;
            size = mono_type_size (D.25283, 0B);
            <D.25663>:
            switch (size) <default: <D.24192>, case 1: <D.24179>, case 2: <D.24182>, case 3: <D.24184>, case 4: <D.24185>, case 5: <D.24187>, case 6: <D.24188>, case 7: <D.24189>, case 8: <D.24190>>
            <D.24179>:
            {
              struct MonoInst * inst;

              D.25170 = cfg->mempool;
              inst = mono_mempool_alloc (D.25170, 80);
              inst->data.op[1].const_val = 0;
              D.25664 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25664;
              inst->prev = 0B;
              D.25665 = inst->prev;
              inst->next = D.25665;
              inst->opcode = 375;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25666 = inst->sreg3;
              inst->sreg2 = D.25666;
              D.25667 = inst->sreg2;
              inst->sreg1 = D.25667;
              D.25217 = cfg->ip;
              inst->cil_code = D.25217;
              D.25668 = call2->inst.dreg;
              inst->sreg1 = D.25668;
              D.25669 = dest->dreg;
              inst->dreg = D.25669;
              inst->data.op[0].const_val = 0;
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              if (D.25176 != 0B) goto <D.25670>; else goto <D.25671>;
              <D.25670>:
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              D.25176->next = inst;
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              inst->prev = D.25176;
              D.25175 = cfg->cbb;
              D.25175->last_ins = inst;
              goto <D.25672>;
              <D.25671>:
              D.25175 = cfg->cbb;
              D.25175 = cfg->cbb;
              D.25175->last_ins = inst;
              D.25176 = D.25175->last_ins;
              D.25175->code = D.25176;
              <D.25672>:
            }
            goto <D.24181>;
            <D.24182>:
            {
              struct MonoInst * inst;

              D.25170 = cfg->mempool;
              inst = mono_mempool_alloc (D.25170, 80);
              inst->data.op[1].const_val = 0;
              D.25673 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25673;
              inst->prev = 0B;
              D.25674 = inst->prev;
              inst->next = D.25674;
              inst->opcode = 376;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25675 = inst->sreg3;
              inst->sreg2 = D.25675;
              D.25676 = inst->sreg2;
              inst->sreg1 = D.25676;
              D.25217 = cfg->ip;
              inst->cil_code = D.25217;
              D.25668 = call2->inst.dreg;
              inst->sreg1 = D.25668;
              D.25669 = dest->dreg;
              inst->dreg = D.25669;
              inst->data.op[0].const_val = 0;
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              if (D.25176 != 0B) goto <D.25677>; else goto <D.25678>;
              <D.25677>:
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              D.25176->next = inst;
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              inst->prev = D.25176;
              D.25175 = cfg->cbb;
              D.25175->last_ins = inst;
              goto <D.25679>;
              <D.25678>:
              D.25175 = cfg->cbb;
              D.25175 = cfg->cbb;
              D.25175->last_ins = inst;
              D.25176 = D.25175->last_ins;
              D.25175->code = D.25176;
              <D.25679>:
            }
            goto <D.24181>;
            <D.24184>:
            <D.24185>:
            {
              struct MonoInst * inst;

              D.25170 = cfg->mempool;
              inst = mono_mempool_alloc (D.25170, 80);
              inst->data.op[1].const_val = 0;
              D.25680 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25680;
              inst->prev = 0B;
              D.25681 = inst->prev;
              inst->next = D.25681;
              inst->opcode = 377;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25682 = inst->sreg3;
              inst->sreg2 = D.25682;
              D.25683 = inst->sreg2;
              inst->sreg1 = D.25683;
              D.25217 = cfg->ip;
              inst->cil_code = D.25217;
              D.25668 = call2->inst.dreg;
              inst->sreg1 = D.25668;
              D.25669 = dest->dreg;
              inst->dreg = D.25669;
              inst->data.op[0].const_val = 0;
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              if (D.25176 != 0B) goto <D.25684>; else goto <D.25685>;
              <D.25684>:
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              D.25176->next = inst;
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              inst->prev = D.25176;
              D.25175 = cfg->cbb;
              D.25175->last_ins = inst;
              goto <D.25686>;
              <D.25685>:
              D.25175 = cfg->cbb;
              D.25175 = cfg->cbb;
              D.25175->last_ins = inst;
              D.25176 = D.25175->last_ins;
              D.25175->code = D.25176;
              <D.25686>:
            }
            goto <D.24181>;
            <D.24187>:
            <D.24188>:
            <D.24189>:
            <D.24190>:
            {
              struct MonoInst * inst;

              D.25170 = cfg->mempool;
              inst = mono_mempool_alloc (D.25170, 80);
              inst->data.op[1].const_val = 0;
              D.25687 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25687;
              inst->prev = 0B;
              D.25688 = inst->prev;
              inst->next = D.25688;
              inst->opcode = 378;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25689 = inst->sreg3;
              inst->sreg2 = D.25689;
              D.25690 = inst->sreg2;
              inst->sreg1 = D.25690;
              D.25217 = cfg->ip;
              inst->cil_code = D.25217;
              D.25668 = call2->inst.dreg;
              inst->sreg1 = D.25668;
              D.25669 = dest->dreg;
              inst->dreg = D.25669;
              inst->data.op[0].const_val = 0;
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              if (D.25176 != 0B) goto <D.25691>; else goto <D.25692>;
              <D.25691>:
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              D.25176->next = inst;
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              inst->prev = D.25176;
              D.25175 = cfg->cbb;
              D.25175->last_ins = inst;
              goto <D.25693>;
              <D.25692>:
              D.25175 = cfg->cbb;
              D.25175 = cfg->cbb;
              D.25175->last_ins = inst;
              D.25176 = D.25175->last_ins;
              D.25175->code = D.25176;
              <D.25693>:
            }
            goto <D.24181>;
            <D.24192>:
            {
              struct MonoInst * inst;

              D.25170 = cfg->mempool;
              inst = mono_mempool_alloc (D.25170, 80);
              inst->data.op[1].const_val = 0;
              D.25694 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25694;
              inst->prev = 0B;
              D.25695 = inst->prev;
              inst->next = D.25695;
              inst->opcode = 374;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25696 = inst->sreg3;
              inst->sreg2 = D.25696;
              D.25697 = inst->sreg2;
              inst->sreg1 = D.25697;
              D.25217 = cfg->ip;
              inst->cil_code = D.25217;
              D.25668 = call2->inst.dreg;
              inst->sreg1 = D.25668;
              D.25669 = dest->dreg;
              inst->dreg = D.25669;
              inst->data.op[0].const_val = 0;
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              if (D.25176 != 0B) goto <D.25698>; else goto <D.25699>;
              <D.25698>:
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              D.25176->next = inst;
              D.25175 = cfg->cbb;
              D.25176 = D.25175->last_ins;
              inst->prev = D.25176;
              D.25175 = cfg->cbb;
              D.25175->last_ins = inst;
              goto <D.25700>;
              <D.25699>:
              D.25175 = cfg->cbb;
              D.25175 = cfg->cbb;
              D.25175->last_ins = inst;
              D.25176 = D.25175->last_ins;
              D.25175->code = D.25176;
              <D.25700>:
            }
            goto <D.24181>;
            <D.24181>:
          }
          goto <D.25701>;
          <D.25604>:
          D.25177 = ins->opcode;
          D.25178 = (int) D.25177;
          switch (D.25178) <default: <D.25702>, case 355: <D.24194>, case 356: <D.24196>, case 357: <D.24197>>
          <D.24194>:
          ins->opcode = 358;
          goto <D.24195>;
          <D.24196>:
          ins->opcode = 359;
          goto <D.24195>;
          <D.24197>:
          ins->opcode = 360;
          goto <D.24195>;
          <D.25702>:
          <D.24195>:
          ins->dreg = -1;
          <D.25701>:
          goto <D.24147>;
        }
        <D.24198>:
        goto <D.24147>;
        <D.24147>:
        D.25175 = cfg->cbb;
        D.25703 = D.25175 != first_bb;
        D.25704 = (long int) D.25703;
        D.25705 = __builtin_expect (D.25704, 0);
        if (D.25705 != 0) goto <D.25706>; else goto <D.25707>;
        <D.25706>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1345, "cfg->cbb == first_bb");
        <D.25707>:
        D.25175 = cfg->cbb;
        D.25711 = D.25175->code;
        if (D.25711 != 0B) goto <D.25708>; else goto <D.25712>;
        <D.25712>:
        D.25175 = cfg->cbb;
        if (D.25175 != first_bb) goto <D.25708>; else goto <D.25709>;
        <D.25708>:
        D.25175 = cfg->cbb;
        mono_replace_ins (cfg, bb, ins, &prev, first_bb, D.25175);
        first_bb->last_ins = 0B;
        D.25713 = first_bb->last_ins;
        first_bb->code = D.25713;
        first_bb->out_count = 0;
        D.25714 = first_bb->out_count;
        first_bb->in_count = D.25714;
        cfg->cbb = first_bb;
        goto <D.25710>;
        <D.25709>:
        prev = ins;
        <D.25710>:
        ins = ins->next;
        <D.24200>:
        if (ins != 0B) goto <D.24199>; else goto <D.24201>;
        <D.24201>:
        <D.24203>:
        if (restart != 0) goto <D.24202>; else goto <D.24204>;
        <D.24204>:
        D.25172 = cfg->verbose_level;
        if (D.25172 > 2) goto <D.25715>; else goto <D.25716>;
        <D.25715>:
        mono_print_bb (bb, "AFTER LOWER-VTYPE-OPTS ");
        <D.25716>:
      }
    finally
      {
        prev = {CLOBBER};
      }
  }
  bb = bb->next_bb;
  <D.24206>:
  if (bb != 0B) goto <D.24205>; else goto <D.24207>;
  <D.24207>:
}


memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.25718;
  long unsigned int D.25719;

  D.25719 = __builtin_object_size (__dest, 0);
  D.25718 = __builtin___memcpy_chk (__dest, __src, __len, D.25719);
  return D.25718;
}


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

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


alloc_ireg (struct MonoCompile * cfg)
{
  guint32 D.25723;
  unsigned int D.25724;
  unsigned int D.25725;
  unsigned int D.25726;

  D.25724 = cfg->next_vreg;
  D.25725 = D.25724;
  D.25726 = D.25725 + 1;
  cfg->next_vreg = D.25726;
  D.25723 = D.25725;
  return D.25723;
}


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

  switch (stack_type) <default: <D.22248>, case 1: <D.22241>, case 2: <D.22246>, case 3: <D.22242>, case 4: <D.22245>, case 5: <D.22243>, case 6: <D.22244>, case 7: <D.22247>>
  <D.22241>:
  <D.22242>:
  D.25728 = alloc_ireg (cfg);
  return D.25728;
  <D.22243>:
  D.25728 = alloc_ireg_mp (cfg);
  return D.25728;
  <D.22244>:
  D.25728 = alloc_ireg_ref (cfg);
  return D.25728;
  <D.22245>:
  D.25728 = alloc_freg (cfg);
  return D.25728;
  <D.22246>:
  D.25728 = alloc_lreg (cfg);
  return D.25728;
  <D.22247>:
  D.25728 = alloc_ireg (cfg);
  return D.25728;
  <D.22248>:
  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.25728 = 4294967295;
  return D.25728;
}


alloc_ireg_mp (struct MonoCompile * cfg)
{
  unsigned int D.25730;
  unsigned char D.25731;
  unsigned char D.25732;
  guint32 D.25735;
  int vreg;

  D.25730 = alloc_ireg (cfg);
  vreg = (int) D.25730;
  D.25731 = BIT_FIELD_REF <*cfg, 8, 5632>;
  D.25732 = D.25731 & 128;
  if (D.25732 != 0) goto <D.25733>; else goto <D.25734>;
  <D.25733>:
  mono_mark_vreg_as_mp (cfg, vreg);
  <D.25734>:
  D.25735 = (guint32) vreg;
  return D.25735;
}


alloc_ireg_ref (struct MonoCompile * cfg)
{
  unsigned int D.25737;
  unsigned char D.25738;
  unsigned char D.25739;
  guint32 D.25742;
  int vreg;

  D.25737 = alloc_ireg (cfg);
  vreg = (int) D.25737;
  D.25738 = BIT_FIELD_REF <*cfg, 8, 5632>;
  D.25739 = D.25738 & 128;
  if (D.25739 != 0) goto <D.25740>; else goto <D.25741>;
  <D.25740>:
  mono_mark_vreg_as_ref (cfg, vreg);
  <D.25741>:
  D.25742 = (guint32) vreg;
  return D.25742;
}


alloc_freg (struct MonoCompile * cfg)
{
  int D.25744;
  guint32 D.25747;
  unsigned int D.25748;
  unsigned int D.25749;
  unsigned int D.25750;

  D.25744 = mono_arch_is_soft_float ();
  if (D.25744 != 0) goto <D.25745>; else goto <D.25746>;
  <D.25745>:
  D.25747 = alloc_lreg (cfg);
  return D.25747;
  <D.25746>:
  D.25748 = cfg->next_vreg;
  D.25749 = D.25748;
  D.25750 = D.25749 + 1;
  cfg->next_vreg = D.25750;
  D.25747 = D.25749;
  return D.25747;
}


mono_arch_is_soft_float ()
{
  gboolean D.25752;

  D.25752 = 0;
  return D.25752;
}


alloc_lreg (struct MonoCompile * cfg)
{
  guint32 D.25754;
  unsigned int D.25755;
  unsigned int D.25756;
  unsigned int D.25757;

  D.25755 = cfg->next_vreg;
  D.25756 = D.25755;
  D.25757 = D.25756 + 1;
  cfg->next_vreg = D.25757;
  D.25754 = D.25756;
  return D.25754;
}


handle_gsharedvt_ldaddr (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.25759;
  long int D.25760;
  struct MonoInst * D.25761;
  int D.25762;
  int D.25763;
  const unsigned char * D.25764;
  struct MonoInst * D.25765;
  int D.25766;
  struct MonoBasicBlock * D.25767;
  struct MonoInst * D.25768;
  struct MonoInst * D.25772;
  int D.25773;
  struct MonoInst * use;

  D.25759 = cfg->mempool;
  use = mono_mempool_alloc (D.25759, 80);
  use->data.op[1].const_val = 0;
  D.25760 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.25760;
  use->prev = 0B;
  D.25761 = use->prev;
  use->next = D.25761;
  use->opcode = 800;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.25762 = use->sreg3;
  use->sreg2 = D.25762;
  D.25763 = use->sreg2;
  use->sreg1 = D.25763;
  D.25764 = cfg->ip;
  use->cil_code = D.25764;
  D.25765 = cfg->gsharedvt_info_var;
  D.25766 = D.25765->dreg;
  use->sreg1 = D.25766;
  D.25767 = cfg->cbb;
  D.25768 = D.25767->last_ins;
  if (D.25768 != 0B) goto <D.25769>; else goto <D.25770>;
  <D.25769>:
  D.25767 = cfg->cbb;
  D.25768 = D.25767->last_ins;
  D.25768->next = use;
  D.25767 = cfg->cbb;
  D.25768 = D.25767->last_ins;
  use->prev = D.25768;
  D.25767 = cfg->cbb;
  D.25767->last_ins = use;
  goto <D.25771>;
  <D.25770>:
  D.25767 = cfg->cbb;
  D.25767 = cfg->cbb;
  D.25767->last_ins = use;
  D.25768 = D.25767->last_ins;
  D.25767->code = D.25768;
  <D.25771>:
  D.25759 = cfg->mempool;
  use = mono_mempool_alloc (D.25759, 80);
  use->data.op[1].const_val = 0;
  D.25760 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.25760;
  use->prev = 0B;
  D.25761 = use->prev;
  use->next = D.25761;
  use->opcode = 800;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.25762 = use->sreg3;
  use->sreg2 = D.25762;
  D.25763 = use->sreg2;
  use->sreg1 = D.25763;
  D.25764 = cfg->ip;
  use->cil_code = D.25764;
  D.25772 = cfg->gsharedvt_locals_var;
  D.25773 = D.25772->dreg;
  use->sreg1 = D.25773;
  D.25767 = cfg->cbb;
  D.25768 = D.25767->last_ins;
  if (D.25768 != 0B) goto <D.25774>; else goto <D.25775>;
  <D.25774>:
  D.25767 = cfg->cbb;
  D.25768 = D.25767->last_ins;
  D.25768->next = use;
  D.25767 = cfg->cbb;
  D.25768 = D.25767->last_ins;
  use->prev = D.25768;
  D.25767 = cfg->cbb;
  D.25767->last_ins = use;
  goto <D.25776>;
  <D.25775>:
  D.25767 = cfg->cbb;
  D.25767 = cfg->cbb;
  D.25767->last_ins = use;
  D.25768 = D.25767->last_ins;
  D.25767->code = D.25768;
  <D.25776>:
}


mono_decompose_vtype_opts_llvm (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.25777;
  void * D.25778;
  unsigned int D.25779;
  struct MonoBasicBlock * D.25782;
  struct MonoInst * D.25783;
  short unsigned int D.25784;
  int D.25785;
  struct MonoInst * iftmp.45;
  int D.25787;
  unsigned int D.25788;
  unsigned int D.25789;
  struct MonoInst * * D.25792;
  long unsigned int D.25793;
  long unsigned int D.25794;
  struct MonoInst * * D.25795;
  struct MonoClass * D.25799;
  _Bool D.25800;
  long int D.25801;
  long int D.25802;
  struct MonoType * D.25805;
  struct MonoInst * iftmp.46;
  long int D.25812;
  struct MonoInst * D.25813;
  int D.25814;
  int D.25815;
  const unsigned char * D.25816;
  unsigned char D.25817;
  unsigned char D.25818;
  struct MonoClass * D.25819;
  unsigned int D.25820;
  int D.25821;
  int D.25822;
  _Bool D.25823;
  long int D.25824;
  long int D.25825;
  struct MonoType * D.25828;
  int D.25829;
  struct MonoInst * iftmp.47;
  int D.25835;
  int D.25836;
  unsigned int D.25837;
  sizetype D.25840;
  sizetype D.25841;
  sizetype D.25842;
  struct MonoInst * * D.25843;
  struct MonoInst * iftmp.48;
  int D.25846;
  unsigned int D.25847;
  sizetype D.25850;
  sizetype D.25851;
  struct MonoInst * * D.25852;
  _Bool D.25854;
  long int D.25855;
  long int D.25856;
  _Bool D.25859;
  long int D.25860;
  long int D.25861;
  unsigned char D.25864;
  unsigned char D.25865;
  unsigned char D.25866;
  unsigned char D.25867;
  unsigned int D.25871;
  long int D.25872;
  struct MonoInst * D.25873;
  int D.25874;
  int D.25875;
  int D.25876;
  long int D.25877;
  int D.25881;
  struct MonoClass * D.25882;
  _Bool D.25883;
  long int D.25884;
  long int D.25885;
  struct MonoInst * D.25891;
  struct MonoInst * D.25893;
  short int D.25894;
  struct MonoBasicBlock * bb;
  struct MonoBasicBlock * first_bb;

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

    try
      {
        prev = 0B;
        D.25779 = cfg->verbose_level;
        if (D.25779 > 2) goto <D.25780>; else goto <D.25781>;
        <D.25780>:
        mono_print_bb (bb, "BEFORE LOWER-VTYPE-OPTS(LLVM) ");
        <D.25781>:
        D.25782 = cfg->cbb;
        D.25782 = cfg->cbb;
        D.25782->last_ins = 0B;
        D.25783 = D.25782->last_ins;
        D.25782->code = D.25783;
        restart = 1;
        goto <D.24230>;
        <D.24229>:
        restart = 0;
        ins = bb->code;
        goto <D.24227>;
        <D.24226>:
        D.25784 = ins->opcode;
        D.25785 = (int) D.25784;
        switch (D.25785) <default: <D.24225>, case 390: <D.24220>>
        <D.24220>:
        D.25787 = ins->sreg1;
        D.25788 = (unsigned int) D.25787;
        D.25789 = cfg->vreg_to_inst_len;
        if (D.25788 < D.25789) goto <D.25790>; else goto <D.25791>;
        <D.25790>:
        D.25792 = cfg->vreg_to_inst;
        D.25787 = ins->sreg1;
        D.25793 = (long unsigned int) D.25787;
        D.25794 = D.25793 * 8;
        D.25795 = D.25792 + D.25794;
        iftmp.45 = *D.25795;
        goto <D.25796>;
        <D.25791>:
        iftmp.45 = 0B;
        <D.25796>:
        src_var = iftmp.45;
        if (src_var == 0B) goto <D.25797>; else goto <D.25798>;
        <D.25797>:
        D.25799 = ins->klass;
        D.25800 = D.25799 == 0B;
        D.25801 = (long int) D.25800;
        D.25802 = __builtin_expect (D.25801, 0);
        if (D.25802 != 0) goto <D.25803>; else goto <D.25804>;
        <D.25803>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1395, "ins->klass");
        <D.25804>:
        D.25787 = ins->sreg1;
        D.25799 = ins->klass;
        D.25805 = &D.25799->byval_arg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25805, 329, D.25787);
        <D.25798>:
        {
          struct MonoInst * var;

          D.25787 = ins->sreg1;
          D.25788 = (unsigned int) D.25787;
          D.25789 = cfg->vreg_to_inst_len;
          if (D.25788 < D.25789) goto <D.25807>; else goto <D.25808>;
          <D.25807>:
          D.25792 = cfg->vreg_to_inst;
          D.25787 = ins->sreg1;
          D.25793 = (long unsigned int) D.25787;
          D.25794 = D.25793 * 8;
          D.25795 = D.25792 + D.25794;
          iftmp.46 = *D.25795;
          goto <D.25809>;
          <D.25808>:
          iftmp.46 = 0B;
          <D.25809>:
          var = iftmp.46;
          if (var == 0B) goto <D.25810>; else goto <D.25811>;
          <D.25810>:
          D.25787 = ins->sreg1;
          D.25799 = ins->klass;
          D.25805 = &D.25799->byval_arg;
          var = mono_compile_create_var_for_vreg (cfg, D.25805, 329, D.25787);
          <D.25811>:
          D.25777 = cfg->mempool;
          src = mono_mempool_alloc (D.25777, 80);
          src->data.op[1].const_val = 0;
          D.25812 = src->data.op[1].const_val;
          src->data.op[0].const_val = D.25812;
          src->prev = 0B;
          D.25813 = src->prev;
          src->next = D.25813;
          src->opcode = 314;
          src->flags = 0;
          src->type = 0;
          src->dreg = -1;
          src->sreg3 = -1;
          D.25814 = src->sreg3;
          src->sreg2 = D.25814;
          D.25815 = src->sreg2;
          src->sreg1 = D.25815;
          D.25816 = cfg->ip;
          src->cil_code = D.25816;
          src->data.op[0].p = var;
          D.25817 = var->flags;
          D.25818 = D.25817 | 16;
          var->flags = D.25818;
          src->type = 5;
          D.25819 = var->klass;
          src->klass = D.25819;
          D.25820 = alloc_dreg (cfg, 5);
          D.25821 = (int) D.25820;
          src->dreg = D.25821;
          cfg->has_indirection = 1;
          D.25822 = cfg->gsharedvt;
          D.25823 = D.25822 != 0;
          D.25824 = (long int) D.25823;
          D.25825 = __builtin_expect (D.25824, 0);
          if (D.25825 != 0) goto <D.25826>; else goto <D.25827>;
          <D.25826>:
          D.25828 = var->data.op[1].vtype;
          D.25829 = mini_is_gsharedvt_variable_type (cfg, D.25828);
          if (D.25829 != 0) goto <D.25830>; else goto <D.25831>;
          <D.25830>:
          handle_gsharedvt_ldaddr (cfg);
          <D.25831>:
          <D.25827>:
          if (0 != 0) goto <D.25832>; else goto <D.25833>;
          <D.25832>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.25835 = var->dreg;
            D.25836 = D.25835 + 1;
            D.25837 = (unsigned int) D.25836;
            D.25789 = cfg->vreg_to_inst_len;
            if (D.25837 < D.25789) goto <D.25838>; else goto <D.25839>;
            <D.25838>:
            D.25792 = cfg->vreg_to_inst;
            D.25835 = var->dreg;
            D.25840 = (sizetype) D.25835;
            D.25841 = D.25840 + 1;
            D.25842 = D.25841 * 8;
            D.25843 = D.25792 + D.25842;
            iftmp.47 = *D.25843;
            goto <D.25844>;
            <D.25839>:
            iftmp.47 = 0B;
            <D.25844>:
            var1 = iftmp.47;
            D.25835 = var->dreg;
            D.25846 = D.25835 + 2;
            D.25847 = (unsigned int) D.25846;
            D.25789 = cfg->vreg_to_inst_len;
            if (D.25847 < D.25789) goto <D.25848>; else goto <D.25849>;
            <D.25848>:
            D.25792 = cfg->vreg_to_inst;
            D.25835 = var->dreg;
            D.25840 = (sizetype) D.25835;
            D.25850 = D.25840 + 2;
            D.25851 = D.25850 * 8;
            D.25852 = D.25792 + D.25851;
            iftmp.48 = *D.25852;
            goto <D.25853>;
            <D.25849>:
            iftmp.48 = 0B;
            <D.25853>:
            var2 = iftmp.48;
            D.25854 = var1 == 0B;
            D.25855 = (long int) D.25854;
            D.25856 = __builtin_expect (D.25855, 0);
            if (D.25856 != 0) goto <D.25857>; else goto <D.25858>;
            <D.25857>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1399, "var1");
            <D.25858>:
            D.25859 = var2 == 0B;
            D.25860 = (long int) D.25859;
            D.25861 = __builtin_expect (D.25860, 0);
            if (D.25861 != 0) goto <D.25862>; else goto <D.25863>;
            <D.25862>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1399, "var2");
            <D.25863>:
            D.25864 = var1->flags;
            D.25865 = D.25864 | 16;
            var1->flags = D.25865;
            D.25866 = var2->flags;
            D.25867 = D.25866 | 16;
            var2->flags = D.25867;
          }
          <D.25833>:
        }
        D.25782 = cfg->cbb;
        D.25783 = D.25782->last_ins;
        if (D.25783 != 0B) goto <D.25868>; else goto <D.25869>;
        <D.25868>:
        D.25782 = cfg->cbb;
        D.25783 = D.25782->last_ins;
        D.25783->next = src;
        D.25782 = cfg->cbb;
        D.25783 = D.25782->last_ins;
        src->prev = D.25783;
        D.25782 = cfg->cbb;
        D.25782->last_ins = src;
        goto <D.25870>;
        <D.25869>:
        D.25782 = cfg->cbb;
        D.25782 = cfg->cbb;
        D.25782->last_ins = src;
        D.25783 = D.25782->last_ins;
        D.25782->code = D.25783;
        <D.25870>:
        D.25871 = alloc_preg (cfg);
        dreg = (int) D.25871;
        D.25777 = cfg->mempool;
        dest = mono_mempool_alloc (D.25777, 80);
        dest->data.op[1].const_val = 0;
        D.25872 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.25872;
        dest->prev = 0B;
        D.25873 = dest->prev;
        dest->next = D.25873;
        dest->opcode = 433;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.25874 = dest->sreg3;
        dest->sreg2 = D.25874;
        D.25875 = dest->sreg2;
        dest->sreg1 = D.25875;
        D.25816 = cfg->ip;
        dest->cil_code = D.25816;
        dest->dreg = dreg;
        D.25876 = ins->dreg;
        dest->sreg1 = D.25876;
        D.25877 = ins->data.op[0].const_val;
        dest->data.op[1].const_val = D.25877;
        D.25782 = cfg->cbb;
        D.25783 = D.25782->last_ins;
        if (D.25783 != 0B) goto <D.25878>; else goto <D.25879>;
        <D.25878>:
        D.25782 = cfg->cbb;
        D.25783 = D.25782->last_ins;
        D.25783->next = dest;
        D.25782 = cfg->cbb;
        D.25783 = D.25782->last_ins;
        dest->prev = D.25783;
        D.25782 = cfg->cbb;
        D.25782->last_ins = dest;
        goto <D.25880>;
        <D.25879>:
        D.25782 = cfg->cbb;
        D.25782 = cfg->cbb;
        D.25782->last_ins = dest;
        D.25783 = D.25782->last_ins;
        D.25782->code = D.25783;
        <D.25880>:
        D.25881 = src_var->backend.is_pinvoke;
        D.25882 = src_var->klass;
        mini_emit_stobj (cfg, dest, src, D.25882, D.25881);
        goto <D.24224>;
        <D.24225>:
        goto <D.24224>;
        <D.24224>:
        D.25782 = cfg->cbb;
        D.25883 = D.25782 != first_bb;
        D.25884 = (long int) D.25883;
        D.25885 = __builtin_expect (D.25884, 0);
        if (D.25885 != 0) goto <D.25886>; else goto <D.25887>;
        <D.25886>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1410, "cfg->cbb == first_bb");
        <D.25887>:
        D.25782 = cfg->cbb;
        D.25891 = D.25782->code;
        if (D.25891 != 0B) goto <D.25888>; else goto <D.25892>;
        <D.25892>:
        D.25782 = cfg->cbb;
        if (D.25782 != first_bb) goto <D.25888>; else goto <D.25889>;
        <D.25888>:
        D.25782 = cfg->cbb;
        mono_replace_ins (cfg, bb, ins, &prev, first_bb, D.25782);
        first_bb->last_ins = 0B;
        D.25893 = first_bb->last_ins;
        first_bb->code = D.25893;
        first_bb->out_count = 0;
        D.25894 = first_bb->out_count;
        first_bb->in_count = D.25894;
        cfg->cbb = first_bb;
        goto <D.25890>;
        <D.25889>:
        prev = ins;
        <D.25890>:
        ins = ins->next;
        <D.24227>:
        if (ins != 0B) goto <D.24226>; else goto <D.24228>;
        <D.24228>:
        <D.24230>:
        if (restart != 0) goto <D.24229>; else goto <D.24231>;
        <D.24231>:
        D.25779 = cfg->verbose_level;
        if (D.25779 > 2) goto <D.25895>; else goto <D.25896>;
        <D.25895>:
        mono_print_bb (bb, "AFTER LOWER-VTYPE-OPTS(LLVM) ");
        <D.25896>:
      }
    finally
      {
        prev = {CLOBBER};
      }
  }
  bb = bb->next_bb;
  <D.24233>:
  if (bb != 0B) goto <D.24232>; else goto <D.24234>;
  <D.24234>:
}


mono_decompose_array_access_opts (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.25898;
  void * D.25899;
  unsigned char D.25900;
  unsigned char D.25901;
  unsigned int D.25904;
  struct MonoBasicBlock * D.25907;
  struct MonoInst * D.25908;
  short unsigned int D.25909;
  int D.25910;
  unsigned char D.25911;
  unsigned char D.25912;
  int D.25913;
  unsigned char D.25916;
  unsigned char D.25917;
  long int D.25920;
  struct MonoInst * D.25921;
  int D.25922;
  int D.25923;
  const unsigned char * D.25924;
  int D.25925;
  long int D.25929;
  struct MonoInst * D.25930;
  int D.25931;
  int D.25932;
  long int D.25937;
  struct MonoInst * D.25938;
  int D.25939;
  int D.25940;
  int D.25941;
  unsigned char D.25942;
  long int D.25948;
  struct MonoInst * D.25949;
  int D.25950;
  int D.25951;
  long int D.25955;
  struct MonoInst * D.25956;
  int D.25957;
  int D.25958;
  unsigned int D.25965;
  int D.25966;
  int D.25967;
  int D.25970;
  long int D.25975;
  struct MonoInst * D.25976;
  int D.25977;
  int D.25978;
  long int D.25982;
  struct MonoInst * D.25983;
  int D.25984;
  int D.25985;
  long int D.25990;
  struct MonoInst * D.25991;
  int D.25992;
  int D.25993;
  long int D.25994;
  unsigned char D.25995;
  int D.26000;
  long int D.26005;
  struct MonoInst * D.26006;
  int D.26007;
  int D.26008;
  long int D.26012;
  struct MonoInst * D.26013;
  int D.26014;
  int D.26015;
  long int D.26020;
  struct MonoInst * D.26021;
  int D.26022;
  int D.26023;
  unsigned char D.26024;
  long int D.26028;
  struct MonoInst * D.26029;
  int D.26030;
  int D.26031;
  int D.26032;
  long int D.26036;
  struct MonoInst * D.26037;
  int D.26038;
  int D.26039;
  long int D.26044;
  struct MonoInst * D.26045;
  int D.26046;
  int D.26047;
  long int D.26051;
  struct MonoInst * D.26052;
  int D.26053;
  int D.26054;
  unsigned int D.26058;
  unsigned int D.26059;
  unsigned char D.26066;
  unsigned char D.26067;
  void * D.26068;
  struct MonoInst * D.26069;
  long int D.26070;
  struct MonoInst * D.26071;
  int D.26072;
  int D.26073;
  struct MonoInst * * D.26074;
  long int D.26075;
  long unsigned int D.26076;
  long unsigned int D.26077;
  struct MonoInst * * D.26078;
  struct MonoInst * D.26079;
  struct MonoType * D.26080;
  unsigned int D.26081;
  short unsigned int D.26082;
  struct MonoClass * D.26083;
  int D.26084;
  unsigned char D.26085;
  <unnamed type> D.26086;
  unsigned int D.26087;
  int D.26088;
  short unsigned int D.26089;
  struct MonoClass * D.26092;
  void * D.26093;
  struct MonoDomain * D.26094;
  unsigned int D.26095;
  int D.26096;
  void * D.26100;
  struct MonoInst * D.26101;
  long int D.26102;
  struct MonoInst * D.26103;
  guint16 iftmp.49;
  int D.26108;
  int D.26109;
  struct MonoClass * D.26110;
  unsigned int D.26111;
  int D.26112;
  void * D.26116;
  struct MonoInst * D.26117;
  long int D.26118;
  struct MonoInst * D.26119;
  int D.26120;
  int D.26121;
  _Bool D.26123;
  long int D.26124;
  long int D.26125;
  void * D.26128;
  guint16 iftmp.50;
  void * iftmp.51;
  unsigned int D.26137;
  int D.26138;
  void * D.26142;
  int D.26146;
  long int D.26151;
  struct MonoInst * D.26152;
  int D.26153;
  int D.26154;
  long int D.26158;
  struct MonoInst * D.26159;
  int D.26160;
  int D.26161;
  long int D.26166;
  struct MonoInst * D.26167;
  int D.26168;
  int D.26169;
  unsigned char D.26170;
  _Bool D.26174;
  long int D.26175;
  long int D.26176;
  struct MonoInst * D.26182;
  struct MonoInst * D.26184;
  short int D.26185;
  struct MonoBasicBlock * bb;
  struct MonoBasicBlock * first_bb;

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

    try
      {
        prev = 0B;
        D.25900 = BIT_FIELD_REF <*bb, 8, 1488>;
        D.25901 = D.25900 & 4;
        if (D.25901 == 0) goto <D.25902>; else goto <D.25903>;
        <D.25902>:
        // predicted unlikely by continue predictor.
        goto <D.24248>;
        <D.25903>:
        D.25904 = cfg->verbose_level;
        if (D.25904 > 3) goto <D.25905>; else goto <D.25906>;
        <D.25905>:
        mono_print_bb (bb, "BEFORE DECOMPOSE-ARRAY-ACCESS-OPTS ");
        <D.25906>:
        D.25907 = cfg->cbb;
        D.25907 = cfg->cbb;
        D.25907->last_ins = 0B;
        D.25908 = D.25907->last_ins;
        D.25907->code = D.25908;
        restart = 1;
        goto <D.24285>;
        <D.24284>:
        restart = 0;
        ins = bb->code;
        goto <D.24282>;
        <D.24281>:
        D.25909 = ins->opcode;
        D.25910 = (int) D.25909;
        switch (D.25910) <default: <D.24280>, case 785: <D.24275>, case 786: <D.24270>, case 787: <D.24249>, case 788: <D.24254>>
        <D.24249>:
        {
          int __ins_flags;

          D.25911 = ins->flags;
          D.25912 = D.25911 | 64;
          __ins_flags = (int) D.25912;
          D.25913 = __ins_flags & 32;
          if (D.25913 != 0) goto <D.25914>; else goto <D.25915>;
          <D.25914>:
          D.25916 = BIT_FIELD_REF <*cfg, 8, 5632>;
          D.25917 = D.25916 & 64;
          if (D.25917 != 0) goto <D.25918>; else goto <D.25919>;
          <D.25918>:
          {
            struct MonoInst * inst;

            D.25898 = cfg->mempool;
            inst = mono_mempool_alloc (D.25898, 80);
            inst->data.op[1].const_val = 0;
            D.25920 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.25920;
            inst->prev = 0B;
            D.25921 = inst->prev;
            inst->next = D.25921;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.25922 = inst->sreg3;
            inst->sreg2 = D.25922;
            D.25923 = inst->sreg2;
            inst->sreg1 = D.25923;
            D.25924 = cfg->ip;
            inst->cil_code = D.25924;
            inst->dreg = -1;
            D.25925 = ins->sreg1;
            inst->sreg1 = D.25925;
            inst->data.op[1].const_val = 0;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            if (D.25908 != 0B) goto <D.25926>; else goto <D.25927>;
            <D.25926>:
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            D.25908->next = inst;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            inst->prev = D.25908;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            goto <D.25928>;
            <D.25927>:
            D.25907 = cfg->cbb;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            D.25908 = D.25907->last_ins;
            D.25907->code = D.25908;
            <D.25928>:
          }
          {
            struct MonoInst * inst;

            D.25898 = cfg->mempool;
            inst = mono_mempool_alloc (D.25898, 80);
            inst->data.op[1].const_val = 0;
            D.25929 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.25929;
            inst->prev = 0B;
            D.25930 = inst->prev;
            inst->next = D.25930;
            inst->opcode = 455;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.25931 = inst->sreg3;
            inst->sreg2 = D.25931;
            D.25932 = inst->sreg2;
            inst->sreg1 = D.25932;
            D.25924 = cfg->ip;
            inst->cil_code = D.25924;
            inst->data.op[1].p = "NullReferenceException";
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            if (D.25908 != 0B) goto <D.25933>; else goto <D.25934>;
            <D.25933>:
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            D.25908->next = inst;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            inst->prev = D.25908;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            goto <D.25935>;
            <D.25934>:
            D.25907 = cfg->cbb;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            D.25908 = D.25907->last_ins;
            D.25907->code = D.25908;
            <D.25935>:
          }
          goto <D.25936>;
          <D.25919>:
          <D.25936>:
          <D.25915>:
          D.25898 = cfg->mempool;
          dest = mono_mempool_alloc (D.25898, 80);
          dest->data.op[1].const_val = 0;
          D.25937 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.25937;
          dest->prev = 0B;
          D.25938 = dest->prev;
          dest->next = D.25938;
          dest->opcode = 396;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.25939 = dest->sreg3;
          dest->sreg2 = D.25939;
          D.25940 = dest->sreg2;
          dest->sreg1 = D.25940;
          D.25924 = cfg->ip;
          dest->cil_code = D.25924;
          D.25941 = ins->dreg;
          dest->dreg = D.25941;
          D.25925 = ins->sreg1;
          dest->sreg1 = D.25925;
          dest->data.op[0].const_val = 24;
          dest->type = 1;
          D.25942 = (unsigned char) __ins_flags;
          dest->flags = D.25942;
        }
        D.25907 = cfg->cbb;
        D.25908 = D.25907->last_ins;
        if (D.25908 != 0B) goto <D.25943>; else goto <D.25944>;
        <D.25943>:
        D.25907 = cfg->cbb;
        D.25908 = D.25907->last_ins;
        D.25908->next = dest;
        D.25907 = cfg->cbb;
        D.25908 = D.25907->last_ins;
        dest->prev = D.25908;
        D.25907 = cfg->cbb;
        D.25907->last_ins = dest;
        goto <D.25945>;
        <D.25944>:
        D.25907 = cfg->cbb;
        D.25907 = cfg->cbb;
        D.25907->last_ins = dest;
        D.25908 = D.25907->last_ins;
        D.25907->code = D.25908;
        <D.25945>:
        goto <D.24253>;
        <D.24254>:
        D.25916 = BIT_FIELD_REF <*cfg, 8, 5632>;
        D.25917 = D.25916 & 64;
        if (D.25917 != 0) goto <D.25946>; else goto <D.25947>;
        <D.25946>:
        {
          struct MonoInst * inst;

          D.25898 = cfg->mempool;
          inst = mono_mempool_alloc (D.25898, 80);
          inst->data.op[1].const_val = 0;
          D.25948 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.25948;
          inst->prev = 0B;
          D.25949 = inst->prev;
          inst->next = D.25949;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.25950 = inst->sreg3;
          inst->sreg2 = D.25950;
          D.25951 = inst->sreg2;
          inst->sreg1 = D.25951;
          D.25924 = cfg->ip;
          inst->cil_code = D.25924;
          inst->dreg = -1;
          D.25925 = ins->sreg1;
          inst->sreg1 = D.25925;
          inst->data.op[1].const_val = 0;
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          if (D.25908 != 0B) goto <D.25952>; else goto <D.25953>;
          <D.25952>:
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          D.25908->next = inst;
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          inst->prev = D.25908;
          D.25907 = cfg->cbb;
          D.25907->last_ins = inst;
          goto <D.25954>;
          <D.25953>:
          D.25907 = cfg->cbb;
          D.25907 = cfg->cbb;
          D.25907->last_ins = inst;
          D.25908 = D.25907->last_ins;
          D.25907->code = D.25908;
          <D.25954>:
        }
        {
          struct MonoInst * inst;

          D.25898 = cfg->mempool;
          inst = mono_mempool_alloc (D.25898, 80);
          inst->data.op[1].const_val = 0;
          D.25955 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.25955;
          inst->prev = 0B;
          D.25956 = inst->prev;
          inst->next = D.25956;
          inst->opcode = 455;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.25957 = inst->sreg3;
          inst->sreg2 = D.25957;
          D.25958 = inst->sreg2;
          inst->sreg1 = D.25958;
          D.25924 = cfg->ip;
          inst->cil_code = D.25924;
          inst->data.op[1].p = "NullReferenceException";
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          if (D.25908 != 0B) goto <D.25959>; else goto <D.25960>;
          <D.25959>:
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          D.25908->next = inst;
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          inst->prev = D.25908;
          D.25907 = cfg->cbb;
          D.25907->last_ins = inst;
          goto <D.25961>;
          <D.25960>:
          D.25907 = cfg->cbb;
          D.25907 = cfg->cbb;
          D.25907->last_ins = inst;
          D.25908 = D.25907->last_ins;
          D.25907->code = D.25908;
          <D.25961>:
        }
        goto <D.25962>;
        <D.25947>:
        <D.25962>:
        if (0 != 0) goto <D.25963>; else goto <D.25964>;
        <D.25963>:
        {
          int _length_reg;

          D.25965 = alloc_ireg (cfg);
          _length_reg = (int) D.25965;
          D.25911 = ins->flags;
          D.25966 = (int) D.25911;
          D.25967 = D.25966 & 32;
          if (D.25967 != 0) goto <D.25968>; else goto <D.25969>;
          <D.25968>:
          {
            struct MonoInst * inst;
            int __ins_flags;

            __ins_flags = 32;
            D.25970 = __ins_flags & 32;
            if (D.25970 != 0) goto <D.25971>; else goto <D.25972>;
            <D.25971>:
            D.25916 = BIT_FIELD_REF <*cfg, 8, 5632>;
            D.25917 = D.25916 & 64;
            if (D.25917 != 0) goto <D.25973>; else goto <D.25974>;
            <D.25973>:
            {
              struct MonoInst * inst;

              D.25898 = cfg->mempool;
              inst = mono_mempool_alloc (D.25898, 80);
              inst->data.op[1].const_val = 0;
              D.25975 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25975;
              inst->prev = 0B;
              D.25976 = inst->prev;
              inst->next = D.25976;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25977 = inst->sreg3;
              inst->sreg2 = D.25977;
              D.25978 = inst->sreg2;
              inst->sreg1 = D.25978;
              D.25924 = cfg->ip;
              inst->cil_code = D.25924;
              inst->dreg = -1;
              D.25925 = ins->sreg1;
              inst->sreg1 = D.25925;
              inst->data.op[1].const_val = 0;
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              if (D.25908 != 0B) goto <D.25979>; else goto <D.25980>;
              <D.25979>:
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              D.25908->next = inst;
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              inst->prev = D.25908;
              D.25907 = cfg->cbb;
              D.25907->last_ins = inst;
              goto <D.25981>;
              <D.25980>:
              D.25907 = cfg->cbb;
              D.25907 = cfg->cbb;
              D.25907->last_ins = inst;
              D.25908 = D.25907->last_ins;
              D.25907->code = D.25908;
              <D.25981>:
            }
            {
              struct MonoInst * inst;

              D.25898 = cfg->mempool;
              inst = mono_mempool_alloc (D.25898, 80);
              inst->data.op[1].const_val = 0;
              D.25982 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25982;
              inst->prev = 0B;
              D.25983 = inst->prev;
              inst->next = D.25983;
              inst->opcode = 455;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25984 = inst->sreg3;
              inst->sreg2 = D.25984;
              D.25985 = inst->sreg2;
              inst->sreg1 = D.25985;
              D.25924 = cfg->ip;
              inst->cil_code = D.25924;
              inst->data.op[1].p = "NullReferenceException";
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              if (D.25908 != 0B) goto <D.25986>; else goto <D.25987>;
              <D.25986>:
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              D.25908->next = inst;
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              inst->prev = D.25908;
              D.25907 = cfg->cbb;
              D.25907->last_ins = inst;
              goto <D.25988>;
              <D.25987>:
              D.25907 = cfg->cbb;
              D.25907 = cfg->cbb;
              D.25907->last_ins = inst;
              D.25908 = D.25907->last_ins;
              D.25907->code = D.25908;
              <D.25988>:
            }
            goto <D.25989>;
            <D.25974>:
            <D.25989>:
            <D.25972>:
            D.25898 = cfg->mempool;
            inst = mono_mempool_alloc (D.25898, 80);
            inst->data.op[1].const_val = 0;
            D.25990 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.25990;
            inst->prev = 0B;
            D.25991 = inst->prev;
            inst->next = D.25991;
            inst->opcode = 396;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.25992 = inst->sreg3;
            inst->sreg2 = D.25992;
            D.25993 = inst->sreg2;
            inst->sreg1 = D.25993;
            D.25924 = cfg->ip;
            inst->cil_code = D.25924;
            inst->dreg = _length_reg;
            D.25925 = ins->sreg1;
            inst->sreg1 = D.25925;
            D.25994 = ins->data.op[1].const_val;
            inst->data.op[0].const_val = D.25994;
            inst->type = 1;
            D.25995 = (unsigned char) __ins_flags;
            inst->flags = D.25995;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            if (D.25908 != 0B) goto <D.25996>; else goto <D.25997>;
            <D.25996>:
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            D.25908->next = inst;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            inst->prev = D.25908;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            goto <D.25998>;
            <D.25997>:
            D.25907 = cfg->cbb;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            D.25908 = D.25907->last_ins;
            D.25907->code = D.25908;
            <D.25998>:
          }
          goto <D.25999>;
          <D.25969>:
          {
            struct MonoInst * inst;
            int __ins_flags;

            __ins_flags = 64;
            D.26000 = __ins_flags & 32;
            if (D.26000 != 0) goto <D.26001>; else goto <D.26002>;
            <D.26001>:
            D.25916 = BIT_FIELD_REF <*cfg, 8, 5632>;
            D.25917 = D.25916 & 64;
            if (D.25917 != 0) goto <D.26003>; else goto <D.26004>;
            <D.26003>:
            {
              struct MonoInst * inst;

              D.25898 = cfg->mempool;
              inst = mono_mempool_alloc (D.25898, 80);
              inst->data.op[1].const_val = 0;
              D.26005 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26005;
              inst->prev = 0B;
              D.26006 = inst->prev;
              inst->next = D.26006;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26007 = inst->sreg3;
              inst->sreg2 = D.26007;
              D.26008 = inst->sreg2;
              inst->sreg1 = D.26008;
              D.25924 = cfg->ip;
              inst->cil_code = D.25924;
              inst->dreg = -1;
              D.25925 = ins->sreg1;
              inst->sreg1 = D.25925;
              inst->data.op[1].const_val = 0;
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              if (D.25908 != 0B) goto <D.26009>; else goto <D.26010>;
              <D.26009>:
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              D.25908->next = inst;
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              inst->prev = D.25908;
              D.25907 = cfg->cbb;
              D.25907->last_ins = inst;
              goto <D.26011>;
              <D.26010>:
              D.25907 = cfg->cbb;
              D.25907 = cfg->cbb;
              D.25907->last_ins = inst;
              D.25908 = D.25907->last_ins;
              D.25907->code = D.25908;
              <D.26011>:
            }
            {
              struct MonoInst * inst;

              D.25898 = cfg->mempool;
              inst = mono_mempool_alloc (D.25898, 80);
              inst->data.op[1].const_val = 0;
              D.26012 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26012;
              inst->prev = 0B;
              D.26013 = inst->prev;
              inst->next = D.26013;
              inst->opcode = 455;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26014 = inst->sreg3;
              inst->sreg2 = D.26014;
              D.26015 = inst->sreg2;
              inst->sreg1 = D.26015;
              D.25924 = cfg->ip;
              inst->cil_code = D.25924;
              inst->data.op[1].p = "NullReferenceException";
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              if (D.25908 != 0B) goto <D.26016>; else goto <D.26017>;
              <D.26016>:
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              D.25908->next = inst;
              D.25907 = cfg->cbb;
              D.25908 = D.25907->last_ins;
              inst->prev = D.25908;
              D.25907 = cfg->cbb;
              D.25907->last_ins = inst;
              goto <D.26018>;
              <D.26017>:
              D.25907 = cfg->cbb;
              D.25907 = cfg->cbb;
              D.25907->last_ins = inst;
              D.25908 = D.25907->last_ins;
              D.25907->code = D.25908;
              <D.26018>:
            }
            goto <D.26019>;
            <D.26004>:
            <D.26019>:
            <D.26002>:
            D.25898 = cfg->mempool;
            inst = mono_mempool_alloc (D.25898, 80);
            inst->data.op[1].const_val = 0;
            D.26020 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26020;
            inst->prev = 0B;
            D.26021 = inst->prev;
            inst->next = D.26021;
            inst->opcode = 396;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26022 = inst->sreg3;
            inst->sreg2 = D.26022;
            D.26023 = inst->sreg2;
            inst->sreg1 = D.26023;
            D.25924 = cfg->ip;
            inst->cil_code = D.25924;
            inst->dreg = _length_reg;
            D.25925 = ins->sreg1;
            inst->sreg1 = D.25925;
            D.25994 = ins->data.op[1].const_val;
            inst->data.op[0].const_val = D.25994;
            inst->type = 1;
            D.26024 = (unsigned char) __ins_flags;
            inst->flags = D.26024;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            if (D.25908 != 0B) goto <D.26025>; else goto <D.26026>;
            <D.26025>:
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            D.25908->next = inst;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            inst->prev = D.25908;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            goto <D.26027>;
            <D.26026>:
            D.25907 = cfg->cbb;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            D.25908 = D.25907->last_ins;
            D.25907->code = D.25908;
            <D.26027>:
          }
          <D.25999>:
          {
            struct MonoInst * inst;

            D.25898 = cfg->mempool;
            inst = mono_mempool_alloc (D.25898, 80);
            inst->data.op[1].const_val = 0;
            D.26028 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26028;
            inst->prev = 0B;
            D.26029 = inst->prev;
            inst->next = D.26029;
            inst->opcode = 322;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26030 = inst->sreg3;
            inst->sreg2 = D.26030;
            D.26031 = inst->sreg2;
            inst->sreg1 = D.26031;
            D.25924 = cfg->ip;
            inst->cil_code = D.25924;
            inst->dreg = -1;
            inst->sreg1 = _length_reg;
            D.26032 = ins->sreg2;
            inst->sreg2 = D.26032;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            if (D.25908 != 0B) goto <D.26033>; else goto <D.26034>;
            <D.26033>:
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            D.25908->next = inst;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            inst->prev = D.25908;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            goto <D.26035>;
            <D.26034>:
            D.25907 = cfg->cbb;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            D.25908 = D.25907->last_ins;
            D.25907->code = D.25908;
            <D.26035>:
          }
          {
            struct MonoInst * inst;

            D.25898 = cfg->mempool;
            inst = mono_mempool_alloc (D.25898, 80);
            inst->data.op[1].const_val = 0;
            D.26036 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26036;
            inst->prev = 0B;
            D.26037 = inst->prev;
            inst->next = D.26037;
            inst->opcode = 463;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26038 = inst->sreg3;
            inst->sreg2 = D.26038;
            D.26039 = inst->sreg2;
            inst->sreg1 = D.26039;
            D.25924 = cfg->ip;
            inst->cil_code = D.25924;
            inst->data.op[1].p = "IndexOutOfRangeException";
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            if (D.25908 != 0B) goto <D.26040>; else goto <D.26041>;
            <D.26040>:
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            D.25908->next = inst;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            inst->prev = D.25908;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            goto <D.26042>;
            <D.26041>:
            D.25907 = cfg->cbb;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            D.25908 = D.25907->last_ins;
            D.25907->code = D.25908;
            <D.26042>:
          }
        }
        goto <D.26043>;
        <D.25964>:
        {
          struct MonoInst * inst;

          D.25898 = cfg->mempool;
          inst = mono_mempool_alloc (D.25898, 80);
          inst->data.op[1].const_val = 0;
          D.26044 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.26044;
          inst->prev = 0B;
          D.26045 = inst->prev;
          inst->next = D.26045;
          inst->opcode = 1049;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.26046 = inst->sreg3;
          inst->sreg2 = D.26046;
          D.26047 = inst->sreg2;
          inst->sreg1 = D.26047;
          D.25924 = cfg->ip;
          inst->cil_code = D.25924;
          D.25925 = ins->sreg1;
          inst->sreg1 = D.25925;
          D.25994 = ins->data.op[1].const_val;
          inst->data.op[0].const_val = D.25994;
          D.26032 = ins->sreg2;
          inst->sreg2 = D.26032;
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          if (D.25908 != 0B) goto <D.26048>; else goto <D.26049>;
          <D.26048>:
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          D.25908->next = inst;
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          inst->prev = D.25908;
          D.25907 = cfg->cbb;
          D.25907->last_ins = inst;
          goto <D.26050>;
          <D.26049>:
          D.25907 = cfg->cbb;
          D.25907 = cfg->cbb;
          D.25907->last_ins = inst;
          D.25908 = D.25907->last_ins;
          D.25907->code = D.25908;
          <D.26050>:
          {
            struct MonoInst * inst;

            D.25898 = cfg->mempool;
            inst = mono_mempool_alloc (D.25898, 80);
            inst->data.op[1].const_val = 0;
            D.26051 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26051;
            inst->prev = 0B;
            D.26052 = inst->prev;
            inst->next = D.26052;
            inst->opcode = 463;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26053 = inst->sreg3;
            inst->sreg2 = D.26053;
            D.26054 = inst->sreg2;
            inst->sreg1 = D.26054;
            D.25924 = cfg->ip;
            inst->cil_code = D.25924;
            inst->data.op[1].p = "IndexOutOfRangeException";
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            if (D.25908 != 0B) goto <D.26055>; else goto <D.26056>;
            <D.26055>:
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            D.25908->next = inst;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            inst->prev = D.25908;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            goto <D.26057>;
            <D.26056>:
            D.25907 = cfg->cbb;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            D.25908 = D.25907->last_ins;
            D.25907->code = D.25908;
            <D.26057>:
          }
        }
        <D.26043>:
        goto <D.24253>;
        <D.24270>:
        D.26058 = cfg->opt;
        D.26059 = D.26058 & 512;
        if (D.26059 != 0) goto <D.26060>; else goto <D.26061>;
        <D.26060>:
        D.26058 = cfg->opt;
        D.26059 = D.26058 & 512;
        if (D.26059 != 0) goto <D.26062>; else goto <D.26065>;
        <D.26065>:
        D.26066 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.26067 = D.26066 & 64;
        if (D.26067 != 0) goto <D.26062>; else goto <D.26063>;
        <D.26062>:
        {
          struct MonoInst * __domain_var;

          __domain_var = mono_get_domainvar (cfg);
          D.25898 = cfg->mempool;
          D.26068 = mono_mempool_alloc (D.25898, 80);
          iargs[0] = D.26068;
          D.26069 = iargs[0];
          D.26069 = iargs[0];
          D.26069->data.op[1].const_val = 0;
          D.26070 = D.26069->data.op[1].const_val;
          D.26069->data.op[0].const_val = D.26070;
          D.26069 = iargs[0];
          D.26069 = iargs[0];
          D.26069->prev = 0B;
          D.26071 = D.26069->prev;
          D.26069->next = D.26071;
          D.26069 = iargs[0];
          D.26069->opcode = 428;
          D.26069 = iargs[0];
          D.26069->flags = 0;
          D.26069 = iargs[0];
          D.26069->type = 0;
          D.26069 = iargs[0];
          D.26069->dreg = -1;
          D.26069 = iargs[0];
          D.26069 = iargs[0];
          D.26069 = iargs[0];
          D.26069->sreg3 = -1;
          D.26072 = D.26069->sreg3;
          D.26069->sreg2 = D.26072;
          D.26073 = D.26069->sreg2;
          D.26069->sreg1 = D.26073;
          D.26069 = iargs[0];
          D.25924 = cfg->ip;
          D.26069->cil_code = D.25924;
          D.26069 = iargs[0];
          D.26074 = cfg->varinfo;
          D.26075 = __domain_var->data.op[0].const_val;
          D.26076 = (long unsigned int) D.26075;
          D.26077 = D.26076 * 8;
          D.26078 = D.26074 + D.26077;
          D.26079 = *D.26078;
          D.26080 = D.26079->data.op[1].vtype;
          D.26081 = mono_type_to_regmove (cfg, D.26080);
          D.26082 = (short unsigned int) D.26081;
          D.26069->opcode = D.26082;
          D.26069 = iargs[0];
          D.26074 = cfg->varinfo;
          D.26075 = __domain_var->data.op[0].const_val;
          D.26076 = (long unsigned int) D.26075;
          D.26077 = D.26076 * 8;
          D.26078 = D.26074 + D.26077;
          D.26079 = *D.26078;
          D.26080 = D.26079->data.op[1].vtype;
          type_to_eval_stack_type (cfg, D.26080, D.26069);
          D.26069 = iargs[0];
          D.26074 = cfg->varinfo;
          D.26075 = __domain_var->data.op[0].const_val;
          D.26076 = (long unsigned int) D.26075;
          D.26077 = D.26076 * 8;
          D.26078 = D.26074 + D.26077;
          D.26079 = *D.26078;
          D.26083 = D.26079->klass;
          D.26069->klass = D.26083;
          D.26069 = iargs[0];
          D.26074 = cfg->varinfo;
          D.26075 = __domain_var->data.op[0].const_val;
          D.26076 = (long unsigned int) D.26075;
          D.26077 = D.26076 * 8;
          D.26078 = D.26074 + D.26077;
          D.26079 = *D.26078;
          D.26084 = D.26079->dreg;
          D.26069->sreg1 = D.26084;
          D.26069 = iargs[0];
          D.26069 = iargs[0];
          D.26085 = D.26069->type;
          D.26086 = (<unnamed type>) D.26085;
          D.26087 = alloc_dreg (cfg, D.26086);
          D.26088 = (int) D.26087;
          D.26069->dreg = D.26088;
          D.26069 = iargs[0];
          D.26089 = D.26069->opcode;
          if (D.26089 == 431) goto <D.26090>; else goto <D.26091>;
          <D.26090>:
          D.26069 = iargs[0];
          D.26074 = cfg->varinfo;
          D.26075 = __domain_var->data.op[0].const_val;
          D.26076 = (long unsigned int) D.26075;
          D.26077 = D.26076 * 8;
          D.26078 = D.26074 + D.26077;
          D.26079 = *D.26078;
          D.26080 = D.26079->data.op[1].vtype;
          D.26092 = mono_class_from_mono_type (D.26080);
          D.26069->klass = D.26092;
          <D.26091>:
        }
        goto <D.26064>;
        <D.26063>:
        D.25898 = cfg->mempool;
        D.26093 = mono_mempool_alloc (D.25898, 80);
        iargs[0] = D.26093;
        D.26069 = iargs[0];
        D.26069 = iargs[0];
        D.26069->data.op[1].const_val = 0;
        D.26070 = D.26069->data.op[1].const_val;
        D.26069->data.op[0].const_val = D.26070;
        D.26069 = iargs[0];
        D.26069 = iargs[0];
        D.26069->prev = 0B;
        D.26071 = D.26069->prev;
        D.26069->next = D.26071;
        D.26069 = iargs[0];
        D.26069->opcode = 363;
        D.26069 = iargs[0];
        D.26069->flags = 0;
        D.26069 = iargs[0];
        D.26069->type = 0;
        D.26069 = iargs[0];
        D.26069->dreg = -1;
        D.26069 = iargs[0];
        D.26069 = iargs[0];
        D.26069 = iargs[0];
        D.26069->sreg3 = -1;
        D.26072 = D.26069->sreg3;
        D.26069->sreg2 = D.26072;
        D.26073 = D.26069->sreg2;
        D.26069->sreg1 = D.26073;
        D.26069 = iargs[0];
        D.25924 = cfg->ip;
        D.26069->cil_code = D.25924;
        D.26069 = iargs[0];
        D.26094 = cfg->domain;
        D.26069->data.op[0].p = D.26094;
        D.26069 = iargs[0];
        D.26069->type = 3;
        D.26069 = iargs[0];
        D.26095 = alloc_dreg (cfg, 3);
        D.26096 = (int) D.26095;
        D.26069->dreg = D.26096;
        <D.26064>:
        D.25907 = cfg->cbb;
        D.25908 = D.25907->last_ins;
        if (D.25908 != 0B) goto <D.26097>; else goto <D.26098>;
        <D.26097>:
        D.25907 = cfg->cbb;
        D.25908 = D.25907->last_ins;
        D.26069 = iargs[0];
        D.25908->next = D.26069;
        D.26069 = iargs[0];
        D.25907 = cfg->cbb;
        D.25908 = D.25907->last_ins;
        D.26069->prev = D.25908;
        D.25907 = cfg->cbb;
        D.26069 = iargs[0];
        D.25907->last_ins = D.26069;
        goto <D.26099>;
        <D.26098>:
        D.25907 = cfg->cbb;
        D.25907 = cfg->cbb;
        D.26069 = iargs[0];
        D.25907->last_ins = D.26069;
        D.25908 = D.25907->last_ins;
        D.25907->code = D.25908;
        <D.26099>:
        D.25898 = cfg->mempool;
        D.26100 = mono_mempool_alloc (D.25898, 80);
        iargs[1] = D.26100;
        D.26101 = iargs[1];
        D.26101 = iargs[1];
        D.26101->data.op[1].const_val = 0;
        D.26102 = D.26101->data.op[1].const_val;
        D.26101->data.op[0].const_val = D.26102;
        D.26101 = iargs[1];
        D.26101 = iargs[1];
        D.26101->prev = 0B;
        D.26103 = D.26101->prev;
        D.26101->next = D.26103;
        D.26101 = iargs[1];
        D.26066 = BIT_FIELD_REF <*cfg, 8, 5600>;
        D.26067 = D.26066 & 64;
        if (D.26067 != 0) goto <D.26105>; else goto <D.26106>;
        <D.26105>:
        iftmp.49 = 736;
        goto <D.26107>;
        <D.26106>:
        iftmp.49 = 363;
        <D.26107>:
        D.26101->opcode = iftmp.49;
        D.26101 = iargs[1];
        D.26101->flags = 0;
        D.26101 = iargs[1];
        D.26101->type = 0;
        D.26101 = iargs[1];
        D.26101->dreg = -1;
        D.26101 = iargs[1];
        D.26101 = iargs[1];
        D.26101 = iargs[1];
        D.26101->sreg3 = -1;
        D.26108 = D.26101->sreg3;
        D.26101->sreg2 = D.26108;
        D.26109 = D.26101->sreg2;
        D.26101->sreg1 = D.26109;
        D.26101 = iargs[1];
        D.25924 = cfg->ip;
        D.26101->cil_code = D.25924;
        D.26101 = iargs[1];
        D.26110 = ins->data.op[1].klass;
        D.26101->data.op[0].p = D.26110;
        D.26101 = iargs[1];
        D.26101->data.op[1].src = 11B;
        D.26101 = iargs[1];
        D.26101->type = 3;
        D.26101 = iargs[1];
        D.26111 = alloc_dreg (cfg, 3);
        D.26112 = (int) D.26111;
        D.26101->dreg = D.26112;
        D.25907 = cfg->cbb;
        D.25908 = D.25907->last_ins;
        if (D.25908 != 0B) goto <D.26113>; else goto <D.26114>;
        <D.26113>:
        D.25907 = cfg->cbb;
        D.25908 = D.25907->last_ins;
        D.26101 = iargs[1];
        D.25908->next = D.26101;
        D.26101 = iargs[1];
        D.25907 = cfg->cbb;
        D.25908 = D.25907->last_ins;
        D.26101->prev = D.25908;
        D.25907 = cfg->cbb;
        D.26101 = iargs[1];
        D.25907->last_ins = D.26101;
        goto <D.26115>;
        <D.26114>:
        D.25907 = cfg->cbb;
        D.25907 = cfg->cbb;
        D.26101 = iargs[1];
        D.25907->last_ins = D.26101;
        D.25908 = D.25907->last_ins;
        D.25907->code = D.25908;
        <D.26115>:
        D.25898 = cfg->mempool;
        D.26116 = mono_mempool_alloc (D.25898, 80);
        iargs[2] = D.26116;
        D.26117 = iargs[2];
        D.26117 = iargs[2];
        D.26117->data.op[1].const_val = 0;
        D.26118 = D.26117->data.op[1].const_val;
        D.26117->data.op[0].const_val = D.26118;
        D.26117 = iargs[2];
        D.26117 = iargs[2];
        D.26117->prev = 0B;
        D.26119 = D.26117->prev;
        D.26117->next = D.26119;
        D.26117 = iargs[2];
        D.26117->opcode = 428;
        D.26117 = iargs[2];
        D.26117->flags = 0;
        D.26117 = iargs[2];
        D.26117->type = 0;
        D.26117 = iargs[2];
        D.26117->dreg = -1;
        D.26117 = iargs[2];
        D.26117 = iargs[2];
        D.26117 = iargs[2];
        D.26117->sreg3 = -1;
        D.26120 = D.26117->sreg3;
        D.26117->sreg2 = D.26120;
        D.26121 = D.26117->sreg2;
        D.26117->sreg1 = D.26121;
        D.26117 = iargs[2];
        D.25924 = cfg->ip;
        D.26117->cil_code = D.25924;
        D.26117 = iargs[2];
        D.25925 = ins->sreg1;
        D.26117->dreg = D.25925;
        dest = mono_emit_jit_icall (cfg, mono_array_new, &iargs);
        D.25941 = ins->dreg;
        dest->dreg = D.25941;
        goto <D.26122>;
        <D.26061>:
        {
          struct MonoClass * array_class;
          struct MonoVTable * vtable;
          struct MonoMethod * managed_alloc;

          D.26110 = ins->data.op[1].klass;
          array_class = mono_array_class_get (D.26110, 1);
          D.26094 = cfg->domain;
          vtable = mono_class_vtable (D.26094, array_class);
          managed_alloc = mono_gc_get_managed_array_allocator (array_class);
          D.26123 = vtable == 0B;
          D.26124 = (long int) D.26123;
          D.26125 = __builtin_expect (D.26124, 0);
          if (D.26125 != 0) goto <D.26126>; else goto <D.26127>;
          <D.26126>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1505, "vtable");
          <D.26127>:
          D.25898 = cfg->mempool;
          D.26128 = mono_mempool_alloc (D.25898, 80);
          iargs[0] = D.26128;
          D.26069 = iargs[0];
          D.26069 = iargs[0];
          D.26069->data.op[1].const_val = 0;
          D.26070 = D.26069->data.op[1].const_val;
          D.26069->data.op[0].const_val = D.26070;
          D.26069 = iargs[0];
          D.26069 = iargs[0];
          D.26069->prev = 0B;
          D.26071 = D.26069->prev;
          D.26069->next = D.26071;
          D.26069 = iargs[0];
          D.26066 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.26067 = D.26066 & 64;
          if (D.26067 != 0) goto <D.26130>; else goto <D.26131>;
          <D.26130>:
          iftmp.50 = 736;
          goto <D.26132>;
          <D.26131>:
          iftmp.50 = 363;
          <D.26132>:
          D.26069->opcode = iftmp.50;
          D.26069 = iargs[0];
          D.26069->flags = 0;
          D.26069 = iargs[0];
          D.26069->type = 0;
          D.26069 = iargs[0];
          D.26069->dreg = -1;
          D.26069 = iargs[0];
          D.26069 = iargs[0];
          D.26069 = iargs[0];
          D.26069->sreg3 = -1;
          D.26072 = D.26069->sreg3;
          D.26069->sreg2 = D.26072;
          D.26073 = D.26069->sreg2;
          D.26069->sreg1 = D.26073;
          D.26069 = iargs[0];
          D.25924 = cfg->ip;
          D.26069->cil_code = D.25924;
          D.26069 = iargs[0];
          D.26066 = BIT_FIELD_REF <*cfg, 8, 5600>;
          D.26067 = D.26066 & 64;
          if (D.26067 != 0) goto <D.26134>; else goto <D.26135>;
          <D.26134>:
          iftmp.51 = vtable->klass;
          goto <D.26136>;
          <D.26135>:
          iftmp.51 = vtable;
          <D.26136>:
          D.26069->data.op[0].p = iftmp.51;
          D.26069 = iargs[0];
          D.26069->data.op[1].src = 14B;
          D.26069 = iargs[0];
          D.26069->type = 3;
          D.26069 = iargs[0];
          D.26137 = alloc_dreg (cfg, 3);
          D.26138 = (int) D.26137;
          D.26069->dreg = D.26138;
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          if (D.25908 != 0B) goto <D.26139>; else goto <D.26140>;
          <D.26139>:
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          D.26069 = iargs[0];
          D.25908->next = D.26069;
          D.26069 = iargs[0];
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          D.26069->prev = D.25908;
          D.25907 = cfg->cbb;
          D.26069 = iargs[0];
          D.25907->last_ins = D.26069;
          goto <D.26141>;
          <D.26140>:
          D.25907 = cfg->cbb;
          D.25907 = cfg->cbb;
          D.26069 = iargs[0];
          D.25907->last_ins = D.26069;
          D.25908 = D.25907->last_ins;
          D.25907->code = D.25908;
          <D.26141>:
          D.25898 = cfg->mempool;
          D.26142 = mono_mempool_alloc (D.25898, 80);
          iargs[1] = D.26142;
          D.26101 = iargs[1];
          D.26101 = iargs[1];
          D.26101->data.op[1].const_val = 0;
          D.26102 = D.26101->data.op[1].const_val;
          D.26101->data.op[0].const_val = D.26102;
          D.26101 = iargs[1];
          D.26101 = iargs[1];
          D.26101->prev = 0B;
          D.26103 = D.26101->prev;
          D.26101->next = D.26103;
          D.26101 = iargs[1];
          D.26101->opcode = 428;
          D.26101 = iargs[1];
          D.26101->flags = 0;
          D.26101 = iargs[1];
          D.26101->type = 0;
          D.26101 = iargs[1];
          D.26101->dreg = -1;
          D.26101 = iargs[1];
          D.26101 = iargs[1];
          D.26101 = iargs[1];
          D.26101->sreg3 = -1;
          D.26108 = D.26101->sreg3;
          D.26101->sreg2 = D.26108;
          D.26109 = D.26101->sreg2;
          D.26101->sreg1 = D.26109;
          D.26101 = iargs[1];
          D.25924 = cfg->ip;
          D.26101->cil_code = D.25924;
          D.26101 = iargs[1];
          D.25925 = ins->sreg1;
          D.26101->dreg = D.25925;
          if (managed_alloc != 0B) goto <D.26143>; else goto <D.26144>;
          <D.26143>:
          dest = mono_emit_method_call (cfg, managed_alloc, &iargs, 0B);
          goto <D.26145>;
          <D.26144>:
          dest = mono_emit_jit_icall (cfg, mono_array_new_specific, &iargs);
          <D.26145>:
          D.25941 = ins->dreg;
          dest->dreg = D.25941;
        }
        <D.26122>:
        goto <D.24253>;
        <D.24275>:
        {
          struct MonoInst * inst;
          int __ins_flags;

          D.25911 = ins->flags;
          D.25912 = D.25911 | 64;
          __ins_flags = (int) D.25912;
          D.26146 = __ins_flags & 32;
          if (D.26146 != 0) goto <D.26147>; else goto <D.26148>;
          <D.26147>:
          D.25916 = BIT_FIELD_REF <*cfg, 8, 5632>;
          D.25917 = D.25916 & 64;
          if (D.25917 != 0) goto <D.26149>; else goto <D.26150>;
          <D.26149>:
          {
            struct MonoInst * inst;

            D.25898 = cfg->mempool;
            inst = mono_mempool_alloc (D.25898, 80);
            inst->data.op[1].const_val = 0;
            D.26151 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26151;
            inst->prev = 0B;
            D.26152 = inst->prev;
            inst->next = D.26152;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26153 = inst->sreg3;
            inst->sreg2 = D.26153;
            D.26154 = inst->sreg2;
            inst->sreg1 = D.26154;
            D.25924 = cfg->ip;
            inst->cil_code = D.25924;
            inst->dreg = -1;
            D.25925 = ins->sreg1;
            inst->sreg1 = D.25925;
            inst->data.op[1].const_val = 0;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            if (D.25908 != 0B) goto <D.26155>; else goto <D.26156>;
            <D.26155>:
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            D.25908->next = inst;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            inst->prev = D.25908;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            goto <D.26157>;
            <D.26156>:
            D.25907 = cfg->cbb;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            D.25908 = D.25907->last_ins;
            D.25907->code = D.25908;
            <D.26157>:
          }
          {
            struct MonoInst * inst;

            D.25898 = cfg->mempool;
            inst = mono_mempool_alloc (D.25898, 80);
            inst->data.op[1].const_val = 0;
            D.26158 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26158;
            inst->prev = 0B;
            D.26159 = inst->prev;
            inst->next = D.26159;
            inst->opcode = 455;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26160 = inst->sreg3;
            inst->sreg2 = D.26160;
            D.26161 = inst->sreg2;
            inst->sreg1 = D.26161;
            D.25924 = cfg->ip;
            inst->cil_code = D.25924;
            inst->data.op[1].p = "NullReferenceException";
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            if (D.25908 != 0B) goto <D.26162>; else goto <D.26163>;
            <D.26162>:
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            D.25908->next = inst;
            D.25907 = cfg->cbb;
            D.25908 = D.25907->last_ins;
            inst->prev = D.25908;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            goto <D.26164>;
            <D.26163>:
            D.25907 = cfg->cbb;
            D.25907 = cfg->cbb;
            D.25907->last_ins = inst;
            D.25908 = D.25907->last_ins;
            D.25907->code = D.25908;
            <D.26164>:
          }
          goto <D.26165>;
          <D.26150>:
          <D.26165>:
          <D.26148>:
          D.25898 = cfg->mempool;
          inst = mono_mempool_alloc (D.25898, 80);
          inst->data.op[1].const_val = 0;
          D.26166 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.26166;
          inst->prev = 0B;
          D.26167 = inst->prev;
          inst->next = D.26167;
          inst->opcode = 396;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.26168 = inst->sreg3;
          inst->sreg2 = D.26168;
          D.26169 = inst->sreg2;
          inst->sreg1 = D.26169;
          D.25924 = cfg->ip;
          inst->cil_code = D.25924;
          D.25941 = ins->dreg;
          inst->dreg = D.25941;
          D.25925 = ins->sreg1;
          inst->sreg1 = D.25925;
          inst->data.op[0].const_val = 16;
          inst->type = 1;
          D.26170 = (unsigned char) __ins_flags;
          inst->flags = D.26170;
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          if (D.25908 != 0B) goto <D.26171>; else goto <D.26172>;
          <D.26171>:
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          D.25908->next = inst;
          D.25907 = cfg->cbb;
          D.25908 = D.25907->last_ins;
          inst->prev = D.25908;
          D.25907 = cfg->cbb;
          D.25907->last_ins = inst;
          goto <D.26173>;
          <D.26172>:
          D.25907 = cfg->cbb;
          D.25907 = cfg->cbb;
          D.25907->last_ins = inst;
          D.25908 = D.25907->last_ins;
          D.25907->code = D.25908;
          <D.26173>:
        }
        goto <D.24253>;
        <D.24280>:
        goto <D.24253>;
        <D.24253>:
        D.25907 = cfg->cbb;
        D.26174 = D.25907 != first_bb;
        D.26175 = (long int) D.26174;
        D.26176 = __builtin_expect (D.26175, 0);
        if (D.26176 != 0) goto <D.26177>; else goto <D.26178>;
        <D.26177>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1526, "cfg->cbb == first_bb");
        <D.26178>:
        D.25907 = cfg->cbb;
        D.26182 = D.25907->code;
        if (D.26182 != 0B) goto <D.26179>; else goto <D.26183>;
        <D.26183>:
        D.25907 = cfg->cbb;
        if (D.25907 != first_bb) goto <D.26179>; else goto <D.26180>;
        <D.26179>:
        D.25907 = cfg->cbb;
        mono_replace_ins (cfg, bb, ins, &prev, first_bb, D.25907);
        first_bb->last_ins = 0B;
        D.26184 = first_bb->last_ins;
        first_bb->code = D.26184;
        first_bb->out_count = 0;
        D.26185 = first_bb->out_count;
        first_bb->in_count = D.26185;
        cfg->cbb = first_bb;
        goto <D.26181>;
        <D.26180>:
        prev = ins;
        <D.26181>:
        ins = ins->next;
        <D.24282>:
        if (ins != 0B) goto <D.24281>; else goto <D.24283>;
        <D.24283>:
        <D.24285>:
        if (restart != 0) goto <D.24284>; else goto <D.24286>;
        <D.24286>:
        D.25904 = cfg->verbose_level;
        if (D.25904 > 3) goto <D.26186>; else goto <D.26187>;
        <D.26186>:
        mono_print_bb (bb, "AFTER DECOMPOSE-ARRAY-ACCESS-OPTS ");
        <D.26187>:
      }
    finally
      {
        prev = {CLOBBER};
        iargs = {CLOBBER};
      }
  }
  <D.24248>:
  bb = bb->next_bb;
  <D.24288>:
  if (bb != 0B) goto <D.24287>; else goto <D.24289>;
  <D.24289>:
}


mono_get_domainvar (struct MonoCompile * cfg)
{
  struct MonoInst * D.26191;
  struct MonoClass * D.26194;
  struct MonoType * D.26195;
  struct MonoInst * D.26196;
  struct MonoInst * D.26197;

  D.26191 = cfg->domainvar;
  if (D.26191 == 0B) goto <D.26192>; else goto <D.26193>;
  <D.26192>:
  D.26194 = mono_defaults.int_class;
  D.26195 = &D.26194->byval_arg;
  D.26196 = mono_compile_create_var (cfg, D.26195, 329);
  cfg->domainvar = D.26196;
  <D.26193>:
  D.26197 = cfg->domainvar;
  return D.26197;
}


