'Reads some data from current dialogue entry, emulates short reads.'

def read(self, dst_addr, length):

    try:
        current_pkt_length = self.dialogue_entries.pop(0)
    except IndexError:
        return 0
    lengths = self.state.se.any_n_int(length, 2)
    if (len(lengths) > 1):
        raise ValueError('read    called    with    a    symbolic    length    which    can    be    more    than    a    single    value')
    length_c = lengths[0]
    if (current_pkt_length <= length_c):
        self.content.copy_contents(dst_addr, self.pos, current_pkt_length, dst_memory=self.state.memory)
        return_length = current_pkt_length
    else:
        self.content.copy_contents(dst_addr, self.pos, length_c, dst_memory=self.state.memory)
        return_length = length_c
        leftovers = (current_pkt_length - length_c)
        self.dialogue_entries.insert(0, leftovers)
    self.pos += return_length
    return return_length
