GC_find_header (char * h)
{
  long unsigned int h.0;
  long unsigned int D.5071;
  long unsigned int D.5072;
  struct bottom_index * D.5074;
  long unsigned int D.5075;
  long unsigned int D.5076;
  struct hdr * D.5077;
  register struct hdr * result;

  {
    register struct hdr * * _ha;

    {
      register struct bottom_index * bi;

      {
        register word hi;
        register struct bottom_index * _bi;

        h.0 = (long unsigned int) h;
        hi = h.0 >> 22;
        D.5071 = hi & 2047;
        _bi = GC_arrays._top_index[D.5071];
        goto <D.4918>;
        <D.4917>:
        _bi = _bi->hash_link;
        <D.4918>:
        D.5072 = _bi->key;
        if (D.5072 != hi) goto <D.5073>; else goto <D.4919>;
        <D.5073>:
        D.5074 = GC_arrays._all_nils;
        if (D.5074 != _bi) goto <D.4917>; else goto <D.4919>;
        <D.4919>:
        bi = _bi;
      }
      h.0 = (long unsigned int) h;
      D.5075 = h.0 >> 12;
      D.5076 = D.5075 & 1023;
      _ha = &bi->index[D.5076];
    }
    result = *_ha;
  }
  D.5077 = result;
  return D.5077;
}


GC_scratch_alloc (word bytes)
{
  char * scratch_free_ptr.1;
  char * D.5080;
  char * D.5081;
  char * D.5084;
  long unsigned int GC_page_size.2;
  long unsigned int D.5088;
  long unsigned int D.5089;
  sizetype D.5090;
  char * D.5091;
  char * D.5092;
  char * D.5095;
  register char * result;

  result = scratch_free_ptr;
  bytes = bytes + 7;
  bytes = bytes & 18446744073709551608;
  scratch_free_ptr.1 = scratch_free_ptr;
  D.5080 = scratch_free_ptr.1 + bytes;
  scratch_free_ptr = D.5080;
  D.5081 = GC_arrays._scratch_end_ptr;
  scratch_free_ptr.1 = scratch_free_ptr;
  if (D.5081 >= scratch_free_ptr.1) goto <D.5082>; else goto <D.5083>;
  <D.5082>:
  D.5084 = result;
  return D.5084;
  <D.5083>:
  {
    word bytes_to_get;

    bytes_to_get = 65536;
    if (bytes_to_get <= bytes) goto <D.5085>; else goto <D.5086>;
    <D.5085>:
    bytes_to_get = bytes;
    GC_page_size.2 = GC_page_size;
    D.5088 = GC_page_size.2 + bytes_to_get;
    bytes_to_get = D.5088 + 18446744073709551615;
    GC_page_size.2 = GC_page_size;
    D.5089 = -GC_page_size.2;
    bytes_to_get = D.5089 & bytes_to_get;
    result = GC_unix_get_mem (bytes_to_get);
    scratch_free_ptr.1 = scratch_free_ptr;
    D.5090 = -bytes;
    D.5091 = scratch_free_ptr.1 + D.5090;
    scratch_free_ptr = D.5091;
    D.5092 = result + bytes;
    GC_arrays._scratch_last_end_ptr = D.5092;
    D.5084 = result;
    return D.5084;
    <D.5086>:
    result = GC_unix_get_mem (bytes_to_get);
    if (result == 0B) goto <D.5093>; else goto <D.5094>;
    <D.5093>:
    scratch_free_ptr.1 = scratch_free_ptr;
    D.5090 = -bytes;
    D.5091 = scratch_free_ptr.1 + D.5090;
    scratch_free_ptr = D.5091;
    bytes_to_get = bytes;
    GC_page_size.2 = GC_page_size;
    D.5088 = GC_page_size.2 + bytes_to_get;
    bytes_to_get = D.5088 + 18446744073709551615;
    GC_page_size.2 = GC_page_size;
    D.5089 = -GC_page_size.2;
    bytes_to_get = D.5089 & bytes_to_get;
    D.5084 = GC_unix_get_mem (bytes_to_get);
    return D.5084;
    <D.5094>:
    scratch_free_ptr = result;
    scratch_free_ptr.1 = scratch_free_ptr;
    D.5095 = scratch_free_ptr.1 + bytes_to_get;
    GC_arrays._scratch_end_ptr = D.5095;
    D.5081 = GC_arrays._scratch_end_ptr;
    GC_arrays._scratch_last_end_ptr = D.5081;
    D.5084 = GC_scratch_alloc (bytes);
    return D.5084;
  }
}


