TO DO: A summary of what it does
Implemented by: cbmv7, bw32, ABasiC
With variations:
Also written as: