procedure encipher(plain, in, out) return map(pt, in, out) end procedure decipher(crypto, out, in) return map(crypto, out, in) end procedure encipher(plain, out) return map(pt, in, out) end procedure decipher(crypto, out) return map(crypto, out, in) end procedure encipher(plain, p) return map(pt, in, p(in)) end procedure decipher(crypto, p) return map(crypto, p(in), in) end procedure encipher(plain, p, args[]) return map(pt, in, p ! args) end procedure decipher(crypto, p, args[]) return map(crypto, p ! args, in) end procedure encipher(plain, key[]) local p p := get(key) push(key, in) return map(pt, in, p ! key) end procedure decipher(crypto, key[]) local p p := get(key) push(key, in) return map(crypto, p ! key, in) end