GC_init_headers ()
{
  char * D.5097;
  struct bottom_index * D.5098;
  struct hdr * D.5099;
  struct hdr * GC_invalid_header.3;
  register unsigned int i;

  D.5097 = GC_scratch_alloc (8224);
  GC_arrays._all_nils = D.5097;
  D.5098 = GC_arrays._all_nils;
  memset (D.5098, 0, 8224);
  i = 0;
  goto <D.4940>;
  <D.4939>:
  D.5098 = GC_arrays._all_nils;
  GC_arrays._top_index[i] = D.5098;
  i = i + 1;
  <D.4940>:
  if (i <= 2047) goto <D.4939>; else goto <D.4941>;
  <D.4941>:
  D.5099 = alloc_hdr ();
  GC_invalid_header = D.5099;
  GC_invalid_header.3 = GC_invalid_header;
  GC_invalidate_map (GC_invalid_header.3);
}


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

  D.5102 = __builtin_object_size (__dest, 0);
  D.5101 = __builtin___memset_chk (__dest, __ch, __len, D.5102);
  return D.5101;
}


alloc_hdr ()
{
  struct hdr * hdr_free_list.4;
  struct hblk * D.5108;
  struct hdr * D.5109;
  register struct hdr * result;

  hdr_free_list.4 = hdr_free_list;
  if (hdr_free_list.4 == 0B) goto <D.5105>; else goto <D.5106>;
  <D.5105>:
  result = GC_scratch_alloc (112);
  goto <D.5107>;
  <D.5106>:
  result = hdr_free_list;
  D.5108 = result->hb_next;
  hdr_free_list = D.5108;
  <D.5107>:
  D.5109 = result;
  return D.5109;
}


GC_install_header (struct hblk * h)
{
  long unsigned int h.5;
  int D.5112;
  struct hblkhdr * D.5115;
  long unsigned int D.5116;
  long unsigned int D.5117;
  struct bottom_index * D.5119;
  long unsigned int D.5120;
  long unsigned int D.5121;
  long unsigned int GC_gc_no.6;
  short unsigned int D.5123;
  struct hdr * result;

  h.5 = (long unsigned int) h;
  D.5112 = get_index (h.5);
  if (D.5112 == 0) goto <D.5113>; else goto <D.5114>;
  <D.5113>:
  D.5115 = 0B;
  return D.5115;
  <D.5114>:
  result = alloc_hdr ();
  {
    register struct hdr * * _ha;

    {
      register struct bottom_index * bi;

      {
        register word hi;
        register struct bottom_index * _bi;

        h.5 = (long unsigned int) h;
        hi = h.5 >> 22;
        D.5116 = hi & 2047;
        _bi = GC_arrays._top_index[D.5116];
        goto <D.4967>;
        <D.4966>:
        _bi = _bi->hash_link;
        <D.4967>:
        D.5117 = _bi->key;
        if (D.5117 != hi) goto <D.5118>; else goto <D.4968>;
        <D.5118>:
        D.5119 = GC_arrays._all_nils;
        if (D.5119 != _bi) goto <D.4966>; else goto <D.4968>;
        <D.4968>:
        bi = _bi;
      }
      h.5 = (long unsigned int) h;
      D.5120 = h.5 >> 12;
      D.5121 = D.5120 & 1023;
      _ha = &bi->index[D.5121];
    }
    *_ha = result;
  }
  GC_gc_no.6 = GC_gc_no;
  D.5123 = (short unsigned int) GC_gc_no.6;
  result->hb_last_reclaimed = D.5123;
  D.5115 = result;
  return D.5115;
}


