mono_decompose_opcode (struct MonoCompile * cfg, struct MonoInst * ins)
{
  unsigned char D.24393;
  short unsigned int D.24394;
  int D.24395;
  struct MonoMemPool * D.24396;
  long int D.24397;
  struct MonoInst * D.24398;
  int D.24399;
  int D.24400;
  const unsigned char * D.24401;
  int D.24402;
  struct MonoBasicBlock * D.24403;
  struct MonoInst * D.24404;
  long int D.24408;
  struct MonoInst * D.24409;
  int D.24410;
  int D.24411;
  long int D.24415;
  struct MonoInst * D.24416;
  int D.24417;
  int D.24418;
  long int D.24422;
  struct MonoInst * D.24423;
  int D.24424;
  int D.24425;
  long int D.24429;
  struct MonoInst * D.24430;
  int D.24431;
  int D.24432;
  int D.24433;
  int D.24437;
  int D.24438;
  long int D.24439;
  struct MonoInst * D.24440;
  int D.24441;
  int D.24442;
  long int D.24446;
  struct MonoInst * D.24447;
  int D.24448;
  int D.24449;
  long int D.24453;
  struct MonoInst * D.24454;
  int D.24455;
  int D.24456;
  long int D.24460;
  struct MonoInst * D.24461;
  int D.24462;
  int D.24463;
  long int D.24467;
  struct MonoInst * D.24468;
  int D.24469;
  int D.24470;
  long int D.24474;
  struct MonoInst * D.24475;
  int D.24476;
  int D.24477;
  long int D.24481;
  struct MonoInst * D.24482;
  int D.24483;
  int D.24484;
  long int D.24488;
  struct MonoInst * D.24489;
  int D.24490;
  int D.24491;
  long int D.24495;
  struct MonoInst * D.24496;
  int D.24497;
  int D.24498;
  long int D.24502;
  struct MonoInst * D.24503;
  int D.24504;
  int D.24505;
  long int D.24509;
  struct MonoInst * D.24510;
  int D.24511;
  int D.24512;
  long int D.24516;
  struct MonoInst * D.24517;
  int D.24518;
  int D.24519;
  long int D.24523;
  struct MonoInst * D.24524;
  int D.24525;
  int D.24526;
  long int D.24530;
  struct MonoInst * D.24531;
  int D.24532;
  int D.24533;
  long int D.24537;
  struct MonoInst * D.24538;
  int D.24539;
  int D.24540;
  long int D.24544;
  struct MonoInst * D.24545;
  int D.24546;
  int D.24547;
  long int D.24551;
  struct MonoInst * D.24552;
  int D.24553;
  int D.24554;
  long int D.24558;
  struct MonoInst * D.24559;
  int D.24560;
  int D.24561;
  long int D.24565;
  struct MonoInst * D.24566;
  int D.24567;
  int D.24568;
  long int D.24572;
  struct MonoInst * D.24573;
  int D.24574;
  int D.24575;
  gchar * D.24579;
  int D.24582;
  struct MonoMethodSignature * D.24589;
  long unsigned int D.24590;
  long unsigned int D.24591;
  _Bool D.24592;
  long int D.24593;
  long int D.24594;
  short unsigned int D.24597;
  _Bool D.24598;
  long int D.24599;
  long int D.24600;
  unsigned int D.24603;
  unsigned int D.24604;
  int D.24607;
  signed char D.24608;
  int D.24609;
  _Bool D.24610;
  long int D.24611;
  long int D.24612;
  long unsigned int D.24615;
  long unsigned int D.24616;
  struct MonoInst * * D.24617;
  void * D.24618;
  struct MonoInst * D.24619;
  long int D.24620;
  struct MonoInst * D.24621;
  int D.24622;
  int D.24623;
  int D.24624;
  const void * D.24625;
  struct MonoInst * repl.0;
  unsigned char D.24631;
  struct MonoInst * D.24632;
  _Bool D.24633;
  long int D.24634;
  long int D.24635;
  _Bool D.24638;
  long int D.24639;
  long int D.24640;
  struct MonoInst * repl;
  int type;
  int dreg;
  gboolean emulate;

  try
    {
      repl = 0B;
      D.24393 = ins->type;
      type = (int) D.24393;
      dreg = ins->dreg;
      emulate = 0;
      mono_arch_decompose_opts (cfg, ins);
      D.24394 = ins->opcode;
      D.24395 = (int) D.24394;
      switch (D.24395) <default: <D.24200>, case 582: <D.24183>, case 586: <D.24184>, case 589: <D.24188>, case 592: <D.24187>, case 601: <D.24154>, case 602: <D.24169>, case 603: <D.24179>, case 605: <D.24159>, case 606: <D.24174>, case 607: <D.24186>, case 611: <D.24147>, case 612: <D.24158>, case 613: <D.24163>, case 614: <D.24173>, case 615: <D.24185>, case 616: <D.24178>, case 682: <D.24189>, case 696: <D.24190>, case 697: <D.24191>, case 698: <D.24192>, case 699: <D.24193>, case 700: <D.24194>, case 701: <D.24195>, case 702: <D.24196>, case 703: <D.24197>, case 704: <D.24198>, case 705: <D.24199>>
      <D.24147>:
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24397 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24397;
        inst->prev = 0B;
        D.24398 = inst->prev;
        inst->next = D.24398;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24399 = inst->sreg3;
        inst->sreg2 = D.24399;
        D.24400 = inst->sreg2;
        inst->sreg1 = D.24400;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        inst->data.op[1].const_val = 127;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24405>; else goto <D.24406>;
        <D.24405>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24407>;
        <D.24406>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24407>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24408 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24408;
        inst->prev = 0B;
        D.24409 = inst->prev;
        inst->next = D.24409;
        inst->opcode = 467;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24410 = inst->sreg3;
        inst->sreg2 = D.24410;
        D.24411 = inst->sreg2;
        inst->sreg1 = D.24411;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        inst->data.op[1].p = "OverflowException";
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24412>; else goto <D.24413>;
        <D.24412>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24414>;
        <D.24413>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24414>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24415 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24415;
        inst->prev = 0B;
        D.24416 = inst->prev;
        inst->next = D.24416;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24417 = inst->sreg3;
        inst->sreg2 = D.24417;
        D.24418 = inst->sreg2;
        inst->sreg1 = D.24418;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        inst->data.op[1].const_val = -128;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24419>; else goto <D.24420>;
        <D.24419>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24421>;
        <D.24420>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24421>:
      }
      {
        struct MonoInst * inst;

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

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24429 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24429;
        inst->prev = 0B;
        D.24430 = inst->prev;
        inst->next = D.24430;
        inst->opcode = 580;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24431 = inst->sreg3;
        inst->sreg2 = D.24431;
        D.24432 = inst->sreg2;
        inst->sreg1 = D.24432;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24433 = ins->dreg;
        inst->dreg = D.24433;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24434>; else goto <D.24435>;
        <D.24434>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24436>;
        <D.24435>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24436>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24437 = ins->sreg3;
      ins->sreg2 = D.24437;
      D.24438 = ins->sreg2;
      ins->sreg1 = D.24438;
      goto <D.24153>;
      <D.24154>:
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24439 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24439;
        inst->prev = 0B;
        D.24440 = inst->prev;
        inst->next = D.24440;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24441 = inst->sreg3;
        inst->sreg2 = D.24441;
        D.24442 = inst->sreg2;
        inst->sreg1 = D.24442;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        inst->data.op[1].const_val = 127;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24443>; else goto <D.24444>;
        <D.24443>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24445>;
        <D.24444>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24445>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24446 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24446;
        inst->prev = 0B;
        D.24447 = inst->prev;
        inst->next = D.24447;
        inst->opcode = 472;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24448 = inst->sreg3;
        inst->sreg2 = D.24448;
        D.24449 = inst->sreg2;
        inst->sreg1 = D.24449;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        inst->data.op[1].p = "OverflowException";
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24450>; else goto <D.24451>;
        <D.24450>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24452>;
        <D.24451>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24452>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24453 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24453;
        inst->prev = 0B;
        D.24454 = inst->prev;
        inst->next = D.24454;
        inst->opcode = 580;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24455 = inst->sreg3;
        inst->sreg2 = D.24455;
        D.24456 = inst->sreg2;
        inst->sreg1 = D.24456;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24433 = ins->dreg;
        inst->dreg = D.24433;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24457>; else goto <D.24458>;
        <D.24457>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24459>;
        <D.24458>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24459>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24437 = ins->sreg3;
      ins->sreg2 = D.24437;
      D.24438 = ins->sreg2;
      ins->sreg1 = D.24438;
      goto <D.24153>;
      <D.24158>:
      <D.24159>:
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24460 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24460;
        inst->prev = 0B;
        D.24461 = inst->prev;
        inst->next = D.24461;
        inst->opcode = 323;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24462 = inst->sreg3;
        inst->sreg2 = D.24462;
        D.24463 = inst->sreg2;
        inst->sreg1 = D.24463;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        inst->data.op[1].const_val = 255;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24464>; else goto <D.24465>;
        <D.24464>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24466>;
        <D.24465>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24466>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24467 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24467;
        inst->prev = 0B;
        D.24468 = inst->prev;
        inst->next = D.24468;
        inst->opcode = 472;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24469 = inst->sreg3;
        inst->sreg2 = D.24469;
        D.24470 = inst->sreg2;
        inst->sreg1 = D.24470;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        inst->data.op[1].p = "OverflowException";
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24471>; else goto <D.24472>;
        <D.24471>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24473>;
        <D.24472>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24473>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24474 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24474;
        inst->prev = 0B;
        D.24475 = inst->prev;
        inst->next = D.24475;
        inst->opcode = 632;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24476 = inst->sreg3;
        inst->sreg2 = D.24476;
        D.24477 = inst->sreg2;
        inst->sreg1 = D.24477;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24433 = ins->dreg;
        inst->dreg = D.24433;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        inst->data.op[1].const_val = 255;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24478>; else goto <D.24479>;
        <D.24478>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24480>;
        <D.24479>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24480>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24437 = ins->sreg3;
      ins->sreg2 = D.24437;
      D.24438 = ins->sreg2;
      ins->sreg1 = D.24438;
      goto <D.24153>;
      <D.24163>:
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24481 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24481;
        inst->prev = 0B;
        D.24482 = inst->prev;
        inst->next = D.24482;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24483 = inst->sreg3;
        inst->sreg2 = D.24483;
        D.24484 = inst->sreg2;
        inst->sreg1 = D.24484;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        inst->data.op[1].const_val = 32767;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24485>; else goto <D.24486>;
        <D.24485>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24487>;
        <D.24486>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24487>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24488 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24488;
        inst->prev = 0B;
        D.24489 = inst->prev;
        inst->next = D.24489;
        inst->opcode = 467;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24490 = inst->sreg3;
        inst->sreg2 = D.24490;
        D.24491 = inst->sreg2;
        inst->sreg1 = D.24491;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        inst->data.op[1].p = "OverflowException";
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24492>; else goto <D.24493>;
        <D.24492>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24494>;
        <D.24493>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24494>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24495 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24495;
        inst->prev = 0B;
        D.24496 = inst->prev;
        inst->next = D.24496;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24497 = inst->sreg3;
        inst->sreg2 = D.24497;
        D.24498 = inst->sreg2;
        inst->sreg1 = D.24498;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        inst->data.op[1].const_val = -32768;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24499>; else goto <D.24500>;
        <D.24499>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24501>;
        <D.24500>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24501>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24502 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24502;
        inst->prev = 0B;
        D.24503 = inst->prev;
        inst->next = D.24503;
        inst->opcode = 469;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24504 = inst->sreg3;
        inst->sreg2 = D.24504;
        D.24505 = inst->sreg2;
        inst->sreg1 = D.24505;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        inst->data.op[1].p = "OverflowException";
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24506>; else goto <D.24507>;
        <D.24506>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24508>;
        <D.24507>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24508>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24509 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24509;
        inst->prev = 0B;
        D.24510 = inst->prev;
        inst->next = D.24510;
        inst->opcode = 581;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24511 = inst->sreg3;
        inst->sreg2 = D.24511;
        D.24512 = inst->sreg2;
        inst->sreg1 = D.24512;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24433 = ins->dreg;
        inst->dreg = D.24433;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24513>; else goto <D.24514>;
        <D.24513>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24515>;
        <D.24514>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24515>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24437 = ins->sreg3;
      ins->sreg2 = D.24437;
      D.24438 = ins->sreg2;
      ins->sreg1 = D.24438;
      goto <D.24153>;
      <D.24169>:
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24516 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24516;
        inst->prev = 0B;
        D.24517 = inst->prev;
        inst->next = D.24517;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24518 = inst->sreg3;
        inst->sreg2 = D.24518;
        D.24519 = inst->sreg2;
        inst->sreg1 = D.24519;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        inst->data.op[1].const_val = 32767;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24520>; else goto <D.24521>;
        <D.24520>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24522>;
        <D.24521>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24522>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24523 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24523;
        inst->prev = 0B;
        D.24524 = inst->prev;
        inst->next = D.24524;
        inst->opcode = 472;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24525 = inst->sreg3;
        inst->sreg2 = D.24525;
        D.24526 = inst->sreg2;
        inst->sreg1 = D.24526;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        inst->data.op[1].p = "OverflowException";
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24527>; else goto <D.24528>;
        <D.24527>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24529>;
        <D.24528>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24529>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24530 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24530;
        inst->prev = 0B;
        D.24531 = inst->prev;
        inst->next = D.24531;
        inst->opcode = 581;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24532 = inst->sreg3;
        inst->sreg2 = D.24532;
        D.24533 = inst->sreg2;
        inst->sreg1 = D.24533;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24433 = ins->dreg;
        inst->dreg = D.24433;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24534>; else goto <D.24535>;
        <D.24534>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24536>;
        <D.24535>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24536>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24437 = ins->sreg3;
      ins->sreg2 = D.24437;
      D.24438 = ins->sreg2;
      ins->sreg1 = D.24438;
      goto <D.24153>;
      <D.24173>:
      <D.24174>:
      {
        struct MonoInst * inst;

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

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

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24551 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24551;
        inst->prev = 0B;
        D.24552 = inst->prev;
        inst->next = D.24552;
        inst->opcode = 632;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24553 = inst->sreg3;
        inst->sreg2 = D.24553;
        D.24554 = inst->sreg2;
        inst->sreg1 = D.24554;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24433 = ins->dreg;
        inst->dreg = D.24433;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        inst->data.op[1].const_val = 65535;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24555>; else goto <D.24556>;
        <D.24555>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24557>;
        <D.24556>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24557>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24437 = ins->sreg3;
      ins->sreg2 = D.24437;
      D.24438 = ins->sreg2;
      ins->sreg1 = D.24438;
      goto <D.24153>;
      <D.24178>:
      <D.24179>:
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24558 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24558;
        inst->prev = 0B;
        D.24559 = inst->prev;
        inst->next = D.24559;
        inst->opcode = 327;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24560 = inst->sreg3;
        inst->sreg2 = D.24560;
        D.24561 = inst->sreg2;
        inst->sreg1 = D.24561;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        inst->data.op[1].const_val = 0;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24562>; else goto <D.24563>;
        <D.24562>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24564>;
        <D.24563>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24564>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24565 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24565;
        inst->prev = 0B;
        D.24566 = inst->prev;
        inst->next = D.24566;
        inst->opcode = 469;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24567 = inst->sreg3;
        inst->sreg2 = D.24567;
        D.24568 = inst->sreg2;
        inst->sreg1 = D.24568;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        inst->data.op[1].p = "OverflowException";
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24569>; else goto <D.24570>;
        <D.24569>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24571>;
        <D.24570>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24571>:
      }
      {
        struct MonoInst * inst;

        D.24396 = cfg->mempool;
        inst = mono_mempool_alloc (D.24396, 80);
        inst->data.op[1].const_val = 0;
        D.24572 = inst->data.op[1].const_val;
        inst->data.op[0].const_val = D.24572;
        inst->prev = 0B;
        D.24573 = inst->prev;
        inst->next = D.24573;
        inst->opcode = 424;
        inst->flags = 0;
        inst->type = 0;
        inst->dreg = -1;
        inst->sreg3 = -1;
        D.24574 = inst->sreg3;
        inst->sreg2 = D.24574;
        D.24575 = inst->sreg2;
        inst->sreg1 = D.24575;
        D.24401 = cfg->ip;
        inst->cil_code = D.24401;
        D.24433 = ins->dreg;
        inst->dreg = D.24433;
        D.24402 = ins->sreg1;
        inst->sreg1 = D.24402;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        if (D.24404 != 0B) goto <D.24576>; else goto <D.24577>;
        <D.24576>:
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        D.24404->next = inst;
        D.24403 = cfg->cbb;
        D.24404 = D.24403->last_ins;
        inst->prev = D.24404;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        goto <D.24578>;
        <D.24577>:
        D.24403 = cfg->cbb;
        D.24403 = cfg->cbb;
        D.24403->last_ins = inst;
        D.24404 = D.24403->last_ins;
        D.24403->code = D.24404;
        <D.24578>:
      }
      ins->opcode = 316;
      ins->dreg = -1;
      ins->sreg3 = -1;
      D.24437 = ins->sreg3;
      ins->sreg2 = D.24437;
      D.24438 = ins->sreg2;
      ins->sreg1 = D.24438;
      goto <D.24153>;
      <D.24183>:
      <D.24184>:
      <D.24185>:
      <D.24186>:
      ins->opcode = 424;
      goto <D.24153>;
      <D.24187>:
      ins->opcode = 762;
      goto <D.24153>;
      <D.24188>:
      ins->opcode = 765;
      goto <D.24153>;
      <D.24189>:
      ins->opcode = 426;
      goto <D.24153>;
      <D.24190>:
      <D.24191>:
      <D.24192>:
      <D.24193>:
      <D.24194>:
      <D.24195>:
      <D.24196>:
      <D.24197>:
      <D.24198>:
      <D.24199>:
      cfg->exception_type = 3;
      D.24579 = monoeg_g_strdup_printf ("float conv.ovf.un opcodes not supported.");
      cfg->exception_message = D.24579;
      goto <D.24153>;
      <D.24200>:
      emulate = 1;
      goto <D.24153>;
      <D.24153>:
      if (emulate != 0) goto <D.24580>; else goto <D.24581>;
      <D.24580>:
      {
        struct MonoJitICallInfo * info;

        info = 0B;
        D.24582 = decompose_long_opcode (cfg, ins, &repl);
        if (D.24582 != 0) goto <D.24583>; else goto <D.24584>;
        <D.24583>:
        emulate = 0;
        <D.24584>:
        if (emulate != 0) goto <D.24585>; else goto <D.24586>;
        <D.24585>:
        D.24394 = ins->opcode;
        D.24395 = (int) D.24394;
        info = mono_find_jit_opcode_emulation (D.24395);
        <D.24586>:
        if (info != 0B) goto <D.24587>; else goto <D.24588>;
        <D.24587>:
        {
          struct MonoInst * * args;
          struct MonoInst * call;

          D.24589 = info->sig;
          D.24590 = BIT_FIELD_REF <*D.24589, 64, 64>;
          D.24591 = D.24590 & 18014398509481984;
          D.24592 = D.24591 != 0;
          D.24593 = (long int) D.24592;
          D.24594 = __builtin_expect (D.24593, 0);
          if (D.24594 != 0) goto <D.24595>; else goto <D.24596>;
          <D.24595>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 468, "!info->sig->hasthis");
          <D.24596>:
          D.24589 = info->sig;
          D.24597 = D.24589->param_count;
          D.24598 = D.24597 > 3;
          D.24599 = (long int) D.24598;
          D.24600 = __builtin_expect (D.24599, 0);
          if (D.24600 != 0) goto <D.24601>; else goto <D.24602>;
          <D.24601>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 469, "info->sig->param_count <= MONO_MAX_SRC_REGS");
          <D.24602>:
          D.24396 = cfg->mempool;
          D.24589 = info->sig;
          D.24597 = D.24589->param_count;
          D.24603 = (unsigned int) D.24597;
          D.24604 = D.24603 * 8;
          args = mono_mempool_alloc0 (D.24396, D.24604);
          D.24589 = info->sig;
          D.24597 = D.24589->param_count;
          if (D.24597 != 0) goto <D.24605>; else goto <D.24606>;
          <D.24605>:
          {
            int sregs[3];
            int num_sregs;
            int i;

            try
              {
                D.24402 = ins->sreg1;
                sregs[0] = D.24402;
                D.24438 = ins->sreg2;
                sregs[1] = D.24438;
                D.24437 = ins->sreg3;
                sregs[2] = D.24437;
                D.24394 = ins->opcode;
                D.24395 = (int) D.24394;
                D.24607 = D.24395 + -313;
                D.24608 = ins_sreg_counts[D.24607];
                num_sregs = (int) D.24608;
                D.24589 = info->sig;
                D.24597 = D.24589->param_count;
                D.24609 = (int) D.24597;
                D.24610 = D.24609 != num_sregs;
                D.24611 = (long int) D.24610;
                D.24612 = __builtin_expect (D.24611, 0);
                if (D.24612 != 0) goto <D.24613>; else goto <D.24614>;
                <D.24613>:
                monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 476, "num_sregs == info->sig->param_count");
                <D.24614>:
                i = 0;
                goto <D.24208>;
                <D.24207>:
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24396 = cfg->mempool;
                D.24618 = mono_mempool_alloc (D.24396, 80);
                *D.24617 = D.24618;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24619->data.op[1].const_val = 0;
                D.24620 = D.24619->data.op[1].const_val;
                D.24619->data.op[0].const_val = D.24620;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24619->prev = 0B;
                D.24621 = D.24619->prev;
                D.24619->next = D.24621;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24619->opcode = 330;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24619->flags = 0;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24619->type = 0;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24619->dreg = -1;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24619->sreg3 = -1;
                D.24622 = D.24619->sreg3;
                D.24619->sreg2 = D.24622;
                D.24623 = D.24619->sreg2;
                D.24619->sreg1 = D.24623;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24401 = cfg->ip;
                D.24619->cil_code = D.24401;
                D.24615 = (long unsigned int) i;
                D.24616 = D.24615 * 8;
                D.24617 = args + D.24616;
                D.24619 = *D.24617;
                D.24624 = sregs[i];
                D.24619->dreg = D.24624;
                i = i + 1;
                <D.24208>:
                if (i < num_sregs) goto <D.24207>; else goto <D.24209>;
                <D.24209>:
              }
            finally
              {
                sregs = {CLOBBER};
              }
          }
          <D.24606>:
          D.24625 = mono_icall_get_wrapper (info);
          D.24589 = info->sig;
          call = mono_emit_native_call (cfg, D.24625, D.24589, args);
          D.24433 = ins->dreg;
          call->dreg = D.24433;
          ins->opcode = 316;
          ins->dreg = -1;
          ins->sreg3 = -1;
          D.24437 = ins->sreg3;
          ins->sreg2 = D.24437;
          D.24438 = ins->sreg2;
          ins->sreg1 = D.24438;
        }
        <D.24588>:
      }
      <D.24581>:
      D.24394 = ins->opcode;
      if (D.24394 == 316) goto <D.24626>; else goto <D.24627>;
      <D.24626>:
      repl.0 = repl;
      if (repl.0 != 0B) goto <D.24629>; else goto <D.24630>;
      <D.24629>:
      repl.0 = repl;
      D.24631 = (unsigned char) type;
      repl.0->type = D.24631;
      D.24632 = repl;
      return D.24632;
      <D.24630>:
      D.24403 = cfg->cbb;
      ins = D.24403->last_ins;
      D.24633 = ins == 0B;
      D.24634 = (long int) D.24633;
      D.24635 = __builtin_expect (D.24634, 0);
      if (D.24635 != 0) goto <D.24636>; else goto <D.24637>;
      <D.24636>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 497, "ins");
      <D.24637>:
      D.24631 = (unsigned char) type;
      ins->type = D.24631;
      D.24433 = ins->dreg;
      D.24638 = D.24433 != dreg;
      D.24639 = (long int) D.24638;
      D.24640 = __builtin_expect (D.24639, 0);
      if (D.24640 != 0) goto <D.24641>; else goto <D.24642>;
      <D.24641>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 499, "ins->dreg == dreg");
      <D.24642>:
      D.24632 = ins;
      return D.24632;
      <D.24627>:
      D.24632 = ins;
      return D.24632;
    }
  finally
    {
      repl = {CLOBBER};
    }
}


