GC_build_fl1 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.0;
  word * D.5203;
  long unsigned int p.1;
  word * D.5205;
  long unsigned int D.5206;
  word * D.5207;
  long unsigned int D.5208;
  word * D.5209;
  long unsigned int D.5210;
  char * D.5211;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.0 = (long unsigned int) ofl;
  *p = ofl.0;
  D.5203 = p + 4;
  p.1 = (long unsigned int) p;
  *D.5203 = p.1;
  D.5205 = p + 8;
  D.5203 = p + 4;
  D.5206 = (long unsigned int) D.5203;
  *D.5205 = D.5206;
  D.5207 = p + 12;
  D.5205 = p + 8;
  D.5208 = (long unsigned int) D.5205;
  *D.5207 = D.5208;
  p = p + 16;
  goto <D.5130>;
  <D.5129>:
  D.5209 = p + 4294967292;
  D.5210 = (long unsigned int) D.5209;
  *p = D.5210;
  D.5203 = p + 4;
  p.1 = (long unsigned int) p;
  *D.5203 = p.1;
  D.5205 = p + 8;
  D.5203 = p + 4;
  D.5206 = (long unsigned int) D.5203;
  *D.5205 = D.5206;
  D.5207 = p + 12;
  D.5205 = p + 8;
  D.5208 = (long unsigned int) D.5205;
  *D.5207 = D.5208;
  p = p + 16;
  <D.5130>:
  if (p < lim) goto <D.5129>; else goto <D.5131>;
  <D.5131>:
  D.5211 = p + 4294967292;
  return D.5211;
}


GC_build_fl_clear2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.2;
  word * D.5214;
  word * D.5215;
  long unsigned int p.3;
  word * D.5217;
  word * D.5218;
  long unsigned int D.5219;
  char * D.5220;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.2 = (long unsigned int) ofl;
  *p = ofl.2;
  D.5214 = p + 4;
  *D.5214 = 0;
  D.5215 = p + 8;
  p.3 = (long unsigned int) p;
  *D.5215 = p.3;
  D.5217 = p + 12;
  *D.5217 = 0;
  p = p + 16;
  goto <D.5139>;
  <D.5138>:
  D.5218 = p + 4294967288;
  D.5219 = (long unsigned int) D.5218;
  *p = D.5219;
  D.5214 = p + 4;
  *D.5214 = 0;
  D.5215 = p + 8;
  p.3 = (long unsigned int) p;
  *D.5215 = p.3;
  D.5217 = p + 12;
  *D.5217 = 0;
  p = p + 16;
  <D.5139>:
  if (p < lim) goto <D.5138>; else goto <D.5140>;
  <D.5140>:
  D.5220 = p + 4294967288;
  return D.5220;
}


GC_build_fl_clear3 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.4;
  word * D.5223;
  word * D.5224;
  word * D.5225;
  long unsigned int D.5226;
  char * D.5227;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4088;
  ofl.4 = (long unsigned int) ofl;
  *p = ofl.4;
  D.5223 = p + 4;
  *D.5223 = 0;
  D.5224 = p + 8;
  *D.5224 = 0;
  p = p + 12;
  goto <D.5148>;
  <D.5147>:
  D.5225 = p + 4294967284;
  D.5226 = (long unsigned int) D.5225;
  *p = D.5226;
  D.5223 = p + 4;
  *D.5223 = 0;
  D.5224 = p + 8;
  *D.5224 = 0;
  p = p + 12;
  <D.5148>:
  if (p < lim) goto <D.5147>; else goto <D.5149>;
  <D.5149>:
  D.5227 = p + 4294967284;
  return D.5227;
}


GC_build_fl_clear4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.5;
  word * D.5230;
  word * D.5231;
  word * D.5232;
  word * D.5233;
  long unsigned int D.5234;
  char * D.5235;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.5 = (long unsigned int) ofl;
  *p = ofl.5;
  D.5230 = p + 4;
  *D.5230 = 0;
  D.5231 = p + 8;
  *D.5231 = 0;
  D.5232 = p + 12;
  *D.5232 = 0;
  p = p + 16;
  goto <D.5157>;
  <D.5156>:
  D.5233 = p + 4294967280;
  D.5234 = (long unsigned int) D.5233;
  *p = D.5234;
  D.5230 = p + 4;
  *D.5230 = 0;
  D.5231 = p + 8;
  *D.5231 = 0;
  D.5232 = p + 12;
  *D.5232 = 0;
  p = p + 16;
  <D.5157>:
  if (p < lim) goto <D.5156>; else goto <D.5158>;
  <D.5158>:
  D.5235 = p + 4294967280;
  return D.5235;
}


GC_build_fl2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.6;
  word * D.5238;
  long unsigned int p.7;
  word * D.5240;
  long unsigned int D.5241;
  char * D.5242;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.6 = (long unsigned int) ofl;
  *p = ofl.6;
  D.5238 = p + 8;
  p.7 = (long unsigned int) p;
  *D.5238 = p.7;
  p = p + 16;
  goto <D.5166>;
  <D.5165>:
  D.5240 = p + 4294967288;
  D.5241 = (long unsigned int) D.5240;
  *p = D.5241;
  D.5238 = p + 8;
  p.7 = (long unsigned int) p;
  *D.5238 = p.7;
  p = p + 16;
  <D.5166>:
  if (p < lim) goto <D.5165>; else goto <D.5167>;
  <D.5167>:
  D.5242 = p + 4294967288;
  return D.5242;
}


