// File: /workspace/github_c_makefile_star2_O0/markpeerdeman[P]mbemm/src/emath/fsol3d.c
// Function: makeUFandTF
void makeUFandTF( matrix u, matrix t,
		  double s1, double s2, double s3,
		  double c1, double c2, double c3,
		  double n1, double n2, double n3 )
/* matrices u and t are filled with the fundamental solutions,
 * s1, s2 and s3 are the sourcepoint coordinates,
 * c1, c2 and c3 are the collocation point coordinates
 * n1, n1 and n3 are the normal vector components
 */
{ double r, /* distance sourcenode to fieldnode (rho) */
	 rd1, /* rho,1 (i.e. drho/dx1) */
	 rd2, /* rho,2 (i.e. drho/dx2) */
	 rd3, /* rho,3 (i.e. drho/dx3) */
	  C1, /* constant */
	  C2, /* constant */
	 rdn, /* rho,j nj (i.e. rho,1n1 + rho,2n2 + rho,3n3) */
	 tmp, /* variabele */
	   A, /* variabeles too */
	   B,
	   C,
	   D;


  rd1 = c1-s1; /* this are not the definitive values! */
  rd2 = c2-s2;
  rd3 = c3-s3;
  /* calculate rho: */
  r  = rd1 * rd1;
  r += (rd2 * rd2);
  r += (rd3 * rd3);
  r  = sqrt(r);
  rd1 = rd1/r;   /* definitive values of rdx */
  rd2 = rd2/r;
  rd3 = rd3/r;

  C1 = (1.0+NU)/r;
  C2 = 3.0 - 4.0*NU; C2 = C1*C2;

  /* calculate fundamental solution displacement matrix: */
  M(u,1,1)  = C1;
  M(u,1,1) *= rd1;
  M(u,1,1) *= rd1;
  M(u,1,1) += C2;
  M(u,2,2)  = C1;
  M(u,2,2) *= rd2;
  M(u,2,2) *= rd2;
  M(u,2,2) += C2;
  M(u,3,3)  = C1;
  M(u,3,3) *= rd3;
  M(u,3,3) *= rd3;
  M(u,3,3) += C2;
  M(u,1,2)  = C1;
  M(u,1,2) *= rd1;
  M(u,1,2) *= rd2;
  M(u,2,1)  = M(u,1,2);
  M(u,1,3)  = C1;
  M(u,1,3) *= rd1;
  M(u,1,3) *= rd3;
  M(u,3,1)  = M(u,1,3);
  M(u,2,3)  = C1;
  M(u,2,3) *= rd2;
  M(u,2,3) *= rd3;
  M(u,3,2)  = M(u,2,3);

  /* assign values for processing speed: */
  C1  = r;
  C1 *= r;
  C1  = -1.0/C1;
  C2  = 1.0 - 2.0*NU;
  C2 *= C1;
  rdn = rd1*n1+rd2*n2+rd3*n3;

  /* calculate fundamental solution traction matrix: */
  /* first the diagonal terms: */
  A  = 3.0;
  A *= C1;
  A *= rdn; 
  B  = C2;
  B *= rdn;
  M(t,1,1)  = rd1; 
  M(t,1,1) *= rd1;
  M(t,1,1) *= A;
  M(t,1,1) += B;
  M(t,2,2)  = rd2;
  M(t,2,2) *= rd2;
  M(t,2,2) *= A;
  M(t,2,2) += B;
  M(t,3,3)  = rd3;
  M(t,3,3) *= rd3;
  M(t,3,3) *= A;
  M(t,3,3) += B;
  /* Now do the off diagonal terms: */
  C  = A;
  C *= rd1;
  C *= rd2;
  D  = n2;
  D *= rd1;
  B  = n1;
  B *= rd2;
  B -= D;
  B *= C2;
  M(t,1,2)  = C;
  M(t,1,2) += B;
  M(t,2,1)  = C;
  M(t,2,1) -= B;
  C  = A;
  C *= rd1;
  C *= rd3;
  D  = n3;
  D *= rd1;
  B  = n1;
  B *= rd3;
  B -= D;
  B *= C2;
  M(t,1,3)  = C;
  M(t,1,3) += B;
  M(t,3,1)  = C;
  M(t,3,1) -= B;
  C  = A;
  C *= rd2;
  C *= rd3;
  D  = n3;
  D *= rd2;
  B  = n2;
  B *= rd3;
  B -= D;
  B *= C2;
  M(t,2,3)  = C;
  M(t,2,3) += B;
  M(t,3,2)  = C;
  M(t,3,2) -= B;

}

