mono_strtod (const char * s00, char * * se)
{
  double * rv.0;
  char D.6095;
  int D.6096;
  unsigned int D.6103;
  unsigned int c.1;
  unsigned int D.6105;
  unsigned int D.6109;
  unsigned int D.6110;
  unsigned int c.2;
  unsigned int D.6117;
  int nd.3;
  int nd.4;
  unsigned int D.6134;
  _Bool D.6135;
  _Bool D.6136;
  _Bool D.6137;
  int D.6140;
  int D.6141;
  int D.6148;
  int D.6149;
  int s.5;
  int s1.6;
  int D.6156;
  int D.6164;
  double D.6169;
  int D.6172;
  double D.6173;
  double D.6174;
  double D.6175;
  double D.6176;
  double D.6177;
  double D.6185;
  double D.6186;
  int D.6187;
  double D.6190;
  double D.6191;
  int D.6195;
  double D.6196;
  double D.6197;
  int D.6198;
  int * D.6207;
  int D.6209;
  double D.6212;
  double D.6213;
  unsigned int D.6214;
  unsigned int D.6215;
  unsigned int D.6220;
  double D.6226;
  int D.6230;
  double D.6235;
  double D.6236;
  unsigned int D.6239;
  unsigned int D.6240;
  unsigned int D.6241;
  int D.6249;
  unsigned int D.6250;
  unsigned int D.6251;
  unsigned int D.6253;
  unsigned int D.6254;
  unsigned int D.6255;
  int D.6259;
  int D.6260;
  unsigned int D.6261;
  unsigned int D.6262;
  unsigned int D.6263;
  int * D.6264;
  int * D.6265;
  int bbe.7;
  int bbbits.8;
  int D.6274;
  unsigned int D.6296;
  unsigned int D.6299;
  int D.6302;
  int D.6304;
  guint32 iftmp.9;
  unsigned int D.6317;
  unsigned int D.6318;
  int D.6319;
  unsigned int D.6322;
  int D.6330;
  unsigned int D.6334;
  int D.6335;
  unsigned int D.6336;
  unsigned int D.6337;
  double D.6341;
  double D.6342;
  double D.6344;
  double D.6345;
  double aadj1.10;
  double iftmp.11;
  double aadj1.12;
  double aadj1.13;
  double * rv0.14;
  double D.6375;
  double D.6376;
  unsigned int D.6379;
  unsigned int D.6382;
  _Bool D.6385;
  _Bool D.6386;
  _Bool D.6387;
  double iftmp.15;
  double * aadj1.16;
  unsigned int D.6399;
  unsigned int D.6400;
  unsigned int D.6401;
  double D.6402;
  double D.6407;
  double D.6418;
  double D.6419;
  double D.6426;
  double iftmp.17;
  int scale;
  int bb2;
  int bb5;
  int bbe;
  int bd2;
  int bd5;
  int bbbits;
  int bs2;
  int c;
  int dsign;
  int e;
  int e1;
  int esign;
  int i;
  int j;
  int k;
  int nd;
  int nd0;
  int nf;
  int nz;
  int nz0;
  int sign;
  const char * s;
  const char * s0;
  const char * s1;
  double aadj;
  double aadj1;
  double adj;
  double rv;
  double rv0;
  gint32 L;
  guint32 y;
  guint32 z;
  struct Bigint * bb;
  struct Bigint * bb1;
  struct Bigint * bd;
  struct Bigint * bd0;
  struct Bigint * bs;
  struct Bigint * delta;
  void break2 = <<< error >>>;
  void ret0 = <<< error >>>;
  void ret = <<< error >>>;
  void have_dig = <<< error >>>;
  void dig_done = <<< error >>>;
  void ovfl = <<< error >>>;
  void retfree = <<< error >>>;
  void undfl = <<< error >>>;
  void drop_down = <<< error >>>;
  void cont = <<< error >>>;

  try
    {
      bb = 0B;
      bd = 0B;
      bs = 0B;
      delta = 0B;
      nz = 0;
      nz0 = nz;
      sign = nz0;
      rv.0 = &rv;
      MEM[(union U *)rv.0].d = 0.0;
      s = s00;
      <D.6053>:
      D.6095 = *s;
      D.6096 = (int) D.6095;
      switch (D.6096) <default: <D.6052>, case 0: <D.6043>, case 9: <D.6045>, case 10: <D.6046>, case 11: <D.6047>, case 12: <D.6048>, case 13: <D.6049>, case 32: <D.6050>, case 43: <D.6041>, case 45: <D.6040>>
      <D.6040>:
      sign = 1;
      <D.6041>:
      s = s + 1;
      D.6095 = *s;
      if (D.6095 != 0) goto break2; else goto <D.6097>;
      <D.6097>:
      <D.6043>:
      goto ret0;
      <D.6045>:
      <D.6046>:
      <D.6047>:
      <D.6048>:
      <D.6049>:
      <D.6050>:
      // predicted unlikely by continue predictor.
      goto <D.6051>;
      <D.6052>:
      goto break2;
      <D.6051>:
      s = s + 1;
      goto <D.6053>;
      break2:
      D.6095 = *s;
      if (D.6095 == 48) goto <D.6098>; else goto <D.6099>;
      <D.6098>:
      nz0 = 1;
      goto <D.6055>;
      <D.6054>:
      <D.6055>:
      s = s + 1;
      D.6095 = *s;
      if (D.6095 == 48) goto <D.6054>; else goto <D.6056>;
      <D.6056>:
      D.6095 = *s;
      if (D.6095 == 0) goto ret; else goto <D.6100>;
      <D.6100>:
      <D.6099>:
      s0 = s;
      z = 0;
      y = z;
      nf = 0;
      nd = nf;
      goto <D.6059>;
      <D.6058>:
      if (nd <= 8) goto <D.6101>; else goto <D.6102>;
      <D.6101>:
      D.6103 = y * 10;
      c.1 = (unsigned int) c;
      D.6105 = D.6103 + c.1;
      y = D.6105 + 4294967248;
      goto <D.6106>;
      <D.6102>:
      if (nd <= 15) goto <D.6107>; else goto <D.6108>;
      <D.6107>:
      D.6109 = z * 10;
      c.1 = (unsigned int) c;
      D.6110 = D.6109 + c.1;
      z = D.6110 + 4294967248;
      <D.6108>:
      <D.6106>:
      nd = nd + 1;
      s = s + 1;
      <D.6059>:
      D.6095 = *s;
      c = (int) D.6095;
      if (c > 47) goto <D.6111>; else goto <D.6060>;
      <D.6111>:
      if (c <= 57) goto <D.6058>; else goto <D.6060>;
      <D.6060>:
      nd0 = nd;
      if (c == 46) goto <D.6112>; else goto <D.6113>;
      <D.6112>:
      s = s + 1;
      D.6095 = *s;
      c = (int) D.6095;
      if (nd == 0) goto <D.6114>; else goto <D.6115>;
      <D.6114>:
      goto <D.6062>;
      <D.6061>:
      nz = nz + 1;
      s = s + 1;
      D.6095 = *s;
      c = (int) D.6095;
      <D.6062>:
      if (c == 48) goto <D.6061>; else goto <D.6063>;
      <D.6063>:
      c.2 = (unsigned int) c;
      D.6117 = c.2 + 4294967247;
      if (D.6117 <= 8) goto <D.6118>; else goto <D.6119>;
      <D.6118>:
      s0 = s;
      nf = nf + nz;
      nz = 0;
      goto have_dig;
      <D.6119>:
      goto dig_done;
      <D.6115>:
      goto <D.6070>;
      <D.6069>:
      have_dig:
      nz = nz + 1;
      c = c + -48;
      if (c != 0) goto <D.6120>; else goto <D.6121>;
      <D.6120>:
      nf = nf + nz;
      i = 1;
      goto <D.6067>;
      <D.6066>:
      nd.3 = nd;
      nd = nd.3 + 1;
      if (nd.3 <= 8) goto <D.6123>; else goto <D.6124>;
      <D.6123>:
      y = y * 10;
      goto <D.6125>;
      <D.6124>:
      if (nd <= 16) goto <D.6126>; else goto <D.6127>;
      <D.6126>:
      z = z * 10;
      <D.6127>:
      <D.6125>:
      i = i + 1;
      <D.6067>:
      if (i < nz) goto <D.6066>; else goto <D.6068>;
      <D.6068>:
      nd.4 = nd;
      nd = nd.4 + 1;
      if (nd.4 <= 8) goto <D.6129>; else goto <D.6130>;
      <D.6129>:
      D.6103 = y * 10;
      c.1 = (unsigned int) c;
      y = D.6103 + c.1;
      goto <D.6131>;
      <D.6130>:
      if (nd <= 16) goto <D.6132>; else goto <D.6133>;
      <D.6132>:
      D.6109 = z * 10;
      c.1 = (unsigned int) c;
      z = D.6109 + c.1;
      <D.6133>:
      <D.6131>:
      nz = 0;
      <D.6121>:
      s = s + 1;
      D.6095 = *s;
      c = (int) D.6095;
      <D.6070>:
      c.2 = (unsigned int) c;
      D.6134 = c.2 + 4294967248;
      if (D.6134 <= 9) goto <D.6069>; else goto <D.6071>;
      <D.6071>:
      <D.6113>:
      dig_done:
      e = 0;
      D.6135 = c == 101;
      D.6136 = c == 69;
      D.6137 = D.6135 | D.6136;
      if (D.6137 != 0) goto <D.6138>; else goto <D.6139>;
      <D.6138>:
      D.6140 = nd | nz;
      D.6141 = D.6140 | nz0;
      if (D.6141 == 0) goto ret0; else goto <D.6142>;
      <D.6142>:
      s00 = s;
      esign = 0;
      s = s + 1;
      D.6095 = *s;
      c = (int) D.6095;
      switch (c) <default: <D.6143>, case 43: <D.6073>, case 45: <D.6072>>
      <D.6072>:
      esign = 1;
      <D.6073>:
      s = s + 1;
      D.6095 = *s;
      c = (int) D.6095;
      <D.6143>:
      c.2 = (unsigned int) c;
      D.6134 = c.2 + 4294967248;
      if (D.6134 <= 9) goto <D.6144>; else goto <D.6145>;
      <D.6144>:
      goto <D.6075>;
      <D.6074>:
      s = s + 1;
      D.6095 = *s;
      c = (int) D.6095;
      <D.6075>:
      if (c == 48) goto <D.6074>; else goto <D.6076>;
      <D.6076>:
      c.2 = (unsigned int) c;
      D.6117 = c.2 + 4294967247;
      if (D.6117 <= 8) goto <D.6146>; else goto <D.6147>;
      <D.6146>:
      L = c + -48;
      s1 = s;
      goto <D.6078>;
      <D.6077>:
      D.6148 = L * 10;
      D.6149 = D.6148 + c;
      L = D.6149 + -48;
      <D.6078>:
      s = s + 1;
      D.6095 = *s;
      c = (int) D.6095;
      if (c > 47) goto <D.6150>; else goto <D.6079>;
      <D.6150>:
      if (c <= 57) goto <D.6077>; else goto <D.6079>;
      <D.6079>:
      s.5 = (int) s;
      s1.6 = (int) s1;
      D.6156 = s.5 - s1.6;
      if (D.6156 > 8) goto <D.6151>; else goto <D.6157>;
      <D.6157>:
      if (L > 19999) goto <D.6151>; else goto <D.6152>;
      <D.6151>:
      e = 19999;
      goto <D.6153>;
      <D.6152>:
      e = L;
      <D.6153>:
      if (esign != 0) goto <D.6158>; else goto <D.6159>;
      <D.6158>:
      e = -e;
      <D.6159>:
      goto <D.6160>;
      <D.6147>:
      e = 0;
      <D.6160>:
      goto <D.6161>;
      <D.6145>:
      s = s00;
      <D.6161>:
      <D.6139>:
      if (nd == 0) goto <D.6162>; else goto <D.6163>;
      <D.6162>:
      D.6164 = nz | nz0;
      if (D.6164 == 0) goto <D.6165>; else goto <D.6166>;
      <D.6165>:
      ret0:
      s = s00;
      sign = 0;
      <D.6166>:
      goto ret;
      <D.6163>:
      e = e - nf;
      e1 = e;
      if (nd0 == 0) goto <D.6167>; else goto <D.6168>;
      <D.6167>:
      nd0 = nd;
      <D.6168>:
      k = MIN_EXPR <nd, 16>;
      rv.0 = &rv;
      D.6169 = (double) y;
      MEM[(union U *)rv.0].d = D.6169;
      if (k > 9) goto <D.6170>; else goto <D.6171>;
      <D.6170>:
      rv.0 = &rv;
      D.6172 = k + -9;
      D.6173 = tens[D.6172];
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6175 = D.6173 * D.6174;
      D.6176 = (double) z;
      D.6177 = D.6175 + D.6176;
      MEM[(union U *)rv.0].d = D.6177;
      <D.6171>:
      bd0 = 0B;
      if (nd <= 15) goto <D.6178>; else goto <D.6179>;
      <D.6178>:
      if (e == 0) goto ret; else goto <D.6180>;
      <D.6180>:
      if (e > 0) goto <D.6181>; else goto <D.6182>;
      <D.6181>:
      if (e <= 22) goto <D.6183>; else goto <D.6184>;
      <D.6183>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6185 = tens[e];
      D.6186 = D.6174 * D.6185;
      MEM[(union U *)rv.0].d = D.6186;
      goto ret;
      <D.6184>:
      i = 15 - nd;
      D.6187 = i + 22;
      if (D.6187 >= e) goto <D.6188>; else goto <D.6189>;
      <D.6188>:
      e = e - i;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6190 = tens[i];
      D.6191 = D.6174 * D.6190;
      MEM[(union U *)rv.0].d = D.6191;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6185 = tens[e];
      D.6186 = D.6174 * D.6185;
      MEM[(union U *)rv.0].d = D.6186;
      goto ret;
      <D.6189>:
      goto <D.6192>;
      <D.6182>:
      if (e >= -22) goto <D.6193>; else goto <D.6194>;
      <D.6193>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6195 = -e;
      D.6196 = tens[D.6195];
      D.6197 = D.6174 / D.6196;
      MEM[(union U *)rv.0].d = D.6197;
      goto ret;
      <D.6194>:
      <D.6192>:
      <D.6179>:
      D.6198 = nd - k;
      e1 = D.6198 + e1;
      scale = 0;
      if (e1 > 0) goto <D.6199>; else goto <D.6200>;
      <D.6199>:
      i = e1 & 15;
      if (i != 0) goto <D.6201>; else goto <D.6202>;
      <D.6201>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6190 = tens[i];
      D.6191 = D.6174 * D.6190;
      MEM[(union U *)rv.0].d = D.6191;
      <D.6202>:
      e1 = e1 & -16;
      if (e1 != 0) goto <D.6203>; else goto <D.6204>;
      <D.6203>:
      if (e1 > 308) goto <D.6205>; else goto <D.6206>;
      <D.6205>:
      ovfl:
      D.6207 = __errno_location ();
      *D.6207 = 34;
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[1] = 2146435072;
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[0] = 0;
      if (bd0 != 0B) goto retfree; else goto <D.6208>;
      <D.6208>:
      goto ret;
      <D.6206>:
      e1 = e1 >> 4;
      j = 0;
      goto <D.6083>;
      <D.6082>:
      D.6209 = e1 & 1;
      if (D.6209 != 0) goto <D.6210>; else goto <D.6211>;
      <D.6210>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6212 = bigtens[j];
      D.6213 = D.6174 * D.6212;
      MEM[(union U *)rv.0].d = D.6213;
      <D.6211>:
      j = j + 1;
      e1 = e1 >> 1;
      <D.6083>:
      if (e1 > 1) goto <D.6082>; else goto <D.6084>;
      <D.6084>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6215 = D.6214 + 4239392768;
      MEM[(union U *)rv.0].L[1] = D.6215;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6212 = bigtens[j];
      D.6213 = D.6174 * D.6212;
      MEM[(union U *)rv.0].d = D.6213;
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      z = D.6214 & 2146435072;
      if (z > 2090860544) goto ovfl; else goto <D.6216>;
      <D.6216>:
      if (z > 2089811968) goto <D.6217>; else goto <D.6218>;
      <D.6217>:
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[1] = 2146435071;
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[0] = 4294967295;
      goto <D.6219>;
      <D.6218>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6220 = D.6214 + 55574528;
      MEM[(union U *)rv.0].L[1] = D.6220;
      <D.6219>:
      <D.6204>:
      goto <D.6221>;
      <D.6200>:
      if (e1 < 0) goto <D.6222>; else goto <D.6223>;
      <D.6222>:
      e1 = -e1;
      i = e1 & 15;
      if (i != 0) goto <D.6224>; else goto <D.6225>;
      <D.6224>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6190 = tens[i];
      D.6226 = D.6174 / D.6190;
      MEM[(union U *)rv.0].d = D.6226;
      <D.6225>:
      e1 = e1 >> 4;
      if (e1 != 0) goto <D.6227>; else goto <D.6228>;
      <D.6227>:
      if (e1 > 31) goto undfl; else goto <D.6229>;
      <D.6229>:
      D.6230 = e1 & 16;
      if (D.6230 != 0) goto <D.6231>; else goto <D.6232>;
      <D.6231>:
      scale = 106;
      <D.6232>:
      j = 0;
      goto <D.6087>;
      <D.6086>:
      D.6209 = e1 & 1;
      if (D.6209 != 0) goto <D.6233>; else goto <D.6234>;
      <D.6233>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6235 = tinytens[j];
      D.6236 = D.6174 * D.6235;
      MEM[(union U *)rv.0].d = D.6236;
      <D.6234>:
      j = j + 1;
      e1 = e1 >> 1;
      <D.6087>:
      if (e1 > 0) goto <D.6086>; else goto <D.6088>;
      <D.6088>:
      if (scale != 0) goto <D.6237>; else goto <D.6238>;
      <D.6237>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6239 = D.6214 & 2146435072;
      D.6240 = D.6239 >> 20;
      D.6241 = 107 - D.6240;
      j = (int) D.6241;
      if (j > 0) goto <D.6242>; else goto <D.6243>;
      <D.6242>:
      if (j > 31) goto <D.6244>; else goto <D.6245>;
      <D.6244>:
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[0] = 0;
      if (j > 52) goto <D.6246>; else goto <D.6247>;
      <D.6246>:
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[1] = 57671680;
      goto <D.6248>;
      <D.6247>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6249 = j + -32;
      D.6250 = 4294967295 << D.6249;
      D.6251 = D.6214 & D.6250;
      MEM[(union U *)rv.0].L[1] = D.6251;
      <D.6248>:
      goto <D.6252>;
      <D.6245>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6253 = MEM[(union U *)rv.0].L[0];
      D.6254 = 4294967295 << j;
      D.6255 = D.6253 & D.6254;
      MEM[(union U *)rv.0].L[0] = D.6255;
      <D.6252>:
      <D.6243>:
      <D.6238>:
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      if (D.6174 == 0.0) goto <D.6256>; else goto <D.6257>;
      <D.6256>:
      undfl:
      rv.0 = &rv;
      MEM[(union U *)rv.0].d = 0.0;
      D.6207 = __errno_location ();
      *D.6207 = 34;
      if (bd0 != 0B) goto retfree; else goto <D.6258>;
      <D.6258>:
      goto ret;
      <D.6257>:
      <D.6228>:
      <D.6223>:
      <D.6221>:
      bd0 = s2b (s0, nd0, nd, y);
      <D.6092>:
      D.6259 = bd0->k;
      bd = Balloc (D.6259);
      D.6260 = bd0->wds;
      D.6261 = (unsigned int) D.6260;
      D.6262 = D.6261 + 2;
      D.6263 = D.6262 * 4;
      D.6264 = &bd0->sign;
      D.6265 = &bd->sign;
      memcpy (D.6265, D.6264, D.6263);
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      bb = d2b (D.6174, &bbe, &bbbits);
      bs = i2b (1);
      if (e >= 0) goto <D.6266>; else goto <D.6267>;
      <D.6266>:
      bb5 = 0;
      bb2 = bb5;
      bd5 = e;
      bd2 = bd5;
      goto <D.6268>;
      <D.6267>:
      bb5 = -e;
      bb2 = bb5;
      bd5 = 0;
      bd2 = bd5;
      <D.6268>:
      bbe.7 = bbe;
      if (bbe.7 >= 0) goto <D.6270>; else goto <D.6271>;
      <D.6270>:
      bbe.7 = bbe;
      bb2 = bb2 + bbe.7;
      goto <D.6272>;
      <D.6271>:
      bbe.7 = bbe;
      bd2 = bd2 - bbe.7;
      <D.6272>:
      bs2 = bb2;
      bbe.7 = bbe;
      j = bbe.7 - scale;
      bbbits.8 = bbbits;
      D.6274 = j + bbbits.8;
      i = D.6274 + -1;
      if (i < -1022) goto <D.6275>; else goto <D.6276>;
      <D.6275>:
      j = j + 1075;
      goto <D.6277>;
      <D.6276>:
      bbbits.8 = bbbits;
      j = 54 - bbbits.8;
      <D.6277>:
      bb2 = bb2 + j;
      bd2 = bd2 + j;
      bd2 = bd2 + scale;
      i = MIN_EXPR <bd2, bb2>;
      if (i > bs2) goto <D.6278>; else goto <D.6279>;
      <D.6278>:
      i = bs2;
      <D.6279>:
      if (i > 0) goto <D.6280>; else goto <D.6281>;
      <D.6280>:
      bb2 = bb2 - i;
      bd2 = bd2 - i;
      bs2 = bs2 - i;
      <D.6281>:
      if (bb5 > 0) goto <D.6282>; else goto <D.6283>;
      <D.6282>:
      bs = pow5mult (bs, bb5);
      bb1 = mult (bs, bb);
      Bfree (bb);
      bb = bb1;
      <D.6283>:
      if (bb2 > 0) goto <D.6284>; else goto <D.6285>;
      <D.6284>:
      bb = lshift (bb, bb2);
      <D.6285>:
      if (bd5 > 0) goto <D.6286>; else goto <D.6287>;
      <D.6286>:
      bd = pow5mult (bd, bd5);
      <D.6287>:
      if (bd2 > 0) goto <D.6288>; else goto <D.6289>;
      <D.6288>:
      bd = lshift (bd, bd2);
      <D.6289>:
      if (bs2 > 0) goto <D.6290>; else goto <D.6291>;
      <D.6290>:
      bs = lshift (bs, bs2);
      <D.6291>:
      delta = diff (bb, bd);
      dsign = delta->sign;
      delta->sign = 0;
      i = cmp (delta, bs);
      if (i < 0) goto <D.6292>; else goto <D.6293>;
      <D.6292>:
      if (dsign != 0) goto <D.6089>; else goto <D.6294>;
      <D.6294>:
      rv.0 = &rv;
      D.6253 = MEM[(union U *)rv.0].L[0];
      if (D.6253 != 0) goto <D.6089>; else goto <D.6295>;
      <D.6295>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6296 = D.6214 & 1048575;
      if (D.6296 != 0) goto <D.6089>; else goto <D.6297>;
      <D.6297>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6239 = D.6214 & 2146435072;
      if (D.6239 <= 112197632) goto <D.6089>; else goto <D.6298>;
      <D.6298>:
      D.6299 = delta->x[0];
      if (D.6299 == 0) goto <D.6300>; else goto <D.6301>;
      <D.6300>:
      D.6302 = delta->wds;
      if (D.6302 <= 1) goto <D.6089>; else goto <D.6303>;
      <D.6303>:
      <D.6301>:
      delta = lshift (delta, 1);
      D.6304 = cmp (delta, bs);
      if (D.6304 > 0) goto drop_down; else goto <D.6305>;
      <D.6305>:
      goto <D.6089>;
      <D.6293>:
      if (i == 0) goto <D.6306>; else goto <D.6307>;
      <D.6306>:
      if (dsign != 0) goto <D.6308>; else goto <D.6309>;
      <D.6308>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6296 = D.6214 & 1048575;
      if (D.6296 == 1048575) goto <D.6310>; else goto <D.6311>;
      <D.6310>:
      rv.0 = &rv;
      D.6253 = MEM[(union U *)rv.0].L[0];
      if (scale != 0) goto <D.6315>; else goto <D.6313>;
      <D.6315>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      y = D.6214 & 2146435072;
      if (y <= 111149056) goto <D.6316>; else goto <D.6313>;
      <D.6316>:
      D.6317 = y >> 20;
      D.6318 = 107 - D.6317;
      D.6319 = (int) D.6318;
      iftmp.9 = 4294967295 << D.6319;
      goto <D.6314>;
      <D.6313>:
      iftmp.9 = 4294967295;
      <D.6314>:
      if (D.6253 == iftmp.9) goto <D.6320>; else goto <D.6321>;
      <D.6320>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6239 = D.6214 & 2146435072;
      D.6322 = D.6239 + 1048576;
      MEM[(union U *)rv.0].L[1] = D.6322;
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[0] = 0;
      dsign = 0;
      goto <D.6089>;
      <D.6321>:
      <D.6311>:
      goto <D.6323>;
      <D.6309>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6296 = D.6214 & 1048575;
      if (D.6296 == 0) goto <D.6324>; else goto <D.6325>;
      <D.6324>:
      rv.0 = &rv;
      D.6253 = MEM[(union U *)rv.0].L[0];
      if (D.6253 == 0) goto <D.6326>; else goto <D.6327>;
      <D.6326>:
      drop_down:
      if (scale != 0) goto <D.6328>; else goto <D.6329>;
      <D.6328>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6330 = (int) D.6214;
      L = D.6330 & 2146435072;
      if (L <= 112197632) goto <D.6331>; else goto <D.6332>;
      <D.6331>:
      if (L > 57671680) goto <D.6089>; else goto <D.6333>;
      <D.6333>:
      goto undfl;
      <D.6332>:
      <D.6329>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6239 = D.6214 & 2146435072;
      D.6334 = D.6239 + 4293918720;
      L = (gint32) D.6334;
      rv.0 = &rv;
      D.6335 = L | 1048575;
      D.6336 = (unsigned int) D.6335;
      MEM[(union U *)rv.0].L[1] = D.6336;
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[0] = 4294967295;
      goto <D.6089>;
      <D.6327>:
      <D.6325>:
      <D.6323>:
      rv.0 = &rv;
      D.6253 = MEM[(union U *)rv.0].L[0];
      D.6337 = D.6253 & 1;
      if (D.6337 == 0) goto <D.6089>; else goto <D.6338>;
      <D.6338>:
      if (dsign != 0) goto <D.6339>; else goto <D.6340>;
      <D.6339>:
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6341 = ulp (D.6174);
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6342 = D.6174 + D.6341;
      MEM[(union U *)rv.0].d = D.6342;
      goto <D.6343>;
      <D.6340>:
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6344 = ulp (D.6174);
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6345 = D.6174 - D.6344;
      MEM[(union U *)rv.0].d = D.6345;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      if (D.6174 == 0.0) goto undfl; else goto <D.6346>;
      <D.6346>:
      <D.6343>:
      dsign = 1 - dsign;
      goto <D.6089>;
      <D.6307>:
      aadj = ratio (delta, bs);
      if (aadj <= 2.0e+0) goto <D.6347>; else goto <D.6348>;
      <D.6347>:
      if (dsign != 0) goto <D.6349>; else goto <D.6350>;
      <D.6349>:
      aadj1 = 1.0e+0;
      aadj = aadj1;
      goto <D.6351>;
      <D.6350>:
      rv.0 = &rv;
      D.6253 = MEM[(union U *)rv.0].L[0];
      if (D.6253 != 0) goto <D.6352>; else goto <D.6355>;
      <D.6355>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6296 = D.6214 & 1048575;
      if (D.6296 != 0) goto <D.6352>; else goto <D.6353>;
      <D.6352>:
      rv.0 = &rv;
      D.6253 = MEM[(union U *)rv.0].L[0];
      if (D.6253 == 1) goto <D.6356>; else goto <D.6357>;
      <D.6356>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      if (D.6214 == 0) goto undfl; else goto <D.6358>;
      <D.6358>:
      <D.6357>:
      aadj = 1.0e+0;
      aadj1 = -1.0e+0;
      goto <D.6354>;
      <D.6353>:
      if (aadj < 1.0e+0) goto <D.6359>; else goto <D.6360>;
      <D.6359>:
      aadj = 5.0e-1;
      goto <D.6361>;
      <D.6360>:
      aadj = aadj * 5.0e-1;
      <D.6361>:
      aadj1.10 = -aadj;
      aadj1 = aadj1.10;
      <D.6354>:
      <D.6351>:
      goto <D.6363>;
      <D.6348>:
      aadj = aadj * 5.0e-1;
      if (dsign == 0) goto <D.6365>; else goto <D.6366>;
      <D.6365>:
      iftmp.11 = -aadj;
      goto <D.6367>;
      <D.6366>:
      iftmp.11 = aadj;
      <D.6367>:
      aadj1 = iftmp.11;
      if (0 != 0) goto <D.6368>; else goto <D.6369>;
      <D.6368>:
      aadj1.12 = aadj1;
      aadj1.13 = aadj1.12 + 5.0e-1;
      aadj1 = aadj1.13;
      <D.6369>:
      <D.6363>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      y = D.6214 & 2146435072;
      if (y == 2145386496) goto <D.6372>; else goto <D.6373>;
      <D.6372>:
      rv0.14 = &rv0;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      MEM[(union U *)rv0.14].d = D.6174;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6215 = D.6214 + 4239392768;
      MEM[(union U *)rv.0].L[1] = D.6215;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6375 = ulp (D.6174);
      aadj1.12 = aadj1;
      adj = D.6375 * aadj1.12;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6376 = D.6174 + adj;
      MEM[(union U *)rv.0].d = D.6376;
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6239 = D.6214 & 2146435072;
      if (D.6239 > 2090860543) goto <D.6377>; else goto <D.6378>;
      <D.6377>:
      rv0.14 = &rv0;
      D.6379 = MEM[(union U *)rv0.14].L[1];
      if (D.6379 == 2146435071) goto <D.6380>; else goto <D.6381>;
      <D.6380>:
      rv0.14 = &rv0;
      D.6382 = MEM[(union U *)rv0.14].L[0];
      if (D.6382 == 4294967295) goto ovfl; else goto <D.6383>;
      <D.6383>:
      <D.6381>:
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[1] = 2146435071;
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[0] = 4294967295;
      goto cont;
      <D.6378>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6220 = D.6214 + 55574528;
      MEM[(union U *)rv.0].L[1] = D.6220;
      goto <D.6384>;
      <D.6373>:
      D.6385 = scale != 0;
      D.6386 = y <= 111149056;
      D.6387 = D.6385 & D.6386;
      if (D.6387 != 0) goto <D.6388>; else goto <D.6389>;
      <D.6388>:
      if (aadj <= 2.147483647e+9) goto <D.6390>; else goto <D.6391>;
      <D.6390>:
      z = (guint32) aadj;
      if (z == 0) goto <D.6392>; else goto <D.6393>;
      <D.6392>:
      z = 1;
      <D.6393>:
      aadj = (double) z;
      if (dsign == 0) goto <D.6395>; else goto <D.6396>;
      <D.6395>:
      iftmp.15 = -aadj;
      goto <D.6397>;
      <D.6396>:
      iftmp.15 = aadj;
      <D.6397>:
      aadj1 = iftmp.15;
      <D.6391>:
      aadj1.16 = &aadj1;
      aadj1.16 = &aadj1;
      D.6399 = MEM[(union U *)aadj1.16].L[1];
      D.6400 = D.6399 - y;
      D.6401 = D.6400 + 112197632;
      MEM[(union U *)aadj1.16].L[1] = D.6401;
      <D.6389>:
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6402 = ulp (D.6174);
      aadj1.12 = aadj1;
      adj = D.6402 * aadj1.12;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      D.6376 = D.6174 + adj;
      MEM[(union U *)rv.0].d = D.6376;
      <D.6384>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      z = D.6214 & 2146435072;
      if (scale == 0) goto <D.6403>; else goto <D.6404>;
      <D.6403>:
      if (y == z) goto <D.6405>; else goto <D.6406>;
      <D.6405>:
      L = (gint32) aadj;
      D.6407 = (double) L;
      aadj = aadj - D.6407;
      if (dsign != 0) goto <D.6408>; else goto <D.6411>;
      <D.6411>:
      rv.0 = &rv;
      D.6253 = MEM[(union U *)rv.0].L[0];
      if (D.6253 != 0) goto <D.6408>; else goto <D.6412>;
      <D.6412>:
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      D.6296 = D.6214 & 1048575;
      if (D.6296 != 0) goto <D.6408>; else goto <D.6409>;
      <D.6408>:
      if (aadj < 4.99999899999999997124433548378874547779560089111328125e-1) goto <D.6089>; else goto <D.6413>;
      <D.6413>:
      if (aadj > 5.0000009999999994736441522036329843103885650634765625e-1) goto <D.6089>; else goto <D.6414>;
      <D.6414>:
      goto <D.6410>;
      <D.6409>:
      if (aadj < 2.499999499999999985622167741894372738897800445556640625e-1) goto <D.6089>; else goto <D.6415>;
      <D.6415>:
      <D.6410>:
      <D.6406>:
      <D.6404>:
      cont:
      Bfree (bb);
      Bfree (bd);
      Bfree (bs);
      Bfree (delta);
      goto <D.6092>;
      <D.6089>:
      if (scale != 0) goto <D.6416>; else goto <D.6417>;
      <D.6416>:
      rv0.14 = &rv0;
      MEM[(union U *)rv0.14].L[1] = 961544192;
      rv0.14 = &rv0;
      MEM[(union U *)rv0.14].L[0] = 0;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      rv0.14 = &rv0;
      D.6418 = MEM[(union U *)rv0.14].d;
      D.6419 = D.6174 * D.6418;
      MEM[(union U *)rv.0].d = D.6419;
      rv.0 = &rv;
      D.6214 = MEM[(union U *)rv.0].L[1];
      if (D.6214 == 0) goto <D.6420>; else goto <D.6421>;
      <D.6420>:
      rv.0 = &rv;
      D.6253 = MEM[(union U *)rv.0].L[0];
      if (D.6253 == 0) goto <D.6422>; else goto <D.6423>;
      <D.6422>:
      D.6207 = __errno_location ();
      *D.6207 = 34;
      <D.6423>:
      <D.6421>:
      <D.6417>:
      retfree:
      Bfree (bb);
      Bfree (bd);
      Bfree (bs);
      Bfree (bd0);
      Bfree (delta);
      ret:
      if (se != 0B) goto <D.6424>; else goto <D.6425>;
      <D.6424>:
      *se = s;
      <D.6425>:
      if (sign != 0) goto <D.6428>; else goto <D.6429>;
      <D.6428>:
      rv.0 = &rv;
      D.6174 = MEM[(union U *)rv.0].d;
      iftmp.17 = -D.6174;
      goto <D.6430>;
      <D.6429>:
      rv.0 = &rv;
      iftmp.17 = MEM[(union U *)rv.0].d;
      <D.6430>:
      D.6426 = iftmp.17;
      return D.6426;
    }
  finally
    {
      bbe = {CLOBBER};
      bbbits = {CLOBBER};
      aadj1 = {CLOBBER};
      rv = {CLOBBER};
      rv0 = {CLOBBER};
    }
}


