Switched to asm(...) and assemble(asms) to improve readability and
abstract it out more. It is still side-effect free, but I think it
reads much better.