def rsp_decode_parts(data):
    """ An internal variant of run-length decoder.
        It yields parts of decoded data.
    """
    parts = data.split(b'*')
    i = iter(parts)
    prev = next(i)
    yield prev
    for cur in i:
        if cur:
            n = ord(cur[:1]) - 29
            yield prev[-1:] * n
            yield cur[1:]
        else:
            yield prev[-1:] * 13
            try:
                cur = next(i)
            except StopIteration:
                break
            yield cur
        prev = cur
