// File: /workspace/github_c_makefile_star2_O0/ugobas[P]tnm/allostery.c
// Function: Binding_sites
void Binding_sites(int *site,
		   float *Prof_dir, float **Coup_dir,
		   float *Prof_coord, float **Coup_coord,
		   float *Prof_proximity, float **Coup_proximity, 
		   float *Prof_deformation, float **Coup_deformation,
		   //float *Prof_deformation_dist,float **Coup_deformation_dist,
		   float *Prof_dr_dir, float **Coup_dr_dir,
		   int *atomres, char **pdbres, char *amm, 
		   int Na, char *chain, int Nchain,
		   struct residue *seq, int Nres,
		   char *pdb, char *nameout1, char *SITES)
{
  int numran=1000; int i, j, k;
  
  int NMAX=1000;
  int *site_res[NMAX], nres_site[NMAX];
  char *chain_res[NMAX], *description[NMAX], file_site[200];
  int PRINT_SITE=1;  // Print active site read in the PDB?
  printf("Reading binding sites\n");
  int N_sites=
    Read_sites(site_res, nres_site, chain_res, description, file_site,
	       NMAX, SITES, pdb, chain, Nchain, seq, Nres,PRINT_SITE);
  printf("%d binding sites read\n", N_sites);
  if(N_sites==0)return;

  /*
  int NMAX=1000, SMAX=80, N_sites=0;
  int nres_site[NMAX]; char *chain_res[NMAX];
  for(i=0; i<NMAX; i++)chain_res[i]=malloc(SMAX*sizeof(char));
  char *description[NMAX]; for(i=0; i<NMAX; i++)description[i]=NULL;
  int **site_res=Allocate_mat2_i(NMAX,SMAX);
  char file_site[200];
  if(SITES[0]!='\0'){
    N_sites=Read_sites_file(site_res, chain_res, nres_site, description,
			    SITES, chain, seq, Nres, NMAX, SMAX);
    if(N_sites)strcpy(file_site, SITES);
  }
  if(N_sites==0){
    N_sites=Read_sites_PDB(site_res, chain_res, nres_site, description,
			   pdb, chain, seq, Nres, NMAX, SMAX);
    if(N_sites)strcpy(file_site, pdb);
    // Print site
    if(PRINT_SITE && N_sites)
      Print_sites(site_res, nres_site, description, N_sites,
		  seq, pdb, chain);
  }
  if(N_sites==0)return;
  for(i=0; i<N_sites; i++){
    if(description[i]==NULL){
      description[i]=malloc(10*sizeof(char));
      sprintf(description[i], "site%d", i+1);
    }else{
      char *ptr=description[i];
      while(*ptr!='\0'){
	if(*ptr=='\n'){*ptr='\0'; break;} ptr++;
      } 
    }
  }
  int S_sites=0;
  for(i=0; i<N_sites; i++){
    if(nres_site[i]>0)S_sites++;
  }
  if(S_sites==0)return;
  */

  // Testing active sites
  int numcoup=5, icoup=0;
  float *prof[numcoup], **coup[numcoup];
  char name_p[numcoup][40];
  if(Coup_dir){
    prof[icoup]=Prof_dir;
    coup[icoup]=Coup_dir;
    strcpy(name_p[icoup], "directionality");
    icoup++;
  }
  if(Coup_coord){
    prof[icoup]=Prof_coord;
    coup[icoup]=Coup_coord;
    strcpy(name_p[icoup], "coordination");
    icoup++;
  }
  if(Coup_proximity){
    prof[icoup]=Prof_proximity;
    coup[icoup]=Coup_proximity;
    strcpy(name_p[icoup], "proximity");
    icoup++;
  }
  if(Coup_deformation){
    prof[icoup]=Prof_deformation;
    coup[icoup]=Coup_deformation;
    strcpy(name_p[icoup], "deformation");
    icoup++;
  }
  if(Coup_dr_dir){
    prof[icoup]=Prof_dr_dir;
    coup[icoup]=Coup_dr_dir;
    strcpy(name_p[icoup], "covariance");
    icoup++;
  }

  /*if(Coup_deformation_dist){
    prof[icoup]=Prof_deformation_dist;
    coup[icoup]=Coup_deformation_dist;
    strcpy(name_p[icoup], "deformation_dist");
    icoup++;
    }*/

  int *site_res_ran[numran];
  for(j=0; j<numran; j++)
    site_res_ran[j]=malloc(Nres*sizeof(int *));

  char nameout[200];
  sprintf(nameout, "%s.binding_sites.dat", nameout1);
  FILE *file_out=fopen(nameout, "w");
  printf("Writing %s\n", nameout);
  fprintf(file_out, "# read binding sites in file %s\n", file_site);
  fprintf(file_out, "# profile type %c\n", PROF_TYPE);
  fprintf(file_out, "# N= %d, %d random sites\n", Na, numran);
  fprintf(file_out, "### 1=nres\t2=nchain"); j=3;
  for(k=0; k<icoup; k++){
    fprintf(file_out, "\t%d=<%s_prof>\t%d=Z(%s_prof)\t%d=P>(%s_prof)",
	    j, name_p[k], j+1, name_p[k], j+2, name_p[k]); j+=3;
    if(PRINT_RAN){
      fprintf(file_out, "\t%d=E(%s_p_ran>)\t%d=sigma(%s_p_ran>)",
	      j, name_p[k], j+1, name_p[k]); j+=2;
    }
    fprintf(file_out, "\t%d=<%s_coup>\t%d=Z(%s_coup)\t%d=P>(%s_coup)",
	    j, name_p[k], j+1, name_p[k], j+2, name_p[k]); j+=3;
    if(PRINT_RAN){
      fprintf(file_out, "\t%d=E(%s_p_ran>)\t%d=sigma(%s_p_ran>)",
	      j, name_p[k], j+1, name_p[k]); j+=2;
    }
  }
  fprintf(file_out, "\n");

  // Set chains
  char res_chain[Nres]; for(i=0; i<Nres; i++)res_chain[i]=seq[i].chain;
  char lab_chain[Nres]; int ini_chain[Nres], end_chain[Nres], ichain[Nres];
  //int Nchain=
  Count_chains(ichain, ini_chain, end_chain, lab_chain,res_chain, NULL, Nres);

  struct site_results site_results[numcoup], *res;
  int atom_site[Na]; for(i=0; i<Na; i++)atom_site[i]=0;
  int min_chain[Na], max_chain[Na], all_chain[Na];
  char chain_lab[Na];
  for(i=0; i<N_sites; i++){
    int nr=nres_site[i]; //if(nr<=1)continue;
    int *isite=site_res[i];
    int nchain=Count_chains(ichain, min_chain, max_chain, chain_lab,
			    chain_res[i], isite, nr);
    Identify_chains(all_chain, chain_lab, nchain, lab_chain, Nchain);
    fprintf(file_out, "## %s\n", description[i]);
    fprintf(file_out, "%d\t%d", nr, nchain);
    for(j=0; j<numran; j++){
      Random_sites(site_res_ran[j], nr, isite,
		   ichain, min_chain, max_chain, all_chain, nchain,
		   ini_chain, end_chain);
    }
    res=site_results;
    for(k=0; k<icoup; k++){
      Test_site(res, atom_site, prof[k], coup[k], Na,
		isite, site_res_ran, numran, nr, atomres);
      fprintf(file_out, "\t%.3g\t%.1f\t%.3f",
	      res->prof, res->Z_p, res->P_p);
      if(PRINT_RAN)
	fprintf(file_out, "\t%.3g\t%.1f", res->p_ran1, res->p_ran2);
      fprintf(file_out, "\t%.3g\t%.1f\t%.3f",
	      res->coup, res->Z_c, res->P_c); //->c_ran1
      if(PRINT_RAN)
	fprintf(file_out, "\t%.3g\t%.1f", res->c_ran1, res->c_ran2);
      res++;
    }
    fprintf(file_out, "\n");
  }
  fclose(file_out);

  // Profile for binding residues
  /*float ave_p[icoup];
  for(k=0; k<icoup; k++){
    double sum=0; float *p=prof[k];
    for(i=0; i<Na; i++)sum+=p[i];
    ave_p[k]=sum/Na;
    }*/

  sprintf(nameout, "%s.binding_residues.dat", nameout1);
  file_out=fopen(nameout, "w");
  printf("Writing %s\n", nameout);
  fprintf(file_out, "#res\taa\tchain");
  for(k=0; k<icoup; k++){
    fprintf(file_out, "\t%s_p", name_p[k]);
  }
  fprintf(file_out, "\n");
  for(i=0; i<Na; i++){
    site[i]=0;
    if(atom_site[i]==0)continue;
    if(atom_site[i]<0){
      int r=-atom_site[i];
      printf("WARNING, reference atom of res. %d  %c%s%c does not exist",
	     r, seq[r].amm, seq[r].pdbres, seq[r].chain);
      continue;
    }
    site[i]=1;
    //fprintf(file_out, "%s\t%c\t%c", pdbres[i], amm[i], chain[i]);
    fprintf(file_out, "%s\t%c\t%c", seq[i].pdbres, seq[i].amm, seq[i].chain);
    for(k=0; k<icoup; k++){
      fprintf(file_out, "\t%.3g", prof[k][i]); ///ave_p[k]
    }
    fprintf(file_out, "\n");
  }
  fclose(file_out);

  // Test pairs of sites
  if(N_sites<2){
    for(j=0; j<numran; j++)free(site_res_ran[j]);
    return;
  }
  sprintf(nameout, "%s.pairs_sites.dat", nameout1);
  printf("Writing %s\n", nameout);
  file_out=fopen(nameout, "w");
  fprintf(file_out, "# read binding sites in file %s\n", file_site);
  fprintf(file_out, "# profile type %c\n", PROF_TYPE);
  fprintf(file_out, "# N= %d, %d random sites\n", Na, numran);
  fprintf(file_out, "###1=nres1\t2=nres2\t3=overlap"); j=4;
  for(k=0; k<icoup; k++){
    fprintf(file_out, "\t%d=<%s_coup>\t%d=Z(%s_coup)\t%d=P>(%s_coup)",
	    j, name_p[k], j+1, name_p[k], j+2, name_p[k]); j+=3;
  }
  fprintf(file_out, "\n");

  int coupled_site[Nres];
  char chain_site[Nres];
  for(i=0; i<N_sites; i++){
    int n1=nres_site[i]; if(n1<=0)continue;
    int *isite=site_res[i];
    for(k=0; k<n1; k++){
      coupled_site[k]=isite[k]; chain_site[k]=chain_res[i][k];
    }
    for(j=i+1; j<N_sites; j++){
      int n2=nres_site[j]; if(n2<=0)continue;
      int *jsite=site_res[j], l=n1;
      for(k=0; k<n2; k++){
	coupled_site[l]=jsite[k]; chain_site[l]=chain_res[j][k]; l++;
      }
      int nchain=Count_chains(ichain, min_chain, max_chain, chain_lab,
			      chain_site, coupled_site, l);
      Identify_chains(all_chain, chain_lab, nchain, lab_chain, Nchain);
      for(k=0; k<numran; k++){
	Random_sites(site_res_ran[k], l, coupled_site,
		     ichain, min_chain, max_chain, all_chain, nchain,
		     ini_chain, end_chain);
      }
      fprintf(file_out, "## %s\t%s", description[i], description[j]);
      if(Nchain>1)fprintf(file_out, "\t%d chains", nchain);
      fprintf(file_out, "\n");
      int q=Site_overlap(isite, n1, jsite, n2);
      fprintf(file_out, "%d\t%d\t%d", n1, n2, q);
      res=site_results;
      for(k=0; k<icoup; k++){
	Test_pairs(res, atom_site, prof[k], coup[k], Na,
		   coupled_site, site_res_ran, numran, n1, l, atomres);
	fprintf(file_out, "\t%.3g\t%.1f\t%.3f",
		res->coup, res->Z_c, res->P_c);
	res++;
      }
      fprintf(file_out, "\n");
    }
  }
  fclose(file_out);
  for(j=0; j<numran; j++)free(site_res_ran[j]);

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x3b0, %rsp            # imm = 0x3B0
movq 0x88(%rbp), %rax
movq 0x80(%rbp), %rax
movq 0x78(%rbp), %rax
movl 0x70(%rbp), %eax
movq 0x68(%rbp), %rax
movl 0x60(%rbp), %eax
movq 0x58(%rbp), %rax
movl 0x50(%rbp), %eax
movq 0x48(%rbp), %rax
movq 0x40(%rbp), %rax
movq 0x38(%rbp), %rax
movq 0x30(%rbp), %rax
movq 0x28(%rbp), %rax
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x28(%rbp)
movq %rsi, -0x30(%rbp)
movq %rdx, -0x38(%rbp)
movq %rcx, -0x40(%rbp)
movq %r8, -0x48(%rbp)
movq %r9, -0x50(%rbp)
movl $0x3e8, -0x54(%rbp)     # imm = 0x3E8
movl $0x3e8, -0x64(%rbp)     # imm = 0x3E8
movl -0x64(%rbp), %eax
movq %rsp, %rcx
movq %rcx, -0x70(%rbp)
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x340(%rbp)
movq %rcx, %rsp
movq %rax, -0x78(%rbp)
movl -0x64(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x338(%rbp)
movq %rcx, %rsp
movq %rax, -0x80(%rbp)
movl -0x64(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x330(%rbp)
movq %rcx, %rsp
movq %rax, -0x88(%rbp)
movl -0x64(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x328(%rbp)
movq %rcx, %rsp
movq %rax, -0x90(%rbp)
movl $0x1, -0x164(%rbp)
leaq 0x1fc67(%rip), %rdi     # 0x82a5c
movb $0x0, %al
callq 0x10d0
movq -0x340(%rbp), %rdi
movq -0x338(%rbp), %rsi
movq -0x330(%rbp), %rdx
movq -0x328(%rbp), %rcx
leaq -0x160(%rbp), %r8
movl -0x64(%rbp), %r9d
movq 0x88(%rbp), %r12
movq 0x78(%rbp), %r15
movq 0x58(%rbp), %r14
movl 0x60(%rbp), %ebx
movq 0x68(%rbp), %r11
movl 0x70(%rbp), %r10d
movl -0x164(%rbp), %eax
subq $0x40, %rsp
movq %r12, (%rsp)
movq %r15, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movl %ebx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movl %r10d, 0x28(%rsp)
movl %eax, 0x30(%rsp)
callq 0x67e40
addq $0x40, %rsp
movl %eax, -0x168(%rbp)
movl -0x168(%rbp), %esi
leaq 0x1fbf0(%rip), %rdi     # 0x82a73
movb $0x0, %al
callq 0x10d0
cmpl $0x0, -0x168(%rbp)
jne 0x62ea2
movl $0x1, -0x16c(%rbp)
jmp 0x64265
movl $0x5, -0x170(%rbp)
movl $0x0, -0x174(%rbp)
movl -0x170(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x358(%rbp)
movq %rcx, %rsp
movq %rax, -0x180(%rbp)
movl -0x170(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x350(%rbp)
movq %rcx, %rsp
movq %rax, -0x188(%rbp)
movl -0x170(%rbp), %eax
leaq (%rax,%rax,4), %rcx
leaq 0xf(,%rcx,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x348(%rbp)
movq %rcx, %rsp
movq %rax, -0x190(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x62f98
movq -0x348(%rbp), %rdi
movq -0x350(%rbp), %rax
movq -0x358(%rbp), %rcx
movq -0x30(%rbp), %rsi
movslq -0x174(%rbp), %rdx
movq %rsi, (%rcx,%rdx,8)
movq -0x38(%rbp), %rdx
movslq -0x174(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movslq -0x174(%rbp), %rax
imulq $0x28, %rax, %rax
addq %rax, %rdi
leaq 0x1fb06(%rip), %rsi     # 0x82a8a
callq 0x1060
movl -0x174(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x174(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0x62ffb
movq -0x348(%rbp), %rdi
movq -0x350(%rbp), %rax
movq -0x358(%rbp), %rcx
movq -0x40(%rbp), %rsi
movslq -0x174(%rbp), %rdx
movq %rsi, (%rcx,%rdx,8)
movq -0x48(%rbp), %rdx
movslq -0x174(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movslq -0x174(%rbp), %rax
imulq $0x28, %rax, %rax
addq %rax, %rdi
leaq 0x1fab2(%rip), %rsi     # 0x82a99
callq 0x1060
movl -0x174(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x174(%rbp)
cmpq $0x0, 0x10(%rbp)
je 0x6305e
movq -0x348(%rbp), %rdi
movq -0x350(%rbp), %rax
movq -0x358(%rbp), %rcx
movq -0x50(%rbp), %rsi
movslq -0x174(%rbp), %rdx
movq %rsi, (%rcx,%rdx,8)
movq 0x10(%rbp), %rdx
movslq -0x174(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movslq -0x174(%rbp), %rax
imulq $0x28, %rax, %rax
addq %rax, %rdi
leaq 0x1f58c(%rip), %rsi     # 0x825d6
callq 0x1060
movl -0x174(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x174(%rbp)
cmpq $0x0, 0x20(%rbp)
je 0x630c1
movq -0x348(%rbp), %rdi
movq -0x350(%rbp), %rax
movq -0x358(%rbp), %rcx
movq 0x18(%rbp), %rsi
movslq -0x174(%rbp), %rdx
movq %rsi, (%rcx,%rdx,8)
movq 0x20(%rbp), %rdx
movslq -0x174(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movslq -0x174(%rbp), %rax
imulq $0x28, %rax, %rax
addq %rax, %rdi
leaq 0x1f9f9(%rip), %rsi     # 0x82aa6
callq 0x1060
movl -0x174(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x174(%rbp)
cmpq $0x0, 0x30(%rbp)
je 0x63124
movq -0x348(%rbp), %rdi
movq -0x350(%rbp), %rax
movq -0x358(%rbp), %rcx
movq 0x28(%rbp), %rsi
movslq -0x174(%rbp), %rdx
movq %rsi, (%rcx,%rdx,8)
movq 0x30(%rbp), %rdx
movslq -0x174(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movslq -0x174(%rbp), %rax
imulq $0x28, %rax, %rax
addq %rax, %rdi
leaq 0x1f9a2(%rip), %rsi     # 0x82ab2
callq 0x1060
movl -0x174(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x174(%rbp)
movl -0x54(%rbp), %eax
leaq 0xf(,%rax,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x360(%rbp)
movq %rcx, %rsp
movq %rax, -0x198(%rbp)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x54(%rbp), %eax
jge 0x63183
movslq 0x70(%rbp), %rdi
shlq $0x3, %rdi
callq 0x1180
movq %rax, %rdx
movq -0x360(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x63151
leaq -0x260(%rbp), %rdi
movq 0x80(%rbp), %rdx
leaq 0x1f925(%rip), %rsi     # 0x82abd
movb $0x0, %al
callq 0x1200
leaq -0x260(%rbp), %rdi
leaq 0x191c5(%rip), %rsi     # 0x7c372
callq 0x11b0
movq %rax, -0x268(%rbp)
leaq -0x260(%rbp), %rsi
leaq 0x14327(%rip), %rdi     # 0x774ee
movb $0x0, %al
callq 0x10d0
movq -0x268(%rbp), %rdi
leaq -0x160(%rbp), %rdx
leaq 0x1f8ef(%rip), %rsi     # 0x82ad2
movb $0x0, %al
callq 0x1150
movq -0x268(%rbp), %rdi
leaq 0x2700c(%rip), %rax     # 0x8a204
movsbl (%rax), %edx
leaq 0x1f8f1(%rip), %rsi     # 0x82af3
movb $0x0, %al
callq 0x1150
movq -0x268(%rbp), %rdi
movl 0x50(%rbp), %edx
movl -0x54(%rbp), %ecx
leaq 0x1f8e9(%rip), %rsi     # 0x82b06
movb $0x0, %al
callq 0x1150
movq -0x268(%rbp), %rdi
leaq 0x1f8ee(%rip), %rsi     # 0x82b20
movb $0x0, %al
callq 0x1150
movl $0x3, -0x5c(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x174(%rbp), %eax
jge 0x633ea
movq -0x348(%rbp), %rax
movq -0x268(%rbp), %rdi
movl -0x5c(%rbp), %edx
movslq -0x60(%rbp), %rcx
imulq $0x28, %rcx, %rsi
movq %rax, %rcx
addq %rsi, %rcx
movl -0x5c(%rbp), %r8d
addl $0x1, %r8d
movslq -0x60(%rbp), %rsi
imulq $0x28, %rsi, %rsi
movq %rax, %r9
addq %rsi, %r9
movl -0x5c(%rbp), %r10d
addl $0x2, %r10d
movslq -0x60(%rbp), %rsi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
leaq 0x1f88f(%rip), %rsi     # 0x82b34
subq $0x10, %rsp
movl %r10d, (%rsp)
movq %rax, 0x8(%rsp)
movb $0x0, %al
callq 0x1150
addq $0x10, %rsp
movl -0x5c(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x5c(%rbp)
cmpl $0x0, 0x3a783(%rip)     # 0x9da50
je 0x63318
movq -0x348(%rbp), %r9
movq -0x268(%rbp), %rdi
movl -0x5c(%rbp), %edx
movslq -0x60(%rbp), %rax
imulq $0x28, %rax, %rax
movq %r9, %rcx
addq %rax, %rcx
movl -0x5c(%rbp), %r8d
addl $0x1, %r8d
movslq -0x60(%rbp), %rax
imulq $0x28, %rax, %rax
addq %rax, %r9
leaq 0x1f857(%rip), %rsi     # 0x82b5f
movb $0x0, %al
callq 0x1150
movl -0x5c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x5c(%rbp)
movq -0x348(%rbp), %rax
movq -0x268(%rbp), %rdi
movl -0x5c(%rbp), %edx
movslq -0x60(%rbp), %rcx
imulq $0x28, %rcx, %rsi
movq %rax, %rcx
addq %rsi, %rcx
movl -0x5c(%rbp), %r8d
addl $0x1, %r8d
movslq -0x60(%rbp), %rsi
imulq $0x28, %rsi, %rsi
movq %rax, %r9
addq %rsi, %r9
movl -0x5c(%rbp), %r10d
addl $0x2, %r10d
movslq -0x60(%rbp), %rsi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
leaq 0x1f81d(%rip), %rsi     # 0x82b84
subq $0x10, %rsp
movl %r10d, (%rsp)
movq %rax, 0x8(%rsp)
movb $0x0, %al
callq 0x1150
addq $0x10, %rsp
movl -0x5c(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x5c(%rbp)
cmpl $0x0, 0x3a6c1(%rip)     # 0x9da50
je 0x633da
movq -0x348(%rbp), %r9
movq -0x268(%rbp), %rdi
movl -0x5c(%rbp), %edx
movslq -0x60(%rbp), %rax
imulq $0x28, %rax, %rax
movq %r9, %rcx
addq %rax, %rcx
movl -0x5c(%rbp), %r8d
addl $0x1, %r8d
movslq -0x60(%rbp), %rax
imulq $0x28, %rax, %rax
addq %rax, %r9
leaq 0x1f795(%rip), %rsi     # 0x82b5f
movb $0x0, %al
callq 0x1150
movl -0x5c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x5c(%rbp)
jmp 0x633dc
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x63247
movq -0x268(%rbp), %rdi
leaq 0x1ac80(%rip), %rsi     # 0x7e078
xorl %eax, %eax
callq 0x1150
movl 0x70(%rbp), %eax
movq %rax, %rdx
addq $0xf, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x368(%rbp)
movq %rcx, %rsp
movq %rax, -0x270(%rbp)
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl 0x70(%rbp), %eax
jge 0x6345e
movq -0x368(%rbp), %rax
movq 0x68(%rbp), %rcx
movslq -0x58(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movb 0xc(%rcx), %dl
movslq -0x58(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x6342b
movq -0x368(%rbp), %r8
movl 0x70(%rbp), %eax
movq %rax, %rdx
addq $0xf, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x398(%rbp)
movq %rcx, %rsp
movq %rax, -0x278(%rbp)
movl 0x70(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rsi
subq %rdx, %rsi
movq %rsi, -0x390(%rbp)
movq %rsi, %rsp
movq %rax, -0x280(%rbp)
movl 0x70(%rbp), %eax
leaq 0xf(,%rax,4), %rdi
andq $-0x10, %rdi
movq %rsp, %rdx
subq %rdi, %rdx
movq %rdx, -0x388(%rbp)
movq %rdx, %rsp
movq %rax, -0x288(%rbp)
movl 0x70(%rbp), %eax
leaq 0xf(,%rax,4), %r9
andq $-0x10, %r9
movq %rsp, %rdi
subq %r9, %rdi
movq %rdi, -0x380(%rbp)
movq %rdi, %rsp
movq %rax, -0x290(%rbp)
movl 0x70(%rbp), %r9d
subq $0x10, %rsp
movq %rsp, %rax
movl %r9d, (%rax)
xorl %eax, %eax
movl %eax, %r9d
callq 0x65c50
addq $0x10, %rsp
movl -0x170(%rbp), %eax
leaq (%rax,%rax,4), %rcx
leaq 0xf(,%rcx,8), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x378(%rbp)
movq %rcx, %rsp
movq %rax, -0x298(%rbp)
movl 0x50(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x370(%rbp)
movq %rcx, %rsp
movq %rax, -0x2a8(%rbp)
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl 0x50(%rbp), %eax
jge 0x63597
movq -0x370(%rbp), %rax
movslq -0x58(%rbp), %rcx
movl $0x0, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x63572
movl 0x50(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x3b8(%rbp)
movq %rcx, %rsp
movq %rax, -0x2b0(%rbp)
movl 0x50(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x3b0(%rbp)
movq %rcx, %rsp
movq %rax, -0x2b8(%rbp)
movl 0x50(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x3a8(%rbp)
movq %rcx, %rsp
movq %rax, -0x2c0(%rbp)
movl 0x50(%rbp), %eax
movq %rax, %rdx
addq $0xf, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x3a0(%rbp)
movq %rcx, %rsp
movq %rax, -0x2c8(%rbp)
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x168(%rbp), %eax
jge 0x63987
movq -0x3a0(%rbp), %rcx
movq -0x3b0(%rbp), %rdx
movq -0x3b8(%rbp), %rsi
movq -0x380(%rbp), %rdi
movq -0x330(%rbp), %rax
movq -0x340(%rbp), %r8
movq -0x338(%rbp), %r9
movslq -0x58(%rbp), %r10
movl (%r9,%r10,4), %r9d
movl %r9d, -0x2cc(%rbp)
movslq -0x58(%rbp), %r9
movq (%r8,%r9,8), %r8
movq %r8, -0x2d8(%rbp)
movslq -0x58(%rbp), %r8
movq (%rax,%r8,8), %r8
movq -0x2d8(%rbp), %r9
movl -0x2cc(%rbp), %eax
subq $0x10, %rsp
movl %eax, (%rsp)
callq 0x65c50
movq -0x3a8(%rbp), %rdi
movq -0x3a0(%rbp), %rsi
movq -0x398(%rbp), %rcx
addq $0x10, %rsp
movl %eax, -0x2dc(%rbp)
movl -0x2dc(%rbp), %edx
movl 0x60(%rbp), %r8d
callq 0x65d90
movq -0x328(%rbp), %rax
movq -0x268(%rbp), %rdi
movslq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
leaq 0x1bbcb(%rip), %rsi     # 0x7f2ca
movb $0x0, %al
callq 0x1150
movq -0x268(%rbp), %rdi
movl -0x2cc(%rbp), %edx
movl -0x2dc(%rbp), %ecx
leaq 0x1f560(%rip), %rsi     # 0x82c80
movb $0x0, %al
callq 0x1150
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x54(%rbp), %eax
jge 0x637ae
movq -0x388(%rbp), %rax
movq -0x390(%rbp), %r10
movq -0x3a8(%rbp), %rbx
movq -0x3b0(%rbp), %r9
movq -0x3b8(%rbp), %r8
movq -0x380(%rbp), %rcx
movq -0x360(%rbp), %rdx
movslq -0x5c(%rbp), %rsi
movq (%rdx,%rsi,8), %rdi
movl -0x2cc(%rbp), %esi
movq -0x2d8(%rbp), %rdx
movl -0x2dc(%rbp), %r11d
subq $0x20, %rsp
movq %rbx, (%rsp)
movl %r11d, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x66da0
addq $0x20, %rsp
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x6372e
movq -0x378(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x174(%rbp), %eax
jge 0x63964
movq -0x360(%rbp), %rbx
movq -0x370(%rbp), %rsi
movq -0x350(%rbp), %rax
movq -0x358(%rbp), %rcx
movq -0x2a0(%rbp), %rdi
movslq -0x60(%rbp), %rdx
movq (%rcx,%rdx,8), %rdx
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
movl 0x50(%rbp), %r8d
movq -0x2d8(%rbp), %r9
movl -0x54(%rbp), %r11d
movl -0x2cc(%rbp), %r10d
movq 0x38(%rbp), %rax
subq $0x20, %rsp
movq %rbx, (%rsp)
movl %r11d, 0x8(%rsp)
movl %r10d, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x662c0
addq $0x20, %rsp
movq -0x268(%rbp), %rdi
movq -0x2a0(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x2a0(%rbp), %rax
movss 0x8(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x2a0(%rbp), %rax
movss 0x4(%rax), %xmm2
cvtss2sd %xmm2, %xmm2
leaq 0x1f333(%rip), %rsi     # 0x82baf
movb $0x3, %al
callq 0x1150
cmpl $0x0, 0x3a1c6(%rip)     # 0x9da50
je 0x638c1
movq -0x268(%rbp), %rdi
movq -0x2a0(%rbp), %rax
movss 0x18(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x2a0(%rbp), %rax
movss 0x1c(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0x1f305(%rip), %rsi     # 0x82bbf
movb $0x2, %al
callq 0x1150
movq -0x268(%rbp), %rdi
movq -0x2a0(%rbp), %rax
movss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x2a0(%rbp), %rax
movss 0x14(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x2a0(%rbp), %rax
movss 0x10(%rax), %xmm2
cvtss2sd %xmm2, %xmm2
leaq 0x1f2b0(%rip), %rsi     # 0x82baf
movb $0x3, %al
callq 0x1150
cmpl $0x0, 0x3a143(%rip)     # 0x9da50
je 0x63944
movq -0x268(%rbp), %rdi
movq -0x2a0(%rbp), %rax
movss 0x20(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x2a0(%rbp), %rax
movss 0x24(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0x1f282(%rip), %rsi     # 0x82bbf
movb $0x2, %al
callq 0x1150
movq -0x2a0(%rbp), %rax
addq $0x28, %rax
movq %rax, -0x2a0(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x637c3
movq -0x268(%rbp), %rdi
leaq 0x1a706(%rip), %rsi     # 0x7e078
movb $0x0, %al
callq 0x1150
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x63635
movq -0x268(%rbp), %rdi
callq 0x10a0
leaq -0x260(%rbp), %rdi
movq 0x80(%rbp), %rdx
leaq 0x1f222(%rip), %rsi     # 0x82bca
movb $0x0, %al
callq 0x1200
leaq -0x260(%rbp), %rdi
leaq 0x189b5(%rip), %rsi     # 0x7c372
callq 0x11b0
movq %rax, -0x268(%rbp)
leaq -0x260(%rbp), %rsi
leaq 0x13b17(%rip), %rdi     # 0x774ee
movb $0x0, %al
callq 0x10d0
movq -0x268(%rbp), %rdi
leaq 0x1f1f6(%rip), %rsi     # 0x82be2
movb $0x0, %al
callq 0x1150
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x174(%rbp), %eax
jge 0x63a37
movq -0x348(%rbp), %rdx
movq -0x268(%rbp), %rdi
movslq -0x60(%rbp), %rax
imulq $0x28, %rax, %rax
addq %rax, %rdx
leaq 0x1f1cb(%rip), %rsi     # 0x82bf0
movb $0x0, %al
callq 0x1150
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x639fa
movq -0x268(%rbp), %rdi
leaq 0x1a633(%rip), %rsi     # 0x7e078
movb $0x0, %al
callq 0x1150
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl 0x50(%rbp), %eax
jge 0x63bd6
movq -0x370(%rbp), %rax
movq -0x28(%rbp), %rcx
movslq -0x58(%rbp), %rdx
movl $0x0, (%rcx,%rdx,4)
movslq -0x58(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x63a84
jmp 0x63bc8
movq -0x370(%rbp), %rax
movslq -0x58(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jge 0x63b07
movq -0x370(%rbp), %rcx
movslq -0x58(%rbp), %rdx
xorl %eax, %eax
subl (%rcx,%rdx,4), %eax
movl %eax, -0x2e0(%rbp)
movl -0x2e0(%rbp), %esi
movq 0x68(%rbp), %rax
movslq -0x2e0(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movsbl 0x13(%rax), %edx
movq 0x68(%rbp), %rcx
movslq -0x2e0(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rcx
addq $0xd, %rcx
movq 0x68(%rbp), %rax
movslq -0x2e0(%rbp), %rdi
shlq $0x5, %rdi
addq %rdi, %rax
movsbl 0xc(%rax), %r8d
leaq 0x1f0fb(%rip), %rdi     # 0x82bf6
movb $0x0, %al
callq 0x10d0
jmp 0x63bc8
movq -0x28(%rbp), %rax
movslq -0x58(%rbp), %rcx
movl $0x1, (%rax,%rcx,4)
movq -0x268(%rbp), %rdi
movq 0x68(%rbp), %rdx
movslq -0x58(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
addq $0xd, %rdx
movq 0x68(%rbp), %rax
movslq -0x58(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movsbl 0x13(%rax), %ecx
movq 0x68(%rbp), %rax
movslq -0x58(%rbp), %rsi
shlq $0x5, %rsi
addq %rsi, %rax
movsbl 0xc(%rax), %r8d
leaq 0x1f0d2(%rip), %rsi     # 0x82c30
movb $0x0, %al
callq 0x1150
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x174(%rbp), %eax
jge 0x63bb3
movq -0x358(%rbp), %rax
movq -0x268(%rbp), %rdi
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x58(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x18dfc(%rip), %rsi     # 0x7c99d
movb $0x1, %al
callq 0x1150
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x63b6c
movq -0x268(%rbp), %rdi
leaq 0x1a4b7(%rip), %rsi     # 0x7e078
movb $0x0, %al
callq 0x1150
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x63a53
movq -0x268(%rbp), %rdi
callq 0x10a0
cmpl $0x2, -0x168(%rbp)
jge 0x63c28
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x54(%rbp), %eax
jge 0x63c19
movq -0x360(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x1040
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x63bf2
movl $0x1, -0x16c(%rbp)
jmp 0x64265
leaq -0x260(%rbp), %rdi
movq 0x80(%rbp), %rdx
leaq 0x1effc(%rip), %rsi     # 0x82c39
movb $0x0, %al
callq 0x1200
leaq -0x260(%rbp), %rsi
leaq 0x1389c(%rip), %rdi     # 0x774ee
movb $0x0, %al
callq 0x10d0
leaq -0x260(%rbp), %rdi
leaq 0x1870b(%rip), %rsi     # 0x7c372
callq 0x11b0
movq %rax, -0x268(%rbp)
movq -0x268(%rbp), %rdi
leaq -0x160(%rbp), %rdx
leaq 0x1ee4a(%rip), %rsi     # 0x82ad2
movb $0x0, %al
callq 0x1150
movq -0x268(%rbp), %rdi
leaq 0x26567(%rip), %rax     # 0x8a204
movsbl (%rax), %edx
leaq 0x1ee4c(%rip), %rsi     # 0x82af3
movb $0x0, %al
callq 0x1150
movq -0x268(%rbp), %rdi
movl 0x50(%rbp), %edx
movl -0x54(%rbp), %ecx
leaq 0x1ee44(%rip), %rsi     # 0x82b06
movb $0x0, %al
callq 0x1150
movq -0x268(%rbp), %rdi
leaq 0x1ef75(%rip), %rsi     # 0x82c4c
movb $0x0, %al
callq 0x1150
movl $0x4, -0x5c(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x174(%rbp), %eax
jge 0x63d75
movq -0x348(%rbp), %rax
movq -0x268(%rbp), %rdi
movl -0x5c(%rbp), %edx
movslq -0x60(%rbp), %rcx
imulq $0x28, %rcx, %rsi
movq %rax, %rcx
addq %rsi, %rcx
movl -0x5c(%rbp), %r8d
addl $0x1, %r8d
movslq -0x60(%rbp), %rsi
imulq $0x28, %rsi, %rsi
movq %rax, %r9
addq %rsi, %r9
movl -0x5c(%rbp), %r10d
addl $0x2, %r10d
movslq -0x60(%rbp), %rsi
imulq $0x28, %rsi, %rsi
addq %rsi, %rax
leaq 0x1ee3e(%rip), %rsi     # 0x82b84
subq $0x10, %rsp
movl %r10d, (%rsp)
movq %rax, 0x8(%rsp)
movb $0x0, %al
callq 0x1150
addq $0x10, %rsp
movl -0x5c(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x5c(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x63cec
movq -0x268(%rbp), %rdi
leaq 0x1a2f5(%rip), %rsi     # 0x7e078
xorl %eax, %eax
callq 0x1150
movl 0x70(%rbp), %eax
leaq 0xf(,%rax,4), %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x3c8(%rbp)
movq %rcx, %rsp
movq %rax, -0x2e8(%rbp)
movl 0x70(%rbp), %eax
movq %rax, %rdx
addq $0xf, %rdx
andq $-0x10, %rdx
movq %rsp, %rcx
subq %rdx, %rcx
movq %rcx, -0x3c0(%rbp)
movq %rcx, %rsp
movq %rax, -0x2f0(%rbp)
movl $0x0, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl -0x168(%rbp), %eax
jge 0x64221
movq -0x338(%rbp), %rax
movslq -0x58(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x2f4(%rbp)
cmpl $0x0, -0x2f4(%rbp)
jg 0x63e0d
jmp 0x64213
movq -0x340(%rbp), %rax
movslq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x300(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x2f4(%rbp), %eax
jge 0x63e80
movq -0x3c0(%rbp), %rax
movq -0x330(%rbp), %rcx
movq -0x3c8(%rbp), %rdx
movq -0x300(%rbp), %rsi
movslq -0x60(%rbp), %rdi
movl (%rsi,%rdi,4), %edi
movslq -0x60(%rbp), %rsi
movl %edi, (%rdx,%rsi,4)
movslq -0x58(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x60(%rbp), %rdx
movb (%rcx,%rdx), %dl
movslq -0x60(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x63e2a
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x168(%rbp), %eax
jge 0x64211
movq -0x338(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x304(%rbp)
cmpl $0x0, -0x304(%rbp)
jg 0x63eba
jmp 0x64203
movq -0x340(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x310(%rbp)
movl -0x2f4(%rbp), %eax
movl %eax, -0x314(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x304(%rbp), %eax
jge 0x63f4e
movq -0x3c0(%rbp), %rax
movq -0x330(%rbp), %rcx
movq -0x3c8(%rbp), %rdx
movq -0x310(%rbp), %rsi
movslq -0x60(%rbp), %rdi
movl (%rsi,%rdi,4), %edi
movslq -0x314(%rbp), %rsi
movl %edi, (%rdx,%rsi,4)
movslq -0x5c(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x60(%rbp), %rdx
movb (%rcx,%rdx), %dl
movslq -0x314(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x314(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x314(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x63ee3
movq -0x3a0(%rbp), %rcx
movq -0x3c8(%rbp), %r9
movq -0x3c0(%rbp), %r8
movq -0x3b0(%rbp), %rdx
movq -0x3b8(%rbp), %rsi
movq -0x380(%rbp), %rdi
movl -0x314(%rbp), %eax
subq $0x10, %rsp
movl %eax, (%rsp)
callq 0x65c50
movq -0x3a8(%rbp), %rdi
movq -0x3a0(%rbp), %rsi
movq -0x398(%rbp), %rcx
addq $0x10, %rsp
movl %eax, -0x318(%rbp)
movl -0x318(%rbp), %edx
movl 0x60(%rbp), %r8d
callq 0x65d90
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x54(%rbp), %eax
jge 0x6403f
movq -0x388(%rbp), %rax
movq -0x390(%rbp), %r10
movq -0x3a8(%rbp), %rbx
movq -0x3b0(%rbp), %r9
movq -0x3b8(%rbp), %r8
movq -0x380(%rbp), %rcx
movq -0x3c8(%rbp), %rdx
movq -0x360(%rbp), %rsi
movslq -0x60(%rbp), %rdi
movq (%rsi,%rdi,8), %rdi
movl -0x314(%rbp), %esi
movl -0x318(%rbp), %r11d
subq $0x20, %rsp
movq %rbx, (%rsp)
movl %r11d, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x66da0
addq $0x20, %rsp
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x63fbf
movq -0x328(%rbp), %rax
movq -0x268(%rbp), %rdi
movslq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movslq -0x5c(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
leaq 0x1ec05(%rip), %rsi     # 0x82c69
movb $0x0, %al
callq 0x1150
cmpl $0x1, 0x60(%rbp)
jle 0x6408c
movq -0x268(%rbp), %rdi
movl -0x318(%rbp), %edx
leaq 0x1ebed(%rip), %rsi     # 0x82c72
movb $0x0, %al
callq 0x1150
movq -0x268(%rbp), %rdi
leaq 0x19fde(%rip), %rsi     # 0x7e078
movb $0x0, %al
callq 0x1150
movq -0x300(%rbp), %rdi
movl -0x2f4(%rbp), %esi
movq -0x310(%rbp), %rdx
movl -0x304(%rbp), %ecx
callq 0x691c0
movl %eax, -0x31c(%rbp)
movq -0x268(%rbp), %rdi
movl -0x2f4(%rbp), %edx
movl -0x304(%rbp), %ecx
movl -0x31c(%rbp), %r8d
leaq 0x1eb96(%rip), %rsi     # 0x82c7d
movb $0x0, %al
callq 0x1150
movq -0x378(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x174(%rbp), %eax
jge 0x641ee
movq -0x360(%rbp), %r14
movq -0x3c8(%rbp), %r9
movq -0x370(%rbp), %rsi
movq -0x350(%rbp), %rax
movq -0x358(%rbp), %rcx
movq -0x2a0(%rbp), %rdi
movslq -0x60(%rbp), %rdx
movq (%rcx,%rdx,8), %rdx
movslq -0x60(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
movl 0x50(%rbp), %r8d
movl -0x54(%rbp), %ebx
movl -0x2f4(%rbp), %r11d
movl -0x314(%rbp), %r10d
movq 0x38(%rbp), %rax
subq $0x30, %rsp
movq %r14, (%rsp)
movl %ebx, 0x8(%rsp)
movl %r11d, 0x10(%rsp)
movl %r10d, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x669c0
addq $0x30, %rsp
movq -0x268(%rbp), %rdi
movq -0x2a0(%rbp), %rax
movss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x2a0(%rbp), %rax
movss 0x14(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x2a0(%rbp), %rax
movss 0x10(%rax), %xmm2
cvtss2sd %xmm2, %xmm2
leaq 0x1e9e8(%rip), %rsi     # 0x82baf
movb $0x3, %al
callq 0x1150
movq -0x2a0(%rbp), %rax
addq $0x28, %rax
movq %rax, -0x2a0(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x64103
movq -0x268(%rbp), %rdi
leaq 0x19e7c(%rip), %rsi     # 0x7e078
movb $0x0, %al
callq 0x1150
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x63e89
jmp 0x64213
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x63ddc
movq -0x268(%rbp), %rdi
callq 0x10a0
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x54(%rbp), %eax
jge 0x6425b
movq -0x360(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x1040
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x64234
movl $0x0, -0x16c(%rbp)
movq -0x70(%rbp), %rax
movq %rax, %rsp
leaq -0x20(%rbp), %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)