s2b (const char * s, int nd0, int nd, guint32 y9)
{
  int D.6433;
  const char * s.18;
  char D.6437;
  int D.6438;
  int D.6439;
  const char * s.19;
  char D.6442;
  int D.6443;
  int D.6444;
  struct Bigint * D.6445;
  struct Bigint * b;
  int i;
  int k;
  gint32 x;
  gint32 y;

  D.6433 = nd + 8;
  x = D.6433 / 9;
  k = 0;
  y = 1;
  goto <D.5836>;
  <D.5835>:
  y = y << 1;
  k = k + 1;
  <D.5836>:
  if (x > y) goto <D.5835>; else goto <D.5837>;
  <D.5837>:
  b = Balloc (k);
  b->x[0] = y9;
  b->wds = 1;
  i = 9;
  if (nd0 > 9) goto <D.6434>; else goto <D.6435>;
  <D.6434>:
  s = s + 9;
  <D.5838>:
  s.18 = s;
  s = s.18 + 1;
  D.6437 = *s.18;
  D.6438 = (int) D.6437;
  D.6439 = D.6438 + -48;
  b = multadd (b, 10, D.6439);
  i = i + 1;
  if (i < nd0) goto <D.5838>; else goto <D.5839>;
  <D.5839>:
  s = s + 1;
  goto <D.6440>;
  <D.6435>:
  s = s + 10;
  <D.6440>:
  goto <D.5841>;
  <D.5840>:
  s.19 = s;
  s = s.19 + 1;
  D.6442 = *s.19;
  D.6443 = (int) D.6442;
  D.6444 = D.6443 + -48;
  b = multadd (b, 10, D.6444);
  i = i + 1;
  <D.5841>:
  if (i < nd) goto <D.5840>; else goto <D.5842>;
  <D.5842>:
  D.6445 = b;
  return D.6445;
}


