in pkg/unpack/reader.go [182:206]
func (r *UnpackReader) unpack(unpacked, packed []byte, offset int64, pre int) (int, error) {
poff := 0
written := 0
dpw := ycd.DigitsPerWord(r.radix)
for poff < len(packed) && written < len(unpacked) {
remaining := len(unpacked) - written
reqDigits := remaining
if offset%r.blockSize+int64(remaining) > r.blockSize {
reqDigits = int(r.blockSize - offset%r.blockSize)
}
reqBytes := (reqDigits + dpw - 1) / dpw * WordSize
n, err := UnpackBlock(unpacked[written:written+reqDigits], packed[poff:poff+reqBytes], r.radix, pre)
poff += reqBytes
written += n
offset += int64(n)
if err != nil {
return written, err
}
pre = 0
}
return written, nil
}