GC_build_fl1 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.0;
  word * D.5617;
  long unsigned int p.1;
  word * D.5619;
  long unsigned int D.5620;
  word * D.5621;
  long unsigned int D.5622;
  word * D.5623;
  long unsigned int D.5624;
  char * D.5625;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.0 = (long unsigned int) ofl;
  *p = ofl.0;
  D.5617 = p + 8;
  p.1 = (long unsigned int) p;
  *D.5617 = p.1;
  D.5619 = p + 16;
  D.5617 = p + 8;
  D.5620 = (long unsigned int) D.5617;
  *D.5619 = D.5620;
  D.5621 = p + 24;
  D.5619 = p + 16;
  D.5622 = (long unsigned int) D.5619;
  *D.5621 = D.5622;
  p = p + 32;
  goto <D.5544>;
  <D.5543>:
  D.5623 = p + 18446744073709551608;
  D.5624 = (long unsigned int) D.5623;
  *p = D.5624;
  D.5617 = p + 8;
  p.1 = (long unsigned int) p;
  *D.5617 = p.1;
  D.5619 = p + 16;
  D.5617 = p + 8;
  D.5620 = (long unsigned int) D.5617;
  *D.5619 = D.5620;
  D.5621 = p + 24;
  D.5619 = p + 16;
  D.5622 = (long unsigned int) D.5619;
  *D.5621 = D.5622;
  p = p + 32;
  <D.5544>:
  if (p < lim) goto <D.5543>; else goto <D.5545>;
  <D.5545>:
  D.5625 = p + 18446744073709551608;
  return D.5625;
}


GC_build_fl_clear2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.2;
  word * D.5628;
  word * D.5629;
  long unsigned int p.3;
  word * D.5631;
  word * D.5632;
  long unsigned int D.5633;
  char * D.5634;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.2 = (long unsigned int) ofl;
  *p = ofl.2;
  D.5628 = p + 8;
  *D.5628 = 0;
  D.5629 = p + 16;
  p.3 = (long unsigned int) p;
  *D.5629 = p.3;
  D.5631 = p + 24;
  *D.5631 = 0;
  p = p + 32;
  goto <D.5553>;
  <D.5552>:
  D.5632 = p + 18446744073709551600;
  D.5633 = (long unsigned int) D.5632;
  *p = D.5633;
  D.5628 = p + 8;
  *D.5628 = 0;
  D.5629 = p + 16;
  p.3 = (long unsigned int) p;
  *D.5629 = p.3;
  D.5631 = p + 24;
  *D.5631 = 0;
  p = p + 32;
  <D.5553>:
  if (p < lim) goto <D.5552>; else goto <D.5554>;
  <D.5554>:
  D.5634 = p + 18446744073709551600;
  return D.5634;
}


GC_build_fl_clear3 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.4;
  word * D.5637;
  word * D.5638;
  word * D.5639;
  long unsigned int D.5640;
  char * D.5641;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4080;
  ofl.4 = (long unsigned int) ofl;
  *p = ofl.4;
  D.5637 = p + 8;
  *D.5637 = 0;
  D.5638 = p + 16;
  *D.5638 = 0;
  p = p + 24;
  goto <D.5562>;
  <D.5561>:
  D.5639 = p + 18446744073709551592;
  D.5640 = (long unsigned int) D.5639;
  *p = D.5640;
  D.5637 = p + 8;
  *D.5637 = 0;
  D.5638 = p + 16;
  *D.5638 = 0;
  p = p + 24;
  <D.5562>:
  if (p < lim) goto <D.5561>; else goto <D.5563>;
  <D.5563>:
  D.5641 = p + 18446744073709551592;
  return D.5641;
}


GC_build_fl_clear4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.5;
  word * D.5644;
  word * D.5645;
  word * D.5646;
  word * D.5647;
  long unsigned int D.5648;
  char * D.5649;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.5 = (long unsigned int) ofl;
  *p = ofl.5;
  D.5644 = p + 8;
  *D.5644 = 0;
  D.5645 = p + 16;
  *D.5645 = 0;
  D.5646 = p + 24;
  *D.5646 = 0;
  p = p + 32;
  goto <D.5571>;
  <D.5570>:
  D.5647 = p + 18446744073709551584;
  D.5648 = (long unsigned int) D.5647;
  *p = D.5648;
  D.5644 = p + 8;
  *D.5644 = 0;
  D.5645 = p + 16;
  *D.5645 = 0;
  D.5646 = p + 24;
  *D.5646 = 0;
  p = p + 32;
  <D.5571>:
  if (p < lim) goto <D.5570>; else goto <D.5572>;
  <D.5572>:
  D.5649 = p + 18446744073709551584;
  return D.5649;
}


GC_build_fl2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.6;
  word * D.5652;
  long unsigned int p.7;
  word * D.5654;
  long unsigned int D.5655;
  char * D.5656;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.6 = (long unsigned int) ofl;
  *p = ofl.6;
  D.5652 = p + 16;
  p.7 = (long unsigned int) p;
  *D.5652 = p.7;
  p = p + 32;
  goto <D.5580>;
  <D.5579>:
  D.5654 = p + 18446744073709551600;
  D.5655 = (long unsigned int) D.5654;
  *p = D.5655;
  D.5652 = p + 16;
  p.7 = (long unsigned int) p;
  *D.5652 = p.7;
  p = p + 32;
  <D.5580>:
  if (p < lim) goto <D.5579>; else goto <D.5581>;
  <D.5581>:
  D.5656 = p + 18446744073709551600;
  return D.5656;
}


