mono_strtod (const char * s00, char * * se)
{
  double * rv.0;
  char D.5996;
  int D.5997;
  unsigned int D.6004;
  unsigned int c.1;
  unsigned int D.6006;
  unsigned int D.6010;
  unsigned int D.6011;
  unsigned int c.2;
  unsigned int D.6018;
  int nd.3;
  int nd.4;
  unsigned int D.6035;
  int D.6049;
  int D.6050;
  int s.5;
  int s1.6;
  int D.6057;
  double D.6071;
  int D.6074;
  double D.6075;
  double D.6076;
  double D.6077;
  double D.6078;
  double D.6079;
  double D.6087;
  double D.6088;
  int D.6089;
  double D.6092;
  double D.6093;
  int D.6097;
  double D.6098;
  double D.6099;
  int D.6100;
  int * D.6109;
  int D.6111;
  double D.6114;
  double D.6115;
  unsigned int D.6116;
  unsigned int D.6117;
  unsigned int D.6122;
  double D.6128;
  int D.6132;
  double D.6137;
  double D.6138;
  unsigned int D.6141;
  unsigned int D.6142;
  unsigned int D.6143;
  int D.6151;
  unsigned int D.6152;
  unsigned int D.6153;
  unsigned int D.6155;
  unsigned int D.6156;
  unsigned int D.6157;
  int D.6161;
  int * D.6162;
  int * D.6163;
  int D.6164;
  unsigned int D.6165;
  unsigned int D.6166;
  unsigned int D.6167;
  int bbe.7;
  int bbbits.8;
  int D.6176;
  unsigned int D.6198;
  unsigned int D.6201;
  int D.6204;
  int D.6206;
  guint32 iftmp.9;
  unsigned int D.6219;
  unsigned int D.6220;
  int D.6221;
  unsigned int D.6224;
  int D.6232;
  unsigned int D.6236;
  int D.6237;
  unsigned int D.6238;
  unsigned int D.6239;
  double D.6243;
  double D.6244;
  double D.6246;
  double D.6247;
  double aadj1.10;
  double iftmp.11;
  double aadj1.12;
  double aadj1.13;
  double * rv0.14;
  double D.6277;
  double D.6278;
  unsigned int D.6281;
  unsigned int D.6284;
  double iftmp.15;
  double * aadj1.16;
  unsigned int D.6300;
  unsigned int D.6301;
  unsigned int D.6302;
  double D.6303;
  double D.6308;
  double D.6319;
  double D.6320;
  double D.6327;
  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.5954>:
      D.5996 = *s;
      D.5997 = (int) D.5996;
      switch (D.5997) <default: <D.5953>, case 0: <D.5944>, case 9: <D.5946>, case 10: <D.5947>, case 11: <D.5948>, case 12: <D.5949>, case 13: <D.5950>, case 32: <D.5951>, case 43: <D.5942>, case 45: <D.5941>>
      <D.5941>:
      sign = 1;
      <D.5942>:
      s = s + 1;
      D.5996 = *s;
      if (D.5996 != 0) goto break2; else goto <D.5998>;
      <D.5998>:
      <D.5944>:
      goto ret0;
      <D.5946>:
      <D.5947>:
      <D.5948>:
      <D.5949>:
      <D.5950>:
      <D.5951>:
      // predicted unlikely by continue predictor.
      goto <D.5952>;
      <D.5953>:
      goto break2;
      <D.5952>:
      s = s + 1;
      goto <D.5954>;
      break2:
      D.5996 = *s;
      if (D.5996 == 48) goto <D.5999>; else goto <D.6000>;
      <D.5999>:
      nz0 = 1;
      goto <D.5956>;
      <D.5955>:
      <D.5956>:
      s = s + 1;
      D.5996 = *s;
      if (D.5996 == 48) goto <D.5955>; else goto <D.5957>;
      <D.5957>:
      D.5996 = *s;
      if (D.5996 == 0) goto ret; else goto <D.6001>;
      <D.6001>:
      <D.6000>:
      s0 = s;
      z = 0;
      y = z;
      nf = 0;
      nd = nf;
      goto <D.5960>;
      <D.5959>:
      if (nd <= 8) goto <D.6002>; else goto <D.6003>;
      <D.6002>:
      D.6004 = y * 10;
      c.1 = (unsigned int) c;
      D.6006 = D.6004 + c.1;
      y = D.6006 + 4294967248;
      goto <D.6007>;
      <D.6003>:
      if (nd <= 15) goto <D.6008>; else goto <D.6009>;
      <D.6008>:
      D.6010 = z * 10;
      c.1 = (unsigned int) c;
      D.6011 = D.6010 + c.1;
      z = D.6011 + 4294967248;
      <D.6009>:
      <D.6007>:
      nd = nd + 1;
      s = s + 1;
      <D.5960>:
      D.5996 = *s;
      c = (int) D.5996;
      if (c > 47) goto <D.6012>; else goto <D.5961>;
      <D.6012>:
      if (c <= 57) goto <D.5959>; else goto <D.5961>;
      <D.5961>:
      nd0 = nd;
      if (c == 46) goto <D.6013>; else goto <D.6014>;
      <D.6013>:
      s = s + 1;
      D.5996 = *s;
      c = (int) D.5996;
      if (nd == 0) goto <D.6015>; else goto <D.6016>;
      <D.6015>:
      goto <D.5963>;
      <D.5962>:
      nz = nz + 1;
      s = s + 1;
      D.5996 = *s;
      c = (int) D.5996;
      <D.5963>:
      if (c == 48) goto <D.5962>; else goto <D.5964>;
      <D.5964>:
      c.2 = (unsigned int) c;
      D.6018 = c.2 + 4294967247;
      if (D.6018 <= 8) goto <D.6019>; else goto <D.6020>;
      <D.6019>:
      s0 = s;
      nf = nf + nz;
      nz = 0;
      goto have_dig;
      <D.6020>:
      goto dig_done;
      <D.6016>:
      goto <D.5971>;
      <D.5970>:
      have_dig:
      nz = nz + 1;
      c = c + -48;
      if (c != 0) goto <D.6021>; else goto <D.6022>;
      <D.6021>:
      nf = nf + nz;
      i = 1;
      goto <D.5968>;
      <D.5967>:
      nd.3 = nd;
      nd = nd.3 + 1;
      if (nd.3 <= 8) goto <D.6024>; else goto <D.6025>;
      <D.6024>:
      y = y * 10;
      goto <D.6026>;
      <D.6025>:
      if (nd <= 16) goto <D.6027>; else goto <D.6028>;
      <D.6027>:
      z = z * 10;
      <D.6028>:
      <D.6026>:
      i = i + 1;
      <D.5968>:
      if (i < nz) goto <D.5967>; else goto <D.5969>;
      <D.5969>:
      nd.4 = nd;
      nd = nd.4 + 1;
      if (nd.4 <= 8) goto <D.6030>; else goto <D.6031>;
      <D.6030>:
      D.6004 = y * 10;
      c.1 = (unsigned int) c;
      y = D.6004 + c.1;
      goto <D.6032>;
      <D.6031>:
      if (nd <= 16) goto <D.6033>; else goto <D.6034>;
      <D.6033>:
      D.6010 = z * 10;
      c.1 = (unsigned int) c;
      z = D.6010 + c.1;
      <D.6034>:
      <D.6032>:
      nz = 0;
      <D.6022>:
      s = s + 1;
      D.5996 = *s;
      c = (int) D.5996;
      <D.5971>:
      c.2 = (unsigned int) c;
      D.6035 = c.2 + 4294967248;
      if (D.6035 <= 9) goto <D.5970>; else goto <D.5972>;
      <D.5972>:
      <D.6014>:
      dig_done:
      e = 0;
      if (c == 101) goto <D.6036>; else goto <D.6038>;
      <D.6038>:
      if (c == 69) goto <D.6036>; else goto <D.6037>;
      <D.6036>:
      if (nd == 0) goto <D.6039>; else goto <D.6040>;
      <D.6039>:
      if (nz == 0) goto <D.6041>; else goto <D.6042>;
      <D.6041>:
      if (nz0 == 0) goto ret0; else goto <D.6043>;
      <D.6043>:
      <D.6042>:
      <D.6040>:
      s00 = s;
      esign = 0;
      s = s + 1;
      D.5996 = *s;
      c = (int) D.5996;
      switch (c) <default: <D.6044>, case 43: <D.5974>, case 45: <D.5973>>
      <D.5973>:
      esign = 1;
      <D.5974>:
      s = s + 1;
      D.5996 = *s;
      c = (int) D.5996;
      <D.6044>:
      c.2 = (unsigned int) c;
      D.6035 = c.2 + 4294967248;
      if (D.6035 <= 9) goto <D.6045>; else goto <D.6046>;
      <D.6045>:
      goto <D.5976>;
      <D.5975>:
      s = s + 1;
      D.5996 = *s;
      c = (int) D.5996;
      <D.5976>:
      if (c == 48) goto <D.5975>; else goto <D.5977>;
      <D.5977>:
      c.2 = (unsigned int) c;
      D.6018 = c.2 + 4294967247;
      if (D.6018 <= 8) goto <D.6047>; else goto <D.6048>;
      <D.6047>:
      L = c + -48;
      s1 = s;
      goto <D.5979>;
      <D.5978>:
      D.6049 = L * 10;
      D.6050 = D.6049 + c;
      L = D.6050 + -48;
      <D.5979>:
      s = s + 1;
      D.5996 = *s;
      c = (int) D.5996;
      if (c > 47) goto <D.6051>; else goto <D.5980>;
      <D.6051>:
      if (c <= 57) goto <D.5978>; else goto <D.5980>;
      <D.5980>:
      s.5 = (int) s;
      s1.6 = (int) s1;
      D.6057 = s.5 - s1.6;
      if (D.6057 > 8) goto <D.6052>; else goto <D.6058>;
      <D.6058>:
      if (L > 19999) goto <D.6052>; else goto <D.6053>;
      <D.6052>:
      e = 19999;
      goto <D.6054>;
      <D.6053>:
      e = L;
      <D.6054>:
      if (esign != 0) goto <D.6059>; else goto <D.6060>;
      <D.6059>:
      e = -e;
      <D.6060>:
      goto <D.6061>;
      <D.6048>:
      e = 0;
      <D.6061>:
      goto <D.6062>;
      <D.6046>:
      s = s00;
      <D.6062>:
      <D.6037>:
      if (nd == 0) goto <D.6063>; else goto <D.6064>;
      <D.6063>:
      if (nz == 0) goto <D.6065>; else goto <D.6066>;
      <D.6065>:
      if (nz0 == 0) goto <D.6067>; else goto <D.6068>;
      <D.6067>:
      ret0:
      s = s00;
      sign = 0;
      <D.6068>:
      <D.6066>:
      goto ret;
      <D.6064>:
      e = e - nf;
      e1 = e;
      if (nd0 == 0) goto <D.6069>; else goto <D.6070>;
      <D.6069>:
      nd0 = nd;
      <D.6070>:
      k = MIN_EXPR <nd, 16>;
      rv.0 = &rv;
      D.6071 = (double) y;
      MEM[(union U *)rv.0].d = D.6071;
      if (k > 9) goto <D.6072>; else goto <D.6073>;
      <D.6072>:
      rv.0 = &rv;
      D.6074 = k + -9;
      D.6075 = tens[D.6074];
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6077 = D.6075 * D.6076;
      D.6078 = (double) z;
      D.6079 = D.6077 + D.6078;
      MEM[(union U *)rv.0].d = D.6079;
      <D.6073>:
      bd0 = 0B;
      if (nd <= 15) goto <D.6080>; else goto <D.6081>;
      <D.6080>:
      if (e == 0) goto ret; else goto <D.6082>;
      <D.6082>:
      if (e > 0) goto <D.6083>; else goto <D.6084>;
      <D.6083>:
      if (e <= 22) goto <D.6085>; else goto <D.6086>;
      <D.6085>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6087 = tens[e];
      D.6088 = D.6076 * D.6087;
      MEM[(union U *)rv.0].d = D.6088;
      goto ret;
      <D.6086>:
      i = 15 - nd;
      D.6089 = i + 22;
      if (D.6089 >= e) goto <D.6090>; else goto <D.6091>;
      <D.6090>:
      e = e - i;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6092 = tens[i];
      D.6093 = D.6076 * D.6092;
      MEM[(union U *)rv.0].d = D.6093;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6087 = tens[e];
      D.6088 = D.6076 * D.6087;
      MEM[(union U *)rv.0].d = D.6088;
      goto ret;
      <D.6091>:
      goto <D.6094>;
      <D.6084>:
      if (e >= -22) goto <D.6095>; else goto <D.6096>;
      <D.6095>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6097 = -e;
      D.6098 = tens[D.6097];
      D.6099 = D.6076 / D.6098;
      MEM[(union U *)rv.0].d = D.6099;
      goto ret;
      <D.6096>:
      <D.6094>:
      <D.6081>:
      D.6100 = nd - k;
      e1 = D.6100 + e1;
      scale = 0;
      if (e1 > 0) goto <D.6101>; else goto <D.6102>;
      <D.6101>:
      i = e1 & 15;
      if (i != 0) goto <D.6103>; else goto <D.6104>;
      <D.6103>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6092 = tens[i];
      D.6093 = D.6076 * D.6092;
      MEM[(union U *)rv.0].d = D.6093;
      <D.6104>:
      e1 = e1 & -16;
      if (e1 != 0) goto <D.6105>; else goto <D.6106>;
      <D.6105>:
      if (e1 > 308) goto <D.6107>; else goto <D.6108>;
      <D.6107>:
      ovfl:
      D.6109 = __errno_location ();
      *D.6109 = 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.6110>;
      <D.6110>:
      goto ret;
      <D.6108>:
      e1 = e1 >> 4;
      j = 0;
      goto <D.5984>;
      <D.5983>:
      D.6111 = e1 & 1;
      if (D.6111 != 0) goto <D.6112>; else goto <D.6113>;
      <D.6112>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6114 = bigtens[j];
      D.6115 = D.6076 * D.6114;
      MEM[(union U *)rv.0].d = D.6115;
      <D.6113>:
      j = j + 1;
      e1 = e1 >> 1;
      <D.5984>:
      if (e1 > 1) goto <D.5983>; else goto <D.5985>;
      <D.5985>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6117 = D.6116 + 4239392768;
      MEM[(union U *)rv.0].L[1] = D.6117;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6114 = bigtens[j];
      D.6115 = D.6076 * D.6114;
      MEM[(union U *)rv.0].d = D.6115;
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      z = D.6116 & 2146435072;
      if (z > 2090860544) goto ovfl; else goto <D.6118>;
      <D.6118>:
      if (z > 2089811968) goto <D.6119>; else goto <D.6120>;
      <D.6119>:
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[1] = 2146435071;
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[0] = 4294967295;
      goto <D.6121>;
      <D.6120>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6122 = D.6116 + 55574528;
      MEM[(union U *)rv.0].L[1] = D.6122;
      <D.6121>:
      <D.6106>:
      goto <D.6123>;
      <D.6102>:
      if (e1 < 0) goto <D.6124>; else goto <D.6125>;
      <D.6124>:
      e1 = -e1;
      i = e1 & 15;
      if (i != 0) goto <D.6126>; else goto <D.6127>;
      <D.6126>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6092 = tens[i];
      D.6128 = D.6076 / D.6092;
      MEM[(union U *)rv.0].d = D.6128;
      <D.6127>:
      e1 = e1 >> 4;
      if (e1 != 0) goto <D.6129>; else goto <D.6130>;
      <D.6129>:
      if (e1 > 31) goto undfl; else goto <D.6131>;
      <D.6131>:
      D.6132 = e1 & 16;
      if (D.6132 != 0) goto <D.6133>; else goto <D.6134>;
      <D.6133>:
      scale = 106;
      <D.6134>:
      j = 0;
      goto <D.5988>;
      <D.5987>:
      D.6111 = e1 & 1;
      if (D.6111 != 0) goto <D.6135>; else goto <D.6136>;
      <D.6135>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6137 = tinytens[j];
      D.6138 = D.6076 * D.6137;
      MEM[(union U *)rv.0].d = D.6138;
      <D.6136>:
      j = j + 1;
      e1 = e1 >> 1;
      <D.5988>:
      if (e1 > 0) goto <D.5987>; else goto <D.5989>;
      <D.5989>:
      if (scale != 0) goto <D.6139>; else goto <D.6140>;
      <D.6139>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6141 = D.6116 & 2146435072;
      D.6142 = D.6141 >> 20;
      D.6143 = 107 - D.6142;
      j = (int) D.6143;
      if (j > 0) goto <D.6144>; else goto <D.6145>;
      <D.6144>:
      if (j > 31) goto <D.6146>; else goto <D.6147>;
      <D.6146>:
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[0] = 0;
      if (j > 52) goto <D.6148>; else goto <D.6149>;
      <D.6148>:
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[1] = 57671680;
      goto <D.6150>;
      <D.6149>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6151 = j + -32;
      D.6152 = 4294967295 << D.6151;
      D.6153 = D.6116 & D.6152;
      MEM[(union U *)rv.0].L[1] = D.6153;
      <D.6150>:
      goto <D.6154>;
      <D.6147>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6155 = MEM[(union U *)rv.0].L[0];
      D.6156 = 4294967295 << j;
      D.6157 = D.6155 & D.6156;
      MEM[(union U *)rv.0].L[0] = D.6157;
      <D.6154>:
      <D.6145>:
      <D.6140>:
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      if (D.6076 == 0.0) goto <D.6158>; else goto <D.6159>;
      <D.6158>:
      undfl:
      rv.0 = &rv;
      MEM[(union U *)rv.0].d = 0.0;
      D.6109 = __errno_location ();
      *D.6109 = 34;
      if (bd0 != 0B) goto retfree; else goto <D.6160>;
      <D.6160>:
      goto ret;
      <D.6159>:
      <D.6130>:
      <D.6125>:
      <D.6123>:
      bd0 = s2b (s0, nd0, nd, y);
      <D.5993>:
      D.6161 = bd0->k;
      bd = Balloc (D.6161);
      D.6162 = &bd->sign;
      D.6163 = &bd0->sign;
      D.6164 = bd0->wds;
      D.6165 = (unsigned int) D.6164;
      D.6166 = D.6165 + 2;
      D.6167 = D.6166 * 4;
      memcpy (D.6162, D.6163, D.6167);
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      bb = d2b (D.6076, &bbe, &bbbits);
      bs = i2b (1);
      if (e >= 0) goto <D.6168>; else goto <D.6169>;
      <D.6168>:
      bb5 = 0;
      bb2 = bb5;
      bd5 = e;
      bd2 = bd5;
      goto <D.6170>;
      <D.6169>:
      bb5 = -e;
      bb2 = bb5;
      bd5 = 0;
      bd2 = bd5;
      <D.6170>:
      bbe.7 = bbe;
      if (bbe.7 >= 0) goto <D.6172>; else goto <D.6173>;
      <D.6172>:
      bbe.7 = bbe;
      bb2 = bb2 + bbe.7;
      goto <D.6174>;
      <D.6173>:
      bbe.7 = bbe;
      bd2 = bd2 - bbe.7;
      <D.6174>:
      bs2 = bb2;
      bbe.7 = bbe;
      j = bbe.7 - scale;
      bbbits.8 = bbbits;
      D.6176 = j + bbbits.8;
      i = D.6176 + -1;
      if (i < -1022) goto <D.6177>; else goto <D.6178>;
      <D.6177>:
      j = j + 1075;
      goto <D.6179>;
      <D.6178>:
      bbbits.8 = bbbits;
      j = 54 - bbbits.8;
      <D.6179>:
      bb2 = bb2 + j;
      bd2 = bd2 + j;
      bd2 = bd2 + scale;
      i = MIN_EXPR <bd2, bb2>;
      if (i > bs2) goto <D.6180>; else goto <D.6181>;
      <D.6180>:
      i = bs2;
      <D.6181>:
      if (i > 0) goto <D.6182>; else goto <D.6183>;
      <D.6182>:
      bb2 = bb2 - i;
      bd2 = bd2 - i;
      bs2 = bs2 - i;
      <D.6183>:
      if (bb5 > 0) goto <D.6184>; else goto <D.6185>;
      <D.6184>:
      bs = pow5mult (bs, bb5);
      bb1 = mult (bs, bb);
      Bfree (bb);
      bb = bb1;
      <D.6185>:
      if (bb2 > 0) goto <D.6186>; else goto <D.6187>;
      <D.6186>:
      bb = lshift (bb, bb2);
      <D.6187>:
      if (bd5 > 0) goto <D.6188>; else goto <D.6189>;
      <D.6188>:
      bd = pow5mult (bd, bd5);
      <D.6189>:
      if (bd2 > 0) goto <D.6190>; else goto <D.6191>;
      <D.6190>:
      bd = lshift (bd, bd2);
      <D.6191>:
      if (bs2 > 0) goto <D.6192>; else goto <D.6193>;
      <D.6192>:
      bs = lshift (bs, bs2);
      <D.6193>:
      delta = diff (bb, bd);
      dsign = delta->sign;
      delta->sign = 0;
      i = cmp (delta, bs);
      if (i < 0) goto <D.6194>; else goto <D.6195>;
      <D.6194>:
      if (dsign != 0) goto <D.5990>; else goto <D.6196>;
      <D.6196>:
      rv.0 = &rv;
      D.6155 = MEM[(union U *)rv.0].L[0];
      if (D.6155 != 0) goto <D.5990>; else goto <D.6197>;
      <D.6197>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6198 = D.6116 & 1048575;
      if (D.6198 != 0) goto <D.5990>; else goto <D.6199>;
      <D.6199>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6141 = D.6116 & 2146435072;
      if (D.6141 <= 112197632) goto <D.5990>; else goto <D.6200>;
      <D.6200>:
      D.6201 = delta->x[0];
      if (D.6201 == 0) goto <D.6202>; else goto <D.6203>;
      <D.6202>:
      D.6204 = delta->wds;
      if (D.6204 <= 1) goto <D.5990>; else goto <D.6205>;
      <D.6205>:
      <D.6203>:
      delta = lshift (delta, 1);
      D.6206 = cmp (delta, bs);
      if (D.6206 > 0) goto drop_down; else goto <D.6207>;
      <D.6207>:
      goto <D.5990>;
      <D.6195>:
      if (i == 0) goto <D.6208>; else goto <D.6209>;
      <D.6208>:
      if (dsign != 0) goto <D.6210>; else goto <D.6211>;
      <D.6210>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6198 = D.6116 & 1048575;
      if (D.6198 == 1048575) goto <D.6212>; else goto <D.6213>;
      <D.6212>:
      rv.0 = &rv;
      D.6155 = MEM[(union U *)rv.0].L[0];
      if (scale != 0) goto <D.6217>; else goto <D.6215>;
      <D.6217>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      y = D.6116 & 2146435072;
      if (y <= 111149056) goto <D.6218>; else goto <D.6215>;
      <D.6218>:
      D.6219 = y >> 20;
      D.6220 = 107 - D.6219;
      D.6221 = (int) D.6220;
      iftmp.9 = 4294967295 << D.6221;
      goto <D.6216>;
      <D.6215>:
      iftmp.9 = 4294967295;
      <D.6216>:
      if (D.6155 == iftmp.9) goto <D.6222>; else goto <D.6223>;
      <D.6222>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6141 = D.6116 & 2146435072;
      D.6224 = D.6141 + 1048576;
      MEM[(union U *)rv.0].L[1] = D.6224;
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[0] = 0;
      dsign = 0;
      goto <D.5990>;
      <D.6223>:
      <D.6213>:
      goto <D.6225>;
      <D.6211>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6198 = D.6116 & 1048575;
      if (D.6198 == 0) goto <D.6226>; else goto <D.6227>;
      <D.6226>:
      rv.0 = &rv;
      D.6155 = MEM[(union U *)rv.0].L[0];
      if (D.6155 == 0) goto <D.6228>; else goto <D.6229>;
      <D.6228>:
      drop_down:
      if (scale != 0) goto <D.6230>; else goto <D.6231>;
      <D.6230>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6232 = (int) D.6116;
      L = D.6232 & 2146435072;
      if (L <= 112197632) goto <D.6233>; else goto <D.6234>;
      <D.6233>:
      if (L > 57671680) goto <D.5990>; else goto <D.6235>;
      <D.6235>:
      goto undfl;
      <D.6234>:
      <D.6231>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6141 = D.6116 & 2146435072;
      D.6236 = D.6141 + 4293918720;
      L = (gint32) D.6236;
      rv.0 = &rv;
      D.6237 = L | 1048575;
      D.6238 = (unsigned int) D.6237;
      MEM[(union U *)rv.0].L[1] = D.6238;
      rv.0 = &rv;
      MEM[(union U *)rv.0].L[0] = 4294967295;
      goto <D.5990>;
      <D.6229>:
      <D.6227>:
      <D.6225>:
      rv.0 = &rv;
      D.6155 = MEM[(union U *)rv.0].L[0];
      D.6239 = D.6155 & 1;
      if (D.6239 == 0) goto <D.5990>; else goto <D.6240>;
      <D.6240>:
      if (dsign != 0) goto <D.6241>; else goto <D.6242>;
      <D.6241>:
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6243 = ulp (D.6076);
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6244 = D.6076 + D.6243;
      MEM[(union U *)rv.0].d = D.6244;
      goto <D.6245>;
      <D.6242>:
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6246 = ulp (D.6076);
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6247 = D.6076 - D.6246;
      MEM[(union U *)rv.0].d = D.6247;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      if (D.6076 == 0.0) goto undfl; else goto <D.6248>;
      <D.6248>:
      <D.6245>:
      dsign = 1 - dsign;
      goto <D.5990>;
      <D.6209>:
      aadj = ratio (delta, bs);
      if (aadj <= 2.0e+0) goto <D.6249>; else goto <D.6250>;
      <D.6249>:
      if (dsign != 0) goto <D.6251>; else goto <D.6252>;
      <D.6251>:
      aadj1 = 1.0e+0;
      aadj = aadj1;
      goto <D.6253>;
      <D.6252>:
      rv.0 = &rv;
      D.6155 = MEM[(union U *)rv.0].L[0];
      if (D.6155 != 0) goto <D.6254>; else goto <D.6257>;
      <D.6257>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6198 = D.6116 & 1048575;
      if (D.6198 != 0) goto <D.6254>; else goto <D.6255>;
      <D.6254>:
      rv.0 = &rv;
      D.6155 = MEM[(union U *)rv.0].L[0];
      if (D.6155 == 1) goto <D.6258>; else goto <D.6259>;
      <D.6258>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      if (D.6116 == 0) goto undfl; else goto <D.6260>;
      <D.6260>:
      <D.6259>:
      aadj = 1.0e+0;
      aadj1 = -1.0e+0;
      goto <D.6256>;
      <D.6255>:
      if (aadj < 1.0e+0) goto <D.6261>; else goto <D.6262>;
      <D.6261>:
      aadj = 5.0e-1;
      goto <D.6263>;
      <D.6262>:
      aadj = aadj * 5.0e-1;
      <D.6263>:
      aadj1.10 = -aadj;
      aadj1 = aadj1.10;
      <D.6256>:
      <D.6253>:
      goto <D.6265>;
      <D.6250>:
      aadj = aadj * 5.0e-1;
      if (dsign == 0) goto <D.6267>; else goto <D.6268>;
      <D.6267>:
      iftmp.11 = -aadj;
      goto <D.6269>;
      <D.6268>:
      iftmp.11 = aadj;
      <D.6269>:
      aadj1 = iftmp.11;
      if (0 != 0) goto <D.6270>; else goto <D.6271>;
      <D.6270>:
      aadj1.12 = aadj1;
      aadj1.13 = aadj1.12 + 5.0e-1;
      aadj1 = aadj1.13;
      <D.6271>:
      <D.6265>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      y = D.6116 & 2146435072;
      if (y == 2145386496) goto <D.6274>; else goto <D.6275>;
      <D.6274>:
      rv0.14 = &rv0;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      MEM[(union U *)rv0.14].d = D.6076;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6117 = D.6116 + 4239392768;
      MEM[(union U *)rv.0].L[1] = D.6117;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6277 = ulp (D.6076);
      aadj1.12 = aadj1;
      adj = D.6277 * aadj1.12;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6278 = D.6076 + adj;
      MEM[(union U *)rv.0].d = D.6278;
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6141 = D.6116 & 2146435072;
      if (D.6141 > 2090860543) goto <D.6279>; else goto <D.6280>;
      <D.6279>:
      rv0.14 = &rv0;
      D.6281 = MEM[(union U *)rv0.14].L[1];
      if (D.6281 == 2146435071) goto <D.6282>; else goto <D.6283>;
      <D.6282>:
      rv0.14 = &rv0;
      D.6284 = MEM[(union U *)rv0.14].L[0];
      if (D.6284 == 4294967295) goto ovfl; else goto <D.6285>;
      <D.6285>:
      <D.6283>:
      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.6280>:
      rv.0 = &rv;
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6122 = D.6116 + 55574528;
      MEM[(union U *)rv.0].L[1] = D.6122;
      goto <D.6286>;
      <D.6275>:
      if (scale != 0) goto <D.6287>; else goto <D.6288>;
      <D.6287>:
      if (y <= 111149056) goto <D.6289>; else goto <D.6290>;
      <D.6289>:
      if (aadj <= 2.147483647e+9) goto <D.6291>; else goto <D.6292>;
      <D.6291>:
      z = (guint32) aadj;
      if (z == 0) goto <D.6293>; else goto <D.6294>;
      <D.6293>:
      z = 1;
      <D.6294>:
      aadj = (double) z;
      if (dsign == 0) goto <D.6296>; else goto <D.6297>;
      <D.6296>:
      iftmp.15 = -aadj;
      goto <D.6298>;
      <D.6297>:
      iftmp.15 = aadj;
      <D.6298>:
      aadj1 = iftmp.15;
      <D.6292>:
      aadj1.16 = &aadj1;
      aadj1.16 = &aadj1;
      D.6300 = MEM[(union U *)aadj1.16].L[1];
      D.6301 = D.6300 - y;
      D.6302 = D.6301 + 112197632;
      MEM[(union U *)aadj1.16].L[1] = D.6302;
      <D.6290>:
      <D.6288>:
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6303 = ulp (D.6076);
      aadj1.12 = aadj1;
      adj = D.6303 * aadj1.12;
      rv.0 = &rv;
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      D.6278 = D.6076 + adj;
      MEM[(union U *)rv.0].d = D.6278;
      <D.6286>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      z = D.6116 & 2146435072;
      if (scale == 0) goto <D.6304>; else goto <D.6305>;
      <D.6304>:
      if (y == z) goto <D.6306>; else goto <D.6307>;
      <D.6306>:
      L = (gint32) aadj;
      D.6308 = (double) L;
      aadj = aadj - D.6308;
      if (dsign != 0) goto <D.6309>; else goto <D.6312>;
      <D.6312>:
      rv.0 = &rv;
      D.6155 = MEM[(union U *)rv.0].L[0];
      if (D.6155 != 0) goto <D.6309>; else goto <D.6313>;
      <D.6313>:
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      D.6198 = D.6116 & 1048575;
      if (D.6198 != 0) goto <D.6309>; else goto <D.6310>;
      <D.6309>:
      if (aadj < 4.99999899999999997124433548378874547779560089111328125e-1) goto <D.5990>; else goto <D.6314>;
      <D.6314>:
      if (aadj > 5.0000009999999994736441522036329843103885650634765625e-1) goto <D.5990>; else goto <D.6315>;
      <D.6315>:
      goto <D.6311>;
      <D.6310>:
      if (aadj < 2.499999499999999985622167741894372738897800445556640625e-1) goto <D.5990>; else goto <D.6316>;
      <D.6316>:
      <D.6311>:
      <D.6307>:
      <D.6305>:
      cont:
      Bfree (bb);
      Bfree (bd);
      Bfree (bs);
      Bfree (delta);
      goto <D.5993>;
      <D.5990>:
      if (scale != 0) goto <D.6317>; else goto <D.6318>;
      <D.6317>:
      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.6076 = MEM[(union U *)rv.0].d;
      rv0.14 = &rv0;
      D.6319 = MEM[(union U *)rv0.14].d;
      D.6320 = D.6076 * D.6319;
      MEM[(union U *)rv.0].d = D.6320;
      rv.0 = &rv;
      D.6116 = MEM[(union U *)rv.0].L[1];
      if (D.6116 == 0) goto <D.6321>; else goto <D.6322>;
      <D.6321>:
      rv.0 = &rv;
      D.6155 = MEM[(union U *)rv.0].L[0];
      if (D.6155 == 0) goto <D.6323>; else goto <D.6324>;
      <D.6323>:
      D.6109 = __errno_location ();
      *D.6109 = 34;
      <D.6324>:
      <D.6322>:
      <D.6318>:
      retfree:
      Bfree (bb);
      Bfree (bd);
      Bfree (bs);
      Bfree (bd0);
      Bfree (delta);
      ret:
      if (se != 0B) goto <D.6325>; else goto <D.6326>;
      <D.6325>:
      *se = s;
      <D.6326>:
      if (sign != 0) goto <D.6329>; else goto <D.6330>;
      <D.6329>:
      rv.0 = &rv;
      D.6076 = MEM[(union U *)rv.0].d;
      iftmp.17 = -D.6076;
      goto <D.6331>;
      <D.6330>:
      rv.0 = &rv;
      iftmp.17 = MEM[(union U *)rv.0].d;
      <D.6331>:
      D.6327 = iftmp.17;
      return D.6327;
    }
  finally
    {
      bbe = {CLOBBER};
      bbbits = {CLOBBER};
      aadj1 = {CLOBBER};
      rv = {CLOBBER};
      rv0 = {CLOBBER};
    }
}


