original_code:
void set_bond_params(DICT_WORD *intra_dict,int num_intra_dict,
        char *fun_key,char *file_name,int jmol_typ,
        CLATOMS_INFO *clatoms_info,ATOMMAPS *atommaps,
        BOND *bond,NULL_INTER_PARSE *null_inter_parse,
        BUILD_INTRA *build_intra, int iresidue, int ires_off,
                      int mol_hydrog_con_opt)
{
  int num,index,ifound,igo;
  int itype1,itype2;
  int iatm_ind1,iatm_ind2;
  int imask1,imask2;
  int i,itype;
  int mass_now1,mass_now2;
  for(i=1;i<=2;i++){
    if(intra_dict[i].iuset==0 && intra_dict[i].key_type==1){
      keyword_miss(intra_dict,file_name,fun_key,i);
    }
  }
  index = 1;
  sscanf(intra_dict[1].keyarg,"%d",&num);
  iatm_ind1 = num;
  if(iatm_ind1>build_intra->natmind_1res_now||iatm_ind1<0){
    keyarg_barf(intra_dict,file_name,fun_key,index);
  }
  imask1 = build_intra->mask_atm[iatm_ind1];
  if(imask1>0)iatm_ind1 = build_intra->index_atm[iatm_ind1];
  index = 2;
  sscanf(intra_dict[2].keyarg,"%d",&num);
  iatm_ind2 = num;
  if(iatm_ind2>build_intra->natmind_1res_now||iatm_ind2<0){
            keyarg_barf(intra_dict,file_name,fun_key,index);}
  imask2 = build_intra->mask_atm[iatm_ind2];
  if(imask2>0)iatm_ind2 = build_intra->index_atm[iatm_ind2];
  index = 5;
  ifound = 0;
  if(strcasecmp(intra_dict[5].keyarg,"on")==0) {ifound = 1;}
  if(strcasecmp(intra_dict[5].keyarg,"con")==0){ifound = 2;}
  if(strcasecmp(intra_dict[5].keyarg,"off")==0){ifound = 3;}
  if(ifound==0){
    keyarg_barf(intra_dict,file_name,fun_key,index);
  }
  if(ifound == 2 && clatoms_info->pi_beads>1){
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        printf("Constraints not implemented under  \n");
        printf(" path integral molecular dynamics. \n");
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        fflush(stdout);
        exit(1);
  }
  igo = imask1*imask2;
  if(igo==1){
    itype1 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind1)];
    itype2 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind2)];
    strcpy(build_intra->cbond_typ_now->atm1,atommaps->atm_typ[itype1]);
    strcpy(build_intra->cbond_typ_now->atm2,atommaps->atm_typ[itype2]);
    strcpy(build_intra->cbond_typ_now->label,intra_dict[6].keyarg);
    mass_now1 =
            (int)( (int) ((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind1)])>=0.0 ? ((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind1)])+0.5):((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind1)])-0.5)) );
    mass_now2 =
            (int)( (int) ((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind2)])>=0.0 ? ((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind2)])+0.5):((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind2)])-0.5)) );
    if((mass_now1<=2) || (mass_now2<=2)){
      if(mol_hydrog_con_opt==1){ifound=2;}
    }
    if((mass_now1<=2) && ((mass_now2==14) || (mass_now2==16)
                                          || (mass_now2==32))){
      if(mol_hydrog_con_opt==2){ifound=2;}
    }
    if((mass_now2<=2) && ((mass_now1==14) || (mass_now1==16)
                                          || (mass_now1==32))){
      if(mol_hydrog_con_opt==2){ifound=2;}
    }
  }
  if(ifound==1&&igo==1){
    if(bond->npow+1 > build_intra->nbond_pow_max){
      build_intra->nbond_pow_max += 100;
      bond->j1_pow = (int *)crealloc(&(bond->j1_pow)[1],
         build_intra->nbond_pow_max*sizeof(int))-1;
      bond->j2_pow = (int *)crealloc(&(bond->j2_pow)[1],
         build_intra->nbond_pow_max*sizeof(int))-1;
      bond->jtyp_pow=(int *)crealloc(&(bond->jtyp_pow)[1],
         build_intra->nbond_pow_max*sizeof(int))-1;
    }
    itype = (bond->ntyp_pow)+1;
    for(i=1;i<=bond->ntyp_pow;i++){
      if((strcasecmp(build_intra->cbond_typ_pow[i].atm1,
       build_intra->cbond_typ_now->atm1)==0)
         &&(strcasecmp(build_intra->cbond_typ_pow[i].atm2,
         build_intra->cbond_typ_now->atm2)==0)
  &&(strcasecmp(build_intra->cbond_typ_pow[i].label,
         build_intra->cbond_typ_now->label)==0)) {itype=i;}
      if((strcasecmp(build_intra->cbond_typ_pow[i].atm1,
       build_intra->cbond_typ_now->atm2)==0)
         &&(strcasecmp(build_intra->cbond_typ_pow[i].atm2,
         build_intra->cbond_typ_now->atm1)==0)
  &&(strcasecmp(build_intra->cbond_typ_pow[i].label,
         build_intra->cbond_typ_now->label)==0)) {itype=i;}
    }
    if(itype>build_intra->nbond_typ_pow_max){
      build_intra->nbond_typ_pow_max += 100;
      build_intra->cbond_typ_pow = (CBOND *)
 crealloc(&build_intra->cbond_typ_pow[1],
   build_intra->nbond_typ_pow_max*sizeof(CBOND))-1;
    }
    if(itype==(bond->ntyp_pow)+1){
      bond->ntyp_pow+=1;
      strcpy(build_intra->cbond_typ_pow[itype].atm1,
      build_intra->cbond_typ_now->atm1);
      strcpy(build_intra->cbond_typ_pow[itype].atm2,
      build_intra->cbond_typ_now->atm2);
      strcpy(build_intra->cbond_typ_pow[itype].label,
      build_intra->cbond_typ_now->label);
    }
    bond->npow += 1;
    bond->j1_pow[bond->npow] = iatm_ind1 + clatoms_info->natm_tot;
    bond->j2_pow[bond->npow] = iatm_ind2 + clatoms_info->natm_tot;
    bond->jtyp_pow[bond->npow] = itype;
  }
  if(ifound==2&&igo==1){
    ires_off = atommaps->jres_jmol_typ_strt[jmol_typ]-1;
    atommaps->nfree_jres_jmol_typ[ires_off+iresidue] -= 1;
    atommaps->icons_jres_jmol_typ[ires_off+iresidue] = 1;
    if(bond->ncon+1 > build_intra->nbond_con_max){
      build_intra->nbond_con_max += 100;
      bond->j1_con = (int *)crealloc(&(bond->j1_con)[1],
         build_intra->nbond_con_max*sizeof(int))-1;
      bond->j2_con = (int *)crealloc(&(bond->j2_con)[1],
         build_intra->nbond_con_max*sizeof(int))-1;
      bond->jtyp_con=(int *)crealloc(&(bond->jtyp_con)[1],
         build_intra->nbond_con_max*sizeof(int))-1;
    }
    itype = (bond->ntyp_con)+1;
    for(i=1;i<=bond->ntyp_con;i++){
      if((strcasecmp(build_intra->cbond_typ_con[i].atm1,
       build_intra->cbond_typ_now->atm1)==0)
         &&(strcasecmp(build_intra->cbond_typ_con[i].atm2,
         build_intra->cbond_typ_now->atm2)==0)
  &&(strcasecmp(build_intra->cbond_typ_con[i].label,
         build_intra->cbond_typ_now->label)==0)) {itype=i;}
      if((strcasecmp(build_intra->cbond_typ_con[i].atm1,
       build_intra->cbond_typ_now->atm2)==0)
         &&(strcasecmp(build_intra->cbond_typ_con[i].atm2,
         build_intra->cbond_typ_now->atm1)==0)
  &&(strcasecmp(build_intra->cbond_typ_con[i].label,
         build_intra->cbond_typ_now->label)==0)) {itype=i;}
    }
    if(itype>build_intra->nbond_typ_con_max){
      build_intra->nbond_typ_con_max += 100;
      build_intra->cbond_typ_con = (CBOND *)
 crealloc(&(build_intra->cbond_typ_con)[1],
   build_intra->nbond_typ_con_max*sizeof(CBOND))-1;
    }
    if(itype==(bond->ntyp_con)+1){
      bond->ntyp_con+=1;
      strcpy(build_intra->cbond_typ_con[itype].atm1,
      build_intra->cbond_typ_now->atm1);
      strcpy(build_intra->cbond_typ_con[itype].atm2,
      build_intra->cbond_typ_now->atm2);
      strcpy(build_intra->cbond_typ_con[itype].label,
      build_intra->cbond_typ_now->label);
    }
    bond->ncon += 1;
    bond->j1_con[bond->ncon] = iatm_ind1 + clatoms_info->natm_tot;
    bond->j2_con[bond->ncon] = iatm_ind2 + clatoms_info->natm_tot;
    bond->jtyp_con[bond->ncon] = itype;
    if((atommaps->ighost_flag[bond->j1_con[bond->ncon]]!=0)||
       (atommaps->ighost_flag[bond->j2_con[bond->ncon]]!=0)){
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        printf("Ghost atoms are not permitted in constrained bonds\n");
        printf("in molecule index %d in residue index %d in file %s\n",
                jmol_typ,iresidue,file_name);
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        fflush(stdout);
        exit(1);
    }
  }
  if(ifound==3&&igo==1){
    if((null_inter_parse->nbond_nul)+1> build_intra->nbond_nul_max) {
      build_intra->nbond_nul_max += 100;
      null_inter_parse->jbond1_nul =
 (int *) crealloc(&(null_inter_parse->jbond1_nul)[1],
    build_intra->nbond_nul_max*sizeof(int))-1;
      null_inter_parse->jbond2_nul =
 (int *) crealloc(&(null_inter_parse->jbond2_nul)[1],
    build_intra->nbond_nul_max*sizeof(int))-1;
    }
    null_inter_parse->nbond_nul += 1;
    null_inter_parse->jbond1_nul[null_inter_parse->nbond_nul]
      = iatm_ind1 + clatoms_info->natm_tot;
    null_inter_parse->jbond2_nul[null_inter_parse->nbond_nul]
      = iatm_ind2 + clatoms_info->natm_tot;
  }
}

