rem: if (nlo > 1) sortlines (lo, nlo, temp);  if (nhi > 1) sortlines (hi, nhi, temp);  t = temp;  while (nlo && nhi) if (compare (lo - 1, hi - 1) <= 0) *--t = *--lo, --nlo; else *--t = *--hi, --nhi; while (nlo--) *--t = *--lo;  for (lo = lines, nlo = nlines - nhi, t = temp; nlo; --nlo) *--lo = *--t;
add: mergelines (lines, sorted_lo, nlo, hi, nhi); }
context: sortlines (struct line *lines, size_t nlines, struct line *temp){  register struct line *lo, *hi, *t;  register size_t nlo, nhi;  if (nlines == 2)    {      if (0 < compare (&lines[-1], &lines[-2]))	{	  struct line tmp = lines[-1];	  lines[-1] = lines[-2];	  lines[-2] = tmp;	}      return;    }  nlo = nlines / 2;  lo = lines;  nhi = nlines - nlo;  hi = lines - nlo;  if (nlo > 1)    sortlines (lo, nlo, temp);  if (nhi > 1)    sortlines (hi, nhi, temp);  t = temp;  while (nlo && nhi)    if (compare (lo - 1, hi - 1) <= 0)      *--t = *--lo, --nlo;    else      *--t = *--hi, --nhi;  while (nlo--)    *--t = *--lo;  for (lo = lines, nlo = nlines - nhi, t = temp; nlo; --nlo)    *--lo = *--t;}