decompose_long_opcode (struct MonoCompile * cfg, struct MonoInst * ins, struct MonoInst * * repl_ins)
{
  short unsigned int D.24645;
  int D.24646;
  struct MonoMemPool * D.24647;
  long int D.24648;
  struct MonoInst * D.24649;
  int D.24650;
  int D.24651;
  const unsigned char * D.24652;
  int D.24653;
  int D.24654;
  struct MonoBasicBlock * D.24655;
  struct MonoInst * D.24656;
  int D.24660;
  int D.24661;
  long int D.24663;
  struct MonoInst * D.24664;
  short unsigned int D.24665;
  int D.24666;
  int D.24667;
  long int D.24671;
  struct MonoInst * D.24672;
  int D.24673;
  int D.24674;
  short unsigned int D.24679;
  long int D.24683;
  struct MonoInst * D.24684;
  int D.24685;
  int D.24686;
  long int D.24690;
  struct MonoInst * D.24691;
  int D.24692;
  int D.24693;
  long int _l.1;
  long int D.24697;
  long unsigned int D.24698;
  long int D.24699;
  long int D.24704;
  struct MonoInst * D.24705;
  int D.24706;
  int D.24707;
  long int D.24711;
  struct MonoInst * D.24712;
  int D.24713;
  int D.24714;
  long int D.24718;
  struct MonoInst * D.24719;
  int D.24720;
  int D.24721;
  long int D.24725;
  struct MonoInst * D.24726;
  int D.24727;
  int D.24728;
  long int _l.2;
  long int D.24732;
  long unsigned int D.24733;
  long int D.24734;
  long int D.24739;
  struct MonoInst * D.24740;
  int D.24741;
  int D.24742;
  long int D.24746;
  struct MonoInst * D.24747;
  int D.24748;
  int D.24749;
  long int _l.3;
  long int D.24753;
  long unsigned int D.24754;
  long int D.24755;
  long int D.24760;
  struct MonoInst * D.24761;
  int D.24762;
  int D.24763;
  long int D.24767;
  struct MonoInst * D.24768;
  int D.24769;
  int D.24770;
  long int D.24774;
  struct MonoInst * D.24775;
  int D.24776;
  int D.24777;
  long int _l.4;
  long int D.24781;
  long unsigned int D.24782;
  long int D.24783;
  long int D.24788;
  struct MonoInst * D.24789;
  int D.24790;
  int D.24791;
  long int D.24795;
  struct MonoInst * D.24796;
  int D.24797;
  int D.24798;
  long int D.24802;
  struct MonoInst * D.24803;
  int D.24804;
  int D.24805;
  long int _l.5;
  long int D.24809;
  long unsigned int D.24810;
  long int D.24811;
  long int D.24816;
  struct MonoInst * D.24817;
  int D.24818;
  int D.24819;
  long int D.24823;
  struct MonoInst * D.24824;
  int D.24825;
  int D.24826;
  long int D.24830;
  struct MonoInst * D.24831;
  int D.24832;
  int D.24833;
  long int _l.6;
  long int D.24837;
  long unsigned int D.24838;
  long int D.24839;
  long int D.24844;
  struct MonoInst * D.24845;
  int D.24846;
  int D.24847;
  long int D.24851;
  struct MonoInst * D.24852;
  int D.24853;
  int D.24854;
  long int D.24858;
  struct MonoInst * D.24859;
  int D.24860;
  int D.24861;
  long int _l.7;
  long int D.24865;
  long unsigned int D.24866;
  long int D.24867;
  long int D.24872;
  struct MonoInst * D.24873;
  int D.24874;
  int D.24875;
  long int D.24879;
  struct MonoInst * D.24880;
  int D.24881;
  int D.24882;
  long int _l.8;
  long int D.24886;
  long unsigned int D.24887;
  long int D.24888;
  long int D.24893;
  struct MonoInst * D.24894;
  int D.24895;
  int D.24896;
  long int D.24900;
  struct MonoInst * D.24901;
  int D.24902;
  int D.24903;
  long int D.24907;
  struct MonoInst * D.24908;
  int D.24909;
  int D.24910;
  long int _l.9;
  long int D.24914;
  long unsigned int D.24915;
  long int D.24916;
  long int D.24921;
  struct MonoInst * D.24922;
  int D.24923;
  int D.24924;
  long int D.24928;
  struct MonoInst * D.24929;
  int D.24930;
  int D.24931;
  long int D.24935;
  struct MonoInst * D.24936;
  int D.24937;
  int D.24938;
  long int _l.10;
  long int D.24942;
  long unsigned int D.24943;
  long int D.24944;
  long int D.24949;
  struct MonoInst * D.24950;
  int D.24951;
  int D.24952;
  long int D.24956;
  struct MonoInst * D.24957;
  int D.24958;
  int D.24959;
  long int D.24963;
  struct MonoInst * D.24964;
  int D.24965;
  int D.24966;
  long int _l.11;
  long int D.24970;
  long unsigned int D.24971;
  long int D.24972;
  long int D.24977;
  struct MonoInst * D.24978;
  int D.24979;
  int D.24980;
  long int D.24984;
  struct MonoInst * D.24985;
  int D.24986;
  int D.24987;
  long int D.24991;
  struct MonoInst * D.24992;
  int D.24993;
  int D.24994;
  long int _l.12;
  long int D.24998;
  long unsigned int D.24999;
  long int D.25000;
  long int D.25005;
  struct MonoInst * D.25006;
  int D.25007;
  int D.25008;
  long int D.25012;
  struct MonoInst * D.25013;
  int D.25014;
  int D.25015;
  long int _l.13;
  long int D.25019;
  long unsigned int D.25020;
  long int D.25021;
  long int D.25026;
  struct MonoInst * D.25027;
  int D.25028;
  int D.25029;
  long int D.25033;
  struct MonoInst * D.25034;
  int D.25035;
  int D.25036;
  long int D.25040;
  struct MonoInst * D.25041;
  int D.25042;
  int D.25043;
  long int _l.14;
  long int D.25047;
  long unsigned int D.25048;
  long int D.25049;
  long int D.25054;
  struct MonoInst * D.25055;
  int D.25056;
  int D.25057;
  long int D.25061;
  struct MonoInst * D.25062;
  int D.25063;
  int D.25064;
  long int D.25068;
  struct MonoInst * D.25069;
  int D.25070;
  int D.25071;
  long int _l.15;
  long int D.25075;
  long unsigned int D.25076;
  long int D.25077;
  long int D.25082;
  struct MonoInst * D.25083;
  int D.25084;
  int D.25085;
  long int D.25089;
  struct MonoInst * D.25090;
  int D.25091;
  int D.25092;
  long int _l.16;
  long int D.25096;
  long unsigned int D.25097;
  long int D.25098;
  long int D.25103;
  struct MonoInst * D.25104;
  int D.25105;
  int D.25106;
  long int D.25110;
  struct MonoInst * D.25111;
  int D.25112;
  int D.25113;
  long int D.25117;
  struct MonoInst * D.25118;
  int D.25119;
  int D.25120;
  long int _l.17;
  long int D.25124;
  long unsigned int D.25125;
  long int D.25126;
  long int D.25131;
  struct MonoInst * D.25132;
  int D.25133;
  int D.25134;
  long int D.25138;
  struct MonoInst * D.25139;
  int D.25140;
  int D.25141;
  long int D.25145;
  struct MonoInst * D.25146;
  int D.25147;
  int D.25148;
  long int _l.18;
  long int D.25152;
  long unsigned int D.25153;
  long int D.25154;
  long int D.25159;
  struct MonoInst * D.25160;
  int D.25161;
  int D.25162;
  long int D.25166;
  struct MonoInst * D.25167;
  int D.25168;
  int D.25169;
  long int D.25173;
  struct MonoInst * D.25174;
  int D.25175;
  int D.25176;
  long int _l.19;
  long int D.25180;
  long unsigned int D.25181;
  long int D.25182;
  long int D.25187;
  struct MonoInst * D.25188;
  int D.25189;
  int D.25190;
  long int D.25194;
  struct MonoInst * D.25195;
  int D.25196;
  int D.25197;
  gboolean D.25201;
  struct MonoInst * repl;

  repl = 0B;
  *repl_ins = 0B;
  D.24645 = ins->opcode;
  D.24646 = (int) D.24645;
  switch (D.24646) <default: <D.24138>, case 496: <D.24021>, case 497: <D.24023>, case 500: <D.24029>, case 501: <D.24025>, case 504: <D.24024>, case 505: <D.24122>, case 506: <D.24133>, case 507: <D.24031>, case 508: <D.24034>, case 513: <D.24058>, case 514: <D.24081>, case 515: <D.24104>, case 516: <D.24127>, case 517: <D.24068>, case 518: <D.24091>, case 519: <D.24117>, case 520: <D.24124>, case 521: <D.24126>, case 522: <D.24123>, case 523: <D.24050>, case 524: <D.24063>, case 525: <D.24073>, case 526: <D.24086>, case 527: <D.24096>, case 528: <D.24109>, case 529: <D.24125>, case 530: <D.24132>, case 537: <D.24026>, case 583: <D.24027>, case 587: <D.24028>, case 593: <D.24038>, case 594: <D.24040>, case 604: <D.24045>, case 608: <D.24046>, case 609: <D.24047>, case 610: <D.24048>, case 617: <D.24037>, case 618: <D.24039>>
  <D.24021>:
  ins->opcode = 762;
  goto <D.24022>;
  <D.24023>:
  <D.24024>:
  <D.24025>:
  <D.24026>:
  ins->opcode = 424;
  goto <D.24022>;
  <D.24027>:
  ins->opcode = 762;
  goto <D.24022>;
  <D.24028>:
  ins->opcode = 765;
  goto <D.24022>;
  <D.24029>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24648 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24648;
    inst->prev = 0B;
    D.24649 = inst->prev;
    inst->next = D.24649;
    inst->opcode = 637;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24650 = inst->sreg3;
    inst->sreg2 = D.24650;
    D.24651 = inst->sreg2;
    inst->sreg1 = D.24651;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    inst->data.op[1].const_val = 0;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24657>; else goto <D.24658>;
    <D.24657>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24659>;
    <D.24658>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24659>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24031>:
  if (0 != 0) goto <D.24022>; else goto <D.24662>;
  <D.24662>:
  {
    int opcode;

    opcode = 755;
    D.24647 = cfg->mempool;
    repl = mono_mempool_alloc (D.24647, 80);
    repl->data.op[1].const_val = 0;
    D.24663 = repl->data.op[1].const_val;
    repl->data.op[0].const_val = D.24663;
    repl->prev = 0B;
    D.24664 = repl->prev;
    repl->next = D.24664;
    D.24665 = (short unsigned int) opcode;
    repl->opcode = D.24665;
    repl->flags = 0;
    repl->type = 0;
    repl->dreg = -1;
    repl->sreg3 = -1;
    D.24666 = repl->sreg3;
    repl->sreg2 = D.24666;
    D.24667 = repl->sreg2;
    repl->sreg1 = D.24667;
    D.24652 = cfg->ip;
    repl->cil_code = D.24652;
    D.24653 = ins->dreg;
    repl->dreg = D.24653;
    D.24654 = ins->sreg1;
    repl->sreg1 = D.24654;
    D.24661 = ins->sreg2;
    repl->sreg2 = D.24661;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24668>; else goto <D.24669>;
    <D.24668>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = repl;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    repl->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = repl;
    goto <D.24670>;
    <D.24669>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = repl;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24670>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24671 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24671;
    inst->prev = 0B;
    D.24672 = inst->prev;
    inst->next = D.24672;
    inst->opcode = 461;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24673 = inst->sreg3;
    inst->sreg2 = D.24673;
    D.24674 = inst->sreg2;
    inst->sreg1 = D.24674;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24675>; else goto <D.24676>;
    <D.24675>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24677>;
    <D.24676>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24677>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24034>:
  if (0 != 0) goto <D.24022>; else goto <D.24678>;
  <D.24678>:
  {
    int opcode;

    opcode = 755;
    D.24647 = cfg->mempool;
    repl = mono_mempool_alloc (D.24647, 80);
    repl->data.op[1].const_val = 0;
    D.24663 = repl->data.op[1].const_val;
    repl->data.op[0].const_val = D.24663;
    repl->prev = 0B;
    D.24664 = repl->prev;
    repl->next = D.24664;
    D.24679 = (short unsigned int) opcode;
    repl->opcode = D.24679;
    repl->flags = 0;
    repl->type = 0;
    repl->dreg = -1;
    repl->sreg3 = -1;
    D.24666 = repl->sreg3;
    repl->sreg2 = D.24666;
    D.24667 = repl->sreg2;
    repl->sreg1 = D.24667;
    D.24652 = cfg->ip;
    repl->cil_code = D.24652;
    D.24653 = ins->dreg;
    repl->dreg = D.24653;
    D.24654 = ins->sreg1;
    repl->sreg1 = D.24654;
    D.24661 = ins->sreg2;
    repl->sreg2 = D.24661;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24680>; else goto <D.24681>;
    <D.24680>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = repl;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    repl->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = repl;
    goto <D.24682>;
    <D.24681>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = repl;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24682>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24683 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24683;
    inst->prev = 0B;
    D.24684 = inst->prev;
    inst->next = D.24684;
    inst->opcode = 463;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24685 = inst->sreg3;
    inst->sreg2 = D.24685;
    D.24686 = inst->sreg2;
    inst->sreg1 = D.24686;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24687>; else goto <D.24688>;
    <D.24687>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24689>;
    <D.24688>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24689>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24037>:
  <D.24038>:
  ins->opcode = 762;
  goto <D.24022>;
  <D.24039>:
  <D.24040>:
  {
    struct MonoInst * inst;

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

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

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24704 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24704;
    inst->prev = 0B;
    D.24705 = inst->prev;
    inst->next = D.24705;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24706 = inst->sreg3;
    inst->sreg2 = D.24706;
    D.24707 = inst->sreg2;
    inst->sreg1 = D.24707;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24708>; else goto <D.24709>;
    <D.24708>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24710>;
    <D.24709>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24710>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24711 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24711;
    inst->prev = 0B;
    D.24712 = inst->prev;
    inst->next = D.24712;
    inst->opcode = 765;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24713 = inst->sreg3;
    inst->sreg2 = D.24713;
    D.24714 = inst->sreg2;
    inst->sreg1 = D.24714;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24715>; else goto <D.24716>;
    <D.24715>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24717>;
    <D.24716>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24717>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24045>:
  <D.24046>:
  <D.24047>:
  <D.24048>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24718 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24718;
    inst->prev = 0B;
    D.24719 = inst->prev;
    inst->next = D.24719;
    inst->opcode = 637;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24720 = inst->sreg3;
    inst->sreg2 = D.24720;
    D.24721 = inst->sreg2;
    inst->sreg1 = D.24721;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    inst->data.op[1].const_val = 0;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24722>; else goto <D.24723>;
    <D.24722>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24724>;
    <D.24723>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24724>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24050>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24725 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24725;
    inst->prev = 0B;
    D.24726 = inst->prev;
    inst->next = D.24726;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24727 = inst->sreg3;
    inst->sreg2 = D.24727;
    D.24728 = inst->sreg2;
    inst->sreg1 = D.24728;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.24729>; else goto <D.24730>;
    <D.24729>:
    {
      guint64 _l;

      _l = 127;
      _l.2 = (long int) _l;
      D.24732 = _l.2 & 4294967295;
      inst->data.op[1].const_val = D.24732;
      D.24733 = _l >> 32;
      D.24734 = (long int) D.24733;
      inst->data.op[0].const_val = D.24734;
    }
    goto <D.24735>;
    <D.24730>:
    inst->data.op[1].const_val = 127;
    <D.24735>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24736>; else goto <D.24737>;
    <D.24736>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24738>;
    <D.24737>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24738>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24739 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24739;
    inst->prev = 0B;
    D.24740 = inst->prev;
    inst->next = D.24740;
    inst->opcode = 453;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24741 = inst->sreg3;
    inst->sreg2 = D.24741;
    D.24742 = inst->sreg2;
    inst->sreg1 = D.24742;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24743>; else goto <D.24744>;
    <D.24743>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24745>;
    <D.24744>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24745>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24746 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24746;
    inst->prev = 0B;
    D.24747 = inst->prev;
    inst->next = D.24747;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24748 = inst->sreg3;
    inst->sreg2 = D.24748;
    D.24749 = inst->sreg2;
    inst->sreg1 = D.24749;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.24750>; else goto <D.24751>;
    <D.24750>:
    {
      guint64 _l;

      _l = 18446744073709551488;
      _l.3 = (long int) _l;
      D.24753 = _l.3 & 4294967295;
      inst->data.op[1].const_val = D.24753;
      D.24754 = _l >> 32;
      D.24755 = (long int) D.24754;
      inst->data.op[0].const_val = D.24755;
    }
    goto <D.24756>;
    <D.24751>:
    inst->data.op[1].const_val = -128;
    <D.24756>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24757>; else goto <D.24758>;
    <D.24757>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24759>;
    <D.24758>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24759>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24760 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24760;
    inst->prev = 0B;
    D.24761 = inst->prev;
    inst->next = D.24761;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24762 = inst->sreg3;
    inst->sreg2 = D.24762;
    D.24763 = inst->sreg2;
    inst->sreg1 = D.24763;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24764>; else goto <D.24765>;
    <D.24764>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24766>;
    <D.24765>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24766>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24767 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24767;
    inst->prev = 0B;
    D.24768 = inst->prev;
    inst->next = D.24768;
    inst->opcode = 494;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24769 = inst->sreg3;
    inst->sreg2 = D.24769;
    D.24770 = inst->sreg2;
    inst->sreg1 = D.24770;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24771>; else goto <D.24772>;
    <D.24771>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24773>;
    <D.24772>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24773>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24058>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24774 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24774;
    inst->prev = 0B;
    D.24775 = inst->prev;
    inst->next = D.24775;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24776 = inst->sreg3;
    inst->sreg2 = D.24776;
    D.24777 = inst->sreg2;
    inst->sreg1 = D.24777;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.24778>; else goto <D.24779>;
    <D.24778>:
    {
      guint64 _l;

      _l = 127;
      _l.4 = (long int) _l;
      D.24781 = _l.4 & 4294967295;
      inst->data.op[1].const_val = D.24781;
      D.24782 = _l >> 32;
      D.24783 = (long int) D.24782;
      inst->data.op[0].const_val = D.24783;
    }
    goto <D.24784>;
    <D.24779>:
    inst->data.op[1].const_val = 127;
    <D.24784>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24785>; else goto <D.24786>;
    <D.24785>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24787>;
    <D.24786>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24787>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24788 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24788;
    inst->prev = 0B;
    D.24789 = inst->prev;
    inst->next = D.24789;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24790 = inst->sreg3;
    inst->sreg2 = D.24790;
    D.24791 = inst->sreg2;
    inst->sreg1 = D.24791;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24792>; else goto <D.24793>;
    <D.24792>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24794>;
    <D.24793>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24794>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24795 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24795;
    inst->prev = 0B;
    D.24796 = inst->prev;
    inst->next = D.24796;
    inst->opcode = 494;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24797 = inst->sreg3;
    inst->sreg2 = D.24797;
    D.24798 = inst->sreg2;
    inst->sreg1 = D.24798;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24799>; else goto <D.24800>;
    <D.24799>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24801>;
    <D.24800>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24801>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24063>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24802 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24802;
    inst->prev = 0B;
    D.24803 = inst->prev;
    inst->next = D.24803;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24804 = inst->sreg3;
    inst->sreg2 = D.24804;
    D.24805 = inst->sreg2;
    inst->sreg1 = D.24805;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.24806>; else goto <D.24807>;
    <D.24806>:
    {
      guint64 _l;

      _l = 255;
      _l.5 = (long int) _l;
      D.24809 = _l.5 & 4294967295;
      inst->data.op[1].const_val = D.24809;
      D.24810 = _l >> 32;
      D.24811 = (long int) D.24810;
      inst->data.op[0].const_val = D.24811;
    }
    goto <D.24812>;
    <D.24807>:
    inst->data.op[1].const_val = 255;
    <D.24812>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24813>; else goto <D.24814>;
    <D.24813>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24815>;
    <D.24814>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24815>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24816 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24816;
    inst->prev = 0B;
    D.24817 = inst->prev;
    inst->next = D.24817;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24818 = inst->sreg3;
    inst->sreg2 = D.24818;
    D.24819 = inst->sreg2;
    inst->sreg1 = D.24819;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24820>; else goto <D.24821>;
    <D.24820>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24822>;
    <D.24821>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24822>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24823 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24823;
    inst->prev = 0B;
    D.24824 = inst->prev;
    inst->next = D.24824;
    inst->opcode = 436;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24825 = inst->sreg3;
    inst->sreg2 = D.24825;
    D.24826 = inst->sreg2;
    inst->sreg1 = D.24826;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    inst->data.op[1].const_val = 255;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24827>; else goto <D.24828>;
    <D.24827>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24829>;
    <D.24828>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24829>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24068>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24830 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24830;
    inst->prev = 0B;
    D.24831 = inst->prev;
    inst->next = D.24831;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24832 = inst->sreg3;
    inst->sreg2 = D.24832;
    D.24833 = inst->sreg2;
    inst->sreg1 = D.24833;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.24834>; else goto <D.24835>;
    <D.24834>:
    {
      guint64 _l;

      _l = 255;
      _l.6 = (long int) _l;
      D.24837 = _l.6 & 4294967295;
      inst->data.op[1].const_val = D.24837;
      D.24838 = _l >> 32;
      D.24839 = (long int) D.24838;
      inst->data.op[0].const_val = D.24839;
    }
    goto <D.24840>;
    <D.24835>:
    inst->data.op[1].const_val = 255;
    <D.24840>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24841>; else goto <D.24842>;
    <D.24841>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24843>;
    <D.24842>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24843>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24844 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24844;
    inst->prev = 0B;
    D.24845 = inst->prev;
    inst->next = D.24845;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24846 = inst->sreg3;
    inst->sreg2 = D.24846;
    D.24847 = inst->sreg2;
    inst->sreg1 = D.24847;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24848>; else goto <D.24849>;
    <D.24848>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24850>;
    <D.24849>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24850>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24851 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24851;
    inst->prev = 0B;
    D.24852 = inst->prev;
    inst->next = D.24852;
    inst->opcode = 436;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24853 = inst->sreg3;
    inst->sreg2 = D.24853;
    D.24854 = inst->sreg2;
    inst->sreg1 = D.24854;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    inst->data.op[1].const_val = 255;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24855>; else goto <D.24856>;
    <D.24855>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24857>;
    <D.24856>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24857>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24073>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24858 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24858;
    inst->prev = 0B;
    D.24859 = inst->prev;
    inst->next = D.24859;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24860 = inst->sreg3;
    inst->sreg2 = D.24860;
    D.24861 = inst->sreg2;
    inst->sreg1 = D.24861;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.24862>; else goto <D.24863>;
    <D.24862>:
    {
      guint64 _l;

      _l = 32767;
      _l.7 = (long int) _l;
      D.24865 = _l.7 & 4294967295;
      inst->data.op[1].const_val = D.24865;
      D.24866 = _l >> 32;
      D.24867 = (long int) D.24866;
      inst->data.op[0].const_val = D.24867;
    }
    goto <D.24868>;
    <D.24863>:
    inst->data.op[1].const_val = 32767;
    <D.24868>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24869>; else goto <D.24870>;
    <D.24869>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24871>;
    <D.24870>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24871>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24872 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24872;
    inst->prev = 0B;
    D.24873 = inst->prev;
    inst->next = D.24873;
    inst->opcode = 453;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24874 = inst->sreg3;
    inst->sreg2 = D.24874;
    D.24875 = inst->sreg2;
    inst->sreg1 = D.24875;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24876>; else goto <D.24877>;
    <D.24876>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24878>;
    <D.24877>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24878>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24879 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24879;
    inst->prev = 0B;
    D.24880 = inst->prev;
    inst->next = D.24880;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24881 = inst->sreg3;
    inst->sreg2 = D.24881;
    D.24882 = inst->sreg2;
    inst->sreg1 = D.24882;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.24883>; else goto <D.24884>;
    <D.24883>:
    {
      guint64 _l;

      _l = 18446744073709518848;
      _l.8 = (long int) _l;
      D.24886 = _l.8 & 4294967295;
      inst->data.op[1].const_val = D.24886;
      D.24887 = _l >> 32;
      D.24888 = (long int) D.24887;
      inst->data.op[0].const_val = D.24888;
    }
    goto <D.24889>;
    <D.24884>:
    inst->data.op[1].const_val = -32768;
    <D.24889>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24890>; else goto <D.24891>;
    <D.24890>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24892>;
    <D.24891>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24892>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24893 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24893;
    inst->prev = 0B;
    D.24894 = inst->prev;
    inst->next = D.24894;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24895 = inst->sreg3;
    inst->sreg2 = D.24895;
    D.24896 = inst->sreg2;
    inst->sreg1 = D.24896;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24897>; else goto <D.24898>;
    <D.24897>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24899>;
    <D.24898>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24899>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24900 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24900;
    inst->prev = 0B;
    D.24901 = inst->prev;
    inst->next = D.24901;
    inst->opcode = 495;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24902 = inst->sreg3;
    inst->sreg2 = D.24902;
    D.24903 = inst->sreg2;
    inst->sreg1 = D.24903;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24904>; else goto <D.24905>;
    <D.24904>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24906>;
    <D.24905>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24906>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24081>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24907 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24907;
    inst->prev = 0B;
    D.24908 = inst->prev;
    inst->next = D.24908;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24909 = inst->sreg3;
    inst->sreg2 = D.24909;
    D.24910 = inst->sreg2;
    inst->sreg1 = D.24910;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.24911>; else goto <D.24912>;
    <D.24911>:
    {
      guint64 _l;

      _l = 32767;
      _l.9 = (long int) _l;
      D.24914 = _l.9 & 4294967295;
      inst->data.op[1].const_val = D.24914;
      D.24915 = _l >> 32;
      D.24916 = (long int) D.24915;
      inst->data.op[0].const_val = D.24916;
    }
    goto <D.24917>;
    <D.24912>:
    inst->data.op[1].const_val = 32767;
    <D.24917>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24918>; else goto <D.24919>;
    <D.24918>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24920>;
    <D.24919>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24920>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24921 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24921;
    inst->prev = 0B;
    D.24922 = inst->prev;
    inst->next = D.24922;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24923 = inst->sreg3;
    inst->sreg2 = D.24923;
    D.24924 = inst->sreg2;
    inst->sreg1 = D.24924;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24925>; else goto <D.24926>;
    <D.24925>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24927>;
    <D.24926>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24927>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24928 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24928;
    inst->prev = 0B;
    D.24929 = inst->prev;
    inst->next = D.24929;
    inst->opcode = 495;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24930 = inst->sreg3;
    inst->sreg2 = D.24930;
    D.24931 = inst->sreg2;
    inst->sreg1 = D.24931;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24932>; else goto <D.24933>;
    <D.24932>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24934>;
    <D.24933>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24934>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24086>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24935 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24935;
    inst->prev = 0B;
    D.24936 = inst->prev;
    inst->next = D.24936;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24937 = inst->sreg3;
    inst->sreg2 = D.24937;
    D.24938 = inst->sreg2;
    inst->sreg1 = D.24938;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.24939>; else goto <D.24940>;
    <D.24939>:
    {
      guint64 _l;

      _l = 65535;
      _l.10 = (long int) _l;
      D.24942 = _l.10 & 4294967295;
      inst->data.op[1].const_val = D.24942;
      D.24943 = _l >> 32;
      D.24944 = (long int) D.24943;
      inst->data.op[0].const_val = D.24944;
    }
    goto <D.24945>;
    <D.24940>:
    inst->data.op[1].const_val = 65535;
    <D.24945>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24946>; else goto <D.24947>;
    <D.24946>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24948>;
    <D.24947>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24948>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24949 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24949;
    inst->prev = 0B;
    D.24950 = inst->prev;
    inst->next = D.24950;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24951 = inst->sreg3;
    inst->sreg2 = D.24951;
    D.24952 = inst->sreg2;
    inst->sreg1 = D.24952;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24953>; else goto <D.24954>;
    <D.24953>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24955>;
    <D.24954>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24955>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24956 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24956;
    inst->prev = 0B;
    D.24957 = inst->prev;
    inst->next = D.24957;
    inst->opcode = 436;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24958 = inst->sreg3;
    inst->sreg2 = D.24958;
    D.24959 = inst->sreg2;
    inst->sreg1 = D.24959;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    inst->data.op[1].const_val = 65535;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24960>; else goto <D.24961>;
    <D.24960>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24962>;
    <D.24961>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24962>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24091>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24963 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24963;
    inst->prev = 0B;
    D.24964 = inst->prev;
    inst->next = D.24964;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24965 = inst->sreg3;
    inst->sreg2 = D.24965;
    D.24966 = inst->sreg2;
    inst->sreg1 = D.24966;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.24967>; else goto <D.24968>;
    <D.24967>:
    {
      guint64 _l;

      _l = 65535;
      _l.11 = (long int) _l;
      D.24970 = _l.11 & 4294967295;
      inst->data.op[1].const_val = D.24970;
      D.24971 = _l >> 32;
      D.24972 = (long int) D.24971;
      inst->data.op[0].const_val = D.24972;
    }
    goto <D.24973>;
    <D.24968>:
    inst->data.op[1].const_val = 65535;
    <D.24973>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24974>; else goto <D.24975>;
    <D.24974>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24976>;
    <D.24975>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24976>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24977 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24977;
    inst->prev = 0B;
    D.24978 = inst->prev;
    inst->next = D.24978;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24979 = inst->sreg3;
    inst->sreg2 = D.24979;
    D.24980 = inst->sreg2;
    inst->sreg1 = D.24980;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24981>; else goto <D.24982>;
    <D.24981>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24983>;
    <D.24982>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24983>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24984 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24984;
    inst->prev = 0B;
    D.24985 = inst->prev;
    inst->next = D.24985;
    inst->opcode = 436;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24986 = inst->sreg3;
    inst->sreg2 = D.24986;
    D.24987 = inst->sreg2;
    inst->sreg1 = D.24987;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    inst->data.op[1].const_val = 65535;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.24988>; else goto <D.24989>;
    <D.24988>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.24990>;
    <D.24989>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.24990>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24096>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.24991 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.24991;
    inst->prev = 0B;
    D.24992 = inst->prev;
    inst->next = D.24992;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.24993 = inst->sreg3;
    inst->sreg2 = D.24993;
    D.24994 = inst->sreg2;
    inst->sreg1 = D.24994;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.24995>; else goto <D.24996>;
    <D.24995>:
    {
      guint64 _l;

      _l = 2147483647;
      _l.12 = (long int) _l;
      D.24998 = _l.12 & 4294967295;
      inst->data.op[1].const_val = D.24998;
      D.24999 = _l >> 32;
      D.25000 = (long int) D.24999;
      inst->data.op[0].const_val = D.25000;
    }
    goto <D.25001>;
    <D.24996>:
    inst->data.op[1].const_val = 2147483647;
    <D.25001>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25002>; else goto <D.25003>;
    <D.25002>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25004>;
    <D.25003>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25004>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25005 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25005;
    inst->prev = 0B;
    D.25006 = inst->prev;
    inst->next = D.25006;
    inst->opcode = 453;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25007 = inst->sreg3;
    inst->sreg2 = D.25007;
    D.25008 = inst->sreg2;
    inst->sreg1 = D.25008;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25009>; else goto <D.25010>;
    <D.25009>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25011>;
    <D.25010>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25011>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25012 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25012;
    inst->prev = 0B;
    D.25013 = inst->prev;
    inst->next = D.25013;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25014 = inst->sreg3;
    inst->sreg2 = D.25014;
    D.25015 = inst->sreg2;
    inst->sreg1 = D.25015;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.25016>; else goto <D.25017>;
    <D.25016>:
    {
      guint64 _l;

      _l = 18446744071562067968;
      _l.13 = (long int) _l;
      D.25019 = _l.13 & 4294967295;
      inst->data.op[1].const_val = D.25019;
      D.25020 = _l >> 32;
      D.25021 = (long int) D.25020;
      inst->data.op[0].const_val = D.25021;
    }
    goto <D.25022>;
    <D.25017>:
    inst->data.op[1].const_val = -2147483648;
    <D.25022>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25023>; else goto <D.25024>;
    <D.25023>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25025>;
    <D.25024>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25025>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25026 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25026;
    inst->prev = 0B;
    D.25027 = inst->prev;
    inst->next = D.25027;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25028 = inst->sreg3;
    inst->sreg2 = D.25028;
    D.25029 = inst->sreg2;
    inst->sreg1 = D.25029;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25030>; else goto <D.25031>;
    <D.25030>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25032>;
    <D.25031>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25032>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25033 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25033;
    inst->prev = 0B;
    D.25034 = inst->prev;
    inst->next = D.25034;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25035 = inst->sreg3;
    inst->sreg2 = D.25035;
    D.25036 = inst->sreg2;
    inst->sreg1 = D.25036;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25037>; else goto <D.25038>;
    <D.25037>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25039>;
    <D.25038>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25039>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24104>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25040 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25040;
    inst->prev = 0B;
    D.25041 = inst->prev;
    inst->next = D.25041;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25042 = inst->sreg3;
    inst->sreg2 = D.25042;
    D.25043 = inst->sreg2;
    inst->sreg1 = D.25043;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.25044>; else goto <D.25045>;
    <D.25044>:
    {
      guint64 _l;

      _l = 2147483647;
      _l.14 = (long int) _l;
      D.25047 = _l.14 & 4294967295;
      inst->data.op[1].const_val = D.25047;
      D.25048 = _l >> 32;
      D.25049 = (long int) D.25048;
      inst->data.op[0].const_val = D.25049;
    }
    goto <D.25050>;
    <D.25045>:
    inst->data.op[1].const_val = 2147483647;
    <D.25050>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25051>; else goto <D.25052>;
    <D.25051>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25053>;
    <D.25052>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25053>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25054 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25054;
    inst->prev = 0B;
    D.25055 = inst->prev;
    inst->next = D.25055;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25056 = inst->sreg3;
    inst->sreg2 = D.25056;
    D.25057 = inst->sreg2;
    inst->sreg1 = D.25057;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25058>; else goto <D.25059>;
    <D.25058>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25060>;
    <D.25059>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25060>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25061 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25061;
    inst->prev = 0B;
    D.25062 = inst->prev;
    inst->next = D.25062;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25063 = inst->sreg3;
    inst->sreg2 = D.25063;
    D.25064 = inst->sreg2;
    inst->sreg1 = D.25064;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25065>; else goto <D.25066>;
    <D.25065>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25067>;
    <D.25066>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25067>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24109>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25068 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25068;
    inst->prev = 0B;
    D.25069 = inst->prev;
    inst->next = D.25069;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25070 = inst->sreg3;
    inst->sreg2 = D.25070;
    D.25071 = inst->sreg2;
    inst->sreg1 = D.25071;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.25072>; else goto <D.25073>;
    <D.25072>:
    {
      guint64 _l;

      _l = 4294967295;
      _l.15 = (long int) _l;
      D.25075 = _l.15 & 4294967295;
      inst->data.op[1].const_val = D.25075;
      D.25076 = _l >> 32;
      D.25077 = (long int) D.25076;
      inst->data.op[0].const_val = D.25077;
    }
    goto <D.25078>;
    <D.25073>:
    inst->data.op[1].const_val = 4294967295;
    <D.25078>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25079>; else goto <D.25080>;
    <D.25079>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25081>;
    <D.25080>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25081>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25082 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25082;
    inst->prev = 0B;
    D.25083 = inst->prev;
    inst->next = D.25083;
    inst->opcode = 453;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25084 = inst->sreg3;
    inst->sreg2 = D.25084;
    D.25085 = inst->sreg2;
    inst->sreg1 = D.25085;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25086>; else goto <D.25087>;
    <D.25086>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25088>;
    <D.25087>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25088>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25089 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25089;
    inst->prev = 0B;
    D.25090 = inst->prev;
    inst->next = D.25090;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25091 = inst->sreg3;
    inst->sreg2 = D.25091;
    D.25092 = inst->sreg2;
    inst->sreg1 = D.25092;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.25093>; else goto <D.25094>;
    <D.25093>:
    {
      guint64 _l;

      _l = 0;
      _l.16 = (long int) _l;
      D.25096 = _l.16 & 4294967295;
      inst->data.op[1].const_val = D.25096;
      D.25097 = _l >> 32;
      D.25098 = (long int) D.25097;
      inst->data.op[0].const_val = D.25098;
    }
    goto <D.25099>;
    <D.25094>:
    inst->data.op[1].const_val = 0;
    <D.25099>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25100>; else goto <D.25101>;
    <D.25100>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25102>;
    <D.25101>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25102>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25103 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25103;
    inst->prev = 0B;
    D.25104 = inst->prev;
    inst->next = D.25104;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25105 = inst->sreg3;
    inst->sreg2 = D.25105;
    D.25106 = inst->sreg2;
    inst->sreg1 = D.25106;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25107>; else goto <D.25108>;
    <D.25107>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25109>;
    <D.25108>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25109>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25110 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25110;
    inst->prev = 0B;
    D.25111 = inst->prev;
    inst->next = D.25111;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25112 = inst->sreg3;
    inst->sreg2 = D.25112;
    D.25113 = inst->sreg2;
    inst->sreg1 = D.25113;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25114>; else goto <D.25115>;
    <D.25114>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25116>;
    <D.25115>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25116>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24117>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25117 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25117;
    inst->prev = 0B;
    D.25118 = inst->prev;
    inst->next = D.25118;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25119 = inst->sreg3;
    inst->sreg2 = D.25119;
    D.25120 = inst->sreg2;
    inst->sreg1 = D.25120;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.25121>; else goto <D.25122>;
    <D.25121>:
    {
      guint64 _l;

      _l = 4294967295;
      _l.17 = (long int) _l;
      D.25124 = _l.17 & 4294967295;
      inst->data.op[1].const_val = D.25124;
      D.25125 = _l >> 32;
      D.25126 = (long int) D.25125;
      inst->data.op[0].const_val = D.25126;
    }
    goto <D.25127>;
    <D.25122>:
    inst->data.op[1].const_val = 4294967295;
    <D.25127>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25128>; else goto <D.25129>;
    <D.25128>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25130>;
    <D.25129>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25130>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25131 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25131;
    inst->prev = 0B;
    D.25132 = inst->prev;
    inst->next = D.25132;
    inst->opcode = 458;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25133 = inst->sreg3;
    inst->sreg2 = D.25133;
    D.25134 = inst->sreg2;
    inst->sreg1 = D.25134;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25135>; else goto <D.25136>;
    <D.25135>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25137>;
    <D.25136>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25137>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25138 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25138;
    inst->prev = 0B;
    D.25139 = inst->prev;
    inst->next = D.25139;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25140 = inst->sreg3;
    inst->sreg2 = D.25140;
    D.25141 = inst->sreg2;
    inst->sreg1 = D.25141;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25142>; else goto <D.25143>;
    <D.25142>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25144>;
    <D.25143>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25144>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24122>:
  <D.24123>:
  <D.24124>:
  <D.24125>:
  ins->opcode = 424;
  goto <D.24022>;
  <D.24126>:
  <D.24127>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25145 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25145;
    inst->prev = 0B;
    D.25146 = inst->prev;
    inst->next = D.25146;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25147 = inst->sreg3;
    inst->sreg2 = D.25147;
    D.25148 = inst->sreg2;
    inst->sreg1 = D.25148;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.25149>; else goto <D.25150>;
    <D.25149>:
    {
      guint64 _l;

      _l = 0;
      _l.18 = (long int) _l;
      D.25152 = _l.18 & 4294967295;
      inst->data.op[1].const_val = D.25152;
      D.25153 = _l >> 32;
      D.25154 = (long int) D.25153;
      inst->data.op[0].const_val = D.25154;
    }
    goto <D.25155>;
    <D.25150>:
    inst->data.op[1].const_val = 0;
    <D.25155>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25156>; else goto <D.25157>;
    <D.25156>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25158>;
    <D.25157>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25158>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25159 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25159;
    inst->prev = 0B;
    D.25160 = inst->prev;
    inst->next = D.25160;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25161 = inst->sreg3;
    inst->sreg2 = D.25161;
    D.25162 = inst->sreg2;
    inst->sreg1 = D.25162;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25163>; else goto <D.25164>;
    <D.25163>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25165>;
    <D.25164>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25165>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25166 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25166;
    inst->prev = 0B;
    D.25167 = inst->prev;
    inst->next = D.25167;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25168 = inst->sreg3;
    inst->sreg2 = D.25168;
    D.25169 = inst->sreg2;
    inst->sreg1 = D.25169;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25170>; else goto <D.25171>;
    <D.25170>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25172>;
    <D.25171>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25172>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24132>:
  <D.24133>:
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25173 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25173;
    inst->prev = 0B;
    D.25174 = inst->prev;
    inst->next = D.25174;
    inst->opcode = 328;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25175 = inst->sreg3;
    inst->sreg2 = D.25175;
    D.25176 = inst->sreg2;
    inst->sreg1 = D.25176;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    if (0 != 0) goto <D.25177>; else goto <D.25178>;
    <D.25177>:
    {
      guint64 _l;

      _l = 0;
      _l.19 = (long int) _l;
      D.25180 = _l.19 & 4294967295;
      inst->data.op[1].const_val = D.25180;
      D.25181 = _l >> 32;
      D.25182 = (long int) D.25181;
      inst->data.op[0].const_val = D.25182;
    }
    goto <D.25183>;
    <D.25178>:
    inst->data.op[1].const_val = 0;
    <D.25183>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25184>; else goto <D.25185>;
    <D.25184>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25186>;
    <D.25185>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25186>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25187 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25187;
    inst->prev = 0B;
    D.25188 = inst->prev;
    inst->next = D.25188;
    inst->opcode = 455;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25189 = inst->sreg3;
    inst->sreg2 = D.25189;
    D.25190 = inst->sreg2;
    inst->sreg1 = D.25190;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    inst->data.op[1].p = "OverflowException";
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25191>; else goto <D.25192>;
    <D.25191>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25193>;
    <D.25192>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25193>:
  }
  {
    struct MonoInst * inst;

    D.24647 = cfg->mempool;
    inst = mono_mempool_alloc (D.24647, 80);
    inst->data.op[1].const_val = 0;
    D.25194 = inst->data.op[1].const_val;
    inst->data.op[0].const_val = D.25194;
    inst->prev = 0B;
    D.25195 = inst->prev;
    inst->next = D.25195;
    inst->opcode = 424;
    inst->flags = 0;
    inst->type = 0;
    inst->dreg = -1;
    inst->sreg3 = -1;
    D.25196 = inst->sreg3;
    inst->sreg2 = D.25196;
    D.25197 = inst->sreg2;
    inst->sreg1 = D.25197;
    D.24652 = cfg->ip;
    inst->cil_code = D.24652;
    D.24653 = ins->dreg;
    inst->dreg = D.24653;
    D.24654 = ins->sreg1;
    inst->sreg1 = D.24654;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    if (D.24656 != 0B) goto <D.25198>; else goto <D.25199>;
    <D.25198>:
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    D.24656->next = inst;
    D.24655 = cfg->cbb;
    D.24656 = D.24655->last_ins;
    inst->prev = D.24656;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    goto <D.25200>;
    <D.25199>:
    D.24655 = cfg->cbb;
    D.24655 = cfg->cbb;
    D.24655->last_ins = inst;
    D.24656 = D.24655->last_ins;
    D.24655->code = D.24656;
    <D.25200>:
  }
  ins->opcode = 316;
  ins->dreg = -1;
  ins->sreg3 = -1;
  D.24660 = ins->sreg3;
  ins->sreg2 = D.24660;
  D.24661 = ins->sreg2;
  ins->sreg1 = D.24661;
  goto <D.24022>;
  <D.24138>:
  D.25201 = 0;
  return D.25201;
  <D.24022>:
  *repl_ins = repl;
  D.25201 = 1;
  return D.25201;
}


mono_decompose_long_opts (struct MonoCompile * cfg)
{

}


mono_decompose_vtype_opts (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.25205;
  void * D.25206;
  unsigned int D.25207;
  struct MonoBasicBlock * D.25210;
  struct MonoInst * D.25211;
  short unsigned int D.25212;
  int D.25213;
  struct MonoInst * iftmp.20;
  int D.25215;
  unsigned int D.25216;
  unsigned int D.25217;
  struct MonoInst * * D.25220;
  long unsigned int D.25221;
  long unsigned int D.25222;
  struct MonoInst * * D.25223;
  struct MonoInst * iftmp.21;
  int D.25226;
  unsigned int D.25227;
  long unsigned int D.25230;
  long unsigned int D.25231;
  struct MonoInst * * D.25232;
  struct MonoClass * D.25234;
  _Bool D.25235;
  long int D.25236;
  long int D.25237;
  struct MonoType * D.25242;
  int D.25245;
  long int D.25248;
  struct MonoInst * D.25249;
  int D.25250;
  int D.25251;
  const unsigned char * D.25252;
  unsigned char D.25253;
  unsigned char D.25254;
  struct MonoClass * D.25255;
  unsigned int D.25256;
  int D.25257;
  int D.25258;
  _Bool D.25259;
  long int D.25260;
  long int D.25261;
  struct MonoType * D.25264;
  int D.25265;
  struct MonoInst * iftmp.22;
  int D.25271;
  int D.25272;
  unsigned int D.25273;
  sizetype D.25276;
  sizetype D.25277;
  sizetype D.25278;
  struct MonoInst * * D.25279;
  struct MonoInst * iftmp.23;
  int D.25282;
  unsigned int D.25283;
  sizetype D.25286;
  sizetype D.25287;
  struct MonoInst * * D.25288;
  _Bool D.25290;
  long int D.25291;
  long int D.25292;
  _Bool D.25295;
  long int D.25296;
  long int D.25297;
  unsigned char D.25300;
  unsigned char D.25301;
  unsigned char D.25302;
  unsigned char D.25303;
  long int D.25307;
  struct MonoInst * D.25308;
  int D.25309;
  int D.25310;
  unsigned char D.25311;
  unsigned char D.25312;
  struct MonoClass * D.25313;
  unsigned int D.25314;
  int D.25315;
  struct MonoType * D.25318;
  int D.25319;
  struct MonoInst * iftmp.24;
  int D.25325;
  int D.25326;
  unsigned int D.25327;
  sizetype D.25330;
  sizetype D.25331;
  sizetype D.25332;
  struct MonoInst * * D.25333;
  struct MonoInst * iftmp.25;
  int D.25336;
  unsigned int D.25337;
  sizetype D.25340;
  sizetype D.25341;
  struct MonoInst * * D.25342;
  _Bool D.25344;
  long int D.25345;
  long int D.25346;
  _Bool D.25349;
  long int D.25350;
  long int D.25351;
  unsigned char D.25354;
  unsigned char D.25355;
  unsigned char D.25356;
  unsigned char D.25357;
  struct MonoInst * iftmp.26;
  unsigned char D.25369;
  unsigned char D.25370;
  struct MonoClass * D.25371;
  unsigned int D.25372;
  int D.25373;
  struct MonoType * D.25376;
  int D.25377;
  struct MonoInst * iftmp.27;
  int D.25383;
  int D.25384;
  unsigned int D.25385;
  sizetype D.25388;
  sizetype D.25389;
  sizetype D.25390;
  struct MonoInst * * D.25391;
  struct MonoInst * iftmp.28;
  int D.25394;
  unsigned int D.25395;
  sizetype D.25398;
  sizetype D.25399;
  struct MonoInst * * D.25400;
  _Bool D.25402;
  long int D.25403;
  long int D.25404;
  _Bool D.25407;
  long int D.25408;
  long int D.25409;
  unsigned char D.25412;
  unsigned char D.25413;
  unsigned char D.25414;
  unsigned char D.25415;
  long unsigned int D.25419;
  long unsigned int D.25420;
  long int D.25423;
  struct MonoInst * D.25424;
  int D.25425;
  int D.25426;
  long int D.25427;
  struct MonoInst * iftmp.29;
  struct MonoInst * iftmp.30;
  unsigned char D.25445;
  unsigned char D.25446;
  struct MonoClass * D.25447;
  unsigned int D.25448;
  int D.25449;
  struct MonoType * D.25452;
  int D.25453;
  struct MonoInst * iftmp.31;
  int D.25459;
  int D.25460;
  unsigned int D.25461;
  sizetype D.25464;
  sizetype D.25465;
  sizetype D.25466;
  struct MonoInst * * D.25467;
  struct MonoInst * iftmp.32;
  int D.25470;
  unsigned int D.25471;
  sizetype D.25474;
  sizetype D.25475;
  struct MonoInst * * D.25476;
  _Bool D.25478;
  long int D.25479;
  long int D.25480;
  _Bool D.25483;
  long int D.25484;
  long int D.25485;
  unsigned char D.25488;
  unsigned char D.25489;
  unsigned char D.25490;
  unsigned char D.25491;
  unsigned int D.25495;
  long int D.25496;
  struct MonoInst * iftmp.33;
  unsigned int D.25508;
  unsigned int D.25512;
  int D.25513;
  int D.25516;
  struct MonoInst * iftmp.34;
  struct MonoInst * iftmp.35;
  _Bool D.25529;
  long int D.25530;
  long int D.25531;
  _Bool D.25534;
  long int D.25535;
  long int D.25536;
  unsigned char D.25539;
  unsigned char D.25540;
  unsigned char D.25541;
  unsigned char D.25542;
  int D.25546;
  struct MonoInst * iftmp.36;
  unsigned int D.25555;
  int D.25556;
  int D.25559;
  struct MonoInst * iftmp.37;
  struct MonoInst * iftmp.38;
  _Bool D.25572;
  long int D.25573;
  long int D.25574;
  _Bool D.25577;
  long int D.25578;
  long int D.25579;
  unsigned char D.25582;
  unsigned char D.25583;
  unsigned char D.25584;
  unsigned char D.25585;
  struct MonoInst * iftmp.39;
  int D.25590;
  unsigned int D.25591;
  long unsigned int D.25594;
  long unsigned int D.25595;
  struct MonoInst * * D.25596;
  struct MonoMethodSignature * D.25600;
  struct MonoType * D.25601;
  unsigned int D.25602;
  int D.25603;
  int D.25606;
  struct MonoInst * iftmp.40;
  struct MonoInst * iftmp.41;
  _Bool D.25619;
  long int D.25620;
  long int D.25621;
  _Bool D.25624;
  long int D.25625;
  long int D.25626;
  unsigned char D.25629;
  unsigned char D.25630;
  unsigned char D.25631;
  unsigned char D.25632;
  long unsigned int D.25636;
  long unsigned int D.25637;
  int D.25640;
  int D.25641;
  unsigned int D.25643;
  int D.25644;
  struct MonoInst * iftmp.42;
  int D.25649;
  unsigned int D.25650;
  long unsigned int D.25653;
  long unsigned int D.25654;
  struct MonoInst * * D.25655;
  struct MonoMethodSignature * D.25659;
  struct MonoType * D.25660;
  unsigned int D.25661;
  int D.25662;
  int D.25665;
  struct MonoInst * iftmp.43;
  struct MonoInst * iftmp.44;
  _Bool D.25678;
  long int D.25679;
  long int D.25680;
  _Bool D.25683;
  long int D.25684;
  long int D.25685;
  unsigned char D.25688;
  unsigned char D.25689;
  unsigned char D.25690;
  unsigned char D.25691;
  struct MonoClass * D.25697;
  long int D.25699;
  struct MonoInst * D.25700;
  int D.25701;
  int D.25702;
  int D.25703;
  int D.25704;
  long int D.25708;
  struct MonoInst * D.25709;
  int D.25710;
  int D.25711;
  long int D.25715;
  struct MonoInst * D.25716;
  int D.25717;
  int D.25718;
  long int D.25722;
  struct MonoInst * D.25723;
  int D.25724;
  int D.25725;
  long int D.25729;
  struct MonoInst * D.25730;
  int D.25731;
  int D.25732;
  _Bool D.25738;
  long int D.25739;
  long int D.25740;
  struct MonoInst * D.25746;
  struct MonoInst * D.25748;
  short int D.25749;
  struct MonoBasicBlock * bb;
  struct MonoBasicBlock * first_bb;

  D.25205 = cfg->mempool;
  D.25206 = mono_mempool_alloc0 (D.25205, 296);
  cfg->cbb = D.25206;
  first_bb = cfg->cbb;
  bb = cfg->bb_entry;
  goto <D.24290>;
  <D.24289>:
  {
    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.25207 = cfg->verbose_level;
        if (D.25207 > 2) goto <D.25208>; else goto <D.25209>;
        <D.25208>:
        mono_print_bb (bb, "BEFORE LOWER-VTYPE-OPTS ");
        <D.25209>:
        D.25210 = cfg->cbb;
        D.25210 = cfg->cbb;
        D.25210->last_ins = 0B;
        D.25211 = D.25210->last_ins;
        D.25210->code = D.25211;
        restart = 1;
        goto <D.24287>;
        <D.24286>:
        restart = 0;
        ins = bb->code;
        goto <D.24284>;
        <D.24283>:
        D.25212 = ins->opcode;
        D.25213 = (int) D.25212;
        switch (D.25213) <default: <D.24282>, case 333: <D.24244>, case 334: <D.24247>, case 355: <D.24251>, case 356: <D.24252>, case 357: <D.24253>, case 387: <D.24237>, case 399: <D.24241>, case 427: <D.24226>, case 428: <D.24232>>
        <D.24226>:
        D.25215 = ins->sreg1;
        D.25216 = (unsigned int) D.25215;
        D.25217 = cfg->vreg_to_inst_len;
        if (D.25216 < D.25217) goto <D.25218>; else goto <D.25219>;
        <D.25218>:
        D.25220 = cfg->vreg_to_inst;
        D.25215 = ins->sreg1;
        D.25221 = (long unsigned int) D.25215;
        D.25222 = D.25221 * 8;
        D.25223 = D.25220 + D.25222;
        iftmp.20 = *D.25223;
        goto <D.25224>;
        <D.25219>:
        iftmp.20 = 0B;
        <D.25224>:
        src_var = iftmp.20;
        D.25226 = ins->dreg;
        D.25227 = (unsigned int) D.25226;
        D.25217 = cfg->vreg_to_inst_len;
        if (D.25227 < D.25217) goto <D.25228>; else goto <D.25229>;
        <D.25228>:
        D.25220 = cfg->vreg_to_inst;
        D.25226 = ins->dreg;
        D.25230 = (long unsigned int) D.25226;
        D.25231 = D.25230 * 8;
        D.25232 = D.25220 + D.25231;
        iftmp.21 = *D.25232;
        goto <D.25233>;
        <D.25229>:
        iftmp.21 = 0B;
        <D.25233>:
        dest_var = iftmp.21;
        D.25234 = ins->klass;
        D.25235 = D.25234 == 0B;
        D.25236 = (long int) D.25235;
        D.25237 = __builtin_expect (D.25236, 0);
        if (D.25237 != 0) goto <D.25238>; else goto <D.25239>;
        <D.25238>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1153, "ins->klass");
        <D.25239>:
        if (src_var == 0B) goto <D.25240>; else goto <D.25241>;
        <D.25240>:
        D.25234 = ins->klass;
        D.25242 = &D.25234->byval_arg;
        D.25226 = ins->dreg;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25242, 329, D.25226);
        <D.25241>:
        if (dest_var == 0B) goto <D.25243>; else goto <D.25244>;
        <D.25243>:
        D.25234 = ins->klass;
        D.25242 = &D.25234->byval_arg;
        D.25226 = ins->dreg;
        dest_var = mono_compile_create_var_for_vreg (cfg, D.25242, 329, D.25226);
        <D.25244>:
        D.25245 = src_var->backend.is_pinvoke;
        if (D.25245 != 0) goto <D.25246>; else goto <D.25247>;
        <D.25246>:
        dest_var->backend.is_pinvoke = 1;
        <D.25247>:
        D.25205 = cfg->mempool;
        src = mono_mempool_alloc (D.25205, 80);
        src->data.op[1].const_val = 0;
        D.25248 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.25248;
        src->prev = 0B;
        D.25249 = src->prev;
        src->next = D.25249;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.25250 = src->sreg3;
        src->sreg2 = D.25250;
        D.25251 = src->sreg2;
        src->sreg1 = D.25251;
        D.25252 = cfg->ip;
        src->cil_code = D.25252;
        src->data.op[0].p = src_var;
        D.25253 = src_var->flags;
        D.25254 = D.25253 | 16;
        src_var->flags = D.25254;
        src->type = 5;
        D.25255 = src_var->klass;
        src->klass = D.25255;
        D.25256 = alloc_dreg (cfg, 5);
        D.25257 = (int) D.25256;
        src->dreg = D.25257;
        cfg->has_indirection = 1;
        D.25258 = cfg->gsharedvt;
        D.25259 = D.25258 != 0;
        D.25260 = (long int) D.25259;
        D.25261 = __builtin_expect (D.25260, 0);
        if (D.25261 != 0) goto <D.25262>; else goto <D.25263>;
        <D.25262>:
        D.25264 = src_var->data.op[1].vtype;
        D.25265 = mini_is_gsharedvt_variable_type (cfg, D.25264);
        if (D.25265 != 0) goto <D.25266>; else goto <D.25267>;
        <D.25266>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25267>:
        <D.25263>:
        if (0 != 0) goto <D.25268>; else goto <D.25269>;
        <D.25268>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25271 = src_var->dreg;
          D.25272 = D.25271 + 1;
          D.25273 = (unsigned int) D.25272;
          D.25217 = cfg->vreg_to_inst_len;
          if (D.25273 < D.25217) goto <D.25274>; else goto <D.25275>;
          <D.25274>:
          D.25220 = cfg->vreg_to_inst;
          D.25271 = src_var->dreg;
          D.25276 = (sizetype) D.25271;
          D.25277 = D.25276 + 1;
          D.25278 = D.25277 * 8;
          D.25279 = D.25220 + D.25278;
          iftmp.22 = *D.25279;
          goto <D.25280>;
          <D.25275>:
          iftmp.22 = 0B;
          <D.25280>:
          var1 = iftmp.22;
          D.25271 = src_var->dreg;
          D.25282 = D.25271 + 2;
          D.25283 = (unsigned int) D.25282;
          D.25217 = cfg->vreg_to_inst_len;
          if (D.25283 < D.25217) goto <D.25284>; else goto <D.25285>;
          <D.25284>:
          D.25220 = cfg->vreg_to_inst;
          D.25271 = src_var->dreg;
          D.25276 = (sizetype) D.25271;
          D.25286 = D.25276 + 2;
          D.25287 = D.25286 * 8;
          D.25288 = D.25220 + D.25287;
          iftmp.23 = *D.25288;
          goto <D.25289>;
          <D.25285>:
          iftmp.23 = 0B;
          <D.25289>:
          var2 = iftmp.23;
          D.25290 = var1 == 0B;
          D.25291 = (long int) D.25290;
          D.25292 = __builtin_expect (D.25291, 0);
          if (D.25292 != 0) goto <D.25293>; else goto <D.25294>;
          <D.25293>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1165, "var1");
          <D.25294>:
          D.25295 = var2 == 0B;
          D.25296 = (long int) D.25295;
          D.25297 = __builtin_expect (D.25296, 0);
          if (D.25297 != 0) goto <D.25298>; else goto <D.25299>;
          <D.25298>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1165, "var2");
          <D.25299>:
          D.25300 = var1->flags;
          D.25301 = D.25300 | 16;
          var1->flags = D.25301;
          D.25302 = var2->flags;
          D.25303 = D.25302 | 16;
          var2->flags = D.25303;
        }
        <D.25269>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        if (D.25211 != 0B) goto <D.25304>; else goto <D.25305>;
        <D.25304>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        D.25211->next = src;
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        src->prev = D.25211;
        D.25210 = cfg->cbb;
        D.25210->last_ins = src;
        goto <D.25306>;
        <D.25305>:
        D.25210 = cfg->cbb;
        D.25210 = cfg->cbb;
        D.25210->last_ins = src;
        D.25211 = D.25210->last_ins;
        D.25210->code = D.25211;
        <D.25306>:
        D.25205 = cfg->mempool;
        dest = mono_mempool_alloc (D.25205, 80);
        dest->data.op[1].const_val = 0;
        D.25307 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.25307;
        dest->prev = 0B;
        D.25308 = dest->prev;
        dest->next = D.25308;
        dest->opcode = 314;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.25309 = dest->sreg3;
        dest->sreg2 = D.25309;
        D.25310 = dest->sreg2;
        dest->sreg1 = D.25310;
        D.25252 = cfg->ip;
        dest->cil_code = D.25252;
        dest->data.op[0].p = dest_var;
        D.25311 = dest_var->flags;
        D.25312 = D.25311 | 16;
        dest_var->flags = D.25312;
        dest->type = 5;
        D.25313 = dest_var->klass;
        dest->klass = D.25313;
        D.25314 = alloc_dreg (cfg, 5);
        D.25315 = (int) D.25314;
        dest->dreg = D.25315;
        cfg->has_indirection = 1;
        D.25258 = cfg->gsharedvt;
        D.25259 = D.25258 != 0;
        D.25260 = (long int) D.25259;
        D.25261 = __builtin_expect (D.25260, 0);
        if (D.25261 != 0) goto <D.25316>; else goto <D.25317>;
        <D.25316>:
        D.25318 = dest_var->data.op[1].vtype;
        D.25319 = mini_is_gsharedvt_variable_type (cfg, D.25318);
        if (D.25319 != 0) goto <D.25320>; else goto <D.25321>;
        <D.25320>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25321>:
        <D.25317>:
        if (0 != 0) goto <D.25322>; else goto <D.25323>;
        <D.25322>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25325 = dest_var->dreg;
          D.25326 = D.25325 + 1;
          D.25327 = (unsigned int) D.25326;
          D.25217 = cfg->vreg_to_inst_len;
          if (D.25327 < D.25217) goto <D.25328>; else goto <D.25329>;
          <D.25328>:
          D.25220 = cfg->vreg_to_inst;
          D.25325 = dest_var->dreg;
          D.25330 = (sizetype) D.25325;
          D.25331 = D.25330 + 1;
          D.25332 = D.25331 * 8;
          D.25333 = D.25220 + D.25332;
          iftmp.24 = *D.25333;
          goto <D.25334>;
          <D.25329>:
          iftmp.24 = 0B;
          <D.25334>:
          var1 = iftmp.24;
          D.25325 = dest_var->dreg;
          D.25336 = D.25325 + 2;
          D.25337 = (unsigned int) D.25336;
          D.25217 = cfg->vreg_to_inst_len;
          if (D.25337 < D.25217) goto <D.25338>; else goto <D.25339>;
          <D.25338>:
          D.25220 = cfg->vreg_to_inst;
          D.25325 = dest_var->dreg;
          D.25330 = (sizetype) D.25325;
          D.25340 = D.25330 + 2;
          D.25341 = D.25340 * 8;
          D.25342 = D.25220 + D.25341;
          iftmp.25 = *D.25342;
          goto <D.25343>;
          <D.25339>:
          iftmp.25 = 0B;
          <D.25343>:
          var2 = iftmp.25;
          D.25344 = var1 == 0B;
          D.25345 = (long int) D.25344;
          D.25346 = __builtin_expect (D.25345, 0);
          if (D.25346 != 0) goto <D.25347>; else goto <D.25348>;
          <D.25347>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1166, "var1");
          <D.25348>:
          D.25349 = var2 == 0B;
          D.25350 = (long int) D.25349;
          D.25351 = __builtin_expect (D.25350, 0);
          if (D.25351 != 0) goto <D.25352>; else goto <D.25353>;
          <D.25352>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1166, "var2");
          <D.25353>:
          D.25354 = var1->flags;
          D.25355 = D.25354 | 16;
          var1->flags = D.25355;
          D.25356 = var2->flags;
          D.25357 = D.25356 | 16;
          var2->flags = D.25357;
        }
        <D.25323>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        if (D.25211 != 0B) goto <D.25358>; else goto <D.25359>;
        <D.25358>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        D.25211->next = dest;
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        dest->prev = D.25211;
        D.25210 = cfg->cbb;
        D.25210->last_ins = dest;
        goto <D.25360>;
        <D.25359>:
        D.25210 = cfg->cbb;
        D.25210 = cfg->cbb;
        D.25210->last_ins = dest;
        D.25211 = D.25210->last_ins;
        D.25210->code = D.25211;
        <D.25360>:
        D.25255 = src_var->klass;
        D.25245 = src_var->backend.is_pinvoke;
        mini_emit_stobj (cfg, dest, src, D.25255, D.25245);
        goto <D.24231>;
        <D.24232>:
        D.25234 = ins->klass;
        D.25235 = D.25234 == 0B;
        D.25236 = (long int) D.25235;
        D.25237 = __builtin_expect (D.25236, 0);
        if (D.25237 != 0) goto <D.25361>; else goto <D.25362>;
        <D.25361>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1172, "ins->klass");
        <D.25362>:
        {
          struct MonoInst * var;

          D.25226 = ins->dreg;
          D.25227 = (unsigned int) D.25226;
          D.25217 = cfg->vreg_to_inst_len;
          if (D.25227 < D.25217) goto <D.25364>; else goto <D.25365>;
          <D.25364>:
          D.25220 = cfg->vreg_to_inst;
          D.25226 = ins->dreg;
          D.25230 = (long unsigned int) D.25226;
          D.25231 = D.25230 * 8;
          D.25232 = D.25220 + D.25231;
          iftmp.26 = *D.25232;
          goto <D.25366>;
          <D.25365>:
          iftmp.26 = 0B;
          <D.25366>:
          var = iftmp.26;
          if (var == 0B) goto <D.25367>; else goto <D.25368>;
          <D.25367>:
          D.25234 = ins->klass;
          D.25242 = &D.25234->byval_arg;
          D.25226 = ins->dreg;
          var = mono_compile_create_var_for_vreg (cfg, D.25242, 329, D.25226);
          <D.25368>:
          D.25205 = cfg->mempool;
          dest = mono_mempool_alloc (D.25205, 80);
          dest->data.op[1].const_val = 0;
          D.25307 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.25307;
          dest->prev = 0B;
          D.25308 = dest->prev;
          dest->next = D.25308;
          dest->opcode = 314;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.25309 = dest->sreg3;
          dest->sreg2 = D.25309;
          D.25310 = dest->sreg2;
          dest->sreg1 = D.25310;
          D.25252 = cfg->ip;
          dest->cil_code = D.25252;
          dest->data.op[0].p = var;
          D.25369 = var->flags;
          D.25370 = D.25369 | 16;
          var->flags = D.25370;
          dest->type = 5;
          D.25371 = var->klass;
          dest->klass = D.25371;
          D.25372 = alloc_dreg (cfg, 5);
          D.25373 = (int) D.25372;
          dest->dreg = D.25373;
          cfg->has_indirection = 1;
          D.25258 = cfg->gsharedvt;
          D.25259 = D.25258 != 0;
          D.25260 = (long int) D.25259;
          D.25261 = __builtin_expect (D.25260, 0);
          if (D.25261 != 0) goto <D.25374>; else goto <D.25375>;
          <D.25374>:
          D.25376 = var->data.op[1].vtype;
          D.25377 = mini_is_gsharedvt_variable_type (cfg, D.25376);
          if (D.25377 != 0) goto <D.25378>; else goto <D.25379>;
          <D.25378>:
          handle_gsharedvt_ldaddr (cfg);
          <D.25379>:
          <D.25375>:
          if (0 != 0) goto <D.25380>; else goto <D.25381>;
          <D.25380>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.25383 = var->dreg;
            D.25384 = D.25383 + 1;
            D.25385 = (unsigned int) D.25384;
            D.25217 = cfg->vreg_to_inst_len;
            if (D.25385 < D.25217) goto <D.25386>; else goto <D.25387>;
            <D.25386>:
            D.25220 = cfg->vreg_to_inst;
            D.25383 = var->dreg;
            D.25388 = (sizetype) D.25383;
            D.25389 = D.25388 + 1;
            D.25390 = D.25389 * 8;
            D.25391 = D.25220 + D.25390;
            iftmp.27 = *D.25391;
            goto <D.25392>;
            <D.25387>:
            iftmp.27 = 0B;
            <D.25392>:
            var1 = iftmp.27;
            D.25383 = var->dreg;
            D.25394 = D.25383 + 2;
            D.25395 = (unsigned int) D.25394;
            D.25217 = cfg->vreg_to_inst_len;
            if (D.25395 < D.25217) goto <D.25396>; else goto <D.25397>;
            <D.25396>:
            D.25220 = cfg->vreg_to_inst;
            D.25383 = var->dreg;
            D.25388 = (sizetype) D.25383;
            D.25398 = D.25388 + 2;
            D.25399 = D.25398 * 8;
            D.25400 = D.25220 + D.25399;
            iftmp.28 = *D.25400;
            goto <D.25401>;
            <D.25397>:
            iftmp.28 = 0B;
            <D.25401>:
            var2 = iftmp.28;
            D.25402 = var1 == 0B;
            D.25403 = (long int) D.25402;
            D.25404 = __builtin_expect (D.25403, 0);
            if (D.25404 != 0) goto <D.25405>; else goto <D.25406>;
            <D.25405>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1174, "var1");
            <D.25406>:
            D.25407 = var2 == 0B;
            D.25408 = (long int) D.25407;
            D.25409 = __builtin_expect (D.25408, 0);
            if (D.25409 != 0) goto <D.25410>; else goto <D.25411>;
            <D.25410>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1174, "var2");
            <D.25411>:
            D.25412 = var1->flags;
            D.25413 = D.25412 | 16;
            var1->flags = D.25413;
            D.25414 = var2->flags;
            D.25415 = D.25414 | 16;
            var2->flags = D.25415;
          }
          <D.25381>:
        }
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        if (D.25211 != 0B) goto <D.25416>; else goto <D.25417>;
        <D.25416>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        D.25211->next = dest;
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        dest->prev = D.25211;
        D.25210 = cfg->cbb;
        D.25210->last_ins = dest;
        goto <D.25418>;
        <D.25417>:
        D.25210 = cfg->cbb;
        D.25210 = cfg->cbb;
        D.25210->last_ins = dest;
        D.25211 = D.25210->last_ins;
        D.25210->code = D.25211;
        <D.25418>:
        D.25234 = ins->klass;
        mini_emit_initobj (cfg, dest, 0B, D.25234);
        D.25419 = BIT_FIELD_REF <*cfg, 64, 5632>;
        D.25420 = D.25419 & 128;
        if (D.25420 != 0) goto <D.25421>; else goto <D.25422>;
        <D.25421>:
        {
          struct MonoInst * tmp;

          D.25205 = cfg->mempool;
          tmp = mono_mempool_alloc (D.25205, 80);
          tmp->data.op[1].const_val = 0;
          D.25423 = tmp->data.op[1].const_val;
          tmp->data.op[0].const_val = D.25423;
          tmp->prev = 0B;
          D.25424 = tmp->prev;
          tmp->next = D.25424;
          tmp->opcode = 838;
          tmp->flags = 0;
          tmp->type = 0;
          tmp->dreg = -1;
          tmp->sreg3 = -1;
          D.25425 = tmp->sreg3;
          tmp->sreg2 = D.25425;
          D.25426 = tmp->sreg2;
          tmp->sreg1 = D.25426;
          D.25252 = cfg->ip;
          tmp->cil_code = D.25252;
          D.25226 = ins->dreg;
          D.25427 = (long int) D.25226;
          tmp->data.op[1].const_val = D.25427;
          D.25210 = cfg->cbb;
          D.25211 = D.25210->last_ins;
          if (D.25211 != 0B) goto <D.25428>; else goto <D.25429>;
          <D.25428>:
          D.25210 = cfg->cbb;
          D.25211 = D.25210->last_ins;
          D.25211->next = tmp;
          D.25210 = cfg->cbb;
          D.25211 = D.25210->last_ins;
          tmp->prev = D.25211;
          D.25210 = cfg->cbb;
          D.25210->last_ins = tmp;
          goto <D.25430>;
          <D.25429>:
          D.25210 = cfg->cbb;
          D.25210 = cfg->cbb;
          D.25210->last_ins = tmp;
          D.25211 = D.25210->last_ins;
          D.25210->code = D.25211;
          <D.25430>:
        }
        <D.25422>:
        goto <D.24231>;
        <D.24237>:
        D.25215 = ins->sreg1;
        D.25216 = (unsigned int) D.25215;
        D.25217 = cfg->vreg_to_inst_len;
        if (D.25216 < D.25217) goto <D.25432>; else goto <D.25433>;
        <D.25432>:
        D.25220 = cfg->vreg_to_inst;
        D.25215 = ins->sreg1;
        D.25221 = (long unsigned int) D.25215;
        D.25222 = D.25221 * 8;
        D.25223 = D.25220 + D.25222;
        iftmp.29 = *D.25223;
        goto <D.25434>;
        <D.25433>:
        iftmp.29 = 0B;
        <D.25434>:
        src_var = iftmp.29;
        if (src_var == 0B) goto <D.25435>; else goto <D.25436>;
        <D.25435>:
        D.25234 = ins->klass;
        D.25235 = D.25234 == 0B;
        D.25236 = (long int) D.25235;
        D.25237 = __builtin_expect (D.25236, 0);
        if (D.25237 != 0) goto <D.25437>; else goto <D.25438>;
        <D.25437>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1193, "ins->klass");
        <D.25438>:
        D.25234 = ins->klass;
        D.25242 = &D.25234->byval_arg;
        D.25215 = ins->sreg1;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25242, 329, D.25215);
        <D.25436>:
        {
          struct MonoInst * var;

          D.25215 = ins->sreg1;
          D.25216 = (unsigned int) D.25215;
          D.25217 = cfg->vreg_to_inst_len;
          if (D.25216 < D.25217) goto <D.25440>; else goto <D.25441>;
          <D.25440>:
          D.25220 = cfg->vreg_to_inst;
          D.25215 = ins->sreg1;
          D.25221 = (long unsigned int) D.25215;
          D.25222 = D.25221 * 8;
          D.25223 = D.25220 + D.25222;
          iftmp.30 = *D.25223;
          goto <D.25442>;
          <D.25441>:
          iftmp.30 = 0B;
          <D.25442>:
          var = iftmp.30;
          if (var == 0B) goto <D.25443>; else goto <D.25444>;
          <D.25443>:
          D.25234 = ins->klass;
          D.25242 = &D.25234->byval_arg;
          D.25215 = ins->sreg1;
          var = mono_compile_create_var_for_vreg (cfg, D.25242, 329, D.25215);
          <D.25444>:
          D.25205 = cfg->mempool;
          src = mono_mempool_alloc (D.25205, 80);
          src->data.op[1].const_val = 0;
          D.25248 = src->data.op[1].const_val;
          src->data.op[0].const_val = D.25248;
          src->prev = 0B;
          D.25249 = src->prev;
          src->next = D.25249;
          src->opcode = 314;
          src->flags = 0;
          src->type = 0;
          src->dreg = -1;
          src->sreg3 = -1;
          D.25250 = src->sreg3;
          src->sreg2 = D.25250;
          D.25251 = src->sreg2;
          src->sreg1 = D.25251;
          D.25252 = cfg->ip;
          src->cil_code = D.25252;
          src->data.op[0].p = var;
          D.25445 = var->flags;
          D.25446 = D.25445 | 16;
          var->flags = D.25446;
          src->type = 5;
          D.25447 = var->klass;
          src->klass = D.25447;
          D.25448 = alloc_dreg (cfg, 5);
          D.25449 = (int) D.25448;
          src->dreg = D.25449;
          cfg->has_indirection = 1;
          D.25258 = cfg->gsharedvt;
          D.25259 = D.25258 != 0;
          D.25260 = (long int) D.25259;
          D.25261 = __builtin_expect (D.25260, 0);
          if (D.25261 != 0) goto <D.25450>; else goto <D.25451>;
          <D.25450>:
          D.25452 = var->data.op[1].vtype;
          D.25453 = mini_is_gsharedvt_variable_type (cfg, D.25452);
          if (D.25453 != 0) goto <D.25454>; else goto <D.25455>;
          <D.25454>:
          handle_gsharedvt_ldaddr (cfg);
          <D.25455>:
          <D.25451>:
          if (0 != 0) goto <D.25456>; else goto <D.25457>;
          <D.25456>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.25459 = var->dreg;
            D.25460 = D.25459 + 1;
            D.25461 = (unsigned int) D.25460;
            D.25217 = cfg->vreg_to_inst_len;
            if (D.25461 < D.25217) goto <D.25462>; else goto <D.25463>;
            <D.25462>:
            D.25220 = cfg->vreg_to_inst;
            D.25459 = var->dreg;
            D.25464 = (sizetype) D.25459;
            D.25465 = D.25464 + 1;
            D.25466 = D.25465 * 8;
            D.25467 = D.25220 + D.25466;
            iftmp.31 = *D.25467;
            goto <D.25468>;
            <D.25463>:
            iftmp.31 = 0B;
            <D.25468>:
            var1 = iftmp.31;
            D.25459 = var->dreg;
            D.25470 = D.25459 + 2;
            D.25471 = (unsigned int) D.25470;
            D.25217 = cfg->vreg_to_inst_len;
            if (D.25471 < D.25217) goto <D.25472>; else goto <D.25473>;
            <D.25472>:
            D.25220 = cfg->vreg_to_inst;
            D.25459 = var->dreg;
            D.25464 = (sizetype) D.25459;
            D.25474 = D.25464 + 2;
            D.25475 = D.25474 * 8;
            D.25476 = D.25220 + D.25475;
            iftmp.32 = *D.25476;
            goto <D.25477>;
            <D.25473>:
            iftmp.32 = 0B;
            <D.25477>:
            var2 = iftmp.32;
            D.25478 = var1 == 0B;
            D.25479 = (long int) D.25478;
            D.25480 = __builtin_expect (D.25479, 0);
            if (D.25480 != 0) goto <D.25481>; else goto <D.25482>;
            <D.25481>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1197, "var1");
            <D.25482>:
            D.25483 = var2 == 0B;
            D.25484 = (long int) D.25483;
            D.25485 = __builtin_expect (D.25484, 0);
            if (D.25485 != 0) goto <D.25486>; else goto <D.25487>;
            <D.25486>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1197, "var2");
            <D.25487>:
            D.25488 = var1->flags;
            D.25489 = D.25488 | 16;
            var1->flags = D.25489;
            D.25490 = var2->flags;
            D.25491 = D.25490 | 16;
            var2->flags = D.25491;
          }
          <D.25457>:
        }
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        if (D.25211 != 0B) goto <D.25492>; else goto <D.25493>;
        <D.25492>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        D.25211->next = src;
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        src->prev = D.25211;
        D.25210 = cfg->cbb;
        D.25210->last_ins = src;
        goto <D.25494>;
        <D.25493>:
        D.25210 = cfg->cbb;
        D.25210 = cfg->cbb;
        D.25210->last_ins = src;
        D.25211 = D.25210->last_ins;
        D.25210->code = D.25211;
        <D.25494>:
        D.25495 = alloc_preg (cfg);
        dreg = (int) D.25495;
        D.25205 = cfg->mempool;
        dest = mono_mempool_alloc (D.25205, 80);
        dest->data.op[1].const_val = 0;
        D.25307 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.25307;
        dest->prev = 0B;
        D.25308 = dest->prev;
        dest->next = D.25308;
        dest->opcode = 429;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.25309 = dest->sreg3;
        dest->sreg2 = D.25309;
        D.25310 = dest->sreg2;
        dest->sreg1 = D.25310;
        D.25252 = cfg->ip;
        dest->cil_code = D.25252;
        dest->dreg = dreg;
        D.25226 = ins->dreg;
        dest->sreg1 = D.25226;
        D.25496 = ins->data.op[0].const_val;
        dest->data.op[1].const_val = D.25496;
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        if (D.25211 != 0B) goto <D.25497>; else goto <D.25498>;
        <D.25497>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        D.25211->next = dest;
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        dest->prev = D.25211;
        D.25210 = cfg->cbb;
        D.25210->last_ins = dest;
        goto <D.25499>;
        <D.25498>:
        D.25210 = cfg->cbb;
        D.25210 = cfg->cbb;
        D.25210->last_ins = dest;
        D.25211 = D.25210->last_ins;
        D.25210->code = D.25211;
        <D.25499>:
        D.25255 = src_var->klass;
        D.25245 = src_var->backend.is_pinvoke;
        mini_emit_stobj (cfg, dest, src, D.25255, D.25245);
        goto <D.24231>;
        <D.24241>:
        D.25234 = ins->klass;
        D.25235 = D.25234 == 0B;
        D.25236 = (long int) D.25235;
        D.25237 = __builtin_expect (D.25236, 0);
        if (D.25237 != 0) goto <D.25500>; else goto <D.25501>;
        <D.25500>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1205, "ins->klass");
        <D.25501>:
        D.25226 = ins->dreg;
        D.25227 = (unsigned int) D.25226;
        D.25217 = cfg->vreg_to_inst_len;
        if (D.25227 < D.25217) goto <D.25503>; else goto <D.25504>;
        <D.25503>:
        D.25220 = cfg->vreg_to_inst;
        D.25226 = ins->dreg;
        D.25230 = (long unsigned int) D.25226;
        D.25231 = D.25230 * 8;
        D.25232 = D.25220 + D.25231;
        iftmp.33 = *D.25232;
        goto <D.25505>;
        <D.25504>:
        iftmp.33 = 0B;
        <D.25505>:
        dest_var = iftmp.33;
        if (dest_var == 0B) goto <D.25506>; else goto <D.25507>;
        <D.25506>:
        D.25234 = ins->klass;
        D.25242 = &D.25234->byval_arg;
        D.25226 = ins->dreg;
        dest_var = mono_compile_create_var_for_vreg (cfg, D.25242, 329, D.25226);
        <D.25507>:
        D.25508 = alloc_preg (cfg);
        dreg = (int) D.25508;
        D.25205 = cfg->mempool;
        src = mono_mempool_alloc (D.25205, 80);
        src->data.op[1].const_val = 0;
        D.25248 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.25248;
        src->prev = 0B;
        D.25249 = src->prev;
        src->next = D.25249;
        src->opcode = 429;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.25250 = src->sreg3;
        src->sreg2 = D.25250;
        D.25251 = src->sreg2;
        src->sreg1 = D.25251;
        D.25252 = cfg->ip;
        src->cil_code = D.25252;
        src->dreg = dreg;
        D.25215 = ins->sreg1;
        src->sreg1 = D.25215;
        D.25496 = ins->data.op[0].const_val;
        src->data.op[1].const_val = D.25496;
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        if (D.25211 != 0B) goto <D.25509>; else goto <D.25510>;
        <D.25509>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        D.25211->next = src;
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        src->prev = D.25211;
        D.25210 = cfg->cbb;
        D.25210->last_ins = src;
        goto <D.25511>;
        <D.25510>:
        D.25210 = cfg->cbb;
        D.25210 = cfg->cbb;
        D.25210->last_ins = src;
        D.25211 = D.25210->last_ins;
        D.25210->code = D.25211;
        <D.25511>:
        D.25205 = cfg->mempool;
        dest = mono_mempool_alloc (D.25205, 80);
        dest->data.op[1].const_val = 0;
        D.25307 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.25307;
        dest->prev = 0B;
        D.25308 = dest->prev;
        dest->next = D.25308;
        dest->opcode = 314;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.25309 = dest->sreg3;
        dest->sreg2 = D.25309;
        D.25310 = dest->sreg2;
        dest->sreg1 = D.25310;
        D.25252 = cfg->ip;
        dest->cil_code = D.25252;
        dest->data.op[0].p = dest_var;
        D.25311 = dest_var->flags;
        D.25312 = D.25311 | 16;
        dest_var->flags = D.25312;
        dest->type = 5;
        D.25313 = dest_var->klass;
        dest->klass = D.25313;
        D.25512 = alloc_dreg (cfg, 5);
        D.25513 = (int) D.25512;
        dest->dreg = D.25513;
        cfg->has_indirection = 1;
        D.25258 = cfg->gsharedvt;
        D.25259 = D.25258 != 0;
        D.25260 = (long int) D.25259;
        D.25261 = __builtin_expect (D.25260, 0);
        if (D.25261 != 0) goto <D.25514>; else goto <D.25515>;
        <D.25514>:
        D.25318 = dest_var->data.op[1].vtype;
        D.25516 = mini_is_gsharedvt_variable_type (cfg, D.25318);
        if (D.25516 != 0) goto <D.25517>; else goto <D.25518>;
        <D.25517>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25518>:
        <D.25515>:
        if (0 != 0) goto <D.25519>; else goto <D.25520>;
        <D.25519>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25325 = dest_var->dreg;
          D.25326 = D.25325 + 1;
          D.25327 = (unsigned int) D.25326;
          D.25217 = cfg->vreg_to_inst_len;
          if (D.25327 < D.25217) goto <D.25522>; else goto <D.25523>;
          <D.25522>:
          D.25220 = cfg->vreg_to_inst;
          D.25325 = dest_var->dreg;
          D.25330 = (sizetype) D.25325;
          D.25331 = D.25330 + 1;
          D.25332 = D.25331 * 8;
          D.25333 = D.25220 + D.25332;
          iftmp.34 = *D.25333;
          goto <D.25524>;
          <D.25523>:
          iftmp.34 = 0B;
          <D.25524>:
          var1 = iftmp.34;
          D.25325 = dest_var->dreg;
          D.25336 = D.25325 + 2;
          D.25337 = (unsigned int) D.25336;
          D.25217 = cfg->vreg_to_inst_len;
          if (D.25337 < D.25217) goto <D.25526>; else goto <D.25527>;
          <D.25526>:
          D.25220 = cfg->vreg_to_inst;
          D.25325 = dest_var->dreg;
          D.25330 = (sizetype) D.25325;
          D.25340 = D.25330 + 2;
          D.25341 = D.25340 * 8;
          D.25342 = D.25220 + D.25341;
          iftmp.35 = *D.25342;
          goto <D.25528>;
          <D.25527>:
          iftmp.35 = 0B;
          <D.25528>:
          var2 = iftmp.35;
          D.25529 = var1 == 0B;
          D.25530 = (long int) D.25529;
          D.25531 = __builtin_expect (D.25530, 0);
          if (D.25531 != 0) goto <D.25532>; else goto <D.25533>;
          <D.25532>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1215, "var1");
          <D.25533>:
          D.25534 = var2 == 0B;
          D.25535 = (long int) D.25534;
          D.25536 = __builtin_expect (D.25535, 0);
          if (D.25536 != 0) goto <D.25537>; else goto <D.25538>;
          <D.25537>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1215, "var2");
          <D.25538>:
          D.25539 = var1->flags;
          D.25540 = D.25539 | 16;
          var1->flags = D.25540;
          D.25541 = var2->flags;
          D.25542 = D.25541 | 16;
          var2->flags = D.25542;
        }
        <D.25520>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        if (D.25211 != 0B) goto <D.25543>; else goto <D.25544>;
        <D.25543>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        D.25211->next = dest;
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        dest->prev = D.25211;
        D.25210 = cfg->cbb;
        D.25210->last_ins = dest;
        goto <D.25545>;
        <D.25544>:
        D.25210 = cfg->cbb;
        D.25210 = cfg->cbb;
        D.25210->last_ins = dest;
        D.25211 = D.25210->last_ins;
        D.25210->code = D.25211;
        <D.25545>:
        D.25313 = dest_var->klass;
        D.25546 = dest_var->backend.is_pinvoke;
        mini_emit_stobj (cfg, dest, src, D.25313, D.25546);
        goto <D.24231>;
        <D.24244>:
        D.25234 = ins->klass;
        D.25235 = D.25234 == 0B;
        D.25236 = (long int) D.25235;
        D.25237 = __builtin_expect (D.25236, 0);
        if (D.25237 != 0) goto <D.25547>; else goto <D.25548>;
        <D.25547>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1220, "ins->klass");
        <D.25548>:
        D.25215 = ins->sreg1;
        D.25216 = (unsigned int) D.25215;
        D.25217 = cfg->vreg_to_inst_len;
        if (D.25216 < D.25217) goto <D.25550>; else goto <D.25551>;
        <D.25550>:
        D.25220 = cfg->vreg_to_inst;
        D.25215 = ins->sreg1;
        D.25221 = (long unsigned int) D.25215;
        D.25222 = D.25221 * 8;
        D.25223 = D.25220 + D.25222;
        iftmp.36 = *D.25223;
        goto <D.25552>;
        <D.25551>:
        iftmp.36 = 0B;
        <D.25552>:
        src_var = iftmp.36;
        if (src_var == 0B) goto <D.25553>; else goto <D.25554>;
        <D.25553>:
        D.25234 = ins->klass;
        D.25242 = &D.25234->byval_arg;
        D.25215 = ins->sreg1;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25242, 329, D.25215);
        <D.25554>:
        D.25205 = cfg->mempool;
        src = mono_mempool_alloc (D.25205, 80);
        src->data.op[1].const_val = 0;
        D.25248 = src->data.op[1].const_val;
        src->data.op[0].const_val = D.25248;
        src->prev = 0B;
        D.25249 = src->prev;
        src->next = D.25249;
        src->opcode = 314;
        src->flags = 0;
        src->type = 0;
        src->dreg = -1;
        src->sreg3 = -1;
        D.25250 = src->sreg3;
        src->sreg2 = D.25250;
        D.25251 = src->sreg2;
        src->sreg1 = D.25251;
        D.25252 = cfg->ip;
        src->cil_code = D.25252;
        src->data.op[0].p = src_var;
        D.25253 = src_var->flags;
        D.25254 = D.25253 | 16;
        src_var->flags = D.25254;
        src->type = 5;
        D.25255 = src_var->klass;
        src->klass = D.25255;
        D.25555 = alloc_dreg (cfg, 5);
        D.25556 = (int) D.25555;
        src->dreg = D.25556;
        cfg->has_indirection = 1;
        D.25258 = cfg->gsharedvt;
        D.25259 = D.25258 != 0;
        D.25260 = (long int) D.25259;
        D.25261 = __builtin_expect (D.25260, 0);
        if (D.25261 != 0) goto <D.25557>; else goto <D.25558>;
        <D.25557>:
        D.25264 = src_var->data.op[1].vtype;
        D.25559 = mini_is_gsharedvt_variable_type (cfg, D.25264);
        if (D.25559 != 0) goto <D.25560>; else goto <D.25561>;
        <D.25560>:
        handle_gsharedvt_ldaddr (cfg);
        <D.25561>:
        <D.25558>:
        if (0 != 0) goto <D.25562>; else goto <D.25563>;
        <D.25562>:
        {
          struct MonoInst * var1;
          struct MonoInst * var2;

          D.25271 = src_var->dreg;
          D.25272 = D.25271 + 1;
          D.25273 = (unsigned int) D.25272;
          D.25217 = cfg->vreg_to_inst_len;
          if (D.25273 < D.25217) goto <D.25565>; else goto <D.25566>;
          <D.25565>:
          D.25220 = cfg->vreg_to_inst;
          D.25271 = src_var->dreg;
          D.25276 = (sizetype) D.25271;
          D.25277 = D.25276 + 1;
          D.25278 = D.25277 * 8;
          D.25279 = D.25220 + D.25278;
          iftmp.37 = *D.25279;
          goto <D.25567>;
          <D.25566>:
          iftmp.37 = 0B;
          <D.25567>:
          var1 = iftmp.37;
          D.25271 = src_var->dreg;
          D.25282 = D.25271 + 2;
          D.25283 = (unsigned int) D.25282;
          D.25217 = cfg->vreg_to_inst_len;
          if (D.25283 < D.25217) goto <D.25569>; else goto <D.25570>;
          <D.25569>:
          D.25220 = cfg->vreg_to_inst;
          D.25271 = src_var->dreg;
          D.25276 = (sizetype) D.25271;
          D.25286 = D.25276 + 2;
          D.25287 = D.25286 * 8;
          D.25288 = D.25220 + D.25287;
          iftmp.38 = *D.25288;
          goto <D.25571>;
          <D.25570>:
          iftmp.38 = 0B;
          <D.25571>:
          var2 = iftmp.38;
          D.25572 = var1 == 0B;
          D.25573 = (long int) D.25572;
          D.25574 = __builtin_expect (D.25573, 0);
          if (D.25574 != 0) goto <D.25575>; else goto <D.25576>;
          <D.25575>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1225, "var1");
          <D.25576>:
          D.25577 = var2 == 0B;
          D.25578 = (long int) D.25577;
          D.25579 = __builtin_expect (D.25578, 0);
          if (D.25579 != 0) goto <D.25580>; else goto <D.25581>;
          <D.25580>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1225, "var2");
          <D.25581>:
          D.25582 = var1->flags;
          D.25583 = D.25582 | 16;
          var1->flags = D.25583;
          D.25584 = var2->flags;
          D.25585 = D.25584 | 16;
          var2->flags = D.25585;
        }
        <D.25563>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        if (D.25211 != 0B) goto <D.25586>; else goto <D.25587>;
        <D.25586>:
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        D.25211->next = src;
        D.25210 = cfg->cbb;
        D.25211 = D.25210->last_ins;
        src->prev = D.25211;
        D.25210 = cfg->cbb;
        D.25210->last_ins = src;
        goto <D.25588>;
        <D.25587>:
        D.25210 = cfg->cbb;
        D.25210 = cfg->cbb;
        D.25210->last_ins = src;
        D.25211 = D.25210->last_ins;
        D.25210->code = D.25211;
        <D.25588>:
        mono_arch_emit_outarg_vt (cfg, ins, src);
        restart = 1;
        goto <D.24231>;
        <D.24247>:
        {
          struct MonoCallInst * call;

          call = ins->data.op[1].p;
          D.25590 = call->inst.dreg;
          D.25591 = (unsigned int) D.25590;
          D.25217 = cfg->vreg_to_inst_len;
          if (D.25591 < D.25217) goto <D.25592>; else goto <D.25593>;
          <D.25592>:
          D.25220 = cfg->vreg_to_inst;
          D.25590 = call->inst.dreg;
          D.25594 = (long unsigned int) D.25590;
          D.25595 = D.25594 * 8;
          D.25596 = D.25220 + D.25595;
          iftmp.39 = *D.25596;
          goto <D.25597>;
          <D.25593>:
          iftmp.39 = 0B;
          <D.25597>:
          src_var = iftmp.39;
          if (src_var == 0B) goto <D.25598>; else goto <D.25599>;
          <D.25598>:
          D.25600 = call->signature;
          D.25601 = D.25600->ret;
          D.25590 = call->inst.dreg;
          src_var = mono_compile_create_var_for_vreg (cfg, D.25601, 329, D.25590);
          <D.25599>:
          D.25205 = cfg->mempool;
          src = mono_mempool_alloc (D.25205, 80);
          src->data.op[1].const_val = 0;
          D.25248 = src->data.op[1].const_val;
          src->data.op[0].const_val = D.25248;
          src->prev = 0B;
          D.25249 = src->prev;
          src->next = D.25249;
          src->opcode = 314;
          src->flags = 0;
          src->type = 0;
          src->dreg = -1;
          src->sreg3 = -1;
          D.25250 = src->sreg3;
          src->sreg2 = D.25250;
          D.25251 = src->sreg2;
          src->sreg1 = D.25251;
          D.25252 = cfg->ip;
          src->cil_code = D.25252;
          src->data.op[0].p = src_var;
          D.25253 = src_var->flags;
          D.25254 = D.25253 | 16;
          src_var->flags = D.25254;
          src->type = 5;
          D.25255 = src_var->klass;
          src->klass = D.25255;
          D.25602 = alloc_dreg (cfg, 5);
          D.25603 = (int) D.25602;
          src->dreg = D.25603;
          cfg->has_indirection = 1;
          D.25258 = cfg->gsharedvt;
          D.25259 = D.25258 != 0;
          D.25260 = (long int) D.25259;
          D.25261 = __builtin_expect (D.25260, 0);
          if (D.25261 != 0) goto <D.25604>; else goto <D.25605>;
          <D.25604>:
          D.25264 = src_var->data.op[1].vtype;
          D.25606 = mini_is_gsharedvt_variable_type (cfg, D.25264);
          if (D.25606 != 0) goto <D.25607>; else goto <D.25608>;
          <D.25607>:
          handle_gsharedvt_ldaddr (cfg);
          <D.25608>:
          <D.25605>:
          if (0 != 0) goto <D.25609>; else goto <D.25610>;
          <D.25609>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.25271 = src_var->dreg;
            D.25272 = D.25271 + 1;
            D.25273 = (unsigned int) D.25272;
            D.25217 = cfg->vreg_to_inst_len;
            if (D.25273 < D.25217) goto <D.25612>; else goto <D.25613>;
            <D.25612>:
            D.25220 = cfg->vreg_to_inst;
            D.25271 = src_var->dreg;
            D.25276 = (sizetype) D.25271;
            D.25277 = D.25276 + 1;
            D.25278 = D.25277 * 8;
            D.25279 = D.25220 + D.25278;
            iftmp.40 = *D.25279;
            goto <D.25614>;
            <D.25613>:
            iftmp.40 = 0B;
            <D.25614>:
            var1 = iftmp.40;
            D.25271 = src_var->dreg;
            D.25282 = D.25271 + 2;
            D.25283 = (unsigned int) D.25282;
            D.25217 = cfg->vreg_to_inst_len;
            if (D.25283 < D.25217) goto <D.25616>; else goto <D.25617>;
            <D.25616>:
            D.25220 = cfg->vreg_to_inst;
            D.25271 = src_var->dreg;
            D.25276 = (sizetype) D.25271;
            D.25286 = D.25276 + 2;
            D.25287 = D.25286 * 8;
            D.25288 = D.25220 + D.25287;
            iftmp.41 = *D.25288;
            goto <D.25618>;
            <D.25617>:
            iftmp.41 = 0B;
            <D.25618>:
            var2 = iftmp.41;
            D.25619 = var1 == 0B;
            D.25620 = (long int) D.25619;
            D.25621 = __builtin_expect (D.25620, 0);
            if (D.25621 != 0) goto <D.25622>; else goto <D.25623>;
            <D.25622>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1241, "var1");
            <D.25623>:
            D.25624 = var2 == 0B;
            D.25625 = (long int) D.25624;
            D.25626 = __builtin_expect (D.25625, 0);
            if (D.25626 != 0) goto <D.25627>; else goto <D.25628>;
            <D.25627>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1241, "var2");
            <D.25628>:
            D.25629 = var1->flags;
            D.25630 = D.25629 | 16;
            var1->flags = D.25630;
            D.25631 = var2->flags;
            D.25632 = D.25631 | 16;
            var2->flags = D.25632;
          }
          <D.25610>:
          D.25210 = cfg->cbb;
          D.25211 = D.25210->last_ins;
          if (D.25211 != 0B) goto <D.25633>; else goto <D.25634>;
          <D.25633>:
          D.25210 = cfg->cbb;
          D.25211 = D.25210->last_ins;
          D.25211->next = src;
          D.25210 = cfg->cbb;
          D.25211 = D.25210->last_ins;
          src->prev = D.25211;
          D.25210 = cfg->cbb;
          D.25210->last_ins = src;
          goto <D.25635>;
          <D.25634>:
          D.25210 = cfg->cbb;
          D.25210 = cfg->cbb;
          D.25210->last_ins = src;
          D.25211 = D.25210->last_ins;
          D.25210->code = D.25211;
          <D.25635>:
          D.25226 = ins->dreg;
          src->dreg = D.25226;
          goto <D.24231>;
        }
        <D.24251>:
        <D.24252>:
        <D.24253>:
        {
          struct MonoCallInst * call;
          int size;

          call = ins;
          D.25636 = BIT_FIELD_REF <*call, 64, 1088>;
          D.25637 = D.25636 & 8;
          if (D.25637 != 0) goto <D.25638>; else goto <D.25639>;
          <D.25638>:
          {
            struct MonoCallInst * call2;

            D.25205 = cfg->mempool;
            call2 = mono_mempool_alloc0 (D.25205, 192);
            call2->inst.opcode = 316;
            call2->inst.dreg = -1;
            call2->inst.sreg3 = -1;
            D.25640 = call2->inst.sreg3;
            call2->inst.sreg2 = D.25640;
            D.25641 = call2->inst.sreg2;
            call2->inst.sreg1 = D.25641;
            D.25252 = cfg->ip;
            call2->inst.cil_code = D.25252;
            memcpy (call2, call, 192);
            D.25212 = ins->opcode;
            D.25213 = (int) D.25212;
            switch (D.25213) <default: <D.25642>, case 355: <D.24257>, case 356: <D.24259>, case 357: <D.24260>>
            <D.24257>:
            call2->inst.opcode = 346;
            goto <D.24258>;
            <D.24259>:
            call2->inst.opcode = 347;
            goto <D.24258>;
            <D.24260>:
            call2->inst.opcode = 348;
            goto <D.24258>;
            <D.25642>:
            <D.24258>:
            D.25643 = alloc_preg (cfg);
            D.25644 = (int) D.25643;
            call2->inst.dreg = D.25644;
            D.25210 = cfg->cbb;
            D.25211 = D.25210->last_ins;
            if (D.25211 != 0B) goto <D.25645>; else goto <D.25646>;
            <D.25645>:
            D.25210 = cfg->cbb;
            D.25211 = D.25210->last_ins;
            D.25211->next = call2;
            D.25210 = cfg->cbb;
            D.25211 = D.25210->last_ins;
            MEM[(struct MonoInst *)call2].prev = D.25211;
            D.25210 = cfg->cbb;
            D.25210->last_ins = call2;
            goto <D.25647>;
            <D.25646>:
            D.25210 = cfg->cbb;
            D.25210 = cfg->cbb;
            D.25210->last_ins = call2;
            D.25211 = D.25210->last_ins;
            D.25210->code = D.25211;
            <D.25647>:
            D.25649 = call->inst.dreg;
            D.25650 = (unsigned int) D.25649;
            D.25217 = cfg->vreg_to_inst_len;
            if (D.25650 < D.25217) goto <D.25651>; else goto <D.25652>;
            <D.25651>:
            D.25220 = cfg->vreg_to_inst;
            D.25649 = call->inst.dreg;
            D.25653 = (long unsigned int) D.25649;
            D.25654 = D.25653 * 8;
            D.25655 = D.25220 + D.25654;
            iftmp.42 = *D.25655;
            goto <D.25656>;
            <D.25652>:
            iftmp.42 = 0B;
            <D.25656>:
            dest_var = iftmp.42;
            if (dest_var == 0B) goto <D.25657>; else goto <D.25658>;
            <D.25657>:
            D.25659 = call->signature;
            D.25660 = D.25659->ret;
            D.25649 = call->inst.dreg;
            dest_var = mono_compile_create_var_for_vreg (cfg, D.25660, 329, D.25649);
            <D.25658>:
            D.25205 = cfg->mempool;
            dest = mono_mempool_alloc (D.25205, 80);
            dest->data.op[1].const_val = 0;
            D.25307 = dest->data.op[1].const_val;
            dest->data.op[0].const_val = D.25307;
            dest->prev = 0B;
            D.25308 = dest->prev;
            dest->next = D.25308;
            dest->opcode = 314;
            dest->flags = 0;
            dest->type = 0;
            dest->dreg = -1;
            dest->sreg3 = -1;
            D.25309 = dest->sreg3;
            dest->sreg2 = D.25309;
            D.25310 = dest->sreg2;
            dest->sreg1 = D.25310;
            D.25252 = cfg->ip;
            dest->cil_code = D.25252;
            dest->data.op[0].p = dest_var;
            D.25311 = dest_var->flags;
            D.25312 = D.25311 | 16;
            dest_var->flags = D.25312;
            dest->type = 5;
            D.25313 = dest_var->klass;
            dest->klass = D.25313;
            D.25661 = alloc_dreg (cfg, 5);
            D.25662 = (int) D.25661;
            dest->dreg = D.25662;
            cfg->has_indirection = 1;
            D.25258 = cfg->gsharedvt;
            D.25259 = D.25258 != 0;
            D.25260 = (long int) D.25259;
            D.25261 = __builtin_expect (D.25260, 0);
            if (D.25261 != 0) goto <D.25663>; else goto <D.25664>;
            <D.25663>:
            D.25318 = dest_var->data.op[1].vtype;
            D.25665 = mini_is_gsharedvt_variable_type (cfg, D.25318);
            if (D.25665 != 0) goto <D.25666>; else goto <D.25667>;
            <D.25666>:
            handle_gsharedvt_ldaddr (cfg);
            <D.25667>:
            <D.25664>:
            if (0 != 0) goto <D.25668>; else goto <D.25669>;
            <D.25668>:
            {
              struct MonoInst * var1;
              struct MonoInst * var2;

              D.25325 = dest_var->dreg;
              D.25326 = D.25325 + 1;
              D.25327 = (unsigned int) D.25326;
              D.25217 = cfg->vreg_to_inst_len;
              if (D.25327 < D.25217) goto <D.25671>; else goto <D.25672>;
              <D.25671>:
              D.25220 = cfg->vreg_to_inst;
              D.25325 = dest_var->dreg;
              D.25330 = (sizetype) D.25325;
              D.25331 = D.25330 + 1;
              D.25332 = D.25331 * 8;
              D.25333 = D.25220 + D.25332;
              iftmp.43 = *D.25333;
              goto <D.25673>;
              <D.25672>:
              iftmp.43 = 0B;
              <D.25673>:
              var1 = iftmp.43;
              D.25325 = dest_var->dreg;
              D.25336 = D.25325 + 2;
              D.25337 = (unsigned int) D.25336;
              D.25217 = cfg->vreg_to_inst_len;
              if (D.25337 < D.25217) goto <D.25675>; else goto <D.25676>;
              <D.25675>:
              D.25220 = cfg->vreg_to_inst;
              D.25325 = dest_var->dreg;
              D.25330 = (sizetype) D.25325;
              D.25340 = D.25330 + 2;
              D.25341 = D.25340 * 8;
              D.25342 = D.25220 + D.25341;
              iftmp.44 = *D.25342;
              goto <D.25677>;
              <D.25676>:
              iftmp.44 = 0B;
              <D.25677>:
              var2 = iftmp.44;
              D.25678 = var1 == 0B;
              D.25679 = (long int) D.25678;
              D.25680 = __builtin_expect (D.25679, 0);
              if (D.25680 != 0) goto <D.25681>; else goto <D.25682>;
              <D.25681>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1275, "var1");
              <D.25682>:
              D.25683 = var2 == 0B;
              D.25684 = (long int) D.25683;
              D.25685 = __builtin_expect (D.25684, 0);
              if (D.25685 != 0) goto <D.25686>; else goto <D.25687>;
              <D.25686>:
              monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1275, "var2");
              <D.25687>:
              D.25688 = var1->flags;
              D.25689 = D.25688 | 16;
              var1->flags = D.25689;
              D.25690 = var2->flags;
              D.25691 = D.25690 | 16;
              var2->flags = D.25691;
            }
            <D.25669>:
            D.25210 = cfg->cbb;
            D.25211 = D.25210->last_ins;
            if (D.25211 != 0B) goto <D.25692>; else goto <D.25693>;
            <D.25692>:
            D.25210 = cfg->cbb;
            D.25211 = D.25210->last_ins;
            D.25211->next = dest;
            D.25210 = cfg->cbb;
            D.25211 = D.25210->last_ins;
            dest->prev = D.25211;
            D.25210 = cfg->cbb;
            D.25210->last_ins = dest;
            goto <D.25694>;
            <D.25693>:
            D.25210 = cfg->cbb;
            D.25210 = cfg->cbb;
            D.25210->last_ins = dest;
            D.25211 = D.25210->last_ins;
            D.25210->code = D.25211;
            <D.25694>:
            D.25546 = dest_var->backend.is_pinvoke;
            if (D.25546 != 0) goto <D.25695>; else goto <D.25696>;
            <D.25695>:
            D.25318 = dest_var->data.op[1].vtype;
            D.25697 = mono_class_from_mono_type (D.25318);
            size = mono_class_native_size (D.25697, 0B);
            goto <D.25698>;
            <D.25696>:
            D.25318 = dest_var->data.op[1].vtype;
            size = mono_type_size (D.25318, 0B);
            <D.25698>:
            switch (size) <default: <D.24276>, case 1: <D.24263>, case 2: <D.24266>, case 3: <D.24268>, case 4: <D.24269>, case 5: <D.24271>, case 6: <D.24272>, case 7: <D.24273>, case 8: <D.24274>>
            <D.24263>:
            {
              struct MonoInst * inst;

              D.25205 = cfg->mempool;
              inst = mono_mempool_alloc (D.25205, 80);
              inst->data.op[1].const_val = 0;
              D.25699 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25699;
              inst->prev = 0B;
              D.25700 = inst->prev;
              inst->next = D.25700;
              inst->opcode = 375;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25701 = inst->sreg3;
              inst->sreg2 = D.25701;
              D.25702 = inst->sreg2;
              inst->sreg1 = D.25702;
              D.25252 = cfg->ip;
              inst->cil_code = D.25252;
              D.25703 = call2->inst.dreg;
              inst->sreg1 = D.25703;
              D.25704 = dest->dreg;
              inst->dreg = D.25704;
              inst->data.op[0].const_val = 0;
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              if (D.25211 != 0B) goto <D.25705>; else goto <D.25706>;
              <D.25705>:
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              D.25211->next = inst;
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              inst->prev = D.25211;
              D.25210 = cfg->cbb;
              D.25210->last_ins = inst;
              goto <D.25707>;
              <D.25706>:
              D.25210 = cfg->cbb;
              D.25210 = cfg->cbb;
              D.25210->last_ins = inst;
              D.25211 = D.25210->last_ins;
              D.25210->code = D.25211;
              <D.25707>:
            }
            goto <D.24265>;
            <D.24266>:
            {
              struct MonoInst * inst;

              D.25205 = cfg->mempool;
              inst = mono_mempool_alloc (D.25205, 80);
              inst->data.op[1].const_val = 0;
              D.25708 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25708;
              inst->prev = 0B;
              D.25709 = inst->prev;
              inst->next = D.25709;
              inst->opcode = 376;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25710 = inst->sreg3;
              inst->sreg2 = D.25710;
              D.25711 = inst->sreg2;
              inst->sreg1 = D.25711;
              D.25252 = cfg->ip;
              inst->cil_code = D.25252;
              D.25703 = call2->inst.dreg;
              inst->sreg1 = D.25703;
              D.25704 = dest->dreg;
              inst->dreg = D.25704;
              inst->data.op[0].const_val = 0;
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              if (D.25211 != 0B) goto <D.25712>; else goto <D.25713>;
              <D.25712>:
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              D.25211->next = inst;
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              inst->prev = D.25211;
              D.25210 = cfg->cbb;
              D.25210->last_ins = inst;
              goto <D.25714>;
              <D.25713>:
              D.25210 = cfg->cbb;
              D.25210 = cfg->cbb;
              D.25210->last_ins = inst;
              D.25211 = D.25210->last_ins;
              D.25210->code = D.25211;
              <D.25714>:
            }
            goto <D.24265>;
            <D.24268>:
            <D.24269>:
            {
              struct MonoInst * inst;

              D.25205 = cfg->mempool;
              inst = mono_mempool_alloc (D.25205, 80);
              inst->data.op[1].const_val = 0;
              D.25715 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25715;
              inst->prev = 0B;
              D.25716 = inst->prev;
              inst->next = D.25716;
              inst->opcode = 377;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25717 = inst->sreg3;
              inst->sreg2 = D.25717;
              D.25718 = inst->sreg2;
              inst->sreg1 = D.25718;
              D.25252 = cfg->ip;
              inst->cil_code = D.25252;
              D.25703 = call2->inst.dreg;
              inst->sreg1 = D.25703;
              D.25704 = dest->dreg;
              inst->dreg = D.25704;
              inst->data.op[0].const_val = 0;
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              if (D.25211 != 0B) goto <D.25719>; else goto <D.25720>;
              <D.25719>:
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              D.25211->next = inst;
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              inst->prev = D.25211;
              D.25210 = cfg->cbb;
              D.25210->last_ins = inst;
              goto <D.25721>;
              <D.25720>:
              D.25210 = cfg->cbb;
              D.25210 = cfg->cbb;
              D.25210->last_ins = inst;
              D.25211 = D.25210->last_ins;
              D.25210->code = D.25211;
              <D.25721>:
            }
            goto <D.24265>;
            <D.24271>:
            <D.24272>:
            <D.24273>:
            <D.24274>:
            {
              struct MonoInst * inst;

              D.25205 = cfg->mempool;
              inst = mono_mempool_alloc (D.25205, 80);
              inst->data.op[1].const_val = 0;
              D.25722 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25722;
              inst->prev = 0B;
              D.25723 = inst->prev;
              inst->next = D.25723;
              inst->opcode = 378;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25724 = inst->sreg3;
              inst->sreg2 = D.25724;
              D.25725 = inst->sreg2;
              inst->sreg1 = D.25725;
              D.25252 = cfg->ip;
              inst->cil_code = D.25252;
              D.25703 = call2->inst.dreg;
              inst->sreg1 = D.25703;
              D.25704 = dest->dreg;
              inst->dreg = D.25704;
              inst->data.op[0].const_val = 0;
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              if (D.25211 != 0B) goto <D.25726>; else goto <D.25727>;
              <D.25726>:
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              D.25211->next = inst;
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              inst->prev = D.25211;
              D.25210 = cfg->cbb;
              D.25210->last_ins = inst;
              goto <D.25728>;
              <D.25727>:
              D.25210 = cfg->cbb;
              D.25210 = cfg->cbb;
              D.25210->last_ins = inst;
              D.25211 = D.25210->last_ins;
              D.25210->code = D.25211;
              <D.25728>:
            }
            goto <D.24265>;
            <D.24276>:
            {
              struct MonoInst * inst;

              D.25205 = cfg->mempool;
              inst = mono_mempool_alloc (D.25205, 80);
              inst->data.op[1].const_val = 0;
              D.25729 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.25729;
              inst->prev = 0B;
              D.25730 = inst->prev;
              inst->next = D.25730;
              inst->opcode = 374;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.25731 = inst->sreg3;
              inst->sreg2 = D.25731;
              D.25732 = inst->sreg2;
              inst->sreg1 = D.25732;
              D.25252 = cfg->ip;
              inst->cil_code = D.25252;
              D.25703 = call2->inst.dreg;
              inst->sreg1 = D.25703;
              D.25704 = dest->dreg;
              inst->dreg = D.25704;
              inst->data.op[0].const_val = 0;
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              if (D.25211 != 0B) goto <D.25733>; else goto <D.25734>;
              <D.25733>:
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              D.25211->next = inst;
              D.25210 = cfg->cbb;
              D.25211 = D.25210->last_ins;
              inst->prev = D.25211;
              D.25210 = cfg->cbb;
              D.25210->last_ins = inst;
              goto <D.25735>;
              <D.25734>:
              D.25210 = cfg->cbb;
              D.25210 = cfg->cbb;
              D.25210->last_ins = inst;
              D.25211 = D.25210->last_ins;
              D.25210->code = D.25211;
              <D.25735>:
            }
            goto <D.24265>;
            <D.24265>:
          }
          goto <D.25736>;
          <D.25639>:
          D.25212 = ins->opcode;
          D.25213 = (int) D.25212;
          switch (D.25213) <default: <D.25737>, case 355: <D.24278>, case 356: <D.24280>, case 357: <D.24281>>
          <D.24278>:
          ins->opcode = 358;
          goto <D.24279>;
          <D.24280>:
          ins->opcode = 359;
          goto <D.24279>;
          <D.24281>:
          ins->opcode = 360;
          goto <D.24279>;
          <D.25737>:
          <D.24279>:
          ins->dreg = -1;
          <D.25736>:
          goto <D.24231>;
        }
        <D.24282>:
        goto <D.24231>;
        <D.24231>:
        D.25210 = cfg->cbb;
        D.25738 = D.25210 != first_bb;
        D.25739 = (long int) D.25738;
        D.25740 = __builtin_expect (D.25739, 0);
        if (D.25740 != 0) goto <D.25741>; else goto <D.25742>;
        <D.25741>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1345, "cfg->cbb == first_bb");
        <D.25742>:
        D.25210 = cfg->cbb;
        D.25746 = D.25210->code;
        if (D.25746 != 0B) goto <D.25743>; else goto <D.25747>;
        <D.25747>:
        D.25210 = cfg->cbb;
        if (D.25210 != first_bb) goto <D.25743>; else goto <D.25744>;
        <D.25743>:
        D.25210 = cfg->cbb;
        mono_replace_ins (cfg, bb, ins, &prev, first_bb, D.25210);
        first_bb->last_ins = 0B;
        D.25748 = first_bb->last_ins;
        first_bb->code = D.25748;
        first_bb->out_count = 0;
        D.25749 = first_bb->out_count;
        first_bb->in_count = D.25749;
        cfg->cbb = first_bb;
        goto <D.25745>;
        <D.25744>:
        prev = ins;
        <D.25745>:
        ins = ins->next;
        <D.24284>:
        if (ins != 0B) goto <D.24283>; else goto <D.24285>;
        <D.24285>:
        <D.24287>:
        if (restart != 0) goto <D.24286>; else goto <D.24288>;
        <D.24288>:
        D.25207 = cfg->verbose_level;
        if (D.25207 > 2) goto <D.25750>; else goto <D.25751>;
        <D.25750>:
        mono_print_bb (bb, "AFTER LOWER-VTYPE-OPTS ");
        <D.25751>:
      }
    finally
      {
        prev = {CLOBBER};
      }
  }
  bb = bb->next_bb;
  <D.24290>:
  if (bb != 0B) goto <D.24289>; else goto <D.24291>;
  <D.24291>:
}


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

  D.25754 = __builtin_object_size (__dest, 0);
  D.25753 = __builtin___memcpy_chk (__dest, __src, __len, D.25754);
  return D.25753;
}


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

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