get_index (word addr)
{
  unsigned int D.5125;
  long unsigned int D.5126;
  GC_bool D.5129;
  struct bottom_index * D.5130;
  word hi;
  struct bottom_index * r;
  struct bottom_index * p;
  struct bottom_index * * prev;
  struct bottom_index * pi;
  unsigned int i;
  struct bottom_index * old;

  hi = addr >> 22;
  D.5125 = (unsigned int) hi;
  i = D.5125 & 2047;
  p = GC_arrays._top_index[i];
  old = p;
  goto <D.4953>;
  <D.4952>:
  D.5126 = p->key;
  if (D.5126 == hi) goto <D.5127>; else goto <D.5128>;
  <D.5127>:
  D.5129 = 1;
  return D.5129;
  <D.5128>:
  p = p->hash_link;
  <D.4953>:
  D.5130 = GC_arrays._all_nils;
  if (D.5130 != p) goto <D.4952>; else goto <D.4954>;
  <D.4954>:
  r = GC_scratch_alloc (8224);
  if (r == 0B) goto <D.5131>; else goto <D.5132>;
  <D.5131>:
  D.5129 = 0;
  return D.5129;
  <D.5132>:
  memset (r, 0, 8224);
  r->hash_link = old;
  GC_arrays._top_index[i] = r;
  r->key = hi;
  prev = &GC_all_bottom_indices;
  pi = 0B;
  goto <D.4956>;
  <D.4955>:
  pi = p;
  prev = &p->asc_link;
  <D.4956>:
  p = *prev;
  if (p != 0B) goto <D.5133>; else goto <D.4957>;
  <D.5133>:
  D.5126 = p->key;
  if (D.5126 < hi) goto <D.4955>; else goto <D.4957>;
  <D.4957>:
  r->desc_link = pi;
  if (p == 0B) goto <D.5134>; else goto <D.5135>;
  <D.5134>:
  GC_all_bottom_indices_end = r;
  goto <D.5136>;
  <D.5135>:
  p->desc_link = r;
  <D.5136>:
  r->asc_link = p;
  *prev = r;
  D.5129 = 1;
  return D.5129;
}


GC_install_counts (struct hblk * h, word sz)
{
  long unsigned int hbp.7;
  int D.5139;
  GC_bool D.5142;
  char * D.5143;
  long unsigned int h.8;
  long unsigned int D.5145;
  long unsigned int D.5146;
  int D.5147;
  long int hbp.9;
  long int h.10;
  long int D.5152;
  long int D.5153;
  long unsigned int D.5154;
  long unsigned int D.5155;
  struct bottom_index * D.5157;
  long unsigned int D.5158;
  long unsigned int D.5159;
  unsigned int i.11;
  unsigned int D.5161;
  struct hdr * D.5162;
  register struct hblk * hbp;
  register int i;

  hbp = h;
  goto <D.4976>;
  <D.4975>:
  hbp.7 = (long unsigned int) hbp;
  D.5139 = get_index (hbp.7);
  if (D.5139 == 0) goto <D.5140>; else goto <D.5141>;
  <D.5140>:
  D.5142 = 0;
  return D.5142;
  <D.5141>:
  hbp = hbp + 4194304;
  <D.4976>:
  D.5143 = h + sz;
  if (D.5143 > hbp) goto <D.4975>; else goto <D.4977>;
  <D.4977>:
  h.8 = (long unsigned int) h;
  D.5145 = h.8 + sz;
  D.5146 = D.5145 + 18446744073709551615;
  D.5147 = get_index (D.5146);
  if (D.5147 == 0) goto <D.5148>; else goto <D.5149>;
  <D.5148>:
  D.5142 = 0;
  return D.5142;
  <D.5149>:
  hbp = h + 4096;
  goto <D.4986>;
  <D.4985>:
  hbp.9 = (long int) hbp;
  h.10 = (long int) h;
  D.5152 = hbp.9 - h.10;
  D.5153 = D.5152 >> 12;
  i = (int) D.5153;
  {
    register struct hdr * * _ha;

    {
      register struct bottom_index * bi;

      {
        register word hi;
        register struct bottom_index * _bi;

        hbp.7 = (long unsigned int) hbp;
        hi = hbp.7 >> 22;
        D.5154 = hi & 2047;
        _bi = GC_arrays._top_index[D.5154];
        goto <D.4983>;
        <D.4982>:
        _bi = _bi->hash_link;
        <D.4983>:
        D.5155 = _bi->key;
        if (D.5155 != hi) goto <D.5156>; else goto <D.4984>;
        <D.5156>:
        D.5157 = GC_arrays._all_nils;
        if (D.5157 != _bi) goto <D.4982>; else goto <D.4984>;
        <D.4984>:
        bi = _bi;
      }
      hbp.7 = (long unsigned int) hbp;
      D.5158 = hbp.7 >> 12;
      D.5159 = D.5158 & 1023;
      _ha = &bi->index[D.5159];
    }
    i.11 = (unsigned int) i;
    D.5161 = MIN_EXPR <i.11, 4095>;
    D.5162 = (struct hdr *) D.5161;
    *_ha = D.5162;
  }
  hbp = hbp + 4096;
  <D.4986>:
  D.5143 = h + sz;
  if (D.5143 > hbp) goto <D.4985>; else goto <D.4987>;
  <D.4987>:
  D.5142 = 1;
  return D.5142;
}


