This should be written in assembly.