code: func SignExtend(back uint64, x *big.Int) *big.Int {
  	// we assume x contains a signed integer of back + 1 bytes width
  	// most significant bit of the back'th byte,
  	signBit := back*8 + 7
  	// single bit set at sign bit position
  	mask := new(big.Int).Lsh(big1, uint(signBit))
  	// all bits below sign bit set to 1 all above (including sign bit) set to 0
  	mask.Sub(mask, big1)
  	if x.Bit(int(signBit)) == 1 {
  		// Number represented is negative - set all bits above sign bit (including sign bit)
  		return x.Or(x, mask.Not(mask))
  	} else {
  		// Number represented is positive - clear all bits above sign bit (including sign bit)
  		return x.And(x, mask)
  	}
  }
docs: // Treats the positive big int x as if it contains an embedded a back + 1 byte signed integer in its least significant
  // bits and extends that sign