// File: /workspace/github_c_makefile_star2_O0/markpeerdeman[P]mbemm/src/emath/scale.c
// Function: init_scale
void init_scale(mesh theMesh)
{ /* This function calculates the maximum values of the tractions and displacements in the
   * input deck, and finds the radius of the bounding sphere of the mesh
   */
  double cx=0.0;
  double cy=0.0;
  double cz=0.0;
  double radius=0.0;
  double r;
  point q;
  int nr_points=0;
  restraint di;
  restraint tr;

  /* First the gmax value is calculated: */
  q = (point)point_dll(theMesh->mesh_p,START,0);
  while (q!=(point)NULL)
  { nr_points++;
    cx+=q->x;
    cy+=q->y;
    cz+=q->z;
    q=q->NEXT;
  }
  cx = cx / (double)nr_points;
  cy = cy / (double)nr_points;
  cz = cz / (double)nr_points;

  q = (point)point_dll(theMesh->mesh_p,START,0);
  while (q!=(point)NULL)
  { r = sqrt((cx-q->x)*(cx-q->x)+(cy-q->y)*(cy-q->y)+(cz-q->z)*(cz-q->z));
    if (r>radius) radius=r;
    q=q->NEXT;
  }
  gmax=radius;

  /* Then the dmax value is calculated: */
   dmax = 0.0;
   di = (restraint)restraint_dll(theMesh->mesh_d,START,0);
   while (di!=(restraint)NULL)
   { if (fabs(di->u1)>dmax) dmax=fabs(di->u1);
     if (fabs(di->u2)>dmax) dmax=fabs(di->u2);
     if (fabs(di->u3)>dmax) dmax=fabs(di->u3);
     di=di->NEXT; 
   }

   /* Finally, the tmax value is calculated: */
   tmax = 0.0;
   tr = (restraint)restraint_dll(theMesh->mesh_t,START,0);
   while (tr!=(restraint)NULL)
   { if (fabs(tr->f1)>tmax) tmax=fabs(tr->f1);
     if (fabs(tr->f2)>tmax) tmax=fabs(tr->f2);
     if (fabs(tr->f3)>tmax) tmax=fabs(tr->f3);
     tr=tr->NEXT; 
   }

   if ( (dmax<1.0E-20)&&(tmax<1.0E-20))
   { dmax = 1.0E-11; tmax= 1.0; }

   /* dmax=dmax/20.0; */

}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x48(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x40(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x38(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x30(%rsp)
movl $0x0, 0x1c(%rsp)
movq 0x50(%rsp), %rax
movq (%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x175c0
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x10310
movl 0x1c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1c(%rsp)
movq 0x20(%rsp), %rax
movsd 0x20(%rax), %xmm0
addsd 0x48(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
movq 0x20(%rsp), %rax
movsd 0x28(%rax), %xmm0
addsd 0x40(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
movq 0x20(%rsp), %rax
movsd 0x30(%rax), %xmm0
addsd 0x38(%rsp), %xmm0
movsd %xmm0, 0x38(%rsp)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x20(%rsp)
jmp 0x102ab
movsd 0x48(%rsp), %xmm0
cvtsi2sdl 0x1c(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x48(%rsp)
movsd 0x40(%rsp), %xmm0
cvtsi2sdl 0x1c(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x40(%rsp)
movsd 0x38(%rsp), %xmm0
cvtsi2sdl 0x1c(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rsp)
movq 0x50(%rsp), %rax
movq (%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x175c0
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x10420
movsd 0x48(%rsp), %xmm1
movq 0x20(%rsp), %rax
subsd 0x20(%rax), %xmm1
movsd 0x48(%rsp), %xmm2
movq 0x20(%rsp), %rax
subsd 0x20(%rax), %xmm2
movsd 0x40(%rsp), %xmm0
movq 0x20(%rsp), %rax
subsd 0x28(%rax), %xmm0
movsd 0x40(%rsp), %xmm3
movq 0x20(%rsp), %rax
subsd 0x28(%rax), %xmm3
mulsd %xmm3, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x38(%rsp), %xmm0
movq 0x20(%rsp), %rax
subsd 0x30(%rax), %xmm0
movsd 0x38(%rsp), %xmm2
movq 0x20(%rsp), %rax
subsd 0x30(%rax), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x1150
movsd %xmm0, 0x28(%rsp)
movsd 0x28(%rsp), %xmm0
ucomisd 0x30(%rsp), %xmm0
jbe 0x1040d
movsd 0x28(%rsp), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x20(%rsp)
jmp 0x10368
movsd 0x30(%rsp), %xmm0
movsd %xmm0, 0xe422(%rip)     # 0x1e850
xorps %xmm0, %xmm0
movsd %xmm0, 0xe41f(%rip)     # 0x1e858
movq 0x50(%rsp), %rax
movq 0x10(%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x17a40
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x10523
movq 0x10(%rsp), %rax
movsd 0x30(%rax), %xmm0
movaps 0x8ba3(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
ucomisd 0xe3df(%rip), %xmm0     # 0x1e858
jbe 0x10498
movq 0x10(%rsp), %rax
movsd 0x30(%rax), %xmm0
movaps 0x8b84(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
movsd %xmm0, 0xe3c0(%rip)     # 0x1e858
movq 0x10(%rsp), %rax
movsd 0x38(%rax), %xmm0
movaps 0x8b67(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
ucomisd 0xe3a3(%rip), %xmm0     # 0x1e858
jbe 0x104d4
movq 0x10(%rsp), %rax
movsd 0x38(%rax), %xmm0
movaps 0x8b48(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
movsd %xmm0, 0xe384(%rip)     # 0x1e858
movq 0x10(%rsp), %rax
movsd 0x40(%rax), %xmm0
movaps 0x8b2b(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
ucomisd 0xe367(%rip), %xmm0     # 0x1e858
jbe 0x10510
movq 0x10(%rsp), %rax
movsd 0x40(%rax), %xmm0
movaps 0x8b0c(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
movsd %xmm0, 0xe348(%rip)     # 0x1e858
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
jmp 0x10450
xorps %xmm0, %xmm0
movsd %xmm0, 0xe332(%rip)     # 0x1e860
movq 0x50(%rsp), %rax
movq 0x18(%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x17a40
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x10618
movq 0x8(%rsp), %rax
movsd 0x18(%rax), %xmm0
movaps 0x8aae(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
ucomisd 0xe2f2(%rip), %xmm0     # 0x1e860
jbe 0x1058d
movq 0x8(%rsp), %rax
movsd 0x18(%rax), %xmm0
movaps 0x8a8f(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
movsd %xmm0, 0xe2d3(%rip)     # 0x1e860
movq 0x8(%rsp), %rax
movsd 0x20(%rax), %xmm0
movaps 0x8a72(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
ucomisd 0xe2b6(%rip), %xmm0     # 0x1e860
jbe 0x105c9
movq 0x8(%rsp), %rax
movsd 0x20(%rax), %xmm0
movaps 0x8a53(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
movsd %xmm0, 0xe297(%rip)     # 0x1e860
movq 0x8(%rsp), %rax
movsd 0x28(%rax), %xmm0
movaps 0x8a36(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
ucomisd 0xe27a(%rip), %xmm0     # 0x1e860
jbe 0x10605
movq 0x8(%rsp), %rax
movsd 0x28(%rax), %xmm0
movaps 0x8a17(%rip), %xmm1     # 0x19010
pand %xmm1, %xmm0
movsd %xmm0, 0xe25b(%rip)     # 0x1e860
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0x10545
movsd 0x9c50(%rip), %xmm0     # 0x1a270
ucomisd 0xe230(%rip), %xmm0     # 0x1e858
jbe 0x1065c
movsd 0x9c3e(%rip), %xmm0     # 0x1a270
ucomisd 0xe226(%rip), %xmm0     # 0x1e860
jbe 0x1065c
movsd 0x9c34(%rip), %xmm0     # 0x1a278
movsd %xmm0, 0xe20c(%rip)     # 0x1e858
movsd 0x89b4(%rip), %xmm0     # 0x19008
movsd %xmm0, 0xe204(%rip)     # 0x1e860
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)