canonical_original_code:
void set_bond_params(struct dict_word *intra_dict, int num_intra_dict, char *fun_key, char *file_name, int jmol_typ, struct clatoms_info *clatoms_info, struct atommaps *atommaps, struct bond *bond, struct null_inter_parse *null_inter_parse, struct build_intra *build_intra, int iresidue, int ires_off, int mol_hydrog_con_opt)
{
  int num; int index; int ifound; int igo;
  int itype1; int itype2;
  int iatm_ind1; int iatm_ind2;
  int imask1; int imask2;
  int i; int itype;
  int mass_now1; int mass_now2;
  for(i=1;i<=2;i++){
    if(intra_dict[i].iuset==0 && intra_dict[i].key_type==1){
      keyword_miss(intra_dict,file_name,fun_key,i);
    }
  }
  index = 1;
  sscanf(intra_dict[1].keyarg,"%d",&num);
  iatm_ind1 = num;
  if(iatm_ind1>build_intra->natmind_1res_now||iatm_ind1<0){
    keyarg_barf(intra_dict,file_name,fun_key,index);
  }
  imask1 = build_intra->mask_atm[iatm_ind1];
  if(imask1>0)iatm_ind1 = build_intra->index_atm[iatm_ind1];
  index = 2;
  sscanf(intra_dict[2].keyarg,"%d",&num);
  iatm_ind2 = num;
  if(iatm_ind2>build_intra->natmind_1res_now||iatm_ind2<0){
            keyarg_barf(intra_dict,file_name,fun_key,index);}
  imask2 = build_intra->mask_atm[iatm_ind2];
  if(imask2>0)iatm_ind2 = build_intra->index_atm[iatm_ind2];
  index = 5;
  ifound = 0;
  if(strcasecmp(intra_dict[5].keyarg,"on")==0) {ifound = 1;}
  if(strcasecmp(intra_dict[5].keyarg,"con")==0){ifound = 2;}
  if(strcasecmp(intra_dict[5].keyarg,"off")==0){ifound = 3;}
  if(ifound==0){
    keyarg_barf(intra_dict,file_name,fun_key,index);
  }
  if(ifound == 2 && clatoms_info->pi_beads>1){
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        printf("Constraints not implemented under  \n");
        printf(" path integral molecular dynamics. \n");
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        fflush(stdout);
        exit(1);
  }
  igo = imask1*imask2;
  if(igo==1){
    itype1 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind1)];
    itype2 = atommaps->iatm_atm_typ[(clatoms_info->natm_tot+iatm_ind2)];
    strcpy(build_intra->cbond_typ_now->atm1,atommaps->atm_typ[itype1]);
    strcpy(build_intra->cbond_typ_now->atm2,atommaps->atm_typ[itype2]);
    strcpy(build_intra->cbond_typ_now->label,intra_dict[6].keyarg);
    mass_now1 =
            (int)( (int) ((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind1)])>=0.0 ? ((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind1)])+0.5):((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind1)])-0.5)) );
    mass_now2 =
            (int)( (int) ((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind2)])>=0.0 ? ((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind2)])+0.5):((clatoms_info->mass[(clatoms_info->natm_tot+iatm_ind2)])-0.5)) );
    if((mass_now1<=2) || (mass_now2<=2)){
      if(mol_hydrog_con_opt==1){ifound=2;}
    }
    if((mass_now1<=2) && ((mass_now2==14) || (mass_now2==16)
                                          || (mass_now2==32))){
      if(mol_hydrog_con_opt==2){ifound=2;}
    }
    if((mass_now2<=2) && ((mass_now1==14) || (mass_now1==16)
                                          || (mass_now1==32))){
      if(mol_hydrog_con_opt==2){ifound=2;}
    }
  }
  if(ifound==1&&igo==1){
    if(bond->npow+1 > build_intra->nbond_pow_max){
      build_intra->nbond_pow_max += 100;
      bond->j1_pow = (int *)crealloc(&(bond->j1_pow)[1],
         build_intra->nbond_pow_max*sizeof(int))-1;
      bond->j2_pow = (int *)crealloc(&(bond->j2_pow)[1],
         build_intra->nbond_pow_max*sizeof(int))-1;
      bond->jtyp_pow=(int *)crealloc(&(bond->jtyp_pow)[1],
         build_intra->nbond_pow_max*sizeof(int))-1;
    }
    itype = (bond->ntyp_pow)+1;
    for(i=1;i<=bond->ntyp_pow;i++){
      if((strcasecmp(build_intra->cbond_typ_pow[i].atm1,
       build_intra->cbond_typ_now->atm1)==0)
         &&(strcasecmp(build_intra->cbond_typ_pow[i].atm2,
         build_intra->cbond_typ_now->atm2)==0)
  &&(strcasecmp(build_intra->cbond_typ_pow[i].label,
         build_intra->cbond_typ_now->label)==0)) {itype=i;}
      if((strcasecmp(build_intra->cbond_typ_pow[i].atm1,
       build_intra->cbond_typ_now->atm2)==0)
         &&(strcasecmp(build_intra->cbond_typ_pow[i].atm2,
         build_intra->cbond_typ_now->atm1)==0)
  &&(strcasecmp(build_intra->cbond_typ_pow[i].label,
         build_intra->cbond_typ_now->label)==0)) {itype=i;}
    }
    if(itype>build_intra->nbond_typ_pow_max){
      build_intra->nbond_typ_pow_max += 100;
      build_intra->cbond_typ_pow = (struct CBOND *)
 crealloc(&build_intra->cbond_typ_pow[1],
   build_intra->nbond_typ_pow_max*sizeof(CBOND))-1;
    }
    if(itype==(bond->ntyp_pow)+1){
      bond->ntyp_pow+=1;
      strcpy(build_intra->cbond_typ_pow[itype].atm1,
      build_intra->cbond_typ_now->atm1);
      strcpy(build_intra->cbond_typ_pow[itype].atm2,
      build_intra->cbond_typ_now->atm2);
      strcpy(build_intra->cbond_typ_pow[itype].label,
      build_intra->cbond_typ_now->label);
    }
    bond->npow += 1;
    bond->j1_pow[bond->npow] = iatm_ind1 + clatoms_info->natm_tot;
    bond->j2_pow[bond->npow] = iatm_ind2 + clatoms_info->natm_tot;
    bond->jtyp_pow[bond->npow] = itype;
  }
  if(ifound==2&&igo==1){
    ires_off = atommaps->jres_jmol_typ_strt[jmol_typ]-1;
    atommaps->nfree_jres_jmol_typ[ires_off+iresidue] -= 1;
    atommaps->icons_jres_jmol_typ[ires_off+iresidue] = 1;
    if(bond->ncon+1 > build_intra->nbond_con_max){
      build_intra->nbond_con_max += 100;
      bond->j1_con = (int *)crealloc(&(bond->j1_con)[1],
         build_intra->nbond_con_max*sizeof(int))-1;
      bond->j2_con = (int *)crealloc(&(bond->j2_con)[1],
         build_intra->nbond_con_max*sizeof(int))-1;
      bond->jtyp_con=(int *)crealloc(&(bond->jtyp_con)[1],
         build_intra->nbond_con_max*sizeof(int))-1;
    }
    itype = (bond->ntyp_con)+1;
    for(i=1;i<=bond->ntyp_con;i++){
      if((strcasecmp(build_intra->cbond_typ_con[i].atm1,
       build_intra->cbond_typ_now->atm1)==0)
         &&(strcasecmp(build_intra->cbond_typ_con[i].atm2,
         build_intra->cbond_typ_now->atm2)==0)
  &&(strcasecmp(build_intra->cbond_typ_con[i].label,
         build_intra->cbond_typ_now->label)==0)) {itype=i;}
      if((strcasecmp(build_intra->cbond_typ_con[i].atm1,
       build_intra->cbond_typ_now->atm2)==0)
         &&(strcasecmp(build_intra->cbond_typ_con[i].atm2,
         build_intra->cbond_typ_now->atm1)==0)
  &&(strcasecmp(build_intra->cbond_typ_con[i].label,
         build_intra->cbond_typ_now->label)==0)) {itype=i;}
    }
    if(itype>build_intra->nbond_typ_con_max){
      build_intra->nbond_typ_con_max += 100;
      build_intra->cbond_typ_con = (struct CBOND *)
 crealloc(&(build_intra->cbond_typ_con)[1],
   build_intra->nbond_typ_con_max*sizeof(CBOND))-1;
    }
    if(itype==(bond->ntyp_con)+1){
      bond->ntyp_con+=1;
      strcpy(build_intra->cbond_typ_con[itype].atm1,
      build_intra->cbond_typ_now->atm1);
      strcpy(build_intra->cbond_typ_con[itype].atm2,
      build_intra->cbond_typ_now->atm2);
      strcpy(build_intra->cbond_typ_con[itype].label,
      build_intra->cbond_typ_now->label);
    }
    bond->ncon += 1;
    bond->j1_con[bond->ncon] = iatm_ind1 + clatoms_info->natm_tot;
    bond->j2_con[bond->ncon] = iatm_ind2 + clatoms_info->natm_tot;
    bond->jtyp_con[bond->ncon] = itype;
    if((atommaps->ighost_flag[bond->j1_con[bond->ncon]]!=0)||
       (atommaps->ighost_flag[bond->j2_con[bond->ncon]]!=0)){
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        printf("Ghost atoms are not permitted in constrained bonds\n");
        printf("in molecule index %d in residue index %d in file %s\n",
                jmol_typ,iresidue,file_name);
        printf("@@@@@@@@@@@@@@@@@@@@_error_@@@@@@@@@@@@@@@@@@@@\n");
        fflush(stdout);
        exit(1);
    }
  }
  if(ifound==3&&igo==1){
    if((null_inter_parse->nbond_nul)+1> build_intra->nbond_nul_max) {
      build_intra->nbond_nul_max += 100;
      null_inter_parse->jbond1_nul =
 (int *) crealloc(&(null_inter_parse->jbond1_nul)[1],
    build_intra->nbond_nul_max*sizeof(int))-1;
      null_inter_parse->jbond2_nul =
 (int *) crealloc(&(null_inter_parse->jbond2_nul)[1],
    build_intra->nbond_nul_max*sizeof(int))-1;
    }
    null_inter_parse->nbond_nul += 1;
    null_inter_parse->jbond1_nul[null_inter_parse->nbond_nul]
      = iatm_ind1 + clatoms_info->natm_tot;
    null_inter_parse->jbond2_nul[null_inter_parse->nbond_nul]
      = iatm_ind2 + clatoms_info->natm_tot;
  }
}

variable_types: struct dict_word { int iflag; char keyword[50]; char error_mes[100]; } *

variable_types: struct clatoms_info { int natm_tot; int pi_beads; int pi_beads_proc; int pi_beads_proc_st; int pi_beads_proc_end; int nfree; int nfree_pimd; int nchrg; int pi_beads_full_ter; int pi_beads_res_ter; int pi_beads_full_tra; int pi_beads_res_tra; int cg_reset_flag; int natm_mall; int nchrg_mall; int hess_calc; int natm_proc; int N_H2; int i_H2_start; int nab_initio; int myatm_start; double gamma_adb; double wght_pimd; double pi_temperature; double pi_beads_full_ter_wght; double pi_beads_res_ter_wght; double pi_beads_full_tra_wght; double pi_beads_res_tra_wght; double rcut_spread; double mass_sc_fact; int *ip_lab; int *ichrg; int *cp_vlnc_up; int *cp_atm_flag; double *mass; double *q; double *alp_pol; double *b_neut; double *roll_sc; double *text_atm; double *text_mol; double *xold; double *prekf; double *xmod; double alp_ewd; } *

variable_types: struct atommaps { int nmol_typ; int nres_typ; int natm_typ; int nfreeze; int nfreeze_mall; int natm_typ_mall; int nres_typ_max; int nres_max; int nres_tot; int nres_sum; int pimd_freez_typ; char (*atm_typ)[50]; char (*res_typ)[50]; char (*mol_typ)[50]; int *nmol_jmol_typ; int *nres_1mol_jmol_typ; int *jatm_jmol_typ_strt; int *jres_jmol_typ_strt; int *ires_typ_jres_jmol_typ; int *jatm_jres_1mol_jmol_typ_strt; int *natm_1mol_jmol_typ; int *natm_jres_jmol_typ; int *nfree_1mol_jmol_typ; int *nfree_jres_jmol_typ; int *icons_jmol_typ; int *icons_jres_jmol_typ; int *natm_jmol_typ; int *iatm_mol_typ; int *iatm_res_typ; int *iatm_atm_typ; int *iatm_atm_typ_nl; int *iatm_atm_typ_nl_rev; int *imap_atm_typ_nl; int *imap_atm_typ_nl_gh; int *iatm_mol_num; int *iatm_proc_num; int *iatm_res_num; int *ighost_flag; int *freeze_flag; int *freeze_map; int *atom_label; int *cp_atm_lst; } *

variable_types: struct bond { int npow; int ntyp_pow; int ncon; int ntyp_con; int nbond_pow_mall; int nbond_typ_pow_mall; int nbond_con_mall; int nbond_typ_con_mall; int block_pow_on; int ncon_tot; int ncon_max; int nblock_pow; int nblock_con; int *j1_pow; int *jtyp_pow; int *j1_con; int *jtyp_con; int *iblock_pow_size; int *iblock_pow_conflict_1; int *iblock_con_size; int *iblock_con_conflict_1; double *eq_pow; double *eq_pow_res; double *c_0; double *dc_0; double *al_con; double *eq_con; } *

variable_types: struct null_inter_parse { int nbond_nul; int ntors_nul; int *jbond1_nul; int *jbend1_nul; int *jtors1_nul; int *jonfo1_nul; } *

variable_types: struct build_intra { struct bond_site { char bond_site_name[5][50]; int branch_1[5]; int branch_2[5]; int valence; int improper_ind[5]; } *bond_site; int *mask_atm; int *index_atm; int *iatm_ind_chk; int *ires_ind_chk; int natm_1res_pure_now; int natm_tot_max; int nfreeze_max; int nfreeze_now; int natm_1res_now; int natm_1res_max; int natmind_1res_now; int natmind_1res_max; int nghost_now; int nghost_tot_max; int nbond_pow_max; int nbond_con_max; int nbond_nul_max; int nbond_typ_pow_max; int nbond_typ_con_max; struct CBOND { char atm1[50]; } *cbond_typ_pow; struct CBOND *cbond_typ_con; struct CBOND *cbond_typ_now; int nbend_pow_max; int nbend_con_max; int nbend_nul_max; int nbend_typ_pow_max; int nbend_typ_con_max; struct CBEND { char atm1[50]; } *cbend_typ_pow; struct CBEND *cbend_typ_con; struct CBEND *cbend_typ_now; int ntors_pow_max; int ntors_con_max; int ntors_nul_max; int ntors_typ_pow_max; int ntors_typ_con_max; struct CTORS { char atm1[50]; } *ctors_typ_pow; struct CTORS *ctors_typ_con; struct CTORS *ctors_typ_now; int nonfo_max; int nonfo_nul_max; int nonfo_typ_max; struct CBOND *confo_typ; struct CBOND *confo_typ_now; int nbend_bnd_max; int nbend_bnd_typ_max; struct CBEND *cbend_bnd_typ; struct CBEND *cbend_bnd_typ_now; int ngrp_33_max; int ngrp_watt_33_max; int ngrp_21_max; int ngrp_43_max; int ngrp_23_max; int ngrp_46_max; int ngrp_typ_21_max; int ngrp_typ_43_max; int ngrp_typ_33_max; int ngrp_typ_watt_33_max; int ngrp_typ_23_max; int ngrp_typ_46_max; struct CGRP_CONS { char atm1[50]; } *cgrp_typ_now; struct CGRP_CONS *cgrp_typ_21; struct CGRP_CONS *cgrp_typ_43; struct CGRP_CONS *cgrp_typ_33; struct CGRP_CONS *cgrp_typ_watt_33; struct CGRP_CONS *cgrp_typ_23; struct CGRP_CONS *cgrp_typ_46; int natm_typ_max; int nres_typ_max; char *strip1; int *ibend_bnd_typ_pure; int *ibend_bnd_typ_map; } *

variable_types: iresidue int

variable_types: num int

variable_types: index int

variable_types: ifound int

variable_types: igo int

variable_types: itype int

user_defined_types: struct build_intra { struct bond_site *bond_site; int *mask_atm; int *index_atm; int *iatm_ind_chk; int *ires_ind_chk; int natm_1res_pure_now; int natm_tot_max; int nfreeze_max; int nfreeze_now; int natm_1res_now; int natm_1res_max; int natmind_1res_now; int natmind_1res_max; int nghost_now; int nghost_tot_max; int nbond_pow_max; int nbond_con_max; int nbond_nul_max; int nbond_typ_pow_max; int nbond_typ_con_max; struct CBOND *cbond_typ_pow; struct CBOND *cbond_typ_con; struct CBOND *cbond_typ_now; int nbend_pow_max; int nbend_con_max; int nbend_nul_max; int nbend_typ_pow_max; int nbend_typ_con_max; struct CBEND *cbend_typ_pow; struct CBEND *cbend_typ_con; struct CBEND *cbend_typ_now; int ntors_pow_max; int ntors_con_max; int ntors_nul_max; int ntors_typ_pow_max; int ntors_typ_con_max; struct CTORS *ctors_typ_pow; struct CTORS *ctors_typ_con; struct CTORS *ctors_typ_now; int nonfo_max; int nonfo_nul_max; int nonfo_typ_max; struct CBOND *confo_typ; struct CBOND *confo_typ_now; int nbend_bnd_max; int nbend_bnd_typ_max; struct CBEND *cbend_bnd_typ; struct CBEND *cbend_bnd_typ_now; int ngrp_33_max; int ngrp_watt_33_max; int ngrp_21_max; int ngrp_43_max; int ngrp_23_max; int ngrp_46_max; int ngrp_typ_21_max; int ngrp_typ_43_max; int ngrp_typ_33_max; int ngrp_typ_watt_33_max; int ngrp_typ_23_max; int ngrp_typ_46_max; struct CGRP_CONS *cgrp_typ_now; struct CGRP_CONS *cgrp_typ_21; struct CGRP_CONS *cgrp_typ_43; struct CGRP_CONS *cgrp_typ_33; struct CGRP_CONS *cgrp_typ_watt_33; struct CGRP_CONS *cgrp_typ_23; struct CGRP_CONS *cgrp_typ_46; int natm_typ_max; int nres_typ_max; char *strip1; int *ibend_bnd_typ_pure; int *ibend_bnd_typ_map; }


repo: TuckermanGroup/PINY

decompiled_code:
int __fastcall set_res_morph_params(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, int a7, int a8, int a9, __int64 a10)
{
int result; // eax

if ( !*(_DWORD *)(a1 + 216) && *(_DWORD *)(a1 + 220) == 1 )
keyword_miss(a1, a4, a3, 1LL);
result = strcasecmp((const char *)(a5 + 50LL * *(int *)(a10 + 4LL * (a8 + a9))), (const char *)(a1 + 274));
if ( result )
result = keyarg_barf(a1, a4, a3, 1LL);
return result;
}

canonical_decompiled_code:
int __fastcall func0(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5, __int64 a6, int a7, int a8, int a9, __int64 a10)
{
int result; // eax

if ( !*(_DWORD *)(a1 + 216) && *(_DWORD *)(a1 + 220) == 1 )
keyword_miss(a1, a4, a3, 1LL);
result = strcasecmp((const char *)(a5 + 50LL * *(int *)(a10 + 4LL * (a8 + a9))), (const char *)(a1 + 274));
if ( result )
result = keyarg_barf(a1, a4, a3, 1LL);
return result;
}

