// File: /workspace/github_cpp_makefile_star2_O1/istellartech[P]OpenTsiolkovsky/src/rocket.cpp
// Function: RocketStage::free_flight_ballistic(std::array<double, 14ul> const&, double)
void RocketStage::free_flight_ballistic(const RocketStage::state& x, double t){
    flight_mode = "free_ballistic";
    //    aerodynamics term
    vel_AIR_NEDframe_ = vel_ECEF_NEDframe_ - vel_wind_NEDframe_;
    vel_AIR_NEDframe_abs = vel_AIR_NEDframe_.norm();
    mach_number = vel_AIR_NEDframe_abs / air.airspeed;
    dynamic_pressure = 0.5 * air.density * vel_AIR_NEDframe_abs * vel_AIR_NEDframe_abs;
    force_axial = dynamic_pressure / ballistic_coef;
    force_air_vector_NEDframe = force_axial * (-1) * (vel_AIR_NEDframe_ / vel_AIR_NEDframe_abs);
    force_normal_pitch = force_normal_yaw = 0.0; // for csv output
    force_air_vector_BODYframe << -force_axial, 0.0, 0.0; // for csv output
    //    dv/dt
    accECI_ = dcmNED2ECI_ * force_air_vector_NEDframe + gravityECI_;
}

// Assembly:
pushq %rbx
subq $0x30, %rsp
movq %rdi, %rbx
addq $0x230, %rdi            # imm = 0x230
movq 0x238(%rbx), %rdx
leaq 0x14299(%rip), %rcx     # 0x28964
movl $0xe, %r8d
xorl %esi, %esi
callq 0x5540
movsd 0xbb8(%rbx), %xmm1
movsd 0xbc0(%rbx), %xmm2
subsd 0xbd0(%rbx), %xmm1
movsd %xmm1, 0xc00(%rbx)
subsd 0xbd8(%rbx), %xmm2
movsd %xmm2, 0xc08(%rbx)
movsd 0xbc8(%rbx), %xmm0
subsd 0xbe0(%rbx), %xmm0
movsd %xmm0, 0xc10(%rbx)
mulsd %xmm1, %xmm1
mulsd %xmm2, %xmm2
mulsd %xmm0, %xmm0
addsd %xmm2, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x14744
sqrtsd %xmm0, %xmm0
jmp 0x14749
callq 0x52e0
movsd %xmm0, 0x7d0(%rbx)
movapd %xmm0, %xmm1
divsd 0x900(%rbx), %xmm1
movsd %xmm1, 0x958(%rbx)
movsd 0x910(%rbx), %xmm1
mulsd 0x1357b(%rip), %xmm1    # 0x27cf0
mulsd %xmm0, %xmm1
mulsd %xmm0, %xmm1
movsd %xmm1, 0x7d8(%rbx)
divsd 0x288(%rbx), %xmm1
movsd %xmm1, 0x7e0(%rbx)
xorpd 0x12883(%rip), %xmm1    # 0x27020
movsd 0xc00(%rbx), %xmm2
divsd %xmm0, %xmm2
mulsd %xmm1, %xmm2
movsd %xmm2, 0xe10(%rbx)
movsd 0xc08(%rbx), %xmm2
divsd %xmm0, %xmm2
mulsd %xmm1, %xmm2
movsd %xmm2, 0xe18(%rbx)
movsd 0xc10(%rbx), %xmm2
divsd %xmm0, %xmm2
mulsd %xmm1, %xmm2
movsd %xmm2, 0xe20(%rbx)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x7e8(%rbx)
leaq 0xdf8(%rbx), %rax
movq %rsp, %rdi
movq %rax, (%rdi)
xorl %eax, %eax
movq %rax, 0x8(%rdi)
movl $0x1, %ecx
movq %rcx, 0x10(%rdi)
movq %rcx, 0x18(%rdi)
movlpd %xmm1, 0xdf8(%rbx)
leaq 0x28(%rsp), %rsi
movq %rax, (%rsi)
callq 0x16f1a
leaq 0x20(%rsp), %rsi
movq $0x0, (%rsi)
movq %rax, %rdi
callq 0x16f1a
movq 0x18(%rsp), %rax
addq 0x8(%rsp), %rax
cmpq $0x3, %rax
jne 0x14942
cmpq $0x1, 0x10(%rsp)
jne 0x14942
movsd 0xe10(%rbx), %xmm2
movsd 0xe18(%rbx), %xmm0
movsd 0xb70(%rbx), %xmm1
mulsd %xmm2, %xmm1
movsd 0xb88(%rbx), %xmm3
mulsd %xmm0, %xmm3
addsd %xmm1, %xmm3
movsd 0xe20(%rbx), %xmm1
movsd 0xba0(%rbx), %xmm4
mulsd %xmm1, %xmm4
addsd %xmm3, %xmm4
movsd 0xb78(%rbx), %xmm3
mulsd %xmm2, %xmm3
movsd 0xb90(%rbx), %xmm5
mulsd %xmm0, %xmm5
addsd %xmm3, %xmm5
movsd 0xba8(%rbx), %xmm3
mulsd %xmm1, %xmm3
mulsd 0xb80(%rbx), %xmm2
addsd %xmm5, %xmm3
mulsd 0xb98(%rbx), %xmm0
addsd %xmm2, %xmm0
mulsd 0xbb0(%rbx), %xmm1
addsd 0xe58(%rbx), %xmm4
addsd %xmm0, %xmm1
movsd %xmm4, 0x9f0(%rbx)
addsd 0xe60(%rbx), %xmm3
movsd %xmm3, 0x9f8(%rbx)
addsd 0xe68(%rbx), %xmm1
movsd %xmm1, 0xa00(%rbx)
addq $0x30, %rsp
popq %rbx
retq
jmp 0x14922
movq 0x18(%rsp), %rcx
addq 0x8(%rsp), %rcx
cmpq $0x3, %rcx
jne 0x14942
cmpq $0x1, 0x10(%rsp)
jne 0x14942
movq %rax, %rdi
callq 0x5650
leaq 0x1488b(%rip), %rdi     # 0x291d4
leaq 0x1490b(%rip), %rsi     # 0x2925b
leaq 0x14931(%rip), %rcx     # 0x29288
movl $0x6a, %edx
callq 0x5250
nop