code: def _decrypt(cipher, key, data, iv, padding):
      
  
      if not isinstance(key, byte_cls):
          raise TypeError(pretty_message(
              '''
              key must be a byte string, not %s
              ''',
              type_name(key)
          ))
  
      if not isinstance(data, byte_cls):
          raise TypeError(pretty_message(
              '''
              data must be a byte string, not %s
              ''',
              type_name(data)
          ))
  
      if cipher != 'rc4' and not isinstance(iv, byte_cls):
          raise TypeError(pretty_message(
              '''
              iv must be a byte string, not %s
              ''',
              type_name(iv)
          ))
  
      if cipher != 'rc4' and padding is None:
          raise ValueError('padding must be specified')
  
      if _backend == 'winlegacy':
          return _advapi32_decrypt(cipher, key, data, iv, padding)
      return _bcrypt_decrypt(cipher, key, data, iv, padding)
docs: Decrypts AES/RC4/RC2/3DES/DES ciphertext
  
      :param cipher:
          A unicode string of "aes", "des", "tripledes_2key", "tripledes_3key",
          "rc2", "rc4"
  
      :param key:
          The encryption key - a byte string 5-16 bytes long
  
      :param data:
          The ciphertext - a byte string
  
      :param iv:
          The initialization vector - a byte string - unused for RC4
  
      :param padding:
          Boolean, if padding should be used - unused for RC4
  
      :raises:
          ValueError - when any of the parameters contain an invalid value
          TypeError - when any of the parameters are of the wrong type
          OSError - when an error is returned by the OS crypto library
  
      :return:
          A byte string of the plaintext