// File: /workspace/github_cpp_makefile_star2_O1/DavidLBruce[P]sim3dof/build/../src/MslTse6.cpp
// Function: MslTse6::FrameUpdate()
void MslTse6::FrameUpdate()
{
  double cth;
  double sth;

  simTime = GetSimTime();

  //
  // Get true states
  //
  tgtPxf = pTgt->pxf;
  tgtPyf = pTgt->pyf;

  tgtVxf = pTgt->vxf;
  tgtVyf = pTgt->vyf;

  tgtAxf = pTgt->axf;
  tgtAyf = pTgt->ayf;

  tgtJxf = pTgt->jxf;
  tgtJyf = pTgt->jyf;

  mslPxf = pMsl->pxf;
  mslPyf = pMsl->pyf;

  mslVxf = pMsl->vxf;
  mslVyf = pMsl->vyf;

  mslAxf = pMsl->axf;
  mslAyf = pMsl->ayf;

  omega = pTgt->omega;

  truRelPxf = tgtPxf - mslPxf;
  truRelPyf = tgtPyf - mslPyf;

  truRelVxf = tgtVxf - mslVxf;
  truRelVyf = tgtVyf - mslVyf;

  truRelAxf = tgtAxf - mslAxf;
  truRelAyf = tgtAyf - mslAyf;

  truRng2 = truRelPxf*truRelPxf + truRelPyf*truRelPyf;

  truRng = sqrt( truRng2 );

  truLosAng = atan2( truRelPyf, truRelPxf );

  truLosr = ( truRelPxf * truRelVyf - truRelPyf * truRelVxf ) / truRng2;

  truRdot = ( truRelVxf * truRelPxf + truRelVyf * truRelPyf ) / truRng;

  cth = cos( truLosAng );
  sth = sin( truLosAng );

  truAccLosX = truRelAxf * cth - truRelAyf * sth;
  truAccLosY = truRelAxf * sth + truRelAyf * cth;

  truState(0) = truLosAng;

  truState(1) = truLosr;

  truState(2) = 1.0 / truRng;

  truState(3) = truRdot * truState(2);

  truState(4) = truAccLosX  * truState(2);

  truState(5) = truAccLosY  * truState(2);

  if ( simTime >= nextUpLinkTime - SMALL )
  {
    //
    // Get the datalink message.
    //
    nextUpLinkTime = simTime + datalinkStep;

    dlTimeStamp = pTse6->timeStamp;
    priorDlTime = dlTimeStamp;

    rdrPxf = pRdr->pxf;
    rdrPyf = pRdr->pyf;
    rdrVxf = pRdr->vxf;
    rdrVyf = pRdr->vyf;
        
    if ( !pTgt->weaveInit )
    {
      //
      // Target is not weaving.  The Fire control TSE6 estimates are good.
      //
      dlAccX = pTse6->estAccX;
      dlAccY = pTse6->estAccY;
      dlLosAng = pTse6->estLosAng;
      dlLosr = pTse6->estLosr;
      dlRng = pTse6->estRng;
      dlRdot = pTse6->estRdot;

      cth = cos( dlLosAng );
      sth = sin( dlLosAng );
      
      dlTgtPxf = rdrPxf + dlRng * cth;
      dlTgtPyf = rdrPyf + dlRng * sth;
      
      dlTgtVxf = rdrVxf + dlRdot * cth - dlRng * dlLosr * sth;
      
      dlTgtVyf = rdrVyf + dlRdot * sth + dlRng * dlLosr * cth;
      
      dlTgtAxf = dlAccX;
      dlTgtAyf = dlAccY;

      dlState(0) = dlTgtPxf;
      dlState(1) = dlTgtPyf;

      dlState(2) = dlTgtVxf;
      dlState(3) = dlTgtVyf;

      dlState(4) = dlTgtAxf;
      dlState(5) = dlTgtAyf;

    }  // end if ( !pTgt->weaveInit )
    else
    {
      dlOmega = pTseO->estOmega;

      dlOmega2 = pTseO->estOmega2;

      dlRng = pTse6->estRng;
      dlRdot = pTse6->estRdot;

      //
      // Small angle approximation
      //
      dlLosAng = pTseO->estPosY / dlRng;

      sth = sin( dlLosAng );
  
      cth = cos( dlLosAng );
      
      dlTgtPxf = rdrPxf + dlRng * cth;
      dlTgtPyf = rdrPyf + dlRng * sth;

      dlPosYdot = pTseO->estPosYdot;

      dlLosr = dlPosYdot / dlRng;
      
      dlTgtVxf = rdrVxf + dlRdot * cth - dlRng * dlLosr * sth;
      
      dlTgtVyf = rdrVyf + dlRdot * sth + dlRng * dlLosr * cth;

      dlTgtAxf = pTse6->cartRel(4);
      dlTgtAyf = -dlTgtPyf * dlOmega2;

      dlTgtJxf = 0.0;

      dlTgtJyf = dlTgtPyf * dlOmega2 * dlOmega;

    }  // end if ( !pTgt->weaveInit )
  }  // end if ( simTime >= nextUpLinkTime - SMALL )

//  if ( pSkr->timeStamp > dlTimeStamp )
  if ( pSkr->timeStamp != dlTimeStamp )
  {
    //
    // Propagate the datalink states up to the seeker time stamp
    //
    dlState(0) = dlTgtPxf;
    dlState(1) = dlTgtPyf;
                             
    dlState(2) = dlTgtVxf;
    dlState(3) = dlTgtVyf;
                             
    dlState(4) = dlTgtAxf;
    dlState(5) = dlTgtAyf;

    IntegrateRK2( dlState, pSkr->timeStamp - priorDlTime );
    priorDlTime = pSkr->timeStamp;

    dlTgtPxf = dlState(0);
    dlTgtPyf = dlState(1);

    dlTgtVxf = dlState(2);
    dlTgtVyf = dlState(3);

    dlTgtAxf = dlState(4);
    dlTgtAyf = dlState(5);

  }  // end if ( simTime >= nextUpLinkTime - SMALL ) else

  measRelPxf = dlTgtPxf - mslPxf;
  measRelPyf = dlTgtPyf - mslPyf;

  measRelVxf = dlTgtVxf - mslVxf;
  measRelVyf = dlTgtVyf - mslVyf;

  measRng2 = measRelPxf*measRelPxf + measRelPyf*measRelPyf;

  measRng = sqrt( measRng2 );

  measRdot = ( measRelVxf * measRelPxf + measRelVyf * measRelPyf ) / measRng;

  //
  // Get the Seeker measurements
  //
  measAng = pSkr->measAng;
  angSig = pSkr->rinAng; 

  //
  // Use the datalink range and range rate as pseudo radar measurements,
  // but use the more accurate seeker angle measurement. Use the Radar
  // range and range rate measurement noise instead of the TSE covariance
  // to compensate for the fact that the TSE output is corelated.
  //
  dlRngSig = pRdr->rinRng;
  dlRdotSig = pRdr->rinRdot;

  rngSig = dlRngSig;

  rDotSig = dlRdotSig;

  measVec(0) = measAng;
  measVec(1) = 1.0 / measRng;
  measVec(2) = measRdot / measRng;

  PropStates( pSkr->timeStamp - timeStamp );

  timeStamp = pSkr->timeStamp;

  UpdateStates();

  estLosAng = mscState(0);
  estLosr = mscState(1);
  estRng = 1.0 / mscState(2);
  estRdot = mscState(3) * estRng;
  estAccX = mscState(4) * estRng;
  estAccY = mscState(5) * estRng;

  estTgtPxf = mslPxf + cartRel(0);
  estTgtPyf = mslPyf + cartRel(1);

  estTgtVxf = mslVxf + cartRel(2);
  estTgtVyf = mslVyf + cartRel(3);

  estTgtAxf = mslAxf + cartRel(4);
  estTgtAyf = mslAyf + cartRel(5);

  estTgtJxf = 0.0;
  estTgtJyf = estTgtPyf * dlOmega2*dlOmega;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movq 0x38(%rdi), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x4d0(%rdi)
movq 0x530(%rdi), %rax
movsd 0x160(%rax), %xmm0
movsd %xmm0, 0x250(%rdi)
movsd 0x168(%rax), %xmm1
movsd %xmm1, 0x258(%rdi)
movsd 0x180(%rax), %xmm5
movsd %xmm5, 0x260(%rdi)
movsd 0x190(%rax), %xmm4
movsd %xmm4, 0x268(%rdi)
movsd 0x130(%rax), %xmm3
movsd %xmm3, 0x230(%rdi)
movsd 0x140(%rax), %xmm2
movsd %xmm2, 0x238(%rdi)
movsd 0x148(%rax), %xmm6
movsd %xmm6, 0x240(%rdi)
movsd 0x150(%rax), %xmm6
movsd %xmm6, 0x248(%rdi)
movq 0x518(%rdi), %rcx
movsd 0x130(%rcx), %xmm6
movsd %xmm6, 0x410(%rdi)
movsd 0x138(%rcx), %xmm7
movsd %xmm7, 0x418(%rdi)
movsd 0x150(%rcx), %xmm8
movsd %xmm8, 0x420(%rdi)
movsd 0x160(%rcx), %xmm9
movsd %xmm9, 0x428(%rdi)
movsd 0x118(%rcx), %xmm10
movsd %xmm10, 0x400(%rdi)
movsd 0x128(%rcx), %xmm11
movsd %xmm11, 0x408(%rdi)
movsd 0x158(%rax), %xmm12
movsd %xmm12, 0x430(%rdi)
subsd %xmm6, %xmm0
movsd %xmm0, 0x4d8(%rdi)
subsd %xmm7, %xmm1
movsd %xmm1, 0x4e0(%rdi)
subsd %xmm8, %xmm5
movsd %xmm5, 0x4e8(%rdi)
subsd %xmm9, %xmm4
movsd %xmm4, 0x4f0(%rdi)
subsd %xmm10, %xmm3
movsd %xmm3, 0x4f8(%rdi)
subsd %xmm11, %xmm2
movsd %xmm2, 0x500(%rdi)
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x508(%rdi)
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xbe8c
sqrtsd %xmm0, %xmm0
jmp 0xbe91
callq 0x3120
movsd %xmm0, 0x1e0(%rbx)
movsd 0x4d8(%rbx), %xmm1
movsd 0x4e0(%rbx), %xmm0
callq 0x3060
movsd %xmm0, 0x1d0(%rbx)
movsd 0x4f0(%rbx), %xmm1
movsd 0x4d8(%rbx), %xmm2
movsd 0x4e0(%rbx), %xmm3
movsd 0x4e8(%rbx), %xmm4
movapd %xmm4, %xmm5
mulsd %xmm3, %xmm5
mulsd %xmm2, %xmm4
mulsd %xmm1, %xmm2
subsd %xmm5, %xmm2
divsd 0x508(%rbx), %xmm2
movsd %xmm2, 0x1d8(%rbx)
mulsd %xmm3, %xmm1
addsd %xmm4, %xmm1
divsd 0x1e0(%rbx), %xmm1
movsd %xmm1, 0x1e8(%rbx)
callq 0x3310
movsd %xmm0, -0x18(%rbp)
movsd 0x1d0(%rbx), %xmm0
callq 0x3080
movsd 0x4f8(%rbx), %xmm1
movsd 0x500(%rbx), %xmm2
movapd %xmm1, %xmm3
mulsd %xmm0, %xmm1
mulsd %xmm2, %xmm0
movsd -0x18(%rbp), %xmm4
mulsd %xmm4, %xmm3
subsd %xmm0, %xmm3
movsd %xmm3, 0x1c0(%rbx)
mulsd %xmm2, %xmm4
addsd %xmm4, %xmm1
movsd %xmm1, 0x1c8(%rbx)
movsd 0x1d0(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
leaq 0x1f0(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x1d8(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x1, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0xa07c(%rip), %xmm0     # 0x16038
divsd 0x1e0(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x2, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x1e8(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x2, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
mulsd (%rax), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x3, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x1c0(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x2, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
mulsd (%rax), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x4, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x1c8(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x2, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
mulsd (%rax), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x5, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x4d0(%rbx), %xmm0
movsd 0x108(%rbx), %xmm1
addsd 0xa61f(%rip), %xmm1     # 0x166d0
ucomisd %xmm1, %xmm0
jb 0xc4b5
addsd 0x100(%rbx), %xmm0
movsd %xmm0, 0x108(%rbx)
movq 0x538(%rbx), %rax
movsd 0x158(%rax), %xmm0
movsd %xmm0, 0x308(%rbx)
movsd %xmm0, 0x468(%rbx)
movq 0x520(%rbx), %rcx
movq 0x530(%rbx), %rdx
movsd 0x140(%rcx), %xmm0
movsd %xmm0, 0x478(%rbx)
movsd 0x148(%rcx), %xmm0
movsd %xmm0, 0x480(%rbx)
movsd 0x170(%rcx), %xmm0
movsd %xmm0, 0x488(%rbx)
movsd 0x178(%rcx), %xmm0
movsd %xmm0, 0x490(%rbx)
cmpb $0x0, 0x198(%rdx)
je 0xc2d1
movq 0x540(%rbx), %rcx
movsd 0x148(%rcx), %xmm0
movsd %xmm0, 0x208(%rbx)
movsd 0x150(%rcx), %xmm0
movsd %xmm0, 0x210(%rbx)
movsd 0x148(%rax), %xmm1
movsd %xmm1, 0x2a8(%rbx)
movsd 0x150(%rax), %xmm0
movsd %xmm0, 0x298(%rbx)
movsd 0x138(%rcx), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, 0x288(%rbx)
callq 0x3080
movsd %xmm0, -0x18(%rbp)
movsd 0x288(%rbx), %xmm0
callq 0x3310
movsd 0x298(%rbx), %xmm1
movsd 0x2a8(%rbx), %xmm2
movapd %xmm2, %xmm3
mulsd %xmm0, %xmm3
addsd 0x478(%rbx), %xmm3
movsd %xmm3, 0x2e8(%rbx)
movapd %xmm2, %xmm3
movsd -0x18(%rbp), %xmm5
mulsd %xmm5, %xmm3
addsd 0x480(%rbx), %xmm3
movsd %xmm3, 0x2f0(%rbx)
movq 0x540(%rbx), %rax
movsd 0x140(%rax), %xmm3
movsd %xmm3, 0x218(%rbx)
divsd %xmm2, %xmm3
movsd %xmm3, 0x290(%rbx)
movapd %xmm1, %xmm4
mulsd %xmm0, %xmm4
addsd 0x488(%rbx), %xmm4
mulsd %xmm2, %xmm3
movapd %xmm3, %xmm2
mulsd %xmm5, %xmm2
subsd %xmm2, %xmm4
movsd %xmm4, 0x2f8(%rbx)
mulsd %xmm5, %xmm1
addsd 0x490(%rbx), %xmm1
mulsd %xmm0, %xmm3
addsd %xmm1, %xmm3
movsd %xmm3, 0x300(%rbx)
movl $0x110, %edi            # imm = 0x110
addq 0x538(%rbx), %rdi
movl $0x4, %esi
callq 0x13aba
movsd (%rax), %xmm0
movsd %xmm0, 0x2d8(%rbx)
movsd 0x210(%rbx), %xmm0
movsd 0x2f0(%rbx), %xmm1
movapd 0x9d73(%rip), %xmm2     # 0x16010
xorpd %xmm1, %xmm2
mulsd %xmm0, %xmm2
movsd %xmm2, 0x2e0(%rbx)
movq $0x0, 0x220(%rbx)
mulsd %xmm0, %xmm1
mulsd 0x208(%rbx), %xmm1
movsd %xmm1, 0x228(%rbx)
jmp 0xc4b5
movsd 0x128(%rax), %xmm0
movsd %xmm0, 0x278(%rbx)
movsd 0x130(%rax), %xmm0
movsd %xmm0, 0x280(%rbx)
movsd 0x138(%rax), %xmm0
movsd %xmm0, 0x288(%rbx)
movsd 0x140(%rax), %xmm1
movsd %xmm1, 0x290(%rbx)
movsd 0x148(%rax), %xmm1
movsd %xmm1, 0x2a8(%rbx)
movsd 0x150(%rax), %xmm1
movsd %xmm1, 0x298(%rbx)
callq 0x3310
movsd %xmm0, -0x20(%rbp)
movsd 0x288(%rbx), %xmm0
callq 0x3080
movsd 0x2a8(%rbx), %xmm1
movapd %xmm1, %xmm2
movsd -0x20(%rbp), %xmm4
mulsd %xmm4, %xmm2
addsd 0x478(%rbx), %xmm2
movsd %xmm2, -0x18(%rbp)
movsd %xmm2, 0x2e8(%rbx)
movapd %xmm1, %xmm2
mulsd %xmm0, %xmm2
addsd 0x480(%rbx), %xmm2
movsd %xmm2, 0x2f0(%rbx)
movsd 0x298(%rbx), %xmm2
movapd %xmm2, %xmm3
mulsd %xmm4, %xmm3
movapd %xmm4, %xmm5
addsd 0x488(%rbx), %xmm3
mulsd 0x290(%rbx), %xmm1
movapd %xmm1, %xmm4
mulsd %xmm0, %xmm4
subsd %xmm4, %xmm3
movsd %xmm3, 0x2f8(%rbx)
mulsd %xmm0, %xmm2
addsd 0x490(%rbx), %xmm2
mulsd %xmm5, %xmm1
addsd %xmm2, %xmm1
movsd %xmm1, 0x300(%rbx)
movups 0x278(%rbx), %xmm0
movups %xmm0, 0x2d8(%rbx)
leaq 0x2c0(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x2f0(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x1, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x2f8(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x2, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x300(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x3, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x2d8(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x4, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x2e0(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x5, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movq 0x528(%rbx), %rax
movsd 0x128(%rax), %xmm0
ucomisd 0x308(%rbx), %xmm0
jne 0xc4d4
jnp 0xc676
movsd 0x2e8(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
leaq 0x2c0(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x2f0(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x1, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x2f8(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x2, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x300(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x3, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x2d8(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x4, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x2e0(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x5, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movq 0x528(%rbx), %rax
movsd 0x128(%rax), %xmm0
subsd 0x468(%rbx), %xmm0
movq %rbx, %rdi
movq %r14, %rsi
callq 0xca3c
movq 0x528(%rbx), %rax
movsd 0x128(%rax), %xmm0
movsd %xmm0, 0x468(%rbx)
movq %r14, %rdi
xorl %esi, %esi
callq 0x13aba
movsd (%rax), %xmm0
movsd %xmm0, 0x2e8(%rbx)
movq %r14, %rdi
movl $0x1, %esi
callq 0x13aba
movsd (%rax), %xmm0
movsd %xmm0, 0x2f0(%rbx)
movq %r14, %rdi
movl $0x2, %esi
callq 0x13aba
movsd (%rax), %xmm0
movsd %xmm0, 0x2f8(%rbx)
movq %r14, %rdi
movl $0x3, %esi
callq 0x13aba
movsd (%rax), %xmm0
movsd %xmm0, 0x300(%rbx)
movq %r14, %rdi
movl $0x4, %esi
callq 0x13aba
movsd (%rax), %xmm0
movsd %xmm0, 0x2d8(%rbx)
movq %r14, %rdi
movl $0x5, %esi
callq 0x13aba
movsd (%rax), %xmm0
movsd %xmm0, 0x2e0(%rbx)
movsd 0x2e8(%rbx), %xmm0
subsd 0x410(%rbx), %xmm0
movsd 0x2f0(%rbx), %xmm1
movsd %xmm0, 0x3a0(%rbx)
subsd 0x418(%rbx), %xmm1
movsd %xmm1, 0x3a8(%rbx)
movsd 0x2f8(%rbx), %xmm2
subsd 0x420(%rbx), %xmm2
movsd %xmm2, 0x3b0(%rbx)
movsd 0x300(%rbx), %xmm2
subsd 0x428(%rbx), %xmm2
movsd %xmm2, 0x3b8(%rbx)
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x3c8(%rbx)
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0xc6fa
sqrtsd %xmm0, %xmm0
jmp 0xc6ff
callq 0x3120
movsd %xmm0, 0x3c0(%rbx)
movsd 0x3b0(%rbx), %xmm1
movsd 0x3b8(%rbx), %xmm2
mulsd 0x3a8(%rbx), %xmm2
mulsd 0x3a0(%rbx), %xmm1
addsd %xmm2, %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, 0x398(%rbx)
movq 0x528(%rbx), %rax
movsd 0x118(%rax), %xmm0
movsd %xmm0, -0x18(%rbp)
movsd %xmm0, 0x390(%rbx)
movsd 0x110(%rax), %xmm0
movsd %xmm0, 0x270(%rbx)
movq 0x520(%rbx), %rax
movsd 0x120(%rax), %xmm0
movsd %xmm0, 0x2b8(%rbx)
movsd 0x118(%rax), %xmm1
movsd %xmm1, 0x2a0(%rbx)
movsd %xmm0, 0x4b0(%rbx)
movsd %xmm1, 0x470(%rbx)
leaq 0x3d0(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x987c(%rip), %xmm0     # 0x16038
divsd 0x3c0(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x1, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x398(%rbx), %xmm0
divsd 0x3c0(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x2, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
movsd %xmm0, (%rax)
movq 0x528(%rbx), %rax
movsd 0x128(%rax), %xmm0
subsd 0x1a8(%rbx), %xmm0
movq %rbx, %rdi
callq 0xcda4
movq 0x528(%rbx), %rax
movsd 0x128(%rax), %xmm0
movsd %xmm0, 0x1a8(%rbx)
movq %rbx, %rdi
callq 0xd5d4
leaq 0x3e8(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x13aba
movsd (%rax), %xmm0
movsd %xmm0, 0x148(%rbx)
movq %r14, %rdi
movl $0x1, %esi
callq 0x13aba
movsd (%rax), %xmm0
movsd %xmm0, 0x150(%rbx)
movq %r14, %rdi
movl $0x2, %esi
callq 0x13aba
movsd 0x97a5(%rip), %xmm0     # 0x16038
divsd (%rax), %xmm0
movsd %xmm0, 0x158(%rbx)
movq %r14, %rdi
movl $0x3, %esi
callq 0x13aba
movsd (%rax), %xmm0
mulsd 0x158(%rbx), %xmm0
movsd %xmm0, 0x160(%rbx)
movq %r14, %rdi
movl $0x4, %esi
callq 0x13aba
movsd (%rax), %xmm0
mulsd 0x158(%rbx), %xmm0
movsd %xmm0, 0x138(%rbx)
movq %r14, %rdi
movl $0x5, %esi
callq 0x13aba
movsd (%rax), %xmm0
mulsd 0x158(%rbx), %xmm0
movsd %xmm0, 0x140(%rbx)
movsd 0x410(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
leaq 0x120(%rbx), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x168(%rbx)
movsd 0x418(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x1, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x170(%rbx)
movsd 0x420(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x2, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x178(%rbx)
movsd 0x428(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x3, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x180(%rbx)
movsd 0x400(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x4, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x188(%rbx)
movsd 0x408(%rbx), %xmm0
movsd %xmm0, -0x18(%rbp)
movq %r14, %rdi
movl $0x5, %esi
callq 0x13aba
movsd -0x18(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, 0x190(%rbx)
movq $0x0, 0x198(%rbx)
movsd 0x170(%rbx), %xmm0
mulsd 0x210(%rbx), %xmm0
mulsd 0x208(%rbx), %xmm0
movsd %xmm0, 0x1a0(%rbx)
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq