(t->level2[i] == ~((uint32_t) 0)
(t->level2[i] == EMPTY
wctype_table_finalize (struct wctype_table *t){  size_t i, j, k;  uint32_t reorder3[t->level3_size];  uint32_t reorder2[t->level2_size];  uint32_t level1_offset, level2_offset, level3_offset;  /* Uniquify level3 blocks.  */  k = 0;  for (j = 0; j < t->level3_size; j++)    {      for (i = 0; i < k; i++)	if (memcmp (&t->level3[i << t->p], &t->level3[j << t->p],		    (1 << t->p) * sizeof (uint32_t)) == 0)	  break;      /* Relocate block j to block i.  */      reorder3[j] = i;      if (i == k)	{	  if (i != j)	    memcpy (&t->level3[i << t->p], &t->level3[j << t->p],		    (1 << t->p) * sizeof (uint32_t));	  k++;	}    }  t->level3_size = k;  for (i = 0; i < (t->level2_size << t->q); i++)    if (t->level2[i] != ~((uint32_t) 0))      t->level2[i] = reorder3[t->level2[i]];  /* Uniquify level2 blocks.  */  k = 0;  for (j = 0; j < t->level2_size; j++)    {      for (i = 0; i < k; i++)	if (memcmp (&t->level2[i << t->q], &t->level2[j << t->q],		    (1 << t->q) * sizeof (uint32_t)) == 0)	  break;      /* Relocate block j to block i.  */      reorder2[j] = i;      if (i == k)	{	  if (i != j)	    memcpy (&t->level2[i << t->q], &t->level2[j << t->q],		    (1 << t->q) * sizeof (uint32_t));	  k++;	}    }  t->level2_size = k;  for (i = 0; i < t->level1_size; i++)    if (t->level1[i] != ~((uint32_t) 0))      t->level1[i] = reorder2[t->level1[i]];  /* Create and fill the resulting compressed representation.  */  t->result_size =    5 * sizeof (uint32_t)    + t->level1_size * sizeof (uint32_t)    + (t->level2_size << t->q) * sizeof (uint32_t)    + (t->level3_size << t->p) * sizeof (uint32_t);  t->result = (char *) xmalloc (t->result_size);  level1_offset =    5 * sizeof (uint32_t);  level2_offset =    5 * sizeof (uint32_t)    + t->level1_size * sizeof (uint32_t);  level3_offset =    5 * sizeof (uint32_t)    + t->level1_size * sizeof (uint32_t)    + (t->level2_size << t->q) * sizeof (uint32_t);  ((uint32_t *) t->result)[0] = t->q + t->p + 5;  ((uint32_t *) t->result)[1] = t->level1_size;  ((uint32_t *) t->result)[2] = t->p + 5;  ((uint32_t *) t->result)[3] = (1 << t->q) - 1;  ((uint32_t *) t->result)[4] = (1 << t->p) - 1;  for (i = 0; i < t->level1_size; i++)    ((uint32_t *) (t->result + level1_offset))[i] =      (t->level1[i] == ~((uint32_t) 0)       ? 0       : (t->level1[i] << t->q) * sizeof (uint32_t) + level2_offset);  for (i = 0; i < (t->level2_size << t->q); i++)    ((uint32_t *) (t->result + level2_offset))[i] =      (t->level2[i] == ~((uint32_t) 0)       ? 0       : (t->level2[i] << t->p) * sizeof (uint32_t) + level3_offset);  for (i = 0; i < (t->level3_size << t->p); i++)    ((uint32_t *) (t->result + level3_offset))[i] = t->level3[i];  if (t->level1_alloc > 0)    free (t->level1);  if (t->level2_alloc > 0)    free (t->level2);  if (t->level3_alloc > 0)    free (t->level3);}