alloc_ireg (struct MonoCompile * cfg)
{
  guint32 D.25758;
  unsigned int D.25759;
  unsigned int D.25760;
  unsigned int D.25761;

  D.25759 = cfg->next_vreg;
  D.25760 = D.25759;
  D.25761 = D.25760 + 1;
  cfg->next_vreg = D.25761;
  D.25758 = D.25760;
  return D.25758;
}


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

  switch (stack_type) <default: <D.22338>, case 1: <D.22331>, case 2: <D.22336>, case 3: <D.22332>, case 4: <D.22335>, case 5: <D.22333>, case 6: <D.22334>, case 7: <D.22337>>
  <D.22331>:
  <D.22332>:
  D.25763 = alloc_ireg (cfg);
  return D.25763;
  <D.22333>:
  D.25763 = alloc_ireg_mp (cfg);
  return D.25763;
  <D.22334>:
  D.25763 = alloc_ireg_ref (cfg);
  return D.25763;
  <D.22335>:
  D.25763 = alloc_freg (cfg);
  return D.25763;
  <D.22336>:
  D.25763 = alloc_lreg (cfg);
  return D.25763;
  <D.22337>:
  D.25763 = alloc_ireg (cfg);
  return D.25763;
  <D.22338>:
  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.25763 = 4294967295;
  return D.25763;
}


