Have you considered doing this in assembly??