// Assembly:
subq $0xb8, %rsp
movsd 0xc0(%rsp), %xmm8
movq %rdi, 0xb0(%rsp)
movq %rsi, 0xa8(%rsp)
movsd %xmm0, 0xa0(%rsp)
movsd %xmm1, 0x98(%rsp)
movsd %xmm2, 0x90(%rsp)
movsd %xmm3, 0x88(%rsp)
movsd %xmm4, 0x80(%rsp)
movsd %xmm5, 0x78(%rsp)
movsd %xmm6, 0x70(%rsp)
movsd %xmm7, 0x68(%rsp)
movsd 0x88(%rsp), %xmm0
subsd 0xa0(%rsp), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x80(%rsp), %xmm0
subsd 0x98(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd 0x78(%rsp), %xmm0
subsd 0x90(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
movsd 0x58(%rsp), %xmm0
mulsd 0x58(%rsp), %xmm0
movsd %xmm0, 0x60(%rsp)
movsd 0x50(%rsp), %xmm0
movsd 0x50(%rsp), %xmm2
movsd 0x60(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x60(%rsp)
movsd 0x48(%rsp), %xmm0
movsd 0x48(%rsp), %xmm2
movsd 0x60(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x60(%rsp)
movsd 0x60(%rsp), %xmm0
callq 0x1150
movsd %xmm0, 0x60(%rsp)
movsd 0x58(%rsp), %xmm0
divsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x50(%rsp), %xmm0
divsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
movsd 0x48(%rsp), %xmm0
divsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
movsd 0x53f2(%rip), %xmm0     # 0x19008
leaq 0xa7c3(%rip), %rax      # 0x1e3e0
addsd (%rax), %xmm0
divsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
leaq 0xa7ac(%rip), %rax      # 0x1e3e0
movsd (%rax), %xmm0
movsd 0x65d0(%rip), %xmm1     # 0x1a210
mulsd %xmm1, %xmm0
movsd 0x57dc(%rip), %xmm1     # 0x19428
addsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rsp)
movsd 0x40(%rsp), %xmm0
mulsd 0x38(%rsp), %xmm0
movsd %xmm0, 0x38(%rsp)
movsd 0x40(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsd %xmm0, (%rax)
movsd 0x58(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
mulsd (%rax), %xmm0
movsd %xmm0, (%rax)
movsd 0x58(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
mulsd (%rax), %xmm0
movsd %xmm0, (%rax)
movsd 0x38(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
movsd 0x40(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x50(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
mulsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movsd 0x50(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
mulsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movsd 0x38(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
addsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movsd 0x40(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movsd %xmm0, 0x10(%rax)
movsd 0x48(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
mulsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movsd 0x48(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
mulsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movsd 0x38(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
addsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movsd 0x40(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x58(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
mulsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movsd 0x50(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
mulsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsd 0x8(%rax), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movsd %xmm0, (%rax)
movsd 0x40(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsd %xmm0, 0x10(%rax)
movsd 0x58(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
mulsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movsd 0x48(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
mulsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsd 0x10(%rax), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movsd %xmm0, (%rax)
movsd 0x40(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movsd %xmm0, 0x10(%rax)
movsd 0x50(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
mulsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movsd 0x48(%rsp), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
mulsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movsd 0x10(%rax), %xmm0
movq 0xb0(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
movsd 0x60(%rsp), %xmm0
mulsd 0x40(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
movsd 0x605f(%rip), %xmm0     # 0x19fd8
divsd 0x40(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
leaq 0xa454(%rip), %rax      # 0x1e3e0
movsd (%rax), %xmm1
addsd %xmm1, %xmm1
movsd 0x506c(%rip), %xmm0     # 0x19008
subsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rsp)
movsd 0x40(%rsp), %xmm0
mulsd 0x38(%rsp), %xmm0
movsd %xmm0, 0x38(%rsp)
movsd 0x58(%rsp), %xmm1
movsd 0x70(%rsp), %xmm2
movsd 0x50(%rsp), %xmm0
mulsd 0x68(%rsp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x48(%rsp), %xmm0
movsd 0xc0(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x30(%rsp)
movsd 0x542b(%rip), %xmm0     # 0x19428
movsd %xmm0, 0x20(%rsp)
movsd 0x40(%rsp), %xmm0
mulsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movsd 0x30(%rsp), %xmm0
mulsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movsd 0x38(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x30(%rsp), %xmm0
mulsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x58(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsd %xmm0, (%rax)
movsd 0x58(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
mulsd (%rax), %xmm0
movsd %xmm0, (%rax)
movsd 0x20(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
mulsd (%rax), %xmm0
movsd %xmm0, (%rax)
movsd 0x18(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
movsd 0x50(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x50(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
mulsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movsd 0x20(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
mulsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movsd 0x18(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
addsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movsd 0x48(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movsd %xmm0, 0x10(%rax)
movsd 0x48(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
mulsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movsd 0x20(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
mulsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movsd 0x18(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
addsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x58(%rsp), %xmm0
mulsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x50(%rsp), %xmm0
mulsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x68(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x58(%rsp), %xmm0
mulsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x50(%rsp), %xmm0
mulsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x8(%rsp), %xmm1
movsd 0x18(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x38(%rsp), %xmm0
mulsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x10(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x18(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
addsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movsd 0x10(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movsd %xmm0, (%rax)
movsd 0x18(%rsp), %xmm1
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movsd (%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x58(%rsp), %xmm0
mulsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x48(%rsp), %xmm0
mulsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0xc0(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x58(%rsp), %xmm0
mulsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x48(%rsp), %xmm0
mulsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x8(%rsp), %xmm1
movsd 0x18(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x38(%rsp), %xmm0
mulsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x10(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movsd %xmm0, 0x10(%rax)
movsd 0x18(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
addsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movsd 0x10(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movsd %xmm0, (%rax)
movsd 0x18(%rsp), %xmm1
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movsd (%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x50(%rsp), %xmm0
mulsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x48(%rsp), %xmm0
mulsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0xc0(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x50(%rsp), %xmm0
mulsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x68(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x48(%rsp), %xmm0
mulsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x8(%rsp), %xmm1
movsd 0x18(%rsp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x38(%rsp), %xmm0
mulsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x10(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movsd %xmm0, 0x10(%rax)
movsd 0x18(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
addsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movsd 0x10(%rsp), %xmm0
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x18(%rsp), %xmm1
movq 0xa8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x10(%rax), %rax
movsd 0x8(%rax), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rax)
addq $0xb8, %rsp
retq
nopl (%rax)