GC_build_fl1 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.0;
  word * D.5699;
  long unsigned int p.1;
  word * D.5701;
  long unsigned int D.5702;
  word * D.5703;
  long unsigned int D.5704;
  word * D.5705;
  long unsigned int D.5706;
  char * D.5707;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.0 = (long unsigned int) ofl;
  *p = ofl.0;
  D.5699 = p + 8;
  p.1 = (long unsigned int) p;
  *D.5699 = p.1;
  D.5701 = p + 16;
  D.5699 = p + 8;
  D.5702 = (long unsigned int) D.5699;
  *D.5701 = D.5702;
  D.5703 = p + 24;
  D.5701 = p + 16;
  D.5704 = (long unsigned int) D.5701;
  *D.5703 = D.5704;
  p = p + 32;
  goto <D.5626>;
  <D.5625>:
  D.5705 = p + 18446744073709551608;
  D.5706 = (long unsigned int) D.5705;
  *p = D.5706;
  D.5699 = p + 8;
  p.1 = (long unsigned int) p;
  *D.5699 = p.1;
  D.5701 = p + 16;
  D.5699 = p + 8;
  D.5702 = (long unsigned int) D.5699;
  *D.5701 = D.5702;
  D.5703 = p + 24;
  D.5701 = p + 16;
  D.5704 = (long unsigned int) D.5701;
  *D.5703 = D.5704;
  p = p + 32;
  <D.5626>:
  if (p < lim) goto <D.5625>; else goto <D.5627>;
  <D.5627>:
  D.5707 = p + 18446744073709551608;
  return D.5707;
}


GC_build_fl_clear2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.2;
  word * D.5710;
  word * D.5711;
  long unsigned int p.3;
  word * D.5713;
  word * D.5714;
  long unsigned int D.5715;
  char * D.5716;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.2 = (long unsigned int) ofl;
  *p = ofl.2;
  D.5710 = p + 8;
  *D.5710 = 0;
  D.5711 = p + 16;
  p.3 = (long unsigned int) p;
  *D.5711 = p.3;
  D.5713 = p + 24;
  *D.5713 = 0;
  p = p + 32;
  goto <D.5635>;
  <D.5634>:
  D.5714 = p + 18446744073709551600;
  D.5715 = (long unsigned int) D.5714;
  *p = D.5715;
  D.5710 = p + 8;
  *D.5710 = 0;
  D.5711 = p + 16;
  p.3 = (long unsigned int) p;
  *D.5711 = p.3;
  D.5713 = p + 24;
  *D.5713 = 0;
  p = p + 32;
  <D.5635>:
  if (p < lim) goto <D.5634>; else goto <D.5636>;
  <D.5636>:
  D.5716 = p + 18446744073709551600;
  return D.5716;
}


GC_build_fl_clear3 (struct hblk * h, char * ofl)
{
  struct hblk * D.5718;
  long unsigned int ofl.4;
  word * D.5720;
  word * D.5721;
  word * D.5722;
  long unsigned int D.5723;
  char * D.5724;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  D.5718 = h + 4096;
  lim = D.5718 + 18446744073709551600;
  ofl.4 = (long unsigned int) ofl;
  *p = ofl.4;
  D.5720 = p + 8;
  *D.5720 = 0;
  D.5721 = p + 16;
  *D.5721 = 0;
  p = p + 24;
  goto <D.5644>;
  <D.5643>:
  D.5722 = p + 18446744073709551592;
  D.5723 = (long unsigned int) D.5722;
  *p = D.5723;
  D.5720 = p + 8;
  *D.5720 = 0;
  D.5721 = p + 16;
  *D.5721 = 0;
  p = p + 24;
  <D.5644>:
  if (p < lim) goto <D.5643>; else goto <D.5645>;
  <D.5645>:
  D.5724 = p + 18446744073709551592;
  return D.5724;
}


GC_build_fl_clear4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.5;
  word * D.5727;
  word * D.5728;
  word * D.5729;
  word * D.5730;
  long unsigned int D.5731;
  char * D.5732;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.5 = (long unsigned int) ofl;
  *p = ofl.5;
  D.5727 = p + 8;
  *D.5727 = 0;
  D.5728 = p + 16;
  *D.5728 = 0;
  D.5729 = p + 24;
  *D.5729 = 0;
  p = p + 32;
  goto <D.5653>;
  <D.5652>:
  D.5730 = p + 18446744073709551584;
  D.5731 = (long unsigned int) D.5730;
  *p = D.5731;
  D.5727 = p + 8;
  *D.5727 = 0;
  D.5728 = p + 16;
  *D.5728 = 0;
  D.5729 = p + 24;
  *D.5729 = 0;
  p = p + 32;
  <D.5653>:
  if (p < lim) goto <D.5652>; else goto <D.5654>;
  <D.5654>:
  D.5732 = p + 18446744073709551584;
  return D.5732;
}


