typedef __SIZE_TYPE__ size_t;
extern size_t strlen (const char *s);

typedef struct A {
  int a, b;
} A;

typedef struct B {
  struct A **a;
  int b;
} B;

A *a;
int b = 1, c;
B d[1];

void foo (A *x, const char *y, int z)
{
  c = y[4] + z * 25;
}

A *bar (const char *v, int w, int x, const char *y, int z)
{
  if (w)
    abort ();
  exit (0);
}

void test (const char *x, int *y)
{
  foo (d->a[d->b], "test", 200);
  d->a[d->b] = bar (x, b ? 0 : 65536, strlen (x), "test", 201);
  d->a[d->b]->a++;
  if (y)
    d->a[d->b]->b = *y;
}

int main ()
{
  d->b = 0;
  d->a = &a;
  test ("", 0);
}