GC_build_fl4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.8;
  word * D.5245;
  long unsigned int p.9;
  word * D.5247;
  long unsigned int D.5248;
  char * D.5249;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.8 = (long unsigned int) ofl;
  *p = ofl.8;
  D.5245 = p + 16;
  p.9 = (long unsigned int) p;
  *D.5245 = p.9;
  p = p + 32;
  goto <D.5175>;
  <D.5174>:
  D.5247 = p + 4294967280;
  D.5248 = (long unsigned int) D.5247;
  *p = D.5248;
  D.5245 = p + 16;
  p.9 = (long unsigned int) p;
  *D.5245 = p.9;
  p = p + 32;
  <D.5175>:
  if (p < lim) goto <D.5174>; else goto <D.5176>;
  <D.5176>:
  D.5249 = p + 4294967280;
  return D.5249;
}


GC_build_fl (struct hblk * h, word sz, GC_bool clear, char * list)
{
  char * D.5251;
  long unsigned int D.5259;
  sizetype D.5260;
  word[1024] * D.5261;
  word * p;
  word * prev;
  word * last_object;

  switch (sz) <default: <D.5191>, case 1: <D.5186>, case 2: <D.5187>, case 3: <D.5188>, case 4: <D.5190>>
  <D.5186>:
  D.5251 = GC_build_fl1 (h, list);
  return D.5251;
  <D.5187>:
  if (clear != 0) goto <D.5252>; else goto <D.5253>;
  <D.5252>:
  D.5251 = GC_build_fl_clear2 (h, list);
  return D.5251;
  <D.5253>:
  D.5251 = GC_build_fl2 (h, list);
  return D.5251;
  <D.5188>:
  if (clear != 0) goto <D.5254>; else goto <D.5189>;
  <D.5254>:
  D.5251 = GC_build_fl_clear3 (h, list);
  return D.5251;
  <D.5190>:
  if (clear != 0) goto <D.5255>; else goto <D.5256>;
  <D.5255>:
  D.5251 = GC_build_fl_clear4 (h, list);
  return D.5251;
  <D.5256>:
  D.5251 = GC_build_fl4 (h, list);
  return D.5251;
  <D.5191>:
  goto <D.5189>;
  <D.5189>:
  if (clear != 0) goto <D.5257>; else goto <D.5258>;
  <D.5257>:
  memset (h, 0, 4096);
  <D.5258>:
  p = &h->hb_body[sz];
  prev = &h->hb_body[0];
  last_object = h + 4096;
  D.5259 = sz * 4;
  D.5260 = -D.5259;
  last_object = last_object + D.5260;
  goto <D.5193>;
  <D.5192>:
  MEM[(char * *)p] = prev;
  prev = p;
  D.5259 = sz * 4;
  p = p + D.5259;
  <D.5193>:
  if (p <= last_object) goto <D.5192>; else goto <D.5194>;
  <D.5194>:
  D.5259 = sz * 4;
  D.5260 = -D.5259;
  p = p + D.5260;
  D.5261 = &h->hb_body;
  MEM[(char * *)D.5261] = list;
  D.5251 = p;
  return D.5251;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.5266;
  int D.5271;
  void * D.5273;
  unsigned int D.5274;

  D.5266 = __builtin_constant_p (__len);
  if (D.5266 != 0) goto <D.5267>; else goto <D.5268>;
  <D.5267>:
  if (__len == 0) goto <D.5269>; else goto <D.5270>;
  <D.5269>:
  D.5271 = __builtin_constant_p (__ch);
  if (D.5271 == 0) goto <D.5264>; else goto <D.5272>;
  <D.5272>:
  if (__ch != 0) goto <D.5264>; else goto <D.5265>;
  <D.5264>:
  __warn_memset_zero_len ();
  D.5273 = __dest;
  return D.5273;
  <D.5265>:
  <D.5270>:
  <D.5268>:
  D.5274 = __builtin_object_size (__dest, 0);
  D.5273 = __builtin___memset_chk (__dest, __ch, __len, D.5274);
  return D.5273;
}


GC_new_hblk (word sz, int kind)
{
  int GC_debugging_started.10;
  int D.5281;
  long unsigned int h.11;
  long unsigned int D.5285;
  struct bottom_index * D.5286;
  long unsigned int D.5287;
  long unsigned int D.5288;
  struct hdr * D.5289;
  char * * D.5290;
  long unsigned int D.5291;
  char * * D.5292;
  char * D.5293;
  char * D.5294;
  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.5277>; else goto <D.5278>;
  <D.5277>:
  clear = 1;
  <D.5278>:
  h = GC_allochblk (sz, kind, 0);
  if (h == 0B) goto <D.5279>; else goto <D.5280>;
  <D.5279>:
  return;
  <D.5280>:
  D.5281 = kind & -2;
  if (D.5281 == 2) goto <D.5282>; else goto <D.5283>;
  <D.5282>:
  h.11 = (long unsigned int) h;
  D.5285 = h.11 >> 22;
  D.5286 = GC_arrays._top_index[D.5285];
  h.11 = (long unsigned int) h;
  D.5287 = h.11 >> 12;
  D.5288 = D.5287 & 1023;
  D.5289 = D.5286->index[D.5288];
  GC_set_hdr_marks (D.5289);
  <D.5283>:
  D.5290 = GC_obj_kinds[kind].ok_freelist;
  D.5291 = sz * 4;
  D.5292 = D.5290 + D.5291;
  D.5290 = GC_obj_kinds[kind].ok_freelist;
  D.5291 = sz * 4;
  D.5292 = D.5290 + D.5291;
  D.5293 = *D.5292;
  D.5294 = GC_build_fl (h, sz, clear, D.5293);
  *D.5292 = D.5294;
}


