func rdint64(f *obj.Biobuf) int64 { r := f.Reader() uv := uint64(0) for shift := uint(0); ; shift += 7 { if shift >= 64 { log.Fatalf("corrupt input") } c, err := r.ReadByte() if err != nil { log.Fatalln("error reading input: ", err) } uv |= uint64(c&0x7F) << shift if c&0x80 == 0 { break } } return int64(uv>>1) ^ (int64(uint64(uv)<<63) >> 63) }