GC_build_fl2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.6;
  word * D.5735;
  long unsigned int p.7;
  word * D.5737;
  long unsigned int D.5738;
  char * D.5739;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.6 = (long unsigned int) ofl;
  *p = ofl.6;
  D.5735 = p + 16;
  p.7 = (long unsigned int) p;
  *D.5735 = p.7;
  p = p + 32;
  goto <D.5662>;
  <D.5661>:
  D.5737 = p + 18446744073709551600;
  D.5738 = (long unsigned int) D.5737;
  *p = D.5738;
  D.5735 = p + 16;
  p.7 = (long unsigned int) p;
  *D.5735 = p.7;
  p = p + 32;
  <D.5662>:
  if (p < lim) goto <D.5661>; else goto <D.5663>;
  <D.5663>:
  D.5739 = p + 18446744073709551600;
  return D.5739;
}


GC_build_fl4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.8;
  word * D.5742;
  long unsigned int p.9;
  word * D.5744;
  long unsigned int D.5745;
  char * D.5746;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.8 = (long unsigned int) ofl;
  *p = ofl.8;
  D.5742 = p + 32;
  p.9 = (long unsigned int) p;
  *D.5742 = p.9;
  p = p + 64;
  goto <D.5671>;
  <D.5670>:
  D.5744 = p + 18446744073709551584;
  D.5745 = (long unsigned int) D.5744;
  *p = D.5745;
  D.5742 = p + 32;
  p.9 = (long unsigned int) p;
  *D.5742 = p.9;
  p = p + 64;
  <D.5671>:
  if (p < lim) goto <D.5670>; else goto <D.5672>;
  <D.5672>:
  D.5746 = p + 18446744073709551584;
  return D.5746;
}


GC_build_fl (struct hblk * h, word sz, GC_bool clear, char * list)
{
  char * D.5748;
  long unsigned int D.5756;
  sizetype D.5757;
  word[512] * D.5758;
  word * p;
  word * prev;
  word * last_object;

  switch (sz) <default: <D.5687>, case 1: <D.5682>, case 2: <D.5683>, case 3: <D.5684>, case 4: <D.5686>>
  <D.5682>:
  D.5748 = GC_build_fl1 (h, list);
  return D.5748;
  <D.5683>:
  if (clear != 0) goto <D.5749>; else goto <D.5750>;
  <D.5749>:
  D.5748 = GC_build_fl_clear2 (h, list);
  return D.5748;
  <D.5750>:
  D.5748 = GC_build_fl2 (h, list);
  return D.5748;
  <D.5684>:
  if (clear != 0) goto <D.5751>; else goto <D.5685>;
  <D.5751>:
  D.5748 = GC_build_fl_clear3 (h, list);
  return D.5748;
  <D.5686>:
  if (clear != 0) goto <D.5752>; else goto <D.5753>;
  <D.5752>:
  D.5748 = GC_build_fl_clear4 (h, list);
  return D.5748;
  <D.5753>:
  D.5748 = GC_build_fl4 (h, list);
  return D.5748;
  <D.5687>:
  goto <D.5685>;
  <D.5685>:
  if (clear != 0) goto <D.5754>; else goto <D.5755>;
  <D.5754>:
  memset (h, 0, 4096);
  <D.5755>:
  p = &h->hb_body[sz];
  prev = &h->hb_body[0];
  last_object = h + 4096;
  D.5756 = sz * 8;
  D.5757 = -D.5756;
  last_object = last_object + D.5757;
  goto <D.5689>;
  <D.5688>:
  MEM[(char * *)p] = prev;
  prev = p;
  D.5756 = sz * 8;
  p = p + D.5756;
  <D.5689>:
  if (p <= last_object) goto <D.5688>; else goto <D.5690>;
  <D.5690>:
  D.5756 = sz * 8;
  D.5757 = -D.5756;
  p = p + D.5757;
  D.5758 = &h->hb_body;
  MEM[(char * *)D.5758] = list;
  D.5748 = p;
  return D.5748;
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__, __nothrow__, __leaf__))
memset (void * __dest, int __ch, size_t __len)
{
  void * D.5761;
  long unsigned int D.5762;

  D.5762 = __builtin_object_size (__dest, 0);
  D.5761 = __builtin___memset_chk (__dest, __ch, __len, D.5762);
  return D.5761;
}


GC_new_hblk (word sz, int kind)
{
  int GC_debugging_started.10;
  int D.5769;
  struct hdr * D.5772;
  char * * D.5773;
  long unsigned int D.5774;
  char * * D.5775;
  char * D.5776;
  char * D.5777;
  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.5765>; else goto <D.5766>;
  <D.5765>:
  clear = 1;
  <D.5766>:
  h = GC_allochblk (sz, kind, 0);
  if (h == 0B) goto <D.5767>; else goto <D.5768>;
  <D.5767>:
  return;
  <D.5768>:
  D.5769 = kind & -2;
  if (D.5769 == 2) goto <D.5770>; else goto <D.5771>;
  <D.5770>:
  D.5772 = GC_find_header (h);
  GC_set_hdr_marks (D.5772);
  <D.5771>:
  D.5773 = GC_obj_kinds[kind].ok_freelist;
  D.5774 = sz * 8;
  D.5775 = D.5773 + D.5774;
  D.5773 = GC_obj_kinds[kind].ok_freelist;
  D.5774 = sz * 8;
  D.5775 = D.5773 + D.5774;
  D.5776 = *D.5775;
  D.5777 = GC_build_fl (h, sz, clear, D.5776);
  *D.5775 = D.5777;
}