original_code:
void set_res_morph_params(DICT_WORD res_name_dict[],int num_res_name_dict,
                         char fun_key[],char file_name[],NAME res_typ[],
                         int natm_jres_jmol_typ[],int jmol_typ,
                         int jres,int jres_off,
                         int ires_typ_jres_jmol_typ[])
{
  int i,index,index2;
  for(i=1;i<=1;i++){
    if(res_name_dict[i].iuset==0 && res_name_dict[i].key_type==1){
      keyword_miss(res_name_dict,file_name,fun_key,i);}
  }
  index = 1;
  index2 = ires_typ_jres_jmol_typ[(jres+jres_off)];
  if(strcasecmp(res_typ[index2],res_name_dict[1].keyarg)!=0){
    keyarg_barf(res_name_dict,file_name,fun_key,index);}
}

canonical_original_code:
void set_res_morph_params(struct dict_word res_name_dict[], int num_res_name_dict, char fun_key[], char file_name[], char res_typ[][50], int natm_jres_jmol_typ[], int jmol_typ, int jres, int jres_off, int ires_typ_jres_jmol_typ[])
{
  int i; int index; int index2;
  for(i=1;i<=1;i++){
    if(res_name_dict[i].iuset==0 && res_name_dict[i].key_type==1){
      keyword_miss(res_name_dict,file_name,fun_key,i);}
  }
  index = 1;
  index2 = ires_typ_jres_jmol_typ[(jres+jres_off)];
  if(strcasecmp(res_typ[index2],res_name_dict[1].keyarg)!=0){
    keyarg_barf(res_name_dict,file_name,fun_key,index);}
}

variable_types: struct dict_word { int iflag; char keyword[50]; char error_mes[100]; } []

variable_types: jres int

variable_types: i int

return_type: void


original_code:
void int_NVE_res(CLASS *class,BONDED *bonded,GENERAL_DATA *general_data)
{
  int MPI_INT = 1;
  int MPI_DOUBLE = 1;
  int MPI_CHAR = 1;
  int MPI_MAX = 1;
  int MPI_SUM = 1;
  int MPI_ANY_TAG = 1;
  int MPI_ANY_SOURCE = 1;
  int *MPI_BOTTOM = {0};
    int i,ipart,iii,ifirst=1,ip,iflag,iflag_mass=1,n,iproc;
    int exit_flag=0;
    double dt,dti2,dti,tol_glob;
    int ir_tra,ir_tor,ir_ter;
    int nres_tra,nres_tor,nres_ter;
    int int_res_ter;
    int natm_tot,istart,iend,nsec,nsec_now;
    int anneal_opt = general_data->simopts.anneal_opt;
    double anneal_target_temp = general_data->simopts.ann_target_temp;
    double ann_rate = general_data->simopts.ann_rate;
    double *xold = class->clatoms_info.xold;
    double *yold = class->clatoms_info.yold;
    double *zold = class->clatoms_info.zold;
    double *x = class->clatoms_pos[1].x;
    double *y = class->clatoms_pos[1].y;
    double *z = class->clatoms_pos[1].z;
    double *vx = class->clatoms_pos[1].vx;
    double *vy = class->clatoms_pos[1].vy;
    double *vz = class->clatoms_pos[1].vz;
    double *fx = class->clatoms_pos[1].fx;
    double *fy = class->clatoms_pos[1].fy;
    double *fz = class->clatoms_pos[1].fz;
    double *mass = class->clatoms_info.mass;
    int np_forc = class->communicate.np_forc;
    int myid_forc = class->communicate.myid_forc;
    int pi_beads_proc = class->clatoms_info.pi_beads_proc;
    int comm_forc = class->communicate.comm_forc;
    n = class->clatoms_info.natm_tot;
    natm_tot = class->clatoms_info.natm_tot;
    int_res_ter = general_data->timeinfo.int_res_ter;
    nres_tra = general_data->timeinfo.nres_tra;
    nres_tor = general_data->timeinfo.nres_tor;
    nres_ter = general_data->timeinfo.nres_ter;
    dt = general_data->timeinfo.dt;
    dti = dt/((double)(nres_ter*nres_tra*nres_tor));
    dti2 = dti/2.0;
    zero_constrt_iters(&(general_data->stat_avg));
    general_data->timeinfo.exit_flag = 0;
    for(ir_ter=1;ir_ter<=nres_ter;ir_ter++){
      for(ir_tor=1;ir_tor<=nres_tor;ir_tor++){
        for(ir_tra=1;ir_tra<=nres_tra;ir_tra++){
    int_0_to_dt2_nve(class,bonded,general_data,ir_tra,ir_tor,ir_ter,dti);
          (class->energy_ctrl.iget_full_inter) = 0;
          (class->energy_ctrl.iget_res_inter) = 0;
          (class->energy_ctrl.iget_full_intra) = 0;
          (class->energy_ctrl.iget_res_intra) = 1;
          if((ir_ter==nres_ter)&&(ir_tor==nres_tor)&&(ir_tra==nres_tra))
             {(class->energy_ctrl.iget_full_inter) = 1;}
          if((int_res_ter==1)&&(ir_tor==nres_tor)&&(ir_tra==nres_tra))
             {(class->energy_ctrl.iget_res_inter) = 1;}
          if(ir_tra==nres_tra)
             {(class->energy_ctrl.iget_full_intra) = 1;}
          energy_control(class, bonded, general_data);
        int_dt2_to_dt_nve(class,bonded,general_data,ir_tra,ir_tor,ir_ter,dti);
                         }
                       }
                     }
   iflag=-1;
   if(anneal_opt == 1){
     anneal_class(class,ann_rate,iflag,iflag_mass,anneal_target_temp,&exit_flag);
      general_data->timeinfo.exit_flag = exit_flag;
   }
   int_final_class(class,bonded,general_data,iflag);
               }

canonical_original_code:
void int_NVE_res(struct class *class, struct bonded *bonded, struct general_data *general_data)
{
  int MPI_INT = 1;
  int MPI_DOUBLE = 1;
  int MPI_CHAR = 1;
  int MPI_MAX = 1;
  int MPI_SUM = 1;
  int MPI_ANY_TAG = 1;
  int MPI_ANY_SOURCE = 1;
  int *MPI_BOTTOM = {0};
    int i; int ipart; int iii; int ifirst = 1; int ip; int iflag; int iflag_mass = 1; int n; int iproc;
    int exit_flag = 0;
    double dt; double dti2; double dti; double tol_glob;
    int ir_tra; int ir_tor; int ir_ter;
    int nres_tra; int nres_tor; int nres_ter;
    int int_res_ter;
    int natm_tot; int istart; int iend; int nsec; int nsec_now;
    int anneal_opt = general_data->simopts.anneal_opt;
    double anneal_target_temp = general_data->simopts.ann_target_temp;
    double ann_rate = general_data->simopts.ann_rate;
    double *xold = class->clatoms_info.xold;
    double *yold = class->clatoms_info.yold;
    double *zold = class->clatoms_info.zold;
    double *x = class->clatoms_pos[1].x;
    double *y = class->clatoms_pos[1].y;
    double *z = class->clatoms_pos[1].z;
    double *vx = class->clatoms_pos[1].vx;
    double *vy = class->clatoms_pos[1].vy;
    double *vz = class->clatoms_pos[1].vz;
    double *fx = class->clatoms_pos[1].fx;
    double *fy = class->clatoms_pos[1].fy;
    double *fz = class->clatoms_pos[1].fz;
    double *mass = class->clatoms_info.mass;
    int np_forc = class->communicate.np_forc;
    int myid_forc = class->communicate.myid_forc;
    int pi_beads_proc = class->clatoms_info.pi_beads_proc;
    int comm_forc = class->communicate.comm_forc;
    n = class->clatoms_info.natm_tot;
    natm_tot = class->clatoms_info.natm_tot;
    int_res_ter = general_data->timeinfo.int_res_ter;
    nres_tra = general_data->timeinfo.nres_tra;
    nres_tor = general_data->timeinfo.nres_tor;
    nres_ter = general_data->timeinfo.nres_ter;
    dt = general_data->timeinfo.dt;
    dti = dt/((double)(nres_ter*nres_tra*nres_tor));
    dti2 = dti/2.0;
    zero_constrt_iters(&(general_data->stat_avg));
    general_data->timeinfo.exit_flag = 0;
    for(ir_ter=1;ir_ter<=nres_ter;ir_ter++){
      for(ir_tor=1;ir_tor<=nres_tor;ir_tor++){
        for(ir_tra=1;ir_tra<=nres_tra;ir_tra++){
    int_0_to_dt2_nve(class,bonded,general_data,ir_tra,ir_tor,ir_ter,dti);
          (class->energy_ctrl.iget_full_inter) = 0;
          (class->energy_ctrl.iget_res_inter) = 0;
          (class->energy_ctrl.iget_full_intra) = 0;
          (class->energy_ctrl.iget_res_intra) = 1;
          if((ir_ter==nres_ter)&&(ir_tor==nres_tor)&&(ir_tra==nres_tra))
             {(class->energy_ctrl.iget_full_inter) = 1;}
          if((int_res_ter==1)&&(ir_tor==nres_tor)&&(ir_tra==nres_tra))
             {(class->energy_ctrl.iget_res_inter) = 1;}
          if(ir_tra==nres_tra)
             {(class->energy_ctrl.iget_full_intra) = 1;}
          energy_control(class, bonded, general_data);
        int_dt2_to_dt_nve(class,bonded,general_data,ir_tra,ir_tor,ir_ter,dti);
                         }
                       }
                     }
   iflag=-1;
   if(anneal_opt == 1){
     anneal_class(class,ann_rate,iflag,iflag_mass,anneal_target_temp,&exit_flag);
      general_data->timeinfo.exit_flag = exit_flag;
   }
   int_final_class(class,bonded,general_data,iflag);
               }

variable_types: struct class { struct clatoms_info { int natm_tot; int pi_beads; int pi_beads_proc; int pi_beads_proc_st; int pi_beads_proc_end; int nfree; int nfree_pimd; int nchrg; int pi_beads_full_ter; int pi_beads_res_ter; int pi_beads_full_tra; int pi_beads_res_tra; int cg_reset_flag; int natm_mall; int nchrg_mall; int hess_calc; int natm_proc; int N_H2; int i_H2_start; int nab_initio; int myatm_start; double gamma_adb; double wght_pimd; double pi_temperature; double pi_beads_full_ter_wght; double pi_beads_res_ter_wght; double pi_beads_full_tra_wght; double pi_beads_res_tra_wght; double rcut_spread; double mass_sc_fact; int *ip_lab; int *ichrg; int *cp_vlnc_up; int *cp_atm_flag; double *mass; double *q; double *alp_pol; double *b_neut; double *roll_sc; double *text_atm; double *text_mol; double *xold; double *prekf; double *xmod; double alp_ewd; } clatoms_info; struct clatoms_tran { int pi_beads_proc; int pi_atm_proc; int pi_atm_proc_use; int pi_proc_rem; int nwork; int *sendcounts; int *senddspls; int *ifax; double *rat1_stag; double *path_eig; double *work; double *work3; double *x_trans; double *x_temp; double *xt_temp; } clatoms_tran; struct clatoms_pos { double *mass; double *x; double *vx; double *fx; double *fxt; double *fxm; double *hess_xx; } *clatoms_pos; struct ghost_atoms { int nghost_tot; int natm_comp_max; int nghost_mall; int nghost_old; int ncomp_mall; int ncomp_old; int *ighost_map; int *natm_comp; int **iatm_comp; double **coef; } ghost_atoms; struct atommaps { int nmol_typ; int nres_typ; int natm_typ; int nfreeze; int nfreeze_mall; int natm_typ_mall; int nres_typ_max; int nres_max; int nres_tot; int nres_sum; int pimd_freez_typ; char (*atm_typ)[50]; char (*res_typ)[50]; char (*mol_typ)[50]; int *nmol_jmol_typ; int *nres_1mol_jmol_typ; int *jatm_jmol_typ_strt; int *jres_jmol_typ_strt; int *ires_typ_jres_jmol_typ; int *jatm_jres_1mol_jmol_typ_strt; int *natm_1mol_jmol_typ; int *natm_jres_jmol_typ; int *nfree_1mol_jmol_typ; int *nfree_jres_jmol_typ; int *icons_jmol_typ; int *icons_jres_jmol_typ; int *natm_jmol_typ; int *iatm_mol_typ; int *iatm_res_typ; int *iatm_atm_typ; int *iatm_atm_typ_nl; int *iatm_atm_typ_nl_rev; int *imap_atm_typ_nl; int *imap_atm_typ_nl_gh; int *iatm_mol_num; int *iatm_proc_num; int *iatm_res_num; int *ighost_flag; int *freeze_flag; int *freeze_map; int *atom_label; int *cp_atm_lst; } atommaps; struct therm_info { int num_nhc; int len_nhc; int nres_nhc; int nyosh_nhc; int therm_typ; int num_nhc_proc; int num_nhc_share; int mytherm_start; double dt_nhc; int *inhc_x; int *itherm_nshare; double *ditherm_nshare_i; int *map_share; double *text_nhc; double *wdti; double **mass_nhc; } therm_info_class; struct therm_info therm_info_bead; struct therm_pos { double **x_nhc; double x_nhc_tot; } therm_class; struct therm_pos *therm_bead; struct vel_samp_class { int ivel_smpl_on; int ivel_scale_on; int nvx_smpl; int nvx_scale; int nvnhc_smpl; int iseed; double qseed; } vel_samp_class; struct energy_ctrl { int pme_on; int int_res_ter; int isep_vvdw; int iswit_vdw; int block_std_on; int iget_pe_real_inter_freq; int iget_pe_real_inter; int itime; int iget_full_inter; int iget_full_intra; int iget_full_pimd; } energy_ctrl; struct nbr_list { int iver; int ilnk; int nolst; int brnch_root_list_opt; double *x0; struct verlist { int iver_init; int iver_fill; int nolst_ver_update; int jver_pad; int nmem_min_lst; int nver_lst; int nver_lst_res; int nver_lst_now; int nver_lst_now_res; int *nter; int *jter; int *jver_off; int *nter_res; int *jter_res; int *jver_off_res; double mem_safe; } verlist; struct lnklist { int ilnk_init; int lnk_for_odd; int ncell_div_avg; int lnk_excl_safe; int lnk_vol_safe; int ncell_a; int natm_cell_max; int lnk_list_dim; int nshft_lnk; int nshft_lnk_res; double vol_lnk_map; double rcut_max; int *lnk_list; int *ishft_a; int *iexl_chk; int *ishft_a_res; int *iexl_chk_res; int *natm_cell; double *shft_wght; double *shft_wght_res; double *hmat_lnk; } lnklist; struct brnch_root { int nbrnch_tot; int nroot_tot; int natm_add_tot; int nbrnch_root_max; double brnch_root_dist_max; double cutdif_min_brnch_root; double cutdif_min_brnch_brnch; double cutdif_min_brnch_root_res; double cutdif_min_brnch_brnch_res; double r2_nocheck_dist; double r2_nocheck_dist_res; double cutskin_bb_min; double cutskin_bb_min_res; int *brnch_atm_list; int *brnch_atm_root; int *root_atm_list; int *root_atm_map; int *brnch_atm_map; int *nbrnch_of_root_big; int *nbrnch_of_root; int **ibrnch_of_root; int *natm_add; int *iatm_add; int *iatm_add_off; } brnch_root; } nbr_list; struct interact { int nsplin; int iswit_vdw; int dielectric_opt; int ishave_opt; int nter_typ; int nsplin_tot; int ninter_mall; int nsplin_mall_tot; int *inter_map_index; double dielectric_rheal; double dielectric_cut; double dielectric_eps; double brnch_root_skin; double skin; double brnch_root_cut; double rheal_res; double pten_inter_guess; double pten_kin_guess; double clong; double clong_res; double spread_now; double spread_lnk; double brnch_root_skin_lnk; double cutoff_max; double *cutoff; double *cutoff_res; double *cutti; double *cutskin; double *cutskin_res; double *cutskin_root; double *cutskin_root_res; double *vcut_coul; double *rmin_spl; double *dr_spl; double *cv0; double *cdv0; double *cv0_c; double *cdv0_c; } interact; struct int_scr { double v_lnv; double *x; double *vx; double *gx; double **x_nhc; double *vgmat; double *x_vol_nhc; double *sc; double *sc_temp; double *atm_kin; double *step_up; struct therm_scr { double *sc; double *atm_kin; } *therm_scr; } int_scr; struct ewd_scr { double *q; double *x; double *fx; double *heli; double *cossc; double *fx2; double *temp; double *helr_now; } ewd_scr; struct for_scr { int nlen; int nsplin_t; int num_brk; int intact; double wght_lnk; double wght_ter; double wght_ter_res; double wght_tra; double wght_tra_res; double wght_pimd; int *j_indext; int *i_indext2; int *j_lnk; int *j_index; int *num_brk_i; int *iexcl; int *index_atm; } for_scr; double tot_memory; struct part_mesh { int pme_on; int kmax_pme; int n_interp; int pme_res_on; int kmax_pme_res; int n_interp_res; int pme_para_opt; int nlen_pme; int nktot_pme; int ngrid_a; int nktot_pme_res; int ngrid_a_res; int ninterp_mall; int ninterp_tot_mall; int *iatemp; int *nc; int **igrid_a; int **igrid_now; double ecut; double ecut_res; double *bweight_tot_res; double *bweight_tot; double *qgrid; double *qgrid_scr; double *qgrid_tmp_real; double *qgrid_tmp_imag; double *frac_a; double *aj; double **ua; double **mn_a; double **dmn_a; double **qgrid_now; } part_mesh; struct surface { int isurf_on; int natm_typ; int nsplin_surf; int nsplin_tot; double zheal; double surface_height; double *surface_pot; double *surface_forc; double *zcut_off; double *dz_spl; double *dzi_spl; double *zmin_spl; char surface_type[50]; } surface; struct communicate { int np_beads; int myid; int myid_bead_forc; int myid_bead; int myid_bead_prime; int myid_state; int myid_forc; int myid_forc_source; int myid_forc_target; int world; int comm_beads; int comm_beads_forc; int comm_states; int comm_forc; int comm_forc_source; int comm_forc_target; int comm_faux; } communicate; struct class_comm_forc_pkg { int num_proc; int myid; int myatm_start; int mytherm_start; int *displs_atm; int *displs_therm; int comm; int world; double dbl_num_proc; struct class_plimpton_ind { int num_proc_source; int num_proc_target; int myid_source; int myid_target; int natoms_tot; int *index_src; int *index_src_even; int *index_src_odd; int *index_trg; int *index_trg_even; int *index_trg_odd; int *displs_atm_trg; int *displs_atm_src; int *src_odd_end; int *src_even_end; int *trg_odd_end; int *trg_even_end; int *src_odd_begin; int *src_even_begin; int *trg_odd_begin; int *trg_even_begin; int my_src_odd_counts; int my_src_even_counts; int my_trg_odd_counts; int my_trg_even_counts; int *my_src_odd; int *my_src_even; int *my_trg_odd; int *my_trg_even; int **jmax; int *jmin; int **imax; int source; int target; } plimpton_ind; } class_comm_forc_pkg; } *