multadd (struct Bigint * b, int m, int a)
{
  unsigned int D.6447;
  long long unsigned int D.6448;
  long long unsigned int D.6449;
  long long unsigned int D.6450;
  guint32 * x.20;
  unsigned int D.6452;
  int D.6455;
  int D.6458;
  int D.6459;
  int D.6460;
  unsigned int D.6461;
  unsigned int D.6462;
  unsigned int D.6463;
  int * D.6464;
  int * D.6465;
  int wds.21;
  unsigned int D.6467;
  struct Bigint * D.6468;
  int i;
  int wds;
  guint32 * x;
  long long unsigned int carry;
  long long unsigned int y;
  struct Bigint * b1;

  wds = b->wds;
  x = &b->x;
  i = 0;
  carry = (long long unsigned int) a;
  <D.5822>:
  D.6447 = *x;
  D.6448 = (long long unsigned int) D.6447;
  D.6449 = (long long unsigned int) m;
  D.6450 = D.6448 * D.6449;
  y = D.6450 + carry;
  carry = y >> 32;
  x.20 = x;
  x = x.20 + 4;
  D.6452 = (unsigned int) y;
  *x.20 = D.6452;
  i = i + 1;
  if (i < wds) goto <D.5822>; else goto <D.5823>;
  <D.5823>:
  if (carry != 0) goto <D.6453>; else goto <D.6454>;
  <D.6453>:
  D.6455 = b->maxwds;
  if (D.6455 <= wds) goto <D.6456>; else goto <D.6457>;
  <D.6456>:
  D.6458 = b->k;
  D.6459 = D.6458 + 1;
  b1 = Balloc (D.6459);
  D.6460 = b->wds;
  D.6461 = (unsigned int) D.6460;
  D.6462 = D.6461 + 2;
  D.6463 = D.6462 * 4;
  D.6464 = &b->sign;
  D.6465 = &b1->sign;
  memcpy (D.6465, D.6464, D.6463);
  Bfree (b);
  b = b1;
  <D.6457>:
  wds.21 = wds;
  wds = wds.21 + 1;
  D.6467 = (unsigned int) carry;
  b->x[wds.21] = D.6467;
  b->wds = wds;
  <D.6454>:
  D.6468 = b;
  return D.6468;
}


