// File: /workspace/github_cpp_makefile_star2_O2/atfrank[P]PCASA/src/casa.cpp
// Function: main
int main (int argc, char **argv){
  int i;
  unsigned int j;
  double cutoff;
  int beta;
  std::vector<std::string> pdbs;
  std::string currArg;
  std::string fparmfile;
  std::string freffile;
  std::string fsasa;
  std::vector<std::string> trajs;
  int start=0;
  int stop=std::numeric_limits<int>::max();
  int skip=0;
  bool startFlag=false;
  unsigned int itrj;
  std::ifstream trjin;
  Trajectory *ftrjin;
  unsigned int nframe;
  AnalyzeCasa *anin;
  std::string fchemshift;
  std::string identification;
  std::string errorType;
  bool header;
  bool predict;
  
  trajs.clear();
  ftrjin=NULL;
  nframe=0;
  anin=NULL;
  fparmfile="";
  freffile="";
  fsasa="";
  cutoff=10.0;
  beta=-1;
  header=false;
  predict=false;
  identification="test";

  for (i=1; i<argc; i++){
    currArg=argv[i];
    if (currArg.compare("-h") == 0 || currArg.compare("-help") == 0){
      usage();
    }
    else if (currArg.compare("-parmfile") == 0 || currArg.compare("-P") == 0 ){
      currArg=argv[++i];
      fparmfile=currArg;
    }      
    else if (currArg.compare("-reffile") == 0 || currArg.compare("-R") == 0 ){
      currArg=argv[++i];
      freffile=currArg;
    }      
    else if (currArg.compare("-sasafile") == 0 || currArg.compare("-S") == 0 ){
      currArg=argv[++i];
      fsasa=currArg;
    }      
    else if (currArg.compare("-header") == 0 || currArg.compare("-head") == 0 ){
      header=true;
    }
    else if (currArg.compare("-predict") == 0 || currArg.compare("-p") == 0 ){
      predict=true;
    }
    else if (currArg.compare("-cutoff") == 0 || currArg.compare("-c") == 0 ){
      currArg=argv[++i];
      cutoff=atof(currArg.c_str());
    }
    else if (currArg.compare("-beta") == 0 || currArg.compare("-b") == 0 ){
      currArg=argv[++i];
      std::stringstream(currArg) >> beta;
    }    
    else if (currArg.compare("-trj") == 0 || currArg.compare("-traj") == 0 || currArg.compare("-t") == 0){
      currArg=argv[++i];
      trajs.push_back(currArg);
    }
    else if (currArg.compare("-skip") == 0){
      currArg=argv[++i];
      std::stringstream(currArg) >> skip;
    }
    else if (currArg.compare("-start") == 0){
      currArg=argv[++i];
      std::stringstream(currArg) >> start;
      start--;
      startFlag=true;
    }
    else if (currArg.compare("-stop") == 0){
      currArg=argv[++i];
      std::stringstream(currArg) >> stop;
    }
    else if (currArg.compare("-identification") == 0 || currArg.compare("-i") == 0 ){
      currArg=argv[++i];
      identification=currArg;
    }
    else if (currArg.compare(0,1,"-") == 0){
      std::cerr << "Warning: Skipping unknown option \"" << currArg << "\"" << std::endl;
    }
    else{
      pdbs.push_back(currArg);
    }
  }

  if (pdbs.size() == 0){
    std::cerr << std::endl << "Error: Please provide an input file" << std::endl << std::endl;
    usage();
  }


  Molecule *mol=NULL;
  anin=new AnalyzeCasa;

  if (trajs.size() > 0){
    if (pdbs.size() > 1){
      std::cerr << std::endl << "Warning: Only the first PDB structure is used for trajectory analysis" << std::endl << std::endl;
    }
    /* Trajectory analysis */
    anin->addSel(":.CA");
    mol=Molecule::readPDB(pdbs.at(0));
    anin->preAnalysis(mol);
    
    /* Process trajectories */
    for (itrj=0; itrj< trajs.size(); itrj++){
      trjin.open(trajs.at(itrj).c_str(), std::ios::binary);
      if (trjin.is_open()){
        ftrjin=new Trajectory;
        ftrjin->setMolecule(mol);
        if (ftrjin->findFormat(trjin) == true){
          ftrjin->readHeader(trjin);
          if (skip > 0 && startFlag == false){
            start=skip;
          }
          /* Loop through desired frames */
          for (i=start; i< ftrjin->getNFrame() && i< stop; i=i+1+skip){
            if( ftrjin->readFrame(trjin, i) == false){
              std::cerr << "Warning: EOF found before the next frame could be read" << std::endl;
              break;
            }
            nframe++;
            anin->clearMol();
            anin->preAnalysis(mol);
            anin->runAnalysisCasa(nframe,identification,header,predict,fparmfile,freffile,fsasa,cutoff,beta);
          }
        }
        else{
          std::cerr << "Warning: Skipping unknown trajectory format \"";
          std::cerr << trajs.at(itrj) << "\"" << std::endl;
        }
        if (ftrjin != NULL){
          delete ftrjin;
        }
      }
      trjin.close();
    }
  }
  else { 
    Molecule *mol=NULL;
      for (j=0; j< pdbs.size(); j++){
        mol=Molecule::readPDB(pdbs.at(j));
        anin->addSel(":.CA");
        anin->preAnalysis(mol);
        anin->runAnalysisCasa(j+1,identification,header,predict,fparmfile,freffile,fsasa,cutoff,beta);
        delete mol;
      }
      if (anin != NULL){
        delete anin;
      }

      return 0;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x6a8, %rsp            # imm = 0x6A8
andq $0x0, 0x50(%rsp)
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x128(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
leaq 0x108(%rsp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
xorl %edx, %edx
movb %dl, (%rax)
movb %dl, (%rcx)
leaq 0xe8(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movb %dl, (%rax)
leaq 0xc8(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %dl, (%rax)
andq $0x0, 0x70(%rsp)
movaps %xmm0, 0x60(%rsp)
andl $0x0, 0x14(%rsp)
movl $0x7fffffff, 0x3c(%rsp) # imm = 0x7FFFFFFF
andl $0x0, 0x28(%rsp)
leaq 0x4a0(%rsp), %rdi
callq 0x4360
leaq 0x268(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
leaq 0xa8(%rsp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %cl, (%rax)
movb %cl, (%rdx)
leaq 0x248(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %cl, (%rax)
leaq 0x60(%rsp), %rdi
callq 0x58a4
leaq 0x2895e(%rip), %rsi     # 0x2d496
leaq 0xf8(%rsp), %rdi
callq 0x45c0
leaq 0x2894a(%rip), %rsi     # 0x2d496
leaq 0xd8(%rsp), %rdi
callq 0x45c0
leaq 0x28936(%rip), %rsi     # 0x2d496
leaq 0xb8(%rsp), %rdi
callq 0x45c0
orl $-0x1, 0x2c(%rsp)
leaq 0x285dd(%rip), %rsi     # 0x2d156
leaq 0x98(%rsp), %rdi
callq 0x45c0
movsd 0x2847a(%rip), %xmm0    # 0x2d008
movsd %xmm0, 0x78(%rsp)
pushq $0x1
popq %r15
movq $0x0, 0x80(%rsp)
leaq 0x118(%rsp), %r14
leaq 0x318(%rsp), %r13
movq $0x0, 0x18(%rsp)
movq $0x0, 0x20(%rsp)
cmpl %ebp, %r15d
jge 0x5027
movslq %r15d, %r12
movq (%rbx,%r12,8), %rsi
movq %r14, %rdi
callq 0x45c0
movq %r14, %rdi
leaq 0x28573(%rip), %rsi     # 0x2d15b
callq 0x4100
testl %eax, %eax
je 0x56b0
movq %r14, %rdi
leaq 0x2855f(%rip), %rsi     # 0x2d15e
callq 0x4100
testl %eax, %eax
je 0x56b0
movq %r14, %rdi
leaq 0x2854e(%rip), %rsi     # 0x2d164
callq 0x4100
testl %eax, %eax
je 0x4e31
movq %r14, %rdi
leaq 0x28541(%rip), %rsi     # 0x2d16e
callq 0x4100
testl %eax, %eax
je 0x4e31
movq %r14, %rdi
leaq 0x2852d(%rip), %rsi     # 0x2d171
callq 0x4100
testl %eax, %eax
je 0x4e50
movq %r14, %rdi
leaq 0x2851f(%rip), %rsi     # 0x2d17a
callq 0x4100
testl %eax, %eax
je 0x4e50
movq %r14, %rdi
leaq 0x2850b(%rip), %rsi     # 0x2d17d
callq 0x4100
testl %eax, %eax
je 0x4e6f
movq %r14, %rdi
leaq 0x284fe(%rip), %rsi     # 0x2d187
callq 0x4100
testl %eax, %eax
je 0x4e6f
movq %r14, %rdi
leaq 0x284ea(%rip), %rsi     # 0x2d18a
callq 0x4100
testl %eax, %eax
je 0x4e97
movq %r14, %rdi
leaq 0x284db(%rip), %rsi     # 0x2d192
callq 0x4100
testl %eax, %eax
je 0x4e97
movq %r14, %rdi
leaq 0x284ca(%rip), %rsi     # 0x2d198
callq 0x4100
testl %eax, %eax
je 0x4ea0
movq %r14, %rdi
leaq 0x284bc(%rip), %rsi     # 0x2d1a1
callq 0x4100
testl %eax, %eax
je 0x4ea0
movq %r14, %rdi
leaq 0x284a8(%rip), %rsi     # 0x2d1a4
callq 0x4100
testl %eax, %eax
je 0x4ea9
movq %r14, %rdi
leaq 0x28499(%rip), %rsi     # 0x2d1ac
callq 0x4100
testl %eax, %eax
je 0x4ea9
movq %r14, %rdi
leaq 0x28485(%rip), %rsi     # 0x2d1af
callq 0x4100
testl %eax, %eax
je 0x4ece
movq %r14, %rdi
leaq 0x28474(%rip), %rsi     # 0x2d1b5
callq 0x4100
testl %eax, %eax
je 0x4ece
movq %r14, %rdi
leaq 0x28460(%rip), %rsi     # 0x2d1b8
callq 0x4100
testl %eax, %eax
je 0x4f06
movq %r14, %rdi
leaq 0x2844e(%rip), %rsi     # 0x2d1bd
callq 0x4100
testl %eax, %eax
je 0x4f06
movq %r14, %rdi
leaq 0x2843d(%rip), %rsi     # 0x2d1c3
callq 0x4100
testl %eax, %eax
je 0x4f06
movq %r14, %rdi
leaq 0x28429(%rip), %rsi     # 0x2d1c6
callq 0x4100
testl %eax, %eax
je 0x4f25
movq %r14, %rdi
leaq 0x28418(%rip), %rsi     # 0x2d1cc
callq 0x4100
testl %eax, %eax
je 0x4f52
movq %r14, %rdi
leaq 0x28408(%rip), %rsi     # 0x2d1d3
callq 0x4100
testl %eax, %eax
je 0x4fbd
movq %r14, %rdi
leaq 0x283f7(%rip), %rsi     # 0x2d1d9
callq 0x4100
testl %eax, %eax
je 0x4f9b
movq %r14, %rdi
leaq 0x283f0(%rip), %rsi     # 0x2d1e9
callq 0x4100
testl %eax, %eax
je 0x4f9b
movq %r14, %rdi
xorl %esi, %esi
pushq $0x1
popq %rdx
leaq 0x295e5(%rip), %rcx     # 0x2e3fa
callq 0x43f0
testl %eax, %eax
je 0x4fed
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x58ac
jmp 0x4e8f
movq 0x8(%rbx,%r12,8), %rsi
movq %r14, %rdi
callq 0x45c0
leaq 0xf8(%rsp), %rdi
movq %r14, %rsi
callq 0x41a0
jmp 0x4e8c
movq 0x8(%rbx,%r12,8), %rsi
movq %r14, %rdi
callq 0x45c0
leaq 0xd8(%rsp), %rdi
movq %r14, %rsi
callq 0x41a0
jmp 0x4e8c
movq 0x8(%rbx,%r12,8), %rsi
movq %r14, %rdi
callq 0x45c0
leaq 0xb8(%rsp), %rdi
movq %r14, %rsi
callq 0x41a0
incl %r15d
incl %r15d
jmp 0x4bc6
movb $0x1, %al
movq %rax, 0x18(%rsp)
jmp 0x4e8f
movb $0x1, %al
movq %rax, 0x20(%rsp)
jmp 0x4e8f
movq 0x8(%rbx,%r12,8), %rsi
movq %r14, %rdi
callq 0x45c0
incl %r15d
movq 0x118(%rsp), %rdi
callq 0x43a0
movsd %xmm0, 0x78(%rsp)
jmp 0x4e8f
movq 0x8(%rbx,%r12,8), %rsi
movq %r14, %rdi
callq 0x45c0
movq %r13, %r12
movq %r13, %rdi
movq %r14, %rsi
pushq $0x18
popq %rdx
callq 0x44b0
movq %r12, %rdi
leaq 0x2c(%rsp), %rsi
callq 0x41d0
incl %r15d
movq %r12, %rdi
callq 0x4260
jmp 0x4e8f
movq 0x8(%rbx,%r12,8), %rsi
movq %r14, %rdi
callq 0x45c0
leaq 0x60(%rsp), %rdi
movq %r14, %rsi
callq 0x58ac
jmp 0x4e8c
movq 0x8(%rbx,%r12,8), %rsi
movq %r14, %rdi
callq 0x45c0
movq %r13, %r12
movq %r13, %rdi
movq %r14, %rsi
pushq $0x18
popq %rdx
callq 0x44b0
movq %r12, %rdi
leaq 0x28(%rsp), %rsi
callq 0x41d0
jmp 0x4ef9
movq 0x8(%rbx,%r12,8), %rsi
movq %r14, %rdi
callq 0x45c0
movq %r13, %r12
movq %r13, %rdi
movq %r14, %rsi
pushq $0x18
popq %rdx
callq 0x44b0
movq %r12, %rdi
leaq 0x14(%rsp), %rsi
callq 0x41d0
incl %r15d
movq %r12, %rdi
callq 0x4260
decl 0x14(%rsp)
movb $0x1, %al
movq %rax, 0x80(%rsp)
jmp 0x4e8f
movq 0x8(%rbx,%r12,8), %rsi
movq %r14, %rdi
callq 0x45c0
leaq 0x98(%rsp), %rdi
movq %r14, %rsi
callq 0x41a0
jmp 0x4e8c
movq 0x8(%rbx,%r12,8), %rsi
movq %r14, %rdi
callq 0x45c0
movq %r13, %r12
movq %r13, %rdi
movq %r14, %rsi
pushq $0x18
popq %rdx
callq 0x44b0
movq %r12, %rdi
leaq 0x3c(%rsp), %rsi
callq 0x41d0
jmp 0x4ef9
movq 0x3dfffc(%rip), %rdi    # 0x3e4ff0
leaq 0x281f1(%rip), %rsi     # 0x2d1ec
callq 0x4300
movq %rax, %rdi
movq %r14, %rsi
callq 0x42c0
movq %rax, %rdi
leaq 0x29403(%rip), %rsi     # 0x2e418
callq 0x4300
movq %rax, %rdi
callq 0x4180
jmp 0x4e8f
movq 0x48(%rsp), %rax
cmpq 0x40(%rsp), %rax
je 0x5685
movl $0xd0, %edi
callq 0x4320
movq %rax, 0x8(%rsp)
leaq 0x281e6(%rip), %rsi     # 0x2d233
leaq 0x198(%rsp), %rdi
leaq 0x318(%rsp), %rdx
callq 0x58d8
leaq 0x198(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0x608a
leaq 0x198(%rsp), %rdi
callq 0x4170
movq 0x68(%rsp), %rax
movzbl 0x18(%rsp), %ebp
movzbl 0x20(%rsp), %ecx
cmpq 0x60(%rsp), %rax
je 0x5433
movl %ecx, 0x18(%rsp)
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
cmpq $0x21, %rax
jb 0x50da
movq 0x3dff3a(%rip), %rdi    # 0x3e4ff0
callq 0x4180
leaq 0x28173(%rip), %rsi     # 0x2d235
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
movq %rax, %rdi
callq 0x4180
leaq 0x2819a(%rip), %rsi     # 0x2d27b
leaq 0x318(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x58d8
leaq 0x318(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0x622c
leaq 0x318(%rsp), %rdi
callq 0x4170
leaq 0x40(%rsp), %rdi
xorl %esi, %esi
callq 0x5914
leaq 0x178(%rsp), %rdi
movq %rax, %rsi
callq 0x4430
leaq 0x28361(%rip), %rsi     # 0x2d496
leaq 0x158(%rsp), %rdi
leaq 0x318(%rsp), %rdx
callq 0x58d8
leaq 0x178(%rsp), %rdi
leaq 0x158(%rsp), %rdx
pushq $0x1
popq %rcx
xorl %esi, %esi
callq 0x19ff4
movq %rax, %r14
leaq 0x158(%rsp), %rdi
callq 0x4170
leaq 0x178(%rsp), %rdi
callq 0x4170
movq 0x8(%rsp), %rdi
movq %r14, 0x30(%rsp)
movq %r14, %rsi
callq 0x8d60
xorl %esi, %esi
leaq 0x2f8(%rsp), %r12
leaq 0x2d8(%rsp), %r14
leaq 0x2b8(%rsp), %rax
andl $0x1, %ebp
movl %ebp, 0x20(%rsp)
movq %rax, %rbp
andl $0x1, 0x18(%rsp)
xorl %r15d, %r15d
movl %esi, %esi
movq 0x68(%rsp), %rax
subq 0x60(%rsp), %rax
sarq $0x5, %rax
cmpq %rsi, %rax
jbe 0x55f5
leaq 0x60(%rsp), %rdi
movq %rsi, 0x88(%rsp)
callq 0x5914
movq (%rax), %rsi
leaq 0x4a0(%rsp), %rdi
pushq $0x4
popq %rdx
callq 0x41e0
leaq 0x518(%rsp), %rdi
callq 0x40b0
testb %al, %al
je 0x5417
movl $0x198, %edi            # imm = 0x198
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
callq 0x2974c
movq %r13, %rdi
movq 0x30(%rsp), %rsi
callq 0x2b584
movq %r13, %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x29a00
testb %al, %al
je 0x527e
movq %r13, %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x29b08
testb $0x1, 0x80(%rsp)
sete %al
movl 0x28(%rsp), %ebx
testl %ebx, %ebx
setg %cl
testb %al, %cl
movq %r13, 0x90(%rsp)
je 0x52ce
movl %ebx, 0x14(%rsp)
jmp 0x52d2
movq 0x3dfd6b(%rip), %rdi    # 0x3e4ff0
leaq 0x2802b(%rip), %rsi     # 0x2d2b7
callq 0x4300
leaq 0x60(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0x5914
movq 0x3dfd46(%rip), %rdi    # 0x3e4ff0
movq %rax, %rsi
callq 0x42c0
movq %rax, %rdi
leaq 0x2915c(%rip), %rsi     # 0x2e418
callq 0x4300
movq %rax, %rdi
callq 0x4180
jmp 0x5402
movl 0x14(%rsp), %ebx
movq %r13, %rdi
callq 0x2a4f2
cmpl %eax, %ebx
jge 0x5402
cmpl 0x3c(%rsp), %ebx
jge 0x5402
movq %r13, %rdi
leaq 0x4a0(%rsp), %rsi
movl %ebx, %edx
callq 0x2a7c4
testb %al, %al
je 0x53e7
movq 0x8(%rsp), %rdi
callq 0x6290
movq 0x8(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0x8d60
leaq 0x138(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x4430
movq %r12, %rdi
leaq 0xf8(%rsp), %rsi
callq 0x4430
movq %r14, %rdi
leaq 0xd8(%rsp), %rsi
callq 0x4430
movq %rbp, %rdi
leaq 0xb8(%rsp), %rsi
callq 0x4430
incl %r15d
movl 0x2c(%rsp), %eax
subq $0x8, %rsp
movq 0x10(%rsp), %rdi
movl %r15d, %r13d
movl %r15d, %esi
leaq 0x140(%rsp), %rdx
movl 0x28(%rsp), %ecx
movl 0x20(%rsp), %r8d
movq %r12, %r15
movq %r12, %r9
movsd 0x80(%rsp), %xmm0
pushq %rax
pushq %rbp
pushq %r14
callq 0xafc4
addq $0x20, %rsp
movq %rbp, %rdi
callq 0x4170
movq %r14, %rdi
callq 0x4170
movq %r15, %rdi
callq 0x4170
leaq 0x138(%rsp), %rdi
callq 0x4170
movl 0x28(%rsp), %eax
addl %eax, %ebx
incl %ebx
movq %r15, %r12
movl %r13d, %r15d
movq 0x90(%rsp), %r13
jmp 0x52d2
movq 0x3dfc02(%rip), %rdi    # 0x3e4ff0
leaq 0x27e8b(%rip), %rsi     # 0x2d280
callq 0x4300
movq %rax, %rdi
callq 0x4180
movq %r13, %rdi
callq 0x5936
movl $0x198, %esi            # imm = 0x198
movq %r13, %rdi
callq 0x4330
leaq 0x4a0(%rsp), %rdi
callq 0x4090
movq 0x88(%rsp), %rsi
incl %esi
jmp 0x51bf
pushq $0x1
popq %rax
leaq 0x298(%rsp), %r13
andl $0x1, %ebp
movl %ebp, 0x20(%rsp)
andl $0x1, %ecx
movl %ecx, 0x18(%rsp)
movq %rax, 0x30(%rsp)
leal -0x1(%rax), %esi
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
sarq $0x5, %rax
cmpq %rsi, %rax
jbe 0x55ea
leaq 0x40(%rsp), %rdi
callq 0x5914
leaq 0x318(%rsp), %r15
leaq 0x218(%rsp), %rdi
movq %rax, %rsi
callq 0x4430
movq %r13, %rdi
leaq 0x27fff(%rip), %rsi     # 0x2d496
movq %r15, %r14
movq %r15, %rdx
callq 0x58d8
leaq 0x218(%rsp), %rbp
movq %rbp, %rdi
xorl %esi, %esi
movq %r13, %rdx
pushq $0x1
popq %rcx
callq 0x19ff4
movq %rax, %r12
movq %r13, %r15
movq %r13, %rdi
callq 0x4170
movq %rbp, %rdi
callq 0x4170
movq %r14, %rdi
leaq 0x27da1(%rip), %rsi     # 0x2d27b
leaq 0x7(%rsp), %rdx
callq 0x58d8
movq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x622c
movq %r14, %rdi
callq 0x4170
movq 0x8(%rsp), %rdi
movq %r12, %rsi
callq 0x8d60
leaq 0x1f8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x4430
leaq 0x1d8(%rsp), %rdi
leaq 0xf8(%rsp), %rsi
callq 0x4430
leaq 0x1b8(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x4430
movq %r15, %r13
leaq 0x278(%rsp), %rbx
movq %rbx, %rdi
leaq 0xb8(%rsp), %rsi
callq 0x4430
movl 0x2c(%rsp), %eax
subq $0x8, %rsp
movq 0x10(%rsp), %rdi
movq 0x38(%rsp), %rsi
leaq 0x200(%rsp), %r14
movq %r14, %rdx
movl 0x28(%rsp), %ecx
movl 0x20(%rsp), %r8d
leaq 0x1e0(%rsp), %rbp
movq %rbp, %r9
movsd 0x80(%rsp), %xmm0
pushq %rax
pushq %rbx
leaq 0x1d0(%rsp), %r15
pushq %r15
callq 0xafc4
addq $0x20, %rsp
movq %rbx, %rdi
callq 0x4170
movq %r15, %rdi
callq 0x4170
movq %rbp, %rdi
callq 0x4170
movq %r14, %rdi
callq 0x4170
testq %r12, %r12
je 0x55de
movq (%r12), %rax
movq %r12, %rdi
callq *0x8(%rax)
movq 0x30(%rsp), %rax
incl %eax
jmp 0x544c
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x238(%rsp), %rdi
callq 0x4170
leaq 0x98(%rsp), %rdi
callq 0x4170
leaq 0x258(%rsp), %rdi
callq 0x4170
leaq 0x4a0(%rsp), %rdi
callq 0x40e0
leaq 0x60(%rsp), %rdi
callq 0x59a0
leaq 0xb8(%rsp), %rdi
callq 0x4170
leaq 0xd8(%rsp), %rdi
callq 0x4170
leaq 0xf8(%rsp), %rdi
callq 0x4170
leaq 0x118(%rsp), %rdi
callq 0x4170
leaq 0x40(%rsp), %rdi
callq 0x59a0
xorl %eax, %eax
addq $0x6a8, %rsp            # imm = 0x6A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x3df964(%rip), %rdi    # 0x3e4ff0
callq 0x4180
leaq 0x27b77(%rip), %rsi     # 0x2d20f
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
movq %rax, %rdi
callq 0x4180
callq 0x493c
jmp 0x56cf
jmp 0x581c
jmp 0x581c
jmp 0x56cf
jmp 0x56cf
jmp 0x581c
jmp 0x581c
movq %rax, %r15
leaq 0x318(%rsp), %rdi
callq 0x4260
jmp 0x581f
movq %rax, %r15
leaq 0x158(%rsp), %rdi
callq 0x4170
jmp 0x56f9
movq %rax, %r15
leaq 0x178(%rsp), %rdi
jmp 0x5811
jmp 0x5758
jmp 0x581c
movq 0x8(%rsp), %rbx
movq %rax, %r15
leaq 0x198(%rsp), %rdi
callq 0x4170
jmp 0x572c
movq 0x8(%rsp), %rbx
movq %rax, %r15
movl $0xd0, %esi
movq %rbx, %rdi
jmp 0x574e
movq %rax, %r15
jmp 0x5853
jmp 0x581c
movq %rax, %r15
movl $0x198, %esi            # imm = 0x198
movq %r13, %rdi
callq 0x4330
jmp 0x581f
movq %rax, %r15
leaq 0x318(%rsp), %rdi
jmp 0x5811
movq %rax, %r15
leaq 0x298(%rsp), %rdi
callq 0x4170
jmp 0x57c2
movq %rax, %r15
leaq 0x278(%rsp), %rdi
callq 0x4170
jmp 0x578f
movq %rax, %r15
leaq 0x1b8(%rsp), %rdi
callq 0x4170
jmp 0x57a6
movq %rax, %r15
jmp 0x57b3
movq %rax, %r15
leaq 0x1d8(%rsp), %rdi
callq 0x4170
leaq 0x1f8(%rsp), %rdi
jmp 0x5811
jmp 0x581c
movq %rax, %r15
leaq 0x218(%rsp), %rdi
jmp 0x5811
jmp 0x581c
jmp 0x581c
movq %rax, %r15
jmp 0x57ef
movq %rax, %r15
jmp 0x57fc
movq %rax, %r15
jmp 0x5809
movq %rax, %r15
leaq 0x2b8(%rsp), %rdi
callq 0x4170
leaq 0x2d8(%rsp), %rdi
callq 0x4170
leaq 0x2f8(%rsp), %rdi
callq 0x4170
leaq 0x138(%rsp), %rdi
callq 0x4170
jmp 0x581f
jmp 0x581c
jmp 0x581c
movq %rax, %r15
leaq 0x238(%rsp), %rdi
callq 0x4170
leaq 0x98(%rsp), %rdi
callq 0x4170
leaq 0x258(%rsp), %rdi
callq 0x4170
leaq 0x4a0(%rsp), %rdi
callq 0x40e0
leaq 0x60(%rsp), %rdi
callq 0x59a0
leaq 0xb8(%rsp), %rdi
callq 0x4170
leaq 0xd8(%rsp), %rdi
callq 0x4170
leaq 0xf8(%rsp), %rdi
callq 0x4170
leaq 0x118(%rsp), %rdi
callq 0x4170
leaq 0x40(%rsp), %rdi
callq 0x59a0
movq %r15, %rdi
callq 0x4560
nop