s2b (const char * s, int nd0, int nd, guint32 y9)
{
  int D.6334;
  const char * s.18;
  char D.6338;
  int D.6339;
  int D.6340;
  const char * s.19;
  char D.6343;
  int D.6344;
  int D.6345;
  struct Bigint * D.6346;
  struct Bigint * b;
  int i;
  int k;
  gint32 x;
  gint32 y;

  D.6334 = nd + 8;
  x = D.6334 / 9;
  k = 0;
  y = 1;
  goto <D.5737>;
  <D.5736>:
  y = y << 1;
  k = k + 1;
  <D.5737>:
  if (x > y) goto <D.5736>; else goto <D.5738>;
  <D.5738>:
  b = Balloc (k);
  b->x[0] = y9;
  b->wds = 1;
  i = 9;
  if (nd0 > 9) goto <D.6335>; else goto <D.6336>;
  <D.6335>:
  s = s + 9;
  <D.5739>:
  s.18 = s;
  s = s.18 + 1;
  D.6338 = *s.18;
  D.6339 = (int) D.6338;
  D.6340 = D.6339 + -48;
  b = multadd (b, 10, D.6340);
  i = i + 1;
  if (i < nd0) goto <D.5739>; else goto <D.5740>;
  <D.5740>:
  s = s + 1;
  goto <D.6341>;
  <D.6336>:
  s = s + 10;
  <D.6341>:
  goto <D.5742>;
  <D.5741>:
  s.19 = s;
  s = s.19 + 1;
  D.6343 = *s.19;
  D.6344 = (int) D.6343;
  D.6345 = D.6344 + -48;
  b = multadd (b, 10, D.6345);
  i = i + 1;
  <D.5742>:
  if (i < nd) goto <D.5741>; else goto <D.5743>;
  <D.5743>:
  D.6346 = b;
  return D.6346;
}