Balloc (int k)
{
  struct Bigint * D.6472;
  unsigned int x.22;
  unsigned int D.6475;
  unsigned int D.6476;
  int D.6477;
  struct Bigint * D.6478;
  int x;
  struct Bigint * rv;

  rv = freelist[k];
  if (rv != 0B) goto <D.6470>; else goto <D.6471>;
  <D.6470>:
  D.6472 = rv->next;
  freelist[k] = D.6472;
  goto <D.6473>;
  <D.6471>:
  x = 1 << k;
  x.22 = (unsigned int) x;
  D.6475 = x.22 + 5;
  D.6476 = D.6475 * 4;
  rv = malloc (D.6476);
  rv->k = k;
  rv->maxwds = x;
  <D.6473>:
  rv->wds = 0;
  D.6477 = rv->wds;
  rv->sign = D.6477;
  D.6478 = rv;
  return D.6478;
}


memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.6480;
  unsigned int D.6481;

  D.6481 = __builtin_object_size (__dest, 0);
  D.6480 = __builtin___memcpy_chk (__dest, __src, __len, D.6481);
  return D.6480;
}


d2b (double d, int * e, int * bits)
{
  double * d.23;
  unsigned int D.6484;
  unsigned int z.24;
  unsigned int D.6486;
  unsigned int D.6487;
  unsigned int z.25;
  unsigned int z.26;
  unsigned int y.27;
  unsigned int y.28;
  int D.6498;
  unsigned int D.6499;
  unsigned int D.6500;
  unsigned int z.29;
  int iftmp.30;
  guint32 * D.6504;
  unsigned int D.6505;
  int D.6512;
  int D.6513;
  int D.6514;
  int D.6516;
  int D.6517;
  int D.6518;
  sizetype i.31;
  sizetype D.6520;
  sizetype D.6521;
  guint32 * D.6522;
  unsigned int D.6523;
  int D.6524;
  int D.6525;
  struct Bigint * D.6526;
  struct Bigint * b;
  int de;
  int k;
  guint32 * x;
  guint32 y;
  guint32 z;
  int i;

  try
    {
      b = Balloc (1);
      x = &b->x;
      d.23 = &d;
      D.6484 = MEM[(union U *)d.23].L[1];
      z.24 = D.6484 & 1048575;
      z = z.24;
      d.23 = &d;
      d.23 = &d;
      D.6484 = MEM[(union U *)d.23].L[1];
      D.6486 = D.6484 & 2147483647;
      MEM[(union U *)d.23].L[1] = D.6486;
      d.23 = &d;
      D.6484 = MEM[(union U *)d.23].L[1];
      D.6487 = D.6484 >> 20;
      de = (int) D.6487;
      if (de != 0) goto <D.6488>; else goto <D.6489>;
      <D.6488>:
      z.25 = z;
      z.26 = z.25 | 1048576;
      z = z.26;
      <D.6489>:
      d.23 = &d;
      y.27 = MEM[(union U *)d.23].L[0];
      y = y.27;
      y.28 = y;
      if (y.28 != 0) goto <D.6494>; else goto <D.6495>;
      <D.6494>:
      k = lo0bits (&y);
      if (k != 0) goto <D.6496>; else goto <D.6497>;
      <D.6496>:
      z.25 = z;
      D.6498 = 32 - k;
      D.6499 = z.25 << D.6498;
      y.28 = y;
      D.6500 = D.6499 | y.28;
      *x = D.6500;
      z.25 = z;
      z.29 = z.25 >> k;
      z = z.29;
      goto <D.6502>;
      <D.6497>:
      y.28 = y;
      *x = y.28;
      <D.6502>:
      D.6504 = x + 4;
      z.25 = z;
      *D.6504 = z.25;
      D.6505 = *D.6504;
      if (D.6505 != 0) goto <D.6506>; else goto <D.6507>;
      <D.6506>:
      iftmp.30 = 2;
      goto <D.6508>;
      <D.6507>:
      iftmp.30 = 1;
      <D.6508>:
      b->wds = iftmp.30;
      i = b->wds;
      goto <D.6509>;
      <D.6495>:
      k = lo0bits (&z);
      z.25 = z;
      *x = z.25;
      b->wds = 1;
      i = b->wds;
      k = k + 32;
      <D.6509>:
      if (de != 0) goto <D.6510>; else goto <D.6511>;
      <D.6510>:
      D.6512 = de + -1075;
      D.6513 = D.6512 + k;
      *e = D.6513;
      D.6514 = 53 - k;
      *bits = D.6514;
      goto <D.6515>;
      <D.6511>:
      D.6516 = de + -1074;
      D.6517 = D.6516 + k;
      *e = D.6517;
      D.6518 = i * 32;
      i.31 = (sizetype) i;
      D.6520 = i.31 + 1073741823;
      D.6521 = D.6520 * 4;
      D.6522 = x + D.6521;
      D.6523 = *D.6522;
      D.6524 = hi0bits (D.6523);
      D.6525 = D.6518 - D.6524;
      *bits = D.6525;
      <D.6515>:
      D.6526 = b;
      return D.6526;
    }
  finally
    {
      y = {CLOBBER};
      z = {CLOBBER};
    }
}