variable_types: struct bonded { struct bond { int npow; int ntyp_pow; int ncon; int ntyp_con; int nbond_pow_mall; int nbond_typ_pow_mall; int nbond_con_mall; int nbond_typ_con_mall; int block_pow_on; int ncon_tot; int ncon_max; int nblock_pow; int nblock_con; int *j1_pow; int *jtyp_pow; int *j1_con; int *jtyp_con; int *iblock_pow_size; int *iblock_pow_conflict_1; int *iblock_con_size; int *iblock_con_conflict_1; double *eq_pow; double *eq_pow_res; double *c_0; double *dc_0; double *al_con; double *eq_con; } bond; struct grp_bond_con { int num_33; int num_21; int num_43; int ntyp_33; int num_23; int ntyp_23; int num_46; int ntyp_46; int max_iter; int ngrp_21_mall; int ngrp_33_mall; int ngrp_43_mall; int ngrp_23_mall; int ngrp_46_mall; int ngrp_typ_21_mall; int ngrp_typ_33_mall; int ngrp_typ_43_mall; int ngrp_typ_23_mall; int ngrp_typ_46_mall; int num_21_tot; double tol; int *j1_33; int *j1_21; int *j2_43; int *jtyp_33; int *j1_23; int *jtyp_23; int *j1_46; int *jtyp_46; double **al_33; double **al_23; double **al_21; double **eq_21; double **al_46; int ncons_gather_tot; int ncons_gather; int ncons_gather_max; int *ind_gather_fwd; int *ind_gather_bck; int *ind_gather_scr; } grp_bond_con; struct grp_bond_watts { int num_33; int num_33_tot; int ntyp_33; int ngrp_33_mall; int ngrp_typ_33_mall; int *j1_33; int *jtyp_33; double *cos_thet0_2; double **eq_33; double **c_0_33; double **c_4_33; double **dc_0_33; double **dc_4_33; } grp_bond_watts; struct constrnt { int iconstrnt; int iroll; int max_iter; double tolshake; double tolratl; } constrnt; struct bond_free { int num; int j1; int npow; int nhist; double fk; double eq; double del; double rmin; double rmax; char *file; double *hist; } bond_free; struct bend { int npow; int ntyp_pow; int ncon; int ntyp_con; int nbend_pow_mall; int nbend_typ_pow_mall; int nbend_con_mall; int nbend_typ_con_mall; int block_pow_on; int ncon_tot; int nblock_pow; int nblock_con; int *j1_pow; int *jtyp_pow; int *j1_con; int *jtyp_con; int *iblock_pow_size; int *iblock_pow_conflict_1; int *iblock_pow_conflict_3; int *iblock_con_size; int *iblock_con_conflict_1; int *iblock_con_conflict_3; double *eq_pow; double *c_0; double *s_0; double *dc_0; double *ds_0; double *al_con; double *eq_con; } bend; struct bend_free { int num; int j1; int npow; int nhist; double fk; double eq; double del; char *file; double *hist; } bend_free; struct bend_bnd { int num; int ntyp; int nbend_bnd_mall; int nbend_bnd_typ_mall; int block_on; int nblock; int *j1; int *jtyp; int *iblock_size; int *iblock_conflict_1; int *iblock_conflict_3; double *eq_bond; double *eq_bend; double *cbond_0; double *dcbond_0; double *cbend_0; double *sbend_0; double *dcbend_0; double *dsbend_0; } bend_bnd; struct tors { int npow; int ntyp_pow; int nimpr; int ncon; int ntyp_con; int ntors_pow_mall; int ntors_typ_pow_mall; int ntors_con_mall; int ntors_typ_con_mall; int block_pow_on; int block_con_on; int ncon_tot; int nblock_pow; int nblock_con; int *j1_pow; int *jtyp_pow; int *j1_con; int *jtyp_con; int *iblock_pow_size; int *iblock_pow_conflict_1; int *iblock_pow_conflict_3; int *iblock_con_size; int *iblock_con_conflict_1; int *iblock_con_conflict_3; double *c_0; double *s_0; double *dc_0; double *ds_0; double *eq_pow; double *al_con; double *eq_con; } tors; struct tors_free { int num; int npow; int nhist; int j1[3]; double fk; double eq[3]; double del; char *file; double *hist; double **hist_2d; } tors_free; struct rbar_sig_free { int nfree; int nhist_bar; int iopt; int *j1; double fk_bar; double fk_sigma; double eq_bar; double eq_sigma; double del_bar; double rmin; double smin; double rnfree; double **hist; double **hist_rn; char *file; } rbar_sig_free; struct onfo { int num; int ntyp; int nonfo_mall; int nonfo_typ_mall; int block_on; int nblock; int *j1; int *jtyp; int *iblock_size; int *iblock_conflict_1; double *feps; double *s6; double *sc; } onfo; struct ecor { int nsplin; int num; int block_on; int nblock; int nktot_res; int necor_mall; double alp_ewd; double ecut; double rmin_spl; double rmax_spl; double dr_spl; int *j1; int *iblock_size; int *iblock_conflict_1; double *cv0; } ecor; struct excl { int nlst; int nlst_root; int num_cp; int *num; int *j; int *j_off; int *j1_cp; } excl; struct intra_scr { int nlen; double wght_ter; double wght_ter_res; double wght_tra; double wght_tra_res; double int_res_inter; int *iatm_typ; int *jatm_typ; double *vpot; double *p11; double *p21; double *p31; double *x1; double *x2; double *x3; double *x4; double *x5; double *x6; double *x7; double *x8; double *fx1; double *fx2; double *fx3; double *fx4; double *dx12; double *dx13; double *dx23; double *dx42; double *dx43; double *dx56; double *dx57; double *dx67; double *dx86; double *dx87; double *c_0; double *dc_0; double *ds_0; double *s_0; double *eq; double *m1; double *vx1; double *vx2; double *sc_1; double *sc; double *q1; double *rmin; double *dri; double *vcut_coul; double *del_r; double *swit; double *cutoff_res; } intra_scr; } *

variable_types: struct general_data { struct simopts { int md; int pimd; int minimize; int cp; int cp_pimd; int cp_wave; int cp_wave_pimd; int cp_wave_min_pimd; int cp_min; int cp_wave_min; int debug; int debug_pimd; int debug_cp; int debug_cp_pimd; int pi_beads; int pi_md_typ; int initial_spread_opt; int anneal_opt; double ann_rate; double ann_start_temp; double ann_target_temp; } simopts; struct minopts { int min_std; int min_cg; int min_diis; int diis_hist_len; int cp_min_std; int cp_min_cg; int cp_min_diis; int cp_diis_hist_len; int cp_cg_line_min_len; int min_atm_com_fix_opt; double tol_coef; double tol_atom; } minopts; struct ensopts { int nve; } ensopts; struct filenames { char *iname; char *dname; char *dnamec; char *cpname; char *ksname; char *elfname; char *cvname; char *ccname; char *cpparname; char *centname; char *forcename; int low_lim_par; int high_lim_par; int iwrite_screen; int iwrite_inst; int iwrite_dump; int iwrite_kseigs; int iwrite_confv; int iwrite_confp; int iwrite_par_confp; int iwrite_confc; int iwrite_path_cent; int ifile_open; int iwrite_conf_binary; int iwrite_units; int iwrite_atm_for; int iwrite_elf; } filenames; struct statepoint { double pext; } statepoint; struct cell { int iperd; int intra_perds; int cubic_box_flag; int hmat_int_typ; int hmat_cons_typ; int imov_cp_box; double vol; double vol_cp; double vol0; double area; double alpha_conv_dual; double *hmat; double *hmat_ewd; double *hmat_cp; double *cp_box_center; double *cp_box_center_rel; double *cp_vbox_center; double *cp_fbox_center; } cell; struct timeinfo { int ntime; int ix_respa; int int_res_ter; int nres_ter; int int_res_tor; int int_res_pimd; int iget_pe_real_inter_freq; int exit_flag; double dt; } timeinfo; struct baro { int len_nhc; double x_lnv; double v_lnv_glob; double v_lnv_g; double f_lnv_p; double vol; double mass_lnv; double c2_lnv; double roll_scv; double roll_scg; double roll_scg0; double x_lnv_o; double v_lnv_g_wght; double area; double *x_vol_nhc; double *f_vol_nhc; double *hmato; } baro; struct par_rahman { double vol; double mass_hm; double c1_hm; double roll_scg; double roll_scg0; double area; double *vgmat; double *vgmat_glob; double *fgmat_p; double *roll_mtv; double *roll_mtvv; double *vtemps; double *vexpdt; double *vtempx; double *hmat_t; double *fv1; double *vgmat_g_wght; } par_rahman; struct ptens { double *tvten; double *pvten; double *pvten_inc; double *pvten_tmp_res; double *pvten_inc_t1; double *pvten_inc_a; double *pvten_inc_old; double *count_inc; double *pvten_inc_glob; double *pvten_mode; } ptens; struct stat_avg { int nexclt; int iter_shake; int iswit_vdw; int itime_update; int iter_shake_cp; int write_cp_atm_flag; double vintert; double vintrat; double vsurft; double vbondt; double vbend_bndt; double vbend_bnd_bond; double vbondt_watts; double vreal; double vvdw; double vlong; double vbond_free; double vbar_free; double kinet; double kinet_v; double vol; double kinet_nhc; double kinet_nhc_bead; double aikinet_nhc_bead; double akinet_nhc_bead; double vpot_v; double vpotnhc; double aiter_shake; double iter_23; double aiter_23; double aiter_21; double iter_23r; double aiter_23r; double aiter_21r; double acella; double aicella; double acellab; double aicellab; double apress; double press_inter; double apress_inter; double apress_intra; double press_kin; double apress_kin; double econv0; double cp_kconv0; double cpu1; double updates; double kinet_cp_up; double kinet_cp_dn; double kinet_cp; double kinet_nhc_cp; double vpotnhc_cp; double cp_ehart; double cp_eext; double cp_exc; double cp_muxc; double cp_eke; double cp_enl; double aiter_shake_cp; double maxfc; double pi_ke_prim; double api_ke_prim; double aipi_ke_prim; double kin_harm; double *apten; double fc_mag_up; double fc_max_up; double fatm_max; double count_diag_srot; double econv_now; double isokconv; } stat_avg; struct ewald { int nsplin_g; int nktot; int nktot_res; int nktot_mall; int nktot_res_mall; int nkc_max; int nkb_max; double alp_ewd; double self_erf; double ecut; double ecut_clus; double alp_clus; double gs_max; int *kastr; int *ibrk1; int *kastr_res; int *ibrk1_res; double *clus_corr_r; double *clus_corr_r_res; double *cvgs_2d0; double *vgc_1d_y; } ewald; struct para_fft_pkg3d { int nktot; int ncoef_use; int nfft_size; int nfft; int igeneric_opt; int scale_opt; int len_ifax; int nwork1; double ecut; int comm; int num_proc; int *map_proc; int *recv_counts_rho; int *recv_counts_coef; int *map_pme_dn; int *recvcounts_pme_dn; int *sendcounts_pme_dn; int *map_pme_up; int *recvcounts_pme_up; int *sendcounts_pme_up; int ndata_kc; int nkf3; int str_fft_kc_proc; int ska_fft_kc_proc; int skb_fft_kc_proc; int *sendcounts_fft_kc; int *recvcounts_fft_kc; int *sum_fft_kc_proc; int nka_fft_kc; int *ka_fft_kc; int *ifax_c_f; double *work_1c_f; double *work_1c_r; int ndata_kb; int nkf2; int str_fft_kb_proc; int ska_fft_kb_proc; int skc_fft_kb_proc; int *ska_fft_kb_proc_all; int *skc_fft_kb_proc_all; int *sendcounts_fft_kb; int *recvcounts_fft_kb; int *sum_fft_kb_proc; int *ifax_b_f; double *work_1b_f; double *work_1b_r; int ndata_ka; int nkf1; int str_fft_ka_proc; int skb_fft_ka_proc; int skc_fft_ka_proc; int *skb_fft_ka_proc_all; int *skc_fft_ka_proc_all; int *sendcounts_fft_ka; int *recvcounts_fft_ka; int *ifax_a_f; double *work_1a_f; double *work_1a_r; int *send_counts_row_big_small; int *recv_counts_row_big_small; int *sdispls_row_big_small; int *rdispls_row_big_small; int *send_counts_dual_map; int *recv_counts_dual_map; int *sdispls_dual_map; int *rdispls_dual_map; int *send_counts_row_big_small_upack; int *recv_counts_row_big_small_upack; int *sdispls_row_big_small_upack; int *rdispls_row_big_small_upack; int *send_counts_dual_map_upack; int *recv_counts_dual_map_upack; int *sdispls_dual_map_upack; int *rdispls_dual_map_upack; int *send_counts_ioff_big_small; int *recv_counts_ioff_big_small; int *sdispls_ioff_big_small; int *rdispls_ioff_big_small; } pme_fft_pkg; struct para_fft_pkg3d pme_res_fft_pkg; int error_check_on; } *

