// File: /workspace/github_c_makefile_star2_O0/ugobas[P]tnm/anharmonic_tnm.c
// Function: Assign_interactions_SB_old
void Assign_interactions_SB_old(struct interaction *Int_list, int N_int,
				int POW, float EXPO, float k0)
{
  float A2; int n;
  if(POW){
    lambda=EXPO/4-0.5; lambda_2=2*lambda;
    A2=k0*pow(C0,EXPO)/(lambda_2*lambda_2);
    for(n=0; n<N_int; n++){
      Int_list[n].A2=A2*pow(Int_list[n].r0,-lambda_2);
    }
  }else{
    lambda=EXPO/4; lambda_2=2*lambda;
    A2=k0*exp(C0*EXPO)/(lambda_2*lambda_2);
    for(int n=0; n<N_int; n++){
      Int_list[n].A2=A2*exp(-Int_list[n].r0*lambda_2);
    }
  }
  float A4=A2/2;
  E_repulsion=A4;
  float kk0=A2*lambda_2*lambda_2, kk, EPS=0.005; int err=0;
  struct interaction *Int=Int_list;
  for(n=0; n<N_int; n++){
    Int->A4=A4;
    Int->A1=0;
    Int->A0=0;
    Int->r1=(Int->r0+C_THR)/2;
    Int->A0=-Compute_V(Int, C_THR);
    Int->E_min=Compute_V(Int, Int->r0);
    // Interpolation(Int_list+n);
    // Check force constant
    if(POW){kk=kk0*pow(Int->r0,-EXPO);}
    else{kk=kk0*exp(-Int->r0*EXPO);}
    if(fabs(kk-Int->sec_der)>EPS){
      err++;
      if(err <= 10){
	printf("ERROR in Assign_int n=%d r= %.2f ", n, Int->r0);
	printf("k= %.4g (old) %.4g (new) /= %.3f\n", 
	       Int->sec_der, kk, Int->sec_der/kk);
      }else{
	printf(".");
      }
    }
    Int++;
  }
  if(err){
    printf("\n%d errors in Assign_int, POW= %d EXPO= %.1f K0= %.4g r0= %.1f\n",
	   err, POW, EXPO, k0, C0); exit(8);
  }

  // Print energy versus r0
  char name_out[200]="Anharmonic_energy_TNM.dat";
  FILE *file_out=fopen(name_out, "w");
  printf("Writing %s\n", name_out);
  if(POW){ // power law: C0^-e
    fprintf(file_out, "# f(r)= %.2f r^(-%.2f)\n", -A4, EXPO);
  }else{ // Exponential
    fprintf(file_out, "# f(r)= %.2f exp(-%.2f*r)\n", -A4, EXPO);
  }
  for(float r=2.0; r<4.6; r+=0.005){
    float f;
    if(POW){f=-A4*pow(r,-EXPO);}
    else{f=-A4*exp(-EXPO*r);}
    fprintf(file_out, "%.2f %.4g\n", r, f);
  }
  fclose(file_out);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movss %xmm0, -0x14(%rbp)
movss %xmm1, -0x18(%rbp)
cmpl $0x0, -0x10(%rbp)
je 0x2b25a
movss -0x14(%rbp), %xmm0
movss 0x50ec6(%rip), %xmm1    # 0x7bfec
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x4aed2(%rip), %xmm1    # 0x76008
subsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
leaq 0x60f4f(%rip), %rax     # 0x8c094
movss %xmm0, (%rax)
movss 0x4af43(%rip), %xmm0    # 0x76094
leaq 0x60f3c(%rip), %rax     # 0x8c094
mulss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x71138(%rip)    # 0x9c2a0
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x128(%rbp)
leaq 0x60eb4(%rip), %rax     # 0x8c034
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x14(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
callq 0x1080
movaps %xmm0, %xmm1
movsd -0x128(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd 0x710f3(%rip), %xmm1    # 0x9c2a0
mulsd 0x710eb(%rip), %xmm1    # 0x9c2a0
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x2b255
movss -0x1c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x130(%rbp)
movq -0x8(%rbp), %rax
movslq -0x20(%rbp), %rcx
imulq $0xc8, %rcx, %rcx
addq %rcx, %rax
movsd 0x20(%rax), %xmm0
movsd 0x7109b(%rip), %xmm1    # 0x9c2a0
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
callq 0x1080
movaps %xmm0, %xmm1
movsd -0x130(%rbp), %xmm0
mulsd %xmm1, %xmm0
movq -0x8(%rbp), %rax
movslq -0x20(%rbp), %rcx
imulq $0xc8, %rcx, %rcx
addq %rcx, %rax
movsd %xmm0, 0x40(%rax)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x2b1c9
jmp 0x2b380
movss -0x14(%rbp), %xmm0
movss 0x50d85(%rip), %xmm1    # 0x7bfec
divss %xmm1, %xmm0
leaq 0x60e22(%rip), %rax     # 0x8c094
movss %xmm0, (%rax)
movss 0x4ae16(%rip), %xmm0    # 0x76094
leaq 0x60e0f(%rip), %rax     # 0x8c094
mulss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x7100b(%rip)    # 0x9c2a0
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x138(%rbp)
leaq 0x60d87(%rip), %rax     # 0x8c034
movss (%rax), %xmm0
mulss -0x14(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x1230
movaps %xmm0, %xmm1
movsd -0x138(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd 0x70fca(%rip), %xmm1    # 0x9c2a0
mulsd 0x70fc2(%rip), %xmm1    # 0x9c2a0
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x2b37e
movss -0x1c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x140(%rbp)
movq -0x8(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xc8, %rcx, %rcx
addq %rcx, %rax
movsd 0x20(%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd 0x70f5b(%rip), %xmm0    # 0x9c2a0
callq 0x1230
movaps %xmm0, %xmm1
movsd -0x140(%rbp), %xmm0
mulsd %xmm1, %xmm0
movq -0x8(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xc8, %rcx, %rcx
addq %rcx, %rax
movsd %xmm0, 0x40(%rax)
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x2b2f2
jmp 0x2b380
movss -0x1c(%rbp), %xmm0
movss 0x4ad07(%rip), %xmm1    # 0x76094
divss %xmm1, %xmm0
movss %xmm0, -0x28(%rbp)
movss -0x28(%rbp), %xmm0
leaq 0x60cf6(%rip), %rax     # 0x8c098
movss %xmm0, (%rax)
movss -0x1c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
mulsd 0x70ee9(%rip), %xmm0    # 0x9c2a0
mulsd 0x70ee1(%rip), %xmm0    # 0x9c2a0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x2c(%rbp)
movss 0x5102c(%rip), %xmm0    # 0x7c3fc
movss %xmm0, -0x34(%rbp)
movl $0x0, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x2b613
movss -0x28(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x40(%rbp), %rax
movsd %xmm0, 0x48(%rax)
movq -0x40(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x38(%rax)
movq -0x40(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x30(%rax)
movq -0x40(%rbp), %rax
movsd 0x20(%rax), %xmm0
leaq 0x60bf7(%rip), %rax     # 0x8c028
movss (%rax), %xmm1
cvtss2sd %xmm1, %xmm1
addsd %xmm1, %xmm0
movsd 0x4ac13(%rip), %xmm1    # 0x76058
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x40(%rbp), %rax
movss %xmm0, 0x10(%rax)
movq -0x40(%rbp), %rdi
leaq 0x60bc7(%rip), %rax     # 0x8c028
movss (%rax), %xmm0
callq 0x27810
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x40(%rbp), %rax
movsd %xmm0, 0x30(%rax)
movq -0x40(%rbp), %rdi
movq -0x40(%rbp), %rax
movsd 0x20(%rax), %xmm0
cvtsd2ss %xmm0, %xmm0
callq 0x27810
cvtss2sd %xmm0, %xmm0
movq -0x40(%rbp), %rax
movsd %xmm0, 0xb8(%rax)
cmpl $0x0, -0x10(%rbp)
je 0x2b4ff
movss -0x2c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x148(%rbp)
movq -0x40(%rbp), %rax
movsd 0x20(%rax), %xmm0
movss -0x14(%rbp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
cvtss2sd %xmm1, %xmm1
callq 0x1080
movaps %xmm0, %xmm1
movsd -0x148(%rbp), %xmm0
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x30(%rbp)
jmp 0x2b55a
movss -0x2c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x150(%rbp)
movq -0x40(%rbp), %rax
movsd 0x20(%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movss -0x14(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
mulsd %xmm1, %xmm0
callq 0x1230
movaps %xmm0, %xmm1
movsd -0x150(%rbp), %xmm0
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x30(%rbp)
movss -0x30(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x40(%rbp), %rax
subsd 0x28(%rax), %xmm0
movaps 0x50f1d(%rip), %xmm1    # 0x7c490
pand %xmm1, %xmm0
movss -0x34(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x2b5f7
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
cmpl $0xa, -0x38(%rbp)
jg 0x2b5e7
movl -0x20(%rbp), %esi
movq -0x40(%rbp), %rax
movsd 0x20(%rax), %xmm0
leaq 0x51def(%rip), %rdi     # 0x7d397
movb $0x1, %al
callq 0x10d0
movq -0x40(%rbp), %rax
movsd 0x28(%rax), %xmm0
movss -0x30(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x40(%rbp), %rax
movsd 0x28(%rax), %xmm2
movss -0x30(%rbp), %xmm3
cvtss2sd %xmm3, %xmm3
divsd %xmm3, %xmm2
leaq 0x51ddb(%rip), %rdi     # 0x7d3b9
movb $0x3, %al
callq 0x10d0
jmp 0x2b5f5
leaq 0x4ad58(%rip), %rdi     # 0x76346
movb $0x0, %al
callq 0x10d0
jmp 0x2b5f7
movq -0x40(%rbp), %rax
addq $0xc8, %rax
movq %rax, -0x40(%rbp)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x2b3eb
cmpl $0x0, -0x38(%rbp)
je 0x2b658
movl -0x38(%rbp), %esi
movl -0x10(%rbp), %edx
movss -0x14(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x18(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0x609fc(%rip), %rax     # 0x8c034
movss (%rax), %xmm2
cvtss2sd %xmm2, %xmm2
leaq 0x51d94(%rip), %rdi     # 0x7d3db
movb $0x3, %al
callq 0x10d0
movl $0x8, %edi
callq 0x1210
leaq -0x110(%rbp), %rdi
leaq 0x51e7a(%rip), %rsi     # 0x7d4e0
movl $0xc8, %edx
callq 0x1160
leaq -0x110(%rbp), %rdi
leaq 0x50cf4(%rip), %rsi     # 0x7c372
callq 0x11b0
movq %rax, -0x118(%rbp)
leaq -0x110(%rbp), %rsi
leaq 0x4be56(%rip), %rdi     # 0x774ee
movb $0x0, %al
callq 0x10d0
cmpl $0x0, -0x10(%rbp)
je 0x2b6db
movq -0x118(%rbp), %rdi
movss -0x28(%rbp), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x14(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0x51d49(%rip), %rsi     # 0x7d41b
movb $0x2, %al
callq 0x1150
jmp 0x2b70f
movq -0x118(%rbp), %rdi
movss -0x28(%rbp), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x14(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0x51d2b(%rip), %rsi     # 0x7d433
movb $0x2, %al
callq 0x1150
movss 0x4a97d(%rip), %xmm0    # 0x76094
movss %xmm0, -0x11c(%rbp)
movss -0x11c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x50d4d(%rip), %xmm0    # 0x7c480
ucomisd %xmm1, %xmm0
jbe 0x2b857
cmpl $0x0, -0x10(%rbp)
je 0x2b7a5
movss -0x28(%rbp), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x158(%rbp)
movss -0x11c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x14(%rbp), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm1
cvtss2sd %xmm1, %xmm1
callq 0x1080
movaps %xmm0, %xmm1
movsd -0x158(%rbp), %xmm0
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x120(%rbp)
jmp 0x2b801
movss -0x28(%rbp), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x160(%rbp)
movss -0x14(%rbp), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
mulss -0x11c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x1230
movaps %xmm0, %xmm1
movsd -0x160(%rbp), %xmm0
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x120(%rbp)
movq -0x118(%rbp), %rdi
movss -0x11c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x120(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0x51b62(%rip), %rsi     # 0x7d389
movb $0x2, %al
callq 0x1150
movss -0x11c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x5023e(%rip), %xmm1    # 0x7ba80
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x11c(%rbp)
jmp 0x2b71f
movq -0x118(%rbp), %rdi
callq 0x10a0
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
nopl (%rax)