// File: istellartech[P]OpenTsiolkovsky/./boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp
// Function: void boost::numeric::odeint::runge_kutta_dopri5<std::array<double, 14ul>, double, std::array<double, 14ul>, double, boost::numeric::odeint::array_algebra, boost::numeric::odeint::default_operations, boost::numeric::odeint::initially_resizer>::do_step_impl<RocketStage, std::array<double, 14ul>, std::array<double, 14ul>, std::array<double, 14ul>, std::array<double, 14ul>>(RocketStage, std::array<double, 14ul> const&, std::array<double, 14ul> const&, double, std::array<double, 14ul>&, std::array<double, 14ul>&, double)
void do_step_impl( System system , const StateIn &in , const DerivIn &dxdt_in , time_type t ,
            StateOut &out , DerivOut &dxdt_out , time_type dt )
    {
        const value_type a2 = static_cast<value_type> ( 1 ) / static_cast<value_type>( 5 );
        const value_type a3 = static_cast<value_type> ( 3 ) / static_cast<value_type> ( 10 );
        const value_type a4 = static_cast<value_type> ( 4 ) / static_cast<value_type> ( 5 );
        const value_type a5 = static_cast<value_type> ( 8 )/static_cast<value_type> ( 9 );

        const value_type b21 = static_cast<value_type> ( 1 ) / static_cast<value_type> ( 5 );

        const value_type b31 = static_cast<value_type> ( 3 ) / static_cast<value_type>( 40 );
        const value_type b32 = static_cast<value_type> ( 9 ) / static_cast<value_type>( 40 );

        const value_type b41 = static_cast<value_type> ( 44 ) / static_cast<value_type> ( 45 );
        const value_type b42 = static_cast<value_type> ( -56 ) / static_cast<value_type> ( 15 );
        const value_type b43 = static_cast<value_type> ( 32 ) / static_cast<value_type> ( 9 );

        const value_type b51 = static_cast<value_type> ( 19372 ) / static_cast<value_type>( 6561 );
        const value_type b52 = static_cast<value_type> ( -25360 ) / static_cast<value_type> ( 2187 );
        const value_type b53 = static_cast<value_type> ( 64448 ) / static_cast<value_type>( 6561 );
        const value_type b54 = static_cast<value_type> ( -212 ) / static_cast<value_type>( 729 );

        const value_type b61 = static_cast<value_type> ( 9017 ) / static_cast<value_type>( 3168 );
        const value_type b62 = static_cast<value_type> ( -355 ) / static_cast<value_type>( 33 );
        const value_type b63 = static_cast<value_type> ( 46732 ) / static_cast<value_type>( 5247 );
        const value_type b64 = static_cast<value_type> ( 49 ) / static_cast<value_type>( 176 );
        const value_type b65 = static_cast<value_type> ( -5103 ) / static_cast<value_type>( 18656 );

        const value_type c1 = static_cast<value_type> ( 35 ) / static_cast<value_type>( 384 );
        const value_type c3 = static_cast<value_type> ( 500 ) / static_cast<value_type>( 1113 );
        const value_type c4 = static_cast<value_type> ( 125 ) / static_cast<value_type>( 192 );
        const value_type c5 = static_cast<value_type> ( -2187 ) / static_cast<value_type>( 6784 );
        const value_type c6 = static_cast<value_type> ( 11 ) / static_cast<value_type>( 84 );

        typename odeint::unwrap_reference< System >::type &sys = system;

        m_k_x_tmp_resizer.adjust_size( in , detail::bind( &stepper_type::template resize_k_x_tmp_impl<StateIn> , detail::ref( *this ) , detail::_1 ) );

        //m_x_tmp = x + dt*b21*dxdt
        stepper_base_type::m_algebra.for_each3( m_x_tmp.m_v , in , dxdt_in ,
                typename operations_type::template scale_sum2< value_type , time_type >( 1.0 , dt*b21 ) );

        sys( m_x_tmp.m_v , m_k2.m_v , t + dt*a2 );
        // m_x_tmp = x + dt*b31*dxdt + dt*b32*m_k2
        stepper_base_type::m_algebra.for_each4( m_x_tmp.m_v , in , dxdt_in , m_k2.m_v ,
                typename operations_type::template scale_sum3< value_type , time_type , time_type >( 1.0 , dt*b31 , dt*b32 ));

        sys( m_x_tmp.m_v , m_k3.m_v , t + dt*a3 );
        // m_x_tmp = x + dt * (b41*dxdt + b42*m_k2 + b43*m_k3)
        stepper_base_type::m_algebra.for_each5( m_x_tmp.m_v , in , dxdt_in , m_k2.m_v , m_k3.m_v ,
                typename operations_type::template scale_sum4< value_type , time_type , time_type , time_type >( 1.0 , dt*b41 , dt*b42 , dt*b43 ));

        sys( m_x_tmp.m_v, m_k4.m_v , t + dt*a4 );
        stepper_base_type::m_algebra.for_each6( m_x_tmp.m_v , in , dxdt_in , m_k2.m_v , m_k3.m_v , m_k4.m_v ,
                typename operations_type::template scale_sum5< value_type , time_type , time_type , time_type , time_type >( 1.0 , dt*b51 , dt*b52 , dt*b53 , dt*b54 ));

        sys( m_x_tmp.m_v , m_k5.m_v , t + dt*a5 );
        stepper_base_type::m_algebra.for_each7( m_x_tmp.m_v , in , dxdt_in , m_k2.m_v , m_k3.m_v , m_k4.m_v , m_k5.m_v ,
                typename operations_type::template scale_sum6< value_type , time_type , time_type , time_type , time_type , time_type >( 1.0 , dt*b61 , dt*b62 , dt*b63 , dt*b64 , dt*b65 ));

        sys( m_x_tmp.m_v , m_k6.m_v , t + dt );
        stepper_base_type::m_algebra.for_each7( out , in , dxdt_in , m_k3.m_v , m_k4.m_v , m_k5.m_v , m_k6.m_v ,
                typename operations_type::template scale_sum6< value_type , time_type , time_type , time_type , time_type , time_type >( 1.0 , dt*c1 , dt*c3 , dt*c4 , dt*c5 , dt*c6 ));

        // the new derivative
        sys( out , dxdt_out , t + dt );
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x360, %rsp            # imm = 0x360
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movsd %xmm0, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movsd %xmm1, -0x40(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x248(%rbp)
movabsq $0x3fc999999999999a, %rax # imm = 0x3FC999999999999A
movq %rax, -0x48(%rbp)
movabsq $0x3fd3333333333333, %rcx # imm = 0x3FD3333333333333
movq %rcx, -0x50(%rbp)
movabsq $0x3fe999999999999a, %rcx # imm = 0x3FE999999999999A
movq %rcx, -0x58(%rbp)
movabsq $0x3fec71c71c71c71c, %rcx # imm = 0x3FEC71C71C71C71C
movq %rcx, -0x60(%rbp)
movq %rax, -0x68(%rbp)
movabsq $0x3fb3333333333333, %rax # imm = 0x3FB3333333333333
movq %rax, -0x70(%rbp)
movabsq $0x3fcccccccccccccd, %rax # imm = 0x3FCCCCCCCCCCCCCD
movq %rax, -0x78(%rbp)
movabsq $0x3fef49f49f49f49f, %rax # imm = 0x3FEF49F49F49F49F
movq %rax, -0x80(%rbp)
movabsq $-0x3ff2222222222222, %rax # imm = 0xC00DDDDDDDDDDDDE
movq %rax, -0x88(%rbp)
movabsq $0x400c71c71c71c71c, %rax # imm = 0x400C71C71C71C71C
movq %rax, -0x90(%rbp)
movabsq $0x40079eec0fc37181, %rax # imm = 0x40079EEC0FC37181
movq %rax, -0x98(%rbp)
movabsq $-0x3fd8cef42d6adf1c, %rax # imm = 0xC027310BD29520E4
movq %rax, -0xa0(%rbp)
movabsq $0x4023a552363c5290, %rax # imm = 0x4023A552363C5290
movq %rax, -0xa8(%rbp)
movabsq $-0x402d636145e1ccbb, %rax # imm = 0xBFD29C9EBA1E3345
movq %rax, -0xb0(%rbp)
movabsq $0x4006c52bf5a814b0, %rax # imm = 0x4006C52BF5A814B0
movq %rax, -0xb8(%rbp)
movabsq $-0x3fda7c1f07c1f07c, %rax # imm = 0xC02583E0F83E0F84
movq %rax, -0xc0(%rbp)
movabsq $0x4021d016a3721e8b, %rax # imm = 0x4021D016A3721E8B
movq %rax, -0xc8(%rbp)
movabsq $0x3fd1d1745d1745d1, %rax # imm = 0x3FD1D1745D1745D1
movq %rax, -0xd0(%rbp)
movabsq $-0x402e7e768f2633d1, %rax # imm = 0xBFD1818970D9CC2F
movq %rax, -0xd8(%rbp)
movabsq $0x3fb7555555555555, %rax # imm = 0x3FB7555555555555
movq %rax, -0xe0(%rbp)
movabsq $0x3fdcc0499a5605fb, %rax # imm = 0x3FDCC0499A5605FB
movq %rax, -0xe8(%rbp)
movabsq $0x3fe4d55555555555, %rax # imm = 0x3FE4D55555555555
movq %rax, -0xf0(%rbp)
movabsq $-0x402b5e304d4873ed, %rax # imm = 0xBFD4A1CFB2B78C13
movq %rax, -0xf8(%rbp)
movabsq $0x3fc0c30c30c30c31, %rax # imm = 0x3FC0C30C30C30C31
movq %rax, -0x100(%rbp)
movq %rsi, -0x108(%rbp)
movq %rdi, %rax
addq $0x388, %rax            # imm = 0x388
movq %rax, -0x320(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x318(%rbp)
leaq 0xbd9(%rip), %rax       # 0x30710
movq %rax, -0x130(%rbp)
movq $0x0, -0x128(%rbp)
callq 0x2f930
movq %rax, -0x138(%rbp)
leaq -0x120(%rbp), %rdi
leaq -0x130(%rbp), %rsi
leaq -0x138(%rbp), %rdx
movq 0x49427(%rip), %rcx     # 0x78f98
callq 0x2f8c0
movq -0x320(%rbp), %rdi
movq -0x318(%rbp), %rsi
leaq -0x120(%rbp), %rdx
callq 0x2f870
movq -0x248(%rbp), %rax
addq $0x78, %rax
movq %rax, -0x310(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x308(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x300(%rbp)
movsd 0x233b8(%rip), %xmm1    # 0x52f78
mulsd -0x40(%rbp), %xmm1
leaq -0x148(%rbp), %rdi
movsd 0x2246c(%rip), %xmm0    # 0x52040
callq 0x308e0
movq -0x310(%rbp), %rdi
movq -0x308(%rbp), %rsi
movq -0x300(%rbp), %rdx
movsd -0x148(%rbp), %xmm0
movsd -0x140(%rbp), %xmm1
callq 0x30850
movq -0x248(%rbp), %rdx
movq -0x108(%rbp), %rdi
movq %rdx, %rsi
addq $0x78, %rsi
addq $0xe8, %rdx
movsd -0x28(%rbp), %xmm1
movsd -0x40(%rbp), %xmm0
movsd 0x23347(%rip), %xmm2    # 0x52f78
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq (%rdi), %rax
callq *(%rax)
movq -0x248(%rbp), %rax
movq %rax, %rcx
addq $0x78, %rcx
movq %rcx, -0x2f8(%rbp)
movq -0x18(%rbp), %rcx
movq %rcx, -0x2f0(%rbp)
movq -0x20(%rbp), %rcx
movq %rcx, -0x2e8(%rbp)
addq $0xe8, %rax
movq %rax, -0x2e0(%rbp)
movsd 0x233ba(%rip), %xmm1    # 0x53038
mulsd -0x40(%rbp), %xmm1
movsd 0x233a5(%rip), %xmm2    # 0x53030
mulsd -0x40(%rbp), %xmm2
leaq -0x160(%rbp), %rdi
movsd 0x223a1(%rip), %xmm0    # 0x52040
callq 0x309b0
movq -0x2f8(%rbp), %rdi
movq -0x2f0(%rbp), %rsi
movq -0x2e8(%rbp), %rdx
movq -0x2e0(%rbp), %rcx
leaq -0x160(%rbp), %rax
movq (%rax), %r8
movq %r8, (%rsp)
movq 0x8(%rax), %r8
movq %r8, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x30910
movq -0x248(%rbp), %rdx
movq -0x108(%rbp), %rdi
movq %rdx, %rsi
addq $0x78, %rsi
addq $0x158, %rdx            # imm = 0x158
movsd -0x28(%rbp), %xmm1
movsd -0x40(%rbp), %xmm0
movsd 0x23315(%rip), %xmm2    # 0x53028
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq (%rdi), %rax
callq *(%rax)
movq -0x248(%rbp), %rax
movq %rax, %rcx
addq $0x78, %rcx
movq %rcx, -0x2d8(%rbp)
movq -0x18(%rbp), %rcx
movq %rcx, -0x2d0(%rbp)
movq -0x20(%rbp), %rcx
movq %rcx, -0x2c8(%rbp)
movq %rax, %rcx
addq $0xe8, %rcx
movq %rcx, -0x2c0(%rbp)
addq $0x158, %rax            # imm = 0x158
movq %rax, -0x2b8(%rbp)
movsd 0x232af(%rip), %xmm1    # 0x53020
mulsd -0x40(%rbp), %xmm1
movsd 0x2329a(%rip), %xmm2    # 0x53018
mulsd -0x40(%rbp), %xmm2
movsd 0x23285(%rip), %xmm3    # 0x53010
mulsd -0x40(%rbp), %xmm3
leaq -0x180(%rbp), %rdi
movsd 0x222a1(%rip), %xmm0    # 0x52040
callq 0x30ab0
movq -0x2d8(%rbp), %rdi
movq -0x2d0(%rbp), %rsi
movq -0x2c8(%rbp), %rdx
movq -0x2c0(%rbp), %rcx
movq -0x2b8(%rbp), %r8
leaq -0x180(%rbp), %rax
movq (%rax), %r9
movq %r9, (%rsp)
movq 0x8(%rax), %r9
movq %r9, 0x8(%rsp)
movq 0x10(%rax), %r9
movq %r9, 0x10(%rsp)
movq 0x18(%rax), %rax
movq %rax, 0x18(%rsp)
callq 0x309f0
movq -0x248(%rbp), %rdx
movq -0x108(%rbp), %rdi
movq %rdx, %rsi
addq $0x78, %rsi
addq $0x1c8, %rdx            # imm = 0x1C8
movsd -0x28(%rbp), %xmm1
movsd -0x40(%rbp), %xmm0
movsd 0x231e5(%rip), %xmm2    # 0x53008
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq (%rdi), %rax
callq *(%rax)
movq -0x248(%rbp), %rax
movq %rax, %rcx
addq $0x78, %rcx
movq %rcx, -0x2b0(%rbp)
movq -0x18(%rbp), %rcx
movq %rcx, -0x2a8(%rbp)
movq -0x20(%rbp), %rcx
movq %rcx, -0x2a0(%rbp)
movq %rax, %rcx
addq $0xe8, %rcx
movq %rcx, -0x298(%rbp)
movq %rax, %rcx
addq $0x158, %rcx            # imm = 0x158
movq %rcx, -0x290(%rbp)
addq $0x1c8, %rax            # imm = 0x1C8
movq %rax, -0x288(%rbp)
movsd 0x2316e(%rip), %xmm1    # 0x53000
mulsd -0x40(%rbp), %xmm1
movsd 0x23159(%rip), %xmm2    # 0x52ff8
mulsd -0x40(%rbp), %xmm2
movsd 0x23144(%rip), %xmm3    # 0x52ff0
mulsd -0x40(%rbp), %xmm3
movsd 0x2312f(%rip), %xmm4    # 0x52fe8
mulsd -0x40(%rbp), %xmm4
leaq -0x1a8(%rbp), %rdi
movsd 0x22173(%rip), %xmm0    # 0x52040
callq 0x30be0
movq -0x2b0(%rbp), %rdi
movq -0x2a8(%rbp), %rsi
movq -0x2a0(%rbp), %rdx
movq -0x298(%rbp), %rcx
movq -0x290(%rbp), %r8
movq -0x288(%rbp), %r9
movq -0x188(%rbp), %r10
movq %rsp, %rax
movq %r10, 0x20(%rax)
movups -0x1a8(%rbp), %xmm0
movups -0x198(%rbp), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0x30b00
movq -0x248(%rbp), %rdx
movq -0x108(%rbp), %rdi
movq %rdx, %rsi
addq $0x78, %rsi
addq $0x238, %rdx            # imm = 0x238
movsd -0x28(%rbp), %xmm1
movsd -0x40(%rbp), %xmm0
movsd 0x2308e(%rip), %xmm2    # 0x52fe0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq (%rdi), %rax
callq *(%rax)
movq -0x248(%rbp), %rax
movq %rax, %rcx
addq $0x78, %rcx
movq %rcx, -0x278(%rbp)
movq -0x18(%rbp), %rcx
movq %rcx, -0x270(%rbp)
movq -0x20(%rbp), %rcx
movq %rcx, -0x268(%rbp)
movq %rax, %rcx
addq $0xe8, %rcx
movq %rcx, -0x260(%rbp)
movq %rax, %rcx
addq $0x158, %rcx            # imm = 0x158
movq %rcx, -0x258(%rbp)
movq %rax, %rcx
addq $0x1c8, %rcx            # imm = 0x1C8
movq %rcx, -0x250(%rbp)
addq $0x238, %rax            # imm = 0x238
movq %rax, -0x280(%rbp)
movsd 0x23006(%rip), %xmm1    # 0x52fd8
mulsd -0x40(%rbp), %xmm1
movsd 0x22ff1(%rip), %xmm2    # 0x52fd0
mulsd -0x40(%rbp), %xmm2
movsd 0x22fdc(%rip), %xmm3    # 0x52fc8
mulsd -0x40(%rbp), %xmm3
movsd 0x22fc7(%rip), %xmm4    # 0x52fc0
mulsd -0x40(%rbp), %xmm4
movsd 0x22fb2(%rip), %xmm5    # 0x52fb8
mulsd -0x40(%rbp), %xmm5
leaq -0x1d8(%rbp), %rdi
movsd 0x22026(%rip), %xmm0    # 0x52040
callq 0x302f0
movq -0x280(%rbp), %r10
movq -0x278(%rbp), %rdi
movq -0x270(%rbp), %rsi
movq -0x268(%rbp), %rdx
movq -0x260(%rbp), %rcx
movq -0x258(%rbp), %r8
movq -0x250(%rbp), %r9
movups -0x1d8(%rbp), %xmm0
movups -0x1c8(%rbp), %xmm1
movups -0x1b8(%rbp), %xmm2
movq %rsp, %rax
movups %xmm2, 0x28(%rax)
movups %xmm1, 0x18(%rax)
movups %xmm0, 0x8(%rax)
movq %r10, (%rax)
callq 0x301f0
movq -0x248(%rbp), %rdx
movq -0x108(%rbp), %rdi
movq %rdx, %rsi
addq $0x78, %rsi
addq $0x2a8, %rdx            # imm = 0x2A8
movsd -0x28(%rbp), %xmm0
addsd -0x40(%rbp), %xmm0
movq (%rdi), %rax
callq *(%rax)
movq -0x248(%rbp), %rax
movq -0x30(%rbp), %rcx
movq %rcx, -0x238(%rbp)
movq -0x18(%rbp), %rcx
movq %rcx, -0x230(%rbp)
movq -0x20(%rbp), %rcx
movq %rcx, -0x228(%rbp)
movq %rax, %rcx
addq $0x158, %rcx            # imm = 0x158
movq %rcx, -0x220(%rbp)
movq %rax, %rcx
addq $0x1c8, %rcx            # imm = 0x1C8
movq %rcx, -0x218(%rbp)
movq %rax, %rcx
addq $0x238, %rcx            # imm = 0x238
movq %rcx, -0x210(%rbp)
addq $0x2a8, %rax            # imm = 0x2A8
movq %rax, -0x240(%rbp)
movsd 0x22da9(%rip), %xmm1    # 0x52ec0
mulsd -0x40(%rbp), %xmm1
movsd 0x22d94(%rip), %xmm2    # 0x52eb8
mulsd -0x40(%rbp), %xmm2
movsd 0x22d7f(%rip), %xmm3    # 0x52eb0
mulsd -0x40(%rbp), %xmm3
movsd 0x22d6a(%rip), %xmm4    # 0x52ea8
mulsd -0x40(%rbp), %xmm4
movsd 0x22d55(%rip), %xmm5    # 0x52ea0
mulsd -0x40(%rbp), %xmm5
leaq -0x208(%rbp), %rdi
movsd 0x21ee1(%rip), %xmm0    # 0x52040
callq 0x302f0
movq -0x240(%rbp), %r10
movq -0x238(%rbp), %rdi
movq -0x230(%rbp), %rsi
movq -0x228(%rbp), %rdx
movq -0x220(%rbp), %rcx
movq -0x218(%rbp), %r8
movq -0x210(%rbp), %r9
movups -0x208(%rbp), %xmm0
movups -0x1f8(%rbp), %xmm1
movups -0x1e8(%rbp), %xmm2
movq %rsp, %rax
movups %xmm2, 0x28(%rax)
movups %xmm1, 0x18(%rax)
movups %xmm0, 0x8(%rax)
movq %r10, (%rax)
callq 0x301f0
movq -0x108(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x38(%rbp), %rdx
movsd -0x28(%rbp), %xmm0
addsd -0x40(%rbp), %xmm0
movq (%rdi), %rax
callq *(%rax)
addq $0x360, %rsp            # imm = 0x360
popq %rbp
retq
nopl (%rax,%rax)