def METHOD_NAME(require_encryption, key_encryption_key, key_resolver,
                  response, start_offset, end_offset):
    '''
    Decrypts the given blob contents and returns only the requested range.
    :param bool require_encryption:
        Whether or not the calling blob service requires objects to be decrypted.
    :param object key_encryption_key:
        The user-provided key-encryption-key. Must implement the following methods:
        wrap_key(key)--wraps the specified key using an algorithm of the user's choice.
        get_key_wrap_algorithm()--returns the algorithm used to wrap the specified symmetric key.
        get_kid()--returns a string key id for this key-encryption-key.
    :param key_resolver(kid):
        The user-provided key resolver. Uses the kid string to return a key-encryption-key 
        implementing the interface defined above.
    :return: The decrypted blob content.
    :rtype: bytes
    '''
    _validate_not_none('response', response)
    content = response.body
    _validate_not_none('content', content)
    try:
        encryption_data = _dict_to_encryption_data(loads(response.headers['x-ms-meta-encryptiondata']))
    except:
        if require_encryption:
            raise ValueError(_ERROR_DATA_NOT_ENCRYPTED)
        return content
    if not (encryption_data.encryption_agent.encryption_algorithm == _EncryptionAlgorithm.AES_CBC_256):
        raise ValueError(_ERROR_UNSUPPORTED_ENCRYPTION_ALGORITHM)
    blob_type = response.headers['x-ms-blob-type']
    iv = None
    unpad = False
    start_range, end_range = 0, len(content)
    if 'content-range' in response.headers:
        content_range = response.headers['content-range']
        # Format: 'bytes x-y/size'
        # Ignore the word 'bytes'
        content_range = content_range.split(' ')
        content_range = content_range[1].split('-')
        start_range = int(content_range[0])
        content_range = content_range[1].split('/')
        end_range = int(content_range[0])
        blob_size = int(content_range[1])
        if start_offset >= 16:
            iv = content[:16]
            content = content[16:]
            start_offset -= 16
        else:
            iv = encryption_data.content_encryption_IV
        if end_range == blob_size - 1:
            unpad = True
    else:
        unpad = True
        iv = encryption_data.content_encryption_IV
    if blob_type == 'PageBlob':
        unpad = False
    content_encryption_key = _validate_and_unwrap_cek(encryption_data, key_encryption_key, key_resolver)
    cipher = _generate_AES_CBC_cipher(content_encryption_key, iv)
    decryptor = cipher.decryptor()
    content = decryptor.update(content) + decryptor.finalize()
    if unpad:
        unpadder = PKCS7(128).unpadder()
        content = unpadder.update(content) + unpadder.finalize()
    return content[start_offset: len(content) - end_offset]