lo0bits (guint32 * y)
{
  unsigned int D.6529;
  unsigned int D.6532;
  int D.6535;
  unsigned int D.6536;
  unsigned int D.6539;
  unsigned int D.6540;
  unsigned int D.6541;
  unsigned int D.6544;
  unsigned int D.6547;
  unsigned int D.6550;
  register int k;
  register guint32 x;

  x = *y;
  D.6529 = x & 7;
  if (D.6529 != 0) goto <D.6530>; else goto <D.6531>;
  <D.6530>:
  D.6532 = x & 1;
  if (D.6532 != 0) goto <D.6533>; else goto <D.6534>;
  <D.6533>:
  D.6535 = 0;
  return D.6535;
  <D.6534>:
  D.6536 = x & 2;
  if (D.6536 != 0) goto <D.6537>; else goto <D.6538>;
  <D.6537>:
  D.6539 = x >> 1;
  *y = D.6539;
  D.6535 = 1;
  return D.6535;
  <D.6538>:
  D.6540 = x >> 2;
  *y = D.6540;
  D.6535 = 2;
  return D.6535;
  <D.6531>:
  k = 0;
  D.6541 = x & 65535;
  if (D.6541 == 0) goto <D.6542>; else goto <D.6543>;
  <D.6542>:
  k = 16;
  x = x >> 16;
  <D.6543>:
  D.6544 = x & 255;
  if (D.6544 == 0) goto <D.6545>; else goto <D.6546>;
  <D.6545>:
  k = k + 8;
  x = x >> 8;
  <D.6546>:
  D.6547 = x & 15;
  if (D.6547 == 0) goto <D.6548>; else goto <D.6549>;
  <D.6548>:
  k = k + 4;
  x = x >> 4;
  <D.6549>:
  D.6550 = x & 3;
  if (D.6550 == 0) goto <D.6551>; else goto <D.6552>;
  <D.6551>:
  k = k + 2;
  x = x >> 2;
  <D.6552>:
  D.6532 = x & 1;
  if (D.6532 == 0) goto <D.6553>; else goto <D.6554>;
  <D.6553>:
  k = k + 1;
  x = x >> 1;
  if (x == 0) goto <D.6555>; else goto <D.6556>;
  <D.6555>:
  D.6535 = 32;
  return D.6535;
  <D.6556>:
  <D.6554>:
  *y = x;
  D.6535 = k;
  return D.6535;
}


