java/dfp/src/main/java/com/epam/deltix/dfp/JavaImplMul.java [273:335]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                            long _ALBL_w0, _ALBH_w0, _AHBL_w0, _AHBH_w0, _QM_w0, _QM2_w0;
                            long _ALBL_w1, _ALBH_w1, _AHBL_w1, _AHBH_w1, _QM_w1, _QM2_w1;

                            //__mul_64x64_to_128(ALBH, (A)_w0, (B)_w1);
                            _ALBH_w1 = Mul64Impl.unsignedMultiplyHigh(_A_w0, _B_w1);
                            _ALBH_w0 = _A_w0 * _B_w1;

                            //__mul_64x64_to_128(AHBL, (B)_w0, (A)_w1);
                            _AHBL_w1 = Mul64Impl.unsignedMultiplyHigh(_B_w0, _A_w1);
                            _AHBL_w0 = _B_w0 * _A_w1;

                            //__mul_64x64_to_128(ALBL, (A)_w0, (B)_w0);
                            _ALBL_w1 = Mul64Impl.unsignedMultiplyHigh(_A_w0, _B_w0);
                            _ALBL_w0 = _A_w0 * _B_w0;

                            //__mul_64x64_to_128(AHBH, (A)_w1,(B)_w1);
                            _AHBH_w1 = Mul64Impl.unsignedMultiplyHigh(_A_w1, _B_w1);
                            _AHBH_w0 = _A_w1 * _B_w1;

                            //__add_128_128(QM, ALBH, AHBL); // add 128-bit value to 128-bit assume no carry-out
                            {
                                final long __A128_w0 = _ALBH_w0;
                                final long __A128_w1 = _ALBH_w1;
                                final long __B128_w0 = _AHBL_w0;
                                final long __B128_w1 = _AHBL_w1;
                                long Q128_w0, Q128_w1;
                                Q128_w1 = __A128_w1 + __B128_w1;
                                Q128_w0 = __B128_w0 + __A128_w0;
                                if ((UnsignedLong.isLess(Q128_w0, __B128_w0)))
                                    Q128_w1++;
                                _QM_w1 = Q128_w1;
                                _QM_w0 = Q128_w0;
                            }

                            Q_low_w0 = _ALBL_w0;

                            //__add_128_64(_QM2, QM, ALBL_w1); // add 64-bit value to 128-bit
                            {
                                final long __A128_w0 = _QM_w0;
                                final long __A128_w1 = _QM_w1;
                                final long __B64 = _ALBL_w1;
                                long __R64H;
                                __R64H = __A128_w1;
                                _QM2_w0 = __B64 + __A128_w0;
                                if ((UnsignedLong.isLess(_QM2_w0, __B64)))
                                    __R64H++;
                                _QM2_w1 = __R64H;
                            }

                            //__add_128_64((_Qh), AHBH, QM2_w1); // add 64-bit value to 128-bit
                            {
                                final long __A128_w0 = _AHBH_w0;
                                final long __A128_w1 = _AHBH_w1;
                                final long __B64 = _QM2_w1;
                                long __R64H;
                                __R64H = __A128_w1;
                                Q_high_w0 = __B64 + __A128_w0;
                                if ((UnsignedLong.isLess(Q_high_w0, __B64)))
                                    __R64H++;
                                Q_high_w1 = __R64H;
                            }

                            Q_low_w1 = _QM2_w0;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



java/dfp/src/main/java/com/epam/deltix/dfp/JavaImplMul.java [400:462]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    long _ALBL_w0, _ALBH_w0, _AHBL_w0, _AHBH_w0, _QM_w0, _QM2_w0;
                    long _ALBL_w1, _ALBH_w1, _AHBL_w1, _AHBH_w1, _QM_w1, _QM2_w1;

                    //__mul_64x64_to_128(ALBH, (A)_w0, (B)_w1);
                    _ALBH_w1 = Mul64Impl.unsignedMultiplyHigh(_A_w0, _B_w1);
                    _ALBH_w0 = _A_w0 * _B_w1;

                    //__mul_64x64_to_128(AHBL, (B)_w0, (A)_w1);
                    _AHBL_w1 = Mul64Impl.unsignedMultiplyHigh(_B_w0, _A_w1);
                    _AHBL_w0 = _B_w0 * _A_w1;

                    //__mul_64x64_to_128(ALBL, (A)_w0, (B)_w0);
                    _ALBL_w1 = Mul64Impl.unsignedMultiplyHigh(_A_w0, _B_w0);
                    _ALBL_w0 = _A_w0 * _B_w0;

                    //__mul_64x64_to_128(AHBH, (A)_w1,(B)_w1);
                    _AHBH_w1 = Mul64Impl.unsignedMultiplyHigh(_A_w1, _B_w1);
                    _AHBH_w0 = _A_w1 * _B_w1;

                    //__add_128_128(QM, ALBH, AHBL); // add 128-bit value to 128-bit assume no carry-out
                    {
                        final long __A128_w0 = _ALBH_w0;
                        final long __A128_w1 = _ALBH_w1;
                        final long __B128_w0 = _AHBL_w0;
                        final long __B128_w1 = _AHBL_w1;
                        long Q128_w0, Q128_w1;
                        Q128_w1 = __A128_w1 + __B128_w1;
                        Q128_w0 = __B128_w0 + __A128_w0;
                        if ((UnsignedLong.isLess(Q128_w0, __B128_w0)))
                            Q128_w1++;
                        _QM_w1 = Q128_w1;
                        _QM_w0 = Q128_w0;
                    }

                    Q_low_w0 = _ALBL_w0;

                    //__add_128_64(_QM2, QM, ALBL_w1); // add 64-bit value to 128-bit
                    {
                        final long __A128_w0 = _QM_w0;
                        final long __A128_w1 = _QM_w1;
                        final long __B64 = _ALBL_w1;
                        long __R64H;
                        __R64H = __A128_w1;
                        _QM2_w0 = __B64 + __A128_w0;
                        if ((UnsignedLong.isLess(_QM2_w0, __B64)))
                            __R64H++;
                        _QM2_w1 = __R64H;
                    }

                    //__add_128_64((_Qh), AHBH, QM2_w1); // add 64-bit value to 128-bit
                    {
                        final long __A128_w0 = _AHBH_w0;
                        final long __A128_w1 = _AHBH_w1;
                        final long __B64 = _QM2_w1;
                        long __R64H;
                        __R64H = __A128_w1;
                        Q_high_w0 = __B64 + __A128_w0;
                        if ((UnsignedLong.isLess(Q_high_w0, __B64)))
                            __R64H++;
                        Q_high_w1 = __R64H;
                    }

                    Q_low_w1 = _QM2_w0;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