multadd (struct Bigint * b, int m, int a)
{
  unsigned int D.6348;
  long long unsigned int D.6349;
  long long unsigned int D.6350;
  long long unsigned int D.6351;
  guint32 * x.20;
  unsigned int D.6353;
  int D.6356;
  int D.6359;
  int D.6360;
  int * D.6361;
  int * D.6362;
  int D.6363;
  unsigned int D.6364;
  unsigned int D.6365;
  unsigned int D.6366;
  int wds.21;
  unsigned int D.6368;
  struct Bigint * D.6369;
  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.5723>:
  D.6348 = *x;
  D.6349 = (long long unsigned int) D.6348;
  D.6350 = (long long unsigned int) m;
  D.6351 = D.6349 * D.6350;
  y = D.6351 + carry;
  carry = y >> 32;
  x.20 = x;
  x = x.20 + 4;
  D.6353 = (unsigned int) y;
  *x.20 = D.6353;
  i = i + 1;
  if (i < wds) goto <D.5723>; else goto <D.5724>;
  <D.5724>:
  if (carry != 0) goto <D.6354>; else goto <D.6355>;
  <D.6354>:
  D.6356 = b->maxwds;
  if (D.6356 <= wds) goto <D.6357>; else goto <D.6358>;
  <D.6357>:
  D.6359 = b->k;
  D.6360 = D.6359 + 1;
  b1 = Balloc (D.6360);
  D.6361 = &b1->sign;
  D.6362 = &b->sign;
  D.6363 = b->wds;
  D.6364 = (unsigned int) D.6363;
  D.6365 = D.6364 + 2;
  D.6366 = D.6365 * 4;
  memcpy (D.6361, D.6362, D.6366);
  Bfree (b);
  b = b1;
  <D.6358>:
  wds.21 = wds;
  wds = wds.21 + 1;
  D.6368 = (unsigned int) carry;
  b->x[wds.21] = D.6368;
  b->wds = wds;
  <D.6355>:
  D.6369 = b;
  return D.6369;
}