hi0bits (guint32 x)
{
  unsigned int D.6558;
  unsigned int D.6561;
  unsigned int D.6564;
  unsigned int D.6567;
  signed int x.32;
  unsigned int D.6573;
  int D.6576;
  register int k;

  k = 0;
  D.6558 = x & 4294901760;
  if (D.6558 == 0) goto <D.6559>; else goto <D.6560>;
  <D.6559>:
  k = 16;
  x = x << 16;
  <D.6560>:
  D.6561 = x & 4278190080;
  if (D.6561 == 0) goto <D.6562>; else goto <D.6563>;
  <D.6562>:
  k = k + 8;
  x = x << 8;
  <D.6563>:
  D.6564 = x & 4026531840;
  if (D.6564 == 0) goto <D.6565>; else goto <D.6566>;
  <D.6565>:
  k = k + 4;
  x = x << 4;
  <D.6566>:
  D.6567 = x & 3221225472;
  if (D.6567 == 0) goto <D.6568>; else goto <D.6569>;
  <D.6568>:
  k = k + 2;
  x = x << 2;
  <D.6569>:
  x.32 = (signed int) x;
  if (x.32 >= 0) goto <D.6571>; else goto <D.6572>;
  <D.6571>:
  k = k + 1;
  D.6573 = x & 1073741824;
  if (D.6573 == 0) goto <D.6574>; else goto <D.6575>;
  <D.6574>:
  D.6576 = 32;
  return D.6576;
  <D.6575>:
  <D.6572>:
  D.6576 = k;
  return D.6576;
}


i2b (int i)
{
  unsigned int i.33;
  struct Bigint * D.6579;
  struct Bigint * b;

  b = Balloc (1);
  i.33 = (unsigned int) i;
  b->x[0] = i.33;
  b->wds = 1;
  D.6579 = b;
  return D.6579;
}


mult (struct Bigint * a, struct Bigint * b)
{
  int D.6581;
  int D.6582;
  int D.6585;
  unsigned int wc.34;
  unsigned int D.6589;
  unsigned int wa.35;
  unsigned int D.6591;
  unsigned int wb.36;
  unsigned int D.6593;
  guint32 * xb.37;
  guint32 * x.38;
  unsigned int D.6598;
  long long unsigned int D.6599;
  long long unsigned int D.6600;
  long long unsigned int D.6601;
  unsigned int D.6602;
  long long unsigned int D.6603;
  long long unsigned int D.6604;
  guint32 * xc.39;
  unsigned int D.6606;
  unsigned int D.6607;
  struct Bigint * D.6609;
  struct Bigint * c;
  int k;
  int wa;
  int wb;
  int wc;
  guint32 * x;
  guint32 * xa;
  guint32 * xae;
  guint32 * xb;
  guint32 * xbe;
  guint32 * xc;
  guint32 * xc0;
  guint32 y;
  long long unsigned int carry;
  long long unsigned int z;

  D.6581 = a->wds;
  D.6582 = b->wds;
  if (D.6581 < D.6582) goto <D.6583>; else goto <D.6584>;
  <D.6583>:
  c = a;
  a = b;
  b = c;
  <D.6584>:
  k = a->k;
  wa = a->wds;
  wb = b->wds;
  wc = wa + wb;
  D.6585 = a->maxwds;
  if (D.6585 < wc) goto <D.6586>; else goto <D.6587>;
  <D.6586>:
  k = k + 1;
  <D.6587>:
  c = Balloc (k);
  x = &c->x;
  wc.34 = (unsigned int) wc;
  D.6589 = wc.34 * 4;
  xa = x + D.6589;
  goto <D.5876>;
  <D.5875>:
  *x = 0;
  x = x + 4;
  <D.5876>:
  if (x < xa) goto <D.5875>; else goto <D.5877>;
  <D.5877>:
  xa = &a->x;
  wa.35 = (unsigned int) wa;
  D.6591 = wa.35 * 4;
  xae = xa + D.6591;
  xb = &b->x;
  wb.36 = (unsigned int) wb;
  D.6593 = wb.36 * 4;
  xbe = xb + D.6593;
  xc0 = &c->x;
  goto <D.5881>;
  <D.5880>:
  xb.37 = xb;
  xb = xb.37 + 4;
  y = *xb.37;
  if (y != 0) goto <D.6595>; else goto <D.6596>;
  <D.6595>:
  x = xa;
  xc = xc0;
  carry = 0;
  <D.5878>:
  x.38 = x;
  x = x.38 + 4;
  D.6598 = *x.38;
  D.6599 = (long long unsigned int) D.6598;
  D.6600 = (long long unsigned int) y;
  D.6601 = D.6599 * D.6600;
  D.6602 = *xc;
  D.6603 = (long long unsigned int) D.6602;
  D.6604 = D.6601 + D.6603;
  z = D.6604 + carry;
  carry = z >> 32;
  xc.39 = xc;
  xc = xc.39 + 4;
  D.6606 = (unsigned int) z;
  *xc.39 = D.6606;
  if (x < xae) goto <D.5878>; else goto <D.5879>;
  <D.5879>:
  D.6607 = (unsigned int) carry;
  *xc = D.6607;
  <D.6596>:
  xc0 = xc0 + 4;
  <D.5881>:
  if (xb < xbe) goto <D.5880>; else goto <D.5882>;
  <D.5882>:
  xc0 = &c->x;
  wc.34 = (unsigned int) wc;
  D.6589 = wc.34 * 4;
  xc = xc0 + D.6589;
  goto <D.5884>;
  <D.5883>:
  wc = wc + -1;
  <D.5884>:
  if (wc > 0) goto <D.6608>; else goto <D.5885>;
  <D.6608>:
  xc = xc + 4294967292;
  D.6602 = *xc;
  if (D.6602 == 0) goto <D.5883>; else goto <D.5885>;
  <D.5885>:
  c->wds = wc;
  D.6609 = c;
  return D.6609;
}


