// File: /workspace/github_cpp_makefile_star2_O1/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 %rbx
subq $0x10, %rsp
movsd %xmm0, 0x8(%rsp)
movq (%rdi), %rax
movsd 0x2e0(%rax), %xmm1
xorpd %xmm2, %xmm2
ucomisd %xmm2, %xmm1
jb 0x1c609
movq %rdi, %rbx
movq 0x10(%rdi), %rsi
cmpq 0x18(%rdi), %rsi
je 0x1c043
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x10(%rbx)
jmp 0x1c051
leaq 0x8(%rbx), %rdi
leaq 0x8(%rsp), %rdx
callq 0x1f584
movq (%rbx), %rdx
movq 0x28(%rbx), %rsi
addq $0x38, %rdx
cmpq 0x30(%rbx), %rsi
je 0x1c074
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x28(%rbx)
jmp 0x1c07d
leaq 0x20(%rbx), %rdi
callq 0x1f584
movq (%rbx), %rdx
movq 0x40(%rbx), %rsi
addq $0x58, %rdx
cmpq 0x48(%rbx), %rsi
je 0x1c0a0
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x40(%rbx)
jmp 0x1c0a9
leaq 0x38(%rbx), %rdi
callq 0x1f584
movq (%rbx), %rdx
movq 0x58(%rbx), %rsi
addq $0x60, %rdx
cmpq 0x60(%rbx), %rsi
je 0x1c0cc
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x58(%rbx)
jmp 0x1c0d5
leaq 0x50(%rbx), %rdi
callq 0x1f584
leaq 0x68(%rbx), %rdi
movq (%rbx), %rax
movzbl 0x48(%rax), %esi
callq 0xd3aa
movq (%rbx), %rdx
movq 0x98(%rbx), %rsi
addq $0x70, %rdx
cmpq 0xa0(%rbx), %rsi
je 0x1c111
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x98(%rbx)
jmp 0x1c11d
leaq 0x90(%rbx), %rdi
callq 0x1f584
movq (%rbx), %rdx
movq 0xb0(%rbx), %rsi
addq $0x78, %rdx
cmpq 0xb8(%rbx), %rsi
je 0x1c149
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xb0(%rbx)
jmp 0x1c155
leaq 0xa8(%rbx), %rdi
callq 0x1f584
movl $0x218, %edx            # imm = 0x218
addq (%rbx), %rdx
movq 0xc8(%rbx), %rsi
cmpq 0xd0(%rbx), %rsi
je 0x1c182
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xc8(%rbx)
jmp 0x1c18e
leaq 0xc0(%rbx), %rdi
callq 0x1f584
movq (%rbx), %rax
movsd 0x210(%rax), %xmm0
addsd 0x218(%rax), %xmm0
movsd %xmm0, (%rsp)
movq 0xe0(%rbx), %rsi
cmpq 0xe8(%rbx), %rsi
je 0x1c1c7
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xe0(%rbx)
jmp 0x1c1d6
leaq 0xd8(%rbx), %rdi
movq %rsp, %rdx
callq 0x7c14
movl $0x200, %edx            # imm = 0x200
addq (%rbx), %rdx
movq 0xf8(%rbx), %rsi
cmpq 0x100(%rbx), %rsi
je 0x1c203
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xf8(%rbx)
jmp 0x1c20f
leaq 0xf0(%rbx), %rdi
callq 0x1f584
movl $0x208, %edx            # imm = 0x208
addq (%rbx), %rdx
movq 0x110(%rbx), %rsi
cmpq 0x118(%rbx), %rsi
je 0x1c23c
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x110(%rbx)
jmp 0x1c248
leaq 0x108(%rbx), %rdi
callq 0x1f584
movl $0x220, %edx            # imm = 0x220
addq (%rbx), %rdx
movq 0x128(%rbx), %rsi
cmpq 0x130(%rbx), %rsi
je 0x1c278
movl $0x9, %ecx
movq %rsi, %rdi
movq %rdx, %rsi
rep  movsq (%rsi), %es:(%rdi)
addq $0x48, 0x128(%rbx)
jmp 0x1c284
leaq 0x120(%rbx), %rdi
callq 0x1f664
movl $0x268, %edx            # imm = 0x268
addq (%rbx), %rdx
movq 0x140(%rbx), %rsi
cmpq 0x148(%rbx), %rsi
je 0x1c2b1
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x140(%rbx)
jmp 0x1c2bd
leaq 0x138(%rbx), %rdi
callq 0x1f584
movl $0x270, %edx            # imm = 0x270
addq (%rbx), %rdx
movq 0x158(%rbx), %rsi
cmpq 0x160(%rbx), %rsi
je 0x1c2ea
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x158(%rbx)
jmp 0x1c2f6
leaq 0x150(%rbx), %rdi
callq 0x1f584
movl $0x278, %edx            # imm = 0x278
addq (%rbx), %rdx
movq 0x170(%rbx), %rsi
cmpq 0x178(%rbx), %rsi
je 0x1c323
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x170(%rbx)
jmp 0x1c32f
leaq 0x168(%rbx), %rdi
callq 0x1f584
movl $0x280, %edx            # imm = 0x280
addq (%rbx), %rdx
movq 0x188(%rbx), %rsi
cmpq 0x190(%rbx), %rsi
je 0x1c35c
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x188(%rbx)
jmp 0x1c368
leaq 0x180(%rbx), %rdi
callq 0x1f584
movl $0x288, %edx            # imm = 0x288
addq (%rbx), %rdx
movq 0x1a0(%rbx), %rsi
cmpq 0x1a8(%rbx), %rsi
je 0x1c395
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x1a0(%rbx)
jmp 0x1c3a1
leaq 0x198(%rbx), %rdi
callq 0x1f584
leaq 0x1b0(%rbx), %rdi
movl $0x2a0, %esi            # imm = 0x2A0
addq (%rbx), %rsi
callq 0x1f264
leaq 0x1c8(%rbx), %rdi
movl $0x2e8, %esi            # imm = 0x2E8
addq (%rbx), %rsi
callq 0x1f2aa
movl $0x350, %edx            # imm = 0x350
addq (%rbx), %rdx
movq 0x1e8(%rbx), %rsi
cmpq 0x1f0(%rbx), %rsi
je 0x1c3f6
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x1e8(%rbx)
jmp 0x1c402
leaq 0x1e0(%rbx), %rdi
callq 0x1f584
movq (%rbx), %rax
movq 0x200(%rbx), %rsi
leaq 0x358(%rax), %rdx
cmpq 0x208(%rbx), %rsi
je 0x1c44c
movq 0x10(%rdx), %rcx
movq %rcx, 0x10(%rsi)
movups (%rdx), %xmm0
movups %xmm0, (%rsi)
movupd 0x370(%rax), %xmm0
movupd %xmm0, 0x18(%rsi)
movq 0x380(%rax), %rax
movq %rax, 0x28(%rsi)
addq $0x30, 0x200(%rbx)
jmp 0x1c458
leaq 0x1f8(%rbx), %rdi
callq 0x1fbb2
leaq 0x210(%rbx), %rdi
movl $0x388, %esi            # imm = 0x388
addq (%rbx), %rsi
callq 0x1f30a
movq (%rbx), %rax
leaq 0x3d0(%rax), %rdx
movq 0x230(%rbx), %rsi
cmpq 0x238(%rbx), %rsi
je 0x1c4b8
movq 0x10(%rdx), %rcx
movq %rcx, 0x10(%rsi)
movaps (%rdx), %xmm0
movaps %xmm0, (%rsi)
movapd 0x3f0(%rax), %xmm0
movapd 0x400(%rax), %xmm1
movapd %xmm0, 0x20(%rsi)
movapd %xmm1, 0x30(%rsi)
addq $0x40, 0x230(%rbx)
jmp 0x1c4c4
leaq 0x228(%rbx), %rdi
callq 0x1ff18
movl $0x410, %edx            # imm = 0x410
addq (%rbx), %rdx
movq 0x248(%rbx), %rsi
cmpq 0x250(%rbx), %rsi
je 0x1c4f8
movapd (%rdx), %xmm0
movapd 0x10(%rdx), %xmm1
movapd %xmm1, 0x10(%rsi)
movapd %xmm0, (%rsi)
addq $0x20, 0x248(%rbx)
jmp 0x1c504
leaq 0x240(%rbx), %rdi
callq 0x2008e
movl $0x430, %edx            # imm = 0x430
addq (%rbx), %rdx
movq 0x260(%rbx), %rsi
cmpq 0x268(%rbx), %rsi
je 0x1c536
movq 0x10(%rdx), %rax
movq %rax, 0x10(%rsi)
movupd (%rdx), %xmm0
movupd %xmm0, (%rsi)
addq $0x18, 0x260(%rbx)
jmp 0x1c542
leaq 0x258(%rbx), %rdi
callq 0x201d0
movl $0x448, %edx            # imm = 0x448
addq (%rbx), %rdx
movq 0x278(%rbx), %rsi
cmpq 0x280(%rbx), %rsi
je 0x1c574
movq 0x10(%rdx), %rax
movq %rax, 0x10(%rsi)
movupd (%rdx), %xmm0
movupd %xmm0, (%rsi)
addq $0x18, 0x278(%rbx)
jmp 0x1c580
leaq 0x270(%rbx), %rdi
callq 0x201d0
movl $0x460, %edx            # imm = 0x460
addq (%rbx), %rdx
movq 0x290(%rbx), %rsi
cmpq 0x298(%rbx), %rsi
je 0x1c5ad
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x290(%rbx)
jmp 0x1c5b9
leaq 0x288(%rbx), %rdi
callq 0x1f584
movl $0x468, %edx            # imm = 0x468
addq (%rbx), %rdx
movq 0x2a8(%rbx), %rsi
cmpq 0x2b0(%rbx), %rsi
je 0x1c5e6
movsd (%rdx), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x2a8(%rbx)
jmp 0x1c5f2
leaq 0x2a0(%rbx), %rdi
callq 0x1f584
movl $0x470, %esi            # imm = 0x470
addq (%rbx), %rsi
addq $0x2b8, %rbx            # imm = 0x2B8
movq %rbx, %rdi
callq 0x1f350
addq $0x10, %rsp
popq %rbx
retq
nop