GC_build_fl1 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.0;
  word * D.6110;
  long unsigned int p.1;
  word * D.6112;
  long unsigned int D.6113;
  word * D.6114;
  long unsigned int D.6115;
  word * D.6116;
  long unsigned int D.6117;
  char * D.6118;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.0 = (long unsigned int) ofl;
  *p = ofl.0;
  D.6110 = p + 8;
  p.1 = (long unsigned int) p;
  *D.6110 = p.1;
  D.6112 = p + 16;
  D.6110 = p + 8;
  D.6113 = (long unsigned int) D.6110;
  *D.6112 = D.6113;
  D.6114 = p + 24;
  D.6112 = p + 16;
  D.6115 = (long unsigned int) D.6112;
  *D.6114 = D.6115;
  p = p + 32;
  goto <D.6037>;
  <D.6036>:
  D.6116 = p + 18446744073709551608;
  D.6117 = (long unsigned int) D.6116;
  *p = D.6117;
  D.6110 = p + 8;
  p.1 = (long unsigned int) p;
  *D.6110 = p.1;
  D.6112 = p + 16;
  D.6110 = p + 8;
  D.6113 = (long unsigned int) D.6110;
  *D.6112 = D.6113;
  D.6114 = p + 24;
  D.6112 = p + 16;
  D.6115 = (long unsigned int) D.6112;
  *D.6114 = D.6115;
  p = p + 32;
  <D.6037>:
  if (p < lim) goto <D.6036>; else goto <D.6038>;
  <D.6038>:
  D.6118 = p + 18446744073709551608;
  return D.6118;
}


GC_build_fl_clear2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.2;
  word * D.6121;
  word * D.6122;
  long unsigned int p.3;
  word * D.6124;
  word * D.6125;
  long unsigned int D.6126;
  char * D.6127;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.2 = (long unsigned int) ofl;
  *p = ofl.2;
  D.6121 = p + 8;
  *D.6121 = 0;
  D.6122 = p + 16;
  p.3 = (long unsigned int) p;
  *D.6122 = p.3;
  D.6124 = p + 24;
  *D.6124 = 0;
  p = p + 32;
  goto <D.6046>;
  <D.6045>:
  D.6125 = p + 18446744073709551600;
  D.6126 = (long unsigned int) D.6125;
  *p = D.6126;
  D.6121 = p + 8;
  *D.6121 = 0;
  D.6122 = p + 16;
  p.3 = (long unsigned int) p;
  *D.6122 = p.3;
  D.6124 = p + 24;
  *D.6124 = 0;
  p = p + 32;
  <D.6046>:
  if (p < lim) goto <D.6045>; else goto <D.6047>;
  <D.6047>:
  D.6127 = p + 18446744073709551600;
  return D.6127;
}


GC_build_fl_clear3 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.4;
  word * D.6130;
  word * D.6131;
  word * D.6132;
  long unsigned int D.6133;
  char * D.6134;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4080;
  ofl.4 = (long unsigned int) ofl;
  *p = ofl.4;
  D.6130 = p + 8;
  *D.6130 = 0;
  D.6131 = p + 16;
  *D.6131 = 0;
  p = p + 24;
  goto <D.6055>;
  <D.6054>:
  D.6132 = p + 18446744073709551592;
  D.6133 = (long unsigned int) D.6132;
  *p = D.6133;
  D.6130 = p + 8;
  *D.6130 = 0;
  D.6131 = p + 16;
  *D.6131 = 0;
  p = p + 24;
  <D.6055>:
  if (p < lim) goto <D.6054>; else goto <D.6056>;
  <D.6056>:
  D.6134 = p + 18446744073709551592;
  return D.6134;
}


GC_build_fl_clear4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.5;
  word * D.6137;
  word * D.6138;
  word * D.6139;
  word * D.6140;
  long unsigned int D.6141;
  char * D.6142;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.5 = (long unsigned int) ofl;
  *p = ofl.5;
  D.6137 = p + 8;
  *D.6137 = 0;
  D.6138 = p + 16;
  *D.6138 = 0;
  D.6139 = p + 24;
  *D.6139 = 0;
  p = p + 32;
  goto <D.6064>;
  <D.6063>:
  D.6140 = p + 18446744073709551584;
  D.6141 = (long unsigned int) D.6140;
  *p = D.6141;
  D.6137 = p + 8;
  *D.6137 = 0;
  D.6138 = p + 16;
  *D.6138 = 0;
  D.6139 = p + 24;
  *D.6139 = 0;
  p = p + 32;
  <D.6064>:
  if (p < lim) goto <D.6063>; else goto <D.6065>;
  <D.6065>:
  D.6142 = p + 18446744073709551584;
  return D.6142;
}


GC_build_fl2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.6;
  word * D.6145;
  long unsigned int p.7;
  word * D.6147;
  long unsigned int D.6148;
  char * D.6149;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.6 = (long unsigned int) ofl;
  *p = ofl.6;
  D.6145 = p + 16;
  p.7 = (long unsigned int) p;
  *D.6145 = p.7;
  p = p + 32;
  goto <D.6073>;
  <D.6072>:
  D.6147 = p + 18446744073709551600;
  D.6148 = (long unsigned int) D.6147;
  *p = D.6148;
  D.6145 = p + 16;
  p.7 = (long unsigned int) p;
  *D.6145 = p.7;
  p = p + 32;
  <D.6073>:
  if (p < lim) goto <D.6072>; else goto <D.6074>;
  <D.6074>:
  D.6149 = p + 18446744073709551600;
  return D.6149;
}


