It will. The negations are only being applied on the way back up the call stack. The mutual recursion version in a sibling post can be made to work though.
But it also does some magic that I don't quite understand (what do the two `sub` instructions do before the `call`? Do they prepare the stack?) because x86 assembly is so confusing to me sometimes.
Does Go default-initialize booleans by any chance? In C, which author had used, this program would be undefined behavior due to reading non-static, uninitialized bool.
I did not profile this one yet. But my intuition, and my industry experience, tell me that this is fast.