GC_build_fl4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.8;
  word * D.5659;
  long unsigned int p.9;
  word * D.5661;
  long unsigned int D.5662;
  char * D.5663;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.8 = (long unsigned int) ofl;
  *p = ofl.8;
  D.5659 = p + 32;
  p.9 = (long unsigned int) p;
  *D.5659 = p.9;
  p = p + 64;
  goto <D.5589>;
  <D.5588>:
  D.5661 = p + 18446744073709551584;
  D.5662 = (long unsigned int) D.5661;
  *p = D.5662;
  D.5659 = p + 32;
  p.9 = (long unsigned int) p;
  *D.5659 = p.9;
  p = p + 64;
  <D.5589>:
  if (p < lim) goto <D.5588>; else goto <D.5590>;
  <D.5590>:
  D.5663 = p + 18446744073709551584;
  return D.5663;
}


GC_build_fl (struct hblk * h, word sz, GC_bool clear, char * list)
{
  char * D.5665;
  long unsigned int D.5673;
  sizetype D.5674;
  word[512] * D.5675;
  word * p;
  word * prev;
  word * last_object;

  switch (sz) <default: <D.5605>, case 1: <D.5600>, case 2: <D.5601>, case 3: <D.5602>, case 4: <D.5604>>
  <D.5600>:
  D.5665 = GC_build_fl1 (h, list);
  return D.5665;
  <D.5601>:
  if (clear != 0) goto <D.5666>; else goto <D.5667>;
  <D.5666>:
  D.5665 = GC_build_fl_clear2 (h, list);
  return D.5665;
  <D.5667>:
  D.5665 = GC_build_fl2 (h, list);
  return D.5665;
  <D.5602>:
  if (clear != 0) goto <D.5668>; else goto <D.5603>;
  <D.5668>:
  D.5665 = GC_build_fl_clear3 (h, list);
  return D.5665;
  <D.5604>:
  if (clear != 0) goto <D.5669>; else goto <D.5670>;
  <D.5669>:
  D.5665 = GC_build_fl_clear4 (h, list);
  return D.5665;
  <D.5670>:
  D.5665 = GC_build_fl4 (h, list);
  return D.5665;
  <D.5605>:
  goto <D.5603>;
  <D.5603>:
  if (clear != 0) goto <D.5671>; else goto <D.5672>;
  <D.5671>:
  memset (h, 0, 4096);
  <D.5672>:
  p = &h->hb_body[sz];
  prev = &h->hb_body[0];
  last_object = h + 4096;
  D.5673 = sz * 8;
  D.5674 = -D.5673;
  last_object = last_object + D.5674;
  goto <D.5607>;
  <D.5606>:
  MEM[(char * *)p] = prev;
  prev = p;
  D.5673 = sz * 8;
  p = p + D.5673;
  <D.5607>:
  if (p <= last_object) goto <D.5606>; else goto <D.5608>;
  <D.5608>:
  D.5673 = sz * 8;
  D.5674 = -D.5673;
  p = p + D.5674;
  D.5675 = &h->hb_body;
  MEM[(char * *)D.5675] = list;
  D.5665 = p;
  return D.5665;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.5680;
  int D.5685;
  void * D.5687;
  long unsigned int D.5688;

  D.5680 = __builtin_constant_p (__len);
  if (D.5680 != 0) goto <D.5681>; else goto <D.5682>;
  <D.5681>:
  if (__len == 0) goto <D.5683>; else goto <D.5684>;
  <D.5683>:
  D.5685 = __builtin_constant_p (__ch);
  if (D.5685 == 0) goto <D.5678>; else goto <D.5686>;
  <D.5686>:
  if (__ch != 0) goto <D.5678>; else goto <D.5679>;
  <D.5678>:
  __warn_memset_zero_len ();
  D.5687 = __dest;
  return D.5687;
  <D.5679>:
  <D.5684>:
  <D.5682>:
  D.5688 = __builtin_object_size (__dest, 0);
  D.5687 = __builtin___memset_chk (__dest, __ch, __len, D.5688);
  return D.5687;
}


GC_new_hblk (word sz, int kind)
{
  int GC_debugging_started.10;
  int D.5695;
  struct hdr * D.5698;
  char * * D.5699;
  long unsigned int D.5700;
  char * * D.5701;
  char * D.5702;
  char * D.5703;
  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.5691>; else goto <D.5692>;
  <D.5691>:
  clear = 1;
  <D.5692>:
  h = GC_allochblk (sz, kind, 0);
  if (h == 0B) goto <D.5693>; else goto <D.5694>;
  <D.5693>:
  return;
  <D.5694>:
  D.5695 = kind & -2;
  if (D.5695 == 2) goto <D.5696>; else goto <D.5697>;
  <D.5696>:
  D.5698 = GC_find_header (h);
  GC_set_hdr_marks (D.5698);
  <D.5697>:
  D.5699 = GC_obj_kinds[kind].ok_freelist;
  D.5700 = sz * 8;
  D.5701 = D.5699 + D.5700;
  D.5699 = GC_obj_kinds[kind].ok_freelist;
  D.5700 = sz * 8;
  D.5701 = D.5699 + D.5700;
  D.5702 = *D.5701;
  D.5703 = GC_build_fl (h, sz, clear, D.5702);
  *D.5701 = D.5703;
}