variable_types: ipart int

variable_types: iii int

variable_types: ifirst int

variable_types: ip int

variable_types: iflag int

variable_types: n int

variable_types: iproc int

variable_types: dt double

variable_types: dti double

variable_types: istart int

variable_types: iend int

variable_types: nsec int

variable_types:
xold
double *

variable_types:
yold
double *

variable_types:
zold
double *

variable_types:
x
double *

variable_types:
y
double *

variable_types:
z
double *

variable_types:
vx
double *

variable_types:
vy
double *

variable_types:
vz
double *

variable_types:
fx
double *

variable_types:
fy
double *

variable_types:
fz
double *

variable_types:
mass
double *

user_defined_types: struct class { struct clatoms_info clatoms_info; struct clatoms_tran clatoms_tran; struct clatoms_pos *clatoms_pos; struct ghost_atoms ghost_atoms; struct atommaps atommaps; struct therm_info therm_info_class; struct therm_info therm_info_bead; struct therm_pos therm_class; struct therm_pos *therm_bead; struct vel_samp_class vel_samp_class; struct energy_ctrl energy_ctrl; struct nbr_list nbr_list; struct interact interact; struct int_scr int_scr; struct ewd_scr ewd_scr; struct for_scr for_scr; double tot_memory; struct part_mesh part_mesh; struct surface surface; struct communicate communicate; struct class_comm_forc_pkg class_comm_forc_pkg; }

user_defined_types: struct bonded { struct bond bond; struct grp_bond_con grp_bond_con; struct grp_bond_watts grp_bond_watts; struct constrnt constrnt; struct bond_free bond_free; struct bend bend; struct bend_free bend_free; struct bend_bnd bend_bnd; struct tors tors; struct tors_free tors_free; struct rbar_sig_free rbar_sig_free; struct onfo onfo; struct ecor ecor; struct excl excl; struct intra_scr intra_scr; }

user_defined_types: struct general_data { struct simopts simopts; struct minopts minopts; struct ensopts ensopts; struct filenames filenames; struct statepoint statepoint; struct cell cell; struct timeinfo timeinfo; struct baro baro; struct par_rahman par_rahman; struct ptens ptens; struct stat_avg stat_avg; struct ewald ewald; struct para_fft_pkg3d pme_fft_pkg; struct para_fft_pkg3d pme_res_fft_pkg; int error_check_on; }

user_defined_types: struct nbr_list { int iver; int ilnk; int nolst; int brnch_root_list_opt; double *x0; struct verlist verlist; struct lnklist lnklist; struct brnch_root brnch_root; }

user_defined_types: struct int_scr { double v_lnv; double *x; double *vx; double *gx; double **x_nhc; double *vgmat; double *x_vol_nhc; double *sc; double *sc_temp; double *atm_kin; double *step_up; struct therm_scr *therm_scr; }

user_defined_types: struct class_comm_forc_pkg { int num_proc; int myid; int myatm_start; int mytherm_start; int *displs_atm; int *displs_therm; int comm; int world; double dbl_num_proc; struct class_plimpton_ind plimpton_ind; }


original_code:
void cp_shuffle_prim(double *cpcoefs_cre,double *cpcoefs_cim,int icoef_form,
                     double *cpscr_cre,double *cpscr_cim,int *iofft,
                     double *occ,double *rocc_sum,double *occ_dn, int cp_lsda,
                     VEL_SAMP_CP *vel_samp_cp,
                     CP_COMM_STATE_PKG *cp_comm_state_pkg)
{
  int MPI_INT = 1;
  int MPI_DOUBLE = 1;
  int MPI_CHAR = 1;
  int MPI_MAX = 1;
  int MPI_SUM = 1;
  int MPI_ANY_TAG = 1;
  int MPI_ANY_SOURCE = 1;
  int *MPI_BOTTOM = {0};
 int rnum,count,i,is,ncoef_tot,got_it,*map;
 int icoef1,icoef2,iii;
 int iocc,j;
 double *temp;
 int np_states = cp_comm_state_pkg->num_proc;
 int myid_state = cp_comm_state_pkg->myid;
 int nstate = cp_comm_state_pkg->nstate;
 int ncoef = cp_comm_state_pkg->nstate_ncoef_proc_max;
 int comm_state = cp_comm_state_pkg->comm;
 if(np_states>1){
  if(icoef_form !=1){
    printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     printf("Coefficients are not in transposed form \n");
     printf("on state processor %d in cp_shuffle_prim \n",myid_state);
     printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     fflush(stdout);
     exit(1);
  }
 }
 map = (int *) cmalloc(nstate*sizeof(int))-1;
 temp = (double *) cmalloc(nstate*sizeof(double ))-1;
 if(myid_state == 0){
    rnum = (int) (((double) nstate)*ran_essl(&(vel_samp_cp->qseed)))+1;
    map[1] = rnum;
   count=1;
   do {
    do {
      rnum = (int) (((double) nstate)*ran_essl(&(vel_samp_cp->qseed)))+1;
      for(i=1; i<= count;i++){
       if(rnum == map[i]) {got_it=0;break;} else got_it=1;
      }
    } while(!got_it);
   ++count;
   map[count] = rnum;
   } while(count < nstate);
 }
 if(np_states>1){
   Bcast(&(map[1]),nstate,MPI_INT,0,comm_state);
 }
   ncoef_tot = ncoef*nstate;
   for(i=1;i<=ncoef_tot;i++){
    cpscr_cre[i] = cpcoefs_cre[i];
    cpscr_cim[i] = cpcoefs_cim[i];
   }
   for(is=1;is<=nstate;is++) {
     for(i=1;i<=ncoef;i++) {
       icoef1 = iofft[is] + i;
       icoef2 = iofft[map[is]] + i;
       cpcoefs_cre[icoef1] = cpscr_cre[icoef2];
       cpcoefs_cim[icoef1] = cpscr_cim[icoef2];
     }
   }
  for(i=1; i<= nstate; i++){
     temp[i] = occ[i];
  }
  for(i=1; i<= nstate; i++){
     occ[i] = temp[map[i]];
  }
  if(cp_lsda == 0){
    for(i=1; i<= nstate; i++){
      temp[i] = occ_dn[i];
    }
    for(i=1; i<= nstate; i++){
     occ_dn[i] = temp[map[i]];
    }
  }
  iocc=0;
  for(i=1;i<= nstate ;i++){
   for(j=1;j<= nstate ;j++){
     iocc++;
    rocc_sum[iocc] = 1.0/(occ[i]+occ[j]);
   }
  }
   cfree(&(map[1]));
   cfree(&(temp[1]));
    }

canonical_original_code:
void cp_shuffle_prim(double *cpcoefs_cre, double *cpcoefs_cim, int icoef_form, double *cpscr_cre, double *cpscr_cim, int *iofft, double *occ, double *rocc_sum, double *occ_dn, int cp_lsda, struct vel_samp_cp *vel_samp_cp, struct cp_comm_state_pkg *cp_comm_state_pkg)
{
  int MPI_INT = 1;
  int MPI_DOUBLE = 1;
  int MPI_CHAR = 1;
  int MPI_MAX = 1;
  int MPI_SUM = 1;
  int MPI_ANY_TAG = 1;
  int MPI_ANY_SOURCE = 1;
  int *MPI_BOTTOM = {0};
 int rnum; int count; int i; int is; int ncoef_tot; int got_it; int *map;
 int icoef1; int icoef2; int iii;
 int iocc; int j;
 double *temp;
 int np_states = cp_comm_state_pkg->num_proc;
 int myid_state = cp_comm_state_pkg->myid;
 int nstate = cp_comm_state_pkg->nstate;
 int ncoef = cp_comm_state_pkg->nstate_ncoef_proc_max;
 int comm_state = cp_comm_state_pkg->comm;
 if(np_states>1){
  if(icoef_form !=1){
    printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     printf("Coefficients are not in transposed form \n");
     printf("on state processor %d in cp_shuffle_prim \n",myid_state);
     printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     fflush(stdout);
     exit(1);
  }
 }
 map = (int *) cmalloc(nstate*sizeof(int))-1;
 temp = (double *) cmalloc(nstate*sizeof(double ))-1;
 if(myid_state == 0){
    rnum = (int) (((double) nstate)*ran_essl(&(vel_samp_cp->qseed)))+1;
    map[1] = rnum;
   count=1;
   do {
    do {
      rnum = (int) (((double) nstate)*ran_essl(&(vel_samp_cp->qseed)))+1;
      for(i=1; i<= count;i++){
       if(rnum == map[i]) {got_it=0;break;} else got_it=1;
      }
    } while(!got_it);
   ++count;
   map[count] = rnum;
   } while(count < nstate);
 }
 if(np_states>1){
   Bcast(&(map[1]),nstate,MPI_INT,0,comm_state);
 }
   ncoef_tot = ncoef*nstate;
   for(i=1;i<=ncoef_tot;i++){
    cpscr_cre[i] = cpcoefs_cre[i];
    cpscr_cim[i] = cpcoefs_cim[i];
   }
   for(is=1;is<=nstate;is++) {
     for(i=1;i<=ncoef;i++) {
       icoef1 = iofft[is] + i;
       icoef2 = iofft[map[is]] + i;
       cpcoefs_cre[icoef1] = cpscr_cre[icoef2];
       cpcoefs_cim[icoef1] = cpscr_cim[icoef2];
     }
   }
  for(i=1; i<= nstate; i++){
     temp[i] = occ[i];
  }
  for(i=1; i<= nstate; i++){
     occ[i] = temp[map[i]];
  }
  if(cp_lsda == 0){
    for(i=1; i<= nstate; i++){
      temp[i] = occ_dn[i];
    }
    for(i=1; i<= nstate; i++){
     occ_dn[i] = temp[map[i]];
    }
  }
  iocc=0;
  for(i=1;i<= nstate ;i++){
   for(j=1;j<= nstate ;j++){
     iocc++;
    rocc_sum[iocc] = 1.0/(occ[i]+occ[j]);
   }
  }
   cfree(&(map[1]));
   cfree(&(temp[1]));
    }

variable_types:
iofft
int *

variable_types:
occ
double *

variable_types: struct vel_samp_cp { int ivelc_smpl_on; int ivelc_scal_on; int nvc_smpl; int nvcnhc_smpl; int nvc_scal; int iseed; int iauto_vc_scal_opt; double qseed; double vc_scal_tol; double div_scal; } *

variable_types: struct cp_comm_state_pkg { int num_proc; int myid; int nstate; int nstate_max; int ncoef; int nstate_proc; int nstate_proc_max; int nstate_ncoef_proc_max; int nstate_ncoef_proc; int icoef_start; int comm; int world; int ioff_therm_norm[3]; } *

variable_types: rnum int

variable_types: count int

variable_types: i int

variable_types: is int

variable_types:
map
int *

variable_types: iii int

variable_types: iocc int

variable_types: j int

variable_types:
temp
double *

variable_types: nstate int

variable_types: ncoef int


original_code:
void cp_shuffle_states(CP *cp,int ip)
{
 int cp_lsda = cp->cpopts.cp_lsda;
 int nstate_up = cp->cpcoeffs_info.nstate_up;
 int *ioff_upt = cp->cpcoeffs_info.ioff_upt;
 int nstate_dn = cp->cpcoeffs_info.nstate_dn;
 int *ioff_dnt = cp->cpcoeffs_info.ioff_dnt;
 int icoef_form_up = cp->cpcoeffs_pos[ip].icoef_form_up;
 double *cpcoeffs_cre_up = cp->cpcoeffs_pos[ip].cre_up;
 double *cpcoeffs_cim_up = cp->cpcoeffs_pos[ip].cim_up;
 int icoef_form_dn = cp->cpcoeffs_pos[ip].icoef_form_dn;
 double *cpcoeffs_cre_dn = cp->cpcoeffs_pos[ip].cre_dn;
 double *cpcoeffs_cim_dn = cp->cpcoeffs_pos[ip].cim_dn;
 double *cpscr_cre_up = cp->cpscr.cpscr_wave.cre_up;
 double *cpscr_cim_up = cp->cpscr.cpscr_wave.cim_up;
 double *cpscr_cre_dn = cp->cpscr.cpscr_wave.cre_dn;
 double *cpscr_cim_dn = cp->cpscr.cpscr_wave.cim_dn;
 int np_states = cp->communicate.np_states;
 int myid_state = cp->communicate.myid_state;
 double *occ_up = cp->cpopts.occ_up;
 double *occ_dn = cp->cpopts.occ_dn;
 double *rocc_sum_up = cp->cpopts.rocc_sum_up;
 double *rocc_sum_dn = cp->cpopts.rocc_sum_dn;
 if(np_states>1){
  if(icoef_form_up !=1){
    printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     printf("Coefficients are not in transposed form \n");
     printf("on state processor %d in cp_shuffle_states \n",myid_state);
     printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     fflush(stdout);
     exit(1);
  }
 }
 if(np_states>1 && cp_lsda==1){
  if(icoef_form_dn !=1){
    printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     printf("Coefficients are not in transposed form \n");
     printf("on state processor %d in cp_shuffle_states \n",myid_state);
     printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     fflush(stdout);
     exit(1);
  }
 }
  if( nstate_up > 1 ){
   cp_shuffle_prim(cpcoeffs_cre_up,cpcoeffs_cim_up,icoef_form_up,
                   cpscr_cre_up,cpscr_cim_up,ioff_upt,
                   occ_up,rocc_sum_up,occ_dn,cp_lsda,
                   &(cp->vel_samp_cp),&(cp->cp_comm_state_pkg_up));
  }
  if( nstate_dn > 1 && cp_lsda == 1){
   cp_shuffle_prim(cpcoeffs_cre_dn,cpcoeffs_cim_dn,icoef_form_dn,
                   cpscr_cre_dn,cpscr_cim_dn,ioff_dnt,
                   occ_dn,rocc_sum_dn,occ_up,cp_lsda,
                   &(cp->vel_samp_cp),&(cp->cp_comm_state_pkg_dn));
  }
    }

