GC_build_fl1 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.0;
  word * D.7780;
  long unsigned int p.1;
  word * D.7782;
  long unsigned int D.7783;
  word * D.7784;
  long unsigned int D.7785;
  word * D.7786;
  long unsigned int D.7787;
  char * D.7788;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.0 = (long unsigned int) ofl;
  *p = ofl.0;
  D.7780 = p + 4;
  p.1 = (long unsigned int) p;
  *D.7780 = p.1;
  D.7782 = p + 8;
  D.7780 = p + 4;
  D.7783 = (long unsigned int) D.7780;
  *D.7782 = D.7783;
  D.7784 = p + 12;
  D.7782 = p + 8;
  D.7785 = (long unsigned int) D.7782;
  *D.7784 = D.7785;
  p = p + 16;
  goto <D.7705>;
  <D.7704>:
  D.7786 = p + 4294967292;
  D.7787 = (long unsigned int) D.7786;
  *p = D.7787;
  D.7780 = p + 4;
  p.1 = (long unsigned int) p;
  *D.7780 = p.1;
  D.7782 = p + 8;
  D.7780 = p + 4;
  D.7783 = (long unsigned int) D.7780;
  *D.7782 = D.7783;
  D.7784 = p + 12;
  D.7782 = p + 8;
  D.7785 = (long unsigned int) D.7782;
  *D.7784 = D.7785;
  p = p + 16;
  <D.7705>:
  if (p < lim) goto <D.7704>; else goto <D.7706>;
  <D.7706>:
  D.7788 = p + 4294967292;
  return D.7788;
}


GC_build_fl_clear2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.2;
  word * D.7791;
  word * D.7792;
  long unsigned int p.3;
  word * D.7794;
  word * D.7795;
  long unsigned int D.7796;
  char * D.7797;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.2 = (long unsigned int) ofl;
  *p = ofl.2;
  D.7791 = p + 4;
  *D.7791 = 0;
  D.7792 = p + 8;
  p.3 = (long unsigned int) p;
  *D.7792 = p.3;
  D.7794 = p + 12;
  *D.7794 = 0;
  p = p + 16;
  goto <D.7714>;
  <D.7713>:
  D.7795 = p + 4294967288;
  D.7796 = (long unsigned int) D.7795;
  *p = D.7796;
  D.7791 = p + 4;
  *D.7791 = 0;
  D.7792 = p + 8;
  p.3 = (long unsigned int) p;
  *D.7792 = p.3;
  D.7794 = p + 12;
  *D.7794 = 0;
  p = p + 16;
  <D.7714>:
  if (p < lim) goto <D.7713>; else goto <D.7715>;
  <D.7715>:
  D.7797 = p + 4294967288;
  return D.7797;
}


GC_build_fl_clear3 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.4;
  word * D.7800;
  word * D.7801;
  word * D.7802;
  long unsigned int D.7803;
  char * D.7804;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4088;
  ofl.4 = (long unsigned int) ofl;
  *p = ofl.4;
  D.7800 = p + 4;
  *D.7800 = 0;
  D.7801 = p + 8;
  *D.7801 = 0;
  p = p + 12;
  goto <D.7723>;
  <D.7722>:
  D.7802 = p + 4294967284;
  D.7803 = (long unsigned int) D.7802;
  *p = D.7803;
  D.7800 = p + 4;
  *D.7800 = 0;
  D.7801 = p + 8;
  *D.7801 = 0;
  p = p + 12;
  <D.7723>:
  if (p < lim) goto <D.7722>; else goto <D.7724>;
  <D.7724>:
  D.7804 = p + 4294967284;
  return D.7804;
}


GC_build_fl_clear4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.5;
  word * D.7807;
  word * D.7808;
  word * D.7809;
  word * D.7810;
  long unsigned int D.7811;
  char * D.7812;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.5 = (long unsigned int) ofl;
  *p = ofl.5;
  D.7807 = p + 4;
  *D.7807 = 0;
  D.7808 = p + 8;
  *D.7808 = 0;
  D.7809 = p + 12;
  *D.7809 = 0;
  p = p + 16;
  goto <D.7732>;
  <D.7731>:
  D.7810 = p + 4294967280;
  D.7811 = (long unsigned int) D.7810;
  *p = D.7811;
  D.7807 = p + 4;
  *D.7807 = 0;
  D.7808 = p + 8;
  *D.7808 = 0;
  D.7809 = p + 12;
  *D.7809 = 0;
  p = p + 16;
  <D.7732>:
  if (p < lim) goto <D.7731>; else goto <D.7733>;
  <D.7733>:
  D.7812 = p + 4294967280;
  return D.7812;
}


GC_build_fl2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.6;
  word * D.7815;
  long unsigned int p.7;
  word * D.7817;
  long unsigned int D.7818;
  char * D.7819;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.6 = (long unsigned int) ofl;
  *p = ofl.6;
  D.7815 = p + 8;
  p.7 = (long unsigned int) p;
  *D.7815 = p.7;
  p = p + 16;
  goto <D.7741>;
  <D.7740>:
  D.7817 = p + 4294967288;
  D.7818 = (long unsigned int) D.7817;
  *p = D.7818;
  D.7815 = p + 8;
  p.7 = (long unsigned int) p;
  *D.7815 = p.7;
  p = p + 16;
  <D.7741>:
  if (p < lim) goto <D.7740>; else goto <D.7742>;
  <D.7742>:
  D.7819 = p + 4294967288;
  return D.7819;
}