alloc_ireg_mp (struct MonoCompile * cfg)
{
  unsigned int D.25765;
  long unsigned int D.25766;
  long unsigned int D.25767;
  guint32 D.25770;
  int vreg;

  D.25765 = alloc_ireg (cfg);
  vreg = (int) D.25765;
  D.25766 = BIT_FIELD_REF <*cfg, 64, 5632>;
  D.25767 = D.25766 & 128;
  if (D.25767 != 0) goto <D.25768>; else goto <D.25769>;
  <D.25768>:
  mono_mark_vreg_as_mp (cfg, vreg);
  <D.25769>:
  D.25770 = (guint32) vreg;
  return D.25770;
}


alloc_ireg_ref (struct MonoCompile * cfg)
{
  unsigned int D.25772;
  long unsigned int D.25773;
  long unsigned int D.25774;
  guint32 D.25777;
  int vreg;

  D.25772 = alloc_ireg (cfg);
  vreg = (int) D.25772;
  D.25773 = BIT_FIELD_REF <*cfg, 64, 5632>;
  D.25774 = D.25773 & 128;
  if (D.25774 != 0) goto <D.25775>; else goto <D.25776>;
  <D.25775>:
  mono_mark_vreg_as_ref (cfg, vreg);
  <D.25776>:
  D.25777 = (guint32) vreg;
  return D.25777;
}


