init (data, ((void **) &argc)[-1], &((void **) &data)[-1]);
void doinit1 (int argc, ...) { init (&argc); }   *--data = (&argc)[-1]; asm volatile ("movl %0, %%esp\n"  "movl $0, %%ebp\n"  "jmp *%1" : : "r" (data), "r" (&doinit1));
  void doinit (int *data)    {      init (data, ((void **) &argc)[-1], &((void **) &data)[-1]);    }