// File: /workspace/github_cpp_makefile_star2_O2/DavidLBruce[P]sim3dof/build/../src/FcTseO.cpp
// Function: FcTseO::PropStates(double)
void FcTseO::PropStates( double timeStep )
{
  double timeStep2 = timeStep * timeStep;
  double timeStep3 = timeStep2 * timeStep;

  double x2 = stateVec(0) * stateVec(0);

  phi[0][0] = 1.0;
  phi[0][1] = timeStep;
  phi[0][2] = 0.0;

  phi[1][0] = -stateVec(2) * timeStep;
  phi[1][1] = 1.0;
  phi[1][2] = -stateVec(0) * timeStep;

  phi[2][0] = 0.0;
  phi[2][1] = 0.0;
  phi[2][2] = 1.0;

  QQ[0][0] = 0.0;
  QQ[0][1] = 0.0;
  QQ[0][2] = 0.0;

  QQ[1][0] = 0.0;
  QQ[1][1] = x2 * timeStep3 * procNoise / 3.0;
  QQ[1][2] = -0.5 * stateVec(0) * timeStep2 * procNoise;

  QQ[2][0] = 0.0;
  QQ[2][1] = -0.5 * stateVec(0) * timeStep2 * procNoise;
  QQ[2][2] = timeStep * procNoise;


  //
  // Propagate the state vector
  //
  stateVec = IntegrateRK2( stateVec, timeStep );

  //
  // Propagate the estimation covariance matrix
  //
  PP = phi * PP * Transpose(phi) + QQ;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movsd %xmm0, -0x38(%rbp)
movq %rdi, %rbx
movapd %xmm0, %xmm1
mulsd %xmm0, %xmm1
movsd %xmm1, -0x58(%rbp)
mulsd %xmm0, %xmm1
movsd %xmm1, -0x50(%rbp)
leaq 0x248(%rdi), %r15
movq %r15, %rdi
xorl %esi, %esi
callq 0x131c0
movsd (%rax), %xmm0
movsd %xmm0, -0x30(%rbp)
movq %r15, %rdi
xorl %esi, %esi
callq 0x131c0
movsd -0x30(%rbp), %xmm0
mulsd (%rax), %xmm0
mulsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
leaq 0x1e0(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x1324e
movabsq $0x3ff0000000000000, %rcx # imm = 0x3FF0000000000000
movq %rcx, (%rax)
movq %rcx, %r12
movq %r14, %rdi
xorl %esi, %esi
callq 0x1324e
movsd -0x38(%rbp), %xmm0
movsd %xmm0, 0x8(%rax)
movq %r14, %rdi
xorl %esi, %esi
callq 0x1324e
andq $0x0, 0x10(%rax)
pushq $0x2
popq %rsi
movq %r15, %rdi
callq 0x131c0
movsd (%rax), %xmm0
xorpd 0x108d4(%rip), %xmm0    # 0x15010
mulsd -0x38(%rbp), %xmm0
movapd %xmm0, -0x50(%rbp)
pushq $0x1
popq %r13
movq %r14, %rdi
movl %r13d, %esi
callq 0x1324e
movaps -0x50(%rbp), %xmm0
movsd %xmm0, (%rax)
movq %r14, %rdi
movl %r13d, %esi
callq 0x1324e
movq %r12, 0x8(%rax)
movq %r15, %rdi
xorl %esi, %esi
callq 0x131c0
movsd (%rax), %xmm0
xorpd 0x1088e(%rip), %xmm0    # 0x15010
mulsd -0x38(%rbp), %xmm0
movapd %xmm0, -0x50(%rbp)
movq %r14, %rdi
movl %r13d, %esi
callq 0x1324e
movaps -0x50(%rbp), %xmm0
movsd %xmm0, 0x10(%rax)
movq %r14, %rdi
pushq $0x2
popq %r12
movl %r12d, %esi
callq 0x1324e
andq $0x0, (%rax)
movq %r14, %rdi
movl %r12d, %esi
callq 0x1324e
andq $0x0, 0x8(%rax)
movq %r14, %rdi
movl %r12d, %esi
callq 0x1324e
movabsq $0x3ff0000000000000, %rcx # imm = 0x3FF0000000000000
movq %rcx, 0x10(%rax)
leaq 0x228(%rbx), %r12
movq %r12, %rdi
xorl %esi, %esi
callq 0x1324e
andq $0x0, (%rax)
movq %r12, %rdi
xorl %esi, %esi
callq 0x1324e
andq $0x0, 0x8(%rax)
movq %r12, %rdi
xorl %esi, %esi
callq 0x1324e
andq $0x0, 0x10(%rax)
movq %r12, %rdi
movl %r13d, %esi
callq 0x1324e
andq $0x0, (%rax)
movsd -0x30(%rbp), %xmm0
mulsd 0x130(%rbx), %xmm0
divsd 0x107ed(%rip), %xmm0    # 0x15020
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
movl %r13d, %esi
callq 0x1324e
movsd -0x30(%rbp), %xmm0
movsd %xmm0, 0x8(%rax)
movq %r15, %rdi
xorl %esi, %esi
callq 0x131c0
movsd (%rax), %xmm0
mulsd 0x108fd(%rip), %xmm0    # 0x15160
mulsd -0x58(%rbp), %xmm0
mulsd 0x130(%rbx), %xmm0
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
movl %r13d, %esi
callq 0x1324e
movsd -0x30(%rbp), %xmm0
movsd %xmm0, 0x10(%rax)
movq %r12, %rdi
pushq $0x2
popq %r13
movl %r13d, %esi
callq 0x1324e
andq $0x0, (%rax)
movq %r15, %rdi
xorl %esi, %esi
callq 0x131c0
movsd 0x108b1(%rip), %xmm0    # 0x15160
mulsd (%rax), %xmm0
mulsd -0x58(%rbp), %xmm0
mulsd 0x130(%rbx), %xmm0
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
movl %r13d, %esi
callq 0x1324e
movsd -0x30(%rbp), %xmm0
movsd %xmm0, 0x8(%rax)
movsd 0x130(%rbx), %xmm0
mulsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
movl %r13d, %esi
callq 0x1324e
movsd -0x30(%rbp), %xmm0
movsd %xmm0, 0x10(%rax)
leaq -0x118(%rbp), %r13
movq %r13, %rdi
movq %rbx, %rsi
movq %r15, %rdx
movsd -0x38(%rbp), %xmm0
callq 0x54f6
leaq -0x148(%rbp), %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x13296
leaq -0x148(%rbp), %rdi
callq 0x12dd8
leaq -0x118(%rbp), %rdi
callq 0x12dd8
addq $0x1f8, %rbx            # imm = 0x1F8
leaq -0x100(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x12d48
leaq -0xb8(%rbp), %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x13512
leaq -0x88(%rbp), %rdi
movq %r14, %rsi
callq 0x12d48
leaq -0xa0(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x14d68
leaq -0xd0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
leaq -0xa0(%rbp), %rdx
callq 0x13512
leaq -0x70(%rbp), %rdi
movq %r12, %rsi
callq 0x12d48
leaq -0xe8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
leaq -0x70(%rbp), %rdx
callq 0x1331e
leaq -0x130(%rbp), %rdi
leaq -0xe8(%rbp), %rdx
movq %rbx, %rsi
callq 0x13296
leaq -0x130(%rbp), %rdi
callq 0x12dd8
leaq -0xe8(%rbp), %rdi
callq 0x12dd8
leaq -0x70(%rbp), %rdi
callq 0x12dd8
leaq -0xd0(%rbp), %rdi
callq 0x12dd8
leaq -0xa0(%rbp), %rdi
callq 0x12dd8
leaq -0x88(%rbp), %rdi
callq 0x12dd8
leaq -0xb8(%rbp), %rdi
callq 0x12dd8
leaq -0x100(%rbp), %rdi
callq 0x12dd8
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
callq 0x12dd8
jmp 0x4a68
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x12dd8
jmp 0x4a76
movq %rax, %rbx
leaq -0xd0(%rbp), %rdi
callq 0x12dd8
jmp 0x4a87
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
callq 0x12dd8
jmp 0x4a98
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
callq 0x12dd8
leaq -0xb8(%rbp), %rdi
callq 0x12dd8
leaq -0x100(%rbp), %rdi
callq 0x12dd8
movq %rbx, %rdi
callq 0x3320
movq %rax, %rbx
jmp 0x4aa4
movq %rax, %rbx
jmp 0x4ab0
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
jmp 0x4ab7