GC_remove_header (struct hblk * h)
{
  long unsigned int h.12;
  long unsigned int D.5165;
  long unsigned int D.5166;
  struct bottom_index * D.5168;
  long unsigned int D.5169;
  long unsigned int D.5170;
  struct hdr * D.5171;
  struct hdr * * ha;

  {
    register struct bottom_index * bi;

    {
      register word hi;
      register struct bottom_index * _bi;

      h.12 = (long unsigned int) h;
      hi = h.12 >> 22;
      D.5165 = hi & 2047;
      _bi = GC_arrays._top_index[D.5165];
      goto <D.4996>;
      <D.4995>:
      _bi = _bi->hash_link;
      <D.4996>:
      D.5166 = _bi->key;
      if (D.5166 != hi) goto <D.5167>; else goto <D.4997>;
      <D.5167>:
      D.5168 = GC_arrays._all_nils;
      if (D.5168 != _bi) goto <D.4995>; else goto <D.4997>;
      <D.4997>:
      bi = _bi;
    }
    h.12 = (long unsigned int) h;
    D.5169 = h.12 >> 12;
    D.5170 = D.5169 & 1023;
    ha = &bi->index[D.5170];
  }
  D.5171 = *ha;
  free_hdr (D.5171);
  *ha = 0B;
}


free_hdr (struct hdr * hhdr)
{
  struct hdr * hdr_free_list.13;

  hdr_free_list.13 = hdr_free_list;
  hhdr->hb_next = hdr_free_list.13;
  hdr_free_list = hhdr;
}


GC_remove_counts (struct hblk * h, word sz)
{
  long unsigned int hbp.14;
  long unsigned int D.5174;
  long unsigned int D.5175;
  struct bottom_index * D.5177;
  long unsigned int D.5178;
  long unsigned int D.5179;
  char * D.5180;
  register struct hblk * hbp;

  hbp = h + 4096;
  goto <D.5011>;
  <D.5010>:
  {
    register struct hdr * * _ha;

    {
      register struct bottom_index * bi;

      {
        register word hi;
        register struct bottom_index * _bi;

        hbp.14 = (long unsigned int) hbp;
        hi = hbp.14 >> 22;
        D.5174 = hi & 2047;
        _bi = GC_arrays._top_index[D.5174];
        goto <D.5008>;
        <D.5007>:
        _bi = _bi->hash_link;
        <D.5008>:
        D.5175 = _bi->key;
        if (D.5175 != hi) goto <D.5176>; else goto <D.5009>;
        <D.5176>:
        D.5177 = GC_arrays._all_nils;
        if (D.5177 != _bi) goto <D.5007>; else goto <D.5009>;
        <D.5009>:
        bi = _bi;
      }
      hbp.14 = (long unsigned int) hbp;
      D.5178 = hbp.14 >> 12;
      D.5179 = D.5178 & 1023;
      _ha = &bi->index[D.5179];
    }
    *_ha = 0B;
  }
  hbp = hbp + 4096;
  <D.5011>:
  D.5180 = h + sz;
  if (D.5180 > hbp) goto <D.5010>; else goto <D.5012>;
  <D.5012>:
}


