#include "externs.h"

void F245_initcol ()
/************/
{
  mem[curalign + 5 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh = curcmd;
  if (curcmd == 63)
    alignstate = 0;
  else
  {
    F134_backinput ();
    F140_begintokenlist ((int)mem[curalign + 3 - C2_memmin]._TAG._TAG1._int, (char)1);
  }
}

BOOLEAN F246_fincol ()
/*******************/
{
#ifdef M_XENIX
  T37_memoryword huge *memptr;
#else
  register T37_memoryword *memptr;
#endif
  register int /* was T32_halfword */ n;
  register T39_glueord o;
  register int /* was T32_halfword */ p;
  register int /* was T32_halfword */ q;
  register int /* was T32_halfword */ r;
  register int /* was T32_halfword */ s;
  register int /* was T32_halfword */ u;
  register long int   w;
  register T37_memoryword memhelp;

  q = mem[curalign - C2_memmin]._TAG._TAG3.hh.rh;
  if ((curalign == ((int)(-32768))) || (q == ((int)(-32768))))
    F42_confusion (763);
  p = mem[q - C2_memmin]._TAG._TAG3.hh.rh;
  if ((p == ((int)(-32768))) && (mem[curalign + 5 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh < 129))
    if (curloop != ((int)(-32768)))
    {
      p = mem[q - C2_memmin]._TAG._TAG3.hh.rh = F80_newnullbox ();
      memptr = &mem[p - C2_memmin];
#ifdef TRIPTEX
      memptr->_TAG._TAG3.hh._TAG._TAG1.lh = 2991;
#else
      memptr->_TAG._TAG3.hh._TAG._TAG1.lh = 29991;
#endif
      (memptr+1)->_TAG._TAG1._int = -1073741824;
      curloop = mem[curloop - C2_memmin]._TAG._TAG3.hh.rh;
#ifdef TRIPTEX
      q = 2996;
#else
      q = 29996;
#endif
      r = mem[curloop + 3 - C2_memmin]._TAG._TAG1._int;
      while (r != ((int)(-32768)))
      {
	q = mem[q - C2_memmin]._TAG._TAG3.hh.rh = F75_getavail ();
	memhelp = mem[r - C2_memmin];
	mem[q - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh = memhelp._TAG._TAG3.hh._TAG._TAG1.lh;
	r = memhelp._TAG._TAG3.hh.rh;
      }
      mem[q - C2_memmin]._TAG._TAG3.hh.rh = (int)(-32768);
      (memptr+3)->_TAG._TAG1._int = m29996->_TAG._TAG3.hh.rh;
#ifdef TRIPTEX
      q = 2996;
#else
      q = 29996;
#endif
      r = mem[curloop + 2 - C2_memmin]._TAG._TAG1._int;
      while (r != ((int)(-32768)))
      {
	q = mem[q - C2_memmin]._TAG._TAG3.hh.rh = F75_getavail ();
	memhelp = mem[r - C2_memmin];
	mem[q - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh = memhelp._TAG._TAG3.hh._TAG._TAG1.lh;
	r = memhelp._TAG._TAG3.hh.rh;
      }
      mem[q - C2_memmin]._TAG._TAG3.hh.rh = (int)(-32768);
      (memptr+2)->_TAG._TAG1._int = m29996->_TAG._TAG3.hh.rh;
      curloop = mem[curloop - C2_memmin]._TAG._TAG3.hh.rh;
      memptr->_TAG._TAG3.hh.rh = F87_newglue (mem[curloop + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh);
    }
    else
    {
      F19_printnl (134);
      F17_print (764);
      F20_printesc (752);
      helpptr = 3;
      helpline[2] = 765;
      helpline[1] = 766;
      helpline[0] = 767;
      mem[curalign + 5 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh = 129;
      F39_error ();
    }
  if (mem[curalign + 5 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh != 128)
  {
    F135_unsave ();
    F125_newsavelevel (6);
    {
      if (curlist.modefield == (-101))
      {
	adjusttail = curtail;
	u = F208_hpack (mem[curlist.headfield - C2_memmin]._TAG._TAG3.hh.rh, 0L, 1);
	w = mem[u + 1 - C2_memmin]._TAG._TAG1._int;
	curtail = adjusttail;
	adjusttail = (int)(-32768);
      }
      else
      {
	u = F209_vpackage (mem[curlist.headfield - C2_memmin]._TAG._TAG3.hh.rh, 0L, 1, 0L);
	w = mem[u + 3 - C2_memmin]._TAG._TAG1._int;
      }
      n = -128;
      if (curspan != curalign)
      {
	q = curspan;
	do
	{
	  n++;
	  q = mem[mem[q - C2_memmin]._TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh;
	}
	while (q != curalign);
	if (n > 127)
	  F42_confusion (768);
	q = curspan;
	{
	  register int shelp;
	  while (mem[(shelp=mem[q - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh) - C2_memmin]._TAG._TAG3.hh.rh < n)
	    q = shelp;
	  if (mem[shelp - C2_memmin]._TAG._TAG3.hh.rh > n)
	  {
	    s = F77_getnode (2L);
	    memptr = &mem[s - C2_memmin];
	    memptr->_TAG._TAG3.hh._TAG._TAG1.lh = shelp;
	    memptr->_TAG._TAG3.hh.rh = n;
	    mem[q - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh = s;
	    (memptr+1)->_TAG._TAG1._int = w;
	  }
	  else
	    if (mem[(shelp=mem[q - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh) + 1 - C2_memmin]._TAG._TAG1._int < w)
	      mem[shelp + 1 - C2_memmin]._TAG._TAG1._int = w;
	}
      }
      else
	if (w > mem[curalign + 1 - C2_memmin]._TAG._TAG1._int)
	  mem[curalign + 1 - C2_memmin]._TAG._TAG1._int = w;
      memptr = &mem[u - C2_memmin];
      memptr->_TAG._TAG3.hh._TAG._TAG2.b0 = 13;
      memptr->_TAG._TAG3.hh._TAG._TAG2.b1 = n;
      if (totalstretch[3] != 0)
	o = 3;
      else
	if (totalstretch[2] != 0)
	  o = 2;
	else
	  if (totalstretch[1] != 0)
	    o = 1;
	  else
	    o = 0;
      (memptr+5)->_TAG._TAG3.hh._TAG._TAG2.b1 = o;
      (memptr+6)->_TAG._TAG1._int = totalstretch[o];
      if (totalshrink[3] != 0)
	o = 3;
      else
	if (totalshrink[2] != 0)
	  o = 2;
	else
	  if (totalshrink[1] != 0)
	    o = 1;
	  else
	    o = 0;
      (memptr+5)->_TAG._TAG3.hh._TAG._TAG2.b0 = o;
      (memptr+4)->_TAG._TAG1._int = totalshrink[o];
      F113_popnest ();
      curlist.tailfield = mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = u;
    }
    curlist.tailfield = mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = F87_newglue (mem[mem[curalign - C2_memmin]._TAG._TAG3.hh.rh + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh);
    mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b1 = 12;
    if (mem[curalign + 5 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh >= 129)
      return(TRUE);
    F243_initspan (p);
  }
  alignstate = 1000000;
  do
    F153_getxtoken (null)
  while (curcmd == 10);
  curalign = p;
  F245_initcol ();
  return(FALSE);
}

void F247_finrow ()
/***********/
{
  register int /* was T32_halfword */ p;
#ifdef M_XENIX
  T37_memoryword huge *memptr;
#else
  register T37_memoryword *memptr;
#endif

  if (curlist.modefield == (-101))
  {
    p = F208_hpack (mem[curlist.headfield - C2_memmin]._TAG._TAG3.hh.rh, 0L, 1);
    F113_popnest ();
    F210_appendtovlist (p);
    if (curhead != curtail)
    {
      mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = mem[curhead - C2_memmin]._TAG._TAG3.hh.rh;
      curlist.tailfield = curtail;
    }
  }
  else
  {
    p = F209_vpackage (mem[curlist.headfield - C2_memmin]._TAG._TAG3.hh.rh, 0L, 1, 1073741823);
    F113_popnest ();
    curlist.tailfield = mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = p;
    curlist.auxfield = 1000;
  }
  memptr = &mem[p - C2_memmin];
  memptr->_TAG._TAG3.hh._TAG._TAG2.b0 = 13;
  (memptr+6)->_TAG._TAG1._int = 0;
  if (eqtb[4064]._TAG._TAG3.hh.rh != ((int)(-32768)))
    F140_begintokenlist (eqtb[4064]._TAG._TAG3.hh.rh, (char)13);
  F240_alignpeek ();
}

void F251_finalign ()
/*************/
{
#ifdef M_XENIX
  T37_memoryword huge *memptr, huge *memptr1, huge *memptr2, huge *memptr3;
#else
  register T37_memoryword *memptr,*memptr1,*memptr2,*memptr3;
#endif
  register int /* was T32_halfword */ n;
  register long int   o;
  register int /* was T32_halfword */ p;
  register int /* was T32_halfword */ q;
  register int /* was T32_halfword */ r;
  register long int   rulesave;
  register int /* was T32_halfword */ s;
  register long int   t;
  register int /* was T32_halfword */ u;
  register int /* was T32_halfword */ v;
  register long int   w;

  if (curgroup != 6)
    F42_confusion (769);
  F135_unsave ();
  if (curgroup != 6)
    F42_confusion (770);
  F135_unsave ();
  if (nest[nestptr - 1].modefield == 201)
    o = eqtb[5716]._TAG._TAG1._int;
  else
    o = 0;
  q = mem[m29992->_TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh;
  do
  {
    memptr = &mem[q - C2_memmin];
    F76_flushlist ((int)((memptr+3)->_TAG._TAG1._int));
    F76_flushlist ((int)((memptr+2)->_TAG._TAG1._int));
    p = mem[memptr->_TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh;
    if ((memptr+1)->_TAG._TAG1._int == (-1073741824))
    {
      (memptr+1)->_TAG._TAG1._int = 0;
      r = memptr->_TAG._TAG3.hh.rh;
      s = mem[r + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh;
#ifdef TRIPTEX
      if (s != 1)
      {
	mem[1 - C2_memmin]._TAG._TAG3.hh.rh++;
	F108_deleteglueref (s);
	mem[r + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh = 1;
      }
    }
    if (memptr->_TAG._TAG3.hh._TAG._TAG1.lh != 2991)
#else
      if (s != (-30000))
      {
	m_30000->_TAG._TAG3.hh.rh++;
	F108_deleteglueref (s);
	mem[r + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh = -30000;
      }
    }
    if (memptr->_TAG._TAG3.hh._TAG._TAG1.lh != 29991)
#endif
    {
      t = (memptr+1)->_TAG._TAG1._int + mem[mem[memptr->_TAG._TAG3.hh.rh + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh + 1 - C2_memmin]._TAG._TAG1._int;
      r = memptr->_TAG._TAG3.hh._TAG._TAG1.lh;
#ifdef TRIPTEX
      s = 2991;
#else
      s = 29991;
#endif
      mem[s - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh = p;
      n = -127;
      do
      {
	memptr1 = &mem[r - C2_memmin];
	(memptr1+1)->_TAG._TAG1._int -= t;
	u = memptr1->_TAG._TAG3.hh._TAG._TAG1.lh;
	while (memptr1->_TAG._TAG3.hh.rh > n)
	{
	  s = mem[s - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh;
	  n = mem[mem[s - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh - C2_memmin]._TAG._TAG3.hh.rh + 1;
	}
	if (memptr1->_TAG._TAG3.hh.rh < n)
	{
	  memptr2 = &mem[s - C2_memmin];
	  memptr1->_TAG._TAG3.hh._TAG._TAG1.lh = memptr2->_TAG._TAG3.hh._TAG._TAG1.lh;
	  memptr2->_TAG._TAG3.hh._TAG._TAG1.lh = r;
	  memptr1->_TAG._TAG3.hh.rh--;
	  s = r;
	}
	else
	{
	  register int shelp;
	  if ((memptr1+1)->_TAG._TAG1._int > mem[(shelp=mem[s - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh) + 1 - C2_memmin]._TAG._TAG1._int)
	    mem[shelp + 1 - C2_memmin]._TAG._TAG1._int = (memptr1+1)->_TAG._TAG1._int;
	  F78_freenode (r, 2);
	}
	r = u;
      }
#ifdef TRIPTEX
      while (r != 2991);
#else
      while (r != 29991);
#endif
    }
    memptr->_TAG._TAG3.hh._TAG._TAG2.b0 = 13;
    memptr->_TAG._TAG3.hh._TAG._TAG2.b1 = -128;
    (memptr+2)->_TAG._TAG1._int =  (memptr+3)->_TAG._TAG1._int =  (memptr+4)->_TAG._TAG1._int = (memptr+6)->_TAG._TAG1._int = 0;
    (memptr+5)->_TAG._TAG3.hh._TAG._TAG2.b1 = (memptr+5)->_TAG._TAG3.hh._TAG._TAG2.b0 = 0;
    q = p;
  }
  while (q != ((int)(-32768)));
  saveptr -= 2;
  packbeginline = -curlist.mlfield;
  if (curlist.modefield == (-1))
  {
    rulesave = eqtb[5717]._TAG._TAG1._int;
    eqtb[5717]._TAG._TAG1._int = 0;
    p = F208_hpack (m29992->_TAG._TAG3.hh.rh, savestack[saveptr + 1]._TAG._TAG1._int, (int)savestack[saveptr]._TAG._TAG1._int);
    eqtb[5717]._TAG._TAG1._int = rulesave;
  }
  else
  {
    q = mem[m29992->_TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh;
    do
    {
      memptr = &mem[q - C2_memmin];
      (memptr+3)->_TAG._TAG1._int = (memptr+1)->_TAG._TAG1._int;
      (memptr+1)->_TAG._TAG1._int = 0;
      q = mem[memptr->_TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh;
    }
    while (q != ((int)(-32768)));
    p = F209_vpackage (m29992->_TAG._TAG3.hh.rh, savestack[saveptr + 1]._TAG._TAG1._int, (int)savestack[saveptr]._TAG._TAG1._int, 1073741823);
    q = mem[m29992->_TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh;
    do
    {
      memptr = &mem[q - C2_memmin];
      (memptr+1)->_TAG._TAG1._int = (memptr+3)->_TAG._TAG1._int;
      (memptr+3)->_TAG._TAG1._int = 0;
      q = mem[memptr->_TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh;
    }
    while (q != ((int)(-32768)));
  }
  packbeginline = 0;
  q = mem[curlist.headfield - C2_memmin]._TAG._TAG3.hh.rh;
  memptr1 = &mem[p - C2_memmin];
  while (q != ((int)(-32768)))
  {
    memptr = &mem[q - C2_memmin];
    if (memptr->_TAG._TAG3.hh._TAG._TAG2.b0 == 13)
    {
      if (curlist.modefield == (-1))
      {
	memptr->_TAG._TAG3.hh._TAG._TAG2.b0 = 0;
	(memptr+1)->_TAG._TAG1._int = (memptr1+1)->_TAG._TAG1._int;
      }
      else
      {
	memptr->_TAG._TAG3.hh._TAG._TAG2.b0 = 1;
	(memptr+3)->_TAG._TAG1._int = (memptr1+3)->_TAG._TAG1._int;
      }
      (memptr+5)->_TAG._TAG3.hh._TAG._TAG2.b1 = (memptr1+5)->_TAG._TAG3.hh._TAG._TAG2.b1;
      (memptr+5)->_TAG._TAG3.hh._TAG._TAG2.b0 = (memptr1+5)->_TAG._TAG3.hh._TAG._TAG2.b0;
#ifdef M_XENIX
      (memptr+6)->_TAG._TAG1._int = (memptr1+6)->_TAG._TAG1._int;
#else
      (memptr+6)->_TAG._TAG2.gr = (memptr1+6)->_TAG._TAG2.gr;
#endif
      (memptr+4)->_TAG._TAG1._int = o;
      r = mem[(memptr+5)->_TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh;
      s = mem[(memptr1+5)->_TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh;
      do
      {
	n = mem[r - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b1;
	t = mem[s + 1 - C2_memmin]._TAG._TAG1._int;
	w = t;
#ifdef TRIPTEX
	u = 2996;
#else
	u = 29996;
#endif
	while (n > (-128))
	{
	  n--;
	  s = mem[s - C2_memmin]._TAG._TAG3.hh.rh;
	  v = mem[s + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh;
	  memptr2 = &mem[u - C2_memmin];
	  memptr2->_TAG._TAG3.hh.rh = F87_newglue (v);
	  u = memptr2->_TAG._TAG3.hh.rh;
	  mem[u - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b1 = 12;
	  memptr2 = &mem[v - C2_memmin];
	  t += (memptr2+1)->_TAG._TAG1._int;
	  if ((memptr1+5)->_TAG._TAG3.hh._TAG._TAG2.b0 == 1)
	  {
	    if (memptr2->_TAG._TAG3.hh._TAG._TAG2.b0 == (memptr1+5)->_TAG._TAG3.hh._TAG._TAG2.b1)
	      t += ROUND ((double)((memptr1+6)->_TAG._TAG2.gr) * (double)((memptr2+2)->_TAG._TAG1._int));
	  }
	  else
	    if ((memptr1+5)->_TAG._TAG3.hh._TAG._TAG2.b0 == 2)
	    {
	      if (memptr2->_TAG._TAG3.hh._TAG._TAG2.b1 == (memptr1+5)->_TAG._TAG3.hh._TAG._TAG2.b1)
		t -= ROUND ((double)((memptr1+6)->_TAG._TAG2.gr) * (double)((memptr2+3)->_TAG._TAG1._int));
	    }
	  s = mem[s - C2_memmin]._TAG._TAG3.hh.rh;
	  memptr3 = &mem[u - C2_memmin];
	  memptr2 = &mem[s - C2_memmin];
	  memptr3->_TAG._TAG3.hh.rh = F80_newnullbox ();
	  u = memptr3->_TAG._TAG3.hh.rh;
	  memptr3 = &mem[u - C2_memmin];
	  t += (memptr2+1)->_TAG._TAG1._int;
	  if (curlist.modefield == (-1))
	    (memptr3+1)->_TAG._TAG1._int = (memptr2+1)->_TAG._TAG1._int;
	  else
	  {
	    memptr3->_TAG._TAG3.hh._TAG._TAG2.b0 = 1;
	    (memptr3+3)->_TAG._TAG1._int = (memptr2+1)->_TAG._TAG1._int;
	  }
	}
	memptr3 = &mem[r - C2_memmin];
	if (curlist.modefield == (-1))
	{
	  (memptr3+3)->_TAG._TAG1._int = (memptr+3)->_TAG._TAG1._int;
	  (memptr3+2)->_TAG._TAG1._int = (memptr+2)->_TAG._TAG1._int;
	  if (t == (memptr3+1)->_TAG._TAG1._int)
	  {
	    (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b0 = 0;
	    (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b1 = 0;
#ifdef M_XENIX
	    (memptr3+6)->_TAG._TAG1._int = 0;
#else
	    (memptr3+6)->_TAG._TAG2.gr = (float)0.0;
#endif
	  }
	  else
	    if (t > (memptr3+1)->_TAG._TAG1._int)
	    {
	      (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b0 = 1;
	      if ((memptr3+6)->_TAG._TAG1._int == 0)
#ifdef M_XENIX
		;
#else
		(memptr3+6)->_TAG._TAG2.gr = (float)0.0;
#endif
	      else
		(memptr3+6)->_TAG._TAG2.gr = ((float)(t - (memptr3+1)->_TAG._TAG1._int) / (float)((memptr3+6)->_TAG._TAG1._int));
	    }
	    else
	    {
	      (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b1 = (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b0;
	      (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b0 = 2;
	      if ((memptr3+4)->_TAG._TAG1._int == 0)
#ifdef M_XENIX
		(memptr3+6)->_TAG._TAG1._int = 0;
#else
		(memptr3+6)->_TAG._TAG2.gr = (float)0.0;
#endif
	      else
		if (((memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b1 == 0) && (((memptr3+1)->_TAG._TAG1._int - t) > (memptr3+4)->_TAG._TAG1._int))
#ifdef M_XENIX
		  (memptr3+6)->_TAG._TAG1._int = 1065353216;
#else
		  (memptr3+6)->_TAG._TAG2.gr = (float)1.0;
#endif
		else
		  (memptr3+6)->_TAG._TAG2.gr = ((float)((memptr3+1)->_TAG._TAG1._int - t) / (float)((memptr3+4)->_TAG._TAG1._int));
	    }
	  (memptr3+1)->_TAG._TAG1._int = w;
	  memptr3->_TAG._TAG3.hh._TAG._TAG2.b0 = 0;
	}
	else
	{
	  (memptr3+1)->_TAG._TAG1._int = (memptr+1)->_TAG._TAG1._int;
	  if (t == (memptr3+3)->_TAG._TAG1._int)
	  {
	    (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b0 = 0;
	    (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b1 = 0;
#ifdef M_XENIX
	    (memptr3+6)->_TAG._TAG1._int = 0;
#else
	    (memptr3+6)->_TAG._TAG2.gr = (float)0.0;
#endif
	  }
	  else
	    if (t > (memptr3+3)->_TAG._TAG1._int)
	    {
	      (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b0 = 1;
	      if ((memptr3+6)->_TAG._TAG1._int == 0)
#ifdef M_XENIX
		;
#else
		(memptr3+6)->_TAG._TAG2.gr = (float)0.0;
#endif
	      else
		(memptr3+6)->_TAG._TAG2.gr = ((float)(t - (memptr3+3)->_TAG._TAG1._int) / (float)((memptr3+6)->_TAG._TAG1._int));
	    }
	    else
	    {
	      (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b1 = (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b0;
	      (memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b0 = 2;
	      if ((memptr3+4)->_TAG._TAG1._int == 0)
#ifdef M_XENIX
		(memptr3+6)->_TAG._TAG1._int = 0;
#else
		(memptr3+6)->_TAG._TAG2.gr = (float)0.0;
#endif
	      else
		if (((memptr3+5)->_TAG._TAG3.hh._TAG._TAG2.b1 == 0) && (((memptr3+3)->_TAG._TAG1._int - t) > (memptr3+4)->_TAG._TAG1._int))
#ifdef M_XENIX
		  (memptr3+6)->_TAG._TAG1._int = 1065353216;
#else
		  (memptr3+6)->_TAG._TAG2.gr = (float)1.0;
#endif
		else
		  (memptr3+6)->_TAG._TAG2.gr = ((float)((memptr3+3)->_TAG._TAG1._int - t) / (float)((memptr3+4)->_TAG._TAG1._int));
	    }
	  (memptr3+3)->_TAG._TAG1._int = w;
	  memptr3->_TAG._TAG3.hh._TAG._TAG2.b0 = 1;
	}
	(memptr3+4)->_TAG._TAG1._int = 0;
#ifdef TRIPTEX
	if (u != 2996)
#else
	if (u != 29996)
#endif
	{
	  mem[u - C2_memmin]._TAG._TAG3.hh.rh = memptr3->_TAG._TAG3.hh.rh;
	  memptr3->_TAG._TAG3.hh.rh = m29996->_TAG._TAG3.hh.rh;
	  r = u;
	}
	r = mem[mem[r - C2_memmin]._TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh;
	s = mem[mem[s - C2_memmin]._TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh;
      }
      while (r != ((int)(-32768)));
    }
    else
      if (memptr->_TAG._TAG3.hh._TAG._TAG2.b0 == 2)
      {
	memptr1 = &mem[p - C2_memmin];
	if ((memptr+1)->_TAG._TAG1._int == (-1073741824))
	  (memptr+1)->_TAG._TAG1._int = (memptr1+1)->_TAG._TAG1._int;
	if ((memptr+3)->_TAG._TAG1._int == (-1073741824))
	  (memptr+3)->_TAG._TAG1._int = (memptr1+3)->_TAG._TAG1._int;
	if ((memptr+2)->_TAG._TAG1._int == (-1073741824))
	  (memptr+2)->_TAG._TAG1._int = (memptr1+2)->_TAG._TAG1._int;
      }
     q = memptr->_TAG._TAG3.hh.rh;
  }
  F109_flushnodelist (p);
  F238_popalignment ();
  t = curlist.auxfield;
  p = mem[curlist.headfield - C2_memmin]._TAG._TAG3.hh.rh;
  q = curlist.tailfield;
  F113_popnest ();
  if (curlist.modefield == 201)
  {
    F248_doassignments ();
    if (curcmd != 3)
    {
      F19_printnl (134);
      F17_print (1018);
      helpptr = 2;
      helpline[1] = 748;
      helpline[0] = 749;
      F142_backerror ();
    }
    else
    {
      F153_getxtoken (null);
      if (curcmd != 3)
      {
	F19_printnl (134);
	F17_print (1014);
	helpptr = 2;
	helpline[1] = 1015;
	helpline[0] = 1016;
	F142_backerror ();
      }
    }
    F113_popnest ();
    mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = F90_newpenalty (eqtb[5278]._TAG._TAG1._int);
    curlist.tailfield = mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh;
    curlist.tailfield = mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = F86_newparamglue (3);
    mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = p;
    if (p != ((int)(-32768)))
      curlist.tailfield = q;
    curlist.tailfield = mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = F90_newpenalty (eqtb[5279]._TAG._TAG1._int);
    curlist.tailfield = mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = F86_newparamglue (4);
    curlist.auxfield = t;
    F249_resumeafterdisplay ();
  }
  else
  {
    curlist.auxfield = t;
    mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = p;
    if (p != ((int)(-32768)))
      curlist.tailfield = q;
    if (curlist.modefield == 1)
      F250_buildpage ();
  }
}

void F240_alignpeek ()
/**************/
{
_20: 
  alignstate = 1000000;
  do
    F153_getxtoken (null)
  while (curcmd == 10);
  if (curcmd == 34)
  {
    F158_scanleftbrace ();
    F125_newsavelevel (7);
    if (curlist.modefield == (-1))
      F241_normalparagraph ();
  }
  else
    if (curcmd == 2)
      F251_finalign ();
    else
      if ((curcmd == 5) && (curchr == 130))
	goto _20;
      else
      {
	F244_initrow ();
	F245_initcol ();
      }
}

int /* was T32_halfword */ F252_finiteshrink (p)
/*******************************/
int /* was T32_halfword */ p;
{
  register int /* was T32_halfword */ q;

  if (noshrinkerroryet)
  {
    noshrinkerroryet = FALSE;
    F19_printnl (134);
    F17_print (771);
    helpptr = 5;
    helpline[4] = 772;
    helpline[3] = 773;
    helpline[2] = 774;
    helpline[1] = 775;
    helpline[0] = 776;
    F39_error ();
  }
  q = F85_newspec (p);
  mem[q - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b1 = 0;
  F108_deleteglueref (p);
  return(q);
}

void F253_trybreak (pi, breaktype)
/*************************/
register long int   pi;
#ifdef VAX
register int breaktype;
#else
register T29_smallnumber breaktype;
#endif
{
#ifdef M_XENIX
  T37_memoryword huge *memptr, huge *memptr1;
#else
  register T37_memoryword *memptr,*memptr1;
#endif
  register BOOLEAN artificialbadness;
  register int /* was T32_halfword */ b;
  register long int   d;
  register int   fitclass;
  register int /* was T32_halfword */ l;
  register long int   linewidth;
  register BOOLEAN nobreakyet;
  register BOOLEAN noderstaysactive;
  register int /* was T32_halfword */ oldl;
  register int /* was T32_halfword */ prevprevr;
  register int /* was T32_halfword */ prevr;
  register int /* was T32_halfword */ q;
  register int /* was T32_halfword */ r;
  register int /* was T32_halfword */ s;
  register int /* was T32_halfword */ savelink;
  register long int   shortfall;
  register T31_quarterword t;
  register int /* was T32_halfword */ v;
  register long help;
  register int shelp;
  register T37_memoryword memhelp;

  if (pi >= 10000)
    goto _10;
  if (pi <= -10000)
    pi = -10000;
  nobreakyet = TRUE;
#ifdef TRIPTEX
  prevr = 2993;
#else
  prevr = 29993;
#endif
  oldl = 0;
  *(sixword
#ifdef M_XENIX
near
#endif
*)(&curactivewidth[0]) = *(sixword
#ifdef M_XENIX
near
#endif
*)(&activewidth[0]);
/*  curactivewidth[0] = activewidth[0];
  curactivewidth[1] = activewidth[1];
  curactivewidth[2] = activewidth[2];
  curactivewidth[3] = activewidth[3];
  curactivewidth[4] = activewidth[4];
  curactivewidth[5] = activewidth[5]; */
  while (TRUE)
  {
_22: 
    r = mem[prevr - C2_memmin]._TAG._TAG3.hh.rh;
    memptr = &mem[r - C2_memmin];
    if (memptr->_TAG._TAG3.hh._TAG._TAG2.b0 == 2)
    {
      curactivewidth[0] += (memptr+1)->_TAG._TAG1._int;
      curactivewidth[1] += (memptr+2)->_TAG._TAG1._int;
      curactivewidth[2] += (memptr+3)->_TAG._TAG1._int;
      curactivewidth[3] += (memptr+4)->_TAG._TAG1._int;
      curactivewidth[4] += (memptr+5)->_TAG._TAG1._int;
      curactivewidth[5] += (memptr+6)->_TAG._TAG1._int;
      prevprevr = prevr;
      prevr = r;
      goto _22;
    }
    l = (memptr+1)->_TAG._TAG3.hh._TAG._TAG1.lh;
    if (l > oldl)
    {
#ifdef TRIPTEX
      if ((minimumdemerits < 1073741823) && ((oldl != easyline) || (r == 2993)))
#else
      if ((minimumdemerits < 1073741823) && ((oldl != easyline) || (r == 29993)))
#endif
      {
	if (nobreakyet)
	{
	  nobreakyet = FALSE;
	  *(sixword
#ifdef M_XENIX
near
#endif
*)(&breakwidth[0]) = *(sixword
#ifdef M_XENIX
near
#endif
*)(&background[0]);
	/*  breakwidth[0] = background[0];
	  breakwidth[1] = background[1];
	  breakwidth[2] = background[2];
	  breakwidth[3] = background[3];
	  breakwidth[4] = background[4];
	  breakwidth[5] = background[5]; */
	  if ((breaktype == 0) || (curp == -32768))
	  {
	    s = curp;
	    while (s != -32768)
	    {
	      if (s >= himemmin)
		goto _30;
	      memptr = &mem[s - C2_memmin];
	      switch (memptr->_TAG._TAG3.hh._TAG._TAG2.b0)
	      {
		case 10: 
		  v = (memptr+1)->_TAG._TAG3.hh._TAG._TAG1.lh;
		  memptr1 = &mem[v - C2_memmin];
		  breakwidth[0] -= (memptr1+1)->_TAG._TAG1._int;
		  breakwidth[1 + memptr1->_TAG._TAG3.hh._TAG._TAG2.b0] -= (memptr1+2)->_TAG._TAG1._int;
		  breakwidth[5] -= (memptr1+3)->_TAG._TAG1._int;
		  break;
		case 12: 
		  break;
		case 9: 
		case 11: 
		  if (memptr->_TAG._TAG3.hh._TAG._TAG2.b1 == 2)
		    goto _30;
		  else
		    breakwidth[0] -= (memptr+1)->_TAG._TAG1._int;
		  break;
		default: 
		  goto _30;
		  break;
	      }
	      s = memptr->_TAG._TAG3.hh.rh;
	    }
	  }
	  else
	  {
	    t = mem[curp - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b1;
	    s = curp;
	    while (t > 0)
	    {
	      t--;
	      s = mem[s - C2_memmin]._TAG._TAG3.hh.rh;
	      memptr = &mem[s - C2_memmin];
	      if (s >= himemmin)
	      {
		f = memptr->_TAG._TAG3.hh._TAG._TAG2.b0;
		breakwidth[0] -= fontinfo[widthbase[f] + fontinfo[charbase[f] + memptr->_TAG._TAG3.hh._TAG._TAG2.b1]._TAG._TAG4.qqqq.b0]._TAG._TAG1._int;
	      }
	      else
		switch (memptr->_TAG._TAG3.hh._TAG._TAG2.b0)
		{
		  case 6: 
		    f = (memptr+1)->_TAG._TAG3.hh._TAG._TAG2.b0;
		    breakwidth[0] -= fontinfo[widthbase[f] + fontinfo[charbase[f] + (memptr+1)->_TAG._TAG3.hh._TAG._TAG2.b1]._TAG._TAG4.qqqq.b0]._TAG._TAG1._int;
		    break;
		  case 0: 
		  case 1: 
		  case 2: 
		  case 11: 
		    breakwidth[0] -= (memptr+1)->_TAG._TAG1._int;
		    break;
		  default: 
		    F42_confusion (777);
		    break;
		}
	    }
	    s = mem[curp + 1 - C2_memmin]._TAG._TAG3.hh.rh;
	    while (s != -32768)
	    {
	      memptr = &mem[s - C2_memmin];
	      if (s >= himemmin)
	      {
		f = memptr->_TAG._TAG3.hh._TAG._TAG2.b0;
		breakwidth[0] += fontinfo[widthbase[f] + fontinfo[charbase[f] + memptr->_TAG._TAG3.hh._TAG._TAG2.b1]._TAG._TAG4.qqqq.b0]._TAG._TAG1._int;
	      }
	      else
		switch (memptr->_TAG._TAG3.hh._TAG._TAG2.b0)
		{
		  case 6: 
		    f = (memptr+1)->_TAG._TAG3.hh._TAG._TAG2.b0;
		    breakwidth[0] += fontinfo[widthbase[f] + fontinfo[charbase[f] + (memptr+1)->_TAG._TAG3.hh._TAG._TAG2.b1]._TAG._TAG4.qqqq.b0]._TAG._TAG1._int;
		    break;
		  case 0: 
		  case 1: 
		  case 2: 
		  case 11: 
		    breakwidth[0] += (memptr+1)->_TAG._TAG1._int;
		    break;
		  default: 
		    F42_confusion (778);
		    break;
		}
	      s = memptr->_TAG._TAG3.hh.rh;
	    }
	    breakwidth[0] += discwidth;
	  }
      _30: 
	  ;
	}
	memptr = &mem[prevr - C2_memmin];
	if (memptr->_TAG._TAG3.hh._TAG._TAG2.b0 == 2)
	{
	  (memptr+1)->_TAG._TAG1._int += breakwidth[0] - curactivewidth[0];
	  (memptr+2)->_TAG._TAG1._int += breakwidth[1] - curactivewidth[1];
	  (memptr+3)->_TAG._TAG1._int += breakwidth[2] - curactivewidth[2];
	  (memptr+4)->_TAG._TAG1._int += breakwidth[3] - curactivewidth[3];
	  (memptr+5)->_TAG._TAG1._int += breakwidth[4] - curactivewidth[4];
	  (memptr+6)->_TAG._TAG1._int += breakwidth[5] - curactivewidth[5];
	}
	else
#ifdef TRIPTEX
	  if (prevr == 2993)
#else
	  if (prevr == 29993)
#endif
	  {
	    *(sixword
#ifdef M_XENIX
near
#endif
*)(&activewidth[0]) = *(sixword
#ifdef M_XENIX
near
#endif
*)(&breakwidth[0]);
	  /* activewidth[0] = breakwidth[0];
	    activewidth[1] = breakwidth[1];
	    activewidth[2] = breakwidth[2];
	    activewidth[3] = breakwidth[3];
	    activewidth[4] = breakwidth[4];
	    activewidth[5] = breakwidth[5]; */
	  }
	  else
	  {
	    q = F77_getnode (7L);
	    memptr1 = &mem[q - C2_memmin];
	    memptr1->_TAG._TAG3.hh.rh = r;
	    memptr1->_TAG._TAG3.hh._TAG._TAG2.b0 = 2;
	    memptr1->_TAG._TAG3.hh._TAG._TAG2.b1 = 0;
	    (memptr1+1)->_TAG._TAG1._int = breakwidth[0] - curactivewidth[0];
	    (memptr1+2)->_TAG._TAG1._int = breakwidth[1] - curactivewidth[1];
	    (memptr1+3)->_TAG._TAG1._int = breakwidth[2] - curactivewidth[2];
	    (memptr1+4)->_TAG._TAG1._int = breakwidth[3] - curactivewidth[3];
	    (memptr1+5)->_TAG._TAG1._int = breakwidth[4] - curactivewidth[4];
	    (memptr1+6)->_TAG._TAG1._int = breakwidth[5] - curactivewidth[5];
	    memptr->_TAG._TAG3.hh.rh = q;
	    prevprevr = prevr;
	    prevr = q;
	  }
	help = eqtb[5283]._TAG._TAG1._int;
	minimumdemerits += (help > 0)?help:(-help);
	for (fitclass = 0; fitclass <= 3; fitclass++)
	{
	  if (minimaldemerits[fitclass] <= minimumdemerits)
	  {
	    q = F77_getnode (2L);
	    memptr = &mem[q - C2_memmin];
	    memptr->_TAG._TAG3.hh.rh = passive;
	    passive = q;
	    (memptr+1)->_TAG._TAG3.hh.rh = curp;
#if defined(INITEX) || defined(TRIPTEX)
	    passnumber++;
	    memptr->_TAG._TAG3.hh._TAG._TAG1.lh = passnumber;
# endif
	    (memptr+1)->_TAG._TAG3.hh._TAG._TAG1.lh = bestplace[fitclass];
	    q = F77_getnode (3L);
	    memptr = &mem[q - C2_memmin];
	    (memptr+1)->_TAG._TAG3.hh.rh = passive;
	    (memptr+1)->_TAG._TAG3.hh._TAG._TAG1.lh = bestplline[fitclass] + 1;
	    memptr->_TAG._TAG3.hh._TAG._TAG2.b1 = fitclass;
	    memptr->_TAG._TAG3.hh._TAG._TAG2.b0 = breaktype;
	    memptr->_TAG._TAG3.hh.rh = r;
	    (memptr+2)->_TAG._TAG1._int = minimaldemerits[fitclass];
	    mem[prevr - C2_memmin]._TAG._TAG3.hh.rh = q;
	    prevr = q;
#if defined(INITEX) || defined(TRIPTEX)
	    if (eqtb[5299]._TAG._TAG1._int > 0)
	    {
	      F19_printnl (779);
	      memptr1 = &mem[passive - C2_memmin];
	      F22_printint ((long)(memptr1->_TAG._TAG3.hh._TAG._TAG1.lh));
	      F17_print (780);
	      F22_printint ((long)((memptr+1)->_TAG._TAG3.hh._TAG._TAG1.lh - 1));
	      F16_printchar ((char)46);
	      F22_printint ((long)fitclass);
	      if (breaktype == 1)
		F16_printchar ((char)45);
	      F17_print (781);
	      F22_printint ((memptr+2)->_TAG._TAG1._int);
	      F17_print (782);
	      if ((memptr1+1)->_TAG._TAG3.hh._TAG._TAG1.lh == ((int)(-32768)))
		F16_printchar ((char)48);
	      else
		F22_printint ((long)mem[(memptr1+1)->_TAG._TAG3.hh._TAG._TAG1.lh - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh);
	    }
# endif
	  }
	  minimaldemerits[fitclass] = 1073741823;
	}
	minimumdemerits = 1073741823;
#ifdef TRIPTEX
	if (r != 2993)
#else
	if (r != 29993)
#endif
	{
	  q = F77_getnode (7L);
	  memptr = &mem[q - C2_memmin];
	  memptr->_TAG._TAG3.hh.rh = r;
	  memptr->_TAG._TAG3.hh._TAG._TAG2.b0 = 2;
	  memptr->_TAG._TAG3.hh._TAG._TAG2.b1 = 0;
	  (memptr+1)->_TAG._TAG1._int = curactivewidth[0] - breakwidth[0];
	  (memptr+2)->_TAG._TAG1._int = curactivewidth[1] - breakwidth[1];
	  (memptr+3)->_TAG._TAG1._int = curactivewidth[2] - breakwidth[2];
	  (memptr+4)->_TAG._TAG1._int = curactivewidth[3] - breakwidth[3];
	  (memptr+5)->_TAG._TAG1._int = curactivewidth[4] - breakwidth[4];
	  (memptr+6)->_TAG._TAG1._int = curactivewidth[5] - breakwidth[5];
	  mem[prevr - C2_memmin]._TAG._TAG3.hh.rh = q;
	  prevprevr = prevr;
	  prevr = q;
	}
      }
#ifdef TRIPTEX
      if (r == 2993)
#else
      if (r == 29993)
#endif
	goto _10;
      if (l > easyline)
      {
	linewidth = secondwidth;
	oldl = 32766;
      }
      else
      {
	oldl = l;
	if (l > lastspecialline)
	  linewidth = secondwidth;
	else
	  if (eqtb[4056]._TAG._TAG3.hh.rh == ((int)(-32768)))
	    linewidth = firstwidth;
	  else
	    linewidth = mem[eqtb[4056]._TAG._TAG3.hh.rh + l + l - C2_memmin]._TAG._TAG1._int;
      }
    }
#if defined(INITEX) || defined(TRIPTEX)
    artificialbadness = FALSE;
# endif
    shortfall = linewidth - curactivewidth[0];
    if (shortfall > 0)
      if (((curactivewidth[2] != 0) || (curactivewidth[3] != 0)) || (curactivewidth[4] != 0))
      {
	b = 0;
	fitclass = 2;
      }
      else
      {
	if (shortfall > 7230584)
	  if (curactivewidth[1] < 1663497)
	  {
	    b = 10000;
	    fitclass = 0;
	    goto _31;
	  }
	b = F71_badness (shortfall, curactivewidth[1]);
	if (b > 12)
	  if (b > 99)
	    fitclass = 0;
	  else
	    fitclass = 1;
	else
	  fitclass = 2;
    _31: 
	;
      }
    else
    {
      if ((-shortfall) > curactivewidth[5])
	b = 10001;
      else
	b = F71_badness (-shortfall, curactivewidth[5]);
      if (b > 12)
	fitclass = 3;
      else
	fitclass = 2;
    }
    if ((b > 10000) || (pi == (-10000)))
    {
#ifdef TRIPTEX
      if (((secondpass && (minimumdemerits == 1073741823)) && (mem[r - C2_memmin]._TAG._TAG3.hh.rh == 2993)) && (prevr == 2993))
#else
      if (((secondpass && (minimumdemerits == 1073741823)) && (mem[r - C2_memmin]._TAG._TAG3.hh.rh == 29993)) && (prevr == 29993))
#endif
      {
	b = 0;
#if defined(INITEX) || defined(TRIPTEX)
	artificialbadness = TRUE;
# endif
      }
      else
	if (b > threshold)
	  goto _60;
      noderstaysactive = FALSE;
    }
    else
    {
      prevr = r;
      if (b > threshold)
	goto _22;
      noderstaysactive = TRUE;
    }
    d = eqtb[5269]._TAG._TAG1._int + b;
    d *= d;
    if (pi != 0)
      if (pi > 0L)
	d += (pi * pi);
      else
	if (pi > (-10000L))
	  d -= (pi * pi);
    memhelp = mem[r - C2_memmin];
    if ((breaktype == 1) && (memhelp._TAG._TAG3.hh._TAG._TAG2.b0 == 1))
      if (curp != -32768)
	d += eqtb[5281]._TAG._TAG1._int;
      else
	d += eqtb[5282]._TAG._TAG1._int;
    help = fitclass - memhelp._TAG._TAG3.hh._TAG._TAG2.b1;
    if ((help > 1) || (help < -1))
      d += eqtb[5283]._TAG._TAG1._int;
#if defined(INITEX) || defined(TRIPTEX)
    if (eqtb[5299]._TAG._TAG1._int > 0)
    {
      if (printednode != curp)
      {
	F19_printnl (207);
	if (curp == -32768)
	  F93_shortdisplay (mem[printednode - C2_memmin]._TAG._TAG3.hh.rh);
	else
	{
	  memptr = &mem[curp - C2_memmin];
	  savelink = memptr->_TAG._TAG3.hh.rh;
	  memptr->_TAG._TAG3.hh.rh = -32768;
	  F19_printnl (207);
	  F93_shortdisplay (mem[printednode - C2_memmin]._TAG._TAG3.hh.rh);
	  memptr->_TAG._TAG3.hh.rh = savelink;
	}
	printednode = curp;
      }
      F19_printnl (64);
      if (curp == -32768)
	F20_printesc (455);
      else
      {
	shelp = mem[curp - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b0;
	if (shelp != 10)
	  if (shelp == 12)
	    F20_printesc (390);
	  else
	    if (shelp == 7)
	      F20_printesc (218);
	    else
	      if (shelp == 11)
		F20_printesc (209);
	      else
		F20_printesc (212);
      }
      F17_print (783);
      shelp = mem[r + 1 - C2_memmin]._TAG._TAG3.hh.rh;
      if (shelp == -32768)
	F16_printchar ((char)48);
      else
	F22_printint ((long)mem[shelp - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh);
      F17_print (784);
      if (artificialbadness)
	F16_printchar ((char)42);
      else
	F22_printint ((long)b);
      F17_print (785);
      F22_printint ((long)pi);
      F17_print (786);
      F22_printint ((long)d);
    }
# endif
     d += mem[r + 2 - C2_memmin]._TAG._TAG1._int;
    if (d <= minimaldemerits[fitclass])
    {
      minimaldemerits[fitclass] = d;
      bestplace[fitclass] = mem[r + 1 - C2_memmin]._TAG._TAG3.hh.rh;
      bestplline[fitclass] = l;
      if (d < minimumdemerits)
	minimumdemerits = d;
    }
    if (noderstaysactive)
      goto _22;
_60: 
    mem[prevr - C2_memmin]._TAG._TAG3.hh.rh = mem[r - C2_memmin]._TAG._TAG3.hh.rh;
    F78_freenode (r, 3);
#ifdef TRIPTEX
    if (prevr == 2993)
#else
    if (prevr == 29993)
#endif
    {
      r = m29993->_TAG._TAG3.hh.rh;
      if (mem[r - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b0 == 2)
      {
	memptr = &mem[r - C2_memmin];
	activewidth[0] += (memptr+1)->_TAG._TAG1._int;
	activewidth[1] += (memptr+2)->_TAG._TAG1._int;
	activewidth[2] += (memptr+3)->_TAG._TAG1._int;
	activewidth[3] += (memptr+4)->_TAG._TAG1._int;
	activewidth[4] += (memptr+5)->_TAG._TAG1._int;
	activewidth[5] += (memptr+6)->_TAG._TAG1._int;
	*(sixword
#ifdef M_XENIX
near
#endif
*)(&curactivewidth[0]) = *(sixword
#ifdef M_XENIX
near
#endif
*)(&activewidth[0]);
/*	curactivewidth[0] = activewidth[0];
	curactivewidth[1] = activewidth[1];
	curactivewidth[2] = activewidth[2];
	curactivewidth[3] = activewidth[3];
	curactivewidth[4] = activewidth[4];
	curactivewidth[5] = activewidth[5]; */
	m29993->_TAG._TAG3.hh.rh = memptr->_TAG._TAG3.hh.rh;
	F78_freenode (r, 7);
      }
    }
    else
      if (mem[prevr - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b0 == 2)
      {
	r = mem[prevr - C2_memmin]._TAG._TAG3.hh.rh;
#ifdef TRIPTEX
	if (r == 2993)
#else
	if (r == 29993)
#endif
	{
	  memptr = &mem[prevr - C2_memmin];
	  curactivewidth[0] -= (memptr+1)->_TAG._TAG1._int;
	  curactivewidth[1] -= (memptr+2)->_TAG._TAG1._int;
	  curactivewidth[2] -= (memptr+3)->_TAG._TAG1._int;
	  curactivewidth[3] -= (memptr+4)->_TAG._TAG1._int;
	  curactivewidth[4] -= (memptr+5)->_TAG._TAG1._int;
	  curactivewidth[5] -= (memptr+6)->_TAG._TAG1._int;
#ifdef TRIPTEX
	  mem[prevprevr - C2_memmin]._TAG._TAG3.hh.rh = 2993;
#else
	  mem[prevprevr - C2_memmin]._TAG._TAG3.hh.rh = 29993;
#endif
	  F78_freenode (prevr, 7);
	  prevr = prevprevr;
	}
	else
	  if (mem[r - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b0 == 2)
	  {
	    memptr = &mem[r - C2_memmin];
	    curactivewidth[0] += (memptr+1)->_TAG._TAG1._int;
	    curactivewidth[1] += (memptr+2)->_TAG._TAG1._int;
	    curactivewidth[2] += (memptr+3)->_TAG._TAG1._int;
	    curactivewidth[3] += (memptr+4)->_TAG._TAG1._int;
	    curactivewidth[4] += (memptr+5)->_TAG._TAG1._int;
	    curactivewidth[5] += (memptr+6)->_TAG._TAG1._int;
	    memptr1 = &mem[prevr - C2_memmin];
	    (memptr1+1)->_TAG._TAG1._int += (memptr+1)->_TAG._TAG1._int;
	    (memptr1+2)->_TAG._TAG1._int += (memptr+2)->_TAG._TAG1._int;
	    (memptr1+3)->_TAG._TAG1._int += (memptr+3)->_TAG._TAG1._int;
	    (memptr1+4)->_TAG._TAG1._int += (memptr+4)->_TAG._TAG1._int;
	    (memptr1+5)->_TAG._TAG1._int += (memptr+5)->_TAG._TAG1._int;
	    (memptr1+6)->_TAG._TAG1._int += (memptr+6)->_TAG._TAG1._int;
	    memptr1->_TAG._TAG3.hh.rh = memptr->_TAG._TAG3.hh.rh;
	    F78_freenode (r, 7);
	  }
      }
  }
_10: 
#if defined(INITEX) || defined(TRIPTEX)
  if (curp == printednode)
    if (curp != ((int)(-32768)))
      if (mem[curp - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b0 == 7)
      {
	t = mem[curp - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b1;
	while (t > 0)
	{
	  t--;
	  printednode = mem[printednode - C2_memmin]._TAG._TAG3.hh.rh;
	}
      }
# else
  ;
# endif
}

void F254_postlinebreak (finalwidowpenalty)
/***********************************/
long int   finalwidowpenalty;
{
#ifdef M_XENIX
  T37_memoryword huge *memptr, huge *memptr1;
#else
  register T37_memoryword *memptr,*memptr1;
#endif
  register long int   curindent;
  register int /* was T32_halfword */ curline;
  register long int   curwidth;
  register BOOLEAN discbreak;
  register long int   pen;
  register int /* was T32_halfword */ q;
  register int /* was T32_halfword */ r;
  register int /* was T32_halfword */ s;
  register T31_quarterword t;

  q = mem[bestbet + 1 - C2_memmin]._TAG._TAG3.hh.rh;
  curp = (int)(-32768);
  do
  {
    r = q;
    q = mem[q + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh;
    mem[r + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh = curp;
    curp = r;
  }
  while (q != ((int)(-32768)));
  curline = curlist.pgfield + 1;
  do
  {
    q = mem[curp + 1 - C2_memmin]._TAG._TAG3.hh.rh;
    discbreak = FALSE;
    if (q != ((int)(-32768)))
    {
      memptr = &mem[q - C2_memmin];
      if (memptr->_TAG._TAG3.hh._TAG._TAG2.b0 == 10)
      {
	F108_deleteglueref ((memptr+1)->_TAG._TAG3.hh._TAG._TAG1.lh);
	(memptr+1)->_TAG._TAG3.hh._TAG._TAG1.lh = eqtb[3534]._TAG._TAG3.hh.rh;
	memptr->_TAG._TAG3.hh._TAG._TAG2.b1 = 9;
	mem[eqtb[3534]._TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh++;
	goto _30;
      }
      else
      {
	if (memptr->_TAG._TAG3.hh._TAG._TAG2.b0 == 7)
	{
	  t = memptr->_TAG._TAG3.hh._TAG._TAG2.b1;
	  if (t == 0)
	    r = memptr->_TAG._TAG3.hh.rh;
	  else
	  {
	    r = q;
	    while (t > 1)
	    {
	      r = mem[r - C2_memmin]._TAG._TAG3.hh.rh;
	      t--;
	    }
	    s = mem[r - C2_memmin]._TAG._TAG3.hh.rh;
	    if (s < himemmin)
	    {
	      register int shelp;
	      if ((shelp=mem[curp + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh) != ((int)(-32768)))
		if (mem[shelp + 1 - C2_memmin]._TAG._TAG3.hh.rh == s)
		  s = r;
	    }
	    memptr1 = &mem[s - C2_memmin];
	    r = memptr1->_TAG._TAG3.hh.rh;
	    memptr1->_TAG._TAG3.hh.rh = (int)(-32768);
	    F109_flushnodelist (memptr->_TAG._TAG3.hh.rh);
	    memptr->_TAG._TAG3.hh._TAG._TAG2.b1 = 0;
	  }
	  if ((memptr+1)->_TAG._TAG3.hh.rh != ((int)(-32768)))
	  {
	    s = (memptr+1)->_TAG._TAG3.hh.rh;
	    {
	      register int shelp;
	      while ((shelp=mem[s - C2_memmin]._TAG._TAG3.hh.rh) != ((int)(-32768)))
		s = shelp;
	    }
	    mem[s - C2_memmin]._TAG._TAG3.hh.rh = r;
	    r = (memptr+1)->_TAG._TAG3.hh.rh;
	    (memptr+1)->_TAG._TAG3.hh.rh = (int)(-32768);
	  }
	  if ((memptr+1)->_TAG._TAG3.hh._TAG._TAG1.lh != ((int)(-32768)))
	  {
	    s = (memptr+1)->_TAG._TAG3.hh._TAG._TAG1.lh;
	    memptr->_TAG._TAG3.hh.rh = s;
	    {
	      register int shelp;
	      while ((shelp=mem[s - C2_memmin]._TAG._TAG3.hh.rh) != ((int)(-32768)))
		s = shelp;
	    }
	    (memptr+1)->_TAG._TAG3.hh._TAG._TAG1.lh = (int)(-32768);
	    q = s;
	  }
	  mem[q - C2_memmin]._TAG._TAG3.hh.rh = r;
	  discbreak = TRUE;
	}
	if (q < himemmin)
	{
	  memptr = &mem[q - C2_memmin];
	  if ((memptr->_TAG._TAG3.hh._TAG._TAG2.b0 == 9) || (memptr->_TAG._TAG3.hh._TAG._TAG2.b0 == 11))
	    (memptr+1)->_TAG._TAG1._int = 0;
	}
      }
    }
    else
    {
      register int shelp;
#ifdef TRIPTEX
      q = 2997;
#else
      q = 29997;
#endif
      while ((shelp=mem[q - C2_memmin]._TAG._TAG3.hh.rh) != ((int)(-32768)))
	q = shelp;
    }
    r = F86_newparamglue (8);
    memptr = &mem[q - C2_memmin];
    mem[r - C2_memmin]._TAG._TAG3.hh.rh = memptr->_TAG._TAG3.hh.rh;
    memptr->_TAG._TAG3.hh.rh = r;
    q = r;
_30: 
    memptr = &mem[q - C2_memmin];
    r = memptr->_TAG._TAG3.hh.rh;
    memptr->_TAG._TAG3.hh.rh = (int)(-32768);
    q = m29997->_TAG._TAG3.hh.rh;
    m29997->_TAG._TAG3.hh.rh = r;
#ifdef TRIPTEX
    if (eqtb[3533]._TAG._TAG3.hh.rh != 1)
#else
    if (eqtb[3533]._TAG._TAG3.hh.rh != (-30000))
#endif
    {
      r = F86_newparamglue (7);
      mem[r - C2_memmin]._TAG._TAG3.hh.rh = q;
      q = r;
    }
    if (curline > lastspecialline)
    {
      curwidth = secondwidth;
      curindent = secondindent;
    }
    else
      if (eqtb[4056]._TAG._TAG3.hh.rh == ((int)(-32768)))
      {
	curwidth = firstwidth;
	curindent = firstindent;
      }
      else
      {
	memptr = &mem[eqtb[4056]._TAG._TAG3.hh.rh + curline + curline - C2_memmin];
	curwidth = memptr->_TAG._TAG1._int;
	curindent = (memptr-1)->_TAG._TAG1._int;
      }
#ifdef TRIPTEX
    adjusttail = 2995;
#else
    adjusttail = 29995;
#endif
    justbox = F208_hpack (q, curwidth, 0);
    mem[justbox + 4 - C2_memmin]._TAG._TAG1._int = curindent;
    F210_appendtovlist (justbox);
#ifdef TRIPTEX
    if (2995 != adjusttail)
#else
    if (29995 != adjusttail)
#endif
    {
      mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = m29995->_TAG._TAG3.hh.rh;
      curlist.tailfield = adjusttail;
    }
    adjusttail = (int)(-32768);
    if ((curline + 1) != bestline)
    {
      pen = eqtb[5280]._TAG._TAG1._int;
      if (curline == (curlist.pgfield + 1))
	pen += eqtb[5272]._TAG._TAG1._int;
      if ((curline + 2) == bestline)
	pen += finalwidowpenalty;
      if (discbreak)
	pen += eqtb[5275]._TAG._TAG1._int;
      if (pen != 0)
      {
	r = F90_newpenalty (pen);
	mem[curlist.tailfield - C2_memmin]._TAG._TAG3.hh.rh = r;
	curlist.tailfield = r;
      }
    }
    curline++;
    curp = mem[curp + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh;
    if (curp != ((int)(-32768)))
    {
#ifdef TRIPTEX
      r = 2997;
#else
      r = 29997;
#endif
      while (TRUE)
      {
	q = mem[r - C2_memmin]._TAG._TAG3.hh.rh;
	if (q == mem[curp + 1 - C2_memmin]._TAG._TAG3.hh.rh)
	  goto _31;
	if (q >= himemmin)
	  goto _31;
	if (mem[q - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b0 < 9)
	  goto _31;
	if (mem[q - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b1 == 2)
	  if (mem[q - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b0 == 11)
	    goto _31;
	r = q;
      }
  _31: 
#ifdef TRIPTEX
      if (r != 2997)
#else
      if (r != 29997)
#endif
      {
	mem[r - C2_memmin]._TAG._TAG3.hh.rh = (int)(-32768);
	F109_flushnodelist (m29997->_TAG._TAG3.hh.rh);
	m29997->_TAG._TAG3.hh.rh = q;
      }
    }
  }
  while (curp != ((int)(-32768)));
  if ((curline != bestline) || (m29997->_TAG._TAG3.hh.rh != ((int)(-32768))))
    F42_confusion (791);
  curlist.pgfield = bestline - 1;
}

T29_smallnumber F255_reconstitute (j, n)
/************************************/
#ifdef VAX
register int j;
#else
register T29_smallnumber j;
#endif
T29_smallnumber n;
{
#ifdef M_XENIX
  T37_memoryword huge *memptr;
#else
  register T37_memoryword *memptr;
#endif
#ifdef VAX
register int c,d;
#else
  register T31_quarterword c;
  T31_quarterword d;
#endif
  register int /* was T32_halfword */ p;
  register T36_fourquarters q;
  register long int   r;
  register int /* was T32_halfword */ s;
  register long int   w;

  hyphenpassed = 0;
#ifdef TRIPTEX
  s = 2996;
#else
  s = 29996;
#endif
  w = 0;
  d = hu[j] - 128;
  c = d;
  while (TRUE)
  {
_22: 
    p = F75_getavail ();
    memptr = &mem[p - C2_memmin];
    memptr->_TAG._TAG3.hh._TAG._TAG2.b0 = hf;
    memptr->_TAG._TAG3.hh._TAG._TAG2.b1 = c;
    mem[s - C2_memmin]._TAG._TAG3.hh.rh = p;
    if (j == n)
      goto _30;
    q=fontinfo[charbase[hf] + d]._TAG._TAG4.qqqq;
    if (((q.b2 + 128) & 3) != 1)
      goto _30;
    r = ligkernbase[hf] + q.b3;
    c = hu[j + 1] - 128;
    while (TRUE)
    {
      q=fontinfo[r]._TAG._TAG4.qqqq;
      if (q.b1 == c)
      {
	if (ODD (hyf[j]) && (hyphenpassed == 0))
	  hyphenpassed = j;
	if (q.b2 < 0)
	{
	  d = q.b3;
	  j++;
	  s = p;
	  goto _22;
	}
	else
	{
	  w = fontinfo[kernbase[hf] + q.b3]._TAG._TAG1._int;
	  goto _30;
	}
      }
      else
	if (q.b0 < 0)
	  r++;
	else
	  goto _30;
    }
  }
_30: 
#ifdef TRIPTEX
  if (s != 2996)
#else
  if (s != 29996)
#endif
  {
    p = F82_newligature ((T31_quarterword)hf, d, m29996->_TAG._TAG3.hh.rh);
    m29996->_TAG._TAG3.hh.rh = p;
  }
  if (w != 0)
    mem[m29996->_TAG._TAG3.hh.rh - C2_memmin]._TAG._TAG3.hh.rh = F89_newkern (w);
  return(j);
}

void F256_hyphenate ()
/**************/
{
#ifdef M_XENIX
  T37_memoryword huge *memptr, huge *memptr1;
#else
  register T37_memoryword *memptr,*memptr1;
#endif
#ifdef VAX
register int c;
#else
  register T21_asciicode c;
#endif
#ifdef VAX
register int h;
#else
  register T46_hyphpointer h;
#endif
  register int /* was T32_halfword */ hyfnode;
  register int   i;
  register int   j;
  register T26_strnumber k;
  register int   l;
  register int /* was T32_halfword */ majortail;
  register int /* was T32_halfword */ minortail;
  register int /* was T32_halfword */ q;
  register int /* was T32_halfword */ r;
  register int /* was T32_halfword */ s;
  register T25_poolpointer u;
  register T31_quarterword v;
  register T45_triepointer z;
  register int help;
  register T37_memoryword memhelp;

  for (j = 0; j <= hn; j++)
    hyf[j] = 0;
  h = hc[1];
  for (j = 2; j <= hn; j++)
    h = (h + h + hc[j]) % 307;
  while (TRUE)
  {
    k = hyphword[h];
    if (k == 0)
      goto _45;
    if ((strstart[k + 1] - strstart[k]) < hn)
      goto _45;
    if ((strstart[k + 1] - strstart[k]) == hn)
    {
      j = 1;
      u = strstart[k];
      do
      {
	if (strpool[u] < hc[j])
	  goto _45;
	if (strpool[u] > hc[j])
	  goto _30;
	j++;
	u++;
      }
      while (j <= hn);
      s = hyphlist[h];
      while (s != ((int)(-32768)))
      {
	memhelp = mem[s - C2_memmin];
	hyf[memhelp._TAG._TAG3.hh._TAG._TAG1.lh] = 1;
	s = memhelp._TAG._TAG3.hh.rh;
      }
      goto _40;
    }
_30: 
    if (h > 0)
      h--;
    else
      h = 307;
  }
_45: 
  hc[0] = 127;
  hc[hn + 1] = 127;
  hc[hn + 2] = 256;
  help = hn - 2;
  for (j = 0; j <= help; j++)
  {
    z = hc[j];
    l = j;
    while (hc[l] == trie[z]._TAG._TAG2.b1)
    {
      if (trie[z]._TAG._TAG2.b0 != (-128))
      {
	v = trie[z]._TAG._TAG2.b0;
	do
	{
	  i = l - hyfdistance[v + 128];
	  if (hyfnum[v + 128] > hyf[i])
	    hyf[i] = hyfnum[v + 128];
	  v = hyfnext[v + 128];
	}
	while (v != (-128));
      }
      l++;
      z = trie[z].rh + hc[l];
    }
  }
_40: 
  hyf[1] = 0;
  hyf[hn - 2] = 0;
  hyf[hn - 1] = 0;
  hyf[hn] = 0;
  help = hn - 3;
  for (j = 2; j <= help; j++)
    if (ODD (hyf[j]))
      goto _41;
  return;
_41: 
  memptr = &mem[hb - C2_memmin];
  q = memptr->_TAG._TAG3.hh.rh;
  memptr->_TAG._TAG3.hh.rh = (int)(-32768);
  s = curp;
  {
    register int shelp;
    while ((shelp=mem[s - C2_memmin]._TAG._TAG3.hh.rh) != ha)
      s = shelp;
  }
  mem[s - C2_memmin]._TAG._TAG3.hh.rh = (int)(-32768);
  F109_flushnodelist (ha);
  j = 0;
  do
  {
    l = j;
    j = F255_reconstitute (j + 1, hn);
    if (hyphenpassed != 0)
    {
      r = F77_getnode (2L);
      memptr = &mem[r - C2_memmin];
      mem[s - C2_memmin]._TAG._TAG3.hh.rh = r;
      memptr->_TAG._TAG3.hh.rh = m29996->_TAG._TAG3.hh.rh;
      memptr->_TAG._TAG3.hh._TAG._TAG2.b0 = 7;
      majortail = m29996->_TAG._TAG3.hh.rh;
      {
	register int shelp;
	if ((shelp=mem[majortail - C2_memmin]._TAG._TAG3.hh.rh) != ((int)(-32768)))
	  majortail = shelp;
      }
      i = hyphenpassed;
      minortail = (int)(-32768);
      hyfnode = F194_newcharacter (hf, (T22_eightbits)hyfchar);
      if (hyfnode != ((int)(-32768)))
      {
	i++;
	c = hu[i];
	hu[i] = hyfchar;
      }
      do
      {
	l = F255_reconstitute (l + 1, i);
	if (minortail == ((int)(-32768)))
	  minortail = (memptr+1)->_TAG._TAG3.hh._TAG._TAG1.lh = m29996->_TAG._TAG3.hh.rh;
	else
	  minortail = mem[minortail - C2_memmin]._TAG._TAG3.hh.rh = m29996->_TAG._TAG3.hh.rh;
	{
	  register int shelp;
	  if ((shelp=mem[minortail - C2_memmin]._TAG._TAG3.hh.rh) != ((int)(-32768)))
	    minortail = shelp;
	}
      }
      while (l != i);
      if (hyfnode != ((int)(-32768)))
      {
	hu[i] = c;
	mem[hyfnode - C2_memmin]._TAG._TAG3.hh.rh = avail;
	avail = hyfnode;
#if defined(INITEX) || defined(TRIPTEX)
	dynused--;
# endif
	l = --i;
      }
      hyf[i] = 0;
      minortail = (int)(-32768);
      (memptr+1)->_TAG._TAG3.hh.rh = (int)(-32768);
      while (l < j)
      {
	do
	{
	  l = F255_reconstitute (l + 1, hn);
	  if (minortail == ((int)(-32768)))
	    minortail = (memptr+1)->_TAG._TAG3.hh.rh = m29996->_TAG._TAG3.hh.rh;
	  else
	    minortail = mem[minortail - C2_memmin]._TAG._TAG3.hh.rh = m29996->_TAG._TAG3.hh.rh;
	  {
	    register int shelp;
	    if ((shelp=mem[minortail - C2_memmin]._TAG._TAG3.hh.rh) != ((int)(-32768)))
	    {
	      hyf[l] = 0;
	      minortail = shelp;
	    }
	  }
	}
	while (l < j);
	while (l > j)
	{
	  j = F255_reconstitute (j + 1, hn);
	  majortail = mem[majortail - C2_memmin]._TAG._TAG3.hh.rh = m29996->_TAG._TAG3.hh.rh;
	  {
	    register int shelp;
	    if ((shelp=mem[majortail - C2_memmin]._TAG._TAG3.hh.rh) != ((int)(-32768)))
	    {
	      hyf[j] = 0;
	      majortail = shelp;
	    }
	  }
	}
      }
      i = 0;
      s = r;
      {
	register int shelp;
	while ((shelp=mem[s - C2_memmin]._TAG._TAG3.hh.rh) != ((int)(-32768)))
	{
	  i++;
	  s = shelp;
	}
      }
      mem[r - C2_memmin]._TAG._TAG3.hh._TAG._TAG2.b1 = i;
    }
    else
    {
      mem[s - C2_memmin]._TAG._TAG3.hh.rh = m29996->_TAG._TAG3.hh.rh;
      s = mem[s - C2_memmin]._TAG._TAG3.hh.rh;
      {
	register int shelp;
	if ((shelp=mem[s - C2_memmin]._TAG._TAG3.hh.rh) != ((int)(-32768)))
	  s = shelp;
      }
    }
    if (ODD (hyf[j]))
    {
      r = F83_newdisc ();
      mem[r + 1 - C2_memmin]._TAG._TAG3.hh._TAG._TAG1.lh = F194_newcharacter (hf, (T22_eightbits)hyfchar);
      mem[s - C2_memmin]._TAG._TAG3.hh.rh = r;
      s = r;
    }
  }
  while (j != hn);
  mem[s - C2_memmin]._TAG._TAG3.hh.rh = q;
}