alloc_freg (struct MonoCompile * cfg)
{
  int D.25779;
  guint32 D.25782;
  unsigned int D.25783;
  unsigned int D.25784;
  unsigned int D.25785;

  D.25779 = mono_arch_is_soft_float ();
  if (D.25779 != 0) goto <D.25780>; else goto <D.25781>;
  <D.25780>:
  D.25782 = alloc_lreg (cfg);
  return D.25782;
  <D.25781>:
  D.25783 = cfg->next_vreg;
  D.25784 = D.25783;
  D.25785 = D.25784 + 1;
  cfg->next_vreg = D.25785;
  D.25782 = D.25784;
  return D.25782;
}


mono_arch_is_soft_float ()
{
  gboolean D.25787;

  D.25787 = 0;
  return D.25787;
}


alloc_lreg (struct MonoCompile * cfg)
{
  guint32 D.25789;
  unsigned int D.25790;
  unsigned int D.25791;
  unsigned int D.25792;

  D.25790 = cfg->next_vreg;
  D.25791 = D.25790;
  D.25792 = D.25791 + 1;
  cfg->next_vreg = D.25792;
  D.25789 = D.25791;
  return D.25789;
}


handle_gsharedvt_ldaddr (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.25794;
  long int D.25795;
  struct MonoInst * D.25796;
  int D.25797;
  int D.25798;
  const unsigned char * D.25799;
  struct MonoInst * D.25800;
  int D.25801;
  struct MonoBasicBlock * D.25802;
  struct MonoInst * D.25803;
  struct MonoInst * D.25807;
  int D.25808;
  struct MonoInst * use;

  D.25794 = cfg->mempool;
  use = mono_mempool_alloc (D.25794, 80);
  use->data.op[1].const_val = 0;
  D.25795 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.25795;
  use->prev = 0B;
  D.25796 = use->prev;
  use->next = D.25796;
  use->opcode = 796;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.25797 = use->sreg3;
  use->sreg2 = D.25797;
  D.25798 = use->sreg2;
  use->sreg1 = D.25798;
  D.25799 = cfg->ip;
  use->cil_code = D.25799;
  D.25800 = cfg->gsharedvt_info_var;
  D.25801 = D.25800->dreg;
  use->sreg1 = D.25801;
  D.25802 = cfg->cbb;
  D.25803 = D.25802->last_ins;
  if (D.25803 != 0B) goto <D.25804>; else goto <D.25805>;
  <D.25804>:
  D.25802 = cfg->cbb;
  D.25803 = D.25802->last_ins;
  D.25803->next = use;
  D.25802 = cfg->cbb;
  D.25803 = D.25802->last_ins;
  use->prev = D.25803;
  D.25802 = cfg->cbb;
  D.25802->last_ins = use;
  goto <D.25806>;
  <D.25805>:
  D.25802 = cfg->cbb;
  D.25802 = cfg->cbb;
  D.25802->last_ins = use;
  D.25803 = D.25802->last_ins;
  D.25802->code = D.25803;
  <D.25806>:
  D.25794 = cfg->mempool;
  use = mono_mempool_alloc (D.25794, 80);
  use->data.op[1].const_val = 0;
  D.25795 = use->data.op[1].const_val;
  use->data.op[0].const_val = D.25795;
  use->prev = 0B;
  D.25796 = use->prev;
  use->next = D.25796;
  use->opcode = 796;
  use->flags = 0;
  use->type = 0;
  use->dreg = -1;
  use->sreg3 = -1;
  D.25797 = use->sreg3;
  use->sreg2 = D.25797;
  D.25798 = use->sreg2;
  use->sreg1 = D.25798;
  D.25799 = cfg->ip;
  use->cil_code = D.25799;
  D.25807 = cfg->gsharedvt_locals_var;
  D.25808 = D.25807->dreg;
  use->sreg1 = D.25808;
  D.25802 = cfg->cbb;
  D.25803 = D.25802->last_ins;
  if (D.25803 != 0B) goto <D.25809>; else goto <D.25810>;
  <D.25809>:
  D.25802 = cfg->cbb;
  D.25803 = D.25802->last_ins;
  D.25803->next = use;
  D.25802 = cfg->cbb;
  D.25803 = D.25802->last_ins;
  use->prev = D.25803;
  D.25802 = cfg->cbb;
  D.25802->last_ins = use;
  goto <D.25811>;
  <D.25810>:
  D.25802 = cfg->cbb;
  D.25802 = cfg->cbb;
  D.25802->last_ins = use;
  D.25803 = D.25802->last_ins;
  D.25802->code = D.25803;
  <D.25811>:
}


