BLD: workaround msvc being stupid

Apparently it tries to respect calling conventions for static inline
functions so the 4th variable can't be passed over the stack as it needs
16 byte alignment.
Work around this by passing the variable as a pointer.
Closes gh-4795