What happens if the constant had an explicit type, or something like 4294967296ULL?
Could it be that the compiler is just interpreting the large number as a signed type that has wrapped around?
Has anyone raised the issue with MS to see what they have to say about it?