// File: /workspace/github_c_makefile_star2_O0/zpole[P]IICV/vl/rodrigues.c
// Function: vl_rodrigues
void
vl_rodrigues(double* R_pt, double* dR_pt, const double* om_pt)
{
  /*
    Let

       th = |om|,  r=w/th,
       sth=sin(th),  cth=cos(th),
       ^om = hat(om)

    Then the rodrigues formula is an expansion of the exponential
    function:

     rodrigues(om) = exp ^om = I + ^r sth + ^r^2 (1 - cth).

    The derivative can be computed by elementary means and
    results:

    d(vec rodrigues(om))    sth  d ^r    1 - cth  d (^r)^2
    -------------------- =  ---- ----- + -------  -------- +
          d om^T             th  d r^T     th      d r^T

                          sth                     1 - cth
          + vec^r (cth - -----) + vec^r^2 (sth - 2-------)r^T
                          th                         th
  */

#define OM(i)   om_pt[(i)]
#define R(i,j)  R_pt[(i)+3*(j)]
#define DR(i,j) dR_pt[(i)+9*(j)]
#undef small

  const double small = 1e-6 ;

  double th = sqrt( OM(0)*OM(0) +
                    OM(1)*OM(1) +
                    OM(2)*OM(2) ) ;

  if( th < small ) {
    R(0,0) = 1.0 ; R(0,1) = 0.0 ; R(0,2) = 0.0 ;
    R(1,0) = 0.0 ; R(1,1) = 1.0 ; R(1,2) = 0.0 ;
    R(2,0) = 0.0 ; R(2,1) = 0.0 ; R(2,2) = 1.0 ;

    if(dR_pt) {
      DR(0,0) = 0  ; DR(0,1) = 0   ; DR(0,2) = 0 ;
      DR(1,0) = 0  ; DR(1,1) = 0   ; DR(1,2) = 1 ;
      DR(2,0) = 0  ; DR(2,1) = -1  ; DR(2,2) = 0 ;

      DR(3,0) = 0  ; DR(3,1) = 0   ; DR(3,2) = -1 ;
      DR(4,0) = 0  ; DR(4,1) = 0   ; DR(4,2) = 0 ;
      DR(5,0) = 1  ; DR(5,1) = 0   ; DR(5,2) = 0 ;

      DR(6,0) = 0  ; DR(6,1) = 1   ; DR(6,2) = 0 ;
      DR(7,0) = -1 ; DR(7,1) = 0   ; DR(7,2) = 0 ;
      DR(8,0) = 0  ; DR(8,1) = 0   ; DR(8,2) = 0 ;
    }
    return ;
  }

  {
    double x = OM(0) / th ;
    double y = OM(1) / th ;
    double z = OM(2) / th ;

    double xx = x*x ;
    double xy = x*y ;
    double xz = x*z ;
    double yy = y*y ;
    double yz = y*z ;
    double zz = z*z ;

    const double yx = xy ;
    const double zx = xz ;
    const double zy = yz ;

    double sth  = sin(th) ;
    double cth  = cos(th) ;
    double mcth = 1.0 - cth ;

    R(0,0) = 1          - mcth * (yy+zz) ;
    R(1,0) =     sth*z  + mcth * xy ;
    R(2,0) =   - sth*y  + mcth * xz ;

    R(0,1) =   - sth*z  + mcth * yx ;
    R(1,1) = 1          - mcth * (zz+xx) ;
    R(2,1) =     sth*x  + mcth * yz ;

    R(0,2) =     sth*y  + mcth * xz ;
    R(1,2) =   - sth*x  + mcth * yz ;
    R(2,2) = 1          - mcth * (xx+yy) ;

    if(dR_pt) {
      double a =  sth / th ;
      double b = mcth / th ;
      double c = cth - a ;
      double d = sth - 2*b ;

      DR(0,0) =                         - d * (yy+zz) * x ;
      DR(1,0) =        b*y   + c * zx   + d * xy      * x ;
      DR(2,0) =        b*z   - c * yx   + d * xz      * x ;

      DR(3,0) =        b*y   - c * zx   + d * xy      * x ;
      DR(4,0) =     -2*b*x              - d * (zz+xx) * x ;
      DR(5,0) =  a           + c * xx   + d * yz      * x ;

      DR(6,0) =        b*z   + c * yx   + d * zx      * x ;
      DR(7,0) = -a           - c * xx   + d * zy      * x ;
      DR(8,0) =     -2*b*x              - d * (yy+xx) * x ;

      DR(0,1) =     -2*b*y              - d * (yy+zz) * y ;
      DR(1,1) =        b*x   + c * zy   + d * xy      * y ;
      DR(2,1) = -a           - c * yy   + d * xz      * y ;

      DR(3,1) =        b*x   - c * zy   + d * xy      * y ;
      DR(4,1) =                         - d * (zz+xx) * y ;
      DR(5,1) =        b*z   + c * xy   + d * yz      * y ;

      DR(6,1) = a            + c * yy   + d * zx      * y ;
      DR(7,1) =        b*z   - c * xy   + d * zy      * y ;
      DR(8,1) =     -2*b*y              - d * (yy+xx) * y ;

      DR(0,2) =     -2*b*z              - d * (yy+zz) * z ;
      DR(1,2) =  a           + c * zz   + d * xy      * z ;
      DR(2,2) =        b*x   - c * yz   + d * xz      * z ;

      DR(3,2) =  -a          - c * zz   + d * xy      * z ;
      DR(4,2) =     -2*b*z              - d * (zz+xx) * z ;
      DR(5,2) =        b*y   + c * xz   + d * yz      * z ;

      DR(6,2) =        b*x   + c * yz   + d * zx      * z ;
      DR(7,2) =        b*y   - c * xz   + d * zy      * z ;
      DR(8,2) =                         - d * (yy+xx) * z ;
    }
  }

#undef OM
#undef R
#undef DR

}