mono_decompose_vtype_opts_llvm (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.25812;
  void * D.25813;
  unsigned int D.25814;
  struct MonoBasicBlock * D.25817;
  struct MonoInst * D.25818;
  short unsigned int D.25819;
  int D.25820;
  struct MonoInst * iftmp.45;
  int D.25822;
  unsigned int D.25823;
  unsigned int D.25824;
  struct MonoInst * * D.25827;
  long unsigned int D.25828;
  long unsigned int D.25829;
  struct MonoInst * * D.25830;
  struct MonoClass * D.25834;
  _Bool D.25835;
  long int D.25836;
  long int D.25837;
  struct MonoType * D.25840;
  struct MonoInst * iftmp.46;
  long int D.25847;
  struct MonoInst * D.25848;
  int D.25849;
  int D.25850;
  const unsigned char * D.25851;
  unsigned char D.25852;
  unsigned char D.25853;
  struct MonoClass * D.25854;
  unsigned int D.25855;
  int D.25856;
  int D.25857;
  _Bool D.25858;
  long int D.25859;
  long int D.25860;
  struct MonoType * D.25863;
  int D.25864;
  struct MonoInst * iftmp.47;
  int D.25870;
  int D.25871;
  unsigned int D.25872;
  sizetype D.25875;
  sizetype D.25876;
  sizetype D.25877;
  struct MonoInst * * D.25878;
  struct MonoInst * iftmp.48;
  int D.25881;
  unsigned int D.25882;
  sizetype D.25885;
  sizetype D.25886;
  struct MonoInst * * D.25887;
  _Bool D.25889;
  long int D.25890;
  long int D.25891;
  _Bool D.25894;
  long int D.25895;
  long int D.25896;
  unsigned char D.25899;
  unsigned char D.25900;
  unsigned char D.25901;
  unsigned char D.25902;
  unsigned int D.25906;
  long int D.25907;
  struct MonoInst * D.25908;
  int D.25909;
  int D.25910;
  int D.25911;
  long int D.25912;
  struct MonoClass * D.25916;
  int D.25917;
  _Bool D.25918;
  long int D.25919;
  long int D.25920;
  struct MonoInst * D.25926;
  struct MonoInst * D.25928;
  short int D.25929;
  struct MonoBasicBlock * bb;
  struct MonoBasicBlock * first_bb;

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

    try
      {
        prev = 0B;
        D.25814 = cfg->verbose_level;
        if (D.25814 > 2) goto <D.25815>; else goto <D.25816>;
        <D.25815>:
        mono_print_bb (bb, "BEFORE LOWER-VTYPE-OPTS(LLVM) ");
        <D.25816>:
        D.25817 = cfg->cbb;
        D.25817 = cfg->cbb;
        D.25817->last_ins = 0B;
        D.25818 = D.25817->last_ins;
        D.25817->code = D.25818;
        restart = 1;
        goto <D.24314>;
        <D.24313>:
        restart = 0;
        ins = bb->code;
        goto <D.24311>;
        <D.24310>:
        D.25819 = ins->opcode;
        D.25820 = (int) D.25819;
        switch (D.25820) <default: <D.24309>, case 387: <D.24304>>
        <D.24304>:
        D.25822 = ins->sreg1;
        D.25823 = (unsigned int) D.25822;
        D.25824 = cfg->vreg_to_inst_len;
        if (D.25823 < D.25824) goto <D.25825>; else goto <D.25826>;
        <D.25825>:
        D.25827 = cfg->vreg_to_inst;
        D.25822 = ins->sreg1;
        D.25828 = (long unsigned int) D.25822;
        D.25829 = D.25828 * 8;
        D.25830 = D.25827 + D.25829;
        iftmp.45 = *D.25830;
        goto <D.25831>;
        <D.25826>:
        iftmp.45 = 0B;
        <D.25831>:
        src_var = iftmp.45;
        if (src_var == 0B) goto <D.25832>; else goto <D.25833>;
        <D.25832>:
        D.25834 = ins->klass;
        D.25835 = D.25834 == 0B;
        D.25836 = (long int) D.25835;
        D.25837 = __builtin_expect (D.25836, 0);
        if (D.25837 != 0) goto <D.25838>; else goto <D.25839>;
        <D.25838>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1395, "ins->klass");
        <D.25839>:
        D.25834 = ins->klass;
        D.25840 = &D.25834->byval_arg;
        D.25822 = ins->sreg1;
        src_var = mono_compile_create_var_for_vreg (cfg, D.25840, 329, D.25822);
        <D.25833>:
        {
          struct MonoInst * var;

          D.25822 = ins->sreg1;
          D.25823 = (unsigned int) D.25822;
          D.25824 = cfg->vreg_to_inst_len;
          if (D.25823 < D.25824) goto <D.25842>; else goto <D.25843>;
          <D.25842>:
          D.25827 = cfg->vreg_to_inst;
          D.25822 = ins->sreg1;
          D.25828 = (long unsigned int) D.25822;
          D.25829 = D.25828 * 8;
          D.25830 = D.25827 + D.25829;
          iftmp.46 = *D.25830;
          goto <D.25844>;
          <D.25843>:
          iftmp.46 = 0B;
          <D.25844>:
          var = iftmp.46;
          if (var == 0B) goto <D.25845>; else goto <D.25846>;
          <D.25845>:
          D.25834 = ins->klass;
          D.25840 = &D.25834->byval_arg;
          D.25822 = ins->sreg1;
          var = mono_compile_create_var_for_vreg (cfg, D.25840, 329, D.25822);
          <D.25846>:
          D.25812 = cfg->mempool;
          src = mono_mempool_alloc (D.25812, 80);
          src->data.op[1].const_val = 0;
          D.25847 = src->data.op[1].const_val;
          src->data.op[0].const_val = D.25847;
          src->prev = 0B;
          D.25848 = src->prev;
          src->next = D.25848;
          src->opcode = 314;
          src->flags = 0;
          src->type = 0;
          src->dreg = -1;
          src->sreg3 = -1;
          D.25849 = src->sreg3;
          src->sreg2 = D.25849;
          D.25850 = src->sreg2;
          src->sreg1 = D.25850;
          D.25851 = cfg->ip;
          src->cil_code = D.25851;
          src->data.op[0].p = var;
          D.25852 = var->flags;
          D.25853 = D.25852 | 16;
          var->flags = D.25853;
          src->type = 5;
          D.25854 = var->klass;
          src->klass = D.25854;
          D.25855 = alloc_dreg (cfg, 5);
          D.25856 = (int) D.25855;
          src->dreg = D.25856;
          cfg->has_indirection = 1;
          D.25857 = cfg->gsharedvt;
          D.25858 = D.25857 != 0;
          D.25859 = (long int) D.25858;
          D.25860 = __builtin_expect (D.25859, 0);
          if (D.25860 != 0) goto <D.25861>; else goto <D.25862>;
          <D.25861>:
          D.25863 = var->data.op[1].vtype;
          D.25864 = mini_is_gsharedvt_variable_type (cfg, D.25863);
          if (D.25864 != 0) goto <D.25865>; else goto <D.25866>;
          <D.25865>:
          handle_gsharedvt_ldaddr (cfg);
          <D.25866>:
          <D.25862>:
          if (0 != 0) goto <D.25867>; else goto <D.25868>;
          <D.25867>:
          {
            struct MonoInst * var1;
            struct MonoInst * var2;

            D.25870 = var->dreg;
            D.25871 = D.25870 + 1;
            D.25872 = (unsigned int) D.25871;
            D.25824 = cfg->vreg_to_inst_len;
            if (D.25872 < D.25824) goto <D.25873>; else goto <D.25874>;
            <D.25873>:
            D.25827 = cfg->vreg_to_inst;
            D.25870 = var->dreg;
            D.25875 = (sizetype) D.25870;
            D.25876 = D.25875 + 1;
            D.25877 = D.25876 * 8;
            D.25878 = D.25827 + D.25877;
            iftmp.47 = *D.25878;
            goto <D.25879>;
            <D.25874>:
            iftmp.47 = 0B;
            <D.25879>:
            var1 = iftmp.47;
            D.25870 = var->dreg;
            D.25881 = D.25870 + 2;
            D.25882 = (unsigned int) D.25881;
            D.25824 = cfg->vreg_to_inst_len;
            if (D.25882 < D.25824) goto <D.25883>; else goto <D.25884>;
            <D.25883>:
            D.25827 = cfg->vreg_to_inst;
            D.25870 = var->dreg;
            D.25875 = (sizetype) D.25870;
            D.25885 = D.25875 + 2;
            D.25886 = D.25885 * 8;
            D.25887 = D.25827 + D.25886;
            iftmp.48 = *D.25887;
            goto <D.25888>;
            <D.25884>:
            iftmp.48 = 0B;
            <D.25888>:
            var2 = iftmp.48;
            D.25889 = var1 == 0B;
            D.25890 = (long int) D.25889;
            D.25891 = __builtin_expect (D.25890, 0);
            if (D.25891 != 0) goto <D.25892>; else goto <D.25893>;
            <D.25892>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1399, "var1");
            <D.25893>:
            D.25894 = var2 == 0B;
            D.25895 = (long int) D.25894;
            D.25896 = __builtin_expect (D.25895, 0);
            if (D.25896 != 0) goto <D.25897>; else goto <D.25898>;
            <D.25897>:
            monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1399, "var2");
            <D.25898>:
            D.25899 = var1->flags;
            D.25900 = D.25899 | 16;
            var1->flags = D.25900;
            D.25901 = var2->flags;
            D.25902 = D.25901 | 16;
            var2->flags = D.25902;
          }
          <D.25868>:
        }
        D.25817 = cfg->cbb;
        D.25818 = D.25817->last_ins;
        if (D.25818 != 0B) goto <D.25903>; else goto <D.25904>;
        <D.25903>:
        D.25817 = cfg->cbb;
        D.25818 = D.25817->last_ins;
        D.25818->next = src;
        D.25817 = cfg->cbb;
        D.25818 = D.25817->last_ins;
        src->prev = D.25818;
        D.25817 = cfg->cbb;
        D.25817->last_ins = src;
        goto <D.25905>;
        <D.25904>:
        D.25817 = cfg->cbb;
        D.25817 = cfg->cbb;
        D.25817->last_ins = src;
        D.25818 = D.25817->last_ins;
        D.25817->code = D.25818;
        <D.25905>:
        D.25906 = alloc_preg (cfg);
        dreg = (int) D.25906;
        D.25812 = cfg->mempool;
        dest = mono_mempool_alloc (D.25812, 80);
        dest->data.op[1].const_val = 0;
        D.25907 = dest->data.op[1].const_val;
        dest->data.op[0].const_val = D.25907;
        dest->prev = 0B;
        D.25908 = dest->prev;
        dest->next = D.25908;
        dest->opcode = 429;
        dest->flags = 0;
        dest->type = 0;
        dest->dreg = -1;
        dest->sreg3 = -1;
        D.25909 = dest->sreg3;
        dest->sreg2 = D.25909;
        D.25910 = dest->sreg2;
        dest->sreg1 = D.25910;
        D.25851 = cfg->ip;
        dest->cil_code = D.25851;
        dest->dreg = dreg;
        D.25911 = ins->dreg;
        dest->sreg1 = D.25911;
        D.25912 = ins->data.op[0].const_val;
        dest->data.op[1].const_val = D.25912;
        D.25817 = cfg->cbb;
        D.25818 = D.25817->last_ins;
        if (D.25818 != 0B) goto <D.25913>; else goto <D.25914>;
        <D.25913>:
        D.25817 = cfg->cbb;
        D.25818 = D.25817->last_ins;
        D.25818->next = dest;
        D.25817 = cfg->cbb;
        D.25818 = D.25817->last_ins;
        dest->prev = D.25818;
        D.25817 = cfg->cbb;
        D.25817->last_ins = dest;
        goto <D.25915>;
        <D.25914>:
        D.25817 = cfg->cbb;
        D.25817 = cfg->cbb;
        D.25817->last_ins = dest;
        D.25818 = D.25817->last_ins;
        D.25817->code = D.25818;
        <D.25915>:
        D.25916 = src_var->klass;
        D.25917 = src_var->backend.is_pinvoke;
        mini_emit_stobj (cfg, dest, src, D.25916, D.25917);
        goto <D.24308>;
        <D.24309>:
        goto <D.24308>;
        <D.24308>:
        D.25817 = cfg->cbb;
        D.25918 = D.25817 != first_bb;
        D.25919 = (long int) D.25918;
        D.25920 = __builtin_expect (D.25919, 0);
        if (D.25920 != 0) goto <D.25921>; else goto <D.25922>;
        <D.25921>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1410, "cfg->cbb == first_bb");
        <D.25922>:
        D.25817 = cfg->cbb;
        D.25926 = D.25817->code;
        if (D.25926 != 0B) goto <D.25923>; else goto <D.25927>;
        <D.25927>:
        D.25817 = cfg->cbb;
        if (D.25817 != first_bb) goto <D.25923>; else goto <D.25924>;
        <D.25923>:
        D.25817 = cfg->cbb;
        mono_replace_ins (cfg, bb, ins, &prev, first_bb, D.25817);
        first_bb->last_ins = 0B;
        D.25928 = first_bb->last_ins;
        first_bb->code = D.25928;
        first_bb->out_count = 0;
        D.25929 = first_bb->out_count;
        first_bb->in_count = D.25929;
        cfg->cbb = first_bb;
        goto <D.25925>;
        <D.25924>:
        prev = ins;
        <D.25925>:
        ins = ins->next;
        <D.24311>:
        if (ins != 0B) goto <D.24310>; else goto <D.24312>;
        <D.24312>:
        <D.24314>:
        if (restart != 0) goto <D.24313>; else goto <D.24315>;
        <D.24315>:
        D.25814 = cfg->verbose_level;
        if (D.25814 > 2) goto <D.25930>; else goto <D.25931>;
        <D.25930>:
        mono_print_bb (bb, "AFTER LOWER-VTYPE-OPTS(LLVM) ");
        <D.25931>:
      }
    finally
      {
        prev = {CLOBBER};
      }
  }
  bb = bb->next_bb;
  <D.24317>:
  if (bb != 0B) goto <D.24316>; else goto <D.24318>;
  <D.24318>:
}


mono_decompose_array_access_opts (struct MonoCompile * cfg)
{
  struct MonoMemPool * D.25933;
  void * D.25934;
  long unsigned int D.25935;
  long unsigned int D.25936;
  unsigned int D.25939;
  struct MonoBasicBlock * D.25942;
  struct MonoInst * D.25943;
  short unsigned int D.25944;
  int D.25945;
  unsigned char D.25946;
  unsigned char D.25947;
  int D.25948;
  long unsigned int D.25951;
  long unsigned int D.25952;
  long int D.25955;
  struct MonoInst * D.25956;
  int D.25957;
  int D.25958;
  const unsigned char * D.25959;
  int D.25960;
  long int D.25964;
  struct MonoInst * D.25965;
  int D.25966;
  int D.25967;
  long int D.25972;
  struct MonoInst * D.25973;
  int D.25974;
  int D.25975;
  int D.25976;
  unsigned char D.25977;
  long int D.25983;
  struct MonoInst * D.25984;
  int D.25985;
  int D.25986;
  long int D.25990;
  struct MonoInst * D.25991;
  int D.25992;
  int D.25993;
  unsigned int D.26000;
  int D.26001;
  int D.26002;
  int D.26005;
  long int D.26010;
  struct MonoInst * D.26011;
  int D.26012;
  int D.26013;
  long int D.26017;
  struct MonoInst * D.26018;
  int D.26019;
  int D.26020;
  long int D.26025;
  struct MonoInst * D.26026;
  int D.26027;
  int D.26028;
  long int D.26029;
  unsigned char D.26030;
  int D.26035;
  long int D.26040;
  struct MonoInst * D.26041;
  int D.26042;
  int D.26043;
  long int D.26047;
  struct MonoInst * D.26048;
  int D.26049;
  int D.26050;
  long int D.26055;
  struct MonoInst * D.26056;
  int D.26057;
  int D.26058;
  unsigned char D.26059;
  long int D.26063;
  struct MonoInst * D.26064;
  int D.26065;
  int D.26066;
  int D.26067;
  long int D.26071;
  struct MonoInst * D.26072;
  int D.26073;
  int D.26074;
  unsigned int D.26079;
  int D.26082;
  long int D.26087;
  struct MonoInst * D.26088;
  int D.26089;
  int D.26090;
  long int D.26094;
  struct MonoInst * D.26095;
  int D.26096;
  int D.26097;
  long int D.26102;
  struct MonoInst * D.26103;
  int D.26104;
  int D.26105;
  unsigned char D.26106;
  int D.26111;
  long int D.26116;
  struct MonoInst * D.26117;
  int D.26118;
  int D.26119;
  long int D.26123;
  struct MonoInst * D.26124;
  int D.26125;
  int D.26126;
  long int D.26131;
  struct MonoInst * D.26132;
  int D.26133;
  int D.26134;
  unsigned char D.26135;
  long int D.26139;
  struct MonoInst * D.26140;
  int D.26141;
  int D.26142;
  long int D.26146;
  struct MonoInst * D.26147;
  int D.26148;
  int D.26149;
  unsigned int D.26153;
  unsigned int D.26154;
  long unsigned int D.26161;
  long unsigned int D.26162;
  void * D.26163;
  struct MonoInst * D.26164;
  long int D.26165;
  struct MonoInst * D.26166;
  int D.26167;
  int D.26168;
  struct MonoInst * * D.26169;
  long int D.26170;
  long unsigned int D.26171;
  long unsigned int D.26172;
  struct MonoInst * * D.26173;
  struct MonoInst * D.26174;
  struct MonoType * D.26175;
  unsigned int D.26176;
  short unsigned int D.26177;
  struct MonoClass * D.26178;
  int D.26179;
  unsigned char D.26180;
  <unnamed type> D.26181;
  unsigned int D.26182;
  int D.26183;
  short unsigned int D.26184;
  struct MonoClass * D.26187;
  void * D.26188;
  struct MonoDomain * D.26189;
  unsigned int D.26190;
  int D.26191;
  void * D.26195;
  struct MonoInst * D.26196;
  long int D.26197;
  struct MonoInst * D.26198;
  guint16 iftmp.49;
  int D.26203;
  int D.26204;
  long int D.26207;
  struct MonoInst * D.26208;
  int D.26209;
  int D.26210;
  struct MonoClass * D.26211;
  int D.26212;
  unsigned int D.26214;
  int D.26215;
  void * D.26219;
  struct MonoInst * D.26220;
  long int D.26221;
  struct MonoInst * D.26222;
  int D.26223;
  int D.26224;
  _Bool D.26226;
  long int D.26227;
  long int D.26228;
  void * D.26231;
  guint16 iftmp.50;
  long int D.26238;
  struct MonoInst * D.26239;
  int D.26240;
  int D.26241;
  struct MonoInst * iftmp.51;
  int D.26246;
  void * iftmp.52;
  unsigned int D.26252;
  int D.26253;
  void * D.26257;
  int D.26261;
  long int D.26266;
  struct MonoInst * D.26267;
  int D.26268;
  int D.26269;
  long int D.26273;
  struct MonoInst * D.26274;
  int D.26275;
  int D.26276;
  long int D.26281;
  struct MonoInst * D.26282;
  int D.26283;
  int D.26284;
  unsigned char D.26285;
  _Bool D.26289;
  long int D.26290;
  long int D.26291;
  struct MonoInst * D.26297;
  struct MonoInst * D.26299;
  short int D.26300;
  struct MonoBasicBlock * bb;
  struct MonoBasicBlock * first_bb;

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

    try
      {
        prev = 0B;
        D.25935 = BIT_FIELD_REF <*bb, 64, 1472>;
        D.25936 = D.25935 & 262144;
        if (D.25936 == 0) goto <D.25937>; else goto <D.25938>;
        <D.25937>:
        // predicted unlikely by continue predictor.
        goto <D.24332>;
        <D.25938>:
        D.25939 = cfg->verbose_level;
        if (D.25939 > 3) goto <D.25940>; else goto <D.25941>;
        <D.25940>:
        mono_print_bb (bb, "BEFORE DECOMPOSE-ARRAY-ACCESS-OPTS ");
        <D.25941>:
        D.25942 = cfg->cbb;
        D.25942 = cfg->cbb;
        D.25942->last_ins = 0B;
        D.25943 = D.25942->last_ins;
        D.25942->code = D.25943;
        restart = 1;
        goto <D.24382>;
        <D.24381>:
        restart = 0;
        ins = bb->code;
        goto <D.24379>;
        <D.24378>:
        D.25944 = ins->opcode;
        D.25945 = (int) D.25944;
        switch (D.25945) <default: <D.24377>, case 781: <D.24372>, case 782: <D.24363>, case 783: <D.24333>, case 784: <D.24338>>
        <D.24333>:
        {
          int __ins_flags;

          D.25946 = ins->flags;
          D.25947 = D.25946 | 64;
          __ins_flags = (int) D.25947;
          D.25948 = __ins_flags & 32;
          if (D.25948 != 0) goto <D.25949>; else goto <D.25950>;
          <D.25949>:
          D.25951 = BIT_FIELD_REF <*cfg, 64, 5632>;
          D.25952 = D.25951 & 64;
          if (D.25952 != 0) goto <D.25953>; else goto <D.25954>;
          <D.25953>:
          {
            struct MonoInst * inst;

            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 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 = 323;
            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.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->dreg = -1;
            D.25960 = ins->sreg1;
            inst->sreg1 = D.25960;
            inst->data.op[1].const_val = 0;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.25961>; else goto <D.25962>;
            <D.25961>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.25963>;
            <D.25962>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.25963>:
          }
          {
            struct MonoInst * inst;

            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 80);
            inst->data.op[1].const_val = 0;
            D.25964 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.25964;
            inst->prev = 0B;
            D.25965 = inst->prev;
            inst->next = D.25965;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.25966 = inst->sreg3;
            inst->sreg2 = D.25966;
            D.25967 = inst->sreg2;
            inst->sreg1 = D.25967;
            D.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->data.op[1].p = "NullReferenceException";
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.25968>; else goto <D.25969>;
            <D.25968>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.25970>;
            <D.25969>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.25970>:
          }
          goto <D.25971>;
          <D.25954>:
          <D.25971>:
          <D.25950>:
          D.25933 = cfg->mempool;
          dest = mono_mempool_alloc (D.25933, 80);
          dest->data.op[1].const_val = 0;
          D.25972 = dest->data.op[1].const_val;
          dest->data.op[0].const_val = D.25972;
          dest->prev = 0B;
          D.25973 = dest->prev;
          dest->next = D.25973;
          dest->opcode = 393;
          dest->flags = 0;
          dest->type = 0;
          dest->dreg = -1;
          dest->sreg3 = -1;
          D.25974 = dest->sreg3;
          dest->sreg2 = D.25974;
          D.25975 = dest->sreg2;
          dest->sreg1 = D.25975;
          D.25959 = cfg->ip;
          dest->cil_code = D.25959;
          D.25976 = ins->dreg;
          dest->dreg = D.25976;
          D.25960 = ins->sreg1;
          dest->sreg1 = D.25960;
          dest->data.op[0].const_val = 24;
          dest->type = 1;
          D.25977 = (unsigned char) __ins_flags;
          dest->flags = D.25977;
        }
        D.25942 = cfg->cbb;
        D.25943 = D.25942->last_ins;
        if (D.25943 != 0B) goto <D.25978>; else goto <D.25979>;
        <D.25978>:
        D.25942 = cfg->cbb;
        D.25943 = D.25942->last_ins;
        D.25943->next = dest;
        D.25942 = cfg->cbb;
        D.25943 = D.25942->last_ins;
        dest->prev = D.25943;
        D.25942 = cfg->cbb;
        D.25942->last_ins = dest;
        goto <D.25980>;
        <D.25979>:
        D.25942 = cfg->cbb;
        D.25942 = cfg->cbb;
        D.25942->last_ins = dest;
        D.25943 = D.25942->last_ins;
        D.25942->code = D.25943;
        <D.25980>:
        goto <D.24337>;
        <D.24338>:
        D.25951 = BIT_FIELD_REF <*cfg, 64, 5632>;
        D.25952 = D.25951 & 64;
        if (D.25952 != 0) goto <D.25981>; else goto <D.25982>;
        <D.25981>:
        {
          struct MonoInst * inst;

          D.25933 = cfg->mempool;
          inst = mono_mempool_alloc (D.25933, 80);
          inst->data.op[1].const_val = 0;
          D.25983 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.25983;
          inst->prev = 0B;
          D.25984 = inst->prev;
          inst->next = D.25984;
          inst->opcode = 323;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.25985 = inst->sreg3;
          inst->sreg2 = D.25985;
          D.25986 = inst->sreg2;
          inst->sreg1 = D.25986;
          D.25959 = cfg->ip;
          inst->cil_code = D.25959;
          inst->dreg = -1;
          D.25960 = ins->sreg1;
          inst->sreg1 = D.25960;
          inst->data.op[1].const_val = 0;
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          if (D.25943 != 0B) goto <D.25987>; else goto <D.25988>;
          <D.25987>:
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          D.25943->next = inst;
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          inst->prev = D.25943;
          D.25942 = cfg->cbb;
          D.25942->last_ins = inst;
          goto <D.25989>;
          <D.25988>:
          D.25942 = cfg->cbb;
          D.25942 = cfg->cbb;
          D.25942->last_ins = inst;
          D.25943 = D.25942->last_ins;
          D.25942->code = D.25943;
          <D.25989>:
        }
        {
          struct MonoInst * inst;

          D.25933 = cfg->mempool;
          inst = mono_mempool_alloc (D.25933, 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 = 451;
          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.25959 = cfg->ip;
          inst->cil_code = D.25959;
          inst->data.op[1].p = "NullReferenceException";
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          if (D.25943 != 0B) goto <D.25994>; else goto <D.25995>;
          <D.25994>:
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          D.25943->next = inst;
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          inst->prev = D.25943;
          D.25942 = cfg->cbb;
          D.25942->last_ins = inst;
          goto <D.25996>;
          <D.25995>:
          D.25942 = cfg->cbb;
          D.25942 = cfg->cbb;
          D.25942->last_ins = inst;
          D.25943 = D.25942->last_ins;
          D.25942->code = D.25943;
          <D.25996>:
        }
        goto <D.25997>;
        <D.25982>:
        <D.25997>:
        if (0 != 0) goto <D.25998>; else goto <D.25999>;
        <D.25998>:
        {
          int _length_reg;

          D.26000 = alloc_ireg (cfg);
          _length_reg = (int) D.26000;
          D.25946 = ins->flags;
          D.26001 = (int) D.25946;
          D.26002 = D.26001 & 32;
          if (D.26002 != 0) goto <D.26003>; else goto <D.26004>;
          <D.26003>:
          {
            struct MonoInst * inst;
            int __ins_flags;

            __ins_flags = 32;
            D.26005 = __ins_flags & 32;
            if (D.26005 != 0) goto <D.26006>; else goto <D.26007>;
            <D.26006>:
            D.25951 = BIT_FIELD_REF <*cfg, 64, 5632>;
            D.25952 = D.25951 & 64;
            if (D.25952 != 0) goto <D.26008>; else goto <D.26009>;
            <D.26008>:
            {
              struct MonoInst * inst;

              D.25933 = cfg->mempool;
              inst = mono_mempool_alloc (D.25933, 80);
              inst->data.op[1].const_val = 0;
              D.26010 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26010;
              inst->prev = 0B;
              D.26011 = inst->prev;
              inst->next = D.26011;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26012 = inst->sreg3;
              inst->sreg2 = D.26012;
              D.26013 = inst->sreg2;
              inst->sreg1 = D.26013;
              D.25959 = cfg->ip;
              inst->cil_code = D.25959;
              inst->dreg = -1;
              D.25960 = ins->sreg1;
              inst->sreg1 = D.25960;
              inst->data.op[1].const_val = 0;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              if (D.25943 != 0B) goto <D.26014>; else goto <D.26015>;
              <D.26014>:
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              D.25943->next = inst;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              inst->prev = D.25943;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              goto <D.26016>;
              <D.26015>:
              D.25942 = cfg->cbb;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              D.25943 = D.25942->last_ins;
              D.25942->code = D.25943;
              <D.26016>:
            }
            {
              struct MonoInst * inst;

              D.25933 = cfg->mempool;
              inst = mono_mempool_alloc (D.25933, 80);
              inst->data.op[1].const_val = 0;
              D.26017 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26017;
              inst->prev = 0B;
              D.26018 = inst->prev;
              inst->next = D.26018;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26019 = inst->sreg3;
              inst->sreg2 = D.26019;
              D.26020 = inst->sreg2;
              inst->sreg1 = D.26020;
              D.25959 = cfg->ip;
              inst->cil_code = D.25959;
              inst->data.op[1].p = "NullReferenceException";
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              if (D.25943 != 0B) goto <D.26021>; else goto <D.26022>;
              <D.26021>:
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              D.25943->next = inst;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              inst->prev = D.25943;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              goto <D.26023>;
              <D.26022>:
              D.25942 = cfg->cbb;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              D.25943 = D.25942->last_ins;
              D.25942->code = D.25943;
              <D.26023>:
            }
            goto <D.26024>;
            <D.26009>:
            <D.26024>:
            <D.26007>:
            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 80);
            inst->data.op[1].const_val = 0;
            D.26025 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26025;
            inst->prev = 0B;
            D.26026 = inst->prev;
            inst->next = D.26026;
            inst->opcode = 393;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26027 = inst->sreg3;
            inst->sreg2 = D.26027;
            D.26028 = inst->sreg2;
            inst->sreg1 = D.26028;
            D.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->dreg = _length_reg;
            D.25960 = ins->sreg1;
            inst->sreg1 = D.25960;
            D.26029 = ins->data.op[1].const_val;
            inst->data.op[0].const_val = D.26029;
            inst->type = 1;
            D.26030 = (unsigned char) __ins_flags;
            inst->flags = D.26030;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.26031>; else goto <D.26032>;
            <D.26031>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.26033>;
            <D.26032>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.26033>:
          }
          goto <D.26034>;
          <D.26004>:
          {
            struct MonoInst * inst;
            int __ins_flags;

            __ins_flags = 64;
            D.26035 = __ins_flags & 32;
            if (D.26035 != 0) goto <D.26036>; else goto <D.26037>;
            <D.26036>:
            D.25951 = BIT_FIELD_REF <*cfg, 64, 5632>;
            D.25952 = D.25951 & 64;
            if (D.25952 != 0) goto <D.26038>; else goto <D.26039>;
            <D.26038>:
            {
              struct MonoInst * inst;

              D.25933 = cfg->mempool;
              inst = mono_mempool_alloc (D.25933, 80);
              inst->data.op[1].const_val = 0;
              D.26040 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26040;
              inst->prev = 0B;
              D.26041 = inst->prev;
              inst->next = D.26041;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26042 = inst->sreg3;
              inst->sreg2 = D.26042;
              D.26043 = inst->sreg2;
              inst->sreg1 = D.26043;
              D.25959 = cfg->ip;
              inst->cil_code = D.25959;
              inst->dreg = -1;
              D.25960 = ins->sreg1;
              inst->sreg1 = D.25960;
              inst->data.op[1].const_val = 0;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              if (D.25943 != 0B) goto <D.26044>; else goto <D.26045>;
              <D.26044>:
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              D.25943->next = inst;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              inst->prev = D.25943;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              goto <D.26046>;
              <D.26045>:
              D.25942 = cfg->cbb;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              D.25943 = D.25942->last_ins;
              D.25942->code = D.25943;
              <D.26046>:
            }
            {
              struct MonoInst * inst;

              D.25933 = cfg->mempool;
              inst = mono_mempool_alloc (D.25933, 80);
              inst->data.op[1].const_val = 0;
              D.26047 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26047;
              inst->prev = 0B;
              D.26048 = inst->prev;
              inst->next = D.26048;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26049 = inst->sreg3;
              inst->sreg2 = D.26049;
              D.26050 = inst->sreg2;
              inst->sreg1 = D.26050;
              D.25959 = cfg->ip;
              inst->cil_code = D.25959;
              inst->data.op[1].p = "NullReferenceException";
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              if (D.25943 != 0B) goto <D.26051>; else goto <D.26052>;
              <D.26051>:
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              D.25943->next = inst;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              inst->prev = D.25943;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              goto <D.26053>;
              <D.26052>:
              D.25942 = cfg->cbb;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              D.25943 = D.25942->last_ins;
              D.25942->code = D.25943;
              <D.26053>:
            }
            goto <D.26054>;
            <D.26039>:
            <D.26054>:
            <D.26037>:
            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 80);
            inst->data.op[1].const_val = 0;
            D.26055 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26055;
            inst->prev = 0B;
            D.26056 = inst->prev;
            inst->next = D.26056;
            inst->opcode = 393;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26057 = inst->sreg3;
            inst->sreg2 = D.26057;
            D.26058 = inst->sreg2;
            inst->sreg1 = D.26058;
            D.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->dreg = _length_reg;
            D.25960 = ins->sreg1;
            inst->sreg1 = D.25960;
            D.26029 = ins->data.op[1].const_val;
            inst->data.op[0].const_val = D.26029;
            inst->type = 1;
            D.26059 = (unsigned char) __ins_flags;
            inst->flags = D.26059;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.26060>; else goto <D.26061>;
            <D.26060>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.26062>;
            <D.26061>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.26062>:
          }
          <D.26034>:
          {
            struct MonoInst * inst;

            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 80);
            inst->data.op[1].const_val = 0;
            D.26063 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26063;
            inst->prev = 0B;
            D.26064 = inst->prev;
            inst->next = D.26064;
            inst->opcode = 322;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26065 = inst->sreg3;
            inst->sreg2 = D.26065;
            D.26066 = inst->sreg2;
            inst->sreg1 = D.26066;
            D.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->dreg = -1;
            inst->sreg1 = _length_reg;
            D.26067 = ins->sreg2;
            inst->sreg2 = D.26067;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.26068>; else goto <D.26069>;
            <D.26068>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.26070>;
            <D.26069>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.26070>:
          }
          {
            struct MonoInst * inst;

            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 80);
            inst->data.op[1].const_val = 0;
            D.26071 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26071;
            inst->prev = 0B;
            D.26072 = inst->prev;
            inst->next = D.26072;
            inst->opcode = 459;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26073 = inst->sreg3;
            inst->sreg2 = D.26073;
            D.26074 = inst->sreg2;
            inst->sreg1 = D.26074;
            D.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->data.op[1].p = "IndexOutOfRangeException";
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.26075>; else goto <D.26076>;
            <D.26075>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.26077>;
            <D.26076>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.26077>:
          }
        }
        goto <D.26078>;
        <D.25999>:
        {
          int _length_reg;

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

            __ins_flags = 32;
            D.26082 = __ins_flags & 32;
            if (D.26082 != 0) goto <D.26083>; else goto <D.26084>;
            <D.26083>:
            D.25951 = BIT_FIELD_REF <*cfg, 64, 5632>;
            D.25952 = D.25951 & 64;
            if (D.25952 != 0) goto <D.26085>; else goto <D.26086>;
            <D.26085>:
            {
              struct MonoInst * inst;

              D.25933 = cfg->mempool;
              inst = mono_mempool_alloc (D.25933, 80);
              inst->data.op[1].const_val = 0;
              D.26087 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26087;
              inst->prev = 0B;
              D.26088 = inst->prev;
              inst->next = D.26088;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26089 = inst->sreg3;
              inst->sreg2 = D.26089;
              D.26090 = inst->sreg2;
              inst->sreg1 = D.26090;
              D.25959 = cfg->ip;
              inst->cil_code = D.25959;
              inst->dreg = -1;
              D.25960 = ins->sreg1;
              inst->sreg1 = D.25960;
              inst->data.op[1].const_val = 0;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              if (D.25943 != 0B) goto <D.26091>; else goto <D.26092>;
              <D.26091>:
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              D.25943->next = inst;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              inst->prev = D.25943;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              goto <D.26093>;
              <D.26092>:
              D.25942 = cfg->cbb;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              D.25943 = D.25942->last_ins;
              D.25942->code = D.25943;
              <D.26093>:
            }
            {
              struct MonoInst * inst;

              D.25933 = cfg->mempool;
              inst = mono_mempool_alloc (D.25933, 80);
              inst->data.op[1].const_val = 0;
              D.26094 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26094;
              inst->prev = 0B;
              D.26095 = inst->prev;
              inst->next = D.26095;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26096 = inst->sreg3;
              inst->sreg2 = D.26096;
              D.26097 = inst->sreg2;
              inst->sreg1 = D.26097;
              D.25959 = cfg->ip;
              inst->cil_code = D.25959;
              inst->data.op[1].p = "NullReferenceException";
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              if (D.25943 != 0B) goto <D.26098>; else goto <D.26099>;
              <D.26098>:
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              D.25943->next = inst;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              inst->prev = D.25943;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              goto <D.26100>;
              <D.26099>:
              D.25942 = cfg->cbb;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              D.25943 = D.25942->last_ins;
              D.25942->code = D.25943;
              <D.26100>:
            }
            goto <D.26101>;
            <D.26086>:
            <D.26101>:
            <D.26084>:
            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 80);
            inst->data.op[1].const_val = 0;
            D.26102 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26102;
            inst->prev = 0B;
            D.26103 = inst->prev;
            inst->next = D.26103;
            inst->opcode = 393;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26104 = inst->sreg3;
            inst->sreg2 = D.26104;
            D.26105 = inst->sreg2;
            inst->sreg1 = D.26105;
            D.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->dreg = _length_reg;
            D.25960 = ins->sreg1;
            inst->sreg1 = D.25960;
            D.26029 = ins->data.op[1].const_val;
            inst->data.op[0].const_val = D.26029;
            inst->type = 1;
            D.26106 = (unsigned char) __ins_flags;
            inst->flags = D.26106;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.26107>; else goto <D.26108>;
            <D.26107>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.26109>;
            <D.26108>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.26109>:
          }
          goto <D.26110>;
          <D.26081>:
          {
            struct MonoInst * inst;
            int __ins_flags;

            __ins_flags = 64;
            D.26111 = __ins_flags & 32;
            if (D.26111 != 0) goto <D.26112>; else goto <D.26113>;
            <D.26112>:
            D.25951 = BIT_FIELD_REF <*cfg, 64, 5632>;
            D.25952 = D.25951 & 64;
            if (D.25952 != 0) goto <D.26114>; else goto <D.26115>;
            <D.26114>:
            {
              struct MonoInst * inst;

              D.25933 = cfg->mempool;
              inst = mono_mempool_alloc (D.25933, 80);
              inst->data.op[1].const_val = 0;
              D.26116 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26116;
              inst->prev = 0B;
              D.26117 = inst->prev;
              inst->next = D.26117;
              inst->opcode = 323;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26118 = inst->sreg3;
              inst->sreg2 = D.26118;
              D.26119 = inst->sreg2;
              inst->sreg1 = D.26119;
              D.25959 = cfg->ip;
              inst->cil_code = D.25959;
              inst->dreg = -1;
              D.25960 = ins->sreg1;
              inst->sreg1 = D.25960;
              inst->data.op[1].const_val = 0;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              if (D.25943 != 0B) goto <D.26120>; else goto <D.26121>;
              <D.26120>:
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              D.25943->next = inst;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              inst->prev = D.25943;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              goto <D.26122>;
              <D.26121>:
              D.25942 = cfg->cbb;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              D.25943 = D.25942->last_ins;
              D.25942->code = D.25943;
              <D.26122>:
            }
            {
              struct MonoInst * inst;

              D.25933 = cfg->mempool;
              inst = mono_mempool_alloc (D.25933, 80);
              inst->data.op[1].const_val = 0;
              D.26123 = inst->data.op[1].const_val;
              inst->data.op[0].const_val = D.26123;
              inst->prev = 0B;
              D.26124 = inst->prev;
              inst->next = D.26124;
              inst->opcode = 451;
              inst->flags = 0;
              inst->type = 0;
              inst->dreg = -1;
              inst->sreg3 = -1;
              D.26125 = inst->sreg3;
              inst->sreg2 = D.26125;
              D.26126 = inst->sreg2;
              inst->sreg1 = D.26126;
              D.25959 = cfg->ip;
              inst->cil_code = D.25959;
              inst->data.op[1].p = "NullReferenceException";
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              if (D.25943 != 0B) goto <D.26127>; else goto <D.26128>;
              <D.26127>:
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              D.25943->next = inst;
              D.25942 = cfg->cbb;
              D.25943 = D.25942->last_ins;
              inst->prev = D.25943;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              goto <D.26129>;
              <D.26128>:
              D.25942 = cfg->cbb;
              D.25942 = cfg->cbb;
              D.25942->last_ins = inst;
              D.25943 = D.25942->last_ins;
              D.25942->code = D.25943;
              <D.26129>:
            }
            goto <D.26130>;
            <D.26115>:
            <D.26130>:
            <D.26113>:
            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 80);
            inst->data.op[1].const_val = 0;
            D.26131 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26131;
            inst->prev = 0B;
            D.26132 = inst->prev;
            inst->next = D.26132;
            inst->opcode = 393;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26133 = inst->sreg3;
            inst->sreg2 = D.26133;
            D.26134 = inst->sreg2;
            inst->sreg1 = D.26134;
            D.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->dreg = _length_reg;
            D.25960 = ins->sreg1;
            inst->sreg1 = D.25960;
            D.26029 = ins->data.op[1].const_val;
            inst->data.op[0].const_val = D.26029;
            inst->type = 1;
            D.26135 = (unsigned char) __ins_flags;
            inst->flags = D.26135;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.26136>; else goto <D.26137>;
            <D.26136>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.26138>;
            <D.26137>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.26138>:
          }
          <D.26110>:
          {
            struct MonoInst * inst;

            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 80);
            inst->data.op[1].const_val = 0;
            D.26139 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26139;
            inst->prev = 0B;
            D.26140 = inst->prev;
            inst->next = D.26140;
            inst->opcode = 322;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26141 = inst->sreg3;
            inst->sreg2 = D.26141;
            D.26142 = inst->sreg2;
            inst->sreg1 = D.26142;
            D.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->dreg = -1;
            inst->sreg1 = _length_reg;
            D.26067 = ins->sreg2;
            inst->sreg2 = D.26067;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.26143>; else goto <D.26144>;
            <D.26143>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.26145>;
            <D.26144>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.26145>:
          }
          {
            struct MonoInst * inst;

            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 80);
            inst->data.op[1].const_val = 0;
            D.26146 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26146;
            inst->prev = 0B;
            D.26147 = inst->prev;
            inst->next = D.26147;
            inst->opcode = 459;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26148 = inst->sreg3;
            inst->sreg2 = D.26148;
            D.26149 = inst->sreg2;
            inst->sreg1 = D.26149;
            D.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->data.op[1].p = "IndexOutOfRangeException";
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.26150>; else goto <D.26151>;
            <D.26150>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.26152>;
            <D.26151>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.26152>:
          }
        }
        <D.26078>:
        goto <D.24337>;
        <D.24363>:
        D.26153 = cfg->opt;
        D.26154 = D.26153 & 512;
        if (D.26154 != 0) goto <D.26155>; else goto <D.26156>;
        <D.26155>:
        D.26153 = cfg->opt;
        D.26154 = D.26153 & 512;
        if (D.26154 != 0) goto <D.26157>; else goto <D.26160>;
        <D.26160>:
        D.26161 = BIT_FIELD_REF <*cfg, 64, 5568>;
        D.26162 = D.26161 & 274877906944;
        if (D.26162 != 0) goto <D.26157>; else goto <D.26158>;
        <D.26157>:
        {
          struct MonoInst * __domain_var;

          __domain_var = mono_get_domainvar (cfg);
          D.25933 = cfg->mempool;
          D.26163 = mono_mempool_alloc (D.25933, 80);
          iargs[0] = D.26163;
          D.26164 = iargs[0];
          D.26164 = iargs[0];
          D.26164->data.op[1].const_val = 0;
          D.26165 = D.26164->data.op[1].const_val;
          D.26164->data.op[0].const_val = D.26165;
          D.26164 = iargs[0];
          D.26164 = iargs[0];
          D.26164->prev = 0B;
          D.26166 = D.26164->prev;
          D.26164->next = D.26166;
          D.26164 = iargs[0];
          D.26164->opcode = 424;
          D.26164 = iargs[0];
          D.26164->flags = 0;
          D.26164 = iargs[0];
          D.26164->type = 0;
          D.26164 = iargs[0];
          D.26164->dreg = -1;
          D.26164 = iargs[0];
          D.26164 = iargs[0];
          D.26164 = iargs[0];
          D.26164->sreg3 = -1;
          D.26167 = D.26164->sreg3;
          D.26164->sreg2 = D.26167;
          D.26168 = D.26164->sreg2;
          D.26164->sreg1 = D.26168;
          D.26164 = iargs[0];
          D.25959 = cfg->ip;
          D.26164->cil_code = D.25959;
          D.26164 = iargs[0];
          D.26169 = cfg->varinfo;
          D.26170 = __domain_var->data.op[0].const_val;
          D.26171 = (long unsigned int) D.26170;
          D.26172 = D.26171 * 8;
          D.26173 = D.26169 + D.26172;
          D.26174 = *D.26173;
          D.26175 = D.26174->data.op[1].vtype;
          D.26176 = mono_type_to_regmove (cfg, D.26175);
          D.26177 = (short unsigned int) D.26176;
          D.26164->opcode = D.26177;
          D.26169 = cfg->varinfo;
          D.26170 = __domain_var->data.op[0].const_val;
          D.26171 = (long unsigned int) D.26170;
          D.26172 = D.26171 * 8;
          D.26173 = D.26169 + D.26172;
          D.26174 = *D.26173;
          D.26175 = D.26174->data.op[1].vtype;
          D.26164 = iargs[0];
          type_to_eval_stack_type (cfg, D.26175, D.26164);
          D.26164 = iargs[0];
          D.26169 = cfg->varinfo;
          D.26170 = __domain_var->data.op[0].const_val;
          D.26171 = (long unsigned int) D.26170;
          D.26172 = D.26171 * 8;
          D.26173 = D.26169 + D.26172;
          D.26174 = *D.26173;
          D.26178 = D.26174->klass;
          D.26164->klass = D.26178;
          D.26164 = iargs[0];
          D.26169 = cfg->varinfo;
          D.26170 = __domain_var->data.op[0].const_val;
          D.26171 = (long unsigned int) D.26170;
          D.26172 = D.26171 * 8;
          D.26173 = D.26169 + D.26172;
          D.26174 = *D.26173;
          D.26179 = D.26174->dreg;
          D.26164->sreg1 = D.26179;
          D.26164 = iargs[0];
          D.26164 = iargs[0];
          D.26180 = D.26164->type;
          D.26181 = (<unnamed type>) D.26180;
          D.26182 = alloc_dreg (cfg, D.26181);
          D.26183 = (int) D.26182;
          D.26164->dreg = D.26183;
          D.26164 = iargs[0];
          D.26184 = D.26164->opcode;
          if (D.26184 == 427) goto <D.26185>; else goto <D.26186>;
          <D.26185>:
          D.26164 = iargs[0];
          D.26169 = cfg->varinfo;
          D.26170 = __domain_var->data.op[0].const_val;
          D.26171 = (long unsigned int) D.26170;
          D.26172 = D.26171 * 8;
          D.26173 = D.26169 + D.26172;
          D.26174 = *D.26173;
          D.26175 = D.26174->data.op[1].vtype;
          D.26187 = mono_class_from_mono_type (D.26175);
          D.26164->klass = D.26187;
          <D.26186>:
        }
        goto <D.26159>;
        <D.26158>:
        D.25933 = cfg->mempool;
        D.26188 = mono_mempool_alloc (D.25933, 80);
        iargs[0] = D.26188;
        D.26164 = iargs[0];
        D.26164 = iargs[0];
        D.26164->data.op[1].const_val = 0;
        D.26165 = D.26164->data.op[1].const_val;
        D.26164->data.op[0].const_val = D.26165;
        D.26164 = iargs[0];
        D.26164 = iargs[0];
        D.26164->prev = 0B;
        D.26166 = D.26164->prev;
        D.26164->next = D.26166;
        D.26164 = iargs[0];
        D.26164->opcode = 363;
        D.26164 = iargs[0];
        D.26164->flags = 0;
        D.26164 = iargs[0];
        D.26164->type = 0;
        D.26164 = iargs[0];
        D.26164->dreg = -1;
        D.26164 = iargs[0];
        D.26164 = iargs[0];
        D.26164 = iargs[0];
        D.26164->sreg3 = -1;
        D.26167 = D.26164->sreg3;
        D.26164->sreg2 = D.26167;
        D.26168 = D.26164->sreg2;
        D.26164->sreg1 = D.26168;
        D.26164 = iargs[0];
        D.25959 = cfg->ip;
        D.26164->cil_code = D.25959;
        D.26164 = iargs[0];
        D.26189 = cfg->domain;
        D.26164->data.op[0].p = D.26189;
        D.26164 = iargs[0];
        D.26164->type = 3;
        D.26164 = iargs[0];
        D.26190 = alloc_dreg (cfg, 3);
        D.26191 = (int) D.26190;
        D.26164->dreg = D.26191;
        <D.26159>:
        D.25942 = cfg->cbb;
        D.25943 = D.25942->last_ins;
        if (D.25943 != 0B) goto <D.26192>; else goto <D.26193>;
        <D.26192>:
        D.25942 = cfg->cbb;
        D.25943 = D.25942->last_ins;
        D.26164 = iargs[0];
        D.25943->next = D.26164;
        D.26164 = iargs[0];
        D.25942 = cfg->cbb;
        D.25943 = D.25942->last_ins;
        D.26164->prev = D.25943;
        D.25942 = cfg->cbb;
        D.26164 = iargs[0];
        D.25942->last_ins = D.26164;
        goto <D.26194>;
        <D.26193>:
        D.25942 = cfg->cbb;
        D.25942 = cfg->cbb;
        D.26164 = iargs[0];
        D.25942->last_ins = D.26164;
        D.25943 = D.25942->last_ins;
        D.25942->code = D.25943;
        <D.26194>:
        D.25933 = cfg->mempool;
        D.26195 = mono_mempool_alloc (D.25933, 80);
        iargs[1] = D.26195;
        D.26196 = iargs[1];
        D.26196 = iargs[1];
        D.26196->data.op[1].const_val = 0;
        D.26197 = D.26196->data.op[1].const_val;
        D.26196->data.op[0].const_val = D.26197;
        D.26196 = iargs[1];
        D.26196 = iargs[1];
        D.26196->prev = 0B;
        D.26198 = D.26196->prev;
        D.26196->next = D.26198;
        D.26196 = iargs[1];
        D.26161 = BIT_FIELD_REF <*cfg, 64, 5568>;
        D.26162 = D.26161 & 274877906944;
        if (D.26162 != 0) goto <D.26200>; else goto <D.26201>;
        <D.26200>:
        iftmp.49 = 734;
        goto <D.26202>;
        <D.26201>:
        iftmp.49 = 363;
        <D.26202>:
        D.26196->opcode = iftmp.49;
        D.26196 = iargs[1];
        D.26196->flags = 0;
        D.26196 = iargs[1];
        D.26196->type = 0;
        D.26196 = iargs[1];
        D.26196->dreg = -1;
        D.26196 = iargs[1];
        D.26196 = iargs[1];
        D.26196 = iargs[1];
        D.26196->sreg3 = -1;
        D.26203 = D.26196->sreg3;
        D.26196->sreg2 = D.26203;
        D.26204 = D.26196->sreg2;
        D.26196->sreg1 = D.26204;
        D.26196 = iargs[1];
        D.25959 = cfg->ip;
        D.26196->cil_code = D.25959;
        D.26161 = BIT_FIELD_REF <*cfg, 64, 5568>;
        D.26162 = D.26161 & 274877906944;
        if (D.26162 != 0) goto <D.26205>; else goto <D.26206>;
        <D.26205>:
        {
          struct MonoInst * group;
          struct MonoInst * got_loc;

          got_loc = mono_get_got_var (cfg);
          D.25933 = cfg->mempool;
          group = mono_mempool_alloc (D.25933, 80);
          group->data.op[1].const_val = 0;
          D.26207 = group->data.op[1].const_val;
          group->data.op[0].const_val = D.26207;
          group->prev = 0B;
          D.26208 = group->prev;
          group->next = D.26208;
          group->opcode = 733;
          group->flags = 0;
          group->type = 0;
          group->dreg = -1;
          group->sreg3 = -1;
          D.26209 = group->sreg3;
          group->sreg2 = D.26209;
          D.26210 = group->sreg2;
          group->sreg1 = D.26210;
          D.25959 = cfg->ip;
          group->cil_code = D.25959;
          D.26211 = ins->data.op[1].klass;
          group->data.op[0].src = D.26211;
          group->data.op[1].src = 11B;
          D.26196 = iargs[1];
          D.26212 = got_loc->dreg;
          D.26196->sreg1 = D.26212;
          D.26196 = iargs[1];
          D.26196->data.op[1].p = group;
        }
        goto <D.26213>;
        <D.26206>:
        D.26196 = iargs[1];
        D.26211 = ins->data.op[1].klass;
        D.26196->data.op[0].p = D.26211;
        D.26196 = iargs[1];
        D.26196->data.op[1].src = 11B;
        <D.26213>:
        D.26196 = iargs[1];
        D.26196->type = 3;
        D.26196 = iargs[1];
        D.26214 = alloc_dreg (cfg, 3);
        D.26215 = (int) D.26214;
        D.26196->dreg = D.26215;
        D.25942 = cfg->cbb;
        D.25943 = D.25942->last_ins;
        if (D.25943 != 0B) goto <D.26216>; else goto <D.26217>;
        <D.26216>:
        D.25942 = cfg->cbb;
        D.25943 = D.25942->last_ins;
        D.26196 = iargs[1];
        D.25943->next = D.26196;
        D.26196 = iargs[1];
        D.25942 = cfg->cbb;
        D.25943 = D.25942->last_ins;
        D.26196->prev = D.25943;
        D.25942 = cfg->cbb;
        D.26196 = iargs[1];
        D.25942->last_ins = D.26196;
        goto <D.26218>;
        <D.26217>:
        D.25942 = cfg->cbb;
        D.25942 = cfg->cbb;
        D.26196 = iargs[1];
        D.25942->last_ins = D.26196;
        D.25943 = D.25942->last_ins;
        D.25942->code = D.25943;
        <D.26218>:
        D.25933 = cfg->mempool;
        D.26219 = mono_mempool_alloc (D.25933, 80);
        iargs[2] = D.26219;
        D.26220 = iargs[2];
        D.26220 = iargs[2];
        D.26220->data.op[1].const_val = 0;
        D.26221 = D.26220->data.op[1].const_val;
        D.26220->data.op[0].const_val = D.26221;
        D.26220 = iargs[2];
        D.26220 = iargs[2];
        D.26220->prev = 0B;
        D.26222 = D.26220->prev;
        D.26220->next = D.26222;
        D.26220 = iargs[2];
        D.26220->opcode = 424;
        D.26220 = iargs[2];
        D.26220->flags = 0;
        D.26220 = iargs[2];
        D.26220->type = 0;
        D.26220 = iargs[2];
        D.26220->dreg = -1;
        D.26220 = iargs[2];
        D.26220 = iargs[2];
        D.26220 = iargs[2];
        D.26220->sreg3 = -1;
        D.26223 = D.26220->sreg3;
        D.26220->sreg2 = D.26223;
        D.26224 = D.26220->sreg2;
        D.26220->sreg1 = D.26224;
        D.26220 = iargs[2];
        D.25959 = cfg->ip;
        D.26220->cil_code = D.25959;
        D.26220 = iargs[2];
        D.25960 = ins->sreg1;
        D.26220->dreg = D.25960;
        dest = mono_emit_jit_icall (cfg, mono_array_new, &iargs);
        D.25976 = ins->dreg;
        dest->dreg = D.25976;
        goto <D.26225>;
        <D.26156>:
        {
          struct MonoClass * array_class;
          struct MonoVTable * vtable;
          struct MonoMethod * managed_alloc;

          D.26211 = ins->data.op[1].klass;
          array_class = mono_array_class_get (D.26211, 1);
          D.26189 = cfg->domain;
          vtable = mono_class_vtable (D.26189, array_class);
          managed_alloc = mono_gc_get_managed_array_allocator (array_class);
          D.26226 = vtable == 0B;
          D.26227 = (long int) D.26226;
          D.26228 = __builtin_expect (D.26227, 0);
          if (D.26228 != 0) goto <D.26229>; else goto <D.26230>;
          <D.26229>:
          monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1505, "vtable");
          <D.26230>:
          D.25933 = cfg->mempool;
          D.26231 = mono_mempool_alloc (D.25933, 80);
          iargs[0] = D.26231;
          D.26164 = iargs[0];
          D.26164 = iargs[0];
          D.26164->data.op[1].const_val = 0;
          D.26165 = D.26164->data.op[1].const_val;
          D.26164->data.op[0].const_val = D.26165;
          D.26164 = iargs[0];
          D.26164 = iargs[0];
          D.26164->prev = 0B;
          D.26166 = D.26164->prev;
          D.26164->next = D.26166;
          D.26164 = iargs[0];
          D.26161 = BIT_FIELD_REF <*cfg, 64, 5568>;
          D.26162 = D.26161 & 274877906944;
          if (D.26162 != 0) goto <D.26233>; else goto <D.26234>;
          <D.26233>:
          iftmp.50 = 734;
          goto <D.26235>;
          <D.26234>:
          iftmp.50 = 363;
          <D.26235>:
          D.26164->opcode = iftmp.50;
          D.26164 = iargs[0];
          D.26164->flags = 0;
          D.26164 = iargs[0];
          D.26164->type = 0;
          D.26164 = iargs[0];
          D.26164->dreg = -1;
          D.26164 = iargs[0];
          D.26164 = iargs[0];
          D.26164 = iargs[0];
          D.26164->sreg3 = -1;
          D.26167 = D.26164->sreg3;
          D.26164->sreg2 = D.26167;
          D.26168 = D.26164->sreg2;
          D.26164->sreg1 = D.26168;
          D.26164 = iargs[0];
          D.25959 = cfg->ip;
          D.26164->cil_code = D.25959;
          D.26161 = BIT_FIELD_REF <*cfg, 64, 5568>;
          D.26162 = D.26161 & 274877906944;
          if (D.26162 != 0) goto <D.26236>; else goto <D.26237>;
          <D.26236>:
          {
            struct MonoInst * group;
            struct MonoInst * got_loc;

            got_loc = mono_get_got_var (cfg);
            D.25933 = cfg->mempool;
            group = mono_mempool_alloc (D.25933, 80);
            group->data.op[1].const_val = 0;
            D.26238 = group->data.op[1].const_val;
            group->data.op[0].const_val = D.26238;
            group->prev = 0B;
            D.26239 = group->prev;
            group->next = D.26239;
            group->opcode = 733;
            group->flags = 0;
            group->type = 0;
            group->dreg = -1;
            group->sreg3 = -1;
            D.26240 = group->sreg3;
            group->sreg2 = D.26240;
            D.26241 = group->sreg2;
            group->sreg1 = D.26241;
            D.25959 = cfg->ip;
            group->cil_code = D.25959;
            D.26161 = BIT_FIELD_REF <*cfg, 64, 5568>;
            D.26162 = D.26161 & 274877906944;
            if (D.26162 != 0) goto <D.26243>; else goto <D.26244>;
            <D.26243>:
            iftmp.51 = vtable->klass;
            goto <D.26245>;
            <D.26244>:
            iftmp.51 = vtable;
            <D.26245>:
            group->data.op[0].src = iftmp.51;
            group->data.op[1].src = 14B;
            D.26164 = iargs[0];
            D.26246 = got_loc->dreg;
            D.26164->sreg1 = D.26246;
            D.26164 = iargs[0];
            D.26164->data.op[1].p = group;
          }
          goto <D.26247>;
          <D.26237>:
          D.26164 = iargs[0];
          D.26161 = BIT_FIELD_REF <*cfg, 64, 5568>;
          D.26162 = D.26161 & 274877906944;
          if (D.26162 != 0) goto <D.26249>; else goto <D.26250>;
          <D.26249>:
          iftmp.52 = vtable->klass;
          goto <D.26251>;
          <D.26250>:
          iftmp.52 = vtable;
          <D.26251>:
          D.26164->data.op[0].p = iftmp.52;
          D.26164 = iargs[0];
          D.26164->data.op[1].src = 14B;
          <D.26247>:
          D.26164 = iargs[0];
          D.26164->type = 3;
          D.26164 = iargs[0];
          D.26252 = alloc_dreg (cfg, 3);
          D.26253 = (int) D.26252;
          D.26164->dreg = D.26253;
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          if (D.25943 != 0B) goto <D.26254>; else goto <D.26255>;
          <D.26254>:
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          D.26164 = iargs[0];
          D.25943->next = D.26164;
          D.26164 = iargs[0];
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          D.26164->prev = D.25943;
          D.25942 = cfg->cbb;
          D.26164 = iargs[0];
          D.25942->last_ins = D.26164;
          goto <D.26256>;
          <D.26255>:
          D.25942 = cfg->cbb;
          D.25942 = cfg->cbb;
          D.26164 = iargs[0];
          D.25942->last_ins = D.26164;
          D.25943 = D.25942->last_ins;
          D.25942->code = D.25943;
          <D.26256>:
          D.25933 = cfg->mempool;
          D.26257 = mono_mempool_alloc (D.25933, 80);
          iargs[1] = D.26257;
          D.26196 = iargs[1];
          D.26196 = iargs[1];
          D.26196->data.op[1].const_val = 0;
          D.26197 = D.26196->data.op[1].const_val;
          D.26196->data.op[0].const_val = D.26197;
          D.26196 = iargs[1];
          D.26196 = iargs[1];
          D.26196->prev = 0B;
          D.26198 = D.26196->prev;
          D.26196->next = D.26198;
          D.26196 = iargs[1];
          D.26196->opcode = 424;
          D.26196 = iargs[1];
          D.26196->flags = 0;
          D.26196 = iargs[1];
          D.26196->type = 0;
          D.26196 = iargs[1];
          D.26196->dreg = -1;
          D.26196 = iargs[1];
          D.26196 = iargs[1];
          D.26196 = iargs[1];
          D.26196->sreg3 = -1;
          D.26203 = D.26196->sreg3;
          D.26196->sreg2 = D.26203;
          D.26204 = D.26196->sreg2;
          D.26196->sreg1 = D.26204;
          D.26196 = iargs[1];
          D.25959 = cfg->ip;
          D.26196->cil_code = D.25959;
          D.26196 = iargs[1];
          D.25960 = ins->sreg1;
          D.26196->dreg = D.25960;
          if (managed_alloc != 0B) goto <D.26258>; else goto <D.26259>;
          <D.26258>:
          dest = mono_emit_method_call (cfg, managed_alloc, &iargs, 0B);
          goto <D.26260>;
          <D.26259>:
          dest = mono_emit_jit_icall (cfg, mono_array_new_specific, &iargs);
          <D.26260>:
          D.25976 = ins->dreg;
          dest->dreg = D.25976;
        }
        <D.26225>:
        goto <D.24337>;
        <D.24372>:
        {
          struct MonoInst * inst;
          int __ins_flags;

          D.25946 = ins->flags;
          D.25947 = D.25946 | 64;
          __ins_flags = (int) D.25947;
          D.26261 = __ins_flags & 32;
          if (D.26261 != 0) goto <D.26262>; else goto <D.26263>;
          <D.26262>:
          D.25951 = BIT_FIELD_REF <*cfg, 64, 5632>;
          D.25952 = D.25951 & 64;
          if (D.25952 != 0) goto <D.26264>; else goto <D.26265>;
          <D.26264>:
          {
            struct MonoInst * inst;

            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 80);
            inst->data.op[1].const_val = 0;
            D.26266 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26266;
            inst->prev = 0B;
            D.26267 = inst->prev;
            inst->next = D.26267;
            inst->opcode = 323;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26268 = inst->sreg3;
            inst->sreg2 = D.26268;
            D.26269 = inst->sreg2;
            inst->sreg1 = D.26269;
            D.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->dreg = -1;
            D.25960 = ins->sreg1;
            inst->sreg1 = D.25960;
            inst->data.op[1].const_val = 0;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.26270>; else goto <D.26271>;
            <D.26270>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.26272>;
            <D.26271>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.26272>:
          }
          {
            struct MonoInst * inst;

            D.25933 = cfg->mempool;
            inst = mono_mempool_alloc (D.25933, 80);
            inst->data.op[1].const_val = 0;
            D.26273 = inst->data.op[1].const_val;
            inst->data.op[0].const_val = D.26273;
            inst->prev = 0B;
            D.26274 = inst->prev;
            inst->next = D.26274;
            inst->opcode = 451;
            inst->flags = 0;
            inst->type = 0;
            inst->dreg = -1;
            inst->sreg3 = -1;
            D.26275 = inst->sreg3;
            inst->sreg2 = D.26275;
            D.26276 = inst->sreg2;
            inst->sreg1 = D.26276;
            D.25959 = cfg->ip;
            inst->cil_code = D.25959;
            inst->data.op[1].p = "NullReferenceException";
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            if (D.25943 != 0B) goto <D.26277>; else goto <D.26278>;
            <D.26277>:
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            D.25943->next = inst;
            D.25942 = cfg->cbb;
            D.25943 = D.25942->last_ins;
            inst->prev = D.25943;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            goto <D.26279>;
            <D.26278>:
            D.25942 = cfg->cbb;
            D.25942 = cfg->cbb;
            D.25942->last_ins = inst;
            D.25943 = D.25942->last_ins;
            D.25942->code = D.25943;
            <D.26279>:
          }
          goto <D.26280>;
          <D.26265>:
          <D.26280>:
          <D.26263>:
          D.25933 = cfg->mempool;
          inst = mono_mempool_alloc (D.25933, 80);
          inst->data.op[1].const_val = 0;
          D.26281 = inst->data.op[1].const_val;
          inst->data.op[0].const_val = D.26281;
          inst->prev = 0B;
          D.26282 = inst->prev;
          inst->next = D.26282;
          inst->opcode = 393;
          inst->flags = 0;
          inst->type = 0;
          inst->dreg = -1;
          inst->sreg3 = -1;
          D.26283 = inst->sreg3;
          inst->sreg2 = D.26283;
          D.26284 = inst->sreg2;
          inst->sreg1 = D.26284;
          D.25959 = cfg->ip;
          inst->cil_code = D.25959;
          D.25976 = ins->dreg;
          inst->dreg = D.25976;
          D.25960 = ins->sreg1;
          inst->sreg1 = D.25960;
          inst->data.op[0].const_val = 16;
          inst->type = 1;
          D.26285 = (unsigned char) __ins_flags;
          inst->flags = D.26285;
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          if (D.25943 != 0B) goto <D.26286>; else goto <D.26287>;
          <D.26286>:
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          D.25943->next = inst;
          D.25942 = cfg->cbb;
          D.25943 = D.25942->last_ins;
          inst->prev = D.25943;
          D.25942 = cfg->cbb;
          D.25942->last_ins = inst;
          goto <D.26288>;
          <D.26287>:
          D.25942 = cfg->cbb;
          D.25942 = cfg->cbb;
          D.25942->last_ins = inst;
          D.25943 = D.25942->last_ins;
          D.25942->code = D.25943;
          <D.26288>:
        }
        goto <D.24337>;
        <D.24377>:
        goto <D.24337>;
        <D.24337>:
        D.25942 = cfg->cbb;
        D.26289 = D.25942 != first_bb;
        D.26290 = (long int) D.26289;
        D.26291 = __builtin_expect (D.26290, 0);
        if (D.26291 != 0) goto <D.26292>; else goto <D.26293>;
        <D.26292>:
        monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "decompose.c", 1526, "cfg->cbb == first_bb");
        <D.26293>:
        D.25942 = cfg->cbb;
        D.26297 = D.25942->code;
        if (D.26297 != 0B) goto <D.26294>; else goto <D.26298>;
        <D.26298>:
        D.25942 = cfg->cbb;
        if (D.25942 != first_bb) goto <D.26294>; else goto <D.26295>;
        <D.26294>:
        D.25942 = cfg->cbb;
        mono_replace_ins (cfg, bb, ins, &prev, first_bb, D.25942);
        first_bb->last_ins = 0B;
        D.26299 = first_bb->last_ins;
        first_bb->code = D.26299;
        first_bb->out_count = 0;
        D.26300 = first_bb->out_count;
        first_bb->in_count = D.26300;
        cfg->cbb = first_bb;
        goto <D.26296>;
        <D.26295>:
        prev = ins;
        <D.26296>:
        ins = ins->next;
        <D.24379>:
        if (ins != 0B) goto <D.24378>; else goto <D.24380>;
        <D.24380>:
        <D.24382>:
        if (restart != 0) goto <D.24381>; else goto <D.24383>;
        <D.24383>:
        D.25939 = cfg->verbose_level;
        if (D.25939 > 3) goto <D.26301>; else goto <D.26302>;
        <D.26301>:
        mono_print_bb (bb, "AFTER DECOMPOSE-ARRAY-ACCESS-OPTS ");
        <D.26302>:
      }
    finally
      {
        prev = {CLOBBER};
        iargs = {CLOBBER};
      }
  }
  <D.24332>:
  bb = bb->next_bb;
  <D.24385>:
  if (bb != 0B) goto <D.24384>; else goto <D.24386>;
  <D.24386>:
}


mono_get_domainvar (struct MonoCompile * cfg)
{
  struct MonoInst * D.26306;
  struct MonoClass * D.26309;
  struct MonoType * D.26310;
  struct MonoInst * D.26311;
  struct MonoInst * D.26312;

  D.26306 = cfg->domainvar;
  if (D.26306 == 0B) goto <D.26307>; else goto <D.26308>;
  <D.26307>:
  D.26309 = mono_defaults.int_class;
  D.26310 = &D.26309->byval_arg;
  D.26311 = mono_compile_create_var (cfg, D.26310, 329);
  cfg->domainvar = D.26311;
  <D.26308>:
  D.26312 = cfg->domainvar;
  return D.26312;
}