canonical_original_code:
void cp_shuffle_states(struct cp *cp, int ip)
{
 int cp_lsda = cp->cpopts.cp_lsda;
 int nstate_up = cp->cpcoeffs_info.nstate_up;
 int *ioff_upt = cp->cpcoeffs_info.ioff_upt;
 int nstate_dn = cp->cpcoeffs_info.nstate_dn;
 int *ioff_dnt = cp->cpcoeffs_info.ioff_dnt;
 int icoef_form_up = cp->cpcoeffs_pos[ip].icoef_form_up;
 double *cpcoeffs_cre_up = cp->cpcoeffs_pos[ip].cre_up;
 double *cpcoeffs_cim_up = cp->cpcoeffs_pos[ip].cim_up;
 int icoef_form_dn = cp->cpcoeffs_pos[ip].icoef_form_dn;
 double *cpcoeffs_cre_dn = cp->cpcoeffs_pos[ip].cre_dn;
 double *cpcoeffs_cim_dn = cp->cpcoeffs_pos[ip].cim_dn;
 double *cpscr_cre_up = cp->cpscr.cpscr_wave.cre_up;
 double *cpscr_cim_up = cp->cpscr.cpscr_wave.cim_up;
 double *cpscr_cre_dn = cp->cpscr.cpscr_wave.cre_dn;
 double *cpscr_cim_dn = cp->cpscr.cpscr_wave.cim_dn;
 int np_states = cp->communicate.np_states;
 int myid_state = cp->communicate.myid_state;
 double *occ_up = cp->cpopts.occ_up;
 double *occ_dn = cp->cpopts.occ_dn;
 double *rocc_sum_up = cp->cpopts.rocc_sum_up;
 double *rocc_sum_dn = cp->cpopts.rocc_sum_dn;
 if(np_states>1){
  if(icoef_form_up !=1){
    printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     printf("Coefficients are not in transposed form \n");
     printf("on state processor %d in cp_shuffle_states \n",myid_state);
     printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     fflush(stdout);
     exit(1);
  }
 }
 if(np_states>1 && cp_lsda==1){
  if(icoef_form_dn !=1){
    printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     printf("Coefficients are not in transposed form \n");
     printf("on state processor %d in cp_shuffle_states \n",myid_state);
     printf("@@@@@@@@@@@@@@@@@@@@_ERROR_@@@@@@@@@@@@@@@@@@@@\n");
     fflush(stdout);
     exit(1);
  }
 }
  if( nstate_up > 1 ){
   cp_shuffle_prim(cpcoeffs_cre_up,cpcoeffs_cim_up,icoef_form_up,
                   cpscr_cre_up,cpscr_cim_up,ioff_upt,
                   occ_up,rocc_sum_up,occ_dn,cp_lsda,
                   &(cp->vel_samp_cp),&(cp->cp_comm_state_pkg_up));
  }
  if( nstate_dn > 1 && cp_lsda == 1){
   cp_shuffle_prim(cpcoeffs_cre_dn,cpcoeffs_cim_dn,icoef_form_dn,
                   cpscr_cre_dn,cpscr_cim_dn,ioff_dnt,
                   occ_dn,rocc_sum_dn,occ_up,cp_lsda,
                   &(cp->vel_samp_cp),&(cp->cp_comm_state_pkg_dn));
  }
    }

variable_types: struct cp { struct cpopts { int cp_lda; int cp_sic; int cp_gga; int cp_nonint; int cp_norb; int cp_gauss; int cp_ptens_calc; int cp_init_orthog; int cp_gs; int cp_ngrid_skip; int cp_hess_calc; int zero_cp_vel; int iwrite_coef_binary; int iread_coef_binary; int icheck_perd_size; int icheck_dual_size; int cp_para_opt; int cp_becke; int cp_pw91x; int cp_fila_1x; int cp_fila_2x; int cp_pbe_x; int cp_revpbe_x; int cp_rpbe_x; int cp_xpbe_x; int cp_brx89; int cp_brx2k; int cp_lyp; int cp_lypm1; int cp_pw91c; int cp_pbe_c; int cp_xpbe_c; int cp_tau1_c; int cp_debug_xc; int cp_dual_grid_opt; int cp_isok_opt; double te_ext; double tol_edge_dist; double tol_coef; double *occ_up; double *rocc_sum_up; double *rocc_sum_dn; } cpopts; struct cpcoeffs_info { int pi_beads; int nstate_up; int icmass_unif; int ks_rot_on; int n_ks_rot; int cp_ke_dens_on; int cp_tau_functional; int cp_elf_calc_frq; int cp_laplacian_on; int cp_nfree; int cp_nfree_up; int cp_nfree_dn; int pi_beads_proc; int pi_beads_proc_st; int pi_beads_proc_end; int nstate_up_proc; int istate_up_st; int istate_up_end; int cg_reset_flag; int diis_reset_flag; int ncoef; int ncoef_l; int ncoef_l_dens_cp_box; int icoef_start_up; int nstate_ncoef_proc_up; int nstate_ncoef_proc_max_up; int icoef_start_dn; int nstate_ncoef_proc_dn; int nstate_ncoef_proc_max_dn; int *ioff_up; int *ioff_upt; double ecut; double ecut_dens_cp_box; double cp_hess_cut; double pseud_hess_loc; double max_off_diag; double max_diag; double *cmass; double k0_up; } cpcoeffs_info; struct cpcoeffs_pos { double *cre_up; double *cre_dn; double *vcre_up; double *vcre_dn; double *fcre_up; double *fcre_dn; double *cp_hess_re_up; double *cp_hess_im_up; double *cp_hess_re_dn; double *cp_hess_im_dn; double *ksmat_up; double *ksmat_eig_up; double *ksmat_eig_dn; double ks_offset; double *norbmat_up; double *norbmati_up; double *ovmat_eigv_up; double *ovmat_eigv_dn; int icoef_form_up; int ivcoef_form_up; int ifcoef_form_up; int icoef_orth_up; int ivcoef_orth_up; int ifcoef_orth_up; double max_diag; } *cpcoeffs_pos; struct cptherm_info { int num_c_nhc; int num_c_nhc_proc; int num_c_nhc_norm; int len_c_nhc; int nres_c_nhc; int nyosh_c_nhc; int massiv_flag; int istate_nhc_opt; double cp_therm_heat_fact; double dt_nhc; double c_gkt_massiv; double cmass_nhc_massiv; int *icmapup_nhc; int *icmapdn_nhc; double *wdti; double **c_gkt; double **cmass_nhc; } cptherm_info; struct cptherm_pos { double c_nhc_massiv; double **c_nhc; double **vc_nhc; double **fc_nhc; int itherm_form_up; int itherm_form_dn; } *cptherm_pos; struct electronic_properties { double *cp_elf_up; } electronic_properties; struct cpewald { int nktot_sm; int nktot_dens_cp_box; int nktot_cp_mall; int nktot_cp_sm_mall; int nktot_dens_cp_box_mall; int box_rat; double dbox_rat; double gw_gmin; double gw_gmin_dens_cp_box; int *kmax_cp; int *kmax_cp_dens_cp_box; int *kastr_sm; int *kastr_dens_cp_box; int *ibrk1_sm; int *ibrk1_dens_cp_box; double *ak2; double *ak2_dens_cp_box; } cpewald; struct cpconstrnt { double c_tolshake; double c_tolratl; double c_tolnorb; } cpconstrnt; struct pseudo { int n_ang_max; int n_ang_max_gh; int n_ang_max_kb; int n_rad_max; int nsplin_g; int nsplin_g_tot; int num_nl_lst; int nl_cut_on; int n_ang_mall; int nsplin_g_mall; int nvpsnorm_mall; int nlist_mall; int n_interp_pme_dual; int natm_typ_nl; int natm_typ_gh; int ngh; double gmin_true; double gmin_spl; double gmax_spl; double dg_spl; double gga_cut; double nlvps_skin; double alpha_conv_dual; int *n_ang; int *nrad_0; int *nrad_max_l; int *loc_opt; int *ivps_label; int *np_nl; int *np_nl_gh; int **np_nl_rad_str; int **np_nl_rad_end; int *ip_nl; int *ip_nl_rev; int *ip_nl_gh; int *ip_nl_rev_gh; int *map_nl; int np_loc_cp_box; int np_nonloc_cp_box; int np_nonloc_cp_box_kb; int np_nonloc_cp_box_gh; int *ip_loc_cp_box; int *ip_nonloc_cp_box; double *vps0; double *dvps0; double *gzvps; double *gzvps0; double *vpsnorm; double *rcut_nl; double *rgh; double *x0w; double *q_pseud; char *vxc_typ; char *ggax_typ; char *ggac_typ; } pseudo; struct cpscr { struct cpscr_loc { double *vextr; double *vextr_dens_cp_box; double *dvextr; } cpscr_loc; struct cpscr_nonloc { int natm_nls_max; int nlscr_up; int nlscr_dn; double *vnlre_up; double *vnlre_dn; double *dvnlre_x_up; double *dvnlim_x_up; double *dvnlre_x_dn; double *dvnlim_x_dn; double *dvnlre_gxgx_up; double *dvnlre_gygy_up; double *dvnlre_gzgz_up; double *dvnlre_gxgy_up; double *dvnlre_gygz_up; double *dvnlre_gxgz_up; double *dvnlre_gxgx_dn; double *dvnlre_gygy_dn; double *dvnlre_gzgz_dn; double *dvnlre_gxgy_dn; double *dvnlre_gygz_dn; double *dvnlre_gxgz_dn; } cpscr_nonloc; struct cpscr_rho { int iset_map_flag; int iset_map_upack_flag; int iset_map_flag_pme; int iset_map_upack_flag_pme; int *map_dual; int *map_dual_upack; double *v_ks_up; double *v_ks_dn; double *v_ks_tau_up; double *v_ks_tau_dn; double *rho_up; double *rho_dn; double *rhocr_up; double *rhocr_scr; double *rhocr_up_dens_cp_box; double *rhocr_dn; double *rhocr_dn_dens_cp_box; } cpscr_rho; struct cpscr_grho { double *d2_rho_up; double *d2_rho_dn; double *d2_rho_up_store; double *d2_rho_dn_store; double *d_rhox_up; double *d_rhox_dn; double *dm_rhox_up; double *dm_rhox_dn; double *elec_ke_dens_up; double *g_rhor_x; double *g_rhoi_x; double *g2_rhor; double *rhocr_up_st; double *rhocr_dn_st; } cpscr_grho; struct cpscr_ovmat { double *ovlap1; double *ovlap3; double *ovlap5; double *ovlap7; double *state_vec1; double *state_vec2; double *state_vec3; double *state_vec4; double *state_vec5; double *state_vec6; double *state_vec7; } cpscr_ovmat; struct cpscr_wave { double *zfft; int zfft_mall_size; double *cre_up; double *cre_dn; } cpscr_wave; struct cpscr_therm { double *coef_kin; double *sc_cp; } cpscr_therm; struct cpscr_dual_pme { int *iatemp; int **igrid_a; int **igrid_now; double *a_pme; double *frac_a; double *aj; double **mn_a; double **ua; double *bw_r; int nfft_send_big_small; int nfft_recv_big_small; int num_rows_tot; int *ioff_lg_sm; int **joff_sm_lg; } cpscr_dual_pme; struct cpscr_atom_pme { int pme_on; int n_interp; int pme_para_opt; int nlen_pme; int nktot_pme; int nkf1; int ngrid_a; int *iatemp; int *nc; int **igrid_a; int **igrid_now; double *frac_a; double *aj; double **ua; double **mn_a; double **dmn_a; double **qgrid_now; double *qgrid; double *qgrid_scr; double *qgrid_tmp_real; double *qgrid_tmp_imag; double *bweight_tot; double *bw_r; } cpscr_atom_pme; } cpscr; struct communicate { int np_beads; int myid; int myid_bead_forc; int myid_bead; int myid_bead_prime; int myid_state; int myid_forc; int myid_forc_source; int myid_forc_target; int world; int comm_beads; int comm_beads_forc; int comm_states; int comm_forc; int comm_forc_source; int comm_forc_target; int comm_faux; } communicate; struct para_fft_pkg3d { int nktot; int ncoef_use; int nfft_size; int nfft; int igeneric_opt; int scale_opt; int len_ifax; int nwork1; double ecut; int comm; int num_proc; int *map_proc; int *recv_counts_rho; int *recv_counts_coef; int *map_pme_dn; int *recvcounts_pme_dn; int *sendcounts_pme_dn; int *map_pme_up; int *recvcounts_pme_up; int *sendcounts_pme_up; int ndata_kc; int nkf3; int str_fft_kc_proc; int ska_fft_kc_proc; int skb_fft_kc_proc; int *sendcounts_fft_kc; int *recvcounts_fft_kc; int *sum_fft_kc_proc; int nka_fft_kc; int *ka_fft_kc; int *ifax_c_f; double *work_1c_f; double *work_1c_r; int ndata_kb; int nkf2; int str_fft_kb_proc; int ska_fft_kb_proc; int skc_fft_kb_proc; int *ska_fft_kb_proc_all; int *skc_fft_kb_proc_all; int *sendcounts_fft_kb; int *recvcounts_fft_kb; int *sum_fft_kb_proc; int *ifax_b_f; double *work_1b_f; double *work_1b_r; int ndata_ka; int nkf1; int str_fft_ka_proc; int skb_fft_ka_proc; int skc_fft_ka_proc; int *skb_fft_ka_proc_all; int *skc_fft_ka_proc_all; int *sendcounts_fft_ka; int *recvcounts_fft_ka; int *ifax_a_f; double *work_1a_f; double *work_1a_r; int *send_counts_row_big_small; int *recv_counts_row_big_small; int *sdispls_row_big_small; int *rdispls_row_big_small; int *send_counts_dual_map; int *recv_counts_dual_map; int *sdispls_dual_map; int *rdispls_dual_map; int *send_counts_row_big_small_upack; int *recv_counts_row_big_small_upack; int *sdispls_row_big_small_upack; int *rdispls_row_big_small_upack; int *send_counts_dual_map_upack; int *recv_counts_dual_map_upack; int *sdispls_dual_map_upack; int *rdispls_dual_map_upack; int *send_counts_ioff_big_small; int *recv_counts_ioff_big_small; int *sdispls_ioff_big_small; int *rdispls_ioff_big_small; } cp_sclr_fft_pkg3d_sm; struct para_fft_pkg3d cp_para_fft_pkg3d_sm; struct para_fft_pkg3d cp_sclr_fft_pkg3d_dens_cp_box; struct para_fft_pkg3d cp_para_fft_pkg3d_dens_cp_box; struct para_fft_pkg3d cp_sclr_fft_pkg3d_lg; struct para_fft_pkg3d cp_para_fft_pkg3d_lg; struct cp_comm_state_pkg { int num_proc; int myid; int nstate; int nstate_max; int ncoef; int nstate_proc; int nstate_proc_max; int nstate_ncoef_proc_max; int nstate_ncoef_proc; int icoef_start; int comm; int world; int ioff_therm_norm[3]; } cp_comm_state_pkg_up; struct cp_comm_state_pkg cp_comm_state_pkg_dn; struct vel_samp_cp { int ivelc_smpl_on; int ivelc_scal_on; int nvc_smpl; int nvcnhc_smpl; int nvc_scal; int iseed; int iauto_vc_scal_opt; double qseed; double vc_scal_tol; double div_scal; } vel_samp_cp; } *

