typedef struct regnode
{
  char flags;
} regnode;
extern const unsigned char A[];

char *foo (regnode *c, char *s, int norun)
{
  int uskip;
  while (s + (uskip = A[*s]))
    {
      if ((c->flags || bar (c)) && norun)
	goto got_it;
      s += uskip;
    }
 got_it:
  return s;
}