// File: /workspace/github_c_makefile_star2_O2/ugobas[P]tnm/allostery.c
// Function: Print_interface_coupling
void Print_interface_coupling(struct interaction *Int_list_inter,
			      int N_int_inter,
			      struct interaction *Int_list, int N_int,
			      atom *atoms, int Nchain, char *nameout,
			      float **Coup_dir, float**Coup_coord,
			      float **Coup_deformation, 
			      double **Chain_dir, double **Chain_coord,
			      double **Chain_def, double **norm_chain, int Na)
{
  char name2[200]; sprintf(name2, "%s.interface.dat", nameout);
  FILE *file_out=fopen(name2, "w");
  printf("Writing %s\n", name2);

  int ia, ja, n, npair=N_int_inter; float y;
  double Ave_dir=0, Ave_coord=0, Ave_def=0;
  double Min_dir=100, Min_coord=100, Max_def=0;
  int mpair=0, mpair_max=Nchain*(Nchain-1)/2, m;
  int c1[mpair_max], c2[mpair_max];
  for(n=0; n<N_int_inter; n++){
    ia=(atoms+Int_list_inter[n].i1)->res;
    ja=(atoms+Int_list_inter[n].i2)->res;
    if((ia>=Na)||(ja>=Na)){npair--; continue;}
    {
      int ic1=(atoms+Int_list_inter[n].i1)->chain;
      int ic2=(atoms+Int_list_inter[n].i2)->chain;
      if(ic1!=ic2){
	if(ic1>ic2){int tmp=ic2; ic2=ic1; ic1=tmp;}
	for(m=0; m<mpair; m++)if(ic1==c1[m] && ic2==c2[m])break;
	if(m==mpair){c1[m]=ic1; c2[m]=ic2; mpair++;}
      }
    }
    if(Coup_dir){
      y=Coup_dir[ia][ja]; Ave_dir+=y; if(y<Min_dir)Min_dir=y;
    }
    if(Coup_coord){
      y=Coup_coord[ia][ja]; Ave_coord+=y; if(y<Min_coord)Min_coord=y;
    }
    if(Coup_deformation){
      y=Coup_deformation[ia][ja]; Ave_def+=y; if(y>Max_def)Max_def=y;
    }
  }
  if(npair){Ave_dir/=npair; Ave_coord/=npair; Ave_def/=npair;}

  int numran=200;
  unsigned long iran=randomgenerator();
  if(ini_ran==0){
    InitRandom((RANDOMTYPE)iran); ini_ran=1;
  }
  double Ave_dir_ran=0, Ave_coord_ran=0, Ave_def_ran=0;
  double p_dir_ran=0, p_coord_ran=0, p_def_ran=0;
  for(int kran=0; kran<numran; kran++){
    npair=N_int_inter;
    double Ave_dir_tmp=0, Ave_coord_tmp=0, Ave_def_tmp=0;
    for(int k=0; k<N_int_inter; k++){
      n=RandomFloating()*N_int;
      if(n>=N_int){
	printf("WARNING in RandomFloating\n"); n=N_int-1;
      }
      ia=(atoms+Int_list[n].i1)->res;
      ja=(atoms+Int_list[n].i2)->res;
      if((ia>=Na)||(ja>=Na)){npair--; continue;}
      if(Coup_dir)Ave_dir_tmp+=Coup_dir[ia][ja];
      if(Coup_coord)Ave_coord_tmp+=Coup_coord[ia][ja];
      if(Coup_deformation)Ave_def_tmp+=Coup_deformation[ia][ja];
    }
    Ave_dir_tmp/=npair; Ave_dir_ran+=Ave_dir_tmp;
    if(Ave_dir_tmp>Ave_dir)p_dir_ran++;
    Ave_coord_tmp/=npair; Ave_coord_ran+=Ave_coord_tmp;
    if(Ave_coord_tmp>Ave_coord)p_coord_ran++;
    Ave_def_tmp/=npair; Ave_def_ran+=Ave_def_tmp;
    if(Ave_def_tmp<Ave_def)p_def_ran++;
  }
  
  fprintf(file_out,"# %d interface contacts\n", N_int_inter);
  fprintf(file_out, "Directionality_coupling: "
	  "Ave= %.4g Min= %.4g Random= %.2g p> = %.3g\n",
	  Ave_dir, Min_dir, Ave_dir_ran/numran, p_dir_ran/numran);
  fprintf(file_out, "Coordination_coupling:   "
	  "Ave= %.4g Min= %.4g Random= %.2g p> = %.3g\n",
	  Ave_coord, Min_coord, Ave_coord_ran/numran, p_coord_ran/numran);
  fprintf(file_out, "Deformation_coupling:    "
	  "Ave= %.4g Max= %.4g Random= %.2g p< = %.3g\n",
	  Ave_def, Max_def, Ave_def_ran/numran, p_def_ran/numran);

  double Ave_chain_coord=0, Ave_chain_dir=0, norm=0;
  fprintf(file_out, "# %d pairs of chains: ", mpair);
  for(m=0; m<mpair; m++){
    int ic1= c1[m], ic2= c2[m];
    fprintf(file_out, " %d-%d", ic1, ic2);
    Ave_chain_coord+=Chain_coord[ic1][ic2]*norm_chain[ic1][ic2];
    Ave_chain_dir+=Chain_dir[ic1][ic2]*norm_chain[ic1][ic2];
    norm+=norm_chain[ic1][ic2];
  }
  fprintf(file_out, "\n");
  Ave_chain_coord/=norm; Ave_chain_dir/=norm; 
  
  float Chain_dir_coeff=0, Chain_coord_coeff=0, Ave_coord_coeff=0,
    Ave_dir_coeff=0, bias=0, G_NM_coeff=0, DG_NM_coeff=0, DG_cont_coeff=0;
  if(strcmp(DOF_LABEL,"PHI")==0){ 
    // Param: KAPPA=5.0, SCALE_COORD=2, SCALE_D=2 Err=0.57 bias=0.37
    G_NM_coeff=0.0; DG_NM_coeff=31.3; DG_cont_coeff=0.27;
    Ave_coord_coeff=-14.2; Ave_dir_coeff=-3.61;
    Chain_coord_coeff=-13.3; Chain_dir_coeff=-4.16; bias=0.37;
  }else if(strcmp(DOF_LABEL,"PHIPSI")==0){
    // Param: KAPPA=8.2, SCALE_COORD=2, SCALE_D=2 Err=0.59 bias=0.44
    G_NM_coeff=0; DG_NM_coeff=26.2; DG_cont_coeff=0.325;
    Ave_coord_coeff=-13.8; Ave_dir_coeff=-3.7;
    Chain_coord_coeff=-13.8; Chain_dir_coeff=-4.58; bias=0.44;
  }else if(strcmp(DOF_LABEL,"PHIPSIOME")==0){
    // Param: KAPPA=15, SCALE_COORD=2, SCALE_D=2 Err=0.63 bias=0.50
    G_NM_coeff=0; DG_NM_coeff=21.2; DG_cont_coeff=0.335;
    Ave_coord_coeff=-12.5; Ave_dir_coeff=-3.64;
    Chain_coord_coeff=-13.0; Chain_dir_coeff=-4.66; bias=0.50;
  }else if(strcmp(DOF_LABEL,"PHIPSIOMESCH")==0){
    // Param: KAPPA=14, SCALE_COORD=2, SCALE_D=2 Err=0.60 bias=24.7
    G_NM_coeff=1.08; DG_NM_coeff=0; DG_cont_coeff=0.255;
    Ave_coord_coeff=-10.8; Ave_dir_coeff=-5.22;
    Chain_coord_coeff=-10.5; Chain_dir_coeff=-5.16; bias=24.7;
  }
  double DG_bind=
    G_NM_coeff*G_NM_holo+
    DG_NM_coeff*DG_NM_internal+
    DG_cont_coeff*E_cont_bind+
    Ave_coord_coeff*Ave_coord+
    Ave_dir_coeff*Ave_dir+
    Chain_coord_coeff*Ave_chain_coord+
    Chain_dir_coeff*Ave_chain_dir+
    bias;
  fprintf(file_out,"# Predicted binding free energy: %.4g\n", DG_bind);
  fprintf(file_out,"# Calculated as: %.4g*G_NM + %.4g*DG_NM + %.4g*DE_cont"
	  " + %.4g*Ave_coord_interface + %.4g*Ave_dir_interface"
	  " + %.4g*Ave_coord_CHAIN + %.4g*Ave_dir_chain + %.4g\n",
	  G_NM_coeff, DG_NM_coeff, DG_cont_coeff,
	  Ave_coord_coeff, Ave_dir_coeff, Chain_coord_coeff, Chain_dir_coeff,
	  bias);
  fprintf(file_out, "# Coordination computed as Coord_ij="
	  "exp(-%.3g*<(dij-<dij>)^2)\n", SCALE_COORD);
  fprintf(file_out, "# Interchain contacts weighted with "
	  "Proximity_ij=exp(-d_ij/%.3g)\n", SCALE_D);
  fprintf(file_out, "# G_NM/nres  = %.4g\n", G_NM_holo);
  fprintf(file_out, "# DG_NM_internal/nres = %.4g\n", DG_NM_internal);
  fprintf(file_out, "# DG_NM_rigid/nres = %.4g\n", DG_NM_rigid);
  //fprintf(file_out, "# DG_NM/nres = %.4g\n", DG_NM_rigid+DG_NM_internal);
  fprintf(file_out, "# DE_cont = %.4g\n", E_cont_bind);
  fprintf(file_out, "# Ave_inter_coord = %.4g\n", Ave_coord);
  fprintf(file_out, "# Ave_inter_dir   = %.4g\n", Ave_dir);
  fprintf(file_out, "# Ave_chain_coord = %.4g\n", Ave_chain_coord);
  fprintf(file_out, "# Ave_chain_dir   = %.4g\n", Ave_chain_dir);

  fclose(file_out);
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
movq %r9, -0x40(%rbp)
movq %r8, %r12
movq %rcx, -0xe0(%rbp)
movq %rdx, %rbx
movl %esi, %r14d
movq %rdi, -0x70(%rbp)
movq 0x10(%rbp), %rdx
leaq 0x1728a(%rip), %rsi     # 0x5788c
xorl %r15d, %r15d
leaq -0x1e0(%rbp), %r13
movq %r13, %rdi
xorl %eax, %eax
callq 0x2260
leaq 0x10b33(%rip), %rsi     # 0x51150
movq %r13, %rdi
callq 0x2210
movq %rax, -0x90(%rbp)
leaq 0xb674(%rip), %rdi      # 0x4bca7
movq %r13, %rsi
xorl %eax, %eax
callq 0x20f0
movl 0x50(%rbp), %r8d
movq 0x28(%rbp), %r13
movq %rsp, -0x110(%rbp)
movq -0x40(%rbp), %rcx
leal -0x1(%rcx), %eax
imull %ecx, %eax
pushq $0x2
popq %rcx
cltd
idivl %ecx
leaq 0xf(,%rax,4), %rax
andq $-0x10, %rax
movq %rsp, %r10
subq %rax, %r10
movq %r10, %rsp
movq %rsp, %r11
subq %rax, %r11
movq %r11, %rsp
testl %r14d, %r14d
movl $0x0, %eax
cmovgl %r14d, %eax
movq %rax, -0x98(%rbp)
xorpd %xmm3, %xmm3
movsd 0x10797(%rip), %xmm4    # 0x50e30
xorpd %xmm2, %xmm2
xorl %r9d, %r9d
movapd %xmm4, %xmm5
xorps %xmm0, %xmm0
movsd %xmm0, -0x48(%rbp)
movl %r14d, -0x84(%rbp)
movl %r14d, %eax
cmpq -0x98(%rbp), %r15
je 0x407da
imulq $0xc8, %r15, %rdx
movq -0x70(%rbp), %rdi
movslq (%rdi,%rdx), %rcx
imulq $0x70, %rcx, %rsi
movslq 0x64(%r12,%rsi), %rcx
cmpl %r8d, %ecx
jge 0x40738
movslq 0x4(%rdi,%rdx), %rdx
imulq $0x70, %rdx, %rdi
movl 0x64(%r12,%rdi), %edx
cmpl %r8d, %edx
jge 0x40738
addq %r12, %rsi
addq %r12, %rdi
movl 0x6c(%rsi), %r8d
movl 0x6c(%rdi), %esi
cmpl %esi, %r8d
je 0x40758
movl %esi, %edi
cmovll %r8d, %edi
cmovgl %r8d, %esi
testl %r9d, %r9d
movl $0x0, %r8d
movq %r9, %r14
cmovgl %r9d, %r8d
xorl %r9d, %r9d
cmpq %r9, %r8
je 0x40742
cmpl (%r10,%r9,4), %edi
jne 0x40733
cmpl (%r11,%r9,4), %esi
je 0x4073f
incq %r9
jmp 0x40722
decl %eax
jmp 0x407d2
movl %r9d, %r8d
movq %r14, %r9
cmpl %r9d, %r8d
jne 0x40758
movl %r9d, %r8d
movl %edi, (%r10,%r8,4)
movl %esi, (%r11,%r8,4)
incl %r9d
movl 0x50(%rbp), %r8d
movslq %edx, %rdx
movapd %xmm3, %xmm0
unpckhpd %xmm3, %xmm0            # xmm0 = xmm0[1],xmm3[1]
movq 0x18(%rbp), %rsi
testq %rsi, %rsi
je 0x40787
movq (%rsi,%rcx,8), %rsi
cvtss2sd (%rsi,%rdx,4), %xmm1
addsd %xmm1, %xmm0
ucomisd %xmm1, %xmm5
jbe 0x40787
movapd %xmm1, %xmm5
movq 0x20(%rbp), %rsi
testq %rsi, %rsi
je 0x407a7
movq (%rsi,%rcx,8), %rsi
cvtss2sd (%rsi,%rdx,4), %xmm1
addsd %xmm1, %xmm3
ucomisd %xmm1, %xmm4
jbe 0x407a7
movapd %xmm1, %xmm4
unpcklpd %xmm0, %xmm3            # xmm3 = xmm3[0],xmm0[0]
testq %r13, %r13
je 0x407d2
movq (%r13,%rcx,8), %rcx
cvtss2sd (%rcx,%rdx,4), %xmm0
movsd -0x48(%rbp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, -0x48(%rbp)
ucomisd %xmm2, %xmm0
jbe 0x407d2
movapd %xmm0, %xmm2
incq %r15
jmp 0x406b6
movsd %xmm2, -0xf8(%rbp)
xorl %ecx, %ecx
cvtsi2sd %eax, %xmm1
movapd %xmm1, %xmm2
unpcklpd %xmm1, %xmm2            # xmm2 = xmm2[0],xmm1[0]
movapd %xmm3, %xmm0
divpd %xmm2, %xmm0
testl %eax, %eax
sete %al
movq %r11, -0x118(%rbp)
movq %r9, -0x100(%rbp)
movsd %xmm4, -0xf0(%rbp)
movsd %xmm5, -0xe8(%rbp)
je 0x4082b
movsd -0x48(%rbp), %xmm2
divsd %xmm1, %xmm2
movsd %xmm2, -0x48(%rbp)
movq %r10, -0x108(%rbp)
movb %al, %cl
movd %ecx, %xmm1
pshufd $0x0, %xmm1, %xmm1      # xmm1 = xmm1[0,0,0,0]
pslld $0x1f, %xmm1
psrad $0x1f, %xmm1
andpd %xmm1, %xmm3
movapd %xmm3, -0x60(%rbp)
andnpd %xmm0, %xmm1
movapd %xmm1, -0x70(%rbp)
callq 0x2f672
cmpl $0x0, 0x3522f(%rip)     # 0x75a94
jne 0x40879
movq %rax, %rdi
callq 0x49ebc
movl $0x1, 0x3521b(%rip)     # 0x75a94
movapd -0x60(%rbp), %xmm4
orpd -0x70(%rbp), %xmm4
movq -0xe0(%rbp), %rax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0xb0(%rbp)
decl %eax
movl %eax, -0xa8(%rbp)
xorpd %xmm0, %xmm0
movapd %xmm0, -0xd0(%rbp)
xorpd %xmm0, %xmm0
movsd %xmm0, -0x78(%rbp)
xorpd %xmm3, %xmm3
xorl %eax, %eax
xorpd %xmm0, %xmm0
movapd %xmm0, -0xc0(%rbp)
movapd %xmm4, -0x60(%rbp)
cmpl $0xc8, %eax
movsd %xmm3, -0x40(%rbp)
je 0x40aa7
movl %eax, -0xa0(%rbp)
movq %r13, %r15
xorpd %xmm5, %xmm5
xorpd %xmm0, %xmm0
movsd %xmm0, -0x80(%rbp)
movq -0x98(%rbp), %rax
movl %eax, %r13d
movl -0x84(%rbp), %r14d
subl $0x1, %r13d
jb 0x409ed
movapd %xmm5, -0x70(%rbp)
xorl %eax, %eax
callq 0x49ffd
mulsd -0xb0(%rbp), %xmm0
cvttsd2si %xmm0, %eax
cmpl -0xe0(%rbp), %eax
jl 0x4093d
leaq 0x172d3(%rip), %rdi     # 0x57c05
callq 0x2090
movl -0xa8(%rbp), %eax
cltq
imulq $0xc8, %rax, %rcx
movslq (%rbx,%rcx), %rax
imulq $0x70, %rax, %rax
movslq 0x64(%r12,%rax), %rax
movl 0x50(%rbp), %edx
cmpl %edx, %eax
movapd -0x70(%rbp), %xmm5
jge 0x409db
movslq 0x4(%rbx,%rcx), %rcx
imulq $0x70, %rcx, %rcx
movl 0x64(%r12,%rcx), %ecx
cmpl %edx, %ecx
jge 0x409db
movslq %ecx, %rcx
movapd %xmm5, %xmm0
unpckhpd %xmm5, %xmm0            # xmm0 = xmm0[1],xmm5[1]
movq 0x18(%rbp), %rdx
testq %rdx, %rdx
movapd -0x60(%rbp), %xmm4
movsd -0x40(%rbp), %xmm3
je 0x4099c
movq (%rdx,%rax,8), %rdx
cvtss2sd (%rdx,%rcx,4), %xmm1
addsd %xmm1, %xmm0
movq 0x20(%rbp), %rdx
testq %rdx, %rdx
je 0x409b2
movq (%rdx,%rax,8), %rdx
cvtss2sd (%rdx,%rcx,4), %xmm1
addsd %xmm1, %xmm5
unpcklpd %xmm0, %xmm5            # xmm5 = xmm5[0],xmm0[0]
testq %r15, %r15
je 0x40901
movq (%r15,%rax,8), %rax
cvtss2sd (%rax,%rcx,4), %xmm0
movsd -0x80(%rbp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, -0x80(%rbp)
jmp 0x40901
decl %r14d
movapd -0x60(%rbp), %xmm4
movsd -0x40(%rbp), %xmm3
jmp 0x40901
cvtsi2sd %r14d, %xmm2
movapd %xmm3, %xmm0
addsd 0xa64a(%rip), %xmm0     # 0x4b048
movapd %xmm2, %xmm1
unpcklpd %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0]
divpd %xmm1, %xmm5
movapd %xmm4, %xmm1
cmpltpd %xmm5, %xmm1
pextrw $0x4, %xmm1, %eax
testb $0x1, %al
jne 0x40a20
movapd %xmm3, %xmm0
movapd -0xd0(%rbp), %xmm3
addpd %xmm5, %xmm3
movapd %xmm3, -0xd0(%rbp)
movapd -0xc0(%rbp), %xmm5
movapd %xmm5, %xmm3
addpd 0x16548(%rip), %xmm3    # 0x56f90
movsd -0x80(%rbp), %xmm6
divsd %xmm2, %xmm6
movsd -0x78(%rbp), %xmm2
addsd %xmm6, %xmm2
movsd %xmm2, -0x78(%rbp)
xorl %eax, %eax
movsd -0x48(%rbp), %xmm2
ucomisd %xmm6, %xmm2
seta %al
movd %eax, %xmm2
shufps $0x0, %xmm2, %xmm1      # xmm1 = xmm1[0,0],xmm2[0,0]
pslld $0x1f, %xmm1
psrad $0x1f, %xmm1
andpd %xmm1, %xmm3
andnpd %xmm5, %xmm1
orpd %xmm3, %xmm1
movl -0xa0(%rbp), %eax
incl %eax
movapd %xmm0, %xmm3
movapd %xmm1, -0xc0(%rbp)
movq %r15, %r13
jmp 0x408ca
leaq 0x16def(%rip), %rsi     # 0x5789d
xorl %ebx, %ebx
movq -0x90(%rbp), %r14
movq %r14, %rdi
movl -0x84(%rbp), %edx
xorl %eax, %eax
callq 0x2190
movapd -0xd0(%rbp), %xmm2
unpckhpd %xmm2, %xmm2            # xmm2 = xmm2[1,1]
movsd 0x130fd(%rip), %xmm0    # 0x53bd8
divsd %xmm0, %xmm2
movsd -0x40(%rbp), %xmm3
divsd %xmm0, %xmm3
movaps -0x60(%rbp), %xmm0
movhlps %xmm0, %xmm0            # xmm0 = xmm0[1,1]
leaq 0x16dc0(%rip), %rsi     # 0x578b6
movq %r14, %rdi
movaps %xmm0, -0xe0(%rbp)
movsd -0xe8(%rbp), %xmm1
movb $0x4, %al
callq 0x2190
movsd 0x130c1(%rip), %xmm0    # 0x53bd8
movapd -0xd0(%rbp), %xmm2
divsd %xmm0, %xmm2
movapd -0xc0(%rbp), %xmm3
divsd %xmm0, %xmm3
leaq 0x16dc5(%rip), %rsi     # 0x578fb
movq %r14, %rdi
movaps -0x60(%rbp), %xmm0
movsd -0xf0(%rbp), %xmm1
movb $0x4, %al
callq 0x2190
movsd -0x78(%rbp), %xmm2
movsd 0x1307f(%rip), %xmm0    # 0x53bd8
divsd %xmm0, %xmm2
movapd -0xc0(%rbp), %xmm3
unpckhpd %xmm3, %xmm3            # xmm3 = xmm3[1,1]
divsd %xmm0, %xmm3
leaq 0x16dcc(%rip), %rsi     # 0x57940
movq %r14, %rdi
movsd -0x48(%rbp), %xmm0
movsd -0xf8(%rbp), %xmm1
movb $0x4, %al
callq 0x2190
leaq 0x16df3(%rip), %rsi     # 0x57985
movq %r14, %rdi
movq -0x100(%rbp), %r14
movl %r14d, %edx
xorl %eax, %eax
callq 0x2190
movq %r14, %r8
testl %r8d, %r8d
cmovlel %ebx, %r8d
xorpd %xmm0, %xmm0
movapd %xmm0, -0x70(%rbp)
xorpd %xmm0, %xmm0
movsd %xmm0, -0x40(%rbp)
xorl %r14d, %r14d
movq -0x108(%rbp), %r13
cmpq %r14, %r8
movq -0x118(%rbp), %rax
je 0x40c5c
movslq (%r13,%r14,4), %r15
movslq (%rax,%r14,4), %r12
movq -0x90(%rbp), %rdi
leaq 0x16da9(%rip), %rsi     # 0x5799c
movl %r15d, %edx
movl %r12d, %ecx
xorl %eax, %eax
movq %r8, %rbx
callq 0x2190
movq %rbx, %r8
movq 0x38(%rbp), %rax
movq (%rax,%r15,8), %rax
movq 0x48(%rbp), %rcx
movq (%rcx,%r15,8), %rcx
movsd (%rcx,%r12,8), %xmm0
movq 0x30(%rbp), %rcx
movq (%rcx,%r15,8), %rcx
movsd (%rax,%r12,8), %xmm1
movhpd (%rcx,%r12,8), %xmm1    # xmm1 = xmm1[0],mem[0]
movsd -0x40(%rbp), %xmm2
addsd %xmm0, %xmm2
movsd %xmm2, -0x40(%rbp)
unpcklpd %xmm0, %xmm0            # xmm0 = xmm0[0,0]
mulpd %xmm1, %xmm0
movapd -0x70(%rbp), %xmm1
addpd %xmm0, %xmm1
movapd %xmm1, -0x70(%rbp)
incq %r14
jmp 0x40bcc
pushq $0xa
popq %rdi
movq -0x90(%rbp), %rsi
callq 0x2140
leaq 0x234de(%rip), %rdi     # 0x64150
leaq 0xdd14(%rip), %rsi      # 0x4e98d
callq 0x2180
xorpd %xmm3, %xmm3
testl %eax, %eax
je 0x40cfe
leaq 0x234c3(%rip), %rdi     # 0x64150
leaq 0x16d0f(%rip), %rsi     # 0x579a3
callq 0x2180
testl %eax, %eax
je 0x40d4a
leaq 0x234a8(%rip), %rdi     # 0x64150
leaq 0x16cfb(%rip), %rsi     # 0x579aa
callq 0x2180
testl %eax, %eax
je 0x40d85
leaq 0x2348d(%rip), %rdi     # 0x64150
leaq 0x16cea(%rip), %rsi     # 0x579b4
callq 0x2180
xorpd %xmm6, %xmm6
testl %eax, %eax
je 0x4100d
xorpd %xmm11, %xmm11
xorpd %xmm10, %xmm10
xorpd %xmm12, %xmm12
xorpd %xmm9, %xmm9
xorpd %xmm7, %xmm7
xorpd %xmm3, %xmm3
xorpd %xmm8, %xmm8
jmp 0x40d3b
movsd 0x16299(%rip), %xmm8    # 0x56fa0
movsd 0x16299(%rip), %xmm6    # 0x56fa8
movsd 0x16299(%rip), %xmm7    # 0x56fb0
movsd 0x16298(%rip), %xmm9    # 0x56fb8
movsd 0x16297(%rip), %xmm12   # 0x56fc0
movsd 0x16296(%rip), %xmm10   # 0x56fc8
movsd 0x16295(%rip), %xmm11   # 0x56fd0
movapd -0x60(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
jmp 0x40dd0
movsd 0x16285(%rip), %xmm8    # 0x56fd8
movsd 0x16285(%rip), %xmm6    # 0x56fe0
movsd 0x16285(%rip), %xmm7    # 0x56fe8
movsd 0x16284(%rip), %xmm9    # 0x56ff0
movsd 0x16283(%rip), %xmm10   # 0x56ff8
movsd 0x16282(%rip), %xmm11   # 0x57000
movapd %xmm10, %xmm12
jmp 0x40dc2
movsd 0x1627a(%rip), %xmm8    # 0x57008
movsd 0x1627a(%rip), %xmm6    # 0x57010
movsd 0xa2d2(%rip), %xmm7     # 0x4b070
movsd 0x16271(%rip), %xmm9    # 0x57018
movsd 0x16270(%rip), %xmm12   # 0x57020
movsd 0x1626f(%rip), %xmm10   # 0x57028
movsd 0x1626e(%rip), %xmm11   # 0x57030
movapd -0x60(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
xorpd %xmm3, %xmm3
movsd %xmm3, -0xa0(%rbp)
movsd %xmm12, -0x78(%rbp)
movsd %xmm6, -0x98(%rbp)
movsd %xmm8, -0xc0(%rbp)
movsd %xmm9, -0xd0(%rbp)
movsd %xmm10, -0xa8(%rbp)
movsd %xmm11, -0x80(%rbp)
movsd %xmm7, -0xb0(%rbp)
movapd -0x70(%rbp), %xmm5
movapd %xmm5, %xmm1
unpckhpd %xmm5, %xmm1            # xmm1 = xmm1[1],xmm5[1]
divsd %xmm0, %xmm1
movapd %xmm1, %xmm4
movapd %xmm1, -0x40(%rbp)
divsd %xmm0, %xmm5
movapd %xmm5, -0x70(%rbp)
leaq 0x2316f(%rip), %r15     # 0x63fa8
leaq 0x23170(%rip), %r14     # 0x63fb0
movsd (%r14), %xmm0
mulsd %xmm6, %xmm0
movsd (%r15), %xmm1
mulsd %xmm3, %xmm1
addsd %xmm0, %xmm1
leaq 0x23163(%rip), %rbx     # 0x63fc0
movsd (%rbx), %xmm0
mulsd %xmm8, %xmm0
addsd %xmm1, %xmm0
movapd %xmm2, %xmm1
mulsd %xmm12, %xmm1
addsd %xmm0, %xmm1
movapd -0xe0(%rbp), %xmm0
mulsd %xmm9, %xmm0
addsd %xmm1, %xmm0
movapd %xmm10, %xmm1
mulsd %xmm5, %xmm1
addsd %xmm0, %xmm1
movapd %xmm11, %xmm0
mulsd %xmm4, %xmm0
addsd %xmm1, %xmm0
addsd %xmm7, %xmm0
leaq 0x16b14(%rip), %rsi     # 0x579c1
movq -0x90(%rbp), %r12
movq %r12, %rdi
movb $0x1, %al
callq 0x2190
leaq 0x16b23(%rip), %rsi     # 0x579e8
movq %r12, %rdi
movsd -0xa0(%rbp), %xmm0
movsd -0x98(%rbp), %xmm1
movsd -0xc0(%rbp), %xmm2
movsd -0x78(%rbp), %xmm3
movsd -0xd0(%rbp), %xmm4
movsd -0xa8(%rbp), %xmm5
movsd -0x80(%rbp), %xmm6
movsd -0xb0(%rbp), %xmm7
movb $0x8, %al
callq 0x2190
movsd 0x2305f(%rip), %xmm0    # 0x63f70
leaq 0x16b6f(%rip), %rsi     # 0x57a87
movq %r12, %rdi
movb $0x1, %al
callq 0x2190
movsd 0x2304e(%rip), %xmm0    # 0x63f78
leaq 0x16b95(%rip), %rsi     # 0x57ac6
movq %r12, %rdi
movb $0x1, %al
callq 0x2190
movsd (%r15), %xmm0
leaq 0x16bc1(%rip), %rsi     # 0x57b08
movq %r12, %rdi
movb $0x1, %al
callq 0x2190
movsd (%r14), %xmm0
leaq 0x16bc0(%rip), %rsi     # 0x57b1d
movq %r12, %rdi
movb $0x1, %al
callq 0x2190
leaq 0x2304a(%rip), %rax     # 0x63fb8
movsd (%rax), %xmm0
leaq 0x16bc2(%rip), %rsi     # 0x57b3b
movq %r12, %rdi
movb $0x1, %al
callq 0x2190
movsd (%rbx), %xmm0
leaq 0x16bc8(%rip), %rsi     # 0x57b56
movq %r12, %rdi
movb $0x1, %al
callq 0x2190
leaq 0x16bc9(%rip), %rsi     # 0x57b68
movq %r12, %rdi
movaps -0x60(%rbp), %xmm0
movb $0x1, %al
callq 0x2190
leaq 0x16bce(%rip), %rsi     # 0x57b82
movq %r12, %rdi
movaps -0xe0(%rbp), %xmm0
movb $0x1, %al
callq 0x2190
leaq 0x16bd0(%rip), %rsi     # 0x57b9c
movq %r12, %rdi
movaps -0x70(%rbp), %xmm0
movb $0x1, %al
callq 0x2190
leaq 0x16bd5(%rip), %rsi     # 0x57bb6
movq %r12, %rdi
movaps -0x40(%rbp), %xmm0
movb $0x1, %al
callq 0x2190
movq %r12, %rdi
callq 0x20c0
movq -0x110(%rbp), %rsp
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movsd 0x16022(%rip), %xmm8    # 0x57038
movsd 0x16022(%rip), %xmm3    # 0x57040
movsd 0x16022(%rip), %xmm7    # 0x57048
movsd 0x16021(%rip), %xmm9    # 0x57050
movsd 0x16020(%rip), %xmm12   # 0x57058
movsd 0x1601f(%rip), %xmm10   # 0x57060
movsd 0x1601e(%rip), %xmm11   # 0x57068
jmp 0x40d3b