GC_build_fl1 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.0;
  word * D.5267;
  long unsigned int p.1;
  word * D.5269;
  long unsigned int D.5270;
  word * D.5271;
  long unsigned int D.5272;
  word * D.5273;
  long unsigned int D.5274;
  char * D.5275;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.0 = (long unsigned int) ofl;
  *p = ofl.0;
  D.5267 = p + 4;
  p.1 = (long unsigned int) p;
  *D.5267 = p.1;
  D.5269 = p + 8;
  D.5267 = p + 4;
  D.5270 = (long unsigned int) D.5267;
  *D.5269 = D.5270;
  D.5271 = p + 12;
  D.5269 = p + 8;
  D.5272 = (long unsigned int) D.5269;
  *D.5271 = D.5272;
  p = p + 16;
  goto <D.5194>;
  <D.5193>:
  D.5273 = p + 4294967292;
  D.5274 = (long unsigned int) D.5273;
  *p = D.5274;
  D.5267 = p + 4;
  p.1 = (long unsigned int) p;
  *D.5267 = p.1;
  D.5269 = p + 8;
  D.5267 = p + 4;
  D.5270 = (long unsigned int) D.5267;
  *D.5269 = D.5270;
  D.5271 = p + 12;
  D.5269 = p + 8;
  D.5272 = (long unsigned int) D.5269;
  *D.5271 = D.5272;
  p = p + 16;
  <D.5194>:
  if (p < lim) goto <D.5193>; else goto <D.5195>;
  <D.5195>:
  D.5275 = p + 4294967292;
  return D.5275;
}


GC_build_fl_clear2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.2;
  word * D.5278;
  word * D.5279;
  long unsigned int p.3;
  word * D.5281;
  word * D.5282;
  long unsigned int D.5283;
  char * D.5284;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.2 = (long unsigned int) ofl;
  *p = ofl.2;
  D.5278 = p + 4;
  *D.5278 = 0;
  D.5279 = p + 8;
  p.3 = (long unsigned int) p;
  *D.5279 = p.3;
  D.5281 = p + 12;
  *D.5281 = 0;
  p = p + 16;
  goto <D.5203>;
  <D.5202>:
  D.5282 = p + 4294967288;
  D.5283 = (long unsigned int) D.5282;
  *p = D.5283;
  D.5278 = p + 4;
  *D.5278 = 0;
  D.5279 = p + 8;
  p.3 = (long unsigned int) p;
  *D.5279 = p.3;
  D.5281 = p + 12;
  *D.5281 = 0;
  p = p + 16;
  <D.5203>:
  if (p < lim) goto <D.5202>; else goto <D.5204>;
  <D.5204>:
  D.5284 = p + 4294967288;
  return D.5284;
}


GC_build_fl_clear3 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.4;
  word * D.5287;
  word * D.5288;
  word * D.5289;
  long unsigned int D.5290;
  char * D.5291;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4088;
  ofl.4 = (long unsigned int) ofl;
  *p = ofl.4;
  D.5287 = p + 4;
  *D.5287 = 0;
  D.5288 = p + 8;
  *D.5288 = 0;
  p = p + 12;
  goto <D.5212>;
  <D.5211>:
  D.5289 = p + 4294967284;
  D.5290 = (long unsigned int) D.5289;
  *p = D.5290;
  D.5287 = p + 4;
  *D.5287 = 0;
  D.5288 = p + 8;
  *D.5288 = 0;
  p = p + 12;
  <D.5212>:
  if (p < lim) goto <D.5211>; else goto <D.5213>;
  <D.5213>:
  D.5291 = p + 4294967284;
  return D.5291;
}


GC_build_fl_clear4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.5;
  word * D.5294;
  word * D.5295;
  word * D.5296;
  word * D.5297;
  long unsigned int D.5298;
  char * D.5299;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.5 = (long unsigned int) ofl;
  *p = ofl.5;
  D.5294 = p + 4;
  *D.5294 = 0;
  D.5295 = p + 8;
  *D.5295 = 0;
  D.5296 = p + 12;
  *D.5296 = 0;
  p = p + 16;
  goto <D.5221>;
  <D.5220>:
  D.5297 = p + 4294967280;
  D.5298 = (long unsigned int) D.5297;
  *p = D.5298;
  D.5294 = p + 4;
  *D.5294 = 0;
  D.5295 = p + 8;
  *D.5295 = 0;
  D.5296 = p + 12;
  *D.5296 = 0;
  p = p + 16;
  <D.5221>:
  if (p < lim) goto <D.5220>; else goto <D.5222>;
  <D.5222>:
  D.5299 = p + 4294967280;
  return D.5299;
}


GC_build_fl2 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.6;
  word * D.5302;
  long unsigned int p.7;
  word * D.5304;
  long unsigned int D.5305;
  char * D.5306;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.6 = (long unsigned int) ofl;
  *p = ofl.6;
  D.5302 = p + 8;
  p.7 = (long unsigned int) p;
  *D.5302 = p.7;
  p = p + 16;
  goto <D.5230>;
  <D.5229>:
  D.5304 = p + 4294967288;
  D.5305 = (long unsigned int) D.5304;
  *p = D.5305;
  D.5302 = p + 8;
  p.7 = (long unsigned int) p;
  *D.5302 = p.7;
  p = p + 16;
  <D.5230>:
  if (p < lim) goto <D.5229>; else goto <D.5231>;
  <D.5231>:
  D.5306 = p + 4294967288;
  return D.5306;
}