Balloc (int k)
{
  struct Bigint * D.6373;
  unsigned int x.22;
  unsigned int D.6376;
  unsigned int D.6377;
  int D.6378;
  struct Bigint * D.6379;
  int x;
  struct Bigint * rv;

  rv = freelist[k];
  if (rv != 0B) goto <D.6371>; else goto <D.6372>;
  <D.6371>:
  D.6373 = rv->next;
  freelist[k] = D.6373;
  goto <D.6374>;
  <D.6372>:
  x = 1 << k;
  x.22 = (unsigned int) x;
  D.6376 = x.22 + 5;
  D.6377 = D.6376 * 4;
  rv = malloc (D.6377);
  rv->k = k;
  rv->maxwds = x;
  <D.6374>:
  rv->wds = 0;
  D.6378 = rv->wds;
  rv->sign = D.6378;
  D.6379 = rv;
  return D.6379;
}


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

  D.6382 = __builtin_object_size (__dest, 0);
  D.6381 = __builtin___memcpy_chk (__dest, __src, __len, D.6382);
  return D.6381;
}


d2b (double d, int * e, int * bits)
{
  double * d.23;
  unsigned int D.6385;
  unsigned int z.24;
  unsigned int D.6387;
  unsigned int D.6388;
  unsigned int z.25;
  unsigned int z.26;
  unsigned int y.27;
  unsigned int y.28;
  int D.6399;
  unsigned int D.6400;
  unsigned int D.6401;
  unsigned int z.29;
  int iftmp.30;
  guint32 * D.6405;
  unsigned int D.6406;
  int D.6413;
  int D.6414;
  int D.6415;
  int D.6417;
  int D.6418;
  int D.6419;
  sizetype i.31;
  sizetype D.6421;
  sizetype D.6422;
  guint32 * D.6423;
  unsigned int D.6424;
  int D.6425;
  int D.6426;
  struct Bigint * D.6427;
  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.6385 = MEM[(union U *)d.23].L[1];
      z.24 = D.6385 & 1048575;
      z = z.24;
      d.23 = &d;
      d.23 = &d;
      D.6385 = MEM[(union U *)d.23].L[1];
      D.6387 = D.6385 & 2147483647;
      MEM[(union U *)d.23].L[1] = D.6387;
      d.23 = &d;
      D.6385 = MEM[(union U *)d.23].L[1];
      D.6388 = D.6385 >> 20;
      de = (int) D.6388;
      if (de != 0) goto <D.6389>; else goto <D.6390>;
      <D.6389>:
      z.25 = z;
      z.26 = z.25 | 1048576;
      z = z.26;
      <D.6390>:
      d.23 = &d;
      y.27 = MEM[(union U *)d.23].L[0];
      y = y.27;
      y.28 = y;
      if (y.28 != 0) goto <D.6395>; else goto <D.6396>;
      <D.6395>:
      k = lo0bits (&y);
      if (k != 0) goto <D.6397>; else goto <D.6398>;
      <D.6397>:
      z.25 = z;
      D.6399 = 32 - k;
      D.6400 = z.25 << D.6399;
      y.28 = y;
      D.6401 = D.6400 | y.28;
      *x = D.6401;
      z.25 = z;
      z.29 = z.25 >> k;
      z = z.29;
      goto <D.6403>;
      <D.6398>:
      y.28 = y;
      *x = y.28;
      <D.6403>:
      D.6405 = x + 4;
      z.25 = z;
      *D.6405 = z.25;
      D.6406 = *D.6405;
      if (D.6406 != 0) goto <D.6407>; else goto <D.6408>;
      <D.6407>:
      iftmp.30 = 2;
      goto <D.6409>;
      <D.6408>:
      iftmp.30 = 1;
      <D.6409>:
      b->wds = iftmp.30;
      i = b->wds;
      goto <D.6410>;
      <D.6396>:
      k = lo0bits (&z);
      z.25 = z;
      *x = z.25;
      b->wds = 1;
      i = b->wds;
      k = k + 32;
      <D.6410>:
      if (de != 0) goto <D.6411>; else goto <D.6412>;
      <D.6411>:
      D.6413 = de + -1075;
      D.6414 = D.6413 + k;
      *e = D.6414;
      D.6415 = 53 - k;
      *bits = D.6415;
      goto <D.6416>;
      <D.6412>:
      D.6417 = de + -1074;
      D.6418 = D.6417 + k;
      *e = D.6418;
      D.6419 = i * 32;
      i.31 = (sizetype) i;
      D.6421 = i.31 + 1073741823;
      D.6422 = D.6421 * 4;
      D.6423 = x + D.6422;
      D.6424 = *D.6423;
      D.6425 = hi0bits (D.6424);
      D.6426 = D.6419 - D.6425;
      *bits = D.6426;
      <D.6416>:
      D.6427 = b;
      return D.6427;
    }
  finally
    {
      y = {CLOBBER};
      z = {CLOBBER};
    }
}