variable_types: ip int

user_defined_types: struct cp { struct cpopts cpopts; struct cpcoeffs_info cpcoeffs_info; struct cpcoeffs_pos *cpcoeffs_pos; struct cptherm_info cptherm_info; struct cptherm_pos *cptherm_pos; struct electronic_properties electronic_properties; struct cpewald cpewald; struct cpconstrnt cpconstrnt; struct pseudo pseudo; struct cpscr cpscr; struct communicate communicate; struct para_fft_pkg3d cp_sclr_fft_pkg3d_sm; struct para_fft_pkg3d cp_para_fft_pkg3d_sm; struct para_fft_pkg3d cp_sclr_fft_pkg3d_dens_cp_box; struct para_fft_pkg3d cp_para_fft_pkg3d_dens_cp_box; struct para_fft_pkg3d cp_sclr_fft_pkg3d_lg; struct para_fft_pkg3d cp_para_fft_pkg3d_lg; struct cp_comm_state_pkg cp_comm_state_pkg_up; struct cp_comm_state_pkg cp_comm_state_pkg_dn; struct vel_samp_cp vel_samp_cp; }

user_defined_types: struct cpscr { struct cpscr_loc cpscr_loc; struct cpscr_nonloc cpscr_nonloc; struct cpscr_rho cpscr_rho; struct cpscr_grho cpscr_grho; struct cpscr_ovmat cpscr_ovmat; struct cpscr_wave cpscr_wave; struct cpscr_therm cpscr_therm; struct cpscr_dual_pme cpscr_dual_pme; struct cpscr_atom_pme cpscr_atom_pme; }


original_code:
void get_clong(int natm_tot,int natm_typ,int ninter,
        int iatm_typ[],double c6m[],
               int inter_map_index[],
        double *clong,double *clong_res,double cutoff[],
        double cutoff_res[],int iswit, double rheal)
    {
  int iii,i,j,ntype1;
  int inter_map_index_i;
  int *index,*num_typ;
  double fpi3,rmin,fpi,fact,fact_res;
  double *clongm;
  num_typ = (int *) cmalloc(natm_typ*sizeof(int))-1;
  index = (int *) cmalloc(natm_typ*sizeof(int))-1;
  clongm = (double *) cmalloc(ninter*sizeof(double))-1;
  for(i=1;i<=natm_typ;i++) num_typ[i] = 0;
  for(i=1;i<=natm_tot;i++) {num_typ[(iatm_typ[i])] ++;}
  ntype1=natm_typ+1;
  for(i=1;i<=natm_typ;i++){
    for(j=1;j<=i;j++){
      index[j] = ((j-1)*(2*ntype1-j))/2 + i - j + 1;
    }
    for(j=1;j<=i-1;j++){
      clongm[(index[j])] = num_typ[i]*num_typ[j];
    }
    clongm[(index[i])]= (num_typ[i]*(num_typ[i]-1))/2;
  }
  *clong=0.0;
  *clong_res= 0.0;
  fpi3=4.0*3.14159265358979323846/3.0;
  fpi=4.0*3.14159265358979323846;
  if(iswit==0){
   for(i=1;i<=ninter;i++){
     inter_map_index_i = inter_map_index[i];
     rmin = (cutoff[inter_map_index_i] < cutoff_res[inter_map_index_i]
           ? cutoff[inter_map_index_i]:cutoff_res[inter_map_index_i]);
     *clong -= fpi3*c6m[inter_map_index_i]*clongm[i]/pow(cutoff[inter_map_index_i],3.0);
     *clong_res -= fpi*c6m[inter_map_index_i]*clongm[i]*(
                   (1.0/(rheal*rheal))*(1.0/rmin+1.0/(rmin-rheal))
                  +(2.0/(rheal*rheal*rheal))*log((rmin-rheal)/rmin));
   }
  }else{
   for(i=1;i<=ninter;i++){
     inter_map_index_i = inter_map_index[i];
     if((c6m[inter_map_index_i]>0)&&(cutoff[inter_map_index_i]-rheal>0)){
      rmin = (cutoff[inter_map_index_i] < cutoff_res[inter_map_index_i]
                  ? cutoff[inter_map_index_i] : cutoff_res[inter_map_index_i]);
      fact = (1.0/(rheal*rheal))*(1.0/cutoff[inter_map_index_i]+1.0
                  / (cutoff[inter_map_index_i]-rheal))
                  + (2.0/(rheal*rheal*rheal))*log((cutoff[inter_map_index_i]-rheal)
                  / cutoff[inter_map_index_i]);
      *clong -= (fpi*c6m[inter_map_index_i]*clongm[i]*fact);
      fact_res = (1.0/(rheal*rheal))*(1.0/rmin+1.0/(rmin-rheal))
                   +(2.0/(rheal*rheal*rheal))*log((rmin-rheal)/rmin);
      *clong_res -= fpi*c6m[inter_map_index_i]*clongm[i]*fact_res;
     }
   }
  }
  cfree(&num_typ[1]);
  cfree(&index[1]);
  cfree(&clongm[1]);
  }

canonical_original_code:
void get_clong(int natm_tot, int natm_typ, int ninter, int iatm_typ[], double c6m[], int inter_map_index[], double *clong, double *clong_res, double cutoff[], double cutoff_res[], int iswit, double rheal)
    {
  int iii; int i; int j; int ntype1;
  int inter_map_index_i;
  int *index; int *num_typ;
  double fpi3; double rmin; double fpi; double fact; double fact_res;
  double *clongm;
  num_typ = (int *) cmalloc(natm_typ*sizeof(int))-1;
  index = (int *) cmalloc(natm_typ*sizeof(int))-1;
  clongm = (double *) cmalloc(ninter*sizeof(double))-1;
  for(i=1;i<=natm_typ;i++) num_typ[i] = 0;
  for(i=1;i<=natm_tot;i++) {num_typ[(iatm_typ[i])] ++;}
  ntype1=natm_typ+1;
  for(i=1;i<=natm_typ;i++){
    for(j=1;j<=i;j++){
      index[j] = ((j-1)*(2*ntype1-j))/2 + i - j + 1;
    }
    for(j=1;j<=i-1;j++){
      clongm[(index[j])] = num_typ[i]*num_typ[j];
    }
    clongm[(index[i])]= (num_typ[i]*(num_typ[i]-1))/2;
  }
  *clong=0.0;
  *clong_res= 0.0;
  fpi3=4.0*3.14159265358979323846/3.0;
  fpi=4.0*3.14159265358979323846;
  if(iswit==0){
   for(i=1;i<=ninter;i++){
     inter_map_index_i = inter_map_index[i];
     rmin = (cutoff[inter_map_index_i] < cutoff_res[inter_map_index_i]
           ? cutoff[inter_map_index_i]:cutoff_res[inter_map_index_i]);
     *clong -= fpi3*c6m[inter_map_index_i]*clongm[i]/pow(cutoff[inter_map_index_i],3.0);
     *clong_res -= fpi*c6m[inter_map_index_i]*clongm[i]*(
                   (1.0/(rheal*rheal))*(1.0/rmin+1.0/(rmin-rheal))
                  +(2.0/(rheal*rheal*rheal))*log((rmin-rheal)/rmin));
   }
  }else{
   for(i=1;i<=ninter;i++){
     inter_map_index_i = inter_map_index[i];
     if((c6m[inter_map_index_i]>0)&&(cutoff[inter_map_index_i]-rheal>0)){
      rmin = (cutoff[inter_map_index_i] < cutoff_res[inter_map_index_i]
                  ? cutoff[inter_map_index_i] : cutoff_res[inter_map_index_i]);
      fact = (1.0/(rheal*rheal))*(1.0/cutoff[inter_map_index_i]+1.0
                  / (cutoff[inter_map_index_i]-rheal))
                  + (2.0/(rheal*rheal*rheal))*log((cutoff[inter_map_index_i]-rheal)
                  / cutoff[inter_map_index_i]);
      *clong -= (fpi*c6m[inter_map_index_i]*clongm[i]*fact);
      fact_res = (1.0/(rheal*rheal))*(1.0/rmin+1.0/(rmin-rheal))
                   +(2.0/(rheal*rheal*rheal))*log((rmin-rheal)/rmin);
      *clong_res -= fpi*c6m[inter_map_index_i]*clongm[i]*fact_res;
     }
   }
  }
  cfree(&num_typ[1]);
  cfree(&index[1]);
  cfree(&clongm[1]);
  }

variable_types: ninter int

variable_types:
clong
double *

variable_types:
cutoff
double []

variable_types: iswit int

variable_types: rheal double

variable_types:
index
int *

variable_types: rmin double

variable_types: fpi double

variable_types: fact double

variable_types:
clongm
double *


repo: Twisol/anachronism

decompiled_code:
void __fastcall telnet_parser_free(void *a1)
{
free(a1);
}

canonical_decompiled_code:
void __fastcall func0(void *a1)
{
free(a1);
}

original_code:
void telnet_parser_free(telnet_parser* parser)
{
  free(parser);
}

canonical_original_code:
void telnet_parser_free(struct telnet_parser *parser)
{
  free(parser);
}

variable_types: struct telnet_parser { int cs; unsigned char *p; unsigned char *pe; unsigned char *eof; unsigned char option_mark; unsigned char interrupted; void (*callback)(struct telnet_parser *parser, struct telnet_parser_event { enum telnet_parser_event_type { TELNET_EV_PARSER_DATA=0, TELNET_EV_PARSER_COMMAND=1, TELNET_EV_PARSER_OPTION=2, TELNET_EV_PARSER_SUBNEGOTIATION=3, TELNET_EV_PARSER_WARNING=4 } type; } *event); void *userdata; } *

user_defined_types: struct telnet_parser { int cs; unsigned char *p; unsigned char *pe; unsigned char *eof; unsigned char option_mark; unsigned char interrupted; void (*callback)(struct telnet_parser *parser, struct telnet_parser_event *event); void *userdata; }

user_defined_types: struct telnet_parser_event { enum telnet_parser_event_type type; }


decompiled_code:
__int64 __fastcall telnet_parser_get_userdata(__int64 a1, _QWORD *a2)
{
if ( !a1 )
return 4294967293LL;
*a2 = *(_QWORD *)(a1 + 48);
return 1LL;
}

original_code:
telnet_error telnet_parser_get_userdata(telnet_parser* parser, void** userdata)
{
  if (!parser)
    return TELNET_E_BAD_PARSER;
  *userdata = parser->userdata;
  return TELNET_E_OK;
}

canonical_original_code:
enum telnet_error telnet_parser_get_userdata(struct telnet_parser *parser, void **userdata)
{
  if (!parser)
    return TELNET_E_BAD_PARSER;
  *userdata = parser->userdata;
  return TELNET_E_OK;
}

variable_types:
userdata
void **

return_type: enum telnet_error { TELNET_E_NOT_SUBNEGOTIABLE=-4, TELNET_E_BAD_PARSER=-3, TELNET_E_BAD_NVT=-2, TELNET_E_INVALID_COMMAND=-1, TELNET_E_ALLOC=0, TELNET_E_OK=1, TELNET_E_INTERRUPT=2 }

user_defined_types: enum telnet_parser_event_type { TELNET_EV_PARSER_DATA=0, TELNET_EV_PARSER_COMMAND=1, TELNET_EV_PARSER_OPTION=2, TELNET_EV_PARSER_SUBNEGOTIATION=3, TELNET_EV_PARSER_WARNING=4 }


original_code:
telnet_error telnet_parser_interrupt(telnet_parser* parser)
{
  if (!parser)
    return TELNET_E_BAD_PARSER;
  if (parser->p)
    parser->eof = parser->pe = parser->p + 1;
  parser->interrupted = 1;
  return TELNET_E_OK;
}

canonical_original_code:
enum telnet_error telnet_parser_interrupt(struct telnet_parser *parser)
{
  if (!parser)
    return TELNET_E_BAD_PARSER;
  if (parser->p)
    parser->eof = parser->pe = parser->p + 1;
  parser->interrupted = 1;
  return TELNET_E_OK;
}

user_defined_types: enum telnet_error { TELNET_E_NOT_SUBNEGOTIABLE=-4, TELNET_E_BAD_PARSER=-3, TELNET_E_BAD_NVT=-2, TELNET_E_INVALID_COMMAND=-1, TELNET_E_ALLOC=0, TELNET_E_OK=1, TELNET_E_INTERRUPT=2 }


repo: Tydus/libosr

decompiled_code:
__int64 __fastcall parse_uleb128(char *a1, _DWORD *a2)
{
char v3; // al
__int64 v4; // rax
int v5; // er9
char v6; // di

v3 = *a1;
*a2 |= *a1 & 0x7F;
if ( v3 >= 0 )
{
v5 = 0;
}
else
{
v4 = 1LL;
while ( 1 )
{
v5 = v4;
v6 = a1[v4];
*a2 |= (v6 & 0x7F) << (7 * v4);
if ( v6 >= 0 )
break;
if ( ++v4 == 4 )
return 0xFFFFFFFFLL;
}
}
return (unsigned int)(v5 + 1);
}

canonical_decompiled_code:
__int64 __fastcall func7(char *a1, _DWORD *a2)
{
char v3; // al
__int64 v4; // rax
int v5; // er9
char v6; // di

v3 = *a1;
*a2 |= *a1 & 0x7F;
if ( v3 >= 0 )
{
v5 = 0;
}
else
{
v4 = 1LL;
while ( 1 )
{
v5 = v4;
v6 = a1[v4];
*a2 |= (v6 & 0x7F) << (7 * v4);
if ( v6 >= 0 )
break;
if ( ++v4 == 4 )
return 0xFFFFFFFFLL;
}
}
return (unsigned int)(v5 + 1);
}

original_code:
static int parse_uleb128(const unsigned char *s, uint32_t *ret){
    int i = 0;
    for( ; ; i++){
        char byte = s[i];
        *ret |= (byte & 0x7f) << (i * 7);
        if((byte & 0x80) == 0) break;
        if(i == 3) return -1;
    }
    return ++i;
}

canonical_original_code:
static int parse_uleb128(unsigned char *s, unsigned int *ret){
    int i = 0;
    for( ; ; i++){
        char byte = s[i];
        *ret |= (byte & 0x7f) << (i * 7);
        if((byte & 0x80) == 0) break;
        if(i == 3) return -1;
    }
    return ++i;
}

variable_types:
s
unsigned char *

variable_types:
ret
unsigned int *

variable_types: i int

variable_types: byte char

return_type: int


repo: Tydus/tcptunnel

