// File: atfrank[P]PCASA/lib/Select.cpp
// Function: Select::recursiveDescentParser(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::vector<Atom*, std::allocator<Atom*>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
std::vector<Atom *> Select::recursiveDescentParser (const std::string &str, const std::vector<Atom *> &ref, const std::string &group){
  std::vector<Atom *> cmpCurr, cmpNext;
  std::vector<Atom *> out;
  std::vector<Atom *>::iterator it;
  std::vector<Atom *>::const_iterator iter;
  std::string curr, next, start, end;
  size_t pos;
  double angstrom;

  //For memory efficiency, always parse "next" first!
  if (str.length() == 0){
    return ref;
  }
  else if ((pos=str.find("&")) != std::string::npos){
    //Logical AND between expressions: A:1-10.CA&A:5-15.CA = A:5-10.CA
    out.clear();
    next=str.substr(pos+1, std::string::npos);
    cmpNext=Select::recursiveDescentParser(next, ref, group);
    if (cmpNext.size() == 0){
//      std::cerr << std::endl << "Warning: Selection \"";
//      std::cerr << next << "\" did not match any atoms";
//      std::cerr << std::endl << std::endl;
      return out;
    }
    std::sort(cmpNext.begin(), cmpNext.end());    

    curr=str.substr(0, pos);
    cmpCurr=Select::recursiveDescentParser(curr, ref, group);
    if (cmpCurr.size() == 0){
      return out;
    }
    std::sort(cmpCurr.begin(), cmpCurr.end());

    std::set_intersection(cmpCurr.begin(), cmpCurr.end(), cmpNext.begin(), cmpNext.end(), back_inserter(out));
  }
  else if ((pos=str.find("_")) != std::string::npos){
    //Logical OR between expressions: A:1-5.CA_B:10-15.CA
    next=str.substr(pos+1, std::string::npos);
    cmpNext=Select::recursiveDescentParser(next, ref, group);
    if (cmpNext.size() == 0){
//      std::cerr << std::endl << "Warning: Selection \"";
//      std::cerr << next << "\" did not match any atoms";
//      std::cerr << std::endl << std::endl;
    }
    std::sort(cmpNext.begin(), cmpNext.end());

    curr=str.substr(0, pos);
    cmpCurr=Select::recursiveDescentParser(curr, ref, group);
    std::sort(cmpCurr.begin(), cmpCurr.end());

    out.resize(cmpCurr.size()+cmpNext.size());
    it=std::set_union(cmpCurr.begin(), cmpCurr.end(), cmpNext.begin(), cmpNext.end(), out.begin());
    out.resize(it-out.begin());

    it=std::unique(out.begin(), out.end());
    out.resize(std::distance(out.begin(),it));
  }
  else if ((pos=str.find("!")) == 0){
    //Expression negation: !A:1-5.CA
    curr=str.substr(pos+1, std::string::npos);
    cmpCurr=Select::recursiveDescentParser(curr, ref, group);
    std::sort(cmpCurr.begin(), cmpCurr.end());

    out.clear();
    std::set_difference(ref.begin(), ref.end(), cmpCurr.begin(), cmpCurr.end(), back_inserter(out));
  }
  else if ((pos=str.find_last_of("~#$")) != std::string::npos){
    //Around (~), Expand (#), By Residue ($)

    //N Angstroms around selection X. The final selection does NOT include X
    //A:10+20.CA~1.5

    //Expand selection X by N Angstroms. The final selection includes X
    //A:10+20.CA#2

    //By residue
    //A:10+20.CA$

    //Around, Expand, and By Residue can be chained together
    //A:10+20.CA~1.5#2$

    out.clear();

    next=str.substr(pos+1, std::string::npos);
    std::stringstream(next) >> angstrom;

    if (pos > 0){
      curr=str.substr(0, pos);
      cmpCurr=Select::recursiveDescentParser(curr, ref, group);
      if (cmpCurr.size() == 0){
        return out;
      }
      else if (angstrom <= 0.0){
        return out;
      }
      else{
        //Compute pairwise distances
        if (str.substr(pos, 1).compare("~") == 0){
          for (it=cmpCurr.begin(); it != cmpCurr.end(); ++it){
            for (iter=ref.begin(); iter != ref.end(); ++iter){
              //Distance calculation
              if ((*it) != (*iter) && Analyze::distance((*it)->getCoor() , (*iter)->getCoor()) <= angstrom){
                //out.push_back((*iter));
                cmpNext.push_back((*iter));
              } 
            }
          }
          //Sort, remove duplicates, and find difference
          std::sort(cmpNext.begin(), cmpNext.end());
          cmpNext.erase(unique(cmpNext.begin(), cmpNext.end()), cmpNext.end());
          std::set_difference(cmpNext.begin(), cmpNext.end(), cmpCurr.begin(), cmpCurr.end(), back_inserter(out));
        }
        else if (str.substr(pos, 1).compare("#") == 0){
          for (it=cmpCurr.begin(); it != cmpCurr.end(); ++it){
            for (iter=ref.begin(); iter != ref.end(); ++iter){
              //Distance calculation
              if (Analyze::distance((*it)->getCoor() , (*iter)->getCoor()) <= angstrom){
                out.push_back((*iter));
              }
            }
          }
          //Sort and remove duplicates
          std::sort(out.begin(), out.end());
          out.erase(unique(out.begin(), out.end()), out.end());
        }
        else if (str.substr(pos, 1).compare("$") == 0){
          for (it=cmpCurr.begin(); it != cmpCurr.end(); ++it){
            out.insert(out.end(), (*it)->getResidue()->getAtmVec().begin(), (*it)->getResidue()->getAtmVec().end());
          }
          //Sort and remove duplicates
          std::sort(out.begin(), out.end());
          out.erase(unique(out.begin(), out.end()), out.end());
        }
        else{
          //Do Nothing
        }
        std::sort(out.begin(), out.end());
        return out;
      }
    }
    else{
      return out;
    }
  }
  else if ((pos=str.find(":")) != std::string::npos){
    //Logical AND between Chains and Residues: A:GLY.
    next=str.substr(pos+1, std::string::npos);
    cmpNext=Select::recursiveDescentParser(next, ref, group);
    std::sort(cmpNext.begin(), cmpNext.end());

    if (pos > 0){
      curr=str.substr(0, pos);
      cmpCurr=Select::recursiveDescentParser(curr, ref, "chain");
    }
    else{
      cmpCurr=ref;
    }
    std::sort(cmpCurr.begin(), cmpCurr.end());

    out.clear();
    std::set_intersection(cmpCurr.begin(), cmpCurr.end(), cmpNext.begin(), cmpNext.end(), back_inserter(out));
  }
  else if ((pos=str.find(".")) != std::string::npos && group.compare("atom") != 0){
    //Logical AND between Residues and Atoms: :GLY.CA
    out.clear();
    next=str.substr(pos+1, std::string::npos);
    cmpNext=Select::recursiveDescentParser(next, ref, "atom");
    if (cmpNext.size() == 0){
      return out;
    }
    std::sort(cmpNext.begin(), cmpNext.end());

    if (pos > 0){
      curr=str.substr(0, pos);
      cmpCurr=Select::recursiveDescentParser(curr, ref, "residue");
      if (cmpCurr.size() == 0){
        return out;
      }
    }
    else{
      cmpCurr=ref;
    }
    std::sort(cmpCurr.begin(), cmpCurr.end());

    std::set_intersection(cmpCurr.begin(), cmpCurr.end(), cmpNext.begin(), cmpNext.end(), back_inserter(out));
  }
  else if ((pos=str.find("+")) != std::string::npos){
    //Logical OR between Chains, or between Residues, or between Atoms: 
    //A+B:., :GLY+ALA., :1+2+3., :.CA+CB+C+N
    next=str.substr(pos+1, std::string::npos);
    cmpNext=Select::recursiveDescentParser(next, ref, group);
    std::sort(cmpNext.begin(), cmpNext.end());

    curr=str.substr(0, pos);
    cmpCurr=Select::recursiveDescentParser(curr, ref, group);
    std::sort(cmpCurr.begin(), cmpCurr.end());

    out.resize(cmpCurr.size()+cmpNext.size());
    it=std::set_union(cmpCurr.begin(), cmpCurr.end(), cmpNext.begin(), cmpNext.end(), out.begin());
    out.resize(it-out.begin());

    it=std::unique(out.begin(), out.end());
    out.resize(std::distance(out.begin(),it));
  }
  else if ((pos=str.find("/")) != std::string::npos){
    //Logical AND between Chains, or between Residues, or between Atoms:
    //A/B:., :GLY/ALA., :1/2/3., :.CA/CB/C/N
    out.clear();
    next=str.substr(pos+1, std::string::npos);
    cmpNext=Select::recursiveDescentParser(next, ref, group);
    if (cmpNext.size() == 0){
      return out;
    }
    std::sort(cmpNext.begin(), cmpNext.end());

    curr=str.substr(0, pos);
    cmpCurr=Select::recursiveDescentParser(curr, ref, group);
    if (cmpCurr.size() == 0){
      return out;
    }
    std::sort(cmpCurr.begin(), cmpCurr.end());

    std::set_intersection(cmpCurr.begin(), cmpCurr.end(), cmpNext.begin(), cmpNext.end(), back_inserter(out));
  }
  else if ((pos=str.find("-")) != std::string::npos){
    //Residue identifier range: :1-10.
    start=str.substr(0, pos);
    end=str.substr(pos+1, std::string::npos);
    if (Misc::isdigit(start) && Misc::isdigit(end)){
      out=Select::recursiveDescentParser(Misc::processRange(start, end), ref, group);
    }
    else{
      return ref;
    }
  }
  else if ((pos=str.find("^")) == 0){
    //Chain, Residue, or Atom negation: ^A:., :^GLY., :^2., :.^CA
    curr=str.substr(pos+1, std::string::npos);
    cmpCurr=Select::recursiveDescentParser(curr, ref, group);
    std::sort(cmpCurr.begin(), cmpCurr.end());

    out.clear();
    std::set_difference(ref.begin(), ref.end(), cmpCurr.begin(), cmpCurr.end(), back_inserter(out));
  }
  else if (selKeysRes.find(str) != selKeysRes.end() && group.compare("residue") == 0){
    out.clear();
    if (selKeysRes[str].length() > 0){
      out=Select::recursiveDescentParser(selKeysRes[str], ref, group);
    }
  }
  else if (selKeysAtm.find(str) != selKeysAtm.end() && group.compare("atom") == 0){
    out.clear();
    if (selKeysAtm[str].length() > 0){
      out=Select::recursiveDescentParser(selKeysAtm[str], ref, group);
    }
  }
  else{
    out.clear();
    if (group.compare("chain") == 0){
      for (iter=ref.begin(); iter != ref.end(); ++iter){
        if (str.compare((*iter)->getChainId()) == 0){
          out.push_back(*iter);
        }
        else if (str.compare((*iter)->getSegId()) == 0){
          out.push_back(*iter);
        }
        else{
          continue;
        }
      }
    }
    else if (group.compare("residue") == 0){
      int resnum;
      std::stringstream(str) >> resnum;
      bool digitFlag=Misc::isdigit(str);
      for (iter=ref.begin(); iter != ref.end(); ++iter){
        if (digitFlag){
          if (resnum == (*iter)->getResId()){
            out.push_back(*iter);
          }
          else{
            continue;
          }
        }
        else{
          if (str.compare((*iter)->getResName()) == 0){
            out.push_back(*iter);
          }
          else if (str.compare(Misc::trim((*iter)->getRecName())) == 0){
            out.push_back(*iter);
          }
          else{
            continue;
          }
        }
      }
    }
    else if (group.compare("atom") == 0){
      for (iter=ref.begin(); iter != ref.end(); ++iter){
        if (str.compare(Misc::trim((*iter)->getAtmName())) == 0){
          out.push_back(*iter);
        }
        else if (Misc::toupper(str).compare(Misc::trim(Misc::toupper((*iter)->getAtmType()))) == 0){
          out.push_back(*iter);
        }
        else{
          continue;
        }
      }
    }
    else{
      //Do Nothing
    }
  }

  return out;
}