lo0bits (guint32 * y)
{
  unsigned int D.6430;
  unsigned int D.6433;
  int D.6436;
  unsigned int D.6437;
  unsigned int D.6440;
  unsigned int D.6441;
  unsigned int D.6442;
  unsigned int D.6445;
  unsigned int D.6448;
  unsigned int D.6451;
  register int k;
  register guint32 x;

  x = *y;
  D.6430 = x & 7;
  if (D.6430 != 0) goto <D.6431>; else goto <D.6432>;
  <D.6431>:
  D.6433 = x & 1;
  if (D.6433 != 0) goto <D.6434>; else goto <D.6435>;
  <D.6434>:
  D.6436 = 0;
  return D.6436;
  <D.6435>:
  D.6437 = x & 2;
  if (D.6437 != 0) goto <D.6438>; else goto <D.6439>;
  <D.6438>:
  D.6440 = x >> 1;
  *y = D.6440;
  D.6436 = 1;
  return D.6436;
  <D.6439>:
  D.6441 = x >> 2;
  *y = D.6441;
  D.6436 = 2;
  return D.6436;
  <D.6432>:
  k = 0;
  D.6442 = x & 65535;
  if (D.6442 == 0) goto <D.6443>; else goto <D.6444>;
  <D.6443>:
  k = 16;
  x = x >> 16;
  <D.6444>:
  D.6445 = x & 255;
  if (D.6445 == 0) goto <D.6446>; else goto <D.6447>;
  <D.6446>:
  k = k + 8;
  x = x >> 8;
  <D.6447>:
  D.6448 = x & 15;
  if (D.6448 == 0) goto <D.6449>; else goto <D.6450>;
  <D.6449>:
  k = k + 4;
  x = x >> 4;
  <D.6450>:
  D.6451 = x & 3;
  if (D.6451 == 0) goto <D.6452>; else goto <D.6453>;
  <D.6452>:
  k = k + 2;
  x = x >> 2;
  <D.6453>:
  D.6433 = x & 1;
  if (D.6433 == 0) goto <D.6454>; else goto <D.6455>;
  <D.6454>:
  k = k + 1;
  x = x >> 1;
  if (x == 0) goto <D.6456>; else goto <D.6457>;
  <D.6456>:
  D.6436 = 32;
  return D.6436;
  <D.6457>:
  <D.6455>:
  *y = x;
  D.6436 = k;
  return D.6436;
}


