I don't think I've ever thought of explicitly calling main(). Made me chuckle.
Edit: actually looks like it is UB in C++ but not C
> The lifetime of an allocated object extends from the allocation until the deallocation. Each such allocation shall yield a pointer to an object disjoint from any other object.
A static array is "an object" already. A pointer to the middle of it is not a new object.
Even things like “printf” can’t be implemented purely in standard C. Even making a syscall is outside of the scope of the C standard.