// File: /workspace/github_cpp_makefile_star2_O1/Luthaf[P]zeopp/networkio.cc
// Function: readCIFFile(char*, ATOM_NETWORK*, bool)
bool readCIFFile(char *filename, ATOM_NETWORK *cell, bool radial){
  string line;
  // Known markers in CIF File if you change the order it will affect the code
  string descriptor[] = {"data_",
			 "_cell_length_a", //case 1
			 "_cell_length_b", //2
			 "_cell_length_c", //3
			 "_cell_angle_alpha", //4
			 "_cell_angle_beta", //5
			 "_cell_angle_gamma", //6
			 "loop_", //7
			 "_symmetry_equiv_pos_as_xyz", //8
			 "_space_group_symop_operation_xyz", //9
			 "_atom_site_label", //10
			 "_atom_site_type_symbol", //11
			 "_atom_site_fract_x", //12
			 "_atom_site_fract_y", //13
			 "_atom_site_fract_z", //14
			 "_atom_site_charge", //15
       "_symmetry_Int_Tables_number", //16
			 "_atom_site_Cartn_x", //17
			 "_atom_site_Cartn_y", //18
			 "_atom_site_Cartn_z", //19
                         "_symmetry_equiv_pos_site_id", // 20
			 "NULL"};
  int ndx;
  vector<string> list = strAry2StrVec(descriptor);
  vector<string> token;

  vector<string> sym_x;
  vector<string> sym_y;
  vector<string> sym_z;
  vector<string> atom_label;
  vector<string> atom_type;
  vector<double> atom_x;
  vector<double> atom_y;
  vector<double> atom_z;
  vector<double> atom_charge;

  int symmetry_Int_Table_number = -1; //set to dummy value so we can check if anything was read
  bool symmetry_equiv_pos_site_id_Flag = false; // this is to read symmetry lines from lines that have sym. id.

  // Try opening the file if it opens proceed with processing
  ifstream ciffile;
  cout << "Opening File: " << filename << endl;
  ciffile.open(filename);
  bool read_a = false, read_b = false, read_c = false, read_alpha = false, read_beta = false, read_gamma = false, initialized_cell = false; //keep track of when all cell params are parsed, so the cell can be created
  if(ciffile.is_open()) {
    while(!ciffile.eof()) {
      if(read_a && read_b && read_c && read_alpha && read_beta && read_gamma && !initialized_cell) {cell->initialize(); initialized_cell=true;}
      getline(ciffile,line);
//printf("DEBUG: read line %s\n", line.c_str());
      token = split(line," ()\r\t");
      exception: //I needed an easy way to jump out of the _loop command if an unknown command was found
      if (token.size() > 0) {
	      //Where all non-loop commands should be added
	      if(token[0].substr(0,5).compare(list[0]) == 0){ //name of unit cell
	        cell->name=token[0].substr(5);
	      }
	      else if (token[0].compare(list[1]) == 0){ //length a
	        cell->a=convertToDouble(token[1]);
          read_a = true;
	      }
	      else if (token[0].compare(list[2]) == 0){ //length b
	        cell->b=convertToDouble(token[1]);
          read_b = true;
	      }
	      else if (token[0].compare(list[3]) == 0){ //length c
	        cell->c=convertToDouble(token[1]);
          read_c = true;
	      }
	      else if (token[0].compare(list[4]) == 0){ //alpha
	        cell->alpha=convertToDouble(token[1]);
          read_alpha = true;
	      }
	      else if (token[0].compare(list[5]) == 0){ //beta
	        cell->beta=convertToDouble(token[1]);
          read_beta = true;
	      }
	      else if (token[0].compare(list[6]) == 0){ //gamma
	        cell->gamma=convertToDouble(token[1]);
          read_gamma = true;
	      }
        else if (token[0].compare(list[16]) == 0){ //_symmetry_Int_Tables_number
	        symmetry_Int_Table_number = convertToInt(token[1]);
	      }
	      else if (token[0].compare(list[7]) == 0){ //loop_
//printf("DEBUG: inside a \"loop_\" section\n");
	        vector<string> column_labels;
	        getline(ciffile,line);
	        token = split(line," \r\t");
          bool tokenized = false, in_loop = true;
          if(token.size()>0) tokenized=true;
//	        while (token[0].at(0)=='_') { //collect all of the collumn labels
	        while (tokenized && in_loop) { //collect all of the collumn labels
            if(token[0].at(0)=='_') {
	            column_labels.push_back(token[0]);
//printf("DEBUG: within loop, parsed a column header \"%s\"\n", token[0].c_str());
	            getline(ciffile,line);
//printf("DEBUG: read line \"%s\" - tokenizing ...\n", line.c_str());
	            token = split(line," \r\t");
              if(token.size()<=0) tokenized=false;
            } else in_loop = false;
	        }
          if(!tokenized) {
printf("\n#####\n##### WARNING: parsed a loop in cif file, but data was not present\n#####\n\n");
          } else {
//printf("DEBUG: exited loop successfully, having read data line \"%s\"\n", line.c_str());
            //collecting the data associated with each column and put
            // in correct place
            token = split(line," ,'\r\t"); //This is needed to split data
            bool need_to_convert_to_fractional = false;
            while(token.size()>0){
              if (token[0].at(0) =='_' || token[0].compare("loop_")==0 || token[0].at(0) == '#'){
                goto exception; // unexpected input
              }
              if (token.size()!=column_labels.size() && column_labels[0].compare(list[8]) != 0 && column_labels[0].compare(list[9]) != 0 && column_labels[0].compare(list[20]) != 0){
                goto exception; //unexpected input
              }
              for (unsigned int i=0; i<column_labels.size(); i++){
                switch (strCmpList(list,column_labels[i])){
  //printf("SYM DEBUG: checking for symmetry section ...\n");
	              //Where all loop commands should be added
                case 8: //_symmetry_equiv_pos_as_xyz and
                case 9: //_space_group_symop_operation_xyz have the same meaning
  //printf("SYM DEBUG: symmetry section found!\n");
	              if (!((token.size()==3&&symmetry_equiv_pos_site_id_Flag==false)||(token.size()==4&&symmetry_equiv_pos_site_id_Flag==true))){
	                cerr << "Error: Expected 3 strings for _symmetry_equiv_pos_as_xyz (or 4 if _symmetry_equiv_pos_site_id is present)" << endl;
  //	              abort();
                  ciffile.close();
                  return false;
	              }
                      if(token.size()==3) {
	                sym_x.push_back(token[0]);
	                sym_y.push_back(token[1]);
	                sym_z.push_back(token[2]);}
                        else {
                        sym_x.push_back(token[1]);
                        sym_y.push_back(token[2]);
                        sym_z.push_back(token[3]);
                        };
  //printf("SYM DEBUG: pushing back %s %s %s\n", token[0].c_str(), token[1].c_str(), token[2].c_str());
	              break;
                case 10:
	              atom_label.push_back(token[i]);
	              break;
                case 11:
	              atom_type.push_back(token[i]);
	              break;
                case 12:
	              atom_x.push_back(trans_to_origuc(convertToDouble(token[i])));
	              break;
                case 13:
	              atom_y.push_back(trans_to_origuc(convertToDouble(token[i])));
	              break;
                case 14:
	              atom_z.push_back(trans_to_origuc(convertToDouble(token[i])));
	              break;
                case 15:
	              atom_charge.push_back(convertToDouble(token[i]));
	              break;
                case 17:
	              atom_x.push_back(convertToDouble(token[i]));
                need_to_convert_to_fractional = true;
	              break;
                case 18:
	              atom_y.push_back(convertToDouble(token[i]));
                need_to_convert_to_fractional = true;
	              break;
                case 19:
	              atom_z.push_back(convertToDouble(token[i]));
                need_to_convert_to_fractional = true;
	              break;
                case 20:
                      symmetry_equiv_pos_site_id_Flag = true;
                      break;
                }
              }
              //now we've finished parsing this line, we might need to convert Cartesian to fractional coords
              if(need_to_convert_to_fractional) {
                Point tempcoor;
                int this_ID = atom_x.size()-1;
        	      tempcoor = cell->xyz_to_abc(atom_x.at(this_ID),atom_y.at(this_ID),atom_z.at(this_ID));
//printf("DEBUG: atom at Cartesian %.3f %.3f %.3f written to fractional %.3f %.3f %.3f\n", atom_x.at(this_ID),atom_y.at(this_ID),atom_z.at(this_ID), tempcoor[0], tempcoor[1], tempcoor[2]);
                atom_x.at(this_ID) = tempcoor[0];
                atom_y.at(this_ID) = tempcoor[1];
                atom_z.at(this_ID) = tempcoor[2];
              }
              getline(ciffile,line);
              token = split(line," ',\r\t");
            }
            column_labels.clear();
          }
        }
        token.clear();
      }
    }
    ciffile.close();

    //If no symmetry info was provided, we can assume that none is required (i.e., structure has 'P 1' symmetry), ONLY IF we did not read a symmetry_Int_Tables_Number!=1
    if (sym_x.size()==0 || sym_y.size()==0 || sym_z.size()==0){
      //no symmetry provided
      if (symmetry_Int_Table_number>=0 && symmetry_Int_Table_number!=1) {
        //read a symmetry table number, but it was not 1
        printf("ERROR:\n\tcif file provided no symmetry operations; however, a symmetry_Int_Tables_Number of %d was provided,\n\tindicating symmetry which is not 'P 1' (no symmetry operations);\n\tcannot proceed with insufficient symmetry information\nExiting ...\n", symmetry_Int_Table_number);
//        exit(EXIT_FAILURE);
        return false;
      } else {
        sym_x.push_back("x");
        sym_y.push_back("y");
        sym_z.push_back("z");
      }
    }

    //Now determine whether it is correct to use atom_label or atom_type (atom_label used only if atom_type has no data)
    bool CIF_USE_LABEL = atom_type.size()==0;

    //Now determine whether charges are used - only if they were provided
    bool CIF_CHARGES = atom_charge.size()>0;

    //Parse out the numbers from atom labels and types, if specified (defined in network.h)
    if (CIF_RMV_NUMS_FROM_ATOM_TYPE){
      if (!CIF_USE_LABEL){
	      for (unsigned int i=0; i<atom_type.size(); i++){
	        atom_type[i] = split(atom_type[i],"0123456789").at(0);
	      }
      }
      else{
	      for (unsigned int i=0; i<atom_label.size(); i++){
	        atom_label[i] = split(atom_label[i],"0123456789").at(0);
	      }
      }
    }

    //Error checking
    if (sym_x.size()==0 || sym_y.size()==0 || sym_z.size()==0 ){
      cerr << "Error: No .cif symmetry information given" << endl;
      cerr << "DEBUG SHOULDN'T HAPPEN" << endl;
      return false;
//      abort();
    }
    if (atom_label.size()==0 && CIF_USE_LABEL == true){
      cerr << "Error: No ''_atom_site_label'' or ''_atom_site_type_symbol'' information " << endl;
      cerr << "This structure appears to be invalid: there are no atom identifying element types or labels - if this is not the case, then this is a bug; please contact the developers." << endl;
      return false;
    }
    if (atom_type.size()==0 && CIF_USE_LABEL == false){
      cerr << "Error: No ''_atom_site_type_symbol'' information" << endl;
      cerr << "DEBUG SHOULDN'T HAPPEN" << endl;
      return false;
//      abort();
    }
    if (atom_x.size()!=atom_y.size() || atom_y.size()!=atom_z.size() || atom_x.size()==0){
      cerr << "Error: Atom coordinates not read properly (" << atom_x.size() << " x coords, " << atom_y.size() << " y coords, " << atom_z.size() << " z coords)" << endl;
//      abort();
      return false;
    }

    //If no name for the unit cell is given the filename becomes its name
    if (cell->name.size() == 0){
      cell->name = *filename;
    }

    //Now to fully assemble the ATOM_NETWORK initialize constructor
//    cell->initialize(); //this should now happen much earlier, during parsing

    ATOM tempatom;
    Point tempcoor;
    for (unsigned int i=0; i<atom_x.size(); i++){ //atoms
      if (CIF_USE_LABEL){
	      tempatom.type = atom_label[i];
      }
      else {
	      tempatom.type = atom_type[i];
      }
      tempatom.radius = lookupRadius(tempatom.type, radial);
      if(CIF_CHARGES) {
        tempatom.charge = atom_charge[i];
      } else tempatom.charge = 0;
      for (unsigned int j=0;j<sym_x.size(); j++){ //symmetries
	      tempatom.a_coord = trans_to_origuc(symbCalc(sym_x[j],atom_x[i],atom_y[i],atom_z[i]));
	      tempatom.b_coord = trans_to_origuc(symbCalc(sym_y[j],atom_x[i],atom_y[i],atom_z[i]));
	      tempatom.c_coord = trans_to_origuc(symbCalc(sym_z[j],atom_x[i],atom_y[i],atom_z[i]));
	      tempcoor = cell->abc_to_xyz (tempatom.a_coord,tempatom.b_coord,tempatom.c_coord);
	      tempatom.x = tempcoor[0];
	      tempatom.y = tempcoor[1];
	      tempatom.z = tempcoor[2];
	      tempatom.specialID = (i*sym_x.size())+j;

	      //make sure that no duplicate atoms are writen
	      int match=1;
	      for (unsigned int k=0;k<cell->atoms.size(); k++){
                if(cell->calcDistance(cell->atoms[k],tempatom)<thresholdLarge) { match=0;
/*
	        if (tempatom.a_coord-thresholdLarge < cell->atoms[k].a_coord && cell->atoms[k].a_coord < tempatom.a_coord+thresholdLarge)
          if (tempatom.b_coord-thresholdLarge < cell->atoms[k].b_coord && cell->atoms[k].b_coord < tempatom.b_coord+thresholdLarge )
          if (tempatom.c_coord-thresholdLarge < cell->atoms[k].c_coord && cell->atoms[k].c_coord < tempatom.c_coord+thresholdLarge ){
            match=0;
*/
          }
        }
        if (match == 1){
          cell->atoms.push_back(tempatom);
        }
      }
    }
    cell->numAtoms = cell->atoms.size();
  }
  else{
    cout << "Failed to open: " << filename << endl;
    ciffile.close();
//    exit(1);
    return false;
  }
  return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x978, %rsp            # imm = 0x978
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, 0x140(%rsp)
leaq 0x118(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x4c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c5f7(%rip), %rsi    # 0x14fb91
leaq 0x12c5f5(%rip), %rdx    # 0x14fb96
leaq 0x4b0(%rsp), %r14
movq %r14, %rdi
callq 0x2263c
leaq 0x4d0(%rsp), %r15
leaq 0x4e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c5cb(%rip), %rsi    # 0x14fb97
leaq 0x12c5d2(%rip), %rdx    # 0x14fba5
movq %r15, %rdi
callq 0x2263c
leaq 0x4f0(%rsp), %r15
leaq 0x500(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c5b0(%rip), %rsi    # 0x14fba6
leaq 0x12c5b7(%rip), %rdx    # 0x14fbb4
movq %r15, %rdi
callq 0x2263c
leaq 0x510(%rsp), %r15
leaq 0x520(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c595(%rip), %rsi    # 0x14fbb5
leaq 0x12c59c(%rip), %rdx    # 0x14fbc3
movq %r15, %rdi
callq 0x2263c
leaq 0x530(%rsp), %r15
leaq 0x540(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c57a(%rip), %rsi    # 0x14fbc4
leaq 0x12c584(%rip), %rdx    # 0x14fbd5
movq %r15, %rdi
callq 0x2263c
leaq 0x550(%rsp), %r15
leaq 0x560(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c562(%rip), %rsi    # 0x14fbd6
leaq 0x12c56b(%rip), %rdx    # 0x14fbe6
movq %r15, %rdi
callq 0x2263c
leaq 0x570(%rsp), %r15
leaq 0x580(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c549(%rip), %rsi    # 0x14fbe7
leaq 0x12c553(%rip), %rdx    # 0x14fbf8
movq %r15, %rdi
callq 0x2263c
leaq 0x590(%rsp), %r15
leaq 0x5a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c531(%rip), %rsi    # 0x14fbf9
leaq 0x12c52f(%rip), %rdx    # 0x14fbfe
movq %r15, %rdi
callq 0x2263c
leaq 0x5b0(%rsp), %r15
leaq 0x5c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c50d(%rip), %rsi    # 0x14fbff
leaq 0x12c520(%rip), %rdx    # 0x14fc19
movq %r15, %rdi
callq 0x2263c
leaq 0x5d0(%rsp), %r15
leaq 0x5e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c4fe(%rip), %rsi    # 0x14fc1a
leaq 0x12c517(%rip), %rdx    # 0x14fc3a
movq %r15, %rdi
callq 0x2263c
leaq 0x5f0(%rsp), %r15
leaq 0x600(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c4f5(%rip), %rsi    # 0x14fc3b
leaq 0x12c4fe(%rip), %rdx    # 0x14fc4b
movq %r15, %rdi
callq 0x2263c
leaq 0x610(%rsp), %r15
leaq 0x620(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c4dc(%rip), %rsi    # 0x14fc4c
leaq 0x12c4eb(%rip), %rdx    # 0x14fc62
movq %r15, %rdi
callq 0x2263c
leaq 0x630(%rsp), %r15
leaq 0x640(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c4c9(%rip), %rsi    # 0x14fc63
leaq 0x12c4d4(%rip), %rdx    # 0x14fc75
movq %r15, %rdi
callq 0x2263c
leaq 0x650(%rsp), %r15
leaq 0x660(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c4b2(%rip), %rsi    # 0x14fc76
leaq 0x12c4bd(%rip), %rdx    # 0x14fc88
movq %r15, %rdi
callq 0x2263c
leaq 0x670(%rsp), %r15
leaq 0x680(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c49b(%rip), %rsi    # 0x14fc89
leaq 0x12c4a6(%rip), %rdx    # 0x14fc9b
movq %r15, %rdi
callq 0x2263c
leaq 0x690(%rsp), %r15
leaq 0x6a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c484(%rip), %rsi    # 0x14fc9c
leaq 0x12c48e(%rip), %rdx    # 0x14fcad
movq %r15, %rdi
callq 0x2263c
leaq 0x6b0(%rsp), %r15
leaq 0x6c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c46c(%rip), %rsi    # 0x14fcae
leaq 0x12c480(%rip), %rdx    # 0x14fcc9
movq %r15, %rdi
callq 0x2263c
leaq 0x6d0(%rsp), %r15
leaq 0x6e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c45e(%rip), %rsi    # 0x14fcca
leaq 0x12c469(%rip), %rdx    # 0x14fcdc
movq %r15, %rdi
callq 0x2263c
leaq 0x6f0(%rsp), %r15
leaq 0x700(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c447(%rip), %rsi    # 0x14fcdd
leaq 0x12c452(%rip), %rdx    # 0x14fcef
movq %r15, %rdi
callq 0x2263c
leaq 0x710(%rsp), %r15
leaq 0x720(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c430(%rip), %rsi    # 0x14fcf0
leaq 0x12c43b(%rip), %rdx    # 0x14fd02
movq %r15, %rdi
callq 0x2263c
movl %ebp, 0x274(%rsp)
movq %rbx, 0x18(%rsp)
leaq 0x730(%rsp), %r15
leaq 0x740(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x12c40d(%rip), %rsi    # 0x14fd03
leaq 0x12c421(%rip), %rdx    # 0x14fd1e
movq %r15, %rdi
callq 0x2263c
leaq 0x750(%rsp), %r15
leaq 0x760(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x130949(%rip), %rsi    # 0x154269
leaq 0x130946(%rip), %rdx    # 0x15426d
movq %r15, %rdi
callq 0x2263c
movq 0x140(%rsp), %r12
leaq 0xf0(%rsp), %rdi
leaq 0x4b0(%rsp), %rsi
callq 0x4a862
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
xorl %eax, %eax
movq %rax, 0x10(%rsp)
movq %rax, 0xe0(%rsp)
movaps %xmm0, 0xd0(%rsp)
movq %rax, 0x260(%rsp)
movaps %xmm0, 0x250(%rsp)
movq %rax, 0x240(%rsp)
movaps %xmm0, 0x230(%rsp)
movq %rax, 0x2c0(%rsp)
movaps %xmm0, 0x2b0(%rsp)
movq %rax, 0x2a0(%rsp)
movaps %xmm0, 0x290(%rsp)
movq %rax, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
movq %rax, 0xb0(%rsp)
movaps %xmm0, 0xa0(%rsp)
movq %rax, 0x90(%rsp)
movaps %xmm0, 0x80(%rsp)
movq %rax, 0x200(%rsp)
movaps %xmm0, 0x1f0(%rsp)
leaq 0x770(%rsp), %rdi
callq 0x44d0
movq 0x1735c8(%rip), %r14    # 0x196fc0
leaq 0x12c320(%rip), %rsi    # 0x14fd1f
movl $0xe, %edx
movq %r14, %rdi
callq 0x44e0
testq %r12, %r12
je 0x23a2d
movq %r12, %rdi
callq 0x41e0
movq 0x1735a0(%rip), %rdi    # 0x196fc0
movq %r12, %rsi
movq %rax, %rdx
callq 0x44e0
jmp 0x23a45
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x4710
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x17355d(%rip), %rdi    # 0x196fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
leaq 0x770(%rsp), %rdi
movq %r12, %rsi
movl $0x8, %edx
callq 0x4280
leaq 0x7e8(%rsp), %rdi
callq 0x4120
testb %al, %al
je 0x24d8d
movq 0x770(%rsp), %rax
movq -0x18(%rax), %rax
movl $0xffffffff, 0xc8(%rsp) # imm = 0xFFFFFFFF
testb $0x2, 0x790(%rsp,%rax)
jne 0x24d0f
movq 0x18(%rsp), %rax
addq $0x320, %rax            # imm = 0x320
movq %rax, 0x490(%rsp)
movl $0xffffffff, 0xc8(%rsp) # imm = 0xFFFFFFFF
leaq 0x210(%rsp), %rbx
leaq 0x498(%rsp), %rbp
movq $0x0, 0x278(%rsp)
movq $0x0, 0x280(%rsp)
movq $0x0, 0x288(%rsp)
movq $0x0, 0x128(%rsp)
movq $0x0, 0x130(%rsp)
movq $0x0, 0x138(%rsp)
movq $0x0, 0x148(%rsp)
movq $0x0, 0xc0(%rsp)
testb $0x1, 0x148(%rsp)
je 0x23ba7
testb $0x1, 0x138(%rsp)
je 0x23ba7
testb $0x1, 0x130(%rsp)
je 0x23ba7
testb $0x1, 0x128(%rsp)
je 0x23ba7
testb $0x1, 0x288(%rsp)
je 0x23ba7
testb $0x1, 0x280(%rsp)
je 0x23ba7
testb $0x1, 0x278(%rsp)
jne 0x23ba7
movb $0x1, %al
movq %rax, 0x278(%rsp)
movq 0x18(%rsp), %rdi
callq 0x521f4
movq 0x770(%rsp), %rax
movq -0x18(%rax), %rdi
leaq 0x770(%rsp), %rax
addq %rax, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %edx
leaq 0x770(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x47e0
leaq 0x380(%rsp), %rax
movq %rax, 0x370(%rsp)
movq 0x108(%rsp), %rsi
movq 0x110(%rsp), %rdx
addq %rsi, %rdx
leaq 0x370(%rsp), %rdi
callq 0xf32a
leaq 0x220(%rsp), %rax
movq %rax, 0x210(%rsp)
movq %rbx, %rdi
leaq 0x12c104(%rip), %rsi    # 0x14fd2e
leaq 0x12c102(%rip), %rdx    # 0x14fd33
callq 0x2263c
leaq 0x40(%rsp), %r14
movq %r14, %rdi
leaq 0x370(%rsp), %rsi
movq %rbx, %rdx
callq 0x4a6d4
xorps %xmm0, %xmm0
movaps %xmm0, 0x150(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x40(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x50(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x150(%rsp), %xmm1
movaps %xmm0, 0x150(%rsp)
movq %rax, 0x160(%rsp)
movups %xmm1, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
leaq 0x150(%rsp), %rdi
callq 0x2f6f0
movq %r14, %rdi
callq 0x2f6f0
movq 0x210(%rsp), %rdi
leaq 0x220(%rsp), %rax
cmpq %rax, %rdi
je 0x23cd5
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x23cfa
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x4470
movq (%rsp), %rsi
cmpq %rsi, 0x8(%rsp)
je 0x24cf5
movl $0x5, %ecx
leaq 0x150(%rsp), %rbx
movq %rbx, %rdi
xorl %edx, %edx
callq 0x4490
movq 0xf0(%rsp), %rsi
movq %rbx, %rdi
callq 0x4050
movl %eax, %r14d
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x23d58
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x4470
testl %r14d, %r14d
je 0x24b8c
movq (%rsp), %rdi
movq 0xf0(%rsp), %rsi
addq $0x20, %rsi
callq 0x4050
movq (%rsp), %rdi
testl %eax, %eax
je 0x24be2
movq 0xf0(%rsp), %rsi
addq $0x40, %rsi
callq 0x4050
movq (%rsp), %rdi
testl %eax, %eax
je 0x24c04
movq 0xf0(%rsp), %rsi
addq $0x60, %rsi
callq 0x4050
movq (%rsp), %rdi
testl %eax, %eax
je 0x24c26
movq 0xf0(%rsp), %rsi
subq $-0x80, %rsi
callq 0x4050
movq (%rsp), %rdi
testl %eax, %eax
je 0x24c45
movq 0xf0(%rsp), %rsi
movl $0xa0, %eax
addq %rax, %rsi
callq 0x4050
movq (%rsp), %rdi
testl %eax, %eax
je 0x24c64
movq 0xf0(%rsp), %rsi
movl $0xc0, %eax
addq %rax, %rsi
callq 0x4050
movq (%rsp), %rdi
testl %eax, %eax
je 0x24c83
movq 0xf0(%rsp), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
callq 0x4050
movq (%rsp), %rdi
testl %eax, %eax
je 0x24ca2
movq 0xf0(%rsp), %rsi
movl $0xe0, %eax
addq %rax, %rsi
callq 0x4050
testl %eax, %eax
jne 0x24cb2
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
movq 0x770(%rsp), %rax
movq -0x18(%rax), %rdi
leaq 0x770(%rsp), %r14
addq %r14, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %edx
movq %r14, %rdi
leaq 0x108(%rsp), %rsi
callq 0x47e0
leaq 0x360(%rsp), %rax
movq %rax, 0x350(%rsp)
movq 0x108(%rsp), %rsi
movq 0x110(%rsp), %rdx
addq %rsi, %rdx
leaq 0x350(%rsp), %rdi
callq 0xf32a
leaq 0x480(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x470(%rsp), %r14
movq %r14, %rdi
leaq 0x12be44(%rip), %rsi    # 0x14fd34
leaq 0x12be40(%rip), %rdx    # 0x14fd37
callq 0x2263c
leaq 0x68(%rsp), %r12
movq %r12, %rdi
leaq 0x350(%rsp), %rsi
movq %r14, %rdx
callq 0x4a6d4
xorps %xmm0, %xmm0
movaps %xmm0, 0x150(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x68(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x78(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x150(%rsp), %xmm1
movaps %xmm0, 0x150(%rsp)
movq %rax, 0x160(%rsp)
movups %xmm1, 0x68(%rsp)
movq $0x0, 0x78(%rsp)
movq %rbx, %rdi
callq 0x2f6f0
movq %r12, %rdi
callq 0x2f6f0
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
cmpq %rax, %rdi
je 0x23f96
movq 0x480(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x23fbb
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x4470
movq (%rsp), %rax
cmpq %rax, 0x8(%rsp)
setne %bl
je 0x2417d
setne %bl
movb $0x1, %r14b
movq (%rsp), %rsi
movq 0x8(%rsi), %rdx
testq %rdx, %rdx
je 0x25816
movq (%rsi), %rax
cmpb $0x5f, (%rax)
jne 0x2416b
leaq 0x40(%rsp), %rdi
callq 0x2f74c
movq 0x770(%rsp), %rax
movq -0x18(%rax), %rdi
leaq 0x770(%rsp), %rax
addq %rax, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %edx
leaq 0x770(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x47e0
leaq 0x340(%rsp), %rax
movq %rax, 0x330(%rsp)
movq 0x108(%rsp), %rsi
movq 0x110(%rsp), %rdx
addq %rsi, %rdx
leaq 0x330(%rsp), %rdi
callq 0xf32a
leaq 0x460(%rsp), %rax
movq %rax, 0x450(%rsp)
leaq 0x450(%rsp), %r15
movq %r15, %rdi
leaq 0x12bcaf(%rip), %rsi    # 0x14fd34
leaq 0x12bcab(%rip), %rdx    # 0x14fd37
callq 0x2263c
leaq 0x68(%rsp), %r12
movq %r12, %rdi
leaq 0x330(%rsp), %rsi
movq %r15, %rdx
callq 0x4a6d4
xorps %xmm0, %xmm0
movaps %xmm0, 0x150(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x68(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x78(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x150(%rsp), %xmm1
movaps %xmm0, 0x150(%rsp)
movq %rax, 0x160(%rsp)
movups %xmm1, 0x68(%rsp)
movq $0x0, 0x78(%rsp)
leaq 0x150(%rsp), %rdi
callq 0x2f6f0
movq %r12, %rdi
callq 0x2f6f0
movq 0x450(%rsp), %rdi
leaq 0x460(%rsp), %rax
cmpq %rax, %rdi
je 0x24130
movq 0x460(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x24155
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x8(%rsp), %rax
cmpq (%rsp), %rax
movzbl %bl, %ebx
movl $0x0, %eax
cmovel %eax, %ebx
jmp 0x2416e
xorl %r14d, %r14d
testb $0x1, %bl
je 0x2417d
testb $0x1, %r14b
jne 0x23fd3
testb $0x1, %bl
je 0x24b12
leaq 0x320(%rsp), %rax
movq %rax, 0x310(%rsp)
movq 0x108(%rsp), %rsi
movq 0x110(%rsp), %rdx
addq %rsi, %rdx
leaq 0x310(%rsp), %rdi
callq 0xf32a
leaq 0x210(%rsp), %rbx
leaq 0x440(%rsp), %rax
movq %rax, 0x430(%rsp)
leaq 0x430(%rsp), %r15
movq %r15, %rdi
leaq 0x12bb58(%rip), %rsi    # 0x14fd38
leaq 0x12bb56(%rip), %rdx    # 0x14fd3d
callq 0x2263c
leaq 0x68(%rsp), %r14
movq %r14, %rdi
leaq 0x310(%rsp), %rsi
movq %r15, %rdx
callq 0x4a6d4
xorps %xmm0, %xmm0
movaps %xmm0, 0x150(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x68(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x78(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x150(%rsp), %xmm1
movaps %xmm0, 0x150(%rsp)
movq %rax, 0x160(%rsp)
movups %xmm1, 0x68(%rsp)
movq $0x0, 0x78(%rsp)
leaq 0x150(%rsp), %rdi
callq 0x2f6f0
movq %r14, %rdi
callq 0x2f6f0
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0x2428b
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x242b0
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x4470
movq (%rsp), %rdi
cmpq %rdi, 0x8(%rsp)
je 0x24b23
movl $0x0, 0x60(%rsp)
movq 0x8(%rdi), %rdx
testq %rdx, %rdx
je 0x25826
movq (%rdi), %rax
movl $0x4, %r12d
cmpb $0x5f, (%rax)
je 0x24b6a
leaq 0x12b90c(%rip), %rsi    # 0x14fbf9
callq 0x4170
testl %eax, %eax
je 0x24b6a
movq (%rsp), %rax
movq 0x8(%rax), %rdx
testq %rdx, %rdx
je 0x25826
movq (%rax), %rcx
cmpb $0x23, (%rcx)
je 0x24b6a
movq 0x8(%rsp), %rcx
subq %rax, %rcx
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rax
subq %rdi, %rax
cmpq %rax, %rcx
je 0x2438a
movq 0xf0(%rsp), %rsi
movl $0x100, %eax            # imm = 0x100
addq %rax, %rsi
callq 0x4050
testl %eax, %eax
je 0x2438a
movq 0x40(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
callq 0x4050
testl %eax, %eax
je 0x2438a
movq 0x40(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movl $0x280, %eax            # imm = 0x280
addq %rax, %rsi
callq 0x4050
testl %eax, %eax
jne 0x24b6a
movq 0x48(%rsp), %rax
movl $0x9, %r12d
cmpq 0x40(%rsp), %rax
setne %r15b
je 0x247b9
movl $0x1, %ebx
xorl %r12d, %r12d
movq %rbp, %rdi
leaq 0xf0(%rsp), %rsi
callq 0x2f78a
movq 0x40(%rsp), %rax
shlq $0x5, %r12
leaq 0x420(%rsp), %rcx
movq %rcx, 0x410(%rsp)
movq (%rax,%r12), %rsi
movq 0x8(%rax,%r12), %rdx
addq %rsi, %rdx
leaq 0x410(%rsp), %r14
movq %r14, %rdi
callq 0xf32a
movq %rbp, %rdi
movq %r14, %rsi
callq 0x4a674
movl %eax, %r14d
movq 0x410(%rsp), %rdi
leaq 0x420(%rsp), %rax
cmpq %rax, %rdi
je 0x24424
movq 0x420(%rsp), %rsi
incq %rsi
callq 0x4470
movq %rbp, %rdi
callq 0x2f6f0
addl $-0x8, %r14d
cmpl $0xc, %r14d
ja 0x24747
leaq 0x12b69f(%rip), %rcx    # 0x14fae0
movslq (%rcx,%r14,4), %rax
addq %rcx, %rax
jmpq *%rax
movq (%rsp), %rsi
movq 0x8(%rsp), %rax
subq %rsi, %rax
cmpq $0x60, %rax
jne 0x24469
movq 0xc0(%rsp), %rcx
andb $0x1, %cl
je 0x24483
cmpq $0x80, %rax
jne 0x24aa8
testb $0x1, 0xc0(%rsp)
je 0x24aa8
cmpq $0x60, %rax
jne 0x246aa
leaq 0xd0(%rsp), %rdi
callq 0x2f74c
movq (%rsp), %rsi
addq $0x20, %rsi
leaq 0x250(%rsp), %rdi
callq 0x2f74c
movq (%rsp), %r12
addq $0x40, %r12
jmp 0x246d8
addq (%rsp), %r12
movq %r12, %rdi
callq 0x4a8cf
movsd %xmm0, 0x150(%rsp)
movq 0x88(%rsp), %rsi
cmpq 0x90(%rsp), %rsi
je 0x246ea
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x88(%rsp)
jmp 0x24741
addq (%rsp), %r12
leaq 0x2b0(%rsp), %rdi
jmp 0x246e0
addq (%rsp), %r12
movq %r12, %rdi
callq 0x4a8cf
callq 0x84e6b
movsd %xmm0, 0x150(%rsp)
movq 0xa8(%rsp), %rsi
cmpq 0xb0(%rsp), %rsi
je 0x24769
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xa8(%rsp)
jmp 0x24747
movb $0x1, %al
movq %rax, 0xc0(%rsp)
jmp 0x24747
addq (%rsp), %r12
movq %r12, %rdi
callq 0x4a8cf
callq 0x84e6b
movsd %xmm0, 0x150(%rsp)
movq 0x88(%rsp), %rsi
cmpq 0x90(%rsp), %rsi
je 0x24780
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x88(%rsp)
jmp 0x24747
addq (%rsp), %r12
movq %r12, %rdi
callq 0x4a8cf
movsd %xmm0, 0x150(%rsp)
movq 0x1f8(%rsp), %rsi
cmpq 0x200(%rsp), %rsi
je 0x24701
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x1f8(%rsp)
jmp 0x24747
addq (%rsp), %r12
leaq 0x290(%rsp), %rdi
jmp 0x246e0
addq (%rsp), %r12
movq %r12, %rdi
callq 0x4a8cf
callq 0x84e6b
movsd %xmm0, 0x150(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
je 0x24797
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x28(%rsp)
jmp 0x24747
addq (%rsp), %r12
movq %r12, %rdi
callq 0x4a8cf
movsd %xmm0, 0x150(%rsp)
movq 0xa8(%rsp), %rsi
cmpq 0xb0(%rsp), %rsi
je 0x24718
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xa8(%rsp)
jmp 0x24741
addq (%rsp), %r12
movq %r12, %rdi
callq 0x4a8cf
movsd %xmm0, 0x150(%rsp)
movq 0x28(%rsp), %rsi
cmpq 0x30(%rsp), %rsi
je 0x2472f
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x28(%rsp)
jmp 0x24741
addq $0x20, %rsi
leaq 0xd0(%rsp), %rdi
callq 0x2f74c
movq (%rsp), %rsi
addq $0x40, %rsi
leaq 0x250(%rsp), %rdi
callq 0x2f74c
movq (%rsp), %r12
addq $0x60, %r12
leaq 0x230(%rsp), %rdi
movq %r12, %rsi
callq 0x2f74c
jmp 0x24747
leaq 0x80(%rsp), %rdi
leaq 0x150(%rsp), %rdx
callq 0x139c2
jmp 0x24741
leaq 0x1f0(%rsp), %rdi
leaq 0x150(%rsp), %rdx
callq 0x139c2
jmp 0x24747
leaq 0xa0(%rsp), %rdi
leaq 0x150(%rsp), %rdx
callq 0x139c2
jmp 0x24741
leaq 0x20(%rsp), %rdi
leaq 0x150(%rsp), %rdx
callq 0x139c2
movb $0x1, %al
movl %eax, 0x60(%rsp)
movl %ebx, %r12d
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
sarq $0x5, %rax
incl %ebx
cmpq %r12, %rax
seta %r15b
ja 0x243ac
jmp 0x247ab
leaq 0xa0(%rsp), %rdi
leaq 0x150(%rsp), %rdx
callq 0x139c2
jmp 0x24747
leaq 0x80(%rsp), %rdi
leaq 0x150(%rsp), %rdx
callq 0x139c2
jmp 0x24747
leaq 0x20(%rsp), %rdi
leaq 0x150(%rsp), %rdx
callq 0x139c2
jmp 0x24747
leaq 0x210(%rsp), %rbx
movl $0x9, %r12d
testb $0x1, %r15b
jne 0x24b6a
testb $0x1, 0x60(%rsp)
je 0x2493c
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
leaq 0x150(%rsp), %rdi
callq 0x85436
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %r12
subq %rax, %r12
movq %r12, %rdx
sarq $0x3, %rdx
shlq $0x1d, %r12
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
addq %rcx, %r12
sarq $0x20, %r12
cmpq %r12, %rdx
jbe 0x25836
movq 0xa0(%rsp), %rcx
movq 0xa8(%rsp), %rdx
subq %rcx, %rdx
sarq $0x3, %rdx
cmpq %r12, %rdx
jbe 0x25836
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
subq %rsi, %rdx
sarq $0x3, %rdx
cmpq %r12, %rdx
jbe 0x25836
movsd (%rax,%r12,8), %xmm0
movsd (%rcx,%r12,8), %xmm1
movsd (%rsi,%r12,8), %xmm2
leaq 0x68(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x531ea
movq 0x78(%rsp), %rax
movq %rax, 0x160(%rsp)
movups 0x68(%rsp), %xmm0
movaps %xmm0, 0x150(%rsp)
leaq 0x150(%rsp), %rdi
xorl %esi, %esi
callq 0x85478
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rdx
subq %rcx, %rdx
sarq $0x3, %rdx
cmpq %r12, %rdx
jbe 0x25847
movsd (%rax), %xmm0
movsd %xmm0, (%rcx,%r12,8)
leaq 0x150(%rsp), %rdi
movl $0x1, %esi
callq 0x85478
movq 0xa0(%rsp), %rcx
movq 0xa8(%rsp), %rdx
subq %rcx, %rdx
sarq $0x3, %rdx
cmpq %r12, %rdx
jbe 0x25847
movsd (%rax), %xmm0
movsd %xmm0, (%rcx,%r12,8)
leaq 0x150(%rsp), %rdi
movl $0x2, %esi
callq 0x85478
movq 0x80(%rsp), %rcx
movq 0x88(%rsp), %rdx
subq %rcx, %rdx
sarq $0x3, %rdx
cmpq %r12, %rdx
jbe 0x25847
movsd (%rax), %xmm0
movsd %xmm0, (%rcx,%r12,8)
movq 0x770(%rsp), %rax
movq -0x18(%rax), %rdi
leaq 0x770(%rsp), %rax
addq %rax, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %edx
leaq 0x770(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x47e0
leaq 0x300(%rsp), %rax
movq %rax, 0x2f0(%rsp)
movq 0x108(%rsp), %rsi
movq 0x110(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2f0(%rsp), %rdi
callq 0xf32a
leaq 0x400(%rsp), %rax
movq %rax, 0x3f0(%rsp)
leaq 0x3f0(%rsp), %r15
movq %r15, %rdi
leaq 0x12b3e1(%rip), %rsi    # 0x14fda8
leaq 0x12b3df(%rip), %rdx    # 0x14fdad
callq 0x2263c
leaq 0x68(%rsp), %r14
movq %r14, %rdi
leaq 0x2f0(%rsp), %rsi
movq %r15, %rdx
callq 0x4a6d4
xorps %xmm0, %xmm0
movaps %xmm0, 0x150(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x68(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x78(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x150(%rsp), %xmm1
movaps %xmm0, 0x150(%rsp)
movq %rax, 0x160(%rsp)
movups %xmm1, 0x68(%rsp)
movq $0x0, 0x78(%rsp)
leaq 0x150(%rsp), %rdi
callq 0x2f6f0
movq %r14, %rdi
callq 0x2f6f0
movq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x24a72
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x24a97
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x4470
movq (%rsp), %rdi
cmpq %rdi, 0x8(%rsp)
jne 0x242c7
jmp 0x24b23
movl $0x69, %edx
movq 0x17253c(%rip), %rdi    # 0x196ff0
leaq 0x12b283(%rip), %rsi    # 0x14fd3e
callq 0x44e0
leaq 0x210(%rsp), %rbx
movq 0x172521(%rip), %rcx    # 0x196ff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x172503(%rip), %rdi    # 0x196ff0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movl $0x1, %r12d
leaq 0x770(%rsp), %rdi
callq 0x40f0
jmp 0x247b9
leaq 0x12bd57(%rip), %rdi    # 0x150870
callq 0x4660
xorl %r12d, %r12d
jmp 0x24b62
movq 0x40(%rsp), %rbx
movq 0x48(%rsp), %r14
xorl %r12d, %r12d
cmpq %rbx, %r14
je 0x24b62
leaq 0x10(%rbx), %r15
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x24b4d
movq (%r15), %rsi
incq %rsi
callq 0x4470
leaq 0x20(%r15), %rax
addq $0x10, %r15
cmpq %r14, %r15
movq %rax, %r15
jne 0x24b39
movq %rbx, 0x48(%rsp)
leaq 0x210(%rsp), %rbx
leaq 0x40(%rsp), %rdi
callq 0x2f6f0
cmpl $0x4, %r12d
je 0x23cfa
testl %r12d, %r12d
jne 0x256e4
jmp 0x24cb2
movq (%rsp), %rsi
movl $0x5, %edx
movq %rbx, %rdi
movq $-0x1, %rcx
callq 0x4490
movq 0x490(%rsp), %rdi
movq %rbx, %rsi
callq 0x4540
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x24cb2
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x4470
jmp 0x24cb2
addq $0x20, %rdi
callq 0x4a8cf
movq 0x18(%rsp), %rax
movsd %xmm0, 0x8(%rax)
movb $0x1, %al
movq %rax, 0x148(%rsp)
jmp 0x24cb2
addq $0x20, %rdi
callq 0x4a8cf
movq 0x18(%rsp), %rax
movsd %xmm0, 0x10(%rax)
movb $0x1, %al
movq %rax, 0x138(%rsp)
jmp 0x24cb2
addq $0x20, %rdi
callq 0x4a8cf
movq 0x18(%rsp), %rax
movsd %xmm0, 0x18(%rax)
movb $0x1, %al
movq %rax, 0x130(%rsp)
jmp 0x24cb2
addq $0x20, %rdi
callq 0x4a8cf
movq 0x18(%rsp), %rax
movsd %xmm0, 0x20(%rax)
movb $0x1, %al
movq %rax, 0x128(%rsp)
jmp 0x24cb2
addq $0x20, %rdi
callq 0x4a8cf
movq 0x18(%rsp), %rax
movsd %xmm0, 0x28(%rax)
movb $0x1, %al
movq %rax, 0x288(%rsp)
jmp 0x24cb2
addq $0x20, %rdi
callq 0x4a8cf
movq 0x18(%rsp), %rax
movsd %xmm0, 0x30(%rax)
movb $0x1, %al
movq %rax, 0x280(%rsp)
jmp 0x24cb2
addq $0x20, %rdi
callq 0x4a992
movl %eax, 0xc8(%rsp)
movq (%rsp), %rbx
movq 0x8(%rsp), %r14
cmpq %rbx, %r14
je 0x24ced
leaq 0x10(%rbx), %r15
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x24cd8
movq (%r15), %rsi
incq %rsi
callq 0x4470
leaq 0x20(%r15), %rax
addq $0x10, %r15
cmpq %r14, %r15
movq %rax, %r15
jne 0x24cc4
movq %rbx, 0x8(%rsp)
leaq 0x210(%rsp), %rbx
movq 0x770(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x2, 0x790(%rsp,%rax)
je 0x23b4d
leaq 0x770(%rsp), %rdi
callq 0x40f0
movq 0x140(%rsp), %r14
movq 0xd8(%rsp), %rax
cmpq 0xd0(%rsp), %rax
movl 0xc8(%rsp), %esi
je 0x24d65
movq 0x258(%rsp), %rax
cmpq 0x250(%rsp), %rax
je 0x24d65
movq 0x238(%rsp), %rax
cmpq 0x230(%rsp), %rax
jne 0x24f16
testl %esi, %esi
sets %al
cmpl $0x1, %esi
sete %cl
orb %al, %cl
jne 0x24e1d
leaq 0x12b02f(%rip), %rdi    # 0x14fdae
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x4060
jmp 0x256e6
movq 0x17222c(%rip), %rbx    # 0x196fc0
leaq 0x12b289(%rip), %rsi    # 0x150024
movl $0x10, %edx
movq %rbx, %rdi
callq 0x44e0
testq %r12, %r12
je 0x24dc9
movq %r12, %rdi
callq 0x41e0
movq 0x172204(%rip), %rdi    # 0x196fc0
movq %r12, %rsi
movq %rax, %rdx
callq 0x44e0
jmp 0x24de0
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x4710
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x1721c2(%rip), %rdi    # 0x196fc0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
leaq 0x770(%rsp), %rdi
callq 0x40f0
jmp 0x256e4
leaq 0x160(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x12aeab(%rip), %rsi    # 0x14fcdb
leaq 0x12aea5(%rip), %rdx    # 0x14fcdc
leaq 0x150(%rsp), %rdi
callq 0x2263c
leaq 0xd0(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x2fbd2
movq 0x150(%rsp), %rdi
cmpq %rbx, %rdi
je 0x24e76
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x4470
leaq 0x150(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x12a9da(%rip), %rsi    # 0x14f862
leaq 0x12a9d4(%rip), %rdx    # 0x14f863
callq 0x2263c
leaq 0x250(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x2fbd2
movq 0x150(%rsp), %rdi
cmpq %rbx, %rdi
je 0x24ec6
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x4470
leaq 0x150(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1310c8(%rip), %rsi    # 0x155fa0
leaq 0x1310c2(%rip), %rdx    # 0x155fa1
callq 0x2263c
leaq 0x230(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x2fbd2
movq 0x150(%rsp), %rdi
cmpq %rbx, %rdi
je 0x24f16
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0xd8(%rsp), %rax
cmpq 0xd0(%rsp), %rax
je 0x24ff7
movq 0x258(%rsp), %rax
cmpq 0x250(%rsp), %rax
je 0x24ff7
movq 0x238(%rsp), %rax
cmpq 0x230(%rsp), %rax
je 0x24ff7
movq 0x290(%rsp), %rax
movq 0x298(%rsp), %rcx
movq 0x1f0(%rsp), %rdx
movq %rdx, 0x130(%rsp)
movq 0x1f8(%rsp), %rdx
movq %rdx, 0x128(%rsp)
movq %rax, 0x138(%rsp)
movq %rcx, 0xc8(%rsp)
cmpq %rax, %rcx
jne 0x25088
movq 0x2b0(%rsp), %rax
cmpq %rax, 0x2b8(%rsp)
jne 0x25088
movq 0x172032(%rip), %rdi    # 0x196ff0
leaq 0x12af1c(%rip), %rsi    # 0x14fee1
movl $0x49, %edx
callq 0x44e0
movq 0x17201a(%rip), %rbx    # 0x196ff0
movq %rbx, %rdi
callq 0x41f0
leaq 0x12af46(%rip), %rsi    # 0x14ff2b
movl $0xa9, %edx
movq %rbx, %rdi
callq 0x44e0
jmp 0x256dc
movq 0x171ff2(%rip), %rbx    # 0x196ff0
leaq 0x12ae9b(%rip), %rsi    # 0x14fea0
movl $0x29, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x171fc0(%rip), %rdi    # 0x196ff0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
movq 0x171fac(%rip), %rbx    # 0x196ff0
leaq 0x12ae7f(%rip), %rsi    # 0x14feca
movl $0x16, %edx
movq %rbx, %rdi
callq 0x44e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x4420
movsbl %al, %esi
movq 0x171f7a(%rip), %rdi    # 0x196ff0
callq 0x4040
movq %rax, %rdi
callq 0x42c0
jmp 0x256e4
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rdx
movq %rdx, %rsi
subq %rcx, %rsi
movq 0xa8(%rsp), %rax
subq 0xa0(%rsp), %rax
cmpq %rax, %rsi
jne 0x2562d
cmpq %rcx, %rdx
je 0x2562d
movq 0x88(%rsp), %rcx
subq 0x80(%rsp), %rcx
cmpq %rcx, %rax
jne 0x2562d
movq 0x18(%rsp), %rax
movq 0x328(%rax), %rdx
testq %rdx, %rdx
jne 0x25100
movq 0x18(%rsp), %rax
leaq 0x320(%rax), %rdi
movsbl (%r14), %r8d
movl $0x1, %ecx
xorl %esi, %esi
callq 0x47f0
leaq 0x150(%rsp), %rdi
callq 0x5162c
leaq 0x40(%rsp), %rdi
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
xorps %xmm2, %xmm2
callq 0x85436
movq 0x28(%rsp), %rax
cmpq 0x20(%rsp), %rax
je 0x255f6
leaq 0x3e0(%rsp), %rbx
leaq 0x3c0(%rsp), %r15
movq 0x18(%rsp), %rax
addq $0x2f0, %rax            # imm = 0x2F0
movq %rax, 0x148(%rsp)
leaq 0x3d0(%rsp), %r12
movzbl 0x274(%rsp), %eax
movl %eax, 0x140(%rsp)
leaq 0x150(%rsp), %r14
xorl %ebp, %ebp
movq $0x0, 0xc0(%rsp)
movq 0xc8(%rsp), %rax
cmpq 0x138(%rsp), %rax
leaq 0x2b0(%rsp), %rax
leaq 0x290(%rsp), %rcx
cmovneq %rcx, %rax
movq %rbp, %rsi
shlq $0x5, %rsi
addq (%rax), %rsi
leaq 0x190(%rsp), %rdi
callq 0x4240
movq %rbx, 0x3d0(%rsp)
movq 0x190(%rsp), %rsi
movq 0x198(%rsp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xf32a
movq %r12, %rdi
movl 0x140(%rsp), %esi
callq 0x21e42
movsd %xmm0, 0x180(%rsp)
movq 0x3d0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x25213
movq 0x3e0(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x128(%rsp), %rax
cmpq 0x130(%rsp), %rax
leaq 0x3a0(%rsp), %rbx
movq %rbp, 0x60(%rsp)
je 0x2524a
movq 0x1f0(%rsp), %rax
movsd (%rax,%rbp,8), %xmm0
movsd %xmm0, 0x1d8(%rsp)
jmp 0x25256
movq $0x0, 0x1d8(%rsp)
movq 0xd0(%rsp), %rax
cmpq %rax, 0xd8(%rsp)
je 0x255ba
xorl %ebp, %ebp
xorl %r12d, %r12d
shlq $0x5, %rbp
movq %r15, 0x3b0(%rsp)
movq (%rax,%rbp), %rsi
movq 0x8(%rax,%rbp), %rdx
addq %rsi, %rdx
leaq 0x3b0(%rsp), %rdi
callq 0xf32a
movq 0x20(%rsp), %rax
movq 0x60(%rsp), %rcx
xorps %xmm0, %xmm0
cvtsd2ss (%rax,%rcx,8), %xmm0
movq 0xa0(%rsp), %rax
xorps %xmm1, %xmm1
cvtsd2ss (%rax,%rcx,8), %xmm1
movq 0x80(%rsp), %rax
cvtsd2ss (%rax,%rcx,8), %xmm2
leaq 0x3b0(%rsp), %rdi
callq 0x4ab94
cvtss2sd %xmm0, %xmm0
callq 0x84e6b
movsd %xmm0, 0x168(%rsp)
movq 0x3b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x25301
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x250(%rsp), %rax
movq %rbx, 0x390(%rsp)
movq (%rax,%rbp), %rsi
movq 0x8(%rax,%rbp), %rdx
addq %rsi, %rdx
leaq 0x390(%rsp), %rdi
callq 0xf32a
movq 0x20(%rsp), %rax
movq 0x60(%rsp), %rcx
xorps %xmm0, %xmm0
cvtsd2ss (%rax,%rcx,8), %xmm0
movq 0xa0(%rsp), %rax
xorps %xmm1, %xmm1
cvtsd2ss (%rax,%rcx,8), %xmm1
movq 0x80(%rsp), %rax
xorps %xmm2, %xmm2
cvtsd2ss (%rax,%rcx,8), %xmm2
leaq 0x390(%rsp), %rdi
callq 0x4ab94
cvtss2sd %xmm0, %xmm0
callq 0x84e6b
movsd %xmm0, 0x170(%rsp)
movq 0x390(%rsp), %rdi
cmpq %rbx, %rdi
je 0x25398
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x230(%rsp), %rax
leaq 0x2e0(%rsp), %rcx
movq %rcx, 0x2d0(%rsp)
movq (%rax,%rbp), %rsi
movq 0x8(%rax,%rbp), %rdx
addq %rsi, %rdx
leaq 0x2d0(%rsp), %rdi
callq 0xf32a
movq 0x20(%rsp), %rax
movq 0x60(%rsp), %rcx
xorps %xmm0, %xmm0
cvtsd2ss (%rax,%rcx,8), %xmm0
movq 0xa0(%rsp), %rax
xorps %xmm1, %xmm1
cvtsd2ss (%rax,%rcx,8), %xmm1
movq 0x80(%rsp), %rax
xorps %xmm2, %xmm2
cvtsd2ss (%rax,%rcx,8), %xmm2
leaq 0x2d0(%rsp), %rdi
callq 0x4ab94
cvtss2sd %xmm0, %xmm0
callq 0x84e6b
movsd %xmm0, 0x178(%rsp)
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x2543f
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x4470
movsd 0x168(%rsp), %xmm0
movsd 0x170(%rsp), %xmm1
movsd 0x178(%rsp), %xmm2
leaq 0x68(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x53092
movq 0x78(%rsp), %rax
movq %rax, 0x50(%rsp)
movups 0x68(%rsp), %xmm0
movaps %xmm0, 0x40(%rsp)
leaq 0x40(%rsp), %rdi
xorl %esi, %esi
callq 0x85478
movsd (%rax), %xmm0
movsd %xmm0, 0x150(%rsp)
leaq 0x40(%rsp), %rdi
movl $0x1, %esi
callq 0x85478
movsd (%rax), %xmm0
movsd %xmm0, 0x158(%rsp)
leaq 0x40(%rsp), %rdi
movl $0x2, %esi
callq 0x85478
movsd (%rax), %xmm0
movq 0xd8(%rsp), %rax
subq 0xd0(%rsp), %rax
movsd %xmm0, 0x160(%rsp)
shrq $0x5, %rax
imull 0xc0(%rsp), %eax
addl %r12d, %eax
movl %eax, 0x1d0(%rsp)
movq 0x18(%rsp), %rcx
movq 0x2f0(%rcx), %rax
cmpq %rax, 0x2f8(%rcx)
je 0x25584
movl $0x1, %ebp
xorl %ecx, %ecx
movl $0x1, %ebx
movq 0x18(%rsp), %r15
imulq $0x98, %rcx, %rsi
addq %rax, %rsi
movq %r15, %rdi
movq %r14, %rdx
callq 0x53926
movsd 0x129b11(%rip), %xmm1   # 0x14f048
ucomisd %xmm0, %xmm1
movl $0x0, %eax
cmoval %eax, %ebx
movl %ebp, %ecx
movq 0x2f0(%r15), %rax
movq 0x2f8(%r15), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x79435e50d79435e5, %rsi # imm = 0x86BCA1AF286BCA1B
imulq %rsi, %rdx
incl %ebp
cmpq %rcx, %rdx
ja 0x2551a
cmpl $0x1, %ebx
leaq 0x3c0(%rsp), %r15
leaq 0x3a0(%rsp), %rbx
jne 0x25594
movq 0x148(%rsp), %rdi
movq %r14, %rsi
callq 0xe936
incl %r12d
movq 0xd0(%rsp), %rax
movq 0xd8(%rsp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
movq %r12, %rbp
cmpq %r12, %rcx
ja 0x25271
movq 0x28(%rsp), %rax
subq 0x20(%rsp), %rax
movq 0xc0(%rsp), %rcx
incl %ecx
sarq $0x3, %rax
movq %rcx, %rbp
movq %rcx, 0xc0(%rsp)
cmpq %rcx, %rax
leaq 0x3e0(%rsp), %rbx
leaq 0x3d0(%rsp), %r12
ja 0x25180
movq 0x18(%rsp), %rcx
movq 0x2f8(%rcx), %rax
subq 0x2f0(%rcx), %rax
shrq $0x3, %rax
imull $0x286bca1b, %eax, %eax # imm = 0x286BCA1B
movl %eax, 0x110(%rcx)
leaq 0x150(%rsp), %rdi
callq 0x2f814
movb $0x1, %bl
jmp 0x256e6
movq 0x1719bc(%rip), %rdi    # 0x196ff0
leaq 0x12a99a(%rip), %rsi    # 0x14ffd5
movl $0x2b, %edx
callq 0x44e0
movq 0x28(%rsp), %rsi
subq 0x20(%rsp), %rsi
sarq $0x3, %rsi
movq 0x171996(%rip), %rdi    # 0x196ff0
callq 0x42b0
movq %rax, %rbx
leaq 0x12a998(%rip), %rsi    # 0x150001
movl $0xb, %edx
movq %rax, %rdi
callq 0x44e0
movq 0xa8(%rsp), %rsi
subq 0xa0(%rsp), %rsi
sarq $0x3, %rsi
movq %rbx, %rdi
callq 0x42b0
movq %rax, %rbx
leaq 0x12a971(%rip), %rsi    # 0x15000d
movl $0xb, %edx
movq %rax, %rdi
callq 0x44e0
movq 0x88(%rsp), %rsi
subq 0x80(%rsp), %rsi
sarq $0x3, %rsi
movq %rbx, %rdi
callq 0x42b0
movq %rax, %rbx
leaq 0x12a94a(%rip), %rsi    # 0x150019
movl $0xa, %edx
movq %rax, %rdi
callq 0x44e0
movq %rbx, %rdi
callq 0x41f0
xorl %ebx, %ebx
leaq 0x770(%rsp), %rdi
callq 0x4140
movq 0x1f0(%rsp), %rdi
testq %rdi, %rdi
je 0x25710
movq 0x200(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x2572d
movq 0x90(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x2574a
movq 0xb0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x25761
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
leaq 0x290(%rsp), %rdi
callq 0x2f6f0
leaq 0x2b0(%rsp), %rdi
callq 0x2f6f0
leaq 0x230(%rsp), %rdi
callq 0x2f6f0
leaq 0x250(%rsp), %rdi
callq 0x2f6f0
leaq 0xd0(%rsp), %rdi
callq 0x2f6f0
movq %rsp, %rdi
callq 0x2f6f0
leaq 0xf0(%rsp), %rdi
callq 0x2f6f0
movq $-0x2c0, %r14           # imm = 0xFD40
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x257d3
movq (%r13), %rsi
incq %rsi
callq 0x4470
addq $-0x20, %r13
addq $0x20, %r14
jne 0x257be
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x25802
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x4470
movl %ebx, %eax
addq $0x978, %rsp            # imm = 0x978
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x12b00f(%rip), %rdi    # 0x15082c
xorl %esi, %esi
xorl %eax, %eax
callq 0x4630
leaq 0x12afff(%rip), %rdi    # 0x15082c
xorl %esi, %esi
xorl %eax, %eax
callq 0x4630
leaq 0x129e68(%rip), %rdi    # 0x14f6a5
movq %r12, %rsi
xorl %eax, %eax
callq 0x4630
leaq 0x129e57(%rip), %rdi    # 0x14f6a5
movq %r12, %rsi
xorl %eax, %eax
callq 0x4630
jmp 0x25bad
jmp 0x25bc2
movq %rax, %r12
movq 0x3d0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x25bb0
movq 0x3e0(%rsp), %rsi
jmp 0x25a63
jmp 0x25891
jmp 0x25bc2
jmp 0x25891
jmp 0x25bc2
movq %rax, %r12
movq 0x150(%rsp), %rdi
cmpq %rbx, %rdi
jne 0x25afd
jmp 0x25c70
jmp 0x25bc2
jmp 0x25bad
jmp 0x25bc2
movq %rax, %r12
jmp 0x25c7d
movq %rax, %r12
jmp 0x25d41
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
jmp 0x258f1
movq %rax, %r12
cmpq %r15, %r14
je 0x25d6c
addq $-0x10, %r15
leaq 0x4b0(%rsp), %rbx
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x2591d
movq (%r15), %rsi
incq %rsi
callq 0x4470
leaq -0x20(%r15), %rax
addq $-0x10, %r15
cmpq %rbx, %r15
movq %rax, %r15
jne 0x25909
jmp 0x25d6c
movq %rax, %r12
movq %r14, %r15
jmp 0x258f4
jmp 0x25bc2
jmp 0x25bad
jmp 0x25bad
movq %rax, %r12
movq 0x210(%rsp), %rdi
leaq 0x220(%rsp), %rax
cmpq %rax, %rdi
je 0x25976
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x4470
jmp 0x25976
movq %rax, %r12
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x25c70
movq 0x380(%rsp), %rsi
jmp 0x25b05
jmp 0x25bc2
jmp 0x25c63
movq %rax, %r12
movq 0x430(%rsp), %rdi
leaq 0x440(%rsp), %rax
cmpq %rax, %rdi
je 0x259d3
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x4470
jmp 0x259d3
movq %rax, %r12
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x25c66
movq 0x320(%rsp), %rsi
jmp 0x25c19
jmp 0x25bc2
jmp 0x25c63
movq %rax, %r12
movq 0x3b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x25bb0
movq 0x3c0(%rsp), %rsi
jmp 0x25a63
movq %rax, %r12
movq 0x390(%rsp), %rdi
cmpq %rbx, %rdi
je 0x25bb0
movq 0x3a0(%rsp), %rsi
jmp 0x25a63
movq %rax, %r12
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x25bb0
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x4470
jmp 0x25bb0
jmp 0x25c63
jmp 0x25c63
movq %rax, %r12
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
cmpq %rax, %rdi
je 0x25aa7
movq 0x480(%rsp), %rsi
incq %rsi
callq 0x4470
jmp 0x25aa7
movq %rax, %r12
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x25c66
movq 0x360(%rsp), %rsi
jmp 0x25c19
jmp 0x25c63
jmp 0x25bc2
jmp 0x25bc2
jmp 0x25bc2
movq %rax, %r12
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x25c70
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x4470
jmp 0x25c70
movq %rax, %r12
jmp 0x25b44
jmp 0x25c63
movq %rax, %r12
movq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %rax
cmpq %rax, %rdi
je 0x25b44
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x4470
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x25c66
movq 0x300(%rsp), %rsi
jmp 0x25c19
jmp 0x25c63
jmp 0x25bad
jmp 0x25c63
jmp 0x25c63
jmp 0x25c63
jmp 0x25c63
jmp 0x25c63
jmp 0x25c63
jmp 0x25c63
jmp 0x25c63
jmp 0x25c63
jmp 0x25c63
jmp 0x25c63
jmp 0x25c63
movq %rax, %r12
leaq 0x150(%rsp), %rdi
callq 0x2f814
jmp 0x25c70
movq %rax, %r12
jmp 0x25c70
jmp 0x25c63
movq %rax, %r12
movq 0x450(%rsp), %rdi
leaq 0x460(%rsp), %rax
cmpq %rax, %rdi
je 0x25bfc
movq 0x460(%rsp), %rsi
incq %rsi
callq 0x4470
jmp 0x25bfc
movq %rax, %r12
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x25c66
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x4470
jmp 0x25c66
jmp 0x25c63
jmp 0x25c63
movq %rax, %r12
movq 0x410(%rsp), %rdi
leaq 0x420(%rsp), %rax
cmpq %rax, %rdi
je 0x25c54
movq 0x420(%rsp), %rsi
incq %rsi
callq 0x4470
jmp 0x25c54
movq %rax, %r12
leaq 0x498(%rsp), %rdi
callq 0x2f6f0
jmp 0x25c66
movq %rax, %r12
leaq 0x40(%rsp), %rdi
callq 0x2f6f0
leaq 0x770(%rsp), %rdi
callq 0x4140
movq 0x1f0(%rsp), %rdi
testq %rdi, %rdi
je 0x25c9a
movq 0x200(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0x25cb7
movq 0x90(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x25cd4
movq 0xb0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x25ceb
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x4470
leaq 0x290(%rsp), %rdi
callq 0x2f6f0
leaq 0x2b0(%rsp), %rdi
callq 0x2f6f0
leaq 0x230(%rsp), %rdi
callq 0x2f6f0
leaq 0x250(%rsp), %rdi
callq 0x2f6f0
leaq 0xd0(%rsp), %rdi
callq 0x2f6f0
movq %rsp, %rdi
callq 0x2f6f0
leaq 0xf0(%rsp), %rdi
callq 0x2f6f0
xorl %ebx, %ebx
movq 0x750(%rsp,%rbx), %rdi
leaq (%rbx,%r13), %rax
cmpq %rdi, %rax
je 0x25d5f
movq (%rax), %rsi
incq %rsi
callq 0x4470
addq $-0x20, %rbx
cmpq $-0x2c0, %rbx           # imm = 0xFD40
jne 0x25d43
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x25d91
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x4470
movq %r12, %rdi
callq 0x4780