hi0bits (guint32 x)
{
  unsigned int D.6459;
  unsigned int D.6462;
  unsigned int D.6465;
  unsigned int D.6468;
  signed int x.32;
  unsigned int D.6474;
  int D.6477;
  register int k;

  k = 0;
  D.6459 = x & 4294901760;
  if (D.6459 == 0) goto <D.6460>; else goto <D.6461>;
  <D.6460>:
  k = 16;
  x = x << 16;
  <D.6461>:
  D.6462 = x & 4278190080;
  if (D.6462 == 0) goto <D.6463>; else goto <D.6464>;
  <D.6463>:
  k = k + 8;
  x = x << 8;
  <D.6464>:
  D.6465 = x & 4026531840;
  if (D.6465 == 0) goto <D.6466>; else goto <D.6467>;
  <D.6466>:
  k = k + 4;
  x = x << 4;
  <D.6467>:
  D.6468 = x & 3221225472;
  if (D.6468 == 0) goto <D.6469>; else goto <D.6470>;
  <D.6469>:
  k = k + 2;
  x = x << 2;
  <D.6470>:
  x.32 = (signed int) x;
  if (x.32 >= 0) goto <D.6472>; else goto <D.6473>;
  <D.6472>:
  k = k + 1;
  D.6474 = x & 1073741824;
  if (D.6474 == 0) goto <D.6475>; else goto <D.6476>;
  <D.6475>:
  D.6477 = 32;
  return D.6477;
  <D.6476>:
  <D.6473>:
  D.6477 = k;
  return D.6477;
}


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

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


mult (struct Bigint * a, struct Bigint * b)
{
  int D.6482;
  int D.6483;
  int D.6486;
  unsigned int wc.34;
  unsigned int D.6490;
  unsigned int wa.35;
  unsigned int D.6492;
  unsigned int wb.36;
  unsigned int D.6494;
  guint32 * xb.37;
  guint32 * x.38;
  unsigned int D.6499;
  long long unsigned int D.6500;
  long long unsigned int D.6501;
  long long unsigned int D.6502;
  unsigned int D.6503;
  long long unsigned int D.6504;
  long long unsigned int D.6505;
  guint32 * xc.39;
  unsigned int D.6507;
  unsigned int D.6508;
  struct Bigint * D.6510;
  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.6482 = a->wds;
  D.6483 = b->wds;
  if (D.6482 < D.6483) goto <D.6484>; else goto <D.6485>;
  <D.6484>:
  c = a;
  a = b;
  b = c;
  <D.6485>:
  k = a->k;
  wa = a->wds;
  wb = b->wds;
  wc = wa + wb;
  D.6486 = a->maxwds;
  if (D.6486 < wc) goto <D.6487>; else goto <D.6488>;
  <D.6487>:
  k = k + 1;
  <D.6488>:
  c = Balloc (k);
  x = &c->x;
  wc.34 = (unsigned int) wc;
  D.6490 = wc.34 * 4;
  xa = x + D.6490;
  goto <D.5777>;
  <D.5776>:
  *x = 0;
  x = x + 4;
  <D.5777>:
  if (x < xa) goto <D.5776>; else goto <D.5778>;
  <D.5778>:
  xa = &a->x;
  wa.35 = (unsigned int) wa;
  D.6492 = wa.35 * 4;
  xae = xa + D.6492;
  xb = &b->x;
  wb.36 = (unsigned int) wb;
  D.6494 = wb.36 * 4;
  xbe = xb + D.6494;
  xc0 = &c->x;
  goto <D.5782>;
  <D.5781>:
  xb.37 = xb;
  xb = xb.37 + 4;
  y = *xb.37;
  if (y != 0) goto <D.6496>; else goto <D.6497>;
  <D.6496>:
  x = xa;
  xc = xc0;
  carry = 0;
  <D.5779>:
  x.38 = x;
  x = x.38 + 4;
  D.6499 = *x.38;
  D.6500 = (long long unsigned int) D.6499;
  D.6501 = (long long unsigned int) y;
  D.6502 = D.6500 * D.6501;
  D.6503 = *xc;
  D.6504 = (long long unsigned int) D.6503;
  D.6505 = D.6502 + D.6504;
  z = D.6505 + carry;
  carry = z >> 32;
  xc.39 = xc;
  xc = xc.39 + 4;
  D.6507 = (unsigned int) z;
  *xc.39 = D.6507;
  if (x < xae) goto <D.5779>; else goto <D.5780>;
  <D.5780>:
  D.6508 = (unsigned int) carry;
  *xc = D.6508;
  <D.6497>:
  xc0 = xc0 + 4;
  <D.5782>:
  if (xb < xbe) goto <D.5781>; else goto <D.5783>;
  <D.5783>:
  xc0 = &c->x;
  wc.34 = (unsigned int) wc;
  D.6490 = wc.34 * 4;
  xc = xc0 + D.6490;
  goto <D.5785>;
  <D.5784>:
  wc = wc + -1;
  <D.5785>:
  if (wc > 0) goto <D.6509>; else goto <D.5786>;
  <D.6509>:
  xc = xc + 4294967292;
  D.6503 = *xc;
  if (D.6503 == 0) goto <D.5784>; else goto <D.5786>;
  <D.5786>:
  c->wds = wc;
  D.6510 = c;
  return D.6510;
}


