Main author: Laurent Bercot Thanks to: Dan J. Bernstein Vallo Kallaste A. Wilcox Andrew Ayer