GC_build_fl4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.8;
  word * D.6152;
  long unsigned int p.9;
  word * D.6154;
  long unsigned int D.6155;
  char * D.6156;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.8 = (long unsigned int) ofl;
  *p = ofl.8;
  D.6152 = p + 32;
  p.9 = (long unsigned int) p;
  *D.6152 = p.9;
  p = p + 64;
  goto <D.6082>;
  <D.6081>:
  D.6154 = p + 18446744073709551584;
  D.6155 = (long unsigned int) D.6154;
  *p = D.6155;
  D.6152 = p + 32;
  p.9 = (long unsigned int) p;
  *D.6152 = p.9;
  p = p + 64;
  <D.6082>:
  if (p < lim) goto <D.6081>; else goto <D.6083>;
  <D.6083>:
  D.6156 = p + 18446744073709551584;
  return D.6156;
}


GC_build_fl (struct hblk * h, word sz, GC_bool clear, char * list)
{
  char * D.6158;
  long unsigned int D.6166;
  sizetype D.6167;
  word[512] * D.6168;
  word * p;
  word * prev;
  word * last_object;

  switch (sz) <default: <D.6098>, case 1: <D.6093>, case 2: <D.6094>, case 3: <D.6095>, case 4: <D.6097>>
  <D.6093>:
  D.6158 = GC_build_fl1 (h, list);
  return D.6158;
  <D.6094>:
  if (clear != 0) goto <D.6159>; else goto <D.6160>;
  <D.6159>:
  D.6158 = GC_build_fl_clear2 (h, list);
  return D.6158;
  <D.6160>:
  D.6158 = GC_build_fl2 (h, list);
  return D.6158;
  <D.6095>:
  if (clear != 0) goto <D.6161>; else goto <D.6096>;
  <D.6161>:
  D.6158 = GC_build_fl_clear3 (h, list);
  return D.6158;
  <D.6097>:
  if (clear != 0) goto <D.6162>; else goto <D.6163>;
  <D.6162>:
  D.6158 = GC_build_fl_clear4 (h, list);
  return D.6158;
  <D.6163>:
  D.6158 = GC_build_fl4 (h, list);
  return D.6158;
  <D.6098>:
  goto <D.6096>;
  <D.6096>:
  if (clear != 0) goto <D.6164>; else goto <D.6165>;
  <D.6164>:
  memset (h, 0, 4096);
  <D.6165>:
  p = &h->hb_body[sz];
  prev = &h->hb_body[0];
  last_object = h + 4096;
  D.6166 = sz * 8;
  D.6167 = -D.6166;
  last_object = last_object + D.6167;
  goto <D.6100>;
  <D.6099>:
  MEM[(char * *)p] = prev;
  prev = p;
  D.6166 = sz * 8;
  p = p + D.6166;
  <D.6100>:
  if (p <= last_object) goto <D.6099>; else goto <D.6101>;
  <D.6101>:
  D.6166 = sz * 8;
  D.6167 = -D.6166;
  p = p + D.6167;
  D.6168 = &h->hb_body;
  MEM[(char * *)D.6168] = list;
  D.6158 = p;
  return D.6158;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.6173;
  int D.6178;
  void * D.6180;
  long unsigned int D.6181;

  D.6173 = __builtin_constant_p (__len);
  if (D.6173 != 0) goto <D.6174>; else goto <D.6175>;
  <D.6174>:
  if (__len == 0) goto <D.6176>; else goto <D.6177>;
  <D.6176>:
  D.6178 = __builtin_constant_p (__ch);
  if (D.6178 == 0) goto <D.6171>; else goto <D.6179>;
  <D.6179>:
  if (__ch != 0) goto <D.6171>; else goto <D.6172>;
  <D.6171>:
  __warn_memset_zero_len ();
  D.6180 = __dest;
  return D.6180;
  <D.6172>:
  <D.6177>:
  <D.6175>:
  D.6181 = __builtin_object_size (__dest, 0);
  D.6180 = __builtin___memset_chk (__dest, __ch, __len, D.6181);
  return D.6180;
}


GC_new_hblk (word sz, int kind)
{
  int GC_debugging_started.10;
  int D.6188;
  struct hdr * D.6191;
  char * * D.6192;
  long unsigned int D.6193;
  char * * D.6194;
  char * D.6195;
  char * D.6196;
  register struct hblk * h;
  register GC_bool clear;

  clear = GC_obj_kinds[kind].ok_init;
  GC_debugging_started.10 = GC_debugging_started;
  if (GC_debugging_started.10 != 0) goto <D.6184>; else goto <D.6185>;
  <D.6184>:
  clear = 1;
  <D.6185>:
  h = GC_allochblk (sz, kind, 0);
  if (h == 0B) goto <D.6186>; else goto <D.6187>;
  <D.6186>:
  return;
  <D.6187>:
  D.6188 = kind & -2;
  if (D.6188 == 2) goto <D.6189>; else goto <D.6190>;
  <D.6189>:
  D.6191 = GC_find_header (h);
  GC_set_hdr_marks (D.6191);
  <D.6190>:
  D.6192 = GC_obj_kinds[kind].ok_freelist;
  D.6193 = sz * 8;
  D.6194 = D.6192 + D.6193;
  D.6192 = GC_obj_kinds[kind].ok_freelist;
  D.6193 = sz * 8;
  D.6194 = D.6192 + D.6193;
  D.6195 = *D.6194;
  D.6196 = GC_build_fl (h, sz, clear, D.6195);
  *D.6194 = D.6196;
}