pow5mult (struct Bigint * b, int k)
{
  int D.6514;
  int D.6515;
  struct Bigint * D.6518;
  struct Bigint * p5s.40;
  int D.6524;
  struct Bigint * D.6532;
  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.6512>; else goto <D.6513>;
  <D.6512>:
  D.6514 = i + -1;
  D.6515 = p05[D.6514];
  b = multadd (b, D.6515, 0);
  <D.6513>:
  k = k >> 2;
  if (k == 0) goto <D.6516>; else goto <D.6517>;
  <D.6516>:
  D.6518 = b;
  return D.6518;
  <D.6517>:
  p5 = p5s;
  if (p5 == 0B) goto <D.6519>; else goto <D.6520>;
  <D.6519>:
  p5 = p5s;
  if (p5 == 0B) goto <D.6521>; else goto <D.6522>;
  <D.6521>:
  p5s.40 = i2b (625);
  p5s = p5s.40;
  p5 = p5s;
  p5->next = 0B;
  <D.6522>:
  <D.6520>:
  <D.5798>:
  D.6524 = k & 1;
  if (D.6524 != 0) goto <D.6525>; else goto <D.6526>;
  <D.6525>:
  b1 = mult (b, p5);
  Bfree (b);
  b = b1;
  <D.6526>:
  k = k >> 1;
  if (k == 0) goto <D.5797>; else goto <D.6527>;
  <D.6527>:
  p51 = p5->next;
  if (p51 == 0B) goto <D.6528>; else goto <D.6529>;
  <D.6528>:
  p51 = p5->next;
  if (p51 == 0B) goto <D.6530>; else goto <D.6531>;
  <D.6530>:
  D.6532 = mult (p5, p5);
  p5->next = D.6532;
  p51 = p5->next;
  p51->next = 0B;
  <D.6531>:
  <D.6529>:
  p5 = p51;
  goto <D.5798>;
  <D.5797>:
  D.6518 = b;
  return D.6518;
}


diff (struct Bigint * a, struct Bigint * b)
{
  struct Bigint * D.6536;
  int D.6540;
  unsigned int wa.41;
  unsigned int D.6542;
  unsigned int wb.42;
  unsigned int D.6544;
  guint32 * xa.43;
  unsigned int D.6546;
  long long unsigned int D.6547;
  guint32 * xb.44;
  unsigned int D.6549;
  long long unsigned int D.6550;
  long long unsigned int D.6551;
  long long unsigned int D.6552;
  guint32 * xc.45;
  unsigned int D.6554;
  guint32 * xa.46;
  unsigned int D.6556;
  long long unsigned int D.6557;
  guint32 * xc.47;
  unsigned int D.6559;
  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.6534>; else goto <D.6535>;
  <D.6534>:
  c = Balloc (0);
  c->wds = 1;
  c->x[0] = 0;
  D.6536 = c;
  return D.6536;
  <D.6535>:
  if (i < 0) goto <D.6537>; else goto <D.6538>;
  <D.6537>:
  c = a;
  a = b;
  b = c;
  i = 1;
  goto <D.6539>;
  <D.6538>:
  i = 0;
  <D.6539>:
  D.6540 = a->k;
  c = Balloc (D.6540);
  c->sign = i;
  wa = a->wds;
  xa = &a->x;
  wa.41 = (unsigned int) wa;
  D.6542 = wa.41 * 4;
  xae = xa + D.6542;
  wb = b->wds;
  xb = &b->x;
  wb.42 = (unsigned int) wb;
  D.6544 = wb.42 * 4;
  xbe = xb + D.6544;
  xc = &c->x;
  borrow = 0;
  <D.5849>:
  xa.43 = xa;
  xa = xa.43 + 4;
  D.6546 = *xa.43;
  D.6547 = (long long unsigned int) D.6546;
  xb.44 = xb;
  xb = xb.44 + 4;
  D.6549 = *xb.44;
  D.6550 = (long long unsigned int) D.6549;
  D.6551 = D.6547 - D.6550;
  y = D.6551 - borrow;
  D.6552 = y >> 32;
  borrow = D.6552 & 1;
  xc.45 = xc;
  xc = xc.45 + 4;
  D.6554 = (unsigned int) y;
  *xc.45 = D.6554;
  if (xb < xbe) goto <D.5849>; else goto <D.5850>;
  <D.5850>:
  goto <D.5852>;
  <D.5851>:
  xa.46 = xa;
  xa = xa.46 + 4;
  D.6556 = *xa.46;
  D.6557 = (long long unsigned int) D.6556;
  y = D.6557 - borrow;
  D.6552 = y >> 32;
  borrow = D.6552 & 1;
  xc.47 = xc;
  xc = xc.47 + 4;
  D.6554 = (unsigned int) y;
  *xc.47 = D.6554;
  <D.5852>:
  if (xa < xae) goto <D.5851>; else goto <D.5853>;
  <D.5853>:
  goto <D.5855>;
  <D.5854>:
  wa = wa + -1;
  <D.5855>:
  xc = xc + 4294967292;
  D.6559 = *xc;
  if (D.6559 == 0) goto <D.5854>; else goto <D.5856>;
  <D.5856>:
  c->wds = wa;
  D.6536 = c;
  return D.6536;
}


lshift (struct Bigint * b, int k)
{
  int D.6561;
  int D.6562;
  guint32 * x1.48;
  unsigned int D.6564;
  unsigned int D.6565;
  guint32 * x1.49;
  unsigned int D.6569;
  unsigned int D.6570;
  unsigned int D.6571;
  guint32 * x.50;
  unsigned int D.6573;
  unsigned int D.6574;
  guint32 * x1.51;
  guint32 * x.52;
  unsigned int D.6580;
  int D.6581;
  struct Bigint * D.6582;
  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.6561 = b->wds;
  D.6562 = D.6561 + n;
  n1 = D.6562 + 1;
  i = b->maxwds;
  goto <D.5813>;
  <D.5812>:
  k1 = k1 + 1;
  i = i << 1;
  <D.5813>:
  if (n1 > i) goto <D.5812>; else goto <D.5814>;
  <D.5814>:
  b1 = Balloc (k1);
  x1 = &b1->x;
  i = 0;
  goto <D.5816>;
  <D.5815>:
  x1.48 = x1;
  x1 = x1.48 + 4;
  *x1.48 = 0;
  i = i + 1;
  <D.5816>:
  if (i < n) goto <D.5815>; else goto <D.5817>;
  <D.5817>:
  x = &b->x;
  D.6561 = b->wds;
  D.6564 = (unsigned int) D.6561;
  D.6565 = D.6564 * 4;
  xe = x + D.6565;
  k = k & 31;
  if (k != 0) goto <D.6566>; else goto <D.6567>;
  <D.6566>:
  k1 = 32 - k;
  z = 0;
  <D.5818>:
  x1.49 = x1;
  x1 = x1.49 + 4;
  D.6569 = *x;
  D.6570 = D.6569 << k;
  D.6571 = D.6570 | z;
  *x1.49 = D.6571;
  x.50 = x;
  x = x.50 + 4;
  D.6573 = *x.50;
  z = D.6573 >> k1;
  if (x < xe) goto <D.5818>; else goto <D.5819>;
  <D.5819>:
  *x1 = z;
  D.6574 = *x1;
  if (D.6574 != 0) goto <D.6575>; else goto <D.6576>;
  <D.6575>:
  n1 = n1 + 1;
  <D.6576>:
  goto <D.6577>;
  <D.6567>:
  <D.5820>:
  x1.51 = x1;
  x1 = x1.51 + 4;
  x.52 = x;
  x = x.52 + 4;
  D.6580 = *x.52;
  *x1.51 = D.6580;
  if (x < xe) goto <D.5820>; else goto <D.5821>;
  <D.5821>:
  <D.6577>:
  D.6581 = n1 + -1;
  b1->wds = D.6581;
  Bfree (b);
  D.6582 = b1;
  return D.6582;
}


