If align is 0, your version does 3 calls to writeByte() while mine does one call to write().

I do not agree that my version is ridiculously complicated, all it does is simply fill an array. I understand your argument about micro-optimizing something, but in this case do not agree with it. The road to a slow compiler is filled with individually insignificant slowdowns, and a primary attraction of dmd is ridiculously fast compile times.

But I turned on auto-merge because I'm tired of arguing about it.