// File: /workspace/github_c_makefile_star2_O0/markpeerdeman[P]mbemm/src/emath/do_contact.c
// Function: find_contactnodes
void find_contactnodes(cmesh theCmesh)
{ double mindist=1.0E6;
  double curdist;
  element e;
  point p;
  point q;

  fprintf(stderr,"* Running automatic contact detection\n");
  fprintf(stderr,"  Candidate contact node list:\n");
  fprintf(stderr,"  cnodes\n");

  /* 1: determine smallest element size */
  e=(element)element_dll(theCmesh->merged_mesh->mesh_e,START,0);
  while (e!=(element)NULL)
  { if (e->z1<mindist) mindist=e->z1;
    if (e->z2<mindist) mindist=e->z2;
    if (e->z3<mindist) mindist=e->z3;
    e=e->NEXT;
  }

  /* 2: divide this size by 20.0: */
  mindist/=2.0;

  p=(point)point_dll(theCmesh->merged_mesh->mesh_p,START,0);
  while (p!=(point)NULL)
  { q=(point)point_dll(theCmesh->merged_mesh->mesh_p,START,0);
    while (q!=(point)NULL)
    { curdist=sqrt( (p->x-q->x)*(p->x-q->x) +
                    (p->y-q->y)*(p->y-q->y) +
                    (p->z-q->z)*(p->z-q->z) );
      if ( (curdist<mindist) && (p->label!=q->label) && (p->label<=theCmesh->nr_of_nodes_basemesh) )
      { fprintf(stderr,"  % 5d  % 5d\n",p->label,q->label-
                 theCmesh->nr_of_nodes_basemesh);
      }
      q=q->NEXT;
    }
    p=p->NEXT;
  }


  fprintf(stderr,"  end_cnodes\n\n");
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movsd 0x11a0f(%rip), %xmm0    # 0x19e50
movsd %xmm0, 0x28(%rsp)
movq 0x15baa(%rip), %rax     # 0x1dff8
movq (%rax), %rdi
leaq 0x11a00(%rip), %rsi     # 0x19e58
movb $0x0, %al
callq 0x10d0
movq 0x15b92(%rip), %rax     # 0x1dff8
movq (%rax), %rdi
leaq 0x11a0f(%rip), %rsi     # 0x19e7f
movb $0x0, %al
callq 0x10d0
movq 0x15b7a(%rip), %rax     # 0x1dff8
movq (%rax), %rdi
leaq 0x11a17(%rip), %rsi     # 0x19e9f
movb $0x0, %al
callq 0x10d0
movq 0x30(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x14570
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x854c
movq 0x18(%rsp), %rax
movsd 0x88(%rax), %xmm1
movsd 0x28(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x84e1
movq 0x18(%rsp), %rax
movsd 0x88(%rax), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x18(%rsp), %rax
movsd 0x90(%rax), %xmm1
movsd 0x28(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x850d
movq 0x18(%rsp), %rax
movsd 0x90(%rax), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x18(%rsp), %rax
movsd 0x98(%rax), %xmm1
movsd 0x28(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x8539
movq 0x18(%rsp), %rax
movsd 0x98(%rax), %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x84a9
movsd 0x28(%rsp), %xmm0
movsd 0x10ede(%rip), %xmm1    # 0x19438
divsd %xmm1, %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x30(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x175c0
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x86d1
movq 0x30(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x175c0
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x86be
movq 0x10(%rsp), %rax
movsd 0x20(%rax), %xmm1
movq 0x8(%rsp), %rax
subsd 0x20(%rax), %xmm1
movq 0x10(%rsp), %rax
movsd 0x20(%rax), %xmm2
movq 0x8(%rsp), %rax
subsd 0x20(%rax), %xmm2
movq 0x10(%rsp), %rax
movsd 0x28(%rax), %xmm0
movq 0x8(%rsp), %rax
subsd 0x28(%rax), %xmm0
movq 0x10(%rsp), %rax
movsd 0x28(%rax), %xmm3
movq 0x8(%rsp), %rax
subsd 0x28(%rax), %xmm3
mulsd %xmm3, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movq 0x10(%rsp), %rax
movsd 0x30(%rax), %xmm0
movq 0x8(%rsp), %rax
subsd 0x30(%rax), %xmm0
movq 0x10(%rsp), %rax
movsd 0x30(%rax), %xmm2
movq 0x8(%rsp), %rax
subsd 0x30(%rax), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x1150
movsd %xmm0, 0x20(%rsp)
movsd 0x20(%rsp), %xmm1
movsd 0x28(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x86ab
movq 0x10(%rsp), %rax
movl 0x10(%rax), %eax
movq 0x8(%rsp), %rcx
cmpl 0x10(%rcx), %eax
je 0x86ab
movq 0x10(%rsp), %rax
movl 0x10(%rax), %eax
movq 0x30(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jg 0x86ab
movq 0x15976(%rip), %rax     # 0x1dff8
movq (%rax), %rdi
movq 0x10(%rsp), %rax
movl 0x10(%rax), %edx
movq 0x8(%rsp), %rax
movl 0x10(%rax), %ecx
movq 0x30(%rsp), %rax
subl 0x8(%rax), %ecx
leaq 0x11805(%rip), %rsi     # 0x19ea9
movb $0x0, %al
callq 0x10d0
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0x85a2
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
jmp 0x857d
movq 0x15920(%rip), %rax     # 0x1dff8
movq (%rax), %rdi
leaq 0x117d5(%rip), %rsi     # 0x19eb7
movb $0x0, %al
callq 0x10d0
addq $0x38, %rsp
retq
nop