int main(void);

int f(void **op, int(**fp)(void)) {
  *op = &op;
  *fp = main;
  return *op == &op;
}

int main(void) {
  void *p;
  return f(&p, (int(**)(void))&p);
}