// File: /workspace/github_cpp_makefile_star2_O3/istellartech[P]OpenTsiolkovsky/./boost/numeric/odeint/stepper/controlled_runge_kutta.hpp
// Function: boost::numeric::odeint::controlled_step_result boost::numeric::odeint::controlled_runge_kutta<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>, boost::numeric::odeint::default_error_checker<double, boost::numeric::odeint::array_algebra, boost::numeric::odeint::default_operations>, boost::numeric::odeint::default_step_adjuster<double, double>, boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag>::try_step<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&)
controlled_step_result try_step( System system , const StateIn &in , const DerivIn &dxdt_in , time_type &t ,
            StateOut &out , DerivOut &dxdt_out , time_type &dt )
    {
        if( !m_step_adjuster.check_step_size_limit(dt) )
        {
            // given dt was above step size limit - adjust and return fail;
            dt = m_step_adjuster.get_max_dt();
            return fail;
        }

        m_xerr_resizer.adjust_size( in , detail::bind( &controlled_runge_kutta::template resize_m_xerr_impl< StateIn > , detail::ref( *this ) , detail::_1 ) );

        //fsal: m_stepper.get_dxdt( dxdt );
        //fsal: m_stepper.do_step( sys , x , dxdt , t , dt , m_x_err );
        m_stepper.do_step( system , in , dxdt_in , t , out , dxdt_out , dt , m_xerr.m_v );

        // this potentially overwrites m_x_err! (standard_error_checker does, at least)
        value_type max_rel_err = m_error_checker.error( m_stepper.algebra() , in , dxdt_in , m_xerr.m_v , dt );

        if( max_rel_err > 1.0 )
        {
            // error too big, decrease step size and reject this step
            dt = m_step_adjuster.decrease_step(dt, max_rel_err, m_stepper.error_order());
            return fail;
        }
        // otherwise, increase step size and accept
        t += dt;
        dt = m_step_adjuster.increase_step(dt, max_rel_err, m_stepper.stepper_order());
        return success;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xee8, %rsp            # imm = 0xEE8
movq %r8, 0x10(%rsp)
movq %rdi, %rbx
movq 0xf28(%rsp), %r13
movsd 0x3b0(%rdi), %xmm4
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm4
jne 0x19aa9
jnp 0x19af0
movsd (%r13), %xmm1
movapd %xmm1, %xmm2
subsd %xmm4, %xmm2
movsd 0xc2b1(%rip), %xmm3     # 0x25d70
xorl %eax, %eax
ucomisd %xmm2, %xmm3
setae %al
movapd %xmm4, %xmm2
subsd %xmm1, %xmm2
xorl %edi, %edi
ucomisd %xmm2, %xmm3
setae %dil
ucomisd %xmm0, %xmm1
cmoval %eax, %edi
movl $0x1, %ebp
cmpb $0x1, %dil
jne 0x19c4d
movq %rdx, %r12
movq %rcx, %r14
movq %r9, 0x18(%rsp)
cmpb $0x0, 0x3b9(%rbx)
jne 0x19b0b
movb $0x1, 0x3b9(%rbx)
leaq 0x20(%rsp), %r15
movq %r15, %rdi
callq 0x15f14
movq 0x10(%rsp), %rax
movsd (%rax), %xmm0
movsd (%r13), %xmm1
leaq 0x430(%rbx), %rbp
movq %rbp, (%rsp)
movq %rbx, %rdi
movq %r15, %rsi
movq %r12, %rdx
movq %r14, %rcx
movq 0x18(%rsp), %r8
movq 0xf20(%rsp), %r9
callq 0x19d58
leaq 0x20(%rsp), %rdi
callq 0x7282
leaq 0x390(%rbx), %rdi
movsd (%r13), %xmm0
movq %rbx, %rsi
movq %r12, %rdx
movq %r14, %rcx
movq %rbp, %r8
callq 0x19df6
ucomisd 0xb4f0(%rip), %xmm0     # 0x25070
movsd (%r13), %xmm2
jbe 0x19bc8
movsd 0xc2e0(%rip), %xmm1     # 0x25e70
movsd %xmm2, 0x10(%rsp)
callq 0x5640
movsd 0x10(%rsp), %xmm4
mulsd 0xc2bf(%rip), %xmm0     # 0x25e68
movsd 0xc2c7(%rip), %xmm1     # 0x25e78
maxsd %xmm0, %xmm1
mulsd %xmm1, %xmm4
movsd 0x3b0(%rbx), %xmm1
movl $0x1, %ebp
jmp 0x19c20
movq 0x10(%rsp), %rax
addsd (%rax), %xmm2
movsd %xmm2, (%rax)
movsd (%r13), %xmm4
xorl %ebp, %ebp
movsd 0xc13b(%rip), %xmm1     # 0x25d20
ucomisd %xmm0, %xmm1
jbe 0x19c4d
maxsd 0xc265(%rip), %xmm0     # 0x25e58
movsd 0xc265(%rip), %xmm1     # 0x25e60
movsd %xmm4, 0x10(%rsp)
callq 0x5640
movsd 0x10(%rsp), %xmm4
mulsd 0xc254(%rip), %xmm0     # 0x25e68
mulsd %xmm0, %xmm4
movsd 0x3b0(%rbx), %xmm1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
jne 0x19c2c
jnp 0x19c4d
movapd %xmm1, %xmm2
minsd %xmm4, %xmm2
maxsd %xmm4, %xmm1
cmpltsd %xmm4, %xmm0
andpd %xmm0, %xmm2
andnpd %xmm1, %xmm0
orpd %xmm2, %xmm0
movapd %xmm0, %xmm4
movsd %xmm4, (%r13)
movl %ebp, %eax
addq $0xee8, %rsp            # imm = 0xEE8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x7282
movq %rbx, %rdi
callq 0x5650