import itertools

def MultipleCharacterXOR(input, key):
  out = ""
  for i, j in itertools.izip_longest(range(len(input)), range(len(key))):
    vi = i
    vj = j
    if vi is None:
      vi = vj % len(input)
    elif vj is None:
      vj = vi % len(key)
    input_c = input[vi]
    key_c = key[vj]
    out += chr(ord(input_c) ^ ord(key_c))
  return out.encode("hex")

if __name__ == "__main__":
  input = """Burning 'em, if you ain't quick and nimble
I go crazy when I hear a cymbal"""
  key = "ICE"
  print MultipleCharacterXOR(input, key)


@@ -66,48 +66,29 @@
 %22%0A  
-for i, j in itertools.izip_longest(range
+j = 0%0A  while j %3C max
 (len
@@ -98,17 +98,10 @@
 put)
-)
 , 
-range(
 len(
@@ -109,64 +109,18 @@
 ey))
-)
 :%0A    
-v
 i = 
-i%0A    vj = j%0A    if vi is None:%0A      vi = v
 j %25 
@@ -138,49 +138,35 @@
     
-elif vj is None:%0A 
+k = j %25 len(key)%0A
     
- v
 j 
++
 = 
-vi %25 len(key)
+1
 %0A   
@@ -182,17 +182,16 @@
 = input%5B
-v
 i%5D%0A    k
@@ -205,10 +205,9 @@
 key%5B
-vj
+k
 %5D%0A  

Make the solution easier to read