pow5mult (struct Bigint * b, int k)
{
  int D.6613;
  int D.6614;
  struct Bigint * D.6617;
  struct Bigint * p5s.40;
  int D.6623;
  struct Bigint * D.6631;
  struct Bigint * b1;
  struct Bigint * p5;
  struct Bigint * p51;
  int i;
  static int p05[3] = {5, 25, 125};

  i = k & 3;
  if (i != 0) goto <D.6611>; else goto <D.6612>;
  <D.6611>:
  D.6613 = i + -1;
  D.6614 = p05[D.6613];
  b = multadd (b, D.6614, 0);
  <D.6612>:
  k = k >> 2;
  if (k == 0) goto <D.6615>; else goto <D.6616>;
  <D.6615>:
  D.6617 = b;
  return D.6617;
  <D.6616>:
  p5 = p5s;
  if (p5 == 0B) goto <D.6618>; else goto <D.6619>;
  <D.6618>:
  p5 = p5s;
  if (p5 == 0B) goto <D.6620>; else goto <D.6621>;
  <D.6620>:
  p5s.40 = i2b (625);
  p5s = p5s.40;
  p5 = p5s;
  p5->next = 0B;
  <D.6621>:
  <D.6619>:
  <D.5897>:
  D.6623 = k & 1;
  if (D.6623 != 0) goto <D.6624>; else goto <D.6625>;
  <D.6624>:
  b1 = mult (b, p5);
  Bfree (b);
  b = b1;
  <D.6625>:
  k = k >> 1;
  if (k == 0) goto <D.5896>; else goto <D.6626>;
  <D.6626>:
  p51 = p5->next;
  if (p51 == 0B) goto <D.6627>; else goto <D.6628>;
  <D.6627>:
  p51 = p5->next;
  if (p51 == 0B) goto <D.6629>; else goto <D.6630>;
  <D.6629>:
  D.6631 = mult (p5, p5);
  p5->next = D.6631;
  p51 = p5->next;
  p51->next = 0B;
  <D.6630>:
  <D.6628>:
  p5 = p51;
  goto <D.5897>;
  <D.5896>:
  D.6617 = b;
  return D.6617;
}


diff (struct Bigint * a, struct Bigint * b)
{
  struct Bigint * D.6635;
  int D.6639;
  unsigned int wa.41;
  unsigned int D.6641;
  unsigned int wb.42;
  unsigned int D.6643;
  guint32 * xa.43;
  unsigned int D.6645;
  long long unsigned int D.6646;
  guint32 * xb.44;
  unsigned int D.6648;
  long long unsigned int D.6649;
  long long unsigned int D.6650;
  long long unsigned int D.6651;
  guint32 * xc.45;
  unsigned int D.6653;
  guint32 * xa.46;
  unsigned int D.6655;
  long long unsigned int D.6656;
  guint32 * xc.47;
  unsigned int D.6658;
  struct Bigint * c;
  int i;
  int wa;
  int wb;
  guint32 * xa;
  guint32 * xae;
  guint32 * xb;
  guint32 * xbe;
  guint32 * xc;
  long long unsigned int borrow;
  long long unsigned int y;

  i = cmp (a, b);
  if (i == 0) goto <D.6633>; else goto <D.6634>;
  <D.6633>:
  c = Balloc (0);
  c->wds = 1;
  c->x[0] = 0;
  D.6635 = c;
  return D.6635;
  <D.6634>:
  if (i < 0) goto <D.6636>; else goto <D.6637>;
  <D.6636>:
  c = a;
  a = b;
  b = c;
  i = 1;
  goto <D.6638>;
  <D.6637>:
  i = 0;
  <D.6638>:
  D.6639 = a->k;
  c = Balloc (D.6639);
  c->sign = i;
  wa = a->wds;
  xa = &a->x;
  wa.41 = (unsigned int) wa;
  D.6641 = wa.41 * 4;
  xae = xa + D.6641;
  wb = b->wds;
  xb = &b->x;
  wb.42 = (unsigned int) wb;
  D.6643 = wb.42 * 4;
  xbe = xb + D.6643;
  xc = &c->x;
  borrow = 0;
  <D.5948>:
  xa.43 = xa;
  xa = xa.43 + 4;
  D.6645 = *xa.43;
  D.6646 = (long long unsigned int) D.6645;
  xb.44 = xb;
  xb = xb.44 + 4;
  D.6648 = *xb.44;
  D.6649 = (long long unsigned int) D.6648;
  D.6650 = D.6646 - D.6649;
  y = D.6650 - borrow;
  D.6651 = y >> 32;
  borrow = D.6651 & 1;
  xc.45 = xc;
  xc = xc.45 + 4;
  D.6653 = (unsigned int) y;
  *xc.45 = D.6653;
  if (xb < xbe) goto <D.5948>; else goto <D.5949>;
  <D.5949>:
  goto <D.5951>;
  <D.5950>:
  xa.46 = xa;
  xa = xa.46 + 4;
  D.6655 = *xa.46;
  D.6656 = (long long unsigned int) D.6655;
  y = D.6656 - borrow;
  D.6651 = y >> 32;
  borrow = D.6651 & 1;
  xc.47 = xc;
  xc = xc.47 + 4;
  D.6653 = (unsigned int) y;
  *xc.47 = D.6653;
  <D.5951>:
  if (xa < xae) goto <D.5950>; else goto <D.5952>;
  <D.5952>:
  goto <D.5954>;
  <D.5953>:
  wa = wa + -1;
  <D.5954>:
  xc = xc + 4294967292;
  D.6658 = *xc;
  if (D.6658 == 0) goto <D.5953>; else goto <D.5955>;
  <D.5955>:
  c->wds = wa;
  D.6635 = c;
  return D.6635;
}


lshift (struct Bigint * b, int k)
{
  int D.6660;
  int D.6661;
  guint32 * x1.48;
  unsigned int D.6663;
  unsigned int D.6664;
  guint32 * x1.49;
  unsigned int D.6668;
  unsigned int D.6669;
  unsigned int D.6670;
  guint32 * x.50;
  unsigned int D.6672;
  unsigned int D.6673;
  guint32 * x1.51;
  guint32 * x.52;
  unsigned int D.6679;
  int D.6680;
  struct Bigint * D.6681;
  int i;
  int k1;
  int n;
  int n1;
  struct Bigint * b1;
  guint32 * x;
  guint32 * x1;
  guint32 * xe;
  guint32 z;

  n = k >> 5;
  k1 = b->k;
  D.6660 = b->wds;
  D.6661 = D.6660 + n;
  n1 = D.6661 + 1;
  i = b->maxwds;
  goto <D.5912>;
  <D.5911>:
  k1 = k1 + 1;
  i = i << 1;
  <D.5912>:
  if (n1 > i) goto <D.5911>; else goto <D.5913>;
  <D.5913>:
  b1 = Balloc (k1);
  x1 = &b1->x;
  i = 0;
  goto <D.5915>;
  <D.5914>:
  x1.48 = x1;
  x1 = x1.48 + 4;
  *x1.48 = 0;
  i = i + 1;
  <D.5915>:
  if (i < n) goto <D.5914>; else goto <D.5916>;
  <D.5916>:
  x = &b->x;
  D.6660 = b->wds;
  D.6663 = (unsigned int) D.6660;
  D.6664 = D.6663 * 4;
  xe = x + D.6664;
  k = k & 31;
  if (k != 0) goto <D.6665>; else goto <D.6666>;
  <D.6665>:
  k1 = 32 - k;
  z = 0;
  <D.5917>:
  x1.49 = x1;
  x1 = x1.49 + 4;
  D.6668 = *x;
  D.6669 = D.6668 << k;
  D.6670 = D.6669 | z;
  *x1.49 = D.6670;
  x.50 = x;
  x = x.50 + 4;
  D.6672 = *x.50;
  z = D.6672 >> k1;
  if (x < xe) goto <D.5917>; else goto <D.5918>;
  <D.5918>:
  *x1 = z;
  D.6673 = *x1;
  if (D.6673 != 0) goto <D.6674>; else goto <D.6675>;
  <D.6674>:
  n1 = n1 + 1;
  <D.6675>:
  goto <D.6676>;
  <D.6666>:
  <D.5919>:
  x1.51 = x1;
  x1 = x1.51 + 4;
  x.52 = x;
  x = x.52 + 4;
  D.6679 = *x.52;
  *x1.51 = D.6679;
  if (x < xe) goto <D.5919>; else goto <D.5920>;
  <D.5920>:
  <D.6676>:
  D.6680 = n1 + -1;
  b1->wds = D.6680;
  Bfree (b);
  D.6681 = b1;
  return D.6681;
}


