// File: /workspace/github_c_makefile_star2_O0/ugobas[P]tnm/anharmonic_tnm.c
// Function: Determine_Ak
int Determine_Ak(struct interaction *Int, double V0, double KK, int n)
{
  int err=0;
  double f, fc, V2=KK/(lambda*lambda);
  Int->r1=100;
  if(POW){
    f=pow(Int->r0, -lambda);
    fc=pow(C_THR, -lambda);
    V2*=(Int->r0*Int->r0);
  }else{
    f=exp(-lambda*Int->r0);
    fc=exp(-lambda*C_THR);
  }
  double alpha=fc/f, a2=alpha*alpha, aa=1.-alpha;
  double f2=f*f, fc2=fc*fc;
  // Condition on V
  Int->A4=(V0+0.5*V2*aa*aa)/(f2*f2*(3.0-a2*a2+6*a2-8.0*alpha));
  if(Int->A4<0){
    printf("ERROR A4= %.3g <0 n= %d", Int->A4, n);
    printf(" alpha=%.2g V0= %.2g V2= %.2g\n", alpha, V0, V2); 
    err=-1;
  }
  Int->A2=-6.0*Int->A4*f2+0.5*V2/f2; // Condition on V''
  Int->A1=8.0*Int->A4*f2*f-V2/f;     // Condition on V'
  Int->A0=-Int->A4*fc2*fc2-Int->A2*fc2-Int->A1*fc; // Condition at C_THR
  { // Test
    float EPS=0.01;
    float V0_1=Compute_V(Int, Int->r0);
    float V1_1=Compute_V1(Int, Int->r0);
    float V2_1=Compute_V2(Int, Int->r0, 0);
    if(err ||(fabs(V0_1-V0)>EPS)||(fabs(V1_1)>EPS)||(fabs(V2_1-KK)>EPS)){
      printf("ERROR in Determine_Ak n= %d r0= %.2f r1= %.2f A4= %.2g\n",
	     n, Int->r0, Int->r1, Int->A4);
      printf("V(Rc)= %.4g\n",  Compute_V(Int, C_THR));
      printf("V(r0)  = %.4g (old) %.4g (new)\n", V0, V0_1);
      printf("V'(r0) = 0 (old) %.4g (new)\n", V1_1);
      printf("V''(r0)= %.4g (old) %.4g (new)\n", KK, V2_1);
      return(-1);
    }
  }
  return(err);

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movsd %xmm0, -0x18(%rbp)
movsd %xmm1, -0x20(%rbp)
movl %esi, -0x24(%rbp)
movl $0x0, -0x28(%rbp)
movsd -0x20(%rbp), %xmm0
leaq 0x61fc5(%rip), %rax     # 0x8c094
movss (%rax), %xmm1
leaq 0x61fba(%rip), %rax     # 0x8c094
mulss (%rax), %xmm1
cvtss2sd %xmm1, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movq -0x10(%rbp), %rax
movss 0x4bfb9(%rip), %xmm0    # 0x760b0
movss %xmm0, 0x10(%rax)
leaq 0x614a9(%rip), %rax     # 0x8b5ac
cmpl $0x0, (%rax)
je 0x2a18e
movq -0x10(%rbp), %rax
movsd 0x20(%rax), %xmm0
leaq 0x61f78(%rip), %rax     # 0x8c094
movss (%rax), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
cvtss2sd %xmm1, %xmm1
callq 0x1080
movsd %xmm0, -0x30(%rbp)
leaq 0x61ee6(%rip), %rax     # 0x8c028
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x61f43(%rip), %rax     # 0x8c094
movss (%rax), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
cvtss2sd %xmm1, %xmm1
callq 0x1080
movsd %xmm0, -0x38(%rbp)
movq -0x10(%rbp), %rax
movsd 0x20(%rax), %xmm0
movq -0x10(%rbp), %rax
mulsd 0x20(%rax), %xmm0
mulsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
jmp 0x2a1ee
leaq 0x61eff(%rip), %rax     # 0x8c094
movss (%rax), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x10(%rbp), %rax
mulsd 0x20(%rax), %xmm0
callq 0x1230
movsd %xmm0, -0x30(%rbp)
leaq 0x61ed0(%rip), %rax     # 0x8c094
movss (%rax), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
leaq 0x61e4c(%rip), %rax     # 0x8c028
mulss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x1230
movsd %xmm0, -0x38(%rbp)
movsd -0x38(%rbp), %xmm0
divsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x48(%rbp), %xmm0
mulsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd 0x4be34(%rip), %xmm0    # 0x76048
subsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x30(%rbp), %xmm0
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd -0x18(%rbp), %xmm1
movsd 0x4bdbf(%rip), %xmm0    # 0x76008
mulsd -0x40(%rbp), %xmm0
mulsd -0x58(%rbp), %xmm0
movsd -0x58(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd -0x60(%rbp), %xmm1
mulsd -0x60(%rbp), %xmm1
movsd -0x50(%rbp), %xmm2
movsd -0x50(%rbp), %xmm3
movq %xmm2, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm2
mulsd %xmm3, %xmm2
movsd 0x521a1(%rip), %xmm3    # 0x7c438
addsd %xmm3, %xmm2
movsd -0x50(%rbp), %xmm3
movsd 0x521a8(%rip), %xmm4    # 0x7c450
mulsd %xmm4, %xmm3
addsd %xmm2, %xmm3
movsd -0x48(%rbp), %xmm2
movsd 0x521ab(%rip), %xmm4    # 0x7c468
mulsd %xmm4, %xmm2
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, 0x48(%rax)
movq -0x10(%rbp), %rax
xorps %xmm0, %xmm0
ucomisd 0x48(%rax), %xmm0
jbe 0x2a322
movq -0x10(%rbp), %rax
movsd 0x48(%rax), %xmm0
movl -0x24(%rbp), %esi
leaq 0x52bed(%rip), %rdi     # 0x7cee4
movb $0x1, %al
callq 0x10d0
movsd -0x48(%rbp), %xmm0
movsd -0x18(%rbp), %xmm1
movsd -0x40(%rbp), %xmm2
leaq 0x52be8(%rip), %rdi     # 0x7cefc
movb $0x3, %al
callq 0x10d0
movl $0xffffffff, -0x28(%rbp) # imm = 0xFFFFFFFF
movq -0x10(%rbp), %rax
movsd 0x5214a(%rip), %xmm0    # 0x7c478
mulsd 0x48(%rax), %xmm0
movsd -0x60(%rbp), %xmm2
movsd 0x4bcc8(%rip), %xmm1    # 0x76008
mulsd -0x40(%rbp), %xmm1
divsd -0x60(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, 0x40(%rax)
movq -0x10(%rbp), %rax
movsd 0x52109(%rip), %xmm0    # 0x7c470
mulsd 0x48(%rax), %xmm0
mulsd -0x60(%rbp), %xmm0
movsd -0x30(%rbp), %xmm2
movsd -0x40(%rbp), %xmm1
divsd -0x30(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, 0x38(%rax)
movq -0x10(%rbp), %rax
movsd 0x48(%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd -0x68(%rbp), %xmm1
movsd -0x68(%rbp), %xmm2
movq -0x10(%rbp), %rax
movsd 0x40(%rax), %xmm0
mulsd -0x68(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movq -0x10(%rbp), %rax
movsd 0x38(%rax), %xmm0
movsd -0x38(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, 0x30(%rax)
movss 0x51fab(%rip), %xmm0    # 0x7c3e8
movss %xmm0, -0x6c(%rbp)
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movsd 0x20(%rax), %xmm0
cvtsd2ss %xmm0, %xmm0
callq 0x27810
movss %xmm0, -0x70(%rbp)
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movsd 0x20(%rax), %xmm0
cvtsd2ss %xmm0, %xmm0
callq 0x285e0
movss %xmm0, -0x74(%rbp)
movq -0x10(%rbp), %rdi
movq -0x10(%rbp), %rax
movsd 0x20(%rax), %xmm0
cvtsd2ss %xmm0, %xmm0
xorl %esi, %esi
callq 0x28af0
movss %xmm0, -0x78(%rbp)
cmpl $0x0, -0x28(%rbp)
jne 0x2a512
movss -0x70(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
subsd -0x18(%rbp), %xmm0
movaps 0x51fe0(%rip), %xmm1    # 0x7c490
pand %xmm1, %xmm0
movss -0x6c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
ja 0x2a512
movss -0x74(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movaps 0x51fbd(%rip), %xmm1    # 0x7c490
pand %xmm1, %xmm0
movss -0x6c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
ja 0x2a512
movss -0x78(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
subsd -0x20(%rbp), %xmm0
movaps 0x51f95(%rip), %xmm1    # 0x7c490
pand %xmm1, %xmm0
movss -0x6c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x2a5c0
movl -0x24(%rbp), %esi
movq -0x10(%rbp), %rax
movsd 0x20(%rax), %xmm0
movq -0x10(%rbp), %rax
movss 0x10(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x10(%rbp), %rax
movsd 0x48(%rax), %xmm2
leaq 0x529e0(%rip), %rdi     # 0x7cf1b
movb $0x3, %al
callq 0x10d0
movq -0x10(%rbp), %rdi
leaq 0x61adb(%rip), %rax     # 0x8c028
movss (%rax), %xmm0
callq 0x27810
cvtss2sd %xmm0, %xmm0
leaq 0x529f2(%rip), %rdi     # 0x7cf53
movb $0x1, %al
callq 0x10d0
movsd -0x18(%rbp), %xmm0
movss -0x70(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0x529e3(%rip), %rdi     # 0x7cf60
movb $0x2, %al
callq 0x10d0
movss -0x74(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x529ec(%rip), %rdi     # 0x7cf80
movb $0x1, %al
callq 0x10d0
movsd -0x20(%rbp), %xmm0
movss -0x78(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0x529ed(%rip), %rdi     # 0x7cf9d
movb $0x2, %al
callq 0x10d0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x2a5c6
movl -0x28(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)