GC_build_fl4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.8;
  word * D.7822;
  long unsigned int p.9;
  word * D.7824;
  long unsigned int D.7825;
  char * D.7826;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.8 = (long unsigned int) ofl;
  *p = ofl.8;
  D.7822 = p + 16;
  p.9 = (long unsigned int) p;
  *D.7822 = p.9;
  p = p + 32;
  goto <D.7750>;
  <D.7749>:
  D.7824 = p + 4294967280;
  D.7825 = (long unsigned int) D.7824;
  *p = D.7825;
  D.7822 = p + 16;
  p.9 = (long unsigned int) p;
  *D.7822 = p.9;
  p = p + 32;
  <D.7750>:
  if (p < lim) goto <D.7749>; else goto <D.7751>;
  <D.7751>:
  D.7826 = p + 4294967280;
  return D.7826;
}


GC_build_fl (struct hblk * h, word sz, GC_bool clear, char * list)
{
  char * D.7828;
  long unsigned int D.7836;
  sizetype D.7837;
  word[1024] * D.7838;
  word * p;
  word * prev;
  word * last_object;

  switch (sz) <default: <D.7766>, case 1: <D.7761>, case 2: <D.7762>, case 3: <D.7763>, case 4: <D.7765>>
  <D.7761>:
  D.7828 = GC_build_fl1 (h, list);
  return D.7828;
  <D.7762>:
  if (clear != 0) goto <D.7829>; else goto <D.7830>;
  <D.7829>:
  D.7828 = GC_build_fl_clear2 (h, list);
  return D.7828;
  <D.7830>:
  D.7828 = GC_build_fl2 (h, list);
  return D.7828;
  <D.7763>:
  if (clear != 0) goto <D.7831>; else goto <D.7764>;
  <D.7831>:
  D.7828 = GC_build_fl_clear3 (h, list);
  return D.7828;
  <D.7765>:
  if (clear != 0) goto <D.7832>; else goto <D.7833>;
  <D.7832>:
  D.7828 = GC_build_fl_clear4 (h, list);
  return D.7828;
  <D.7833>:
  D.7828 = GC_build_fl4 (h, list);
  return D.7828;
  <D.7766>:
  goto <D.7764>;
  <D.7764>:
  if (clear != 0) goto <D.7834>; else goto <D.7835>;
  <D.7834>:
  memset (h, 0, 4096);
  <D.7835>:
  p = &h->hb_body[sz];
  prev = &h->hb_body[0];
  last_object = h + 4096;
  D.7836 = sz * 4;
  D.7837 = -D.7836;
  last_object = last_object + D.7837;
  goto <D.7768>;
  <D.7767>:
  MEM[(char * *)p] = prev;
  prev = p;
  D.7836 = sz * 4;
  p = p + D.7836;
  <D.7768>:
  if (p <= last_object) goto <D.7767>; else goto <D.7769>;
  <D.7769>:
  D.7836 = sz * 4;
  D.7837 = -D.7836;
  p = p + D.7837;
  D.7838 = &h->hb_body;
  MEM[(char * *)D.7838] = list;
  D.7828 = p;
  return D.7828;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.7843;
  int D.7848;
  void * D.7850;
  unsigned int D.7851;

  D.7843 = __builtin_constant_p (__len);
  if (D.7843 != 0) goto <D.7844>; else goto <D.7845>;
  <D.7844>:
  if (__len == 0) goto <D.7846>; else goto <D.7847>;
  <D.7846>:
  D.7848 = __builtin_constant_p (__ch);
  if (D.7848 == 0) goto <D.7841>; else goto <D.7849>;
  <D.7849>:
  if (__ch != 0) goto <D.7841>; else goto <D.7842>;
  <D.7841>:
  __warn_memset_zero_len ();
  D.7850 = __dest;
  return D.7850;
  <D.7842>:
  <D.7847>:
  <D.7845>:
  D.7851 = __builtin_object_size (__dest, 0);
  D.7850 = __builtin___memset_chk (__dest, __ch, __len, D.7851);
  return D.7850;
}


GC_new_hblk (word sz, int kind)
{
  int GC_debugging_started.10;
  int D.7858;
  long unsigned int h.11;
  long unsigned int D.7862;
  struct bottom_index * D.7863;
  long unsigned int D.7864;
  long unsigned int D.7865;
  struct hdr * D.7866;
  char * * D.7867;
  long unsigned int D.7868;
  char * * D.7869;
  char * D.7870;
  char * D.7871;
  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.7854>; else goto <D.7855>;
  <D.7854>:
  clear = 1;
  <D.7855>:
  h = GC_allochblk (sz, kind, 0);
  if (h == 0B) goto <D.7856>; else goto <D.7857>;
  <D.7856>:
  return;
  <D.7857>:
  D.7858 = kind & -2;
  if (D.7858 == 2) goto <D.7859>; else goto <D.7860>;
  <D.7859>:
  h.11 = (long unsigned int) h;
  D.7862 = h.11 >> 22;
  D.7863 = GC_arrays._top_index[D.7862];
  h.11 = (long unsigned int) h;
  D.7864 = h.11 >> 12;
  D.7865 = D.7864 & 1023;
  D.7866 = D.7863->index[D.7865];
  GC_set_hdr_marks (D.7866);
  <D.7860>:
  D.7867 = GC_obj_kinds[kind].ok_freelist;
  D.7868 = sz * 4;
  D.7869 = D.7867 + D.7868;
  D.7867 = GC_obj_kinds[kind].ok_freelist;
  D.7868 = sz * 4;
  D.7869 = D.7867 + D.7868;
  D.7870 = *D.7869;
  D.7871 = GC_build_fl (h, sz, clear, D.7870);
  *D.7869 = D.7871;
}