GC_build_fl4 (struct hblk * h, char * ofl)
{
  long unsigned int ofl.8;
  word * D.5309;
  long unsigned int p.9;
  word * D.5311;
  long unsigned int D.5312;
  char * D.5313;
  register word * p;
  register word * lim;

  p = &h->hb_body;
  lim = h + 4096;
  ofl.8 = (long unsigned int) ofl;
  *p = ofl.8;
  D.5309 = p + 16;
  p.9 = (long unsigned int) p;
  *D.5309 = p.9;
  p = p + 32;
  goto <D.5239>;
  <D.5238>:
  D.5311 = p + 4294967280;
  D.5312 = (long unsigned int) D.5311;
  *p = D.5312;
  D.5309 = p + 16;
  p.9 = (long unsigned int) p;
  *D.5309 = p.9;
  p = p + 32;
  <D.5239>:
  if (p < lim) goto <D.5238>; else goto <D.5240>;
  <D.5240>:
  D.5313 = p + 4294967280;
  return D.5313;
}


GC_build_fl (struct hblk * h, word sz, GC_bool clear, char * list)
{
  char * D.5315;
  long unsigned int D.5323;
  sizetype D.5324;
  word[1024] * D.5325;
  word * p;
  word * prev;
  word * last_object;

  switch (sz) <default: <D.5255>, case 1: <D.5250>, case 2: <D.5251>, case 3: <D.5252>, case 4: <D.5254>>
  <D.5250>:
  D.5315 = GC_build_fl1 (h, list);
  return D.5315;
  <D.5251>:
  if (clear != 0) goto <D.5316>; else goto <D.5317>;
  <D.5316>:
  D.5315 = GC_build_fl_clear2 (h, list);
  return D.5315;
  <D.5317>:
  D.5315 = GC_build_fl2 (h, list);
  return D.5315;
  <D.5252>:
  if (clear != 0) goto <D.5318>; else goto <D.5253>;
  <D.5318>:
  D.5315 = GC_build_fl_clear3 (h, list);
  return D.5315;
  <D.5254>:
  if (clear != 0) goto <D.5319>; else goto <D.5320>;
  <D.5319>:
  D.5315 = GC_build_fl_clear4 (h, list);
  return D.5315;
  <D.5320>:
  D.5315 = GC_build_fl4 (h, list);
  return D.5315;
  <D.5255>:
  goto <D.5253>;
  <D.5253>:
  if (clear != 0) goto <D.5321>; else goto <D.5322>;
  <D.5321>:
  memset (h, 0, 4096);
  <D.5322>:
  p = &h->hb_body[sz];
  prev = &h->hb_body[0];
  last_object = h + 4096;
  D.5323 = sz * 4;
  D.5324 = -D.5323;
  last_object = last_object + D.5324;
  goto <D.5257>;
  <D.5256>:
  MEM[(char * *)p] = prev;
  prev = p;
  D.5323 = sz * 4;
  p = p + D.5323;
  <D.5257>:
  if (p <= last_object) goto <D.5256>; else goto <D.5258>;
  <D.5258>:
  D.5323 = sz * 4;
  D.5324 = -D.5323;
  p = p + D.5324;
  D.5325 = &h->hb_body;
  MEM[(char * *)D.5325] = list;
  D.5315 = p;
  return D.5315;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.5330;
  int D.5335;
  void * D.5337;
  unsigned int D.5338;

  D.5330 = __builtin_constant_p (__len);
  if (D.5330 != 0) goto <D.5331>; else goto <D.5332>;
  <D.5331>:
  if (__len == 0) goto <D.5333>; else goto <D.5334>;
  <D.5333>:
  D.5335 = __builtin_constant_p (__ch);
  if (D.5335 == 0) goto <D.5328>; else goto <D.5336>;
  <D.5336>:
  if (__ch != 0) goto <D.5328>; else goto <D.5329>;
  <D.5328>:
  __warn_memset_zero_len ();
  D.5337 = __dest;
  return D.5337;
  <D.5329>:
  <D.5334>:
  <D.5332>:
  D.5338 = __builtin_object_size (__dest, 0);
  D.5337 = __builtin___memset_chk (__dest, __ch, __len, D.5338);
  return D.5337;
}


GC_new_hblk (word sz, int kind)
{
  int GC_debugging_started.10;
  int D.5345;
  long unsigned int h.11;
  long unsigned int D.5349;
  struct bottom_index * D.5350;
  long unsigned int D.5351;
  long unsigned int D.5352;
  struct hdr * D.5353;
  char * * D.5354;
  long unsigned int D.5355;
  char * * D.5356;
  char * D.5357;
  char * D.5358;
  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.5341>; else goto <D.5342>;
  <D.5341>:
  clear = 1;
  <D.5342>:
  h = GC_allochblk (sz, kind, 0);
  if (h == 0B) goto <D.5343>; else goto <D.5344>;
  <D.5343>:
  return;
  <D.5344>:
  D.5345 = kind & -2;
  if (D.5345 == 2) goto <D.5346>; else goto <D.5347>;
  <D.5346>:
  h.11 = (long unsigned int) h;
  D.5349 = h.11 >> 22;
  D.5350 = GC_arrays._top_index[D.5349];
  h.11 = (long unsigned int) h;
  D.5351 = h.11 >> 12;
  D.5352 = D.5351 & 1023;
  D.5353 = D.5350->index[D.5352];
  GC_set_hdr_marks (D.5353);
  <D.5347>:
  D.5354 = GC_obj_kinds[kind].ok_freelist;
  D.5355 = sz * 4;
  D.5356 = D.5354 + D.5355;
  D.5354 = GC_obj_kinds[kind].ok_freelist;
  D.5355 = sz * 4;
  D.5356 = D.5354 + D.5355;
  D.5357 = *D.5356;
  D.5358 = GC_build_fl (h, sz, clear, D.5357);
  *D.5356 = D.5358;
}


