def _decrypt_entity(entity, encrypted_properties_list, content_encryption_key, entityIV, isJavaV1):
_validate_not_none('<STR_LIT>', entity)<EOL>decrypted_entity = deepcopy(entity)<EOL>try:<EOL><INDENT>for property in entity.keys():<EOL><INDENT>if property in encrypted_properties_list:<EOL><INDENT>value = entity[property]<EOL>propertyIV = _generate_property_iv(entityIV,<EOL>entity['<STR_LIT>'], entity['<STR_LIT>'],<EOL>property, isJavaV1)<EOL>cipher = _generate_AES_CBC_cipher(content_encryption_key,<EOL>propertyIV)<EOL>decryptor = cipher.decryptor()<EOL>decrypted_data = (decryptor.update(value.value) + decryptor.finalize())<EOL>unpadder = PKCS7(<NUM_LIT>).unpadder()<EOL>decrypted_data = (unpadder.update(decrypted_data) + unpadder.finalize())<EOL>decrypted_data = decrypted_data.decode('<STR_LIT:utf-8>')<EOL>decrypted_entity[property] = decrypted_data<EOL><DEDENT><DEDENT>decrypted_entity.pop('<STR_LIT>')<EOL>decrypted_entity.pop('<STR_LIT>')<EOL>return decrypted_entity<EOL><DEDENT>except:<EOL><INDENT>raise AzureException(_ERROR_DECRYPTION_FAILURE)<EOL><DEDENT>
Decrypts the specified entity using AES256 in CBC mode with 128 bit padding. Unwraps the CEK 
using either the specified KEK or the key returned by the key_resolver. Properties 
specified in the encrypted_properties_list, will be decrypted and decoded to utf-8 strings.

:param entity:
    The entity being retrieved and decrypted. Could be a dict or an entity object.
:param list encrypted_properties_list:
    The encrypted list of all the properties that are encrypted.
:param bytes[] content_encryption_key:
    The key used internally to encrypt the entity. Extrated from the entity metadata.
:param bytes[] entityIV:
    The intialization vector used to seed the encryption algorithm. Extracted from the
    entity metadata.
:return: The decrypted entity
:rtype: Entity