code: def xor(key, data):
      
  
      if type(key) is int:
          key = six.int2byte(key)
      key_len = len(key)
  
      return b''.join(
          six.int2byte(c ^ six.indexbytes(key, i % key_len))
          for i, c in enumerate(six.iterbytes(data))
      )
docs: Perform cyclical exclusive or operations on ``data``.
  
      The ``key`` can be a an integer *(0 <= key < 256)* or a byte sequence. If
      the key is smaller than the provided ``data``, the ``key`` will be
      repeated.
  
      Args:
          key(int or bytes): The key to xor ``data`` with.
          data(bytes): The data to perform the xor operation on.
  
      Returns:
          bytes: The result of the exclusive or operation.
  
      Examples:
          >>> from pwny import *
          >>> xor(5, b'ABCD')
          b'DGFA'
          >>> xor(5, b'DGFA')
          b'ABCD'
          >>> xor(b'pwny', b'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
          b'15-=51)19=%5=9!)!%=-%!9!)-'
          >>> xor(b'pwny', b'15-=51)19=%5=9!)!%=-%!9!)-')
          b'ABCDEFGHIJKLMNOPQRSTUVWXYZ'