/* { dg-do compile { target i?86-*-* } } */
/* { dg-skip-if "" { i?86-*-* } { "-m64" } { "" } } */
/* { dg-options "-O2 -mtune=k6" } */

void
foo (unsigned char *x, const unsigned char *y)
{
  int a = 6;
  unsigned char *b;
  for (;;)
    {
      unsigned char *c = x;

      while (1)
	{
	  if (c + 2 < y)
	    c += 3;
	  else
	    break;
	}
      b = x + a;
      if (*c == 4 || *c == 5)
	{
	  unsigned char d = c[2];

	  if (b[3] == 7 || b[3] == 8)
	    {
	      int e = b[3] == 8;
	      if (d < b[4] * 8 && b[5 + d / 8] & (1 << (d % 8)))
		e = !e;
	      if (!e)
		x[-3] = 26;
	    }
	}
      else if (*c == 7 && b[3] == 8)
	{
	  int f;
	  for (f = 0; f < (int) c[1]; f++)
	    if (!(c[2 + f] == 0))
	      break;
	  if (f == c[1])
	    x[-3] = 26;
	}
      x -= 2;
    }
}
