// File: /workspace/github_cpp_makefile_star2_O2/sus304[P]ForRocket/src/rocket/flight_data_recorder.cpp
// Function: forrocket::FlightDataRecorder::operator()(std::array<double, 14ul> const&, double)
void forrocket::FlightDataRecorder::operator()(const DynamicsBase::state& x, const double t) {
    if (p_rocket->position.LLH(2) >= 0.0) {
        countup_time.push_back(t);
        countup_burn_time.push_back(p_rocket->burn_clock.countup_time);
        thrust.push_back(p_rocket->engine.thrust);
        mdot_prop.push_back(p_rocket->engine.mdot_prop);
        burning.push_back(p_rocket->engine.burning);
        gimbal_angle_y_axis.push_back(p_rocket->engine.gimbal_angle_y_axis);
        gimbal_angle_z_axis.push_back(p_rocket->engine.gimbal_angle_z_axis);
        mass_prop.push_back(p_rocket->mass.propellant);
        mass.push_back(p_rocket->mass.inert + p_rocket->mass.propellant);
        length_CG.push_back(p_rocket->length_CG);
        length_CP.push_back(p_rocket->length_CP);
        inertia_tensor.push_back(p_rocket->inertia_tensor);
        CA.push_back(p_rocket->CA);
        CNa.push_back(p_rocket->CNa);
        Cld.push_back(p_rocket->Cld);
        Clp.push_back(p_rocket->Clp);
        Cmq.push_back(p_rocket->Cmq);
        position.push_back(p_rocket->position);
        velocity.push_back(p_rocket->velocity);
        dynamic_pressure.push_back(p_rocket->dynamic_pressure);
        acceleration.push_back(p_rocket->acceleration);
        force.push_back(p_rocket->force);
        attitude.push_back(p_rocket->attitude);
        quaternion_dot.push_back(p_rocket->quaternion_dot);
        angular_velocity.push_back(p_rocket->angular_velocity);
        angular_acceleration.push_back(p_rocket->angular_acceleration);
        angle_of_attack.push_back(p_rocket->angle_of_attack);
        sideslip_angle.push_back(p_rocket->sideslip_angle);
        moment.push_back(p_rocket->moment);
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movsd %xmm0, 0x8(%rsp)
movq (%rdi), %rax
movsd 0x2e0(%rax), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x1739f
movq %rdi, %rbx
addq $0x8, %rdi
leaq 0x8(%rsp), %rsi
callq 0x19a06
leaq 0x20(%rbx), %rdi
movq (%rbx), %rsi
addq $0x38, %rsi
callq 0x19a06
leaq 0x38(%rbx), %rdi
movq (%rbx), %rsi
addq $0x58, %rsi
callq 0x19a06
leaq 0x50(%rbx), %rdi
movq (%rbx), %rsi
addq $0x60, %rsi
callq 0x19a06
leaq 0x68(%rbx), %rdi
movq (%rbx), %rax
movzbl 0x48(%rax), %esi
callq 0xa90e
leaq 0x90(%rbx), %rdi
movq (%rbx), %rsi
addq $0x70, %rsi
callq 0x19a06
leaq 0xa8(%rbx), %rdi
movq (%rbx), %rsi
addq $0x78, %rsi
callq 0x19a06
leaq 0xc0(%rbx), %rdi
movl $0x218, %esi            # imm = 0x218
addq (%rbx), %rsi
callq 0x19a06
leaq 0xd8(%rbx), %rdi
movq (%rbx), %rax
movsd 0x210(%rax), %xmm0
addsd 0x218(%rax), %xmm0
leaq 0x10(%rsp), %rsi
movsd %xmm0, (%rsi)
callq 0x62f0
leaq 0xf0(%rbx), %rdi
movl $0x200, %esi            # imm = 0x200
addq (%rbx), %rsi
callq 0x19a06
leaq 0x108(%rbx), %rdi
movl $0x208, %esi            # imm = 0x208
addq (%rbx), %rsi
callq 0x19a06
leaq 0x120(%rbx), %rdi
movl $0x220, %esi            # imm = 0x220
addq (%rbx), %rsi
callq 0x19a28
leaq 0x138(%rbx), %rdi
movl $0x268, %esi            # imm = 0x268
addq (%rbx), %rsi
callq 0x19a06
leaq 0x150(%rbx), %rdi
movl $0x270, %r14d           # imm = 0x270
movq (%rbx), %rsi
addq %r14, %rsi
callq 0x19a06
leaq 0x168(%rbx), %rdi
movl $0x278, %esi            # imm = 0x278
addq (%rbx), %rsi
callq 0x19a06
leaq 0x180(%rbx), %rdi
movl $0x280, %esi            # imm = 0x280
addq (%rbx), %rsi
callq 0x19a06
leaq 0x198(%rbx), %rdi
movl $0x288, %r15d           # imm = 0x288
movq (%rbx), %rsi
addq %r15, %rsi
callq 0x19a06
leaq 0x1b0(%rbx), %rdi
movl $0x2a0, %r12d           # imm = 0x2A0
movq (%rbx), %rsi
addq %r12, %rsi
callq 0x19a52
leaq 0x1c8(%rbx), %rdi
movl $0x2e8, %esi            # imm = 0x2E8
addq (%rbx), %rsi
callq 0x19a98
leaq 0x1e0(%rbx), %rdi
movl $0x350, %esi            # imm = 0x350
addq (%rbx), %rsi
callq 0x19a06
leaq 0x1f8(%rbx), %rdi
movl $0x358, %esi            # imm = 0x358
addq (%rbx), %rsi
callq 0x19af8
leaq 0x210(%rbx), %rdi
movl $0x388, %esi            # imm = 0x388
addq (%rbx), %rsi
callq 0x19b2e
leaq 0x228(%rbx), %rdi
movl $0x3d0, %esi            # imm = 0x3D0
addq (%rbx), %rsi
callq 0x19b74
leaq 0x240(%rbx), %rdi
movl $0x410, %esi            # imm = 0x410
addq (%rbx), %rsi
callq 0x19baa
leaq 0x258(%rbx), %rdi
movl $0x430, %esi            # imm = 0x430
addq (%rbx), %rsi
callq 0x19bd0
addq %rbx, %r14
movl $0x448, %esi            # imm = 0x448
addq (%rbx), %rsi
movq %r14, %rdi
callq 0x19bd0
addq %rbx, %r15
movl $0x460, %esi            # imm = 0x460
addq (%rbx), %rsi
movq %r15, %rdi
callq 0x19a06
addq %rbx, %r12
movl $0x468, %esi            # imm = 0x468
addq (%rbx), %rsi
movq %r12, %rdi
callq 0x19a06
movl $0x470, %esi            # imm = 0x470
addq (%rbx), %rsi
addq $0x2b8, %rbx            # imm = 0x2B8
movq %rbx, %rdi
callq 0x19bf6
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
nop