presto-spi/src/main/java/io/prestosql/spi/type/UnscaledDecimal128Arithmetic.java/UnscaledDecimal128Arithmetic/multiplyDestructive
class UnscaledDecimal128Arithmetic:    private static void multiplyDestructive(Slice decimal, int multiplier)
    {
        long l0 = toUnsignedLong(getInt(decimal, 0));
        long l1 = toUnsignedLong(getInt(decimal, 1));
        long l2 = toUnsignedLong(getInt(decimal, 2));
        long l3 = toUnsignedLong(getInt(decimal, 3));

        long r0 = Math.abs(multiplier);

        long product;

        product = r0 * l0;
        int z0 = (int) product;

        product = r0 * l1 + (product >>> 32);
        int z1 = (int) product;

        product = r0 * l2 + (product >>> 32);
        int z2 = (int) product;

        product = r0 * l3 + (product >>> 32);
        int z3 = (int) product;

        if ((product >>> 32) != 0) {
            throwOverflowException();
        }

        boolean negative = (isNegative(decimal) != (multiplier < 0));
        pack(decimal, z0, z1, z2, z3, negative);
    }