I think it doesn't work on x86-64, since the code assumes
sizeof(int) == sizeof(void*) sizeof(int) == sizeof(void*) ➜ c4 git:(master) ✗ clang -m32 c4.c
...
➜ c4 git:(master) ✗ ./a.out hello.c
hello, world
exit(0) cycle = 9