code: func (r *reader) readUBitVar() uint32 {
  	ret := r.readBits(6)
  
  	switch ret & 0x30 {
  	case 16:
  		ret = (ret & 15) | (r.readBits(4) << 4)
  		break
  	case 32:
  		ret = (ret & 15) | (r.readBits(8) << 4)
  		break
  	case 48:
  		ret = (ret & 15) | (r.readBits(28) << 4)
  		break
  	}
  
  	return ret
  }
docs: // readUBitVar reads a variable length uint32 with encoding in last to bits of 6 bit group