cmp (struct Bigint * a, struct Bigint * b)
{
  int D.6586;
  unsigned int j.53;
  unsigned int D.6588;
  unsigned int D.6589;
  unsigned int D.6590;
  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.6584>; else goto <D.6585>;
  <D.6584>:
  D.6586 = i;
  return D.6586;
  <D.6585>:
  xa0 = &a->x;
  j.53 = (unsigned int) j;
  D.6588 = j.53 * 4;
  xa = xa0 + D.6588;
  xb0 = &b->x;
  j.53 = (unsigned int) j;
  D.6588 = j.53 * 4;
  xb = xb0 + D.6588;
  <D.5833>:
  xa = xa + 4294967292;
  D.6589 = *xa;
  xb = xb + 4294967292;
  D.6590 = *xb;
  if (D.6589 != D.6590) goto <D.6591>; else goto <D.6592>;
  <D.6591>:
  D.6589 = *xa;
  D.6590 = *xb;
  if (D.6589 < D.6590) goto <D.6594>; else goto <D.6595>;
  <D.6594>:
  iftmp.54 = -1;
  goto <D.6596>;
  <D.6595>:
  iftmp.54 = 1;
  <D.6596>:
  D.6586 = iftmp.54;
  return D.6586;
  <D.6592>:
  if (xa <= xa0) goto <D.5832>; else goto <D.6597>;
  <D.6597>:
  goto <D.5833>;
  <D.5832>:
  D.6586 = 0;
  return D.6586;
}


ratio (struct Bigint * a, struct Bigint * b)
{
  double * da.55;
  double D.6600;
  double * db.56;
  double D.6602;
  int ka.57;
  int kb.58;
  int D.6605;
  int D.6606;
  int D.6607;
  int D.6608;
  int D.6609;
  unsigned int D.6612;
  int D.6613;
  unsigned int D.6614;
  unsigned int D.6615;
  unsigned int D.6617;
  unsigned int D.6618;
  double D.6619;
  double D.6620;
  double D.6621;
  double da;
  double db;
  int k;
  int ka;
  int kb;

  try
    {
      da.55 = &da;
      D.6600 = b2d (a, &ka);
      MEM[(union U *)da.55].d = D.6600;
      db.56 = &db;
      D.6602 = b2d (b, &kb);
      MEM[(union U *)db.56].d = D.6602;
      ka.57 = ka;
      kb.58 = kb;
      D.6605 = ka.57 - kb.58;
      D.6606 = a->wds;
      D.6607 = b->wds;
      D.6608 = D.6606 - D.6607;
      D.6609 = D.6608 * 32;
      k = D.6605 + D.6609;
      if (k > 0) goto <D.6610>; else goto <D.6611>;
      <D.6610>:
      da.55 = &da;
      da.55 = &da;
      D.6612 = MEM[(union U *)da.55].L[1];
      D.6613 = k * 1048576;
      D.6614 = (unsigned int) D.6613;
      D.6615 = D.6612 + D.6614;
      MEM[(union U *)da.55].L[1] = D.6615;
      goto <D.6616>;
      <D.6611>:
      k = -k;
      db.56 = &db;
      db.56 = &db;
      D.6617 = MEM[(union U *)db.56].L[1];
      D.6613 = k * 1048576;
      D.6614 = (unsigned int) D.6613;
      D.6618 = D.6617 + D.6614;
      MEM[(union U *)db.56].L[1] = D.6618;
      <D.6616>:
      da.55 = &da;
      D.6620 = MEM[(union U *)da.55].d;
      db.56 = &db;
      D.6621 = MEM[(union U *)db.56].d;
      D.6619 = D.6620 / D.6621;
      return D.6619;
    }
  finally
    {
      da = {CLOBBER};
      db = {CLOBBER};
      ka = {CLOBBER};
      kb = {CLOBBER};
    }
}


b2d (struct Bigint * a, int * e)
{
  int D.6624;
  unsigned int D.6625;
  unsigned int D.6626;
  int D.6627;
  double * d.59;
  int D.6631;
  unsigned int D.6632;
  unsigned int D.6633;
  guint32 iftmp.60;
  int D.6638;
  unsigned int D.6639;
  unsigned int D.6640;
  unsigned int D.6641;
  guint32 iftmp.61;
  unsigned int D.6648;
  unsigned int D.6649;
  unsigned int D.6650;
  unsigned int D.6651;
  guint32 iftmp.62;
  unsigned int D.6656;
  unsigned int D.6657;
  unsigned int D.6658;
  unsigned int D.6660;
  double D.6661;
  guint32 * xa;
  guint32 * xa0;
  guint32 w;
  guint32 y;
  guint32 z;
  int k;
  double d;
  void ret_d = <<< error >>>;

  try
    {
      xa0 = &a->x;
      D.6624 = a->wds;
      D.6625 = (unsigned int) D.6624;
      D.6626 = D.6625 * 4;
      xa = xa0 + D.6626;
      xa = xa + 4294967292;
      y = *xa;
      k = hi0bits (y);
      D.6627 = 32 - k;
      *e = D.6627;
      if (k <= 10) goto <D.6628>; else goto <D.6629>;
      <D.6628>:
      d.59 = &d;
      D.6631 = 11 - k;
      D.6632 = y >> D.6631;
      D.6633 = D.6632 | 1072693248;
      MEM[(union U *)d.59].L[1] = D.6633;
      if (xa > xa0) goto <D.6635>; else goto <D.6636>;
      <D.6635>:
      xa = xa + 4294967292;
      iftmp.60 = *xa;
      goto <D.6637>;
      <D.6636>:
      iftmp.60 = 0;
      <D.6637>:
      w = iftmp.60;
      d.59 = &d;
      D.6638 = k + 21;
      D.6639 = y << D.6638;
      D.6631 = 11 - k;
      D.6640 = w >> D.6631;
      D.6641 = D.6639 | D.6640;
      MEM[(union U *)d.59].L[0] = D.6641;
      goto ret_d;
      <D.6629>:
      if (xa > xa0) goto <D.6643>; else goto <D.6644>;
      <D.6643>:
      xa = xa + 4294967292;
      iftmp.61 = *xa;
      goto <D.6645>;
      <D.6644>:
      iftmp.61 = 0;
      <D.6645>:
      z = iftmp.61;
      k = k + -11;
      if (k != 0) goto <D.6646>; else goto <D.6647>;
      <D.6646>:
      d.59 = &d;
      D.6648 = y << k;
      D.6627 = 32 - k;
      D.6649 = z >> D.6627;
      D.6650 = D.6648 | D.6649;
      D.6651 = D.6650 | 1072693248;
      MEM[(union U *)d.59].L[1] = D.6651;
      if (xa > xa0) goto <D.6653>; else goto <D.6654>;
      <D.6653>:
      xa = xa + 4294967292;
      iftmp.62 = *xa;
      goto <D.6655>;
      <D.6654>:
      iftmp.62 = 0;
      <D.6655>:
      y = iftmp.62;
      d.59 = &d;
      D.6656 = z << k;
      D.6627 = 32 - k;
      D.6657 = y >> D.6627;
      D.6658 = D.6656 | D.6657;
      MEM[(union U *)d.59].L[0] = D.6658;
      goto <D.6659>;
      <D.6647>:
      d.59 = &d;
      D.6660 = y | 1072693248;
      MEM[(union U *)d.59].L[1] = D.6660;
      d.59 = &d;
      MEM[(union U *)d.59].L[0] = z;
      <D.6659>:
      ret_d:
      d.59 = &d;
      D.6661 = MEM[(union U *)d.59].d;
      return D.6661;
    }
  finally
    {
      d = {CLOBBER};
    }
}


ulp (double x)
{
  double * x.63;
  unsigned int D.6665;
  unsigned int D.6666;
  unsigned int D.6667;
  double * a.64;
  unsigned int L.65;
  double D.6670;
  register gint32 L;
  double a;

  try
    {
      x.63 = &x;
      D.6665 = MEM[(union U *)x.63].L[1];
      D.6666 = D.6665 & 2146435072;
      D.6667 = D.6666 + 4240441344;
      L = (gint32) D.6667;
      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.6670 = MEM[(union U *)a.64].d;
      return D.6670;
    }
  finally
    {
      a = {CLOBBER};
    }
}


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