GC_apply_to_all_blocks (void (*<Td72>) (struct hblk *, word) fn, word client_data)
{
  struct hdr * D.5181;
  long unsigned int D.5182;
  map_entry_type * D.5185;
  map_entry_type * GC_invalid_map.15;
  long unsigned int D.5189;
  long unsigned int D.5190;
  long unsigned int D.5191;
  long unsigned int D.5192;
  long unsigned int D.5193;
  struct hblk * D.5194;
  unsigned int j.16;
  long int D.5200;
  unsigned int D.5201;
  unsigned int D.5202;
  register int j;
  register struct bottom_index * index_p;

  index_p = GC_all_bottom_indices;
  goto <D.5025>;
  <D.5024>:
  j = 1023;
  goto <D.5022>;
  <D.5021>:
  D.5181 = index_p->index[j];
  D.5182 = (long unsigned int) D.5181;
  if (D.5182 > 4095) goto <D.5183>; else goto <D.5184>;
  <D.5183>:
  D.5181 = index_p->index[j];
  D.5185 = D.5181->hb_map;
  GC_invalid_map.15 = GC_invalid_map;
  if (D.5185 != GC_invalid_map.15) goto <D.5187>; else goto <D.5188>;
  <D.5187>:
  D.5189 = index_p->key;
  D.5190 = D.5189 << 10;
  D.5191 = (long unsigned int) j;
  D.5192 = D.5190 + D.5191;
  D.5193 = D.5192 << 12;
  D.5194 = (struct hblk *) D.5193;
  fn (D.5194, client_data);
  <D.5188>:
  j = j + -1;
  goto <D.5195>;
  <D.5184>:
  D.5181 = index_p->index[j];
  if (D.5181 == 0B) goto <D.5196>; else goto <D.5197>;
  <D.5196>:
  j = j + -1;
  goto <D.5198>;
  <D.5197>:
  j.16 = (unsigned int) j;
  D.5181 = index_p->index[j];
  D.5200 = (long int) D.5181;
  D.5201 = (unsigned int) D.5200;
  D.5202 = j.16 - D.5201;
  j = (int) D.5202;
  <D.5198>:
  <D.5195>:
  <D.5022>:
  if (j >= 0) goto <D.5021>; else goto <D.5023>;
  <D.5023>:
  index_p = index_p->asc_link;
  <D.5025>:
  if (index_p != 0B) goto <D.5024>; else goto <D.5026>;
  <D.5026>:
}


GC_next_used_block (struct hblk * h)
{
  long unsigned int h.17;
  long unsigned int D.5204;
  long unsigned int D.5205;
  long unsigned int D.5206;
  struct bottom_index * D.5208;
  long unsigned int D.5212;
  long unsigned int hhdr.18;
  map_entry_type * D.5217;
  map_entry_type * GC_invalid_map.19;
  struct hblk * D.5221;
  long unsigned int D.5222;
  long unsigned int D.5223;
  long unsigned int D.5224;
  long unsigned int D.5225;
  long unsigned int D.5226;
  register struct bottom_index * bi;
  register word j;

  h.17 = (long unsigned int) h;
  D.5204 = h.17 >> 12;
  j = D.5204 & 1023;
  {
    register word hi;
    register struct bottom_index * _bi;

    h.17 = (long unsigned int) h;
    hi = h.17 >> 22;
    D.5205 = hi & 2047;
    _bi = GC_arrays._top_index[D.5205];
    goto <D.5035>;
    <D.5034>:
    _bi = _bi->hash_link;
    <D.5035>:
    D.5206 = _bi->key;
    if (D.5206 != hi) goto <D.5207>; else goto <D.5036>;
    <D.5207>:
    D.5208 = GC_arrays._all_nils;
    if (D.5208 != _bi) goto <D.5034>; else goto <D.5036>;
    <D.5036>:
    bi = _bi;
  }
  D.5208 = GC_arrays._all_nils;
  if (D.5208 == bi) goto <D.5209>; else goto <D.5210>;
  <D.5209>:
  {
    register word hi;

    h.17 = (long unsigned int) h;
    hi = h.17 >> 22;
    bi = GC_all_bottom_indices;
    goto <D.5039>;
    <D.5038>:
    bi = bi->asc_link;
    <D.5039>:
    if (bi != 0B) goto <D.5211>; else goto <D.5040>;
    <D.5211>:
    D.5212 = bi->key;
    if (D.5212 < hi) goto <D.5038>; else goto <D.5040>;
    <D.5040>:
    j = 0;
  }
  <D.5210>:
  goto <D.5046>;
  <D.5045>:
  goto <D.5043>;
  <D.5042>:
  {
    struct hdr * hhdr;

    hhdr = bi->index[j];
    hhdr.18 = (long unsigned int) hhdr;
    if (hhdr.18 <= 4095) goto <D.5214>; else goto <D.5215>;
    <D.5214>:
    j = j + 1;
    goto <D.5216>;
    <D.5215>:
    D.5217 = hhdr->hb_map;
    GC_invalid_map.19 = GC_invalid_map;
    if (D.5217 != GC_invalid_map.19) goto <D.5219>; else goto <D.5220>;
    <D.5219>:
    D.5212 = bi->key;
    D.5222 = D.5212 << 10;
    D.5223 = D.5222 + j;
    D.5224 = D.5223 << 12;
    D.5221 = (struct hblk *) D.5224;
    return D.5221;
    <D.5220>:
    D.5225 = hhdr->hb_sz;
    D.5226 = D.5225 >> 12;
    j = D.5226 + j;
    <D.5216>:
  }
  <D.5043>:
  if (j <= 1023) goto <D.5042>; else goto <D.5044>;
  <D.5044>:
  j = 0;
  bi = bi->asc_link;
  <D.5046>:
  if (bi != 0B) goto <D.5045>; else goto <D.5047>;
  <D.5047>:
  D.5221 = 0B;
  return D.5221;
}