// Assembly:
subq $0x1438, %rsp           # imm = 0x1438
movq %rdi, 0x540(%rsp)
movq %rdi, %rax
movq %rax, 0x548(%rsp)
movq %rdi, 0x1430(%rsp)
movq %rsi, 0x1428(%rsp)
movq %rdx, 0x1420(%rsp)
movq %rcx, 0x1418(%rsp)
movq %r8, 0x1410(%rsp)
movq 0x1428(%rsp), %rax
movq %rax, 0x550(%rsp)
leaq 0x13f8(%rsp), %rdi
callq 0x202a0
leaq 0x13e0(%rsp), %rdi
callq 0x202a0
leaq 0x13c8(%rsp), %rdi
callq 0x202a0
leaq 0x13c0(%rsp), %rdi
callq 0x17470
leaq 0x13b8(%rsp), %rdi
callq 0x6bd00
leaq 0x1398(%rsp), %rdi
callq 0x5600
leaq 0x1378(%rsp), %rdi
callq 0x5600
leaq 0x1358(%rsp), %rdi
callq 0x5600
leaq 0x1338(%rsp), %rdi
callq 0x5600
movq 0x1420(%rsp), %rdi
callq 0x5630
cmpq $0x0, %rax
jne 0x6822a
movq 0x540(%rsp), %rdi
movq 0x1418(%rsp), %rsi
callq 0x47130
jmp 0x68201
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
jmp 0x6b8cf
movq 0x1420(%rsp), %rdi
leaq 0x145c6(%rip), %rsi     # 0x7c7ff
xorl %eax, %eax
movl %eax, %edx
callq 0x57d0
movq %rax, 0x1330(%rsp)
cmpq $-0x1, %rax
je 0x6858c
leaq 0x13c8(%rsp), %rdi
callq 0x202c0
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
incq %rdx
leaq 0x12f8(%rsp), %rdi
movq $-0x1, %rcx
callq 0x5440
jmp 0x6828a
leaq 0x1378(%rsp), %rdi
movq %rdi, 0x538(%rsp)
leaq 0x12f8(%rsp), %rsi
movq %rsi, 0x530(%rsp)
callq 0x5510
movq 0x530(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x538(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0x12e0(%rsp), %rdi
callq 0x68110
jmp 0x682eb
leaq 0x13e0(%rsp), %rdi
leaq 0x12e0(%rsp), %rsi
callq 0x6bc50
leaq 0x12e0(%rsp), %rdi
callq 0x202e0
leaq 0x13e0(%rsp), %rdi
callq 0x20600
cmpq $0x0, %rax
jne 0x68345
movq 0x540(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x6bd20
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x528(%rsp)
callq 0x17530
movq 0x528(%rsp), %rdi
movq %rax, 0x12d8(%rsp)
callq 0x175a0
movq %rax, 0x12d0(%rsp)
movq 0x12d8(%rsp), %rdi
movq 0x12d0(%rsp), %rsi
callq 0x6bc90
jmp 0x6838e
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0x12b0(%rsp), %rdi
callq 0x5440
jmp 0x683b1
leaq 0x1398(%rsp), %rdi
movq %rdi, 0x520(%rsp)
leaq 0x12b0(%rsp), %rsi
movq %rsi, 0x518(%rsp)
callq 0x5510
movq 0x518(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x520(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0x1298(%rsp), %rdi
callq 0x68110
jmp 0x68412
leaq 0x13f8(%rsp), %rdi
leaq 0x1298(%rsp), %rsi
callq 0x6bc50
leaq 0x1298(%rsp), %rdi
callq 0x202e0
leaq 0x13f8(%rsp), %rdi
callq 0x20600
cmpq $0x0, %rax
jne 0x6846c
movq 0x540(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x6bd20
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x510(%rsp)
callq 0x17530
movq 0x510(%rsp), %rdi
movq %rax, 0x1290(%rsp)
callq 0x175a0
movq %rax, 0x1288(%rsp)
movq 0x1290(%rsp), %rdi
movq 0x1288(%rsp), %rsi
callq 0x6bc90
jmp 0x684b5
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x4f8(%rsp)
callq 0x17530
movq 0x4f8(%rsp), %rdi
movq %rax, 0x1280(%rsp)
callq 0x175a0
movq %rax, 0x1278(%rsp)
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x500(%rsp)
callq 0x17530
movq 0x500(%rsp), %rdi
movq %rax, 0x1270(%rsp)
callq 0x175a0
movq %rax, 0x1268(%rsp)
leaq 0x13c8(%rsp), %rdi
callq 0x6bde0
movq %rax, 0x508(%rsp)
jmp 0x68530
movq 0x508(%rsp), %rax
movq %rax, 0x1260(%rsp)
movq 0x1280(%rsp), %rdi
movq 0x1278(%rsp), %rsi
movq 0x1270(%rsp), %rdx
movq 0x1268(%rsp), %rcx
movq 0x1260(%rsp), %r8
callq 0x6bd50
movq %rax, 0x4f0(%rsp)
jmp 0x68577
movq 0x4f0(%rsp), %rax
movq %rax, 0x1258(%rsp)
jmp 0x6b842
movq 0x1420(%rsp), %rdi
leaq 0x13d23(%rip), %rsi     # 0x7c2be
xorl %eax, %eax
movl %eax, %edx
callq 0x57d0
movq %rax, 0x1330(%rsp)
cmpq $-0x1, %rax
je 0x689d8
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
incq %rdx
leaq 0x1238(%rsp), %rdi
movq $-0x1, %rcx
callq 0x5440
jmp 0x685df
leaq 0x1378(%rsp), %rdi
movq %rdi, 0x4e8(%rsp)
leaq 0x1238(%rsp), %rsi
movq %rsi, 0x4e0(%rsp)
callq 0x5510
movq 0x4e0(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x4e8(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0x1220(%rsp), %rdi
callq 0x68110
jmp 0x68640
leaq 0x13e0(%rsp), %rdi
leaq 0x1220(%rsp), %rsi
callq 0x6bc50
leaq 0x1220(%rsp), %rdi
callq 0x202e0
leaq 0x13e0(%rsp), %rdi
callq 0x20600
cmpq $0x0, %rax
jne 0x68677
jmp 0x68677
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x4d8(%rsp)
callq 0x17530
movq 0x4d8(%rsp), %rdi
movq %rax, 0x1218(%rsp)
callq 0x175a0
movq %rax, 0x1210(%rsp)
movq 0x1218(%rsp), %rdi
movq 0x1210(%rsp), %rsi
callq 0x6bc90
jmp 0x686c0
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0x11f0(%rsp), %rdi
callq 0x5440
jmp 0x686e3
leaq 0x1398(%rsp), %rdi
movq %rdi, 0x4d0(%rsp)
leaq 0x11f0(%rsp), %rsi
movq %rsi, 0x4c8(%rsp)
callq 0x5510
movq 0x4c8(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x4d0(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0x11d8(%rsp), %rdi
callq 0x68110
jmp 0x68744
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x4c0(%rsp)
leaq 0x11d8(%rsp), %rsi
movq %rsi, 0x4b8(%rsp)
callq 0x6bc50
movq 0x4b8(%rsp), %rdi
callq 0x202e0
movq 0x4c0(%rsp), %rdi
callq 0x17530
movq 0x4c0(%rsp), %rdi
movq %rax, 0x11d0(%rsp)
callq 0x175a0
movq %rax, 0x11c8(%rsp)
movq 0x11d0(%rsp), %rdi
movq 0x11c8(%rsp), %rsi
callq 0x6bc90
jmp 0x687b7
leaq 0x13f8(%rsp), %rdi
callq 0x20600
movq %rax, 0x4b0(%rsp)
leaq 0x13e0(%rsp), %rdi
callq 0x20600
movq 0x4b0(%rsp), %rsi
addq %rax, %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x6be10
jmp 0x687f3
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x498(%rsp)
callq 0x17530
movq 0x498(%rsp), %rdi
movq %rax, 0x11b8(%rsp)
callq 0x175a0
movq %rax, 0x11b0(%rsp)
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x4a0(%rsp)
callq 0x17530
movq 0x4a0(%rsp), %rdi
movq %rax, 0x11a8(%rsp)
callq 0x175a0
movq %rax, 0x11a0(%rsp)
leaq 0x13c8(%rsp), %rdi
callq 0x17530
movq %rax, 0x1198(%rsp)
movq 0x11b8(%rsp), %rdi
movq 0x11b0(%rsp), %rsi
movq 0x11a8(%rsp), %rdx
movq 0x11a0(%rsp), %rcx
movq 0x1198(%rsp), %r8
callq 0x6beb0
movq %rax, 0x4a8(%rsp)
jmp 0x688a3
movq 0x4a8(%rsp), %rax
movq %rax, 0x11c0(%rsp)
movq 0x11c0(%rsp), %rax
movq %rax, 0x13c0(%rsp)
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x490(%rsp)
callq 0x17530
movq %rax, 0x1190(%rsp)
leaq 0x13c0(%rsp), %rdi
leaq 0x1190(%rsp), %rsi
callq 0x21660
movq 0x490(%rsp), %rdi
movq %rax, %rsi
callq 0x6be10
jmp 0x68907
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x480(%rsp)
callq 0x17530
movq 0x480(%rsp), %rdi
movq %rax, 0x1180(%rsp)
callq 0x175a0
movq %rax, 0x1178(%rsp)
movq 0x1180(%rsp), %rdi
movq 0x1178(%rsp), %rsi
callq 0x6bf40
movq %rax, 0x488(%rsp)
jmp 0x68958
movq 0x488(%rsp), %rax
movq %rax, 0x1188(%rsp)
movq 0x1188(%rsp), %rax
movq %rax, 0x13c0(%rsp)
leaq 0x13c8(%rsp), %rdi
callq 0x17530
movq %rax, 0x1170(%rsp)
movq 0x13c0(%rsp), %rax
movq %rax, 0x1168(%rsp)
movq 0x1170(%rsp), %rdi
movq 0x1168(%rsp), %rsi
callq 0x6bf90
movq %rax, 0x478(%rsp)
jmp 0x689bc
movq 0x478(%rsp), %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x6be10
jmp 0x689d3
jmp 0x6b840
movq 0x1420(%rsp), %rdi
leaq 0x13c96(%rip), %rsi     # 0x7c67d
xorl %eax, %eax
movl %eax, %edx
callq 0x57d0
movq %rax, 0x1330(%rsp)
cmpq $0x0, %rax
jne 0x68be3
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
incq %rdx
leaq 0x1148(%rsp), %rdi
movq $-0x1, %rcx
callq 0x5440
jmp 0x68a2b
leaq 0x1398(%rsp), %rdi
movq %rdi, 0x470(%rsp)
leaq 0x1148(%rsp), %rsi
movq %rsi, 0x468(%rsp)
callq 0x5510
movq 0x468(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x470(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0x1130(%rsp), %rdi
callq 0x68110
jmp 0x68a8c
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x460(%rsp)
leaq 0x1130(%rsp), %rsi
movq %rsi, 0x458(%rsp)
callq 0x6bc50
movq 0x458(%rsp), %rdi
callq 0x202e0
movq 0x460(%rsp), %rdi
callq 0x17530
movq 0x460(%rsp), %rdi
movq %rax, 0x1128(%rsp)
callq 0x175a0
movq %rax, 0x1120(%rsp)
movq 0x1128(%rsp), %rdi
movq 0x1120(%rsp), %rsi
callq 0x6bc90
jmp 0x68aff
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x448(%rsp)
callq 0x202c0
movq 0x1418(%rsp), %rdi
callq 0x20a80
movq %rax, 0x1118(%rsp)
movq 0x1418(%rsp), %rdi
callq 0x20ab0
movq %rax, 0x1110(%rsp)
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x440(%rsp)
callq 0x17530
movq 0x440(%rsp), %rdi
movq %rax, 0x1108(%rsp)
callq 0x175a0
movq 0x448(%rsp), %rdi
movq %rax, 0x1100(%rsp)
callq 0x6bde0
movq %rax, 0x450(%rsp)
jmp 0x68b87
movq 0x450(%rsp), %rax
movq %rax, 0x10f8(%rsp)
movq 0x1118(%rsp), %rdi
movq 0x1110(%rsp), %rsi
movq 0x1108(%rsp), %rdx
movq 0x1100(%rsp), %rcx
movq 0x10f8(%rsp), %r8
callq 0x6bfd0
movq %rax, 0x438(%rsp)
jmp 0x68bce
movq 0x438(%rsp), %rax
movq %rax, 0x10f0(%rsp)
jmp 0x6b83e
movq 0x1420(%rsp), %rdi
leaq 0x13c0f(%rip), %rsi     # 0x7c801
movq $-0x1, %rdx
callq 0x53b0
movq %rax, 0x1330(%rsp)
cmpq $-0x1, %rax
je 0x69893
leaq 0x13c8(%rsp), %rdi
callq 0x202c0
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
incq %rdx
leaq 0x10d0(%rsp), %rdi
movq $-0x1, %rcx
callq 0x5440
jmp 0x68c46
leaq 0x1378(%rsp), %rdi
leaq 0x10d0(%rsp), %rsi
movq %rsi, 0x428(%rsp)
callq 0x5510
movq 0x428(%rsp), %rdi
callq 0x5250
movl $0x10, %edi
movl $0x8, %esi
callq 0x7850
movl %eax, 0x434(%rsp)
jmp 0x68c88
movl 0x434(%rsp), %edx
leaq 0xf48(%rsp), %rdi
leaq 0x1378(%rsp), %rsi
callq 0x5670
jmp 0x68ca6
leaq 0xf48(%rsp), %rdi
leaq 0x1328(%rsp), %rsi
callq 0x3c750
jmp 0x68cbd
leaq 0xf48(%rsp), %rdi
callq 0x52e0
cmpq $0x0, 0x1330(%rsp)
jbe 0x6986e
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0xf28(%rsp), %rdi
callq 0x5440
jmp 0x68cfc
leaq 0x1398(%rsp), %rdi
movq %rdi, 0x420(%rsp)
leaq 0xf28(%rsp), %rsi
movq %rsi, 0x418(%rsp)
callq 0x5510
movq 0x418(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x420(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0xf10(%rsp), %rdi
callq 0x68110
jmp 0x68d5d
leaq 0x13f8(%rsp), %rdi
leaq 0xf10(%rsp), %rsi
callq 0x6bc50
leaq 0xf10(%rsp), %rdi
callq 0x202e0
leaq 0x13f8(%rsp), %rdi
callq 0x20600
cmpq $0x0, %rax
jne 0x68ddd
movq 0x540(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x6bd20
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
leaq 0xf48(%rsp), %rdi
callq 0x52e0
jmp 0x6b8cf
xorps %xmm0, %xmm0
ucomisd 0x1328(%rsp), %xmm0
jb 0x68e10
movq 0x540(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x6bd20
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
leaq 0xef0(%rsp), %rdi
movl $0x1, %ecx
callq 0x5440
jmp 0x68e34
leaq 0xef0(%rsp), %rdi
leaq 0x139c2(%rip), %rsi     # 0x7c805
callq 0x5140
movl %eax, 0x414(%rsp)
leaq 0xef0(%rsp), %rdi
callq 0x5250
movl 0x414(%rsp), %eax
cmpl $0x0, %eax
jne 0x69213
leaq 0x13f8(%rsp), %rdi
callq 0x17530
movq %rax, 0xee8(%rsp)
movq 0xee8(%rsp), %rax
movq %rax, 0x13c0(%rsp)
leaq 0x13f8(%rsp), %rdi
callq 0x175a0
movq %rax, 0xee0(%rsp)
leaq 0x13c0(%rsp), %rdi
leaq 0xee0(%rsp), %rsi
callq 0x17560
testb $0x1, %al
jne 0x68ec4
jmp 0x69014
movq 0x1418(%rsp), %rdi
callq 0x20a80
movq %rax, 0xed8(%rsp)
movq 0xed8(%rsp), %rax
movq %rax, 0x13b8(%rsp)
movq 0x1418(%rsp), %rdi
callq 0x20ab0
movq %rax, 0xed0(%rsp)
leaq 0x13b8(%rsp), %rdi
leaq 0xed0(%rsp), %rsi
callq 0x6c060
testb $0x1, %al
jne 0x68f1c
jmp 0x69000
leaq 0x13c0(%rsp), %rdi
callq 0x175d0
movq (%rax), %rax
movq %rax, 0x408(%rsp)
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq %rax, %rcx
movq 0x408(%rsp), %rax
cmpq (%rcx), %rax
je 0x68fec
leaq 0x13c0(%rsp), %rdi
callq 0x175d0
movq (%rax), %rdi
callq 0x1f6e0
movq %rax, 0x400(%rsp)
jmp 0x68f74
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq (%rax), %rdi
callq 0x1f6e0
movq %rax, 0x3f8(%rsp)
jmp 0x68f93
movq 0x3f8(%rsp), %rsi
movq 0x400(%rsp), %rdi
callq 0xf810
movsd %xmm0, 0x3f0(%rsp)
jmp 0x68fb3
movsd 0x3f0(%rsp), %xmm1
movsd 0x1328(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x68fec
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq %rax, %rsi
leaq 0x13e0(%rsp), %rdi
callq 0x20660
jmp 0x68fea
jmp 0x68fec
jmp 0x68fee
leaq 0x13b8(%rsp), %rdi
callq 0x6c0b0
jmp 0x68ee9
jmp 0x69002
leaq 0x13c0(%rsp), %rdi
callq 0x17680
jmp 0x68e91
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x3e8(%rsp)
callq 0x17530
movq 0x3e8(%rsp), %rdi
movq %rax, 0xec8(%rsp)
callq 0x175a0
movq %rax, 0xec0(%rsp)
movq 0xec8(%rsp), %rdi
movq 0xec0(%rsp), %rsi
callq 0x6bc90
jmp 0x6905d
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x3d8(%rsp)
callq 0x17530
movq 0x3d8(%rsp), %rdi
movq %rax, 0xea8(%rsp)
callq 0x175a0
movq %rax, 0xea0(%rsp)
movq 0xea8(%rsp), %rdi
movq 0xea0(%rsp), %rsi
callq 0x6bf40
movq %rax, 0x3e0(%rsp)
jmp 0x690ae
movq 0x3e0(%rsp), %rax
movq %rax, 0xeb0(%rsp)
leaq 0xeb8(%rsp), %rdi
leaq 0xeb0(%rsp), %rsi
callq 0x6c170
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x3c8(%rsp)
callq 0x175a0
movq %rax, 0xe90(%rsp)
leaq 0xe98(%rsp), %rdi
leaq 0xe90(%rsp), %rsi
callq 0x6c170
movq 0x3c8(%rsp), %rdi
movq 0xeb8(%rsp), %rsi
movq 0xe98(%rsp), %rdx
callq 0x6c0d0
movq %rax, 0x3d0(%rsp)
jmp 0x6912c
movq 0x3d0(%rsp), %rax
movq %rax, 0xe88(%rsp)
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x3b0(%rsp)
callq 0x17530
movq 0x3b0(%rsp), %rdi
movq %rax, 0xe80(%rsp)
callq 0x175a0
movq %rax, 0xe78(%rsp)
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x3b8(%rsp)
callq 0x17530
movq 0x3b8(%rsp), %rdi
movq %rax, 0xe70(%rsp)
callq 0x175a0
movq %rax, 0xe68(%rsp)
leaq 0x13c8(%rsp), %rdi
callq 0x6bde0
movq %rax, 0x3c0(%rsp)
jmp 0x691b7
movq 0x3c0(%rsp), %rax
movq %rax, 0xe60(%rsp)
movq 0xe80(%rsp), %rdi
movq 0xe78(%rsp), %rsi
movq 0xe70(%rsp), %rdx
movq 0xe68(%rsp), %rcx
movq 0xe60(%rsp), %r8
callq 0x6c1b0
movq %rax, 0x3a8(%rsp)
jmp 0x691fe
movq 0x3a8(%rsp), %rax
movq %rax, 0xe58(%rsp)
jmp 0x69800
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
leaq 0xe38(%rsp), %rdi
movl $0x1, %ecx
callq 0x5440
jmp 0x69237
leaq 0xe38(%rsp), %rdi
leaq 0x135c1(%rip), %rsi     # 0x7c807
callq 0x5140
movl %eax, 0x3a4(%rsp)
leaq 0xe38(%rsp), %rdi
callq 0x5250
movl 0x3a4(%rsp), %eax
cmpl $0x0, %eax
jne 0x6950b
leaq 0x13f8(%rsp), %rdi
callq 0x17530
movq %rax, 0xe30(%rsp)
movq 0xe30(%rsp), %rax
movq %rax, 0x13c0(%rsp)
leaq 0x13f8(%rsp), %rdi
callq 0x175a0
movq %rax, 0xe28(%rsp)
leaq 0x13c0(%rsp), %rdi
leaq 0xe28(%rsp), %rsi
callq 0x17560
testb $0x1, %al
jne 0x692c7
jmp 0x693de
movq 0x1418(%rsp), %rdi
callq 0x20a80
movq %rax, 0xe20(%rsp)
movq 0xe20(%rsp), %rax
movq %rax, 0x13b8(%rsp)
movq 0x1418(%rsp), %rdi
callq 0x20ab0
movq %rax, 0xe18(%rsp)
leaq 0x13b8(%rsp), %rdi
leaq 0xe18(%rsp), %rsi
callq 0x6c060
testb $0x1, %al
jne 0x6931f
jmp 0x693ca
leaq 0x13c0(%rsp), %rdi
callq 0x175d0
movq (%rax), %rdi
callq 0x1f6e0
movq %rax, 0x398(%rsp)
jmp 0x6933e
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq (%rax), %rdi
callq 0x1f6e0
movq %rax, 0x390(%rsp)
jmp 0x6935d
movq 0x390(%rsp), %rsi
movq 0x398(%rsp), %rdi
callq 0xf810
movsd %xmm0, 0x388(%rsp)
jmp 0x6937d
movsd 0x388(%rsp), %xmm1
movsd 0x1328(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x693b6
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq %rax, %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x20660
jmp 0x693b4
jmp 0x693b6
jmp 0x693b8
leaq 0x13b8(%rsp), %rdi
callq 0x6c0b0
jmp 0x692ec
jmp 0x693cc
leaq 0x13c0(%rsp), %rdi
callq 0x17680
jmp 0x69294
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x380(%rsp)
callq 0x17530
movq 0x380(%rsp), %rdi
movq %rax, 0xe10(%rsp)
callq 0x175a0
movq %rax, 0xe08(%rsp)
movq 0xe10(%rsp), %rdi
movq 0xe08(%rsp), %rsi
callq 0x6bc90
jmp 0x69427
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x370(%rsp)
callq 0x17530
movq 0x370(%rsp), %rdi
movq %rax, 0xdf0(%rsp)
callq 0x175a0
movq %rax, 0xde8(%rsp)
movq 0xdf0(%rsp), %rdi
movq 0xde8(%rsp), %rsi
callq 0x6bf40
movq %rax, 0x378(%rsp)
jmp 0x69478
movq 0x378(%rsp), %rax
movq %rax, 0xdf8(%rsp)
leaq 0xe00(%rsp), %rdi
leaq 0xdf8(%rsp), %rsi
callq 0x6c170
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x360(%rsp)
callq 0x175a0
movq %rax, 0xdd8(%rsp)
leaq 0xde0(%rsp), %rdi
leaq 0xdd8(%rsp), %rsi
callq 0x6c170
movq 0x360(%rsp), %rdi
movq 0xe00(%rsp), %rsi
movq 0xde0(%rsp), %rdx
callq 0x6c0d0
movq %rax, 0x368(%rsp)
jmp 0x694f6
movq 0x368(%rsp), %rax
movq %rax, 0xdd0(%rsp)
jmp 0x697fe
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
leaq 0xdb0(%rsp), %rdi
movl $0x1, %ecx
callq 0x5440
jmp 0x6952f
leaq 0xdb0(%rsp), %rdi
leaq 0x132c5(%rip), %rsi     # 0x7c803
callq 0x5140
movl %eax, 0x35c(%rsp)
leaq 0xdb0(%rsp), %rdi
callq 0x5250
movl 0x35c(%rsp), %eax
cmpl $0x0, %eax
jne 0x697fa
leaq 0x13f8(%rsp), %rdi
callq 0x17530
movq %rax, 0xda8(%rsp)
movq 0xda8(%rsp), %rax
movq %rax, 0x13c0(%rsp)
leaq 0x13f8(%rsp), %rdi
callq 0x175a0
movq %rax, 0xda0(%rsp)
leaq 0x13c0(%rsp), %rdi
leaq 0xda0(%rsp), %rsi
callq 0x17560
testb $0x1, %al
jne 0x695bf
jmp 0x696d0
leaq 0x13c8(%rsp), %rdi
callq 0x175a0
movq %rax, 0xd90(%rsp)
leaq 0xd98(%rsp), %rdi
leaq 0xd90(%rsp), %rsi
callq 0x6c170
leaq 0x13c0(%rsp), %rdi
callq 0x175d0
movq (%rax), %rdi
callq 0x1f600
movq %rax, 0x350(%rsp)
jmp 0x69608
movq 0x350(%rsp), %rdi
callq 0x5e100
movq %rax, 0x348(%rsp)
jmp 0x6961f
movq 0x348(%rsp), %rdi
callq 0x17530
movq %rax, 0xd88(%rsp)
leaq 0x13c0(%rsp), %rdi
callq 0x175d0
movq (%rax), %rdi
callq 0x1f600
movq %rax, 0x340(%rsp)
jmp 0x69653
movq 0x340(%rsp), %rdi
callq 0x5e100
movq %rax, 0x338(%rsp)
jmp 0x6966a
movq 0x338(%rsp), %rdi
callq 0x175a0
movq %rax, 0xd80(%rsp)
movq 0xd98(%rsp), %rsi
movq 0xd88(%rsp), %rdx
movq 0xd80(%rsp), %rcx
leaq 0x13c8(%rsp), %rdi
callq 0x6c240
movq %rax, 0x330(%rsp)
jmp 0x696ae
movq 0x330(%rsp), %rax
movq %rax, 0xd78(%rsp)
leaq 0x13c0(%rsp), %rdi
callq 0x17680
jmp 0x6958c
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x328(%rsp)
callq 0x17530
movq 0x328(%rsp), %rdi
movq %rax, 0xd70(%rsp)
callq 0x175a0
movq %rax, 0xd68(%rsp)
movq 0xd70(%rsp), %rdi
movq 0xd68(%rsp), %rsi
callq 0x6bc90
jmp 0x69719
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x318(%rsp)
callq 0x17530
movq 0x318(%rsp), %rdi
movq %rax, 0xd50(%rsp)
callq 0x175a0
movq %rax, 0xd48(%rsp)
movq 0xd50(%rsp), %rdi
movq 0xd48(%rsp), %rsi
callq 0x6bf40
movq %rax, 0x320(%rsp)
jmp 0x6976a
movq 0x320(%rsp), %rax
movq %rax, 0xd58(%rsp)
leaq 0xd60(%rsp), %rdi
leaq 0xd58(%rsp), %rsi
callq 0x6c170
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x308(%rsp)
callq 0x175a0
movq %rax, 0xd38(%rsp)
leaq 0xd40(%rsp), %rdi
leaq 0xd38(%rsp), %rsi
callq 0x6c170
movq 0x308(%rsp), %rdi
movq 0xd60(%rsp), %rsi
movq 0xd40(%rsp), %rdx
callq 0x6c0d0
movq %rax, 0x310(%rsp)
jmp 0x697e8
movq 0x310(%rsp), %rax
movq %rax, 0xd30(%rsp)
jmp 0x697fc
jmp 0x697fc
jmp 0x697fe
jmp 0x69800
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x300(%rsp)
callq 0x17530
movq 0x300(%rsp), %rdi
movq %rax, 0xd28(%rsp)
callq 0x175a0
movq %rax, 0xd20(%rsp)
movq 0xd28(%rsp), %rdi
movq 0xd20(%rsp), %rsi
callq 0x6bc90
jmp 0x69849
movq 0x540(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x6bd20
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
movq 0x540(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x6bd20
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
movq 0x1420(%rsp), %rdi
leaq 0x11985(%rip), %rsi     # 0x7b227
xorl %eax, %eax
movl %eax, %edx
callq 0x57d0
movq %rax, 0x1330(%rsp)
cmpq $-0x1, %rax
je 0x69c5d
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
incq %rdx
leaq 0xd00(%rsp), %rdi
movq $-0x1, %rcx
callq 0x5440
jmp 0x698e6
leaq 0x1378(%rsp), %rdi
movq %rdi, 0x2f8(%rsp)
leaq 0xd00(%rsp), %rsi
movq %rsi, 0x2f0(%rsp)
callq 0x5510
movq 0x2f0(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x2f8(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0xce8(%rsp), %rdi
callq 0x68110
jmp 0x69947
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x2e8(%rsp)
leaq 0xce8(%rsp), %rsi
movq %rsi, 0x2e0(%rsp)
callq 0x6bc50
movq 0x2e0(%rsp), %rdi
callq 0x202e0
movq 0x2e8(%rsp), %rdi
callq 0x17530
movq 0x2e8(%rsp), %rdi
movq %rax, 0xce0(%rsp)
callq 0x175a0
movq %rax, 0xcd8(%rsp)
movq 0xce0(%rsp), %rdi
movq 0xcd8(%rsp), %rsi
callq 0x6bc90
jmp 0x699ba
cmpq $0x0, 0x1330(%rsp)
jbe 0x69b0f
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0xcb8(%rsp), %rdi
callq 0x5440
jmp 0x699ec
leaq 0x1398(%rsp), %rdi
leaq 0xcb8(%rsp), %rsi
movq %rsi, 0x2c8(%rsp)
callq 0x5510
movq 0x2c8(%rsp), %rdi
callq 0x5250
movq 0x1418(%rsp), %rax
movq %rax, 0x2d0(%rsp)
leaq 0xc7f(%rsp), %rdi
movq %rdi, 0x2d8(%rsp)
callq 0x5730
movq 0x2d8(%rsp), %rdx
leaq 0x12dbf(%rip), %rsi     # 0x7c809
leaq 0xc80(%rsp), %rdi
callq 0x7900
jmp 0x69a59
movq 0x2d0(%rsp), %rcx
movq 0x550(%rsp), %rsi
leaq 0xca0(%rsp), %rdi
leaq 0x1398(%rsp), %rdx
leaq 0xc80(%rsp), %r8
callq 0x68110
jmp 0x69a88
leaq 0x13f8(%rsp), %rdi
leaq 0xca0(%rsp), %rsi
callq 0x6bc50
leaq 0xca0(%rsp), %rdi
callq 0x202e0
leaq 0xc80(%rsp), %rdi
callq 0x5250
leaq 0xc7f(%rsp), %rdi
callq 0x5480
jmp 0x69b28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
jmp 0x69afd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
leaq 0xc80(%rsp), %rdi
callq 0x5250
leaq 0xc7f(%rsp), %rdi
callq 0x5480
jmp 0x6b8cf
movq 0x1418(%rsp), %rsi
leaq 0x13f8(%rsp), %rdi
callq 0x20340
jmp 0x69b26
jmp 0x69b28
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x2c0(%rsp)
callq 0x17530
movq 0x2c0(%rsp), %rdi
movq %rax, 0xc70(%rsp)
callq 0x175a0
movq %rax, 0xc68(%rsp)
movq 0xc70(%rsp), %rdi
movq 0xc68(%rsp), %rsi
callq 0x6bc90
jmp 0x69b71
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x2b0(%rsp)
callq 0x202c0
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x2a0(%rsp)
callq 0x17530
movq 0x2a0(%rsp), %rdi
movq %rax, 0xc60(%rsp)
callq 0x175a0
movq %rax, 0xc58(%rsp)
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x2a8(%rsp)
callq 0x17530
movq 0x2a8(%rsp), %rdi
movq %rax, 0xc50(%rsp)
callq 0x175a0
movq 0x2b0(%rsp), %rdi
movq %rax, 0xc48(%rsp)
callq 0x6bde0
movq %rax, 0x2b8(%rsp)
jmp 0x69c01
movq 0x2b8(%rsp), %rax
movq %rax, 0xc40(%rsp)
movq 0xc60(%rsp), %rdi
movq 0xc58(%rsp), %rsi
movq 0xc50(%rsp), %rdx
movq 0xc48(%rsp), %rcx
movq 0xc40(%rsp), %r8
callq 0x6bd50
movq %rax, 0x298(%rsp)
jmp 0x69c48
movq 0x298(%rsp), %rax
movq %rax, 0xc38(%rsp)
jmp 0x6b83a
movq 0x1420(%rsp), %rdi
leaq 0x12aea(%rip), %rsi     # 0x7c756
xorl %eax, %eax
movl %eax, %edx
callq 0x57d0
movq %rax, 0x1330(%rsp)
cmpq $-0x1, %rax
je 0x6a142
movq 0x1410(%rsp), %rdi
leaq 0x12b79(%rip), %rsi     # 0x7c80f
callq 0x5140
cmpl $0x0, %eax
je 0x6a142
leaq 0x13c8(%rsp), %rdi
callq 0x202c0
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
incq %rdx
leaq 0xc18(%rsp), %rdi
movq $-0x1, %rcx
callq 0x5440
jmp 0x69cda
leaq 0x1378(%rsp), %rdi
leaq 0xc18(%rsp), %rsi
movq %rsi, 0x280(%rsp)
callq 0x5510
movq 0x280(%rsp), %rdi
callq 0x5250
movq 0x1418(%rsp), %rax
movq %rax, 0x288(%rsp)
leaq 0xbdf(%rsp), %rdi
movq %rdi, 0x290(%rsp)
callq 0x5730
movq 0x290(%rsp), %rdx
leaq 0x12ad7(%rip), %rsi     # 0x7c80f
leaq 0xbe0(%rsp), %rdi
callq 0x7900
jmp 0x69d47
movq 0x288(%rsp), %rcx
movq 0x550(%rsp), %rsi
leaq 0xc00(%rsp), %rdi
leaq 0x1378(%rsp), %rdx
leaq 0xbe0(%rsp), %r8
callq 0x68110
jmp 0x69d76
leaq 0x13e0(%rsp), %rdi
leaq 0xc00(%rsp), %rsi
callq 0x6bc50
leaq 0xc00(%rsp), %rdi
callq 0x202e0
leaq 0xbe0(%rsp), %rdi
callq 0x5250
leaq 0xbdf(%rsp), %rdi
callq 0x5480
leaq 0x13e0(%rsp), %rdi
callq 0x20600
cmpq $0x0, %rax
jne 0x69e33
movq 0x540(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x6bd20
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
jmp 0x69e21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
leaq 0xbe0(%rsp), %rdi
callq 0x5250
leaq 0xbdf(%rsp), %rdi
callq 0x5480
jmp 0x6b8cf
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x278(%rsp)
callq 0x17530
movq 0x278(%rsp), %rdi
movq %rax, 0xbd0(%rsp)
callq 0x175a0
movq %rax, 0xbc8(%rsp)
movq 0xbd0(%rsp), %rdi
movq 0xbc8(%rsp), %rsi
callq 0x6bc90
jmp 0x69e7c
cmpq $0x0, 0x1330(%rsp)
jbe 0x6a009
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0xba8(%rsp), %rdi
callq 0x5440
jmp 0x69eae
leaq 0x1398(%rsp), %rdi
leaq 0xba8(%rsp), %rsi
movq %rsi, 0x260(%rsp)
callq 0x5510
movq 0x260(%rsp), %rdi
callq 0x5250
movq 0x1418(%rsp), %rax
movq %rax, 0x268(%rsp)
leaq 0xb6f(%rsp), %rdi
movq %rdi, 0x270(%rsp)
callq 0x5730
movq 0x270(%rsp), %rdx
leaq 0x12908(%rip), %rsi     # 0x7c814
leaq 0xb70(%rsp), %rdi
callq 0x7900
jmp 0x69f1b
movq 0x268(%rsp), %rcx
movq 0x550(%rsp), %rsi
leaq 0xb90(%rsp), %rdi
leaq 0x1398(%rsp), %rdx
leaq 0xb70(%rsp), %r8
callq 0x68110
jmp 0x69f4a
leaq 0x13f8(%rsp), %rdi
leaq 0xb90(%rsp), %rsi
callq 0x6bc50
leaq 0xb90(%rsp), %rdi
callq 0x202e0
leaq 0xb70(%rsp), %rdi
callq 0x5250
leaq 0xb6f(%rsp), %rdi
callq 0x5480
leaq 0x13f8(%rsp), %rdi
callq 0x20600
cmpq $0x0, %rax
jne 0x6a007
movq 0x540(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x6bd20
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
jmp 0x69ff5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
leaq 0xb70(%rsp), %rdi
callq 0x5250
leaq 0xb6f(%rsp), %rdi
callq 0x5480
jmp 0x6b8cf
jmp 0x6a022
movq 0x1418(%rsp), %rsi
leaq 0x13f8(%rsp), %rdi
callq 0x20340
jmp 0x6a020
jmp 0x6a022
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x258(%rsp)
callq 0x17530
movq 0x258(%rsp), %rdi
movq %rax, 0xb60(%rsp)
callq 0x175a0
movq %rax, 0xb58(%rsp)
movq 0xb60(%rsp), %rdi
movq 0xb58(%rsp), %rsi
callq 0x6bc90
jmp 0x6a06b
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x240(%rsp)
callq 0x17530
movq 0x240(%rsp), %rdi
movq %rax, 0xb50(%rsp)
callq 0x175a0
movq %rax, 0xb48(%rsp)
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x248(%rsp)
callq 0x17530
movq 0x248(%rsp), %rdi
movq %rax, 0xb40(%rsp)
callq 0x175a0
movq %rax, 0xb38(%rsp)
leaq 0x13c8(%rsp), %rdi
callq 0x6bde0
movq %rax, 0x250(%rsp)
jmp 0x6a0e6
movq 0x250(%rsp), %rax
movq %rax, 0xb30(%rsp)
movq 0xb50(%rsp), %rdi
movq 0xb48(%rsp), %rsi
movq 0xb40(%rsp), %rdx
movq 0xb38(%rsp), %rcx
movq 0xb30(%rsp), %r8
callq 0x6bd50
movq %rax, 0x238(%rsp)
jmp 0x6a12d
movq 0x238(%rsp), %rax
movq %rax, 0xb28(%rsp)
jmp 0x6b838
movq 0x1420(%rsp), %rdi
leaq 0x11496(%rip), %rsi     # 0x7b5e7
xorl %eax, %eax
movl %eax, %edx
callq 0x57d0
movq %rax, 0x1330(%rsp)
cmpq $-0x1, %rax
je 0x6a581
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
incq %rdx
leaq 0xb08(%rsp), %rdi
movq $-0x1, %rcx
callq 0x5440
jmp 0x6a195
leaq 0x1378(%rsp), %rdi
movq %rdi, 0x230(%rsp)
leaq 0xb08(%rsp), %rsi
movq %rsi, 0x228(%rsp)
callq 0x5510
movq 0x228(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x230(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0xaf0(%rsp), %rdi
callq 0x68110
jmp 0x6a1f6
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x220(%rsp)
leaq 0xaf0(%rsp), %rsi
movq %rsi, 0x218(%rsp)
callq 0x6bc50
movq 0x218(%rsp), %rdi
callq 0x202e0
movq 0x220(%rsp), %rdi
callq 0x17530
movq 0x220(%rsp), %rdi
movq %rax, 0xae8(%rsp)
callq 0x175a0
movq %rax, 0xae0(%rsp)
movq 0xae8(%rsp), %rdi
movq 0xae0(%rsp), %rsi
callq 0x6bc90
jmp 0x6a269
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0xac0(%rsp), %rdi
callq 0x5440
jmp 0x6a28c
leaq 0x1398(%rsp), %rdi
movq %rdi, 0x210(%rsp)
leaq 0xac0(%rsp), %rsi
movq %rsi, 0x208(%rsp)
callq 0x5510
movq 0x208(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x210(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0xaa8(%rsp), %rdi
callq 0x68110
jmp 0x6a2ed
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x200(%rsp)
leaq 0xaa8(%rsp), %rsi
movq %rsi, 0x1f8(%rsp)
callq 0x6bc50
movq 0x1f8(%rsp), %rdi
callq 0x202e0
movq 0x200(%rsp), %rdi
callq 0x17530
movq 0x200(%rsp), %rdi
movq %rax, 0xaa0(%rsp)
callq 0x175a0
movq %rax, 0xa98(%rsp)
movq 0xaa0(%rsp), %rdi
movq 0xa98(%rsp), %rsi
callq 0x6bc90
jmp 0x6a360
leaq 0x13f8(%rsp), %rdi
callq 0x20600
movq %rax, 0x1f0(%rsp)
leaq 0x13e0(%rsp), %rdi
callq 0x20600
movq 0x1f0(%rsp), %rsi
addq %rax, %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x6be10
jmp 0x6a39c
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x1d8(%rsp)
callq 0x17530
movq 0x1d8(%rsp), %rdi
movq %rax, 0xa88(%rsp)
callq 0x175a0
movq %rax, 0xa80(%rsp)
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x1e0(%rsp)
callq 0x17530
movq 0x1e0(%rsp), %rdi
movq %rax, 0xa78(%rsp)
callq 0x175a0
movq %rax, 0xa70(%rsp)
leaq 0x13c8(%rsp), %rdi
callq 0x17530
movq %rax, 0xa68(%rsp)
movq 0xa88(%rsp), %rdi
movq 0xa80(%rsp), %rsi
movq 0xa78(%rsp), %rdx
movq 0xa70(%rsp), %rcx
movq 0xa68(%rsp), %r8
callq 0x6beb0
movq %rax, 0x1e8(%rsp)
jmp 0x6a44c
movq 0x1e8(%rsp), %rax
movq %rax, 0xa90(%rsp)
movq 0xa90(%rsp), %rax
movq %rax, 0x13c0(%rsp)
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x1d0(%rsp)
callq 0x17530
movq %rax, 0xa60(%rsp)
leaq 0x13c0(%rsp), %rdi
leaq 0xa60(%rsp), %rsi
callq 0x21660
movq 0x1d0(%rsp), %rdi
movq %rax, %rsi
callq 0x6be10
jmp 0x6a4b0
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x1c0(%rsp)
callq 0x17530
movq 0x1c0(%rsp), %rdi
movq %rax, 0xa50(%rsp)
callq 0x175a0
movq %rax, 0xa48(%rsp)
movq 0xa50(%rsp), %rdi
movq 0xa48(%rsp), %rsi
callq 0x6bf40
movq %rax, 0x1c8(%rsp)
jmp 0x6a501
movq 0x1c8(%rsp), %rax
movq %rax, 0xa58(%rsp)
movq 0xa58(%rsp), %rax
movq %rax, 0x13c0(%rsp)
leaq 0x13c8(%rsp), %rdi
callq 0x17530
movq %rax, 0xa40(%rsp)
movq 0x13c0(%rsp), %rax
movq %rax, 0xa38(%rsp)
movq 0xa40(%rsp), %rdi
movq 0xa38(%rsp), %rsi
callq 0x6bf90
movq %rax, 0x1b8(%rsp)
jmp 0x6a565
movq 0x1b8(%rsp), %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x6be10
jmp 0x6a57c
jmp 0x6b836
movq 0x1420(%rsp), %rdi
leaq 0x1228c(%rip), %rsi     # 0x7c81c
xorl %eax, %eax
movl %eax, %edx
callq 0x57d0
movq %rax, 0x1330(%rsp)
cmpq $-0x1, %rax
je 0x6a8e3
leaq 0x13c8(%rsp), %rdi
callq 0x202c0
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
incq %rdx
leaq 0xa18(%rsp), %rdi
movq $-0x1, %rcx
callq 0x5440
jmp 0x6a5e1
leaq 0x1378(%rsp), %rdi
movq %rdi, 0x1b0(%rsp)
leaq 0xa18(%rsp), %rsi
movq %rsi, 0x1a8(%rsp)
callq 0x5510
movq 0x1a8(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0xa00(%rsp), %rdi
callq 0x68110
jmp 0x6a642
leaq 0x13e0(%rsp), %rdi
leaq 0xa00(%rsp), %rsi
callq 0x6bc50
leaq 0xa00(%rsp), %rdi
callq 0x202e0
leaq 0x13e0(%rsp), %rdi
callq 0x20600
cmpq $0x0, %rax
jne 0x6a69c
movq 0x540(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x6bd20
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0x17530
movq 0x1a0(%rsp), %rdi
movq %rax, 0x9f8(%rsp)
callq 0x175a0
movq %rax, 0x9f0(%rsp)
movq 0x9f8(%rsp), %rdi
movq 0x9f0(%rsp), %rsi
callq 0x6bc90
jmp 0x6a6e5
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0x9d0(%rsp), %rdi
callq 0x5440
jmp 0x6a708
leaq 0x1398(%rsp), %rdi
movq %rdi, 0x198(%rsp)
leaq 0x9d0(%rsp), %rsi
movq %rsi, 0x190(%rsp)
callq 0x5510
movq 0x190(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x198(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0x9b8(%rsp), %rdi
callq 0x68110
jmp 0x6a769
leaq 0x13f8(%rsp), %rdi
leaq 0x9b8(%rsp), %rsi
callq 0x6bc50
leaq 0x9b8(%rsp), %rdi
callq 0x202e0
leaq 0x13f8(%rsp), %rdi
callq 0x20600
cmpq $0x0, %rax
jne 0x6a7c3
movq 0x540(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x6bd20
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x188(%rsp)
callq 0x17530
movq 0x188(%rsp), %rdi
movq %rax, 0x9b0(%rsp)
callq 0x175a0
movq %rax, 0x9a8(%rsp)
movq 0x9b0(%rsp), %rdi
movq 0x9a8(%rsp), %rsi
callq 0x6bc90
jmp 0x6a80c
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0x17530
movq 0x170(%rsp), %rdi
movq %rax, 0x9a0(%rsp)
callq 0x175a0
movq %rax, 0x998(%rsp)
leaq 0x13e0(%rsp), %rdi
movq %rdi, 0x178(%rsp)
callq 0x17530
movq 0x178(%rsp), %rdi
movq %rax, 0x990(%rsp)
callq 0x175a0
movq %rax, 0x988(%rsp)
leaq 0x13c8(%rsp), %rdi
callq 0x6bde0
movq %rax, 0x180(%rsp)
jmp 0x6a887
movq 0x180(%rsp), %rax
movq %rax, 0x980(%rsp)
movq 0x9a0(%rsp), %rdi
movq 0x998(%rsp), %rsi
movq 0x990(%rsp), %rdx
movq 0x988(%rsp), %rcx
movq 0x980(%rsp), %r8
callq 0x6bd50
movq %rax, 0x168(%rsp)
jmp 0x6a8ce
movq 0x168(%rsp), %rax
movq %rax, 0x978(%rsp)
jmp 0x6b834
movq 0x1420(%rsp), %rdi
leaq 0x11ad8(%rip), %rsi     # 0x7c3ca
xorl %eax, %eax
movl %eax, %edx
callq 0x57d0
movq %rax, 0x1330(%rsp)
cmpq $-0x1, %rax
je 0x6aaca
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0x958(%rsp), %rdi
callq 0x5440
jmp 0x6a930
leaq 0x1358(%rsp), %rdi
leaq 0x958(%rsp), %rsi
movq %rsi, 0x160(%rsp)
callq 0x5510
movq 0x160(%rsp), %rdi
callq 0x5250
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
incq %rdx
leaq 0x938(%rsp), %rdi
movq $-0x1, %rcx
callq 0x5440
jmp 0x6a983
leaq 0x1338(%rsp), %rdi
leaq 0x938(%rsp), %rsi
movq %rsi, 0x150(%rsp)
callq 0x5510
movq 0x150(%rsp), %rdi
callq 0x5250
leaq 0x1358(%rsp), %rdi
callq 0x3dcd0
movb %al, 0x15f(%rsp)
jmp 0x6a9c3
movb 0x15f(%rsp), %al
testb $0x1, %al
jne 0x6a9d3
jmp 0x6aa9e
leaq 0x1338(%rsp), %rdi
callq 0x3dcd0
movb %al, 0x14f(%rsp)
jmp 0x6a9e9
movb 0x14f(%rsp), %al
testb $0x1, %al
jne 0x6a9f9
jmp 0x6aa9e
leaq 0x900(%rsp), %rdi
leaq 0x1358(%rsp), %rsi
leaq 0x1338(%rsp), %rdx
callq 0x3e010
jmp 0x6aa18
movq 0x550(%rsp), %rsi
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0x920(%rsp), %rdi
leaq 0x900(%rsp), %rdx
callq 0x68110
jmp 0x6aa47
leaq 0x13c8(%rsp), %rdi
leaq 0x920(%rsp), %rsi
callq 0x6bc50
leaq 0x920(%rsp), %rdi
callq 0x202e0
leaq 0x900(%rsp), %rdi
callq 0x5250
jmp 0x6aac5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
leaq 0x900(%rsp), %rdi
callq 0x5250
jmp 0x6b8cf
movq 0x540(%rsp), %rdi
movq 0x1418(%rsp), %rsi
callq 0x47130
jmp 0x6aab5
movl $0x1, 0x1318(%rsp)
jmp 0x6b864
jmp 0x6b832
movq 0x1420(%rsp), %rdi
leaq 0x11d45(%rip), %rsi     # 0x7c81e
xorl %eax, %eax
movl %eax, %edx
callq 0x57d0
movq %rax, 0x1330(%rsp)
cmpq $0x0, %rax
jne 0x6acd5
movq 0x1420(%rsp), %rsi
movq 0x1330(%rsp), %rdx
incq %rdx
leaq 0x8e0(%rsp), %rdi
movq $-0x1, %rcx
callq 0x5440
jmp 0x6ab1d
leaq 0x1398(%rsp), %rdi
movq %rdi, 0x140(%rsp)
leaq 0x8e0(%rsp), %rsi
movq %rsi, 0x138(%rsp)
callq 0x5510
movq 0x138(%rsp), %rdi
callq 0x5250
movq 0x550(%rsp), %rsi
movq 0x140(%rsp), %rdx
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0x8c8(%rsp), %rdi
callq 0x68110
jmp 0x6ab7e
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x130(%rsp)
leaq 0x8c8(%rsp), %rsi
movq %rsi, 0x128(%rsp)
callq 0x6bc50
movq 0x128(%rsp), %rdi
callq 0x202e0
movq 0x130(%rsp), %rdi
callq 0x17530
movq 0x130(%rsp), %rdi
movq %rax, 0x8c0(%rsp)
callq 0x175a0
movq %rax, 0x8b8(%rsp)
movq 0x8c0(%rsp), %rdi
movq 0x8b8(%rsp), %rsi
callq 0x6bc90
jmp 0x6abf1
leaq 0x13c8(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0x202c0
movq 0x1418(%rsp), %rdi
callq 0x20a80
movq %rax, 0x8b0(%rsp)
movq 0x1418(%rsp), %rdi
callq 0x20ab0
movq %rax, 0x8a8(%rsp)
leaq 0x13f8(%rsp), %rdi
movq %rdi, 0x110(%rsp)
callq 0x17530
movq 0x110(%rsp), %rdi
movq %rax, 0x8a0(%rsp)
callq 0x175a0
movq 0x118(%rsp), %rdi
movq %rax, 0x898(%rsp)
callq 0x6bde0
movq %rax, 0x120(%rsp)
jmp 0x6ac79
movq 0x120(%rsp), %rax
movq %rax, 0x890(%rsp)
movq 0x8b0(%rsp), %rdi
movq 0x8a8(%rsp), %rsi
movq 0x8a0(%rsp), %rdx
movq 0x898(%rsp), %rcx
movq 0x890(%rsp), %r8
callq 0x6bfd0
movq %rax, 0x108(%rsp)
jmp 0x6acc0
movq 0x108(%rsp), %rax
movq %rax, 0x888(%rsp)
jmp 0x6b830
movq 0x550(%rsp), %rdi
addq $0x30, %rdi
movq 0x1420(%rsp), %rsi
callq 0x3c910
movq %rax, 0x100(%rsp)
jmp 0x6acf8
movq 0x550(%rsp), %rdi
movq 0x100(%rsp), %rax
movq %rax, 0x880(%rsp)
addq $0x30, %rdi
callq 0x3c940
movq %rax, 0x878(%rsp)
leaq 0x880(%rsp), %rdi
leaq 0x878(%rsp), %rsi
callq 0x3c8f0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xff(%rsp)
jne 0x6ad48
jmp 0x6ad69
movq 0x1410(%rsp), %rdi
leaq 0x11abd(%rip), %rsi     # 0x7c814
callq 0x5140
cmpl $0x0, %eax
sete %al
movb %al, 0xff(%rsp)
movb 0xff(%rsp), %al
testb $0x1, %al
jne 0x6ad79
jmp 0x6ae35
leaq 0x13c8(%rsp), %rdi
callq 0x202c0
movq 0x550(%rsp), %rdi
addq $0x30, %rdi
movq 0x1420(%rsp), %rsi
callq 0x6c300
movq %rax, 0xf0(%rsp)
jmp 0x6ada9
movq 0xf0(%rsp), %rdi
callq 0x5630
cmpq $0x0, %rax
jbe 0x6ae30
movq 0x550(%rsp), %rdi
addq $0x30, %rdi
movq 0x1420(%rsp), %rsi
callq 0x6c300
movq %rax, 0xe8(%rsp)
jmp 0x6addf
movq 0xe8(%rsp), %rdx
movq 0x550(%rsp), %rsi
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0x860(%rsp), %rdi
callq 0x68110
jmp 0x6ae0e
leaq 0x13c8(%rsp), %rdi
leaq 0x860(%rsp), %rsi
callq 0x6bc50
leaq 0x860(%rsp), %rdi
callq 0x202e0
jmp 0x6b82e
movq 0x550(%rsp), %rdi
movq 0x1420(%rsp), %rsi
callq 0x3c910
movq %rax, 0xe0(%rsp)
jmp 0x6ae54
movq 0x550(%rsp), %rdi
movq 0xe0(%rsp), %rax
movq %rax, 0x858(%rsp)
callq 0x3c940
movq %rax, 0x850(%rsp)
leaq 0x858(%rsp), %rdi
leaq 0x850(%rsp), %rsi
callq 0x3c8f0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xdf(%rsp)
jne 0x6aea0
jmp 0x6aec1
movq 0x1410(%rsp), %rdi
leaq 0x11960(%rip), %rsi     # 0x7c80f
callq 0x5140
cmpl $0x0, %eax
sete %al
movb %al, 0xdf(%rsp)
movb 0xdf(%rsp), %al
testb $0x1, %al
jne 0x6aed1
jmp 0x6af85
leaq 0x13c8(%rsp), %rdi
callq 0x202c0
movq 0x550(%rsp), %rdi
movq 0x1420(%rsp), %rsi
callq 0x6c300
movq %rax, 0xd0(%rsp)
jmp 0x6aefd
movq 0xd0(%rsp), %rdi
callq 0x5630
cmpq $0x0, %rax
jbe 0x6af80
movq 0x550(%rsp), %rdi
movq 0x1420(%rsp), %rsi
callq 0x6c300
movq %rax, 0xc8(%rsp)
jmp 0x6af2f
movq 0xc8(%rsp), %rdx
movq 0x550(%rsp), %rsi
movq 0x1418(%rsp), %rcx
movq 0x1410(%rsp), %r8
leaq 0x838(%rsp), %rdi
callq 0x68110
jmp 0x6af5e
leaq 0x13c8(%rsp), %rdi
leaq 0x838(%rsp), %rsi
callq 0x6bc50
leaq 0x838(%rsp), %rdi
callq 0x202e0
jmp 0x6b82c
leaq 0x13c8(%rsp), %rdi
callq 0x202c0
movq 0x1410(%rsp), %rdi
leaq 0x11868(%rip), %rsi     # 0x7c809
callq 0x5140
cmpl $0x0, %eax
jne 0x6b118
movq 0x1418(%rsp), %rdi
callq 0x20a80
movq %rax, 0x830(%rsp)
movq 0x830(%rsp), %rax
movq %rax, 0x13b8(%rsp)
movq 0x1418(%rsp), %rdi
callq 0x20ab0
movq %rax, 0x828(%rsp)
leaq 0x13b8(%rsp), %rdi
leaq 0x828(%rsp), %rsi
callq 0x6c060
testb $0x1, %al
jne 0x6b007
jmp 0x6b113
movq 0x1420(%rsp), %rax
movq %rax, 0xb8(%rsp)
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq (%rax), %rdi
callq 0x1f660
movq %rax, 0xc0(%rsp)
jmp 0x6b036
movq 0xc0(%rsp), %rsi
movq 0xb8(%rsp), %rdi
callq 0x5050
movl %eax, 0xb4(%rsp)
jmp 0x6b054
movl 0xb4(%rsp), %eax
cmpl $0x0, %eax
jne 0x6b081
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq %rax, %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x20660
jmp 0x6b07f
jmp 0x6b0ff
movq 0x1420(%rsp), %rax
movq %rax, 0xa0(%rsp)
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq (%rax), %rdi
callq 0x1f760
movq %rax, 0xa8(%rsp)
jmp 0x6b0b0
movq 0xa8(%rsp), %rsi
movq 0xa0(%rsp), %rdi
callq 0x5050
movl %eax, 0x9c(%rsp)
jmp 0x6b0ce
movl 0x9c(%rsp), %eax
cmpl $0x0, %eax
jne 0x6b0fb
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq %rax, %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x20660
jmp 0x6b0f9
jmp 0x6b0fd
jmp 0x6b101
jmp 0x6b0ff
jmp 0x6b101
leaq 0x13b8(%rsp), %rdi
callq 0x6c0b0
jmp 0x6afd4
jmp 0x6b82a
movq 0x1410(%rsp), %rdi
leaq 0x116ed(%rip), %rsi     # 0x7c814
callq 0x5140
cmpl $0x0, %eax
jne 0x6b48b
movq 0x1420(%rsp), %rax
movq %rax, 0x90(%rsp)
movl $0x10, %edi
movl $0x8, %esi
callq 0x7850
movl %eax, 0x98(%rsp)
jmp 0x6b15d
movl 0x98(%rsp), %edx
movq 0x90(%rsp), %rsi
leaq 0x698(%rsp), %rdi
callq 0x5670
jmp 0x6b17b
leaq 0x698(%rsp), %rdi
leaq 0x824(%rsp), %rsi
callq 0x7820
jmp 0x6b192
leaq 0x698(%rsp), %rdi
callq 0x52e0
movq 0x1420(%rsp), %rdi
callq 0x3dcd0
movb %al, 0x8f(%rsp)
jmp 0x6b1b5
movb 0x8f(%rsp), %al
andb $0x1, %al
movb %al, 0x697(%rsp)
movq 0x1418(%rsp), %rdi
callq 0x20a80
movq %rax, 0x688(%rsp)
movq 0x688(%rsp), %rax
movq %rax, 0x13b8(%rsp)
movq 0x1418(%rsp), %rdi
callq 0x20ab0
movq %rax, 0x680(%rsp)
leaq 0x13b8(%rsp), %rdi
leaq 0x680(%rsp), %rsi
callq 0x6c060
testb $0x1, %al
jne 0x6b21d
jmp 0x6b486
testb $0x1, 0x697(%rsp)
je 0x6b2b6
movl 0x824(%rsp), %eax
movl %eax, 0x7c(%rsp)
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq (%rax), %rdi
callq 0x1f6a0
movq %rax, 0x80(%rsp)
jmp 0x6b255
movl 0x7c(%rsp), %eax
movq 0x80(%rsp), %rcx
cmpl (%rcx), %eax
jne 0x6b2ac
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq %rax, %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x20660
jmp 0x6b284
jmp 0x6b2b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
leaq 0x698(%rsp), %rdi
callq 0x52e0
jmp 0x6b8cf
jmp 0x6b474
jmp 0x6b472
movq 0x1420(%rsp), %rax
movq %rax, 0x68(%rsp)
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq (%rax), %rdi
callq 0x1f620
movq %rax, 0x70(%rsp)
jmp 0x6b2df
movq 0x70(%rsp), %rsi
movq 0x68(%rsp), %rdi
callq 0x5050
movl %eax, 0x64(%rsp)
jmp 0x6b2f4
movl 0x64(%rsp), %eax
cmpl $0x0, %eax
jne 0x6b321
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq %rax, %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x20660
jmp 0x6b31c
jmp 0x6b470
movq 0x1420(%rsp), %rax
movq %rax, 0x50(%rsp)
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq (%rax), %rdi
callq 0x1f5a0
movq %rax, 0x58(%rsp)
jmp 0x6b34a
leaq 0x63f(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x5730
movq 0x48(%rsp), %rdx
leaq 0x11230(%rip), %rsi     # 0x7c598
leaq 0x640(%rsp), %rdi
callq 0x7900
jmp 0x6b377
movq 0x58(%rsp), %rsi
leaq 0x660(%rsp), %rdi
leaq 0x640(%rsp), %rdx
callq 0x3dee0
jmp 0x6b393
movq 0x50(%rsp), %rdi
leaq 0x660(%rsp), %rsi
callq 0x5050
movl %eax, 0x44(%rsp)
jmp 0x6b3ab
leaq 0x660(%rsp), %rdi
callq 0x5250
leaq 0x640(%rsp), %rdi
callq 0x5250
leaq 0x63f(%rsp), %rdi
callq 0x5480
movl 0x44(%rsp), %eax
cmpl $0x0, %eax
jne 0x6b46c
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq %rax, %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x20660
jmp 0x6b3fe
jmp 0x6b46e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
jmp 0x6b45a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
jmp 0x6b44d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
leaq 0x660(%rsp), %rdi
callq 0x5250
leaq 0x640(%rsp), %rdi
callq 0x5250
leaq 0x63f(%rsp), %rdi
callq 0x5480
jmp 0x6b8cf
jmp 0x6b474
jmp 0x6b470
jmp 0x6b472
jmp 0x6b474
leaq 0x13b8(%rsp), %rdi
callq 0x6c0b0
jmp 0x6b1ea
jmp 0x6b828
movq 0x1410(%rsp), %rdi
leaq 0x11375(%rip), %rsi     # 0x7c80f
callq 0x5140
cmpl $0x0, %eax
jne 0x6b824
movq 0x1418(%rsp), %rdi
callq 0x20a80
movq %rax, 0x630(%rsp)
movq 0x630(%rsp), %rax
movq %rax, 0x13b8(%rsp)
movq 0x1418(%rsp), %rdi
callq 0x20ab0
movq %rax, 0x628(%rsp)
leaq 0x13b8(%rsp), %rdi
leaq 0x628(%rsp), %rsi
callq 0x6c060
testb $0x1, %al
jne 0x6b500
jmp 0x6b822
movq 0x1420(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq (%rax), %rdi
callq 0x1f5c0
movq %rax, 0x38(%rsp)
jmp 0x6b529
leaq 0x5e7(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x5730
movq 0x28(%rsp), %rdx
leaq 0x11051(%rip), %rsi     # 0x7c598
leaq 0x5e8(%rsp), %rdi
callq 0x7900
jmp 0x6b556
movq 0x38(%rsp), %rsi
leaq 0x608(%rsp), %rdi
leaq 0x5e8(%rsp), %rdx
callq 0x3dee0
jmp 0x6b572
movq 0x30(%rsp), %rdi
leaq 0x608(%rsp), %rsi
callq 0x5050
movl %eax, 0x24(%rsp)
jmp 0x6b58a
leaq 0x608(%rsp), %rdi
callq 0x5250
leaq 0x5e8(%rsp), %rdi
callq 0x5250
leaq 0x5e7(%rsp), %rdi
callq 0x5480
movl 0x24(%rsp), %eax
cmpl $0x0, %eax
jne 0x6b64e
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq %rax, %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x20660
jmp 0x6b5dd
jmp 0x6b80e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
jmp 0x6b63c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
jmp 0x6b62f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
leaq 0x608(%rsp), %rdi
callq 0x5250
leaq 0x5e8(%rsp), %rdi
callq 0x5250
leaq 0x5e7(%rsp), %rdi
callq 0x5480
jmp 0x6b8cf
movq 0x1420(%rsp), %rsi
leaq 0x5c0(%rsp), %rdi
callq 0x3e230
jmp 0x6b665
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq (%rax), %rdi
callq 0x1f5d0
movq %rax, 0x18(%rsp)
jmp 0x6b681
movq 0x18(%rsp), %rsi
leaq 0x580(%rsp), %rdi
callq 0x3e230
jmp 0x6b695
leaq 0x55f(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x5730
movq 0x10(%rsp), %rdx
leaq 0x10ee5(%rip), %rsi     # 0x7c598
leaq 0x560(%rsp), %rdi
callq 0x7900
jmp 0x6b6c2
leaq 0x5a0(%rsp), %rdi
leaq 0x580(%rsp), %rsi
leaq 0x560(%rsp), %rdx
callq 0x3dee0
jmp 0x6b6e1
leaq 0x5c0(%rsp), %rdi
leaq 0x5a0(%rsp), %rsi
callq 0x5050
movl %eax, 0xc(%rsp)
jmp 0x6b6fc
leaq 0x5a0(%rsp), %rdi
callq 0x5250
leaq 0x560(%rsp), %rdi
callq 0x5250
leaq 0x55f(%rsp), %rdi
callq 0x5480
leaq 0x580(%rsp), %rdi
callq 0x5250
leaq 0x5c0(%rsp), %rdi
callq 0x5250
movl 0xc(%rsp), %eax
cmpl $0x0, %eax
jne 0x6b80a
leaq 0x13b8(%rsp), %rdi
callq 0x6c0a0
movq %rax, %rsi
leaq 0x13c8(%rsp), %rdi
callq 0x20660
jmp 0x6b769
jmp 0x6b80c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
jmp 0x6b7f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
jmp 0x6b7de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
jmp 0x6b7d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1320(%rsp)
movl %eax, 0x131c(%rsp)
leaq 0x5a0(%rsp), %rdi
callq 0x5250
leaq 0x560(%rsp), %rdi
callq 0x5250
leaq 0x55f(%rsp), %rdi
callq 0x5480
leaq 0x580(%rsp), %rdi
callq 0x5250
leaq 0x5c0(%rsp), %rdi
callq 0x5250
jmp 0x6b8cf
jmp 0x6b810
jmp 0x6b80e
jmp 0x6b810
leaq 0x13b8(%rsp), %rdi
callq 0x6c0b0
jmp 0x6b4cd
jmp 0x6b826
jmp 0x6b826
jmp 0x6b828
jmp 0x6b82a
jmp 0x6b82c
jmp 0x6b82e
jmp 0x6b830
jmp 0x6b832
jmp 0x6b834
jmp 0x6b836
jmp 0x6b838
jmp 0x6b83a
jmp 0x6b83c
jmp 0x6b83e
jmp 0x6b840
jmp 0x6b842
jmp 0x6b844
movq 0x540(%rsp), %rdi
leaq 0x13c8(%rsp), %rsi
callq 0x6bd20
movl $0x1, 0x1318(%rsp)
leaq 0x1338(%rsp), %rdi
callq 0x5250
leaq 0x1358(%rsp), %rdi
callq 0x5250
leaq 0x1378(%rsp), %rdi
callq 0x5250
leaq 0x1398(%rsp), %rdi
callq 0x5250
leaq 0x13c8(%rsp), %rdi
callq 0x202e0
leaq 0x13e0(%rsp), %rdi
callq 0x202e0
leaq 0x13f8(%rsp), %rdi
callq 0x202e0
movq 0x548(%rsp), %rax
addq $0x1438, %rsp           # imm = 0x1438
retq
leaq 0x1338(%rsp), %rdi
callq 0x5250
leaq 0x1358(%rsp), %rdi
callq 0x5250
leaq 0x1378(%rsp), %rdi
callq 0x5250
leaq 0x1398(%rsp), %rdi
callq 0x5250
leaq 0x13c8(%rsp), %rdi
callq 0x202e0
leaq 0x13e0(%rsp), %rdi
callq 0x202e0
leaq 0x13f8(%rsp), %rdi
callq 0x202e0
movq 0x1320(%rsp), %rdi
callq 0x5720
nopw (%rax,%rax)