// Assembly:
subq $0xc8, %rsp
movq %rdi, 0xc0(%rsp)
movq %rsi, 0xb8(%rsp)
movq %rdx, 0xb0(%rsp)
movsd 0x10481(%rip), %xmm0    # 0x59248
movsd %xmm0, 0xa8(%rsp)
movq 0xb0(%rsp), %rax
movsd (%rax), %xmm1
movq 0xb0(%rsp), %rax
movsd (%rax), %xmm2
movq 0xb0(%rsp), %rax
movsd 0x8(%rax), %xmm0
movq 0xb0(%rsp), %rax
mulsd 0x8(%rax), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movq 0xb0(%rsp), %rax
movsd 0x10(%rax), %xmm0
movq 0xb0(%rsp), %rax
movsd 0x10(%rax), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x9b20
movsd %xmm0, 0xa0(%rsp)
movsd 0x10406(%rip), %xmm0    # 0x59248
ucomisd 0xa0(%rsp), %xmm0
jbe 0x490f1
movq 0xc0(%rsp), %rax
movsd 0x10277(%rip), %xmm0    # 0x590d8
movsd %xmm0, (%rax)
movq 0xc0(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x18(%rax)
movq 0xc0(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x30(%rax)
movq 0xc0(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x8(%rax)
movq 0xc0(%rsp), %rax
movsd 0x10233(%rip), %xmm0    # 0x590d8
movsd %xmm0, 0x20(%rax)
movq 0xc0(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x38(%rax)
movq 0xc0(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x10(%rax)
movq 0xc0(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x28(%rax)
movq 0xc0(%rsp), %rax
movsd 0x101ee(%rip), %xmm0    # 0x590d8
movsd %xmm0, 0x40(%rax)
cmpq $0x0, 0xb8(%rsp)
je 0x490ec
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x48(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x90(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x8(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x50(%rax)
movq 0xb8(%rsp), %rax
movsd 0x10178(%rip), %xmm0    # 0x590d8
movsd %xmm0, 0x98(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x10(%rax)
movq 0xb8(%rsp), %rax
movsd 0x10110(%rip), %xmm0    # 0x59098
movsd %xmm0, 0x58(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0xa0(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x18(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x60(%rax)
movq 0xb8(%rsp), %rax
movsd 0x100c8(%rip), %xmm0    # 0x59098
movsd %xmm0, 0xa8(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x20(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x68(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0xb0(%rax)
movq 0xb8(%rsp), %rax
movsd 0x100bd(%rip), %xmm0    # 0x590d8
movsd %xmm0, 0x28(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x70(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0xb8(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x30(%rax)
movq 0xb8(%rsp), %rax
movsd 0x10075(%rip), %xmm0    # 0x590d8
movsd %xmm0, 0x78(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0xc0(%rax)
movq 0xb8(%rsp), %rax
movsd 0x1000d(%rip), %xmm0    # 0x59098
movsd %xmm0, 0x38(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x80(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0xc8(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x40(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x88(%rax)
movq 0xb8(%rsp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0xd0(%rax)
jmp 0x49e76
movq 0xb0(%rsp), %rax
movsd (%rax), %xmm0
divsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x98(%rsp)
movq 0xb0(%rsp), %rax
movsd 0x8(%rax), %xmm0
divsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x90(%rsp)
movq 0xb0(%rsp), %rax
movsd 0x10(%rax), %xmm0
divsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x88(%rsp)
movsd 0x98(%rsp), %xmm0
mulsd 0x98(%rsp), %xmm0
movsd %xmm0, 0x80(%rsp)
movsd 0x98(%rsp), %xmm0
mulsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x78(%rsp)
movsd 0x98(%rsp), %xmm0
mulsd 0x88(%rsp), %xmm0
movsd %xmm0, 0x70(%rsp)
movsd 0x90(%rsp), %xmm0
mulsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x68(%rsp)
movsd 0x90(%rsp), %xmm0
mulsd 0x88(%rsp), %xmm0
movsd %xmm0, 0x60(%rsp)
movsd 0x88(%rsp), %xmm0
mulsd 0x88(%rsp), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x78(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
movsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
movsd 0xa0(%rsp), %xmm0
callq 0x99e0
movsd %xmm0, 0x38(%rsp)
movsd 0xa0(%rsp), %xmm0
callq 0x94e0
movsd %xmm0, 0x30(%rsp)
movsd 0xfea4(%rip), %xmm0     # 0x590d8
subsd 0x30(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
movsd 0x28(%rsp), %xmm0
movsd 0x68(%rsp), %xmm1
addsd 0x58(%rsp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm1, %xmm0
movsd 0xfe63(%rip), %xmm1     # 0x590d8
addsd %xmm1, %xmm0
movq 0xc0(%rsp), %rax
movsd %xmm0, (%rax)
movsd 0x38(%rsp), %xmm0
movsd 0x88(%rsp), %xmm2
movsd 0x28(%rsp), %xmm1
mulsd 0x78(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xc0(%rsp), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x38(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x90(%rsp), %xmm2
movsd 0x28(%rsp), %xmm1
mulsd 0x70(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xc0(%rsp), %rax
movsd %xmm0, 0x10(%rax)
movsd 0x38(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x88(%rsp), %xmm2
movsd 0x28(%rsp), %xmm1
mulsd 0x50(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xc0(%rsp), %rax
movsd %xmm0, 0x18(%rax)
movsd 0x28(%rsp), %xmm0
movsd 0x58(%rsp), %xmm1
addsd 0x80(%rsp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm1, %xmm0
movsd 0xfd5d(%rip), %xmm1     # 0x590d8
addsd %xmm1, %xmm0
movq 0xc0(%rsp), %rax
movsd %xmm0, 0x20(%rax)
movsd 0x38(%rsp), %xmm0
movsd 0x98(%rsp), %xmm2
movsd 0x28(%rsp), %xmm1
mulsd 0x60(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xc0(%rsp), %rax
movsd %xmm0, 0x28(%rax)
movsd 0x38(%rsp), %xmm0
movsd 0x90(%rsp), %xmm2
movsd 0x28(%rsp), %xmm1
mulsd 0x70(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xc0(%rsp), %rax
movsd %xmm0, 0x30(%rax)
movsd 0x38(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x98(%rsp), %xmm2
movsd 0x28(%rsp), %xmm1
mulsd 0x60(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xc0(%rsp), %rax
movsd %xmm0, 0x38(%rax)
movsd 0x28(%rsp), %xmm0
movsd 0x80(%rsp), %xmm1
addsd 0x68(%rsp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm1, %xmm0
movsd 0xfc6d(%rip), %xmm1     # 0x590d8
addsd %xmm1, %xmm0
movq 0xc0(%rsp), %rax
movsd %xmm0, 0x40(%rax)
cmpq $0x0, 0xb8(%rsp)
je 0x49e76
movsd 0x38(%rsp), %xmm0
divsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movsd 0x28(%rsp), %xmm0
divsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x30(%rsp), %xmm0
subsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x38(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
addsd %xmm1, %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x8(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x68(%rsp), %xmm1
addsd 0x58(%rsp), %xmm1
mulsd %xmm1, %xmm0
mulsd 0x98(%rsp), %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, (%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x90(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x48(%rsp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x78(%rsp), %xmm0
movsd 0x98(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x88(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x50(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x70(%rsp), %xmm0
movsd 0x98(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x10(%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x90(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x48(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x78(%rsp), %xmm0
movsd 0x98(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x18(%rax)
movsd 0x10ae8(%rip), %xmm0    # 0x5a128
mulsd 0x18(%rsp), %xmm0
movsd 0x98(%rsp), %xmm2
movsd 0x8(%rsp), %xmm1
movsd 0x58(%rsp), %xmm3
addsd 0x80(%rsp), %xmm3
mulsd %xmm3, %xmm1
mulsd 0x98(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x20(%rax)
movsd 0x20(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x80(%rsp), %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x60(%rsp), %xmm0
movsd 0x98(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x28(%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x88(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x50(%rsp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x48(%rsp), %xmm0
movsd 0x98(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x30(%rax)
movsd 0x20(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x80(%rsp), %xmm2
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x40(%rsp), %xmm0
movsd 0x98(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x38(%rax)
movsd 0x1097a(%rip), %xmm0    # 0x5a128
mulsd 0x18(%rsp), %xmm0
movsd 0x98(%rsp), %xmm2
movsd 0x8(%rsp), %xmm1
movsd 0x68(%rsp), %xmm3
addsd 0x80(%rsp), %xmm3
mulsd %xmm3, %xmm1
mulsd 0x98(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x40(%rax)
movsd 0x10915(%rip), %xmm0    # 0x5a128
mulsd 0x18(%rsp), %xmm0
movsd 0x90(%rsp), %xmm2
movsd 0x8(%rsp), %xmm1
movsd 0x68(%rsp), %xmm3
addsd 0x58(%rsp), %xmm3
mulsd %xmm3, %xmm1
mulsd 0x90(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x48(%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x98(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x40(%rsp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x78(%rsp), %xmm0
movsd 0x90(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x50(%rax)
movsd 0x20(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x68(%rsp), %xmm2
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x70(%rsp), %xmm0
movsd 0x90(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x58(%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x98(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x40(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x78(%rsp), %xmm0
movsd 0x90(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x60(%rax)
movsd 0x8(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x58(%rsp), %xmm1
addsd 0x80(%rsp), %xmm1
mulsd %xmm1, %xmm0
mulsd 0x90(%rsp), %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x68(%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x88(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x78(%rsp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x60(%rsp), %xmm0
movsd 0x90(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x70(%rax)
movsd 0x20(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x68(%rsp), %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x48(%rsp), %xmm0
movsd 0x90(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x78(%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x88(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x78(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x40(%rsp), %xmm0
movsd 0x90(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x80(%rax)
movsd 0x10652(%rip), %xmm0    # 0x5a128
mulsd 0x18(%rsp), %xmm0
movsd 0x90(%rsp), %xmm2
movsd 0x8(%rsp), %xmm1
movsd 0x68(%rsp), %xmm3
addsd 0x80(%rsp), %xmm3
mulsd %xmm3, %xmm1
mulsd 0x90(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x88(%rax)
movsd 0x105ea(%rip), %xmm0    # 0x5a128
mulsd 0x18(%rsp), %xmm0
movsd 0x88(%rsp), %xmm2
movsd 0x8(%rsp), %xmm1
movsd 0x68(%rsp), %xmm3
addsd 0x58(%rsp), %xmm3
mulsd %xmm3, %xmm1
mulsd 0x88(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x90(%rax)
movsd 0x20(%rsp), %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x58(%rsp), %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x78(%rsp), %xmm0
movsd 0x88(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0x98(%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x98(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x60(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x70(%rsp), %xmm0
movsd 0x88(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0xa0(%rax)
movsd 0x20(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x10(%rsp), %xmm1
movsd 0x58(%rsp), %xmm2
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x78(%rsp), %xmm0
movsd 0x88(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0xa8(%rax)
movsd 0x10462(%rip), %xmm0    # 0x5a128
mulsd 0x18(%rsp), %xmm0
movsd 0x88(%rsp), %xmm2
movsd 0x8(%rsp), %xmm1
movsd 0x58(%rsp), %xmm3
addsd 0x80(%rsp), %xmm3
mulsd %xmm3, %xmm1
mulsd 0x88(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0xb0(%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x90(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x70(%rsp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x60(%rsp), %xmm0
movsd 0x88(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0xb8(%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x98(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x60(%rsp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x48(%rsp), %xmm0
movsd 0x88(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0xc0(%rax)
movsd 0x18(%rsp), %xmm1
movsd 0x90(%rsp), %xmm2
movsd 0x10(%rsp), %xmm0
mulsd 0x70(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
mulsd 0x40(%rsp), %xmm0
movsd 0x88(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0xc8(%rax)
movsd 0x8(%rsp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x68(%rsp), %xmm1
addsd 0x80(%rsp), %xmm1
mulsd %xmm1, %xmm0
mulsd 0x88(%rsp), %xmm0
movq 0xb8(%rsp), %rax
movsd %xmm0, 0xd0(%rax)
addq $0xc8, %rsp
retq
nop