// File: /workspace/github_c_makefile_star2_O0/ugobas[P]tnm/mutation.c
// Function: Predict_mutations
void Predict_mutations(struct Normal_Mode NM, float KAPPA,
		       atom *atoms, int natoms,
		       int N_axes, struct Reference Ref_kin, 
		       struct interaction *Int_list, int N_int,
		       struct residue *seq, int Nres,
		       char *nameout1, char *Mut_para,
		       int PRED_MUT, int IWT)
{
  int i_rank[20]; // For RMSD[a_wt] //IWT=3, 
  int ALLPAIR=0; if(PRED_MUT==2)ALLPAIR=1;

  // Exponent of the force for computation
  Read_pred_para(Mut_para);
  Exp=(1.+EXP_FORCE)/2;
  REXP=pow(RC, EXP_FORCE); scale_C=KAPPA*REXP;
  float C_size=C_SIZE*scale_C, C_stab=C_STAB*scale_C, C_dist=C_DIST*scale_C;
  Normalize_parameters();

  /* For all positions in the protein and all possible amino acid changes,
     predict the structural effect of the mutation */

  float *sigma2=NM.sigma2;
  /**************************************************************************
           Prepare reference atoms and determine their displacement str_diff_3
  ****************************************************************************/

  // Match any atom to closest kinetic atom
  int N_kin=Ref_kin.N_ref, N_Cart=3*N_kin, kin_atom[natoms]; 
  Match_atoms(kin_atom, atoms, natoms, Ref_kin.atom_num, N_kin);

  // Extract one reference atom per residue
  int resatom[Nres];
  int Na=Extract_reference_atoms(resatom, atoms, natoms, seq, Nres);

  // Contact list
  int *nc, **clist, **cnum;
  Get_contact_list(&nc, &clist, &cnum, Nres, atoms, Int_list, N_int);

  // Output files
  char para[200], head[800],tmp[50];
  sprintf(para, "# Mutation par.: C_SIZE= %.3g C_STAB= %.3g C_DIST=%.3g IWT=%d",
	  C_SIZE, C_STAB, C_DIST, IWT);
  strcpy(head, "#Mut\tncont");
  for(int a=0; a<20; a++){
    sprintf(tmp, "\t%c", AA_code[a]); strcat(head, tmp);
  }
  strcat(head,"\n");

  char name[200]; sprintf(name,"%s.mut_RMSD.dat", nameout1);
  char what[200]="Predicted RMSD of all mutations from WT";
  FILE *file_rmsd=fopen(name, "w");
  fprintf(file_rmsd, "# %s\n%s\n%s", what, para, head);
  printf("Writing %s in %s\n", what,name);

  sprintf(name,"%s.mut_DE.dat", nameout1);
  strcpy(what, "Predicted DE of all mutations from WT");
  FILE *file_de=fopen(name, "w");
  fprintf(file_de, "# %s\n%s\n%s", what,para,head);
  printf("Writing %s in %s\n",what, name);

  FILE *file_de_all=NULL, *file_rmsd_all=NULL;
  if(ALLPAIR){
    strcpy(head, "#pos");
    for(int a=0; a<20; a++){
      for(int b=a+1; b<20; b++){
	sprintf(tmp, "\t%c%c", AA_code[a], AA_code[b]);
	strcat(head, tmp);
      }
    }
    strcat(head,"\n");

    strcpy(what, "Predicted RMSD of all pairs of mutations");
    sprintf(name,"%s.mut_RMSD_all.dat", nameout1);
    file_rmsd_all=fopen(name, "w");
    fprintf(file_rmsd_all, "# %s\n%s\n%s", what,para,head);
    printf("Writing %s in %s\n",what, name);

    strcpy(what, "Predicted DE of all pairs of mutations");
    sprintf(name,"%s.mut_DE_all.dat", nameout1);
    file_de_all=fopen(name, "w");
    fprintf(file_de_all, "# %s\n%s\n%s", what,para,head);
    printf("Writing %s in %s\n",what, name);
  }

  FILE *file3=NULL;
  if(0){
    strcpy(what, "Predicted RMSD and DE of all mutations from WT");
    sprintf(name,"%s.mut_all.dat", nameout1);
    fopen(name, "w");
    printf("Writing %s in %s\n",what, name);
    fprintf(file3, "# %s\nRMSD DE\n", what);
  }

  FILE *file4=NULL;
  if(0){
    sprintf(what, "Predicted force of all mutations from WT");
    sprintf(name,"%s.mut_force.dat", nameout1);
    file4=fopen(name, "w");
    printf("Writing %s in %s\n",what, name);
    fprintf(file4, "# %s\n%s\n%s", what, para, head);
  }

  // Define memory
  float Force[N_Cart], Force_coeff[NM.N];
  int N3=3*Na;
  float pred_mut_Cart[N_Cart], pred_mut_Tors[N_axes],
    pred_mut_3[N3], pred_mut_2[Na]; // pred_mut_tot_2[Na];

  int Nmut=1, Posmut[1]; char AAwt[1], AAmut[1];
  float MSD_mut[20][20], MSD_cross=0, MSD[20];
  float DE_pred[20][20], DE[20];
  double RMSD_prof[Na]; for(int i=0; i<Na; i++)RMSD_prof[i]=0;
  for(int ipos=0; ipos<Nres; ipos++){
    printf("%d ",ipos);
    Posmut[0]=ipos; AAwt[0]=seq[ipos].amm; AAmut[0]='A';
    int wt=seq[ipos].i_aa;
    int mut_neigh[Na], n_cont_mut;
    Mut_neighbor(mut_neigh, Na, AAwt, Posmut, AAmut, Nmut,
		 clist, cnum, Int_list, atoms, Nres);
    char out[80]; int a, b;
    sprintf(out,"%c%s\t%d",AAwt[0],seq[ipos].pdbres, nc[ipos]); //ipos+1
    fprintf(file_rmsd,"%s",out);
    fprintf(file_de,"%s",out);
    if(file4)fprintf(file4,"%s",out);
    for(a=0; a<20; a++){
      if(a==wt){DE[a]=1000; MSD[a]=1000; continue;}
      AAmut[0]=AA_code[a];
      Pred_mut_str(C_size, C_stab, C_dist,
		   DE+a, MSD+a, &MSD_cross,
		   NULL, NULL, NULL, NULL,
		   pred_mut_3, pred_mut_2, NULL, Na,
		   &n_cont_mut, Force, Force_coeff,
		   pred_mut_Cart, N_Cart, pred_mut_Tors, N_axes, 
		   AAwt, Posmut, AAmut, Nmut,
		   clist, cnum, Int_list, seq, Na,
		   atoms, resatom, Ref_kin, kin_atom, NM, sigma2,
		   NULL, NULL, NULL, NULL);
      for(int i=0; i<Na; i++)RMSD_prof[i]+=pred_mut_2[i];
      if(file4){
	double F=0;
	if(AAmut[0]!=AAwt[0]){
	  for(int i=0; i<Na; i++)F+=Force[i]*Force[i];
	  F=sqrt(F/Na);
	}
	fprintf(file4,"\t%.2g",F);
      }
    }
    // Compute mutation to same a.a. as mean of IWT lowest ones
    if(IWT>0){
      DE[wt]=10000; f_sort(DE, 20, i_rank);
      double Y=0; for(a=0; a<IWT; a++)Y+=DE[i_rank[19-a]]; DE[wt]=Y/IWT;
      MSD[wt]=10000; f_sort(MSD, 20, i_rank);
      Y=0; for(a=0; a<IWT; a++)Y+=MSD[i_rank[19-a]]; MSD[wt]=Y/IWT;
    }else{
      double sum=0, norm=0; float *x=DE, p;
      for(a=0; a<20; a++){
	if(a!=wt){p=exp(-x[a]); sum+=x[a]*p; norm+=p;}
      }
      if(norm){x[wt]=sum/norm;}else{x[wt]=0;}
      sum=0; norm=0; x=MSD;
      for(a=0; a<20; a++){
	if(a!=wt){p=exp(-x[a]); sum+=x[a]*p; norm+=p;}
      }
      if(norm){x[wt]=sum/norm;}else{x[wt]=0;}
    }
    for(a=0; a<20; a++){
      float RMSD_mut=sqrt(MSD[a]);
      fprintf(file_rmsd,"\t%.2g",RMSD_mut);
      fprintf(file_de,"\t%.3g",DE[a]);
      if(file3)fprintf(file3,"%.2g %.3g\n", RMSD_mut, DE[a]);
    }
    fprintf(file_rmsd,"\n");
    fprintf(file_de,"\n");
    if(file3)fprintf(file3,"\n");
    if(file4)fprintf(file4,"\n");

    if(ALLPAIR){
      // Compute all pairs
      for(a=0; a<20; a++){
	if(a==wt)continue;
	DE_pred[a][wt]=DE[a];
	DE_pred[wt][a]=DE[a];
	MSD_mut[a][wt]=MSD[a];
	MSD_mut[wt][a]=MSD[a];
	AAwt[0]=AA_code[a];
	for(b=a+1; b<20; b++){
	  if(b==wt){continue;}
	  AAmut[0]=AA_code[b];
	  Pred_mut_str(C_size, C_stab, C_dist,
		       &(DE_pred[a][b]), &(MSD_mut[a][b]), &MSD_cross,
		       NULL, NULL, NULL, NULL,
		       pred_mut_3, pred_mut_2, NULL, Na,
		       &n_cont_mut, Force, Force_coeff,
		       pred_mut_Cart, N_Cart, pred_mut_Tors, N_axes, 
		       AAwt, Posmut, AAmut, Nmut,
		       clist, cnum, Int_list, seq, Na,
		       atoms, resatom, Ref_kin, kin_atom, NM, sigma2,
		       NULL, NULL, NULL, NULL);
	}
      } // end pairs
      // print all pairs
      char out[20];
      sprintf(out,"%c%s",AA_code[wt],seq[ipos].pdbres); //ipos+1
      fprintf(file_rmsd_all,"%s", out);
      fprintf(file_de_all,"%s", out);
      for(a=0; a<20; a++){
	for(b=a+1; b<20; b++){
	  fprintf(file_rmsd_all,"\t%.2g",sqrt(MSD_mut[a][b]));
	  fprintf(file_de_all,"\t%.3g",DE_pred[a][b]);
	}
      }
      fprintf(file_rmsd_all,"\n");
      fprintf(file_de_all,"\n");
    } // end ALLPAIR
  }
  fclose(file_rmsd);
  fclose(file_de);
  if(file3)fclose(file3);
  if(file4)fclose(file4);
  if(file_de_all)fclose(file_de_all);
  if(file_rmsd_all)fclose(file_rmsd_all);

  // Print profile RMSD
  int NMUT=19*Nres;
  sprintf(name,"%s.mut_prof_RMSD.dat",nameout1);
  FILE *file1=fopen(name,"w");
  printf("Printing profile of structural RMSD in %s\n",name);
  fprintf(file1,"# Profile of structural deviations");
  fprintf(file1," averaged over %d simulated point mutations\n",NMUT);
  fprintf(file1,"# 1=res 2=n_contact 3=predicted RMSD from w.t.\n");
  for(int i=0; i<Na; i++){
    fprintf(file1,"%c%d\t%d\t%.3f\n",
	    seq[i].amm, i+1, nc[i], sqrt(RMSD_prof[i]/NMUT));
  }
  fclose(file1);
  printf("\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1638, %rsp           # imm = 0x1638
movl 0x130(%rbp), %eax
movl 0x128(%rbp), %eax
movq 0x120(%rbp), %rax
movq 0x118(%rbp), %rax
movl 0x110(%rbp), %eax
leaq 0xe0(%rbp), %rax
movq %rax, -0x1588(%rbp)
leaq 0x10(%rbp), %rax
movq %rax, -0x1580(%rbp)
movss %xmm0, -0x2c(%rbp)
movq %rdi, -0x38(%rbp)
movl %esi, -0x3c(%rbp)
movl %edx, -0x40(%rbp)
movq %rcx, -0x48(%rbp)
movl %r8d, -0x4c(%rbp)
movq %r9, -0x58(%rbp)
movl $0x0, -0xb4(%rbp)
cmpl $0x2, 0x128(%rbp)
jne 0x5aa75
movl $0x1, -0xb4(%rbp)
movq 0x120(%rbp), %rdi
callq 0x57360
movss 0x41acb(%rip), %xmm0    # 0x9c554
cvtss2sd %xmm0, %xmm0
movsd 0x1b5b3(%rip), %xmm1    # 0x76048
addsd %xmm1, %xmm0
movsd 0x1b567(%rip), %xmm1    # 0x76008
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x41aa7(%rip)    # 0x9c558
movss 0x3144b(%rip), %xmm0    # 0x8bf04
cvtss2sd %xmm0, %xmm0
movss 0x41a8f(%rip), %xmm1    # 0x9c554
cvtss2sd %xmm1, %xmm1
callq 0x1080
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x3142e(%rip)    # 0x8bf08
movss -0x2c(%rbp), %xmm0
movss 0x31421(%rip), %xmm1    # 0x8bf08
mulss %xmm1, %xmm0
movss %xmm0, 0x41a69(%rip)    # 0x9c55c
movss 0x31415(%rip), %xmm0    # 0x8bf10
movss 0x41a59(%rip), %xmm1    # 0x9c55c
mulss %xmm1, %xmm0
movss %xmm0, -0xb8(%rbp)
movss 0x313fd(%rip), %xmm0    # 0x8bf14
movss 0x41a3d(%rip), %xmm1    # 0x9c55c
mulss %xmm1, %xmm0
movss %xmm0, -0xbc(%rbp)
movss 0x313e5(%rip), %xmm0    # 0x8bf18
movss 0x41a21(%rip), %xmm1    # 0x9c55c
mulss %xmm1, %xmm0
movss %xmm0, -0xc0(%rbp)
callq 0x5a470
movq -0x1580(%rbp), %rcx
movq -0x1588(%rbp), %rax
movq 0x28(%rcx), %rcx
movq %rcx, -0xc8(%rbp)
movl (%rax), %ecx
movl %ecx, -0xcc(%rbp)
movl -0xcc(%rbp), %edx
movl %edx, %ecx
leal (%rcx,%rcx,2), %ecx
movl %ecx, -0xd0(%rbp)
movl -0x3c(%rbp), %ecx
movq %rsp, %rdx
movq %rdx, -0xd8(%rbp)
leaq 0xf(,%rcx,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rdi
subq %rdx, %rdi
movq %rdi, -0x1598(%rbp)
movq %rdi, %rsp
movq %rcx, -0xe0(%rbp)
movq -0x38(%rbp), %rsi
movl -0x3c(%rbp), %edx
movq 0x28(%rax), %rcx
movl -0xcc(%rbp), %r8d
callq 0x57610
movl 0x110(%rbp), %eax
leaq 0xf(,%rax,4), %rcx
andq $-0x10, %rcx
movq %rsp, %rdi
subq %rcx, %rdi
movq %rdi, -0x1590(%rbp)
movq %rdi, %rsp
movq %rax, -0xe8(%rbp)
movq -0x38(%rbp), %rsi
movl -0x3c(%rbp), %edx
movq -0x58(%rbp), %rcx
movl 0x110(%rbp), %r8d
callq 0x5c450
movl %eax, -0xec(%rbp)
movl 0x110(%rbp), %ecx
movq -0x38(%rbp), %r8
movq -0x48(%rbp), %r9
movl -0x4c(%rbp), %eax
leaq -0xf8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
leaq -0x108(%rbp), %rdx
subq $0x10, %rsp
movl %eax, (%rsp)
callq 0x2bf90
addq $0x10, %rsp
leaq -0x1d0(%rbp), %rdi
movss 0x312c0(%rip), %xmm0    # 0x8bf10
cvtss2sd %xmm0, %xmm0
movss 0x312b8(%rip), %xmm1    # 0x8bf14
cvtss2sd %xmm1, %xmm1
movss 0x312b0(%rip), %xmm2    # 0x8bf18
cvtss2sd %xmm2, %xmm2
movl 0x130(%rbp), %edx
leaq 0x270ea(%rip), %rsi     # 0x81d63
movb $0x3, %al
callq 0x1200
leaq -0x4f0(%rbp), %rdi
leaq 0x27113(%rip), %rsi     # 0x81da1
callq 0x1060
movl $0x0, -0x534(%rbp)
cmpl $0x14, -0x534(%rbp)
jge 0x5acf4
leaq -0x530(%rbp), %rdi
leaq 0x31484(%rip), %rax     # 0x8c138
movq (%rax), %rax
movslq -0x534(%rbp), %rcx
movsbl (%rax,%rcx), %edx
leaq 0x27f6c(%rip), %rsi     # 0x82c35
movb $0x0, %al
callq 0x1200
leaq -0x4f0(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x11e0
movl -0x534(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x534(%rbp)
jmp 0x5ac9d
leaq -0x4f0(%rbp), %rdi
leaq 0x23376(%rip), %rsi     # 0x7e078
callq 0x11e0
leaq -0x600(%rbp), %rdi
movq 0x118(%rbp), %rdx
leaq 0x27090(%rip), %rsi     # 0x81dac
movb $0x0, %al
callq 0x1200
leaq -0x6d0(%rbp), %rdi
leaq 0x2724f(%rip), %rsi     # 0x81f80
movl $0xc8, %edx
callq 0x1160
leaq -0x600(%rbp), %rdi
leaq 0x21629(%rip), %rsi     # 0x7c372
callq 0x11b0
movq %rax, -0x6d8(%rbp)
movq -0x6d8(%rbp), %rdi
leaq -0x6d0(%rbp), %rdx
leaq -0x1d0(%rbp), %rcx
leaq -0x4f0(%rbp), %r8
leaq 0x27044(%rip), %rsi     # 0x81dbc
movb $0x0, %al
callq 0x1150
leaq -0x6d0(%rbp), %rsi
leaq -0x600(%rbp), %rdx
leaq 0x27033(%rip), %rdi     # 0x81dc7
movb $0x0, %al
callq 0x10d0
leaq -0x600(%rbp), %rdi
movq 0x118(%rbp), %rdx
leaq 0x27029(%rip), %rsi     # 0x81dd9
movb $0x0, %al
callq 0x1200
leaq -0x6d0(%rbp), %rdi
leaq 0x27022(%rip), %rsi     # 0x81de7
callq 0x1060
leaq -0x600(%rbp), %rdi
leaq 0x2159a(%rip), %rsi     # 0x7c372
callq 0x11b0
movq %rax, -0x6e0(%rbp)
movq -0x6e0(%rbp), %rdi
leaq -0x6d0(%rbp), %rdx
leaq -0x1d0(%rbp), %rcx
leaq -0x4f0(%rbp), %r8
leaq 0x26fb5(%rip), %rsi     # 0x81dbc
movb $0x0, %al
callq 0x1150
leaq -0x6d0(%rbp), %rsi
leaq -0x600(%rbp), %rdx
leaq 0x26fa4(%rip), %rdi     # 0x81dc7
movb $0x0, %al
callq 0x10d0
movq $0x0, -0x6e8(%rbp)
movq $0x0, -0x6f0(%rbp)
cmpl $0x0, -0xb4(%rbp)
je 0x5b039
leaq -0x4f0(%rbp), %rdi
leaq 0x26fb2(%rip), %rsi     # 0x81e0d
callq 0x1060
movl $0x0, -0x6f4(%rbp)
cmpl $0x14, -0x6f4(%rbp)
jge 0x5af08
movl -0x6f4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6f8(%rbp)
cmpl $0x14, -0x6f8(%rbp)
jge 0x5aef2
leaq -0x530(%rbp), %rdi
leaq 0x3129b(%rip), %rax     # 0x8c138
movq (%rax), %rax
movslq -0x6f4(%rbp), %rcx
movsbl (%rax,%rcx), %edx
leaq 0x31286(%rip), %rax     # 0x8c138
movq (%rax), %rax
movslq -0x6f8(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
leaq 0x26f4b(%rip), %rsi     # 0x81e12
movb $0x0, %al
callq 0x1200
leaq -0x4f0(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x11e0
movl -0x6f8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6f8(%rbp)
jmp 0x5ae86
jmp 0x5aef4
movl -0x6f4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6f4(%rbp)
jmp 0x5ae6a
leaq -0x4f0(%rbp), %rdi
leaq 0x23162(%rip), %rsi     # 0x7e078
callq 0x11e0
leaq -0x6d0(%rbp), %rdi
leaq 0x26eef(%rip), %rsi     # 0x81e18
callq 0x1060
leaq -0x600(%rbp), %rdi
movq 0x118(%rbp), %rdx
leaq 0x26efe(%rip), %rsi     # 0x81e41
movb $0x0, %al
callq 0x1200
leaq -0x600(%rbp), %rdi
leaq 0x2141a(%rip), %rsi     # 0x7c372
callq 0x11b0
movq %rax, -0x6f0(%rbp)
movq -0x6f0(%rbp), %rdi
leaq -0x6d0(%rbp), %rdx
leaq -0x1d0(%rbp), %rcx
leaq -0x4f0(%rbp), %r8
leaq 0x26e35(%rip), %rsi     # 0x81dbc
movb $0x0, %al
callq 0x1150
leaq -0x6d0(%rbp), %rsi
leaq -0x600(%rbp), %rdx
leaq 0x26e24(%rip), %rdi     # 0x81dc7
movb $0x0, %al
callq 0x10d0
leaq -0x6d0(%rbp), %rdi
leaq 0x26e9d(%rip), %rsi     # 0x81e55
callq 0x1060
leaq -0x600(%rbp), %rdi
movq 0x118(%rbp), %rdx
leaq 0x26eaa(%rip), %rsi     # 0x81e7c
movb $0x0, %al
callq 0x1200
leaq -0x600(%rbp), %rdi
leaq 0x2138b(%rip), %rsi     # 0x7c372
callq 0x11b0
movq %rax, -0x6e8(%rbp)
movq -0x6e8(%rbp), %rdi
leaq -0x6d0(%rbp), %rdx
leaq -0x1d0(%rbp), %rcx
leaq -0x4f0(%rbp), %r8
leaq 0x26da6(%rip), %rsi     # 0x81dbc
movb $0x0, %al
callq 0x1150
leaq -0x6d0(%rbp), %rsi
leaq -0x600(%rbp), %rdx
leaq 0x26d95(%rip), %rdi     # 0x81dc7
movb $0x0, %al
callq 0x10d0
movq -0x1580(%rbp), %rax
movq $0x0, -0x700(%rbp)
movq $0x0, -0x708(%rbp)
movl -0xd0(%rbp), %ecx
leaq 0xf(,%rcx,4), %rsi
andq $-0x10, %rsi
movq %rsp, %rdx
subq %rsi, %rdx
movq %rdx, -0x15d0(%rbp)
movq %rdx, %rsp
movq %rcx, -0x710(%rbp)
movl (%rax), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x15c8(%rbp)
movq %rcx, %rsp
movq %rax, -0x718(%rbp)
movl -0xec(%rbp), %ecx
movl %ecx, %eax
leal (%rax,%rax,2), %eax
movl %eax, -0x71c(%rbp)
movl -0xd0(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x15c0(%rbp)
movq %rcx, %rsp
movq %rax, -0x728(%rbp)
movl -0x40(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x15b8(%rbp)
movq %rcx, %rsp
movq %rax, -0x730(%rbp)
movl -0x71c(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x15b0(%rbp)
movq %rcx, %rsp
movq %rax, -0x738(%rbp)
movl -0xec(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x15a8(%rbp)
movq %rcx, %rsp
movq %rax, -0x740(%rbp)
movl $0x1, -0x744(%rbp)
movl $0x0, -0xd94(%rbp)
movl -0xec(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x15a0(%rbp)
movq %rcx, %rsp
movq %rax, -0x1488(%rbp)
movl $0x0, -0x148c(%rbp)
movl -0x148c(%rbp), %eax
cmpl -0xec(%rbp), %eax
jge 0x5b1d2
movq -0x15a0(%rbp), %rax
movslq -0x148c(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x148c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x148c(%rbp)
jmp 0x5b19d
movl $0x0, -0x1490(%rbp)
movl -0x1490(%rbp), %eax
cmpl 0x110(%rbp), %eax
jge 0x5c23c
movl -0x1490(%rbp), %esi
leaq 0x25bc9(%rip), %rdi     # 0x80dc4
xorl %eax, %eax
callq 0x10d0
movl -0x1490(%rbp), %eax
movl %eax, -0x748(%rbp)
movq -0x58(%rbp), %rax
movslq -0x1490(%rbp), %rcx
shlq $0x5, %rcx
movb 0x13(%rax,%rcx), %al
movb %al, -0x749(%rbp)
movb $0x41, -0x74a(%rbp)
movq -0x58(%rbp), %rax
movslq -0x1490(%rbp), %rcx
shlq $0x5, %rcx
movswl 0x14(%rax,%rcx), %eax
movl %eax, -0x1494(%rbp)
movl -0xec(%rbp), %eax
movq %rsp, %rcx
movq %rcx, -0x14a0(%rbp)
leaq 0xf(,%rax,4), %rcx
andq $-0x10, %rcx
movq %rsp, %rdi
subq %rcx, %rdi
movq %rdi, %rsp
movq %rax, -0x14a8(%rbp)
movl -0xec(%rbp), %esi
leaq -0x749(%rbp), %rdx
leaq -0x748(%rbp), %rcx
leaq -0x74a(%rbp), %r8
movl -0x744(%rbp), %r9d
movq -0x100(%rbp), %r14
movq -0x108(%rbp), %rbx
movq -0x48(%rbp), %r11
movq -0x38(%rbp), %r10
movl 0x110(%rbp), %eax
subq $0x30, %rsp
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movl %eax, 0x20(%rsp)
callq 0x57880
addq $0x30, %rsp
leaq -0x1500(%rbp), %rdi
movsbl -0x749(%rbp), %edx
movq -0x58(%rbp), %rcx
movslq -0x1490(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rcx
addq $0xd, %rcx
movq -0xf8(%rbp), %rax
movslq -0x1490(%rbp), %rsi
movl (%rax,%rsi,4), %r8d
leaq 0x26b7b(%rip), %rsi     # 0x81e8e
movb $0x0, %al
callq 0x1200
movq -0x6d8(%rbp), %rdi
leaq -0x1500(%rbp), %rdx
leaq 0x2106f(%rip), %rsi     # 0x7c39e
movb $0x0, %al
callq 0x1150
movq -0x6e0(%rbp), %rdi
leaq -0x1500(%rbp), %rdx
leaq 0x21053(%rip), %rsi     # 0x7c39e
movb $0x0, %al
callq 0x1150
cmpq $0x0, -0x708(%rbp)
je 0x5b378
movq -0x708(%rbp), %rdi
leaq -0x1500(%rbp), %rdx
leaq 0x2102d(%rip), %rsi     # 0x7c39e
movb $0x0, %al
callq 0x1150
movl $0x0, -0x1504(%rbp)
cmpl $0x14, -0x1504(%rbp)
jge 0x5b769
movl -0x1504(%rbp), %eax
cmpl -0x1494(%rbp), %eax
jne 0x5b3d2
movslq -0x1504(%rbp), %rax
movss 0x21034(%rip), %xmm0    # 0x7c3e0
movss %xmm0, -0x1480(%rbp,%rax,4)
movslq -0x1504(%rbp), %rax
movss 0x2101c(%rip), %xmm0    # 0x7c3e0
movss %xmm0, -0xdf0(%rbp,%rax,4)
jmp 0x5b755
movq -0x1588(%rbp), %rax
movq -0x1580(%rbp), %rsi
leaq 0x30d51(%rip), %rcx     # 0x8c138
movq (%rcx), %rcx
movslq -0x1504(%rbp), %rdx
movb (%rcx,%rdx), %cl
movb %cl, -0x74a(%rbp)
movss -0xb8(%rbp), %xmm0
movss -0xbc(%rbp), %xmm1
movss -0xc0(%rbp), %xmm2
leaq -0x1480(%rbp), %rcx
movslq -0x1504(%rbp), %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, -0x1600(%rbp)
leaq -0xdf0(%rbp), %rcx
movslq -0x1504(%rbp), %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, -0x1608(%rbp)
movl -0xec(%rbp), %r8d
movl -0xd0(%rbp), %ebx
movl -0x40(%rbp), %r15d
leaq -0x749(%rbp), %r12
leaq -0x748(%rbp), %r13
leaq -0x74a(%rbp), %rcx
movq %rcx, -0x15d8(%rbp)
movl -0x744(%rbp), %edx
movq -0x100(%rbp), %r9
movq -0x108(%rbp), %r10
movq -0x48(%rbp), %r11
movq -0x58(%rbp), %r14
movl -0xec(%rbp), %ecx
movl %ecx, -0x15dc(%rbp)
movq -0x38(%rbp), %rcx
movq %rcx, -0x15e8(%rbp)
movq -0xc8(%rbp), %rcx
movq %rcx, -0x15f8(%rbp)
xorl %ecx, %ecx
subq $0x1f0, %rsp            # imm = 0x1F0
movq %rsp, %rdi
movq %rdi, -0x15f0(%rbp)
addq $0xf0, %rdi
movl $0x1a, %ecx
rep  movsq (%rsi), %es:(%rdi)
movq -0x1608(%rbp), %rsi
movq -0x1600(%rbp), %rdi
movq -0x15f8(%rbp), %rcx
movups (%rax), %xmm3
movups 0x10(%rax), %xmm4
movups 0x20(%rax), %xmm5
movq -0x15f0(%rbp), %rax
movups %xmm5, 0xd8(%rax)
movups %xmm4, 0xc8(%rax)
movups %xmm3, 0xb8(%rax)
movq %rcx, 0x1c0(%rax)
movq -0x1598(%rbp), %rcx
movq %rcx, 0xe8(%rax)
movq -0x1590(%rbp), %rcx
movq %rcx, 0xb0(%rax)
movq -0x15e8(%rbp), %rcx
movq %rcx, 0xa8(%rax)
movl -0x15dc(%rbp), %ecx
movl %ecx, 0xa0(%rax)
movq -0x15d8(%rbp), %rcx
movq %r14, 0x98(%rax)
movq -0x15b8(%rbp), %r14
movq %r11, 0x90(%rax)
movq -0x15c0(%rbp), %r11
movq %r10, 0x88(%rax)
movq -0x15c8(%rbp), %r10
movq %r9, 0x80(%rax)
movq -0x15d0(%rbp), %r9
movl %edx, 0x78(%rax)
movq -0x15a8(%rbp), %rdx
movq %rcx, 0x70(%rax)
movq -0x15b0(%rbp), %rcx
movq %r13, 0x68(%rax)
movq %r12, 0x60(%rax)
movl %r15d, 0x58(%rax)
movq %r14, 0x50(%rax)
movl %ebx, 0x48(%rax)
movq %r11, 0x40(%rax)
movq %r10, 0x38(%rax)
movq %r9, 0x30(%rax)
leaq -0x14ac(%rbp), %r9
movq %r9, 0x28(%rax)
movl %r8d, 0x20(%rax)
movq %rdx, 0x10(%rax)
movq %rcx, 0x8(%rax)
movq $0x0, 0x1e0(%rax)
movq $0x0, 0x1d8(%rax)
movq $0x0, 0x1d0(%rax)
movq $0x0, 0x1c8(%rax)
movq $0x0, 0x18(%rax)
movq $0x0, (%rax)
xorl %eax, %eax
movl %eax, %r9d
leaq -0xd94(%rbp), %rdx
movq %r9, %rcx
movq %r9, %r8
callq 0x58c00
addq $0x1f0, %rsp            # imm = 0x1F0
movl $0x0, -0x150c(%rbp)
movl -0x150c(%rbp), %eax
cmpl -0xec(%rbp), %eax
jge 0x5b68e
movq -0x15a0(%rbp), %rax
movq -0x15a8(%rbp), %rcx
movslq -0x150c(%rbp), %rdx
movss (%rcx,%rdx,4), %xmm0
cvtss2sd %xmm0, %xmm0
movslq -0x150c(%rbp), %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, (%rax,%rcx,8)
movl -0x150c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x150c(%rbp)
jmp 0x5b640
cmpq $0x0, -0x708(%rbp)
je 0x5b753
xorps %xmm0, %xmm0
movsd %xmm0, -0x1518(%rbp)
movsbl -0x74a(%rbp), %eax
movsbl -0x749(%rbp), %ecx
cmpl %ecx, %eax
je 0x5b736
movl $0x0, -0x151c(%rbp)
movl -0x151c(%rbp), %eax
cmpl -0xec(%rbp), %eax
jge 0x5b715
movq -0x15d0(%rbp), %rax
movslq -0x151c(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movslq -0x151c(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x1518(%rbp), %xmm0
movsd %xmm0, -0x1518(%rbp)
movl -0x151c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x151c(%rbp)
jmp 0x5b6c3
movsd -0x1518(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
callq 0x1220
movsd %xmm0, -0x1518(%rbp)
movq -0x708(%rbp), %rdi
movsd -0x1518(%rbp), %xmm0
leaq 0x2674a(%rip), %rsi     # 0x81e96
movb $0x1, %al
callq 0x1150
jmp 0x5b755
movl -0x1504(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1504(%rbp)
jmp 0x5b382
cmpl $0x0, 0x130(%rbp)
jle 0x5b8f7
movslq -0x1494(%rbp), %rax
movss 0x2086f(%rip), %xmm0    # 0x7bff4
movss %xmm0, -0x1480(%rbp,%rax,4)
leaq -0x1480(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
movl $0x14, %esi
callq 0x38fb0
xorps %xmm0, %xmm0
movsd %xmm0, -0x1528(%rbp)
movl $0x0, -0x1504(%rbp)
movl -0x1504(%rbp), %eax
cmpl 0x130(%rbp), %eax
jge 0x5b80c
movl $0x13, %eax
subl -0x1504(%rbp), %eax
cltq
movslq -0xb0(%rbp,%rax,4), %rax
movss -0x1480(%rbp,%rax,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x1528(%rbp), %xmm0
movsd %xmm0, -0x1528(%rbp)
movl -0x1504(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1504(%rbp)
jmp 0x5b7bb
movsd -0x1528(%rbp), %xmm0
cvtsi2sdl 0x130(%rbp), %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movslq -0x1494(%rbp), %rax
movss %xmm0, -0x1480(%rbp,%rax,4)
movslq -0x1494(%rbp), %rax
movss 0x207b1(%rip), %xmm0    # 0x7bff4
movss %xmm0, -0xdf0(%rbp,%rax,4)
leaq -0xdf0(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
movl $0x14, %esi
callq 0x38fb0
xorps %xmm0, %xmm0
movsd %xmm0, -0x1528(%rbp)
movl $0x0, -0x1504(%rbp)
movl -0x1504(%rbp), %eax
cmpl 0x130(%rbp), %eax
jge 0x5b8ca
movl $0x13, %eax
subl -0x1504(%rbp), %eax
cltq
movslq -0xb0(%rbp,%rax,4), %rax
movss -0xdf0(%rbp,%rax,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x1528(%rbp), %xmm0
movsd %xmm0, -0x1528(%rbp)
movl -0x1504(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1504(%rbp)
jmp 0x5b879
movsd -0x1528(%rbp), %xmm0
cvtsi2sdl 0x130(%rbp), %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movslq -0x1494(%rbp), %rax
movss %xmm0, -0xdf0(%rbp,%rax,4)
jmp 0x5bb67
xorps %xmm0, %xmm0
movsd %xmm0, -0x1530(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x1538(%rbp)
leaq -0x1480(%rbp), %rax
movq %rax, -0x1540(%rbp)
movl $0x0, -0x1504(%rbp)
cmpl $0x14, -0x1504(%rbp)
jge 0x5b9da
movl -0x1504(%rbp), %eax
cmpl -0x1494(%rbp), %eax
je 0x5b9c4
movq -0x1540(%rbp), %rax
movslq -0x1504(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x1230
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x1544(%rbp)
movq -0x1540(%rbp), %rax
movslq -0x1504(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
mulss -0x1544(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x1530(%rbp), %xmm0
movsd %xmm0, -0x1530(%rbp)
movss -0x1544(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x1538(%rbp), %xmm0
movsd %xmm0, -0x1538(%rbp)
jmp 0x5b9c6
movl -0x1504(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1504(%rbp)
jmp 0x5b925
movsd -0x1538(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x5b9ef
jp 0x5b9ef
jmp 0x5ba18
movsd -0x1530(%rbp), %xmm0
divsd -0x1538(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x1540(%rbp), %rax
movslq -0x1494(%rbp), %rcx
movss %xmm0, (%rax,%rcx,4)
jmp 0x5ba2e
movq -0x1540(%rbp), %rax
movslq -0x1494(%rbp), %rcx
xorps %xmm0, %xmm0
movss %xmm0, (%rax,%rcx,4)
xorps %xmm0, %xmm0
movsd %xmm0, -0x1530(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x1538(%rbp)
leaq -0xdf0(%rbp), %rax
movq %rax, -0x1540(%rbp)
movl $0x0, -0x1504(%rbp)
cmpl $0x14, -0x1504(%rbp)
jge 0x5bb11
movl -0x1504(%rbp), %eax
cmpl -0x1494(%rbp), %eax
je 0x5bafb
movq -0x1540(%rbp), %rax
movslq -0x1504(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x1230
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x1544(%rbp)
movq -0x1540(%rbp), %rax
movslq -0x1504(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
mulss -0x1544(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x1530(%rbp), %xmm0
movsd %xmm0, -0x1530(%rbp)
movss -0x1544(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x1538(%rbp), %xmm0
movsd %xmm0, -0x1538(%rbp)
jmp 0x5bafd
movl -0x1504(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1504(%rbp)
jmp 0x5ba5c
movsd -0x1538(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x5bb26
jp 0x5bb26
jmp 0x5bb4f
movsd -0x1530(%rbp), %xmm0
divsd -0x1538(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x1540(%rbp), %rax
movslq -0x1494(%rbp), %rcx
movss %xmm0, (%rax,%rcx,4)
jmp 0x5bb65
movq -0x1540(%rbp), %rax
movslq -0x1494(%rbp), %rcx
xorps %xmm0, %xmm0
movss %xmm0, (%rax,%rcx,4)
jmp 0x5bb67
movl $0x0, -0x1504(%rbp)
cmpl $0x14, -0x1504(%rbp)
jge 0x5bc42
movslq -0x1504(%rbp), %rax
movss -0xdf0(%rbp,%rax,4), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x1220
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x1548(%rbp)
movq -0x6d8(%rbp), %rdi
movss -0x1548(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x262d9(%rip), %rsi     # 0x81e96
movb $0x1, %al
callq 0x1150
movq -0x6e0(%rbp), %rdi
movslq -0x1504(%rbp), %rax
movss -0x1480(%rbp,%rax,4), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x20db7(%rip), %rsi     # 0x7c99d
movb $0x1, %al
callq 0x1150
cmpq $0x0, -0x700(%rbp)
je 0x5bc2c
movq -0x700(%rbp), %rdi
movss -0x1548(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movslq -0x1504(%rbp), %rax
movss -0x1480(%rbp,%rax,4), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0x26277(%rip), %rsi     # 0x81e9c
movb $0x2, %al
callq 0x1150
jmp 0x5bc2e
movl -0x1504(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1504(%rbp)
jmp 0x5bb71
movq -0x6d8(%rbp), %rdi
leaq 0x22428(%rip), %rsi     # 0x7e078
movb $0x0, %al
callq 0x1150
movq -0x6e0(%rbp), %rdi
leaq 0x22413(%rip), %rsi     # 0x7e078
movb $0x0, %al
callq 0x1150
cmpq $0x0, -0x700(%rbp)
je 0x5bc8b
movq -0x700(%rbp), %rdi
leaq 0x223f4(%rip), %rsi     # 0x7e078
movb $0x0, %al
callq 0x1150
cmpq $0x0, -0x708(%rbp)
je 0x5bcaa
movq -0x708(%rbp), %rdi
leaq 0x223d5(%rip), %rsi     # 0x7e078
movb $0x0, %al
callq 0x1150
cmpl $0x0, -0xb4(%rbp)
je 0x5c21e
movl $0x0, -0x1504(%rbp)
cmpl $0x14, -0x1504(%rbp)
jge 0x5c098
movl -0x1504(%rbp), %eax
cmpl -0x1494(%rbp), %eax
jne 0x5bce1
jmp 0x5c084
movslq -0x1504(%rbp), %rax
movss -0x1480(%rbp,%rax,4), %xmm0
movslq -0x1504(%rbp), %rcx
leaq -0x1430(%rbp), %rax
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movslq -0x1494(%rbp), %rcx
movss %xmm0, (%rax,%rcx,4)
movslq -0x1504(%rbp), %rax
movss -0x1480(%rbp,%rax,4), %xmm0
movslq -0x1494(%rbp), %rcx
leaq -0x1430(%rbp), %rax
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movslq -0x1504(%rbp), %rcx
movss %xmm0, (%rax,%rcx,4)
movslq -0x1504(%rbp), %rax
movss -0xdf0(%rbp,%rax,4), %xmm0
movslq -0x1504(%rbp), %rcx
leaq -0xd90(%rbp), %rax
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movslq -0x1494(%rbp), %rcx
movss %xmm0, (%rax,%rcx,4)
movslq -0x1504(%rbp), %rax
movss -0xdf0(%rbp,%rax,4), %xmm0
movslq -0x1494(%rbp), %rcx
leaq -0xd90(%rbp), %rax
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movslq -0x1504(%rbp), %rcx
movss %xmm0, (%rax,%rcx,4)
leaq 0x3038c(%rip), %rax     # 0x8c138
movq (%rax), %rax
movslq -0x1504(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x749(%rbp)
movl -0x1504(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1508(%rbp)
cmpl $0x14, -0x1508(%rbp)
jge 0x5c082
movl -0x1508(%rbp), %eax
cmpl -0x1494(%rbp), %eax
jne 0x5bdee
jmp 0x5c06e
movq -0x1588(%rbp), %rax
movq -0x1580(%rbp), %rsi
leaq 0x30335(%rip), %rcx     # 0x8c138
movq (%rcx), %rcx
movslq -0x1508(%rbp), %rdx
movb (%rcx,%rdx), %cl
movb %cl, -0x74a(%rbp)
movss -0xb8(%rbp), %xmm0
movss -0xbc(%rbp), %xmm1
movss -0xc0(%rbp), %xmm2
movslq -0x1504(%rbp), %rdx
leaq -0x1430(%rbp), %rcx
imulq $0x50, %rdx, %rdx
addq %rdx, %rcx
movslq -0x1508(%rbp), %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, -0x1638(%rbp)
movslq -0x1504(%rbp), %rdx
leaq -0xd90(%rbp), %rcx
imulq $0x50, %rdx, %rdx
addq %rdx, %rcx
movslq -0x1508(%rbp), %rdx
shlq $0x2, %rdx
addq %rdx, %rcx
movq %rcx, -0x1640(%rbp)
movl -0xec(%rbp), %r8d
movl -0xd0(%rbp), %ebx
movl -0x40(%rbp), %r15d
leaq -0x749(%rbp), %r12
leaq -0x748(%rbp), %r13
leaq -0x74a(%rbp), %rcx
movq %rcx, -0x1610(%rbp)
movl -0x744(%rbp), %edx
movq -0x100(%rbp), %r9
movq -0x108(%rbp), %r10
movq -0x48(%rbp), %r11
movq -0x58(%rbp), %r14
movl -0xec(%rbp), %ecx
movl %ecx, -0x1614(%rbp)
movq -0x38(%rbp), %rcx
movq %rcx, -0x1620(%rbp)
movq -0xc8(%rbp), %rcx
movq %rcx, -0x1630(%rbp)
xorl %ecx, %ecx
subq $0x1f0, %rsp            # imm = 0x1F0
movq %rsp, %rdi
movq %rdi, -0x1628(%rbp)
addq $0xf0, %rdi
movl $0x1a, %ecx
rep  movsq (%rsi), %es:(%rdi)
movq -0x1640(%rbp), %rsi
movq -0x1638(%rbp), %rdi
movq -0x1630(%rbp), %rcx
movups (%rax), %xmm3
movups 0x10(%rax), %xmm4
movups 0x20(%rax), %xmm5
movq -0x1628(%rbp), %rax
movups %xmm5, 0xd8(%rax)
movups %xmm4, 0xc8(%rax)
movups %xmm3, 0xb8(%rax)
movq %rcx, 0x1c0(%rax)
movq -0x1598(%rbp), %rcx
movq %rcx, 0xe8(%rax)
movq -0x1590(%rbp), %rcx
movq %rcx, 0xb0(%rax)
movq -0x1620(%rbp), %rcx
movq %rcx, 0xa8(%rax)
movl -0x1614(%rbp), %ecx
movl %ecx, 0xa0(%rax)
movq -0x1610(%rbp), %rcx
movq %r14, 0x98(%rax)
movq -0x15b8(%rbp), %r14
movq %r11, 0x90(%rax)
movq -0x15c0(%rbp), %r11
movq %r10, 0x88(%rax)
movq -0x15c8(%rbp), %r10
movq %r9, 0x80(%rax)
movq -0x15d0(%rbp), %r9
movl %edx, 0x78(%rax)
movq -0x15a8(%rbp), %rdx
movq %rcx, 0x70(%rax)
movq -0x15b0(%rbp), %rcx
movq %r13, 0x68(%rax)
movq %r12, 0x60(%rax)
movl %r15d, 0x58(%rax)
movq %r14, 0x50(%rax)
movl %ebx, 0x48(%rax)
movq %r11, 0x40(%rax)
movq %r10, 0x38(%rax)
movq %r9, 0x30(%rax)
leaq -0x14ac(%rbp), %r9
movq %r9, 0x28(%rax)
movl %r8d, 0x20(%rax)
movq %rdx, 0x10(%rax)
movq %rcx, 0x8(%rax)
movq $0x0, 0x1e0(%rax)
movq $0x0, 0x1d8(%rax)
movq $0x0, 0x1d0(%rax)
movq $0x0, 0x1c8(%rax)
movq $0x0, 0x18(%rax)
movq $0x0, (%rax)
xorl %eax, %eax
movl %eax, %r9d
leaq -0xd94(%rbp), %rdx
movq %r9, %rcx
movq %r9, %r8
callq 0x58c00
addq $0x1f0, %rsp            # imm = 0x1F0
movl -0x1508(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1508(%rbp)
jmp 0x5bdce
jmp 0x5c084
movl -0x1504(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1504(%rbp)
jmp 0x5bcc1
leaq -0x1560(%rbp), %rdi
leaq 0x30092(%rip), %rax     # 0x8c138
movq (%rax), %rax
movslq -0x1494(%rbp), %rcx
movsbl (%rax,%rcx), %edx
movq -0x58(%rbp), %rcx
movslq -0x1490(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rcx
addq $0xd, %rcx
leaq 0x224bd(%rip), %rsi     # 0x7e58e
movb $0x0, %al
callq 0x1200
movq -0x6f0(%rbp), %rdi
leaq -0x1560(%rbp), %rdx
leaq 0x202b1(%rip), %rsi     # 0x7c39e
movb $0x0, %al
callq 0x1150
movq -0x6e8(%rbp), %rdi
leaq -0x1560(%rbp), %rdx
leaq 0x20295(%rip), %rsi     # 0x7c39e
movb $0x0, %al
callq 0x1150
movl $0x0, -0x1504(%rbp)
cmpl $0x14, -0x1504(%rbp)
jge 0x5c1f4
movl -0x1504(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1508(%rbp)
cmpl $0x14, -0x1508(%rbp)
jge 0x5c1de
movq -0x6f0(%rbp), %rax
movq %rax, -0x1648(%rbp)
movslq -0x1504(%rbp), %rcx
leaq -0xd90(%rbp), %rax
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movslq -0x1508(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
callq 0x1220
movq -0x1648(%rbp), %rdi
leaq 0x25d0d(%rip), %rsi     # 0x81e96
movb $0x1, %al
callq 0x1150
movq -0x6e8(%rbp), %rdi
movslq -0x1504(%rbp), %rcx
leaq -0x1430(%rbp), %rax
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movslq -0x1508(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x207da(%rip), %rsi     # 0x7c99d
movb $0x1, %al
callq 0x1150
movl -0x1508(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1508(%rbp)
jmp 0x5c136
jmp 0x5c1e0
movl -0x1504(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1504(%rbp)
jmp 0x5c11a
movq -0x6f0(%rbp), %rdi
leaq 0x21e76(%rip), %rsi     # 0x7e078
movb $0x0, %al
callq 0x1150
movq -0x6e8(%rbp), %rdi
leaq 0x21e61(%rip), %rsi     # 0x7e078
movb $0x0, %al
callq 0x1150
movq -0x14a0(%rbp), %rax
movq %rax, %rsp
movl -0x1490(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1490(%rbp)
jmp 0x5b1dc
movq -0x6d8(%rbp), %rdi
callq 0x10a0
movq -0x6e0(%rbp), %rdi
callq 0x10a0
cmpq $0x0, -0x700(%rbp)
je 0x5c26a
movq -0x700(%rbp), %rdi
callq 0x10a0
cmpq $0x0, -0x708(%rbp)
je 0x5c280
movq -0x708(%rbp), %rdi
callq 0x10a0
cmpq $0x0, -0x6e8(%rbp)
je 0x5c296
movq -0x6e8(%rbp), %rdi
callq 0x10a0
cmpq $0x0, -0x6f0(%rbp)
je 0x5c2ac
movq -0x6f0(%rbp), %rdi
callq 0x10a0
imull $0x13, 0x110(%rbp), %eax
movl %eax, -0x1564(%rbp)
leaq -0x600(%rbp), %rdi
movq 0x118(%rbp), %rdx
leaq 0x25bd9(%rip), %rsi     # 0x81ea7
movb $0x0, %al
callq 0x1200
leaq -0x600(%rbp), %rdi
leaq 0x2008f(%rip), %rsi     # 0x7c372
callq 0x11b0
movq %rax, -0x1570(%rbp)
leaq -0x600(%rbp), %rsi
leaq 0x25bbf(%rip), %rdi     # 0x81ebc
movb $0x0, %al
callq 0x10d0
movq -0x1570(%rbp), %rdi
leaq 0x25bd5(%rip), %rsi     # 0x81ee7
movb $0x0, %al
callq 0x1150
movq -0x1570(%rbp), %rdi
movl -0x1564(%rbp), %edx
leaq 0x25bdd(%rip), %rsi     # 0x81f0a
movb $0x0, %al
callq 0x1150
movq -0x1570(%rbp), %rdi
leaq 0x25bf5(%rip), %rsi     # 0x81f37
movb $0x0, %al
callq 0x1150
movl $0x0, -0x1574(%rbp)
movl -0x1574(%rbp), %eax
cmpl -0xec(%rbp), %eax
jge 0x5c415
movq -0x15a0(%rbp), %rax
movq -0x1570(%rbp), %rcx
movq %rcx, -0x1660(%rbp)
movq -0x58(%rbp), %rcx
movslq -0x1574(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movsbl 0x13(%rcx), %ecx
movl %ecx, -0x1654(%rbp)
movl -0x1574(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, -0x1650(%rbp)
movq -0xf8(%rbp), %rcx
movslq -0x1574(%rbp), %rdx
movl (%rcx,%rdx,4), %ecx
movl %ecx, -0x164c(%rbp)
movslq -0x1574(%rbp), %rcx
movsd (%rax,%rcx,8), %xmm0
cvtsi2sdl -0x1564(%rbp), %xmm1
divsd %xmm1, %xmm0
callq 0x1220
movq -0x1660(%rbp), %rdi
movl -0x1654(%rbp), %edx
movl -0x1650(%rbp), %ecx
movl -0x164c(%rbp), %r8d
leaq 0x25b6d(%rip), %rsi     # 0x81f67
movb $0x1, %al
callq 0x1150
movl -0x1574(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1574(%rbp)
jmp 0x5c353
movq -0x1570(%rbp), %rdi
callq 0x10a0
leaq 0x21c50(%rip), %rdi     # 0x7e078
movb $0x0, %al
callq 0x10d0
movq -0xd8(%rbp), %rax
movq %rax, %rsp
leaq -0x28(%rbp), %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax,%rax)