refactor to cipher.Block interface
refactor mul() to remove nesting