See http://www.cs.dartmouth.edu/~sergey/cs59/S2016/x86/hw-x86-extra/extra.txt