The nameless non-XMM part of YMM registers is - surprisingly -  explicitly marked as volatile by Microsoft, so they don't need to be saved.

Regarding alignment: On Win64, the stack is guaranteed to be misaligned on function entry because of the return address on the stack. In normal functions, the initial "push rbp" balances it again. And herein lies the problem:

On entry, the context switch function expects a misaligned stack. When returning from a normal function, the caller would expect an aligned stack. But when calling a fiber the first time, we are not really returning, but jumping to the beginning of the fiber function, which - not being aware of that little trick - expects a misaligned stack.

This is only a problem the first time we switch to a fiber, from then on the source and destination stack both have the same alignment. I'm working on handling that special case.