// File: istellartech[P]OpenTsiolkovsky/./boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp
// Function: std::pair<double, double> boost::numeric::odeint::dense_output_runge_kutta<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>, boost::numeric::odeint::explicit_controlled_stepper_fsal_tag>::do_step<RocketStage>(RocketStage)
std::pair< time_type , time_type > do_step( System system )
    {
        if( !m_is_deriv_initialized )
        {
            typename odeint::unwrap_reference< System >::type &sys = system;
            sys( get_current_state() , get_current_deriv() , m_t );
            m_is_deriv_initialized = true;
        }

        failed_step_checker fail_checker;  // to throw a runtime_error if step size adjustment fails
        controlled_step_result res = fail;
        m_t_old = m_t;
        do
        {
            res = m_stepper.try_step( system , get_current_state() , get_current_deriv() , m_t ,
                                      get_old_state() , get_old_deriv() , m_dt );
            fail_checker();  // check for overflow of failed steps
        }
        while( res == fail );
        toggle_current_state();
        return std::make_pair( m_t_old , m_t );
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf80, %rsp            # imm = 0xF80
movq %rsi, -0xf20(%rbp)
movq %rdi, -0x18(%rbp)
movq %rsi, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xf18(%rbp)
testb $0x1, 0x768(%rax)
jne 0x2cf76
movq -0xf18(%rbp), %rdi
movq -0xf20(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0xf30(%rbp)
callq 0x2d330
movq -0xf18(%rbp), %rdi
movq %rax, -0xf28(%rbp)
callq 0x2e4b0
movq -0xf30(%rbp), %rdi
movq -0xf28(%rbp), %rsi
movq %rax, %rdx
movq -0xf18(%rbp), %rax
movsd 0x750(%rax), %xmm0
movq (%rdi), %rax
callq *(%rax)
movq -0xf18(%rbp), %rax
movb $0x1, 0x768(%rax)
leaq -0x30(%rbp), %rdi
movl $0x1f4, %esi            # imm = 0x1F4
callq 0x2e4f0
movq -0xf18(%rbp), %rax
movl $0x1, -0x34(%rbp)
movsd 0x750(%rax), %xmm0
movsd %xmm0, 0x758(%rax)
movq -0xf18(%rbp), %rax
movq -0xf20(%rbp), %rsi
movq %rax, -0xf48(%rbp)
leaq -0xf00(%rbp), %rdi
callq 0x1f580
movq -0xf18(%rbp), %rdi
callq 0x2d330
movq -0xf18(%rbp), %rdi
movq %rax, -0xf40(%rbp)
callq 0x2e4b0
movq %rax, -0xf38(%rbp)
jmp 0x2cfeb
movq -0xf18(%rbp), %rdi
movq %rdi, %rax
addq $0x750, %rax            # imm = 0x750
movq %rax, -0xf58(%rbp)
callq 0x2e820
movq %rax, -0xf50(%rbp)
jmp 0x2d010
movq -0xf18(%rbp), %rdi
callq 0x2e860
movq %rax, -0xf60(%rbp)
jmp 0x2d025
movq -0xf50(%rbp), %r9
movq -0xf58(%rbp), %r8
movq -0xf38(%rbp), %rcx
movq -0xf40(%rbp), %rdx
movq -0xf48(%rbp), %rdi
movq -0xf60(%rbp), %rsi
movq -0xf18(%rbp), %r10
addq $0x760, %r10            # imm = 0x760
movq %rsp, %rax
movq %r10, 0x8(%rax)
movq %rsi, (%rax)
leaq -0xf00(%rbp), %rsi
callq 0x2e520
movl %eax, -0xf64(%rbp)
jmp 0x2d07b
movl -0xf64(%rbp), %eax
movl %eax, -0x34(%rbp)
leaq -0xf00(%rbp), %rdi
callq 0xb260
leaq -0x30(%rbp), %rdi
callq 0x2e8a0
cmpl $0x1, -0x34(%rbp)
je 0x2cfa2
movq -0xf18(%rbp), %rdi
callq 0x2e9f0
movq -0xf18(%rbp), %rsi
movq %rsi, %rdi
addq $0x758, %rdi            # imm = 0x758
addq $0x750, %rsi            # imm = 0x750
callq 0x2ea10
movsd %xmm0, -0x10(%rbp)
movsd %xmm1, -0x8(%rbp)
movsd -0x10(%rbp), %xmm0
movsd -0x8(%rbp), %xmm1
addq $0xf80, %rsp            # imm = 0xF80
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf08(%rbp)
movl %eax, -0xf0c(%rbp)
leaq -0xf00(%rbp), %rdi
callq 0xb260
movq -0xf08(%rbp), %rdi
callq 0x67a0
nopw %cs:(%rax,%rax)
nopl (%rax)