// File: /workspace/github_c_makefile_star2_O0/ugobas[P]tnm/nma.c
// Function: Compute_Hessian_TNM
void Compute_Hessian_TNM(double **Hessian,  // Output
			 double **T_sqrt, float **T_sqrt_inv,
			 struct interaction *Int_list, int N_int,
			 atom *atoms, int N_atoms, struct axe *axes,
			 int nmain, int N_axes, int N_modes,
			 struct chain *chains, int Nchain, int kinetic,
			 float K_OMEGA, float K_PSI,
			 float K_PHI, float K_CHI,
			 float K_BA, float K_BL)
{


  // Compute transformed jacobian
  // Jtilde_ia = sum_b J_ib T_sqrt_inv_ab = eta_ia X r_i - tau_ia
  // eta_ak = sum_b chi_kb v_b T_sqrt_inv_ab
  // tau_ak = sum_b chi_kb shift_b T_sqrt_inv_ab
  //
  printf("Computing torsional Hessian matrix\n");

  int i, j, k, l, n, a;
  for(i=0; i<N_axes; i++)for(j=0; j<N_axes; j++)Hessian[i][j]=0;

  double **eta_iaj[N_axes], **tau_iaj[N_axes];
  for(i=0; i<N_axes; i++){
    eta_iaj[i]=Allocate_mat2_d(N_modes, 3);
    tau_iaj[i]=Allocate_mat2_d(N_modes, 3);
  }

  if(kinetic==0){
    for(a=0; a<N_axes; a++){
      struct axe *a_axe=axes+a;
      for(i=a; i<N_modes; i++){
	double *eta=eta_iaj[i][a], *tau=tau_iaj[i][a];
	for(j=0; j<3; j++){
	  eta[j]=a_axe->rot[j];
	  tau[j]=a_axe->shift[j];
	}
      }
    }

  }else if(T_sqrt_inv){

    for(i=0; i<N_axes; i++){
      struct axe *i_axe=axes+i;
      // eta_ia = sum_{ini_chain<=b<=i} v_b T_sqrt_inv_ab
      for(a=0; a<N_modes; a++){
	double *eta=eta_iaj[i][a], *tau=tau_iaj[i][a];
	if(i_axe->previous >=0){
	  double *eta_prev=eta_iaj[i_axe->previous][a];
	  double *tau_prev=tau_iaj[i_axe->previous][a];
	  for(j=0; j<3; j++){
	    eta[j]=eta_prev[j]; tau[j]=tau_prev[j];
	  }
	}else{
	  for(j=0; j<3; j++){eta[j]=0; tau[j]=0;}
	}
	for(j=0; j<3; j++){
	  eta[j]+=(i_axe->rot[j])*T_sqrt_inv[a][i];
	  tau[j]+=(i_axe->shift[j])*T_sqrt_inv[a][i];
	}
      }
    }
  }else{   // Cholevsky decomposition has been successfully performed
    // Solve L eta_ia = v(i) by forward substitution
    // Note that v_b(i) =0 for b>rotable_i
    printf("Computing Hessian with Cholevsky decomposition\n");
    double X[N_axes], Y[N_axes];
    int main1=-1, main2=-1, side1=-1, side2=-1;
    for(i=0; i<N_axes; i++){

      for(l=0; l<N_axes; l++)Y[l]=0;
      Axes_path(&main1, &main2, &side1, &side2, axes, i, nmain, N_axes);
      double **eta=eta_iaj[i], **tau=tau_iaj[i];

      for(j=0; j<3; j++){
	for(l=main1; l<=main2; l++)Y[l]=axes[l].rot[j];
	if(side1>=0)for(l=side1; l<=side2; l++)Y[l]=axes[l].rot[j];
	Forward_substitution(X, T_sqrt, Y, N_axes);
	for(a=0; a<N_axes; a++)eta[a][j]=X[a];
	//
	for(l=main1; l<=main2; l++)Y[l]=axes[l].shift[j];
	if(side1>=0)for(l=side1; l<=side2; l++)Y[l]=axes[l].shift[j];
	Forward_substitution(X, T_sqrt, Y, N_axes);
	for(a=0; a<N_axes; a++)tau[a][j]=X[a];
      }
    }
  }

  // Compute Hessian in double precision (only upper diagonal)

  double **zero=Allocate_mat2_d(N_modes, 3);
  int N_cont[Nchain], n_inter=0;
  for(i=0; i<Nchain; i++)N_cont[i]=0;

  for(n=0; n<N_int; n++){
    atom *atom1=atoms+Int_list[n].i1;
    atom *atom2=atoms+Int_list[n].i2;

    if(atom1->chain==atom2->chain){
      N_cont[atom1->chain]++; // Intrachain contact
    }else{
      n_inter++;  // Interchain contact
    }

    // Determine set of rotable axes
    int ilast;
    double **eta_1, **tau_1, **eta_2, **tau_2;
    double eta[3], tau[3];
    if(atom1->last_dof_side >= 0){
      ilast=atom1->last_dof_side;
    }else{
      ilast=atom1->last_dof_main;
    }
    if(ilast>=0){
      eta_1=eta_iaj[ilast];
      tau_1=tau_iaj[ilast];
    }else{
      eta_1=zero; tau_1=zero;
    }

    if(atom2->last_dof_side >= 0){
      ilast=atom2->last_dof_side;
    }else{
      ilast=atom2->last_dof_main;
    }
    if(ilast>=0){
      eta_2=eta_iaj[ilast];
      tau_2=tau_iaj[ilast];
    }else{
      eta_2=zero; tau_2=zero;
    }

    // Compute r_ij/|r_ij|
    double r21[3], cr21[3], r1[3], r2[3];
    for(j=0; j<3; j++){
      r1[j]=atom1->r[j];
      r2[j]=atom2->r[j];
      r21[j]=r2[j]-r1[j];
    }
    Vector_product_d(cr21, r2, r1); //cr21= r2 X r1

    double h=Int_list[n].sec_der;
    h/=(r21[0]*r21[0]+r21[1]*r21[1]+r21[2]*r21[2]);

    double dk[N_modes];
    for(k=0; k< N_modes; k++){
      for(j=0; j<3; j++){
	eta[j]=eta_2[k][j]-eta_1[k][j];
	tau[j]=tau_2[k][j]-tau_1[k][j];    // For kinetic=0 eta,tau=0, wrong!
      }
      dk[k]=Scalar_product_3_d(cr21, eta)- // 03/2023: OK
	Scalar_product_3_d(r21, tau);
      double Hk=h*dk[k];
      for(l=0; l<=k; l++){
	Hessian[l][k] += Hk*dk[l];
      }
    }
  }

  for(i=0; i<Nchain; i++)
    printf("chain %d (%c): %3d contacts\n", i, chains[i].label, N_cont[i]);
  if(Nchain>1)printf("%d interchain contacts\n", n_inter);

  if((K_OMEGA==0)&&(K_PHI==0)&&(K_PSI==0)&&(K_CHI==0)&&(K_BA==0)&&(K_BL==0))
    goto upper_diagonal;

  // Hessian of the torsional potential K(a)*(theta_a-theta0_a)^2
  printf("Computing torsional potential\n");

  if(kinetic==0){
    struct axe *ax=axes;
    for(k=0; k<N_axes; k++){
      if(ax->type=='f'){Hessian[k][k]+=K_PHI;}
      else if(ax->type=='p'){Hessian[k][k]+=K_PSI;}
      else if(ax->type=='l'){Hessian[k][k]+=K_BL;}
      else if(ax->type=='a'){Hessian[k][k]+=K_BA;}
      else if(ax->type=='t'){Hessian[k][k]+=K_PHI;}
      else if(ax->type=='o'){Hessian[k][k]+=K_OMEGA;}
      else if(ax->type=='s'){Hessian[k][k]+=K_CHI;}
      ax++;
    }

  }else if(T_sqrt_inv){
    for(k=0; k<N_modes; k++){
      float *tk=T_sqrt_inv[k];
      for(l=0; l<=k; l++){
	float *tl=T_sqrt_inv[l];
	double H_Phi=0, H_Psi=0, H_Ome=0, H_Chi=0, H_BA=0, H_BL=0, H_BT=0;
	struct axe *ax=axes;
	for(i=0; i<N_axes; i++){
	  if(ax->type=='f'){H_Phi+=tk[i]*tl[i];}
	  else if(ax->type=='p'){H_Psi+=tk[i]*tl[i];}
	  else if(ax->type=='l'){H_BL+=tk[i]*tl[i];}
	  else if(ax->type=='a'){H_BA+=tk[i]*tl[i];}
	  else if(ax->type=='t'){H_BT+=tk[i]*tl[i];}
	  else if(ax->type=='o'){H_Ome+=tk[i]*tl[i];}
	  else if(ax->type=='s'){H_Chi+=tk[i]*tl[i];}
	  ax++;
	}
	double HH=K_PHI*H_Phi;
	if(H_Psi)HH+=K_PSI*H_Psi;
	if(H_Ome)HH+=K_OMEGA*H_Ome;
	if(H_Chi)HH+=K_CHI*H_Chi;
	if(H_BL)HH+=K_BL*H_BL;
	if(H_BA)HH+=K_BA*H_BA;
	if(H_BT)HH+=K_PHI*H_BT;
	Hessian[l][k]+=HH;
      }
    }
  }else{ // Cholevsky decomposition
    double X[N_axes], Y[N_axes], *Y2[N_axes];
    for(i=0; i<N_axes; i++){
      Y[i]=0; Y2[i]=malloc(N_axes*sizeof(double));
      for(k=0; k<N_axes; k++)Y2[i][k]=0;
    }
    for(i=0; i<N_axes; i++){
      char type=axes[i].type;
      if(type=='f'){Y[i]=K_PHI;}
      else if(type=='p'){Y[i]=K_PSI;}
      else if(type=='l'){Y[i]=K_BL;}
      else if(type=='a'){Y[i]=K_BA;}
      else if(type=='t'){Y[i]=K_PHI;}
      else if(type=='o'){Y[i]=K_OMEGA;}
      else if(type=='s'){Y[i]=K_CHI;}
      if(Y[i]){
	Forward_substitution(X, T_sqrt, Y, N_axes);
	for(k=0; k<N_axes; k++)Y2[k][i]=X[k];
	Y[i]=0;
      }
    }
    for(k=0; k<N_axes; k++){
      Forward_substitution(X, T_sqrt, Y2[k], N_axes);
      for(l=0; l<=k; l++)Hessian[l][k]+=X[l];
    }
    for(i=0; i<N_axes; i++)free(Y2[i]);
  }

  // Upper diagonal; store to float
 upper_diagonal:
  for(k=0; k<N_modes; k++){
    for(l=0; l<k; l++){
      Hessian[k][l]=Hessian[l][k];
    }
  }

  if(DBG_NMA){
    // Print
    if(kinetic==0){printf("Kinetic energy not considered\n");}
    if(T_sqrt_inv==NULL){printf("Cholevsky decomposition\n");}
    else{printf("Diagonalization of kinetic energy\n");}
    printf("V''(r^PDB): ");
    for(n=0; n<N_int; n++)
      printf(" %.2g:%.2g", Int_list[n].r0,Int_list[n].sec_der);
    //printf(" %d-%d",Int_list[n].i1, Int_list[n].i2);
    printf("\n");
    int ini=N_modes-20;
    printf("###  Kinetic energy matrix:\n");
    for(k=ini; k<N_modes; k++){
      if(T_sqrt_inv==0)
	for(j=k+1; j<N_axes; j++)T_sqrt[k][j]=0;
      for(l=ini; l<=k; l++){
	double sum=0;
	for(j=0; j<N_axes; j++)
	  sum+=T_sqrt[k][j]*T_sqrt[l][j];
	printf(" %.4g", sum);
      }
      printf("\n");
    }
    if(T_sqrt_inv){
      printf("###  T_sqrt T_sqrt_inv:\n");
      for(k=ini; k<N_modes; k++){
	for(l=ini; l<=k; l++){
	  double sum=0;
	  for(j=0; j<N_axes; j++)
	    sum+=T_sqrt_inv[k][j]*T_sqrt[j][l];
	  printf(" %.4f", sum);
	}
	printf("\n");
      }
    }
    printf("###  |eta_ai|\n");
    for(k=ini; k<N_modes; k++){
      for(i=ini; i<N_modes; i++){
	double sum=0, *eta=eta_iaj[i][k];
	for(j=0; j<3; j++)sum+=eta[j]*eta[j];
	printf("%.2g ",sqrt(sum));
      }
      printf("\n");
    }
    printf("### |tau_ai|   (shift)\n");
    for(k=ini; k<N_modes; k++){
      for(i=ini; i<N_modes; i++){
	double sum=0, *tau=tau_iaj[i][k];
	for(j=0; j<3; j++)sum+=tau[j]*tau[j];
	printf("%.2g ",sqrt(sum));
      }
      printf("  %.3g", sqrt(Scalar_product_3_d(axes[k].shift, axes[k].shift)));
      printf("\n");
    }
    printf("###  Potential energy matrix H~:\n");
    for(k=ini; k<N_modes; k++){
      for(l=ini; l<=k; l++)printf(" %.4g", Hessian[k][l]);
      printf("\n");
    }
    printf("Atoms last dof (mainchain): ");
    for(i=0; i<100; i++)printf("%d ", atoms[i].last_dof_main);
    printf("\n");
    exit(8);
  }

  // Cleaning
  Empty_matrix_d(zero, N_modes);
  for(i=0; i<N_axes; i++){
    Empty_matrix_d(eta_iaj[i], N_modes);
    Empty_matrix_d(tau_iaj[i], N_modes);
  }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x330, %rsp            # imm = 0x330
movl 0x48(%rbp), %eax
movl 0x40(%rbp), %eax
movq 0x38(%rbp), %rax
movl 0x30(%rbp), %eax
movl 0x28(%rbp), %eax
movl 0x20(%rbp), %eax
movq 0x18(%rbp), %rax
movl 0x10(%rbp), %eax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movq %r9, -0x30(%rbp)
movss %xmm0, -0x34(%rbp)
movss %xmm1, -0x38(%rbp)
movss %xmm2, -0x3c(%rbp)
movss %xmm3, -0x40(%rbp)
movss %xmm4, -0x44(%rbp)
movss %xmm5, -0x48(%rbp)
leaq 0x4ae86(%rip), %rdi     # 0x7dd68
movb $0x0, %al
callq 0x10d0
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x32f37
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x32f2a
movq -0x8(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x50(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x32eff
jmp 0x32f2c
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x32ef0
movl 0x28(%rbp), %eax
movq %rsp, %rcx
movq %rcx, -0x68(%rbp)
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x2e8(%rbp)
movq %rcx, %rsp
movq %rax, -0x70(%rbp)
movl 0x28(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x2e0(%rbp)
movq %rcx, %rsp
movq %rax, -0x78(%rbp)
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x32fdc
movl 0x30(%rbp), %edi
movl $0x3, %esi
callq 0x694a0
movq %rax, %rdx
movq -0x2e8(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl 0x30(%rbp), %edi
movl $0x3, %esi
callq 0x694a0
movq %rax, %rdx
movq -0x2e0(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x32f8b
cmpl $0x0, 0x48(%rbp)
jne 0x330d6
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x330d1
movq 0x18(%rbp), %rax
movslq -0x60(%rbp), %rcx
imulq $0x158, %rcx, %rcx      # imm = 0x158
addq %rcx, %rax
movq %rax, -0x80(%rbp)
movl -0x60(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x330c1
movq -0x2e0(%rbp), %rax
movq -0x2e8(%rbp), %rcx
movslq -0x4c(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x60(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq %rcx, -0x88(%rbp)
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x90(%rbp)
movl $0x0, -0x50(%rbp)
cmpl $0x3, -0x50(%rbp)
jge 0x330b1
movq -0x80(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd 0x48(%rax,%rcx,8), %xmm0
movq -0x88(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0x80(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd 0x60(%rax,%rcx,8), %xmm0
movq -0x90(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x33064
jmp 0x330b3
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x33015
jmp 0x330c3
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x32fed
jmp 0x33692
cmpq $0x0, -0x18(%rbp)
je 0x33323
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x3331e
movq 0x18(%rbp), %rax
movslq -0x4c(%rbp), %rcx
imulq $0x158, %rcx, %rcx      # imm = 0x158
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x3330e
movq -0x2e0(%rbp), %rax
movq -0x2e8(%rbp), %rcx
movslq -0x4c(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x60(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq %rcx, -0xa0(%rbp)
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xa8(%rbp)
movq -0x98(%rbp), %rax
cmpl $0x0, 0x2c(%rax)
jl 0x33211
movq -0x2e0(%rbp), %rax
movq -0x2e8(%rbp), %rcx
movq -0x98(%rbp), %rdx
movslq 0x2c(%rdx), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x60(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq %rcx, -0xb0(%rbp)
movq -0x98(%rbp), %rcx
movslq 0x2c(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xb8(%rbp)
movl $0x0, -0x50(%rbp)
cmpl $0x3, -0x50(%rbp)
jge 0x3320f
movq -0xb0(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0xa0(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movq -0xb8(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0xa8(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x331be
jmp 0x33251
movl $0x0, -0x50(%rbp)
cmpl $0x3, -0x50(%rbp)
jge 0x3324f
movq -0xa0(%rbp), %rax
movslq -0x50(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0xa8(%rbp), %rax
movslq -0x50(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x33218
jmp 0x33251
movl $0x0, -0x50(%rbp)
cmpl $0x3, -0x50(%rbp)
jge 0x332fe
movq -0x98(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd 0x48(%rax,%rcx,8), %xmm0
movq -0x18(%rbp), %rax
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x4c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
cvtss2sd %xmm1, %xmm2
movq -0xa0(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movq -0x98(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd 0x60(%rax,%rcx,8), %xmm0
movq -0x18(%rbp), %rax
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x4c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm1
cvtss2sd %xmm1, %xmm2
movq -0xa8(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x33258
jmp 0x33300
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x33114
jmp 0x33310
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x330e8
jmp 0x33690
leaq 0x4aa62(%rip), %rdi     # 0x7dd8c
xorl %eax, %eax
callq 0x10d0
movl 0x28(%rbp), %eax
movq %rsp, %rcx
movq %rcx, -0xc0(%rbp)
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x2f8(%rbp)
movq %rcx, %rsp
movq %rax, -0xc8(%rbp)
movl 0x28(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x2f0(%rbp)
movq %rcx, %rsp
movq %rax, -0xd0(%rbp)
movl $0xffffffff, -0xd4(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0xd8(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0xdc(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0xe0(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x33686
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x333ef
movq -0x2f0(%rbp), %rax
movslq -0x58(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x333c9
movq 0x18(%rbp), %r8
movl -0x4c(%rbp), %r9d
movl 0x20(%rbp), %r10d
movl 0x28(%rbp), %eax
leaq -0xd4(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
leaq -0xdc(%rbp), %rdx
leaq -0xe0(%rbp), %rcx
subq $0x10, %rsp
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x34d00
movq -0x2e8(%rbp), %rcx
movq -0x2e0(%rbp), %rax
addq $0x10, %rsp
movslq -0x4c(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq %rcx, -0xe8(%rbp)
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xf0(%rbp)
movl $0x0, -0x50(%rbp)
cmpl $0x3, -0x50(%rbp)
jge 0x33676
movl -0xd4(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0xd8(%rbp), %eax
jg 0x334b7
movq -0x2f0(%rbp), %rax
movq 0x18(%rbp), %rcx
movslq -0x58(%rbp), %rdx
imulq $0x158, %rdx, %rdx      # imm = 0x158
addq %rdx, %rcx
movslq -0x50(%rbp), %rdx
movsd 0x48(%rcx,%rdx,8), %xmm0
movslq -0x58(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x33475
cmpl $0x0, -0xdc(%rbp)
jl 0x3350d
movl -0xdc(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0xe0(%rbp), %eax
jg 0x3350b
movq -0x2f0(%rbp), %rax
movq 0x18(%rbp), %rcx
movslq -0x58(%rbp), %rdx
imulq $0x158, %rdx, %rdx      # imm = 0x158
addq %rdx, %rcx
movslq -0x50(%rbp), %rdx
movsd 0x48(%rcx,%rdx,8), %xmm0
movslq -0x58(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x334c9
jmp 0x3350d
movq -0x2f0(%rbp), %rdx
movq -0x2f8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl 0x28(%rbp), %ecx
callq 0x697c0
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x33569
movq -0x2f8(%rbp), %rax
movslq -0x60(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0xe8(%rbp), %rax
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x50(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x3352e
movl -0xd4(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0xd8(%rbp), %eax
jg 0x335b4
movq -0x2f0(%rbp), %rax
movq 0x18(%rbp), %rcx
movslq -0x58(%rbp), %rdx
imulq $0x158, %rdx, %rdx      # imm = 0x158
addq %rdx, %rcx
movslq -0x50(%rbp), %rdx
movsd 0x60(%rcx,%rdx,8), %xmm0
movslq -0x58(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x33572
cmpl $0x0, -0xdc(%rbp)
jl 0x3360a
movl -0xdc(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0xe0(%rbp), %eax
jg 0x33608
movq -0x2f0(%rbp), %rax
movq 0x18(%rbp), %rcx
movslq -0x58(%rbp), %rdx
imulq $0x158, %rdx, %rdx      # imm = 0x158
addq %rdx, %rcx
movslq -0x50(%rbp), %rdx
movsd 0x60(%rcx,%rdx,8), %xmm0
movslq -0x58(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x335c6
jmp 0x3360a
movq -0x2f0(%rbp), %rdx
movq -0x2f8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl 0x28(%rbp), %ecx
callq 0x697c0
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x33666
movq -0x2f8(%rbp), %rax
movslq -0x60(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0xf0(%rbp), %rax
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x50(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x3362b
jmp 0x33668
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x33462
jmp 0x33678
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x333b6
movq -0xc0(%rbp), %rax
movq %rax, %rsp
jmp 0x33692
movl 0x30(%rbp), %edi
movl $0x3, %esi
callq 0x694a0
movq %rax, -0xf8(%rbp)
movl 0x40(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x300(%rbp)
movq %rcx, %rsp
movq %rax, -0x100(%rbp)
movl $0x0, -0x104(%rbp)
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x40(%rbp), %eax
jge 0x33702
movq -0x300(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movl $0x0, (%rax,%rcx,4)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x336dd
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x33b64
movq -0x30(%rbp), %rax
movq -0x20(%rbp), %rcx
movslq -0x5c(%rbp), %rdx
imulq $0xc8, %rdx, %rdx
addq %rdx, %rcx
movslq (%rcx), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x110(%rbp)
movq -0x30(%rbp), %rax
movq -0x20(%rbp), %rcx
movslq -0x5c(%rbp), %rdx
imulq $0xc8, %rdx, %rdx
addq %rdx, %rcx
movslq 0x4(%rcx), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x118(%rbp)
movq -0x110(%rbp), %rax
movl 0x6c(%rax), %eax
movq -0x118(%rbp), %rcx
cmpl 0x6c(%rcx), %eax
jne 0x33797
movq -0x300(%rbp), %rax
movq -0x110(%rbp), %rcx
movslq 0x6c(%rcx), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
jmp 0x337a6
movl -0x104(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x104(%rbp)
movq -0x110(%rbp), %rax
cmpl $0x0, 0x5c(%rax)
jl 0x337c5
movq -0x110(%rbp), %rax
movl 0x5c(%rax), %eax
movl %eax, -0x11c(%rbp)
jmp 0x337d5
movq -0x110(%rbp), %rax
movl 0x58(%rax), %eax
movl %eax, -0x11c(%rbp)
cmpl $0x0, -0x11c(%rbp)
jl 0x33812
movq -0x2e0(%rbp), %rax
movq -0x2e8(%rbp), %rcx
movslq -0x11c(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq %rcx, -0x128(%rbp)
movslq -0x11c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x130(%rbp)
jmp 0x3382e
movq -0xf8(%rbp), %rax
movq %rax, -0x128(%rbp)
movq -0xf8(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x118(%rbp), %rax
cmpl $0x0, 0x5c(%rax)
jl 0x3384d
movq -0x118(%rbp), %rax
movl 0x5c(%rax), %eax
movl %eax, -0x11c(%rbp)
jmp 0x3385d
movq -0x118(%rbp), %rax
movl 0x58(%rax), %eax
movl %eax, -0x11c(%rbp)
cmpl $0x0, -0x11c(%rbp)
jl 0x3389a
movq -0x2e0(%rbp), %rax
movq -0x2e8(%rbp), %rcx
movslq -0x11c(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movq %rcx, -0x138(%rbp)
movslq -0x11c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x140(%rbp)
jmp 0x338b6
movq -0xf8(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0xf8(%rbp), %rax
movq %rax, -0x140(%rbp)
movl $0x0, -0x50(%rbp)
cmpl $0x3, -0x50(%rbp)
jge 0x3392f
movq -0x110(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movslq -0x50(%rbp), %rax
movsd %xmm0, -0x1e0(%rbp,%rax,8)
movq -0x118(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movslq -0x50(%rbp), %rax
movsd %xmm0, -0x200(%rbp,%rax,8)
movslq -0x50(%rbp), %rax
movsd -0x200(%rbp,%rax,8), %xmm0
movslq -0x50(%rbp), %rax
subsd -0x1e0(%rbp,%rax,8), %xmm0
movslq -0x50(%rbp), %rax
movsd %xmm0, -0x1a0(%rbp,%rax,8)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x338bd
leaq -0x1c0(%rbp), %rdi
leaq -0x200(%rbp), %rsi
leaq -0x1e0(%rbp), %rdx
callq 0x14aa0
movq -0x20(%rbp), %rax
movslq -0x5c(%rbp), %rcx
imulq $0xc8, %rcx, %rcx
movsd 0x28(%rax,%rcx), %xmm0
movsd %xmm0, -0x208(%rbp)
movsd -0x1a0(%rbp), %xmm0
movsd -0x198(%rbp), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movsd -0x190(%rbp), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm0, %xmm1
movsd -0x208(%rbp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, -0x208(%rbp)
movl 0x30(%rbp), %eax
movq %rsp, %rcx
movq %rcx, -0x210(%rbp)
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x308(%rbp)
movq %rcx, %rsp
movq %rax, -0x218(%rbp)
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x33b4c
movl $0x0, -0x50(%rbp)
cmpl $0x3, -0x50(%rbp)
jge 0x33a82
movq -0x138(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x128(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x50(%rbp), %rcx
subsd (%rax,%rcx,8), %xmm0
movslq -0x50(%rbp), %rax
movsd %xmm0, -0x160(%rbp,%rax,8)
movq -0x140(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x130(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x50(%rbp), %rcx
subsd (%rax,%rcx,8), %xmm0
movslq -0x50(%rbp), %rax
movsd %xmm0, -0x180(%rbp,%rax,8)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x339f0
leaq -0x1c0(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x14c00
movsd %xmm0, -0x310(%rbp)
leaq -0x1a0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x14c00
movq -0x308(%rbp), %rax
movaps %xmm0, %xmm1
movsd -0x310(%rbp), %xmm0
subsd %xmm1, %xmm0
movslq -0x54(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd -0x208(%rbp), %xmm0
movslq -0x54(%rbp), %rcx
mulsd (%rax,%rcx,8), %xmm0
movsd %xmm0, -0x220(%rbp)
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x54(%rbp), %eax
jg 0x33b3c
movq -0x308(%rbp), %rax
movsd -0x220(%rbp), %xmm0
movslq -0x58(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movq -0x8(%rbp), %rax
movslq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x33aef
jmp 0x33b3e
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x339dd
movq -0x210(%rbp), %rax
movq %rax, %rsp
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x33709
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x40(%rbp), %eax
jge 0x33bb0
movq -0x300(%rbp), %rax
movl -0x4c(%rbp), %esi
movq 0x38(%rbp), %rcx
movslq -0x4c(%rbp), %rdx
imulq $0x70, %rdx, %rdx
addq %rdx, %rcx
movsbl 0x34(%rcx), %edx
movslq -0x4c(%rbp), %rcx
movl (%rax,%rcx,4), %ecx
leaq 0x4a21e(%rip), %rdi     # 0x7ddbc
movb $0x0, %al
callq 0x10d0
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x33b6b
cmpl $0x1, 0x40(%rbp)
jle 0x33bca
movl -0x104(%rbp), %esi
leaq 0x4a216(%rip), %rdi     # 0x7ddd9
movb $0x0, %al
callq 0x10d0
movss -0x34(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x33c29
jp 0x33c29
movss -0x3c(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x33c29
jp 0x33c29
movss -0x38(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x33c29
jp 0x33c29
movss -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x33c29
jp 0x33c29
movss -0x44(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x33c29
jp 0x33c29
movss -0x48(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x33c29
jp 0x33c29
jmp 0x34664
leaq 0x4a1c1(%rip), %rdi     # 0x7ddf1
movb $0x0, %al
callq 0x10d0
cmpl $0x0, 0x48(%rbp)
jne 0x33e08
movq 0x18(%rbp), %rax
movq %rax, -0x228(%rbp)
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x33e03
movq -0x228(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x66, %eax
jne 0x33c96
movss -0x3c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x8(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x33de1
movq -0x228(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x70, %eax
jne 0x33ccd
movss -0x38(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x8(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x33ddf
movq -0x228(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x6c, %eax
jne 0x33d04
movss -0x48(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x8(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x33ddd
movq -0x228(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x61, %eax
jne 0x33d3b
movss -0x44(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x8(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x33ddb
movq -0x228(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x74, %eax
jne 0x33d6f
movss -0x3c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x8(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x33dd9
movq -0x228(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x6f, %eax
jne 0x33da3
movss -0x34(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x8(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x33dd7
movq -0x228(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x73, %eax
jne 0x33dd5
movss -0x40(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x8(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x33dd7
jmp 0x33dd9
jmp 0x33ddb
jmp 0x33ddd
jmp 0x33ddf
jmp 0x33de1
movq -0x228(%rbp), %rax
addq $0x158, %rax            # imm = 0x158
movq %rax, -0x228(%rbp)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x33c53
jmp 0x34662
cmpq $0x0, -0x18(%rbp)
je 0x342ba
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x342b5
movq -0x18(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x230(%rbp)
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x54(%rbp), %eax
jg 0x342a5
movq -0x18(%rbp), %rax
movslq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x238(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x240(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x248(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x250(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x258(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x260(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x268(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x270(%rbp)
movq 0x18(%rbp), %rax
movq %rax, -0x278(%rbp)
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x340e8
movq -0x278(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x66, %eax
jne 0x33f12
movq -0x230(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x238(%rbp), %rax
movslq -0x4c(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x240(%rbp), %xmm0
movsd %xmm0, -0x240(%rbp)
jmp 0x340c6
movq -0x278(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x70, %eax
jne 0x33f5a
movq -0x230(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x238(%rbp), %rax
movslq -0x4c(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x248(%rbp), %xmm0
movsd %xmm0, -0x248(%rbp)
jmp 0x340c4
movq -0x278(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x6c, %eax
jne 0x33fa2
movq -0x230(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x238(%rbp), %rax
movslq -0x4c(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x268(%rbp), %xmm0
movsd %xmm0, -0x268(%rbp)
jmp 0x340c2
movq -0x278(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x61, %eax
jne 0x33fea
movq -0x230(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x238(%rbp), %rax
movslq -0x4c(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x260(%rbp), %xmm0
movsd %xmm0, -0x260(%rbp)
jmp 0x340c0
movq -0x278(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x74, %eax
jne 0x34032
movq -0x230(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x238(%rbp), %rax
movslq -0x4c(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x270(%rbp), %xmm0
movsd %xmm0, -0x270(%rbp)
jmp 0x340be
movq -0x278(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x6f, %eax
jne 0x34077
movq -0x230(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x238(%rbp), %rax
movslq -0x4c(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x250(%rbp), %xmm0
movsd %xmm0, -0x250(%rbp)
jmp 0x340bc
movq -0x278(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x73, %eax
jne 0x340ba
movq -0x230(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x238(%rbp), %rax
movslq -0x4c(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x258(%rbp), %xmm0
movsd %xmm0, -0x258(%rbp)
jmp 0x340bc
jmp 0x340be
jmp 0x340c0
jmp 0x340c2
jmp 0x340c4
jmp 0x340c6
movq -0x278(%rbp), %rax
addq $0x158, %rax            # imm = 0x158
movq %rax, -0x278(%rbp)
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x33ebe
movss -0x3c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
mulsd -0x240(%rbp), %xmm0
movsd %xmm0, -0x280(%rbp)
movsd -0x248(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x34116
jp 0x34116
jmp 0x3413f
movss -0x38(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd -0x248(%rbp), %xmm2
movsd -0x280(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x280(%rbp)
movsd -0x250(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x34154
jp 0x34154
jmp 0x3417d
movss -0x34(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd -0x250(%rbp), %xmm2
movsd -0x280(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x280(%rbp)
movsd -0x258(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x34192
jp 0x34192
jmp 0x341bb
movss -0x40(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd -0x258(%rbp), %xmm2
movsd -0x280(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x280(%rbp)
movsd -0x268(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x341d0
jp 0x341d0
jmp 0x341f9
movss -0x48(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd -0x268(%rbp), %xmm2
movsd -0x280(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x280(%rbp)
movsd -0x260(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x3420e
jp 0x3420e
jmp 0x34237
movss -0x44(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd -0x260(%rbp), %xmm2
movsd -0x280(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x280(%rbp)
movsd -0x270(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x3424c
jp 0x3424c
jmp 0x34275
movss -0x3c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd -0x270(%rbp), %xmm2
movsd -0x280(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x280(%rbp)
movsd -0x280(%rbp), %xmm0
movq -0x8(%rbp), %rax
movslq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x33e40
jmp 0x342a7
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x33e1a
jmp 0x34660
movl 0x28(%rbp), %eax
movq %rsp, %rcx
movq %rcx, -0x288(%rbp)
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x328(%rbp)
movq %rcx, %rsp
movq %rax, -0x290(%rbp)
movl 0x28(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x320(%rbp)
movq %rcx, %rsp
movq %rax, -0x298(%rbp)
movl 0x28(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x318(%rbp)
movq %rcx, %rsp
movq %rax, -0x2a0(%rbp)
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x343b9
movq -0x320(%rbp), %rax
movslq -0x4c(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movslq 0x28(%rbp), %rdi
shlq $0x3, %rdi
callq 0x1180
movq %rax, %rdx
movq -0x318(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x343ac
movq -0x318(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x3437e
jmp 0x343ae
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x3433d
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x345a6
movq 0x18(%rbp), %rax
movslq -0x4c(%rbp), %rcx
imulq $0x158, %rcx, %rcx      # imm = 0x158
addq %rcx, %rax
movb (%rax), %al
movb %al, -0x2a1(%rbp)
movsbl -0x2a1(%rbp), %eax
cmpl $0x66, %eax
jne 0x34410
movq -0x320(%rbp), %rax
movss -0x3c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x3450a
movsbl -0x2a1(%rbp), %eax
cmpl $0x70, %eax
jne 0x3443a
movq -0x320(%rbp), %rax
movss -0x38(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x34508
movsbl -0x2a1(%rbp), %eax
cmpl $0x6c, %eax
jne 0x34464
movq -0x320(%rbp), %rax
movss -0x48(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x34506
movsbl -0x2a1(%rbp), %eax
cmpl $0x61, %eax
jne 0x3448b
movq -0x320(%rbp), %rax
movss -0x44(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x34504
movsbl -0x2a1(%rbp), %eax
cmpl $0x74, %eax
jne 0x344b2
movq -0x320(%rbp), %rax
movss -0x3c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x34502
movsbl -0x2a1(%rbp), %eax
cmpl $0x6f, %eax
jne 0x344d9
movq -0x320(%rbp), %rax
movss -0x34(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x34500
movsbl -0x2a1(%rbp), %eax
cmpl $0x73, %eax
jne 0x344fe
movq -0x320(%rbp), %rax
movss -0x40(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x34500
jmp 0x34502
jmp 0x34504
jmp 0x34506
jmp 0x34508
jmp 0x3450a
movq -0x320(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x34527
jp 0x34527
jmp 0x34596
movq -0x320(%rbp), %rdx
movq -0x328(%rbp), %rdi
movq -0x10(%rbp), %rsi
movl 0x28(%rbp), %ecx
callq 0x697c0
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x34583
movq -0x318(%rbp), %rax
movq -0x328(%rbp), %rcx
movslq -0x54(%rbp), %rdx
movsd (%rcx,%rdx,8), %xmm0
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x4c(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x34548
movq -0x320(%rbp), %rax
movslq -0x4c(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
jmp 0x34598
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x343c0
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x34628
movq -0x328(%rbp), %rdi
movq -0x318(%rbp), %rax
movq -0x10(%rbp), %rsi
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movl 0x28(%rbp), %ecx
callq 0x697c0
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x54(%rbp), %eax
jg 0x3461b
movq -0x328(%rbp), %rax
movslq -0x58(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x8(%rbp), %rax
movslq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x345de
jmp 0x3461d
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x345ad
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x34656
movq -0x318(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x1040
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x3462f
movq -0x288(%rbp), %rax
movq %rax, %rsp
jmp 0x34662
jmp 0x34664
movl $0x0, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x346c4
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x54(%rbp), %eax
jge 0x346b7
movq -0x8(%rbp), %rax
movslq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x8(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x58(%rbp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x3467a
jmp 0x346b9
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x3466b
cmpl $0x0, 0x67c05(%rip)     # 0x9c2d0
je 0x34c99
cmpl $0x0, 0x48(%rbp)
jne 0x346e5
leaq 0x49732(%rip), %rdi     # 0x7de10
movb $0x0, %al
callq 0x10d0
cmpq $0x0, -0x18(%rbp)
jne 0x346fc
leaq 0x48d79(%rip), %rdi     # 0x7d46c
movb $0x0, %al
callq 0x10d0
jmp 0x3470a
leaq 0x4972c(%rip), %rdi     # 0x7de2f
movb $0x0, %al
callq 0x10d0
leaq 0x49741(%rip), %rdi     # 0x7de52
movb $0x0, %al
callq 0x10d0
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jge 0x3476e
movq -0x20(%rbp), %rax
movslq -0x5c(%rbp), %rcx
imulq $0xc8, %rcx, %rcx
addq %rcx, %rax
movsd 0x20(%rax), %xmm0
movq -0x20(%rbp), %rax
movslq -0x5c(%rbp), %rcx
imulq $0xc8, %rcx, %rcx
addq %rcx, %rax
movsd 0x28(%rax), %xmm1
leaq 0x49703(%rip), %rdi     # 0x7de5f
movb $0x2, %al
callq 0x10d0
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x3471f
leaq 0x49903(%rip), %rdi     # 0x7e078
movb $0x0, %al
callq 0x10d0
movl 0x30(%rbp), %eax
subl $0x14, %eax
movl %eax, -0x2a8(%rbp)
leaq 0x496db(%rip), %rdi     # 0x7de6a
movb $0x0, %al
callq 0x10d0
movl -0x2a8(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x348a4
cmpq $0x0, -0x18(%rbp)
jne 0x347e8
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x347e6
movq -0x10(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x50(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x347bb
jmp 0x347e8
movl -0x2a8(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x54(%rbp), %eax
jg 0x34888
xorps %xmm0, %xmm0
movsd %xmm0, -0x2b0(%rbp)
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x34864
movq -0x10(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x10(%rbp), %rax
movslq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd -0x2b0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x2b0(%rbp)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x3480f
movsd -0x2b0(%rbp), %xmm0
leaq 0x431ff(%rip), %rdi     # 0x77a72
movb $0x1, %al
callq 0x10d0
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x347f1
leaq 0x497e9(%rip), %rdi     # 0x7e078
movb $0x0, %al
callq 0x10d0
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x3479f
cmpq $0x0, -0x18(%rbp)
je 0x34994
leaq 0x495d1(%rip), %rdi     # 0x7de87
movb $0x0, %al
callq 0x10d0
movl -0x2a8(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x34992
movl -0x2a8(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x54(%rbp), %eax
jg 0x34976
xorps %xmm0, %xmm0
movsd %xmm0, -0x2b8(%rbp)
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x34952
movq -0x18(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x50(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x10(%rbp), %rax
movslq -0x50(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x58(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd -0x2b8(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x2b8(%rbp)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x348f9
movsd -0x2b8(%rbp), %xmm0
leaq 0x4953f(%rip), %rdi     # 0x7dea0
movb $0x1, %al
callq 0x10d0
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x348db
leaq 0x496fb(%rip), %rdi     # 0x7e078
movb $0x0, %al
callq 0x10d0
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x348c6
jmp 0x34994
leaq 0x4950b(%rip), %rdi     # 0x7dea6
movb $0x0, %al
callq 0x10d0
movl -0x2a8(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x34a8a
movl -0x2a8(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x34a6e
movq -0x2e8(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, -0x2c0(%rbp)
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x2c8(%rbp)
movl $0x0, -0x50(%rbp)
cmpl $0x3, -0x50(%rbp)
jge 0x34a45
movq -0x2c8(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x2c8(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd -0x2c0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x2c0(%rbp)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x349fc
movsd -0x2c0(%rbp), %xmm0
callq 0x1220
leaq 0x48e00(%rip), %rdi     # 0x7d859
movb $0x1, %al
callq 0x10d0
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x349c0
leaq 0x49603(%rip), %rdi     # 0x7e078
movb $0x0, %al
callq 0x10d0
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x349ab
leaq 0x49424(%rip), %rdi     # 0x7deb5
movb $0x0, %al
callq 0x10d0
movl -0x2a8(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x34bc4
movl -0x2a8(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x34b64
movq -0x2e0(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, -0x2d0(%rbp)
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x2d8(%rbp)
movl $0x0, -0x50(%rbp)
cmpl $0x3, -0x50(%rbp)
jge 0x34b3b
movq -0x2d8(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
movq -0x2d8(%rbp), %rax
movslq -0x50(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm2
movsd -0x2d0(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x2d0(%rbp)
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0x34af2
movsd -0x2d0(%rbp), %xmm0
callq 0x1220
leaq 0x48d0a(%rip), %rdi     # 0x7d859
movb $0x1, %al
callq 0x10d0
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x34ab6
movq 0x18(%rbp), %rdi
movslq -0x54(%rbp), %rax
imulq $0x158, %rax, %rax      # imm = 0x158
addq %rax, %rdi
addq $0x60, %rdi
movq 0x18(%rbp), %rsi
movslq -0x54(%rbp), %rax
imulq $0x158, %rax, %rax      # imm = 0x158
addq %rax, %rsi
addq $0x60, %rsi
callq 0x14c00
callq 0x1220
leaq 0x4932c(%rip), %rdi     # 0x7decd
movb $0x1, %al
callq 0x10d0
leaq 0x494c9(%rip), %rdi     # 0x7e078
movb $0x0, %al
callq 0x10d0
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x34aa1
leaq 0x49309(%rip), %rdi     # 0x7ded4
movb $0x0, %al
callq 0x10d0
movl -0x2a8(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl 0x30(%rbp), %eax
jge 0x34c3b
movl -0x2a8(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x54(%rbp), %eax
jg 0x34c22
movq -0x8(%rbp), %rax
movslq -0x54(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x58(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
leaq 0x42e62(%rip), %rdi     # 0x77a72
movb $0x1, %al
callq 0x10d0
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x34bec
leaq 0x4944f(%rip), %rdi     # 0x7e078
movb $0x0, %al
callq 0x10d0
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x34bdb
leaq 0x492b4(%rip), %rdi     # 0x7def6
movb $0x0, %al
callq 0x10d0
movl $0x0, -0x4c(%rbp)
cmpl $0x64, -0x4c(%rbp)
jge 0x34c81
movq -0x30(%rbp), %rax
movslq -0x4c(%rbp), %rcx
imulq $0x70, %rcx, %rcx
addq %rcx, %rax
movl 0x58(%rax), %esi
leaq 0x4c155(%rip), %rdi     # 0x80dc4
movb $0x0, %al
callq 0x10d0
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x34c50
leaq 0x493f0(%rip), %rdi     # 0x7e078
movb $0x0, %al
callq 0x10d0
movl $0x8, %edi
callq 0x1210
movq -0xf8(%rbp), %rdi
movl 0x30(%rbp), %esi
callq 0x692a0
movl $0x0, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
cmpl 0x28(%rbp), %eax
jge 0x34cf0
movq -0x2e8(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl 0x30(%rbp), %esi
callq 0x692a0
movq -0x2e0(%rbp), %rax
movslq -0x4c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl 0x30(%rbp), %esi
callq 0x692a0
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x34caf
movq -0x68(%rbp), %rax
movq %rax, %rsp
movq %rbp, %rsp
popq %rbp
retq
nopl (%rax)