GC_prev_block (struct hblk * h)
{
  long unsigned int h.20;
  long unsigned int D.5229;
  long int D.5230;
  long unsigned int D.5231;
  long unsigned int D.5232;
  struct bottom_index * D.5234;
  long unsigned int D.5238;
  long unsigned int hhdr.21;
  long int hhdr.22;
  struct hblk * D.5247;
  long unsigned int D.5248;
  long unsigned int j.23;
  long unsigned int D.5250;
  long unsigned int D.5251;
  register struct bottom_index * bi;
  register signed_word j;

  h.20 = (long unsigned int) h;
  D.5229 = h.20 >> 12;
  D.5230 = (long int) D.5229;
  j = D.5230 & 1023;
  {
    register word hi;
    register struct bottom_index * _bi;

    h.20 = (long unsigned int) h;
    hi = h.20 >> 22;
    D.5231 = hi & 2047;
    _bi = GC_arrays._top_index[D.5231];
    goto <D.5056>;
    <D.5055>:
    _bi = _bi->hash_link;
    <D.5056>:
    D.5232 = _bi->key;
    if (D.5232 != hi) goto <D.5233>; else goto <D.5057>;
    <D.5233>:
    D.5234 = GC_arrays._all_nils;
    if (D.5234 != _bi) goto <D.5055>; else goto <D.5057>;
    <D.5057>:
    bi = _bi;
  }
  D.5234 = GC_arrays._all_nils;
  if (D.5234 == bi) goto <D.5235>; else goto <D.5236>;
  <D.5235>:
  {
    register word hi;

    h.20 = (long unsigned int) h;
    hi = h.20 >> 22;
    bi = GC_all_bottom_indices_end;
    goto <D.5060>;
    <D.5059>:
    bi = bi->desc_link;
    <D.5060>:
    if (bi != 0B) goto <D.5237>; else goto <D.5061>;
    <D.5237>:
    D.5238 = bi->key;
    if (D.5238 > hi) goto <D.5059>; else goto <D.5061>;
    <D.5061>:
    j = 1023;
  }
  <D.5236>:
  goto <D.5067>;
  <D.5066>:
  goto <D.5064>;
  <D.5063>:
  {
    struct hdr * hhdr;

    hhdr = bi->index[j];
    if (hhdr == 0B) goto <D.5239>; else goto <D.5240>;
    <D.5239>:
    j = j + -1;
    goto <D.5241>;
    <D.5240>:
    hhdr.21 = (long unsigned int) hhdr;
    if (hhdr.21 <= 4095) goto <D.5243>; else goto <D.5244>;
    <D.5243>:
    hhdr.22 = (long int) hhdr;
    j = j - hhdr.22;
    goto <D.5246>;
    <D.5244>:
    D.5238 = bi->key;
    D.5248 = D.5238 << 10;
    j.23 = (long unsigned int) j;
    D.5250 = D.5248 + j.23;
    D.5251 = D.5250 << 12;
    D.5247 = (struct hblk *) D.5251;
    return D.5247;
    <D.5246>:
    <D.5241>:
  }
  <D.5064>:
  if (j >= 0) goto <D.5063>; else goto <D.5065>;
  <D.5065>:
  j = 1023;
  bi = bi->desc_link;
  <D.5067>:
  if (bi != 0B) goto <D.5066>; else goto <D.5068>;
  <D.5068>:
  D.5247 = 0B;
  return D.5247;
}