original_code:
int b64_encode(const uint8_t *in, int in_len, char *out, int out_size)
{
 uint8_t triple[3];
 int i;
 int len;
 int line = 0;
 int done = 0;
 while(in_len){
  len = 0;
  for(i = 0; i < 3; i++){
   if(in_len){
    triple[i] = *in++;
    len++;
    in_len--;
   }else
    triple[i] = 0;
  }
  if(!len)
   continue;
  if(done + 4 >= out_size)
   return -1;
  *out++ = encode[triple[0] >> 2];
  *out++ = encode[((triple[0] & 0x03) << 4) |
          ((triple[1] & 0xf0) >> 4)];
  *out++ = (len > 1 ? encode[((triple[1] & 0x0f) << 2) |
          ((triple[2] & 0xc0) >> 6)] : '=');
  *out++ = (len > 2 ? encode[triple[2] & 0x3f] : '=');
  done += 4;
  line += 4;
 }
 if(done + 1 >= out_size)
  return -1;
 *out++ = '\0';
 return done;
}

canonical_original_code:
int b64_encode(unsigned char *in, int in_len, char *out, int out_size)
{
 unsigned char triple[3];
 int i;
 int len;
 int line = 0;
 int done = 0;
 while(in_len){
  len = 0;
  for(i = 0; i < 3; i++){
   if(in_len){
    triple[i] = *in++;
    len++;
    in_len--;
   }else
    triple[i] = 0;
  }
  if(!len)
   continue;
  if(done + 4 >= out_size)
   return -1;
  *out++ = encode[triple[0] >> 2];
  *out++ = encode[((triple[0] & 0x03) << 4) |
          ((triple[1] & 0xf0) >> 4)];
  *out++ = (len > 1 ? encode[((triple[1] & 0x0f) << 2) |
          ((triple[2] & 0xc0) >> 6)] : '=');
  *out++ = (len > 2 ? encode[triple[2] & 0x3f] : '=');
  done += 4;
  line += 4;
 }
 if(done + 1 >= out_size)
  return -1;
 *out++ = '\0';
 return done;
}

variable_types:
in
unsigned char *

variable_types:
out
char *

variable_types:
triple
unsigned char [3]

variable_types: len int

variable_types: line int

variable_types: done int


original_code:
int b64_decode(const char *in, uint8_t *out, int out_size)
{
 int len;
 int i;
 int done = 0;
 uint8_t v;
 uint8_t quad[4];
 while(*in){
  len = 0;
  for(i = 0; i < 4 && *in; i++){
   v = 0;
   while(*in && !v){
    v = *in++;
    v = (v < 43 || v > 122) ? 0 : decode[v - 43];
    if(v)
     v = (v == '$') ? 0 : v - 61;
    if(*in){
     len++;
     if(v)
      quad[i] = v - 1;
    }else
     quad[i] = 0;
   }
  }
  if(!len)
   continue;
  if(out_size < (done + len - 1))
   return -1;
  if(len >= 2)
   *out++ = quad[0] << 2 | quad[1] >> 4;
  if(len >= 3)
   *out++ = quad[1] << 4 | quad[2] >> 2;
  if(len >= 4)
   *out++ = ((quad[2] << 6) & 0xc0) | quad[3];
  done += len - 1;
 }
 if(done + 1 >= out_size)
  return -1;
 *out++ = '\0';
 return done;
}

canonical_original_code:
int b64_decode(char *in, unsigned char *out, int out_size)
{
 int len;
 int i;
 int done = 0;
 unsigned char v;
 unsigned char quad[4];
 while(*in){
  len = 0;
  for(i = 0; i < 4 && *in; i++){
   v = 0;
   while(*in && !v){
    v = *in++;
    v = (v < 43 || v > 122) ? 0 : decode[v - 43];
    if(v)
     v = (v == '$') ? 0 : v - 61;
    if(*in){
     len++;
     if(v)
      quad[i] = v - 1;
    }else
     quad[i] = 0;
   }
  }
  if(!len)
   continue;
  if(out_size < (done + len - 1))
   return -1;
  if(len >= 2)
   *out++ = quad[0] << 2 | quad[1] >> 4;
  if(len >= 3)
   *out++ = quad[1] << 4 | quad[2] >> 2;
  if(len >= 4)
   *out++ = ((quad[2] << 6) & 0xc0) | quad[3];
  done += len - 1;
 }
 if(done + 1 >= out_size)
  return -1;
 *out++ = '\0';
 return done;
}

variable_types:
in
char *

variable_types:
out
unsigned char *

variable_types:
v
unsigned char

variable_types:
quad
unsigned char [4]


repo: UCBerkeleySETI/aocoord

decompiled_code:
void __fastcall haToAzEl_V(__int64 a1, __int64 a2, double a3)
{
double v3; // xmm0_8
double v4; // xmm2_8
double v5; // xmm3_8
double v6; // [rsp+0h] [rbp-28h] BYREF
double sinx[4]; // [rsp+8h] [rbp-20h] BYREF

sincos(a3 - 1.570796326794897, sinx, &v6);
v3 = v6;
v4 = sinx[0];
v5 = *(double *)a1;
*(double *)a2 = COERCE_DOUBLE(COERCE_UNSIGNED_INT64(v6 * *(double *)a1) ^ LC1) - sinx[0] * *(double *)(a1 + 16);
*(_QWORD *)(a2 + 8) = *(_QWORD *)(a1 + 8) ^ LC1;
*(double *)(a2 + 16) = v3 * *(double *)(a1 + 16) - v4 * v5;
}

canonical_decompiled_code:
void __fastcall func0(__int64 a1, __int64 a2, double a3)
{
double v3; // xmm0_8
double v4; // xmm2_8
double v5; // xmm3_8
double v6; // [rsp+0h] [rbp-28h] BYREF
double sinx[4]; // [rsp+8h] [rbp-20h] BYREF

sincos(a3 - 1.570796326794897, sinx, &v6);
v3 = v6;
v4 = sinx[0];
v5 = *(double *)a1;
*(double *)a2 = COERCE_DOUBLE(COERCE_UNSIGNED_INT64(v6 * *(double *)a1) ^ LC1) - sinx[0] * *(double *)(a1 + 16);
*(_QWORD *)(a2 + 8) = *(_QWORD *)(a1 + 8) ^ LC1;
*(double *)(a2 + 16) = v3 * *(double *)(a1 + 16) - v4 * v5;
}

original_code:
void haToAzEl_V
        (
         double* phaDec,
         double latRd,
         double* pazEl
        )
{
        double costh,sinth,th;
  double temp;
        th=latRd-1.57079632679489661923;
        costh=cos(th);
        sinth=sin(th);
  temp=phaDec[0];
        pazEl[0]= -(costh*phaDec[0]) -(sinth * phaDec[2]);
        pazEl[1]= -phaDec[1] ;
        pazEl[2]= -(sinth*temp) +(costh * phaDec[2]);
        return;
}

canonical_original_code:
void haToAzEl_V(double *phaDec, double latRd, double *pazEl)
{
        double costh; double sinth; double th;
  double temp;
        th=latRd-1.57079632679489661923;
        costh=cos(th);
        sinth=sin(th);
  temp=phaDec[0];
        pazEl[0]= -(costh*phaDec[0]) -(sinth * phaDec[2]);
        pazEl[1]= -phaDec[1] ;
        pazEl[2]= -(sinth*temp) +(costh * phaDec[2]);
        return;
}

variable_types:
phaDec
double *

variable_types: latRd double

variable_types:
pazEl
double *

variable_types: costh double

variable_types: sinth double

variable_types: th double

variable_types: temp double


fmtRdToHmsD

decompiled_code:
__int64 __fastcall fmtRdToHmsD(unsigned int a1, __int64 a2)
{
double v3; // [rsp+8h] [rbp-30h] BYREF
unsigned int v4; // [rsp+14h] [rbp-24h] BYREF
unsigned int v5; // [rsp+18h] [rbp-20h] BYREF
unsigned int v6[7]; // [rsp+1Ch] [rbp-1Ch] BYREF

rad_hms3(v6, &v5, &v4, &v3);
return fmtHmsD(v6[0], v5, v4, a1, a2, v3);
}

canonical_decompiled_code:
__int64 __fastcall func0(unsigned int a1, __int64 a2)
{
double v3; // [rsp+8h] [rbp-30h] BYREF
unsigned int v4; // [rsp+14h] [rbp-24h] BYREF
unsigned int v5; // [rsp+18h] [rbp-20h] BYREF
unsigned int v6[7]; // [rsp+1Ch] [rbp-1Ch] BYREF

rad_hms3(v6, &v5, &v4, &v3);
return fmtHmsD(v6[0], v5, v4, a1, a2, v3);
}

original_code:
void fmtRdToHmsD
        (
         double hmsRd,
         int secFracDig,
         char *cformatted
        )
{
        int sgn,h,m;
        double s;
        rad_hms3(hmsRd,&sgn,&h,&m,&s);
        fmtHmsD(sgn,h,m,s,secFracDig,cformatted);
        return;
}

canonical_original_code:
void fmtRdToHmsD(double hmsRd, int secFracDig, char *cformatted)
{
        int sgn; int h; int m;
        double s;
        rad_hms3(hmsRd,&sgn,&h,&m,&s);
        fmtHmsD(sgn,h,m,s,secFracDig,cformatted);
        return;
}

variable_types: hmsRd double

variable_types: secFracDig int

variable_types:
cformatted
char *

variable_types: sgn int

variable_types: h int

variable_types: m int

variable_types: s double


azzaToRaDec

original_code:
void azzaToRaDec
      (
 double azFd,
 double za,
    int mjd,
 double utcFrac,
 int ofDate,
 AZZA_TO_RADEC_INFO *pinfo,
    double *praJ2_rd,
    double *pdecJ2_rd
 )
{
 double azEl_V[3];
    double ut1Frac;
 double raDApp_V[3],haAppD_V[3];
 double raDTrue_V[3],raDJ2000_V[3];
 double lst;
 double last;
 double aber_V[3];
 anglesToVec3((azFd+180.)*1.745329251994329577e-2,(90.-za)*1.745329251994329577e-2,azEl_V);
 azElToHa_V(azEl_V,pinfo->obsPosI.latRd,haAppD_V);
 ut1Frac=utcFrac + utcToUt1(mjd,utcFrac,&pinfo->utcI);
 if (ut1Frac >= 1.) {
        ut1Frac-=1.;
        mjd++;
    }
    else if (ut1Frac < 0.) {
           ut1Frac+=1.;
           mjd--;
    }
    lst=ut1ToLmst(mjd,ut1Frac,pinfo->obsPosI.wLongRd);
 last=lst + pinfo->precNutI.eqEquinox;
 haToRaDec_V(haAppD_V,last,raDApp_V);
    aberAnnual_V(mjd,ut1Frac,aber_V);
 VV3D_Sub(raDApp_V,aber_V,raDTrue_V);
 V3D_Normalize(raDTrue_V,raDTrue_V);
 if (!ofDate) {
  precNut(mjd,ut1Frac,0,&pinfo->precNutI,raDTrue_V,raDJ2000_V);
 } else {
  memcpy(raDJ2000_V,raDTrue_V,sizeof(raDTrue_V));
 }
 vec3ToAngles(raDJ2000_V,1,praJ2_rd,pdecJ2_rd);
 return;
}

canonical_original_code:
void azzaToRaDec(double azFd, double za, int mjd, double utcFrac, int ofDate, struct AZZA_TO_RADEC_INFO *pinfo, double *praJ2_rd, double *pdecJ2_rd)
{
 double azEl_V[3];
    double ut1Frac;
 double raDApp_V[3]; double haAppD_V[3];
 double raDTrue_V[3]; double raDJ2000_V[3];
 double lst;
 double last;
 double aber_V[3];
 anglesToVec3((azFd+180.)*1.745329251994329577e-2,(90.-za)*1.745329251994329577e-2,azEl_V);
 azElToHa_V(azEl_V,pinfo->obsPosI.latRd,haAppD_V);
 ut1Frac=utcFrac + utcToUt1(mjd,utcFrac,&pinfo->utcI);
 if (ut1Frac >= 1.) {
        ut1Frac-=1.;
        mjd++;
    }
    else if (ut1Frac < 0.) {
           ut1Frac+=1.;
           mjd--;
    }
    lst=ut1ToLmst(mjd,ut1Frac,pinfo->obsPosI.wLongRd);
 last=lst + pinfo->precNutI.eqEquinox;
 haToRaDec_V(haAppD_V,last,raDApp_V);
    aberAnnual_V(mjd,ut1Frac,aber_V);
 VV3D_Sub(raDApp_V,aber_V,raDTrue_V);
 V3D_Normalize(raDTrue_V,raDTrue_V);
 if (!ofDate) {
  precNut(mjd,ut1Frac,0,&pinfo->precNutI,raDTrue_V,raDJ2000_V);
 } else {
  memcpy(raDJ2000_V,raDTrue_V,sizeof(raDTrue_V));
 }
 vec3ToAngles(raDJ2000_V,1,praJ2_rd,pdecJ2_rd);
 return;
}

variable_types: azFd double

variable_types: za double

variable_types: mjd int

variable_types: utcFrac double

variable_types: ofDate int

variable_types: struct AZZA_TO_RADEC_INFO { struct PRECNUT_INFO { double precN_M[9]; double precNI_M[9]; double eqEquinox; double ut1Frac; double deltaMjd; int mjd; int fill; } precNutI; struct OBS_POS_INFO { double latRd; double wLongRd; int hoursToUtc; int fill; } obsPosI; struct UTC_INFO { int year; int mjdAtOff; double offset; double rate; } utcI; } *

variable_types: lst double

variable_types: last double

user_defined_types: struct AZZA_TO_RADEC_INFO { struct PRECNUT_INFO precNutI; struct OBS_POS_INFO obsPosI; struct UTC_INFO utcI; }


wrap

decompiled_code:
double __fastcall wrap(int a1, int a2, int a3, double result)
{
double j; // xmm1_8
double i; // xmm1_8

if ( a3 )
{
for ( i = (double)a2; result >= i; result = result - i )
;
for ( ; (double)a1 > result; result = result + i )
;
}
else
{
for ( j = (double)a2; result > j; result = result - j )
;
for ( ; (double)a1 >= result; result = result + j )
;
}
return result;
}

canonical_decompiled_code:
double __fastcall func1(int a1, int a2, int a3, double result)
{
double j; // xmm1_8
double i; // xmm1_8

if ( a3 )
{
for ( i = (double)a2; result >= i; result = result - i )
;
for ( ; (double)a1 > result; result = result + i )
;
}
else
{
for ( j = (double)a2; result > j; result = result - j )
;
for ( ; (double)a1 >= result; result = result + j )
;
}
return result;
}

original_code:
double wrap(double Val, long LowBound, long HighBound, int LowInclusive) {
 if(LowInclusive) {
  while(Val >= HighBound) Val -= HighBound;
  while(Val < LowBound) Val += HighBound;
 } else {
  while(Val > HighBound) Val -= HighBound;
                while(Val <= LowBound) Val += HighBound;
 }
 return Val;
}

variable_types: Val double

variable_types: LowBound long

variable_types: HighBound long

variable_types: LowInclusive int

return_type: double