cmp (struct Bigint * a, struct Bigint * b)
{
  int D.6685;
  unsigned int j.53;
  unsigned int D.6687;
  unsigned int D.6688;
  unsigned int D.6689;
  int iftmp.54;
  guint32 * xa;
  guint32 * xa0;
  guint32 * xb;
  guint32 * xb0;
  int i;
  int j;

  i = a->wds;
  j = b->wds;
  i = i - j;
  if (i != 0) goto <D.6683>; else goto <D.6684>;
  <D.6683>:
  D.6685 = i;
  return D.6685;
  <D.6684>:
  xa0 = &a->x;
  j.53 = (unsigned int) j;
  D.6687 = j.53 * 4;
  xa = xa0 + D.6687;
  xb0 = &b->x;
  j.53 = (unsigned int) j;
  D.6687 = j.53 * 4;
  xb = xb0 + D.6687;
  <D.5932>:
  xa = xa + 4294967292;
  D.6688 = *xa;
  xb = xb + 4294967292;
  D.6689 = *xb;
  if (D.6688 != D.6689) goto <D.6690>; else goto <D.6691>;
  <D.6690>:
  D.6688 = *xa;
  D.6689 = *xb;
  if (D.6688 < D.6689) goto <D.6693>; else goto <D.6694>;
  <D.6693>:
  iftmp.54 = -1;
  goto <D.6695>;
  <D.6694>:
  iftmp.54 = 1;
  <D.6695>:
  D.6685 = iftmp.54;
  return D.6685;
  <D.6691>:
  if (xa <= xa0) goto <D.5931>; else goto <D.6696>;
  <D.6696>:
  goto <D.5932>;
  <D.5931>:
  D.6685 = 0;
  return D.6685;
}


ratio (struct Bigint * a, struct Bigint * b)
{
  double * da.55;
  double D.6699;
  double * db.56;
  double D.6701;
  int ka.57;
  int kb.58;
  int D.6704;
  int D.6705;
  int D.6706;
  int D.6707;
  int D.6708;
  unsigned int D.6711;
  int D.6712;
  unsigned int D.6713;
  unsigned int D.6714;
  unsigned int D.6716;
  unsigned int D.6717;
  double D.6718;
  double D.6719;
  double D.6720;
  double da;
  double db;
  int k;
  int ka;
  int kb;

  try
    {
      da.55 = &da;
      D.6699 = b2d (a, &ka);
      MEM[(union U *)da.55].d = D.6699;
      db.56 = &db;
      D.6701 = b2d (b, &kb);
      MEM[(union U *)db.56].d = D.6701;
      ka.57 = ka;
      kb.58 = kb;
      D.6704 = ka.57 - kb.58;
      D.6705 = a->wds;
      D.6706 = b->wds;
      D.6707 = D.6705 - D.6706;
      D.6708 = D.6707 * 32;
      k = D.6704 + D.6708;
      if (k > 0) goto <D.6709>; else goto <D.6710>;
      <D.6709>:
      da.55 = &da;
      da.55 = &da;
      D.6711 = MEM[(union U *)da.55].L[1];
      D.6712 = k * 1048576;
      D.6713 = (unsigned int) D.6712;
      D.6714 = D.6711 + D.6713;
      MEM[(union U *)da.55].L[1] = D.6714;
      goto <D.6715>;
      <D.6710>:
      k = -k;
      db.56 = &db;
      db.56 = &db;
      D.6716 = MEM[(union U *)db.56].L[1];
      D.6712 = k * 1048576;
      D.6713 = (unsigned int) D.6712;
      D.6717 = D.6716 + D.6713;
      MEM[(union U *)db.56].L[1] = D.6717;
      <D.6715>:
      da.55 = &da;
      D.6719 = MEM[(union U *)da.55].d;
      db.56 = &db;
      D.6720 = MEM[(union U *)db.56].d;
      D.6718 = D.6719 / D.6720;
      return D.6718;
    }
  finally
    {
      da = {CLOBBER};
      db = {CLOBBER};
      ka = {CLOBBER};
      kb = {CLOBBER};
    }
}


b2d (struct Bigint * a, int * e)
{
  int D.6723;
  unsigned int D.6724;
  unsigned int D.6725;
  int D.6726;
  double * d.59;
  int D.6730;
  unsigned int D.6731;
  unsigned int D.6732;
  guint32 iftmp.60;
  int D.6737;
  unsigned int D.6738;
  unsigned int D.6739;
  unsigned int D.6740;
  guint32 iftmp.61;
  unsigned int D.6747;
  unsigned int D.6748;
  unsigned int D.6749;
  unsigned int D.6750;
  guint32 iftmp.62;
  unsigned int D.6755;
  unsigned int D.6756;
  unsigned int D.6757;
  unsigned int D.6759;
  double D.6760;
  guint32 * xa;
  guint32 * xa0;
  guint32 w;
  guint32 y;
  guint32 z;
  int k;
  double d;
  void ret_d = <<< error >>>;

  try
    {
      xa0 = &a->x;
      D.6723 = a->wds;
      D.6724 = (unsigned int) D.6723;
      D.6725 = D.6724 * 4;
      xa = xa0 + D.6725;
      xa = xa + 4294967292;
      y = *xa;
      k = hi0bits (y);
      D.6726 = 32 - k;
      *e = D.6726;
      if (k <= 10) goto <D.6727>; else goto <D.6728>;
      <D.6727>:
      d.59 = &d;
      D.6730 = 11 - k;
      D.6731 = y >> D.6730;
      D.6732 = D.6731 | 1072693248;
      MEM[(union U *)d.59].L[1] = D.6732;
      if (xa > xa0) goto <D.6734>; else goto <D.6735>;
      <D.6734>:
      xa = xa + 4294967292;
      iftmp.60 = *xa;
      goto <D.6736>;
      <D.6735>:
      iftmp.60 = 0;
      <D.6736>:
      w = iftmp.60;
      d.59 = &d;
      D.6737 = k + 21;
      D.6738 = y << D.6737;
      D.6730 = 11 - k;
      D.6739 = w >> D.6730;
      D.6740 = D.6738 | D.6739;
      MEM[(union U *)d.59].L[0] = D.6740;
      goto ret_d;
      <D.6728>:
      if (xa > xa0) goto <D.6742>; else goto <D.6743>;
      <D.6742>:
      xa = xa + 4294967292;
      iftmp.61 = *xa;
      goto <D.6744>;
      <D.6743>:
      iftmp.61 = 0;
      <D.6744>:
      z = iftmp.61;
      k = k + -11;
      if (k != 0) goto <D.6745>; else goto <D.6746>;
      <D.6745>:
      d.59 = &d;
      D.6747 = y << k;
      D.6726 = 32 - k;
      D.6748 = z >> D.6726;
      D.6749 = D.6747 | D.6748;
      D.6750 = D.6749 | 1072693248;
      MEM[(union U *)d.59].L[1] = D.6750;
      if (xa > xa0) goto <D.6752>; else goto <D.6753>;
      <D.6752>:
      xa = xa + 4294967292;
      iftmp.62 = *xa;
      goto <D.6754>;
      <D.6753>:
      iftmp.62 = 0;
      <D.6754>:
      y = iftmp.62;
      d.59 = &d;
      D.6755 = z << k;
      D.6726 = 32 - k;
      D.6756 = y >> D.6726;
      D.6757 = D.6755 | D.6756;
      MEM[(union U *)d.59].L[0] = D.6757;
      goto <D.6758>;
      <D.6746>:
      d.59 = &d;
      D.6759 = y | 1072693248;
      MEM[(union U *)d.59].L[1] = D.6759;
      d.59 = &d;
      MEM[(union U *)d.59].L[0] = z;
      <D.6758>:
      ret_d:
      d.59 = &d;
      D.6760 = MEM[(union U *)d.59].d;
      return D.6760;
    }
  finally
    {
      d = {CLOBBER};
    }
}


ulp (double x)
{
  double * x.63;
  unsigned int D.6764;
  unsigned int D.6765;
  unsigned int D.6766;
  double * a.64;
  unsigned int L.65;
  double D.6769;
  register gint32 L;
  double a;

  try
    {
      x.63 = &x;
      D.6764 = MEM[(union U *)x.63].L[1];
      D.6765 = D.6764 & 2146435072;
      D.6766 = D.6765 + 4240441344;
      L = (gint32) D.6766;
      a.64 = &a;
      L.65 = (unsigned int) L;
      MEM[(union U *)a.64].L[1] = L.65;
      a.64 = &a;
      MEM[(union U *)a.64].L[0] = 0;
      a.64 = &a;
      D.6769 = MEM[(union U *)a.64].d;
      return D.6769;
    }
  finally
    {
      a = {CLOBBER};
    }
}


Bfree (struct Bigint * v)
{
  free (v);
}


