// File: /workspace/github_cpp_makefile_star2_O3/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
xorl %r13d, %r13d
movq %r15, %rdi
xorl %esi, %esi
callq 0x13918
movsd (%rax), %xmm0
movsd %xmm0, -0x30(%rbp)
movq %r15, %rdi
xorl %esi, %esi
callq 0x13918
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 0x139a6
movabsq $0x3ff0000000000000, %r12 # imm = 0x3FF0000000000000
movq %r12, (%rax)
movq %r14, %rdi
xorl %esi, %esi
callq 0x139a6
movsd -0x38(%rbp), %xmm0
movsd %xmm0, 0x8(%rax)
movq %r14, %rdi
xorl %esi, %esi
callq 0x139a6
movq %r13, 0x10(%rax)
movq %r15, %rdi
movl $0x2, %esi
callq 0x13918
movsd (%rax), %xmm0
xorpd 0x11887(%rip), %xmm0    # 0x16010
mulsd -0x38(%rbp), %xmm0
movapd %xmm0, -0x50(%rbp)
movq %r14, %rdi
movl $0x1, %esi
callq 0x139a6
movaps -0x50(%rbp), %xmm0
movsd %xmm0, (%rax)
movq %r14, %rdi
movl $0x1, %esi
callq 0x139a6
movq %r12, 0x8(%rax)
movq %r15, %rdi
xorl %esi, %esi
callq 0x13918
movsd (%rax), %xmm0
xorpd 0x11841(%rip), %xmm0    # 0x16010
mulsd -0x38(%rbp), %xmm0
movapd %xmm0, -0x50(%rbp)
movq %r14, %rdi
movl $0x1, %esi
callq 0x139a6
movaps -0x50(%rbp), %xmm0
movsd %xmm0, 0x10(%rax)
movq %r14, %rdi
movl $0x2, %esi
callq 0x139a6
movq %r13, (%rax)
movq %r14, %rdi
movl $0x2, %esi
callq 0x139a6
movq %r13, 0x8(%rax)
movq %r14, %rdi
movl $0x2, %esi
callq 0x139a6
movq %r12, 0x10(%rax)
leaq 0x228(%rbx), %r12
movq %r12, %rdi
xorl %esi, %esi
callq 0x139a6
movq %r13, (%rax)
movq %r12, %rdi
xorl %esi, %esi
callq 0x139a6
movq %r13, 0x8(%rax)
movq %r12, %rdi
xorl %esi, %esi
callq 0x139a6
movq %r13, 0x10(%rax)
movq %r12, %rdi
movl $0x1, %esi
callq 0x139a6
movq %r13, (%rax)
movsd -0x30(%rbp), %xmm0
mulsd 0x130(%rbx), %xmm0
divsd 0x117aa(%rip), %xmm0    # 0x16020
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
movl $0x1, %esi
callq 0x139a6
movsd -0x30(%rbp), %xmm0
movsd %xmm0, 0x8(%rax)
movq %r15, %rdi
xorl %esi, %esi
callq 0x13918
movsd (%rax), %xmm0
mulsd 0x118b8(%rip), %xmm0    # 0x16160
mulsd -0x58(%rbp), %xmm0
mulsd 0x130(%rbx), %xmm0
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
movl $0x1, %esi
callq 0x139a6
movsd -0x30(%rbp), %xmm0
movsd %xmm0, 0x10(%rax)
movq %r12, %rdi
movl $0x2, %esi
callq 0x139a6
movq %r13, (%rax)
movq %r15, %rdi
xorl %esi, %esi
callq 0x13918
movsd 0x1186d(%rip), %xmm0    # 0x16160
mulsd (%rax), %xmm0
mulsd -0x58(%rbp), %xmm0
mulsd 0x130(%rbx), %xmm0
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
movl $0x2, %esi
callq 0x139a6
movsd -0x30(%rbp), %xmm0
movsd %xmm0, 0x8(%rax)
movsd 0x130(%rbx), %xmm0
mulsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
movl $0x2, %esi
callq 0x139a6
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 0x556e
leaq -0x148(%rbp), %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x139f0
leaq -0x148(%rbp), %rdi
callq 0x134aa
leaq -0x118(%rbp), %rdi
callq 0x134aa
addq $0x1f8, %rbx            # imm = 0x1F8
leaq -0x100(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x133e2
leaq -0xb8(%rbp), %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x13cb4
leaq -0x88(%rbp), %rdi
movq %r14, %rsi
callq 0x133e2
leaq -0xa0(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x157c0
leaq -0xd0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
leaq -0xa0(%rbp), %rdx
callq 0x13cb4
leaq -0x70(%rbp), %rdi
movq %r12, %rsi
callq 0x133e2
leaq -0xe8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
leaq -0x70(%rbp), %rdx
callq 0x13a9a
leaq -0x130(%rbp), %rdi
leaq -0xe8(%rbp), %rdx
movq %rbx, %rsi
callq 0x139f0
leaq -0x130(%rbp), %rdi
callq 0x134aa
leaq -0xe8(%rbp), %rdi
callq 0x134aa
leaq -0x70(%rbp), %rdi
callq 0x134aa
leaq -0xd0(%rbp), %rdi
callq 0x134aa
leaq -0xa0(%rbp), %rdi
callq 0x134aa
leaq -0x88(%rbp), %rdi
callq 0x134aa
leaq -0xb8(%rbp), %rdi
callq 0x134aa
leaq -0x100(%rbp), %rdi
callq 0x134aa
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 0x134aa
jmp 0x4ab0
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x134aa
jmp 0x4abe
movq %rax, %rbx
leaq -0xd0(%rbp), %rdi
callq 0x134aa
jmp 0x4acf
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
callq 0x134aa
jmp 0x4ae0
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
callq 0x134aa
leaq -0xb8(%rbp), %rdi
callq 0x134aa
leaq -0x100(%rbp), %rdi
callq 0x134aa
movq %rbx, %rdi
callq 0x32d0
movq %rax, %rbx
jmp 0x4aec
movq %rax, %rbx
jmp 0x4af8
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
jmp 0x4aff