// File: /workspace/github_cpp_makefile_star2_O2/atfrank[P]PCASA/lib/Trajectory.cpp
// Function: Trajectory::readFrame(std::basic_ifstream<char, std::char_traits<char>>&, unsigned int)
bool Trajectory::readFrame(std::ifstream &trjin, unsigned int frame){
  double *dbuffer; //Needed for crystal!
  float *xbuffer;
  float *ybuffer;
  float *zbuffer;
  int length;
  int i;
  unsigned int j;
  unsigned int maxSeekFrame;

  if (this->getFrameSize() == 0){
    this->setFrameSize((this->getNAtom()*sizeof(float)+sizeof(int)*2)*3);
    if (qcrystal > 0){
      this->setFrameSize(this->getFrameSize()+sizeof(double)*6+2*sizeof(int));
    }
  }

  maxSeekFrame=(std::numeric_limits<int>::max()/this->getFrameSize())-10; //10 buffer

  //Assume header has been read
  //Seek frames
  if (frame-this->getLastFrame() > maxSeekFrame){
    //Seek frame by frame to be safe
    for (j=0; j< frame-this->getLastFrame(); j++){
      trjin.seekg(this->getFrameSize(), std::ios::cur);
    }
  }
  else{
    trjin.seekg((frame-this->getLastFrame())*this->getFrameSize(), std::ios::cur);
  }
  this->setLastFrame(frame+1); 
  //The "+1" positions the pointer at the end of this frame after it has been read


  if (trjin.tellg() == this->getLastPos()){
    //End-of-file, note that trjin.good()/trjin.eof() wouldn't work!
    return false;
  }

  this->iframe++;
  if (this->getShow() == true || this->getScan() == true){
    std::cout << std::fixed;
    std::cout << "Frame : " << this->iframe << " ( " << frame+1 << " / " << getNFrame() << " ) " << std::endl; 
  }

  dbuffer=NULL;
  xbuffer=NULL;
  ybuffer=NULL;
  zbuffer=NULL;

  if (qcrystal > 0){
    dbuffer=readFortran(trjin, dbuffer, length);

    if (this->getScan() == false){ //
      pb.resize(6);
      for (j=0; j< pb.size(); j++){
        pb.at(j)=dbuffer[j];
      }

      //Box dimensions
      pbx=sqrt(pb.at(0)*pb.at(0)+pb.at(1)*pb.at(1)+pb.at(3)*pb.at(3));
      pby=sqrt(pb.at(1)*pb.at(1)+pb.at(2)*pb.at(2)+pb.at(4)*pb.at(4));
      pbz=sqrt(pb.at(3)*pb.at(3)+pb.at(4)*pb.at(4)+pb.at(5)*pb.at(5));

      //Box angles
      pbalpha=acos(pb.at(4)*(pb.at(2)+pb.at(5))+pb.at(1)*pb.at(3)/(pby*pbz))*180.0/PI;
      pbbeta=acos(pb.at(3)*(pb.at(0)+pb.at(5))+pb.at(1)*pb.at(4)/(pbz*pbx))*180.0/PI;
      pbgamma=acos(pb.at(1)*(pb.at(0)+pb.at(2))+pb.at(3)*pb.at(4)/(pbx*pby))*180.0/PI;

      if (this->getShow() == true){ 
        std::cout << "Periodic Box :  ";
        std::cout << pbx << " x " << pby << " x " << pbz << " ";
        std::cout << "( " << pbalpha << " x " << pbbeta << " x " << pbgamma << " )" << std::endl;
      }
    }

    if (dbuffer != NULL){
      delete dbuffer;
    }
  }

  //Coordinates
  xbuffer=readFortran(trjin, xbuffer, length);
  ybuffer=readFortran(trjin, ybuffer, length);
  zbuffer=readFortran(trjin, zbuffer, length);

  if (this->getScan() == false){
    if (x.size() == 0 || y.size() == 0 || z.size() == 0){
      x.resize(natom);
      y.resize(natom);
      z.resize(natom);
    }
    if (natom != static_cast<int>(x.size()) || 
      natom != static_cast<int>(y.size()) || 
      natom != static_cast<int>(z.size())){
        std::cerr << "Error: The number of atoms \"natom\" does not match the number of atoms in each frame" << std::endl;
    }

    if (nfixed > 0){
      for (i=0; i< nfixed; i++){
        //Do something
      }
      std::cerr << "Warning: Fixed atoms has yet to be implemented"<< std::endl;
    }
    else{
      if (mol != NULL && length/sizeof(float) != mol->getNAtom()){
        std::cerr << "Error: The natom mismatch!" << std::endl;
      }
      for (i=0; i< natom; i++){
        if (mol == NULL){
          x.at(i)=xbuffer[i];
          y.at(i)=ybuffer[i];
          z.at(i)=zbuffer[i];
        }
        else{
          mol->getAtom(i)->setCoor(Coor(static_cast<double>(xbuffer[i]), static_cast<double>(ybuffer[i]), static_cast<double>(zbuffer[i])));
        }
  
        if (this->getShow() == true){
          std::cout << std::fixed;
          std::cout << "coor" << std::setw(10) << std::right << i+1;
          std::cout << std::setw(14) << xbuffer[i] << " ";
          std::cout << std::setw(14) << ybuffer[i] << " ";
          std::cout << std::setw(14) << zbuffer[i] << std::endl;
        } 
      }
    }
  }

  if (xbuffer != NULL){
    delete xbuffer;
  }
  if (ybuffer != NULL){
    delete ybuffer;
  }
  if (zbuffer != NULL){
    delete zbuffer;
  }

  return true; 
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movl %edx, %ebp
movq %rsi, %r15
movq %rdi, %rbx
movl 0x3c(%rdi), %ecx
testl %ecx, %ecx
jne 0x2a7ff
imull $0xc, 0xc8(%rbx), %eax
leal 0x18(%rax), %ecx
movl %ecx, 0x3c(%rbx)
cmpl $0x0, 0x9c(%rbx)
jle 0x2a7ff
addl $0x50, %eax
movl %eax, 0x3c(%rbx)
movl %eax, %ecx
xorl %r12d, %r12d
movl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
xorl %edx, %edx
divl %ecx
addl $-0xa, %eax
movl 0x40(%rbx), %edx
movl %ebp, %esi
subl %edx, %esi
cmpl %eax, %esi
jbe 0x2a83c
pushq $0x1
popq %r14
movl %ebp, %eax
subl %edx, %eax
cmpl %eax, %r12d
jae 0x2a84a
movl 0x3c(%rbx), %esi
movq %r15, %rdi
movl %r14d, %edx
callq 0x4420
incl %r12d
movl 0x40(%rbx), %edx
jmp 0x2a81d
imull %ecx, %esi
pushq $0x1
popq %rdx
movq %r15, %rdi
callq 0x4420
incl %ebp
movl %ebp, 0x40(%rbx)
movq %r15, %rdi
callq 0x4530
movq %rax, %r14
movq 0x48(%rbx), %r12
cmpq %r12, %rax
je 0x2b030
movq %r12, 0x20(%rsp)
movq %r14, 0x28(%rsp)
incl 0x34(%rbx)
cmpb $0x0, 0x30(%rbx)
jne 0x2a880
cmpb $0x1, 0x31(%rbx)
jne 0x2a8ff
movq 0x3ba741(%rip), %rdi    # 0x3e4fc8
movq (%rdi), %rax
movq -0x18(%rax), %rax
movl $0xfffffefb, %ecx       # imm = 0xFFFFFEFB
andl 0x18(%rdi,%rax), %ecx
orl $0x4, %ecx
movl %ecx, 0x18(%rdi,%rax)
leaq 0x47d8(%rip), %rsi      # 0x2f07d
callq 0x4300
movl 0x34(%rbx), %esi
movq %rax, %rdi
callq 0x4200
leaq 0x47ca(%rip), %rsi      # 0x2f086
movq %rax, %rdi
callq 0x4300
movl %ebp, %esi
movq %rax, %rdi
callq 0x4200
leaq 0x47b5(%rip), %rsi      # 0x2f08a
movq %rax, %rdi
callq 0x4300
movl 0x78(%rbx), %esi
movq %rax, %rdi
callq 0x4520
leaq 0x479f(%rip), %rsi      # 0x2f08e
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
cmpl $0x0, 0x9c(%rbx)
jle 0x2aeac
xorl %r14d, %r14d
leaq 0x10(%rsp), %rcx
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2b8ac
movq %rax, %r12
cmpb $0x0, 0x31(%rbx)
jne 0x2ae9c
leaq 0xe8(%rbx), %r13
pushq $0x6
popq %rsi
movq %r13, %rdi
callq 0xca36
movl %r14d, %r14d
movq 0xf0(%rbx), %rax
subq 0xe8(%rbx), %rax
sarq $0x3, %rax
cmpq %r14, %rax
jbe 0x2a97e
movsd (%r12,%r14,8), %xmm0
movsd %xmm0, (%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rsp), %xmm0
movsd %xmm0, (%rax)
incl %r14d
jmp 0x2a940
movq %r13, %rdi
xorl %esi, %esi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
movq %r13, %rdi
xorl %esi, %esi
callq 0xc916
movsd (%rsp), %xmm0
mulsd (%rax), %xmm0
movsd %xmm0, (%rsp)
pushq $0x1
popq %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd 0x8(%rsp), %xmm0
mulsd (%rax), %xmm0
addsd (%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
pushq $0x3
popq %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rsp), %xmm1
mulsd (%rax), %xmm1
addsd 0x8(%rsp), %xmm1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
movapd %xmm1, %xmm0
jb 0x2aa28
sqrtsd %xmm0, %xmm0
jmp 0x2aa2d
callq 0x4280
movsd %xmm0, 0x100(%rbx)
pushq $0x1
popq %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rsp), %xmm0
mulsd (%rax), %xmm0
movsd %xmm0, (%rsp)
pushq $0x2
popq %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd 0x8(%rsp), %xmm0
mulsd (%rax), %xmm0
addsd (%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
pushq $0x4
popq %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rsp), %xmm0
mulsd (%rax), %xmm0
addsd 0x8(%rsp), %xmm0
ucomisd 0x2997(%rip), %xmm0     # 0x2d470
jb 0x2aae1
sqrtsd %xmm0, %xmm0
jmp 0x2aae6
callq 0x4280
movsd %xmm0, 0x108(%rbx)
pushq $0x3
popq %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rsp), %xmm0
mulsd (%rax), %xmm0
movsd %xmm0, (%rsp)
pushq $0x4
popq %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd 0x8(%rsp), %xmm0
mulsd (%rax), %xmm0
addsd (%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
pushq $0x5
popq %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rsp), %xmm1
mulsd (%rax), %xmm1
addsd 0x8(%rsp), %xmm1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
movapd %xmm1, %xmm0
jb 0x2ab9e
sqrtsd %xmm0, %xmm0
jmp 0x2aba3
callq 0x4280
movsd %xmm0, 0x110(%rbx)
pushq $0x4
popq %rsi
movq %r13, %rdi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
pushq $0x2
popq %rsi
movq %r13, %rdi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
pushq $0x5
popq %rsi
movq %r13, %rdi
callq 0xc916
movsd (%rsp), %xmm0
addsd (%rax), %xmm0
mulsd 0x8(%rsp), %xmm0
movsd %xmm0, (%rsp)
pushq $0x1
popq %rbp
movq %r13, %rdi
movq %rbp, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
pushq $0x3
popq %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd 0x8(%rsp), %xmm1
mulsd (%rax), %xmm1
movsd 0x108(%rbx), %xmm0
mulsd 0x110(%rbx), %xmm0
divsd %xmm0, %xmm1
addsd (%rsp), %xmm1
movapd %xmm1, %xmm0
callq 0x42f0
mulsd 0x27fa(%rip), %xmm0     # 0x2d448
divsd 0x3ba70a(%rip), %xmm0   # 0x3e5360
movsd %xmm0, 0x118(%rbx)
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq %r13, %rdi
xorl %esi, %esi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
movq %r13, %rdi
pushq $0x5
popq %rsi
callq 0xc916
movsd (%rsp), %xmm0
addsd (%rax), %xmm0
mulsd 0x8(%rsp), %xmm0
movsd %xmm0, (%rsp)
movq %r13, %rdi
movq %rbp, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq %r13, %rdi
pushq $0x4
popq %rsi
callq 0xc916
movsd 0x8(%rsp), %xmm1
mulsd (%rax), %xmm1
movsd 0x110(%rbx), %xmm0
mulsd 0x100(%rbx), %xmm0
divsd %xmm0, %xmm1
addsd (%rsp), %xmm1
movapd %xmm1, %xmm0
callq 0x42f0
mulsd 0x274f(%rip), %xmm0     # 0x2d448
divsd 0x3ba65f(%rip), %xmm0   # 0x3e5360
movsd %xmm0, 0x120(%rbx)
movq %r13, %rdi
movq %rbp, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq %r13, %rdi
xorl %esi, %esi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, (%rsp)
movq %r13, %rdi
pushq $0x2
popq %rsi
callq 0xc916
movsd (%rsp), %xmm0
addsd (%rax), %xmm0
mulsd 0x8(%rsp), %xmm0
movsd %xmm0, (%rsp)
movq %r13, %rdi
movq %r14, %rsi
callq 0xc916
movsd (%rax), %xmm0
movsd %xmm0, 0x8(%rsp)
movq %r13, %rdi
pushq $0x4
popq %rsi
callq 0xc916
movsd 0x8(%rsp), %xmm1
mulsd (%rax), %xmm1
movsd 0x100(%rbx), %xmm0
mulsd 0x108(%rbx), %xmm0
divsd %xmm0, %xmm1
addsd (%rsp), %xmm1
movapd %xmm1, %xmm0
callq 0x42f0
mulsd 0x26a4(%rip), %xmm0     # 0x2d448
divsd 0x3ba5b4(%rip), %xmm0   # 0x3e5360
movsd %xmm0, 0x128(%rbx)
cmpb $0x1, 0x30(%rbx)
jne 0x2ae9c
movq 0x3ba203(%rip), %r13    # 0x3e4fc8
leaq 0x42c6(%rip), %rsi      # 0x2f092
movq %r13, %rdi
callq 0x4300
movsd 0x100(%rbx), %xmm0
movq %r13, %rdi
callq 0x44d0
leaq 0x42b8(%rip), %r14      # 0x2f0a3
movq %rax, %rdi
movq %r14, %rsi
callq 0x4300
movsd 0x108(%rbx), %xmm0
movq %rax, %rdi
callq 0x44d0
movq %rax, %rdi
movq %r14, %rsi
callq 0x4300
movsd 0x110(%rbx), %xmm0
movq %rax, %rdi
callq 0x44d0
leaq 0x379c(%rip), %rsi      # 0x2e5c4
movq %rax, %rdi
callq 0x4300
leaq 0x4250(%rip), %rsi      # 0x2f087
movq %r13, %rdi
callq 0x4300
movsd 0x118(%rbx), %xmm0
movq %rax, %rdi
callq 0x44d0
movq %rax, %rdi
movq %r14, %rsi
callq 0x4300
movsd 0x120(%rbx), %xmm0
movq %rax, %rdi
callq 0x44d0
movq %rax, %rdi
movq %r14, %rsi
callq 0x4300
movsd 0x128(%rbx), %xmm0
movq %rax, %rdi
callq 0x44d0
leaq 0x34e9(%rip), %rsi      # 0x2e375
movq %rax, %rdi
callq 0x4300
movq %rax, %rdi
callq 0x4180
testq %r12, %r12
je 0x2aeac
pushq $0x8
popq %rsi
movq %r12, %rdi
callq 0x4330
leaq 0x10(%rsp), %r14
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
movq %r14, %rcx
callq 0x2b94e
movq %rax, %r13
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
movq %r14, %rcx
callq 0x2b94e
movq %rax, %r12
movq %rbx, %rdi
movq %r15, %rsi
xorl %edx, %edx
movq %r14, %rcx
callq 0x2b94e
movq %rax, (%rsp)
cmpb $0x0, 0x31(%rbx)
jne 0x2aff5
leaq 0x130(%rbx), %rax
movq %rax, 0x18(%rsp)
movq 0x130(%rbx), %rcx
movq 0x138(%rbx), %rax
cmpq %rcx, %rax
je 0x2af34
movq 0x150(%rbx), %rdx
cmpq 0x148(%rbx), %rdx
je 0x2af34
movq 0x168(%rbx), %rdx
cmpq 0x160(%rbx), %rdx
jne 0x2af79
movslq 0xc8(%rbx), %rsi
movq 0x18(%rsp), %rdi
callq 0x2bbf8
leaq 0x148(%rbx), %rdi
movslq 0xc8(%rbx), %rsi
callq 0x2bbf8
leaq 0x160(%rbx), %rdi
movslq 0xc8(%rbx), %rsi
callq 0x2bbf8
movq 0x130(%rbx), %rcx
movq 0x138(%rbx), %rax
subq %rcx, %rax
movl 0xc8(%rbx), %ecx
shrq $0x2, %rax
cmpl %eax, %ecx
jne 0x2afb6
movq 0x150(%rbx), %rax
subq 0x148(%rbx), %rax
shrq $0x2, %rax
cmpl %eax, %ecx
jne 0x2afb6
movq 0x168(%rbx), %rax
subq 0x160(%rbx), %rax
shrq $0x2, %rax
cmpl %eax, %ecx
je 0x2afd1
movq 0x3ba033(%rip), %rdi    # 0x3e4ff0
leaq 0x40e3(%rip), %rsi      # 0x2f0a7
callq 0x4300
movq %rax, %rdi
callq 0x4180
cmpl $0x0, 0x94(%rbx)
jle 0x2b045
movq 0x3ba00f(%rip), %rdi    # 0x3e4ff0
leaq 0x3f71(%rip), %rsi      # 0x2ef59
callq 0x4300
movq %rax, %rdi
callq 0x4180
testq %r13, %r13
movq 0x28(%rsp), %r14
je 0x2b00a
pushq $0x4
popq %rsi
movq %r13, %rdi
callq 0x4330
testq %r12, %r12
je 0x2b01a
pushq $0x4
popq %rsi
movq %r12, %rdi
callq 0x4330
movq (%rsp), %rdi
testq %rdi, %rdi
movq 0x20(%rsp), %r12
je 0x2b030
pushq $0x4
popq %rsi
callq 0x4330
cmpq %r12, %r14
setne %al
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x2b07e
movslq 0x10(%rsp), %r14
shrq $0x2, %r14
callq 0x1b6a8
movl %eax, %eax
cmpq %rax, %r14
je 0x2b07e
movq 0x3b9f86(%rip), %rdi    # 0x3e4ff0
leaq 0x408a(%rip), %rsi      # 0x2f0fb
callq 0x4300
movq %rax, %rdi
callq 0x4180
leaq 0x148(%rbx), %rax
movq %rax, 0x38(%rsp)
leaq 0x160(%rbx), %rax
movq %rax, 0x30(%rsp)
xorl %ebp, %ebp
movslq 0xc8(%rbx), %rax
cmpq %rax, %rbp
jge 0x2aff5
movq 0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x2b0f2
movl %ebp, 0x14(%rsp)
leaq 0x14(%rsp), %rsi
callq 0x1ab66
movq %rax, %r15
cvtss2sd (%r13,%rbp,4), %xmm0
cvtss2sd (%r12,%rbp,4), %xmm1
movq (%rsp), %rax
cvtss2sd (%rax,%rbp,4), %xmm2
leaq 0x40(%rsp), %r14
movq %r14, %rdi
callq 0x2bf40
movq %r15, %rdi
movq %r14, %rsi
callq 0xee3e
jmp 0x2b15f
movss (%r13,%rbp,4), %xmm0
movss %xmm0, 0x8(%rsp)
movq 0x18(%rsp), %rdi
movq %rbp, %rsi
callq 0x2bc2a
movss 0x8(%rsp), %xmm0
movss %xmm0, (%rax)
movss (%r12,%rbp,4), %xmm0
movss %xmm0, 0x8(%rsp)
movq 0x38(%rsp), %rdi
movq %rbp, %rsi
callq 0x2bc2a
movss 0x8(%rsp), %xmm0
movss %xmm0, (%rax)
movq (%rsp), %rax
movss (%rax,%rbp,4), %xmm0
movss %xmm0, 0x8(%rsp)
movq 0x30(%rsp), %rdi
movq %rbp, %rsi
callq 0x2bc2a
movss 0x8(%rsp), %xmm0
movss %xmm0, (%rax)
cmpb $0x0, 0x30(%rbx)
je 0x2b25b
movq 0x3b9e58(%rip), %r14    # 0x3e4fc8
movq (%r14), %rax
movq -0x18(%rax), %rax
movl 0x18(%r14,%rax), %ecx
movl $0xfffffefb, %edx       # imm = 0xFFFFFEFB
andl %edx, %ecx
orl $0x4, %ecx
movl %ecx, 0x18(%r14,%rax)
movq %r14, %rdi
leaq 0x3f81(%rip), %rsi      # 0x2f116
callq 0x4300
movq (%rax), %rcx
movq -0x18(%rcx), %rdx
movq $0xa, 0x10(%rax,%rdx)
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
movl $0xffffff4f, %esi       # imm = 0xFFFFFF4F
andl %esi, %edx
orl $0x80, %edx
movl %edx, 0x18(%rax,%rcx)
leaq 0x1(%rbp), %r15
movq %rax, %rdi
movl %r15d, %esi
callq 0x4520
movq (%r14), %rax
movq -0x18(%rax), %rax
pushq $0xe
popq %rcx
movq %rcx, 0x10(%r14,%rax)
movss (%r13,%rbp,4), %xmm0
movq %r14, %rdi
callq 0x4250
movq %rax, %rdi
leaq 0x33ca(%rip), %rsi      # 0x2e5c4
callq 0x4300
movq (%r14), %rax
movq -0x18(%rax), %rax
pushq $0xe
popq %rcx
movq %rcx, 0x10(%r14,%rax)
movss (%r12,%rbp,4), %xmm0
movq %r14, %rdi
callq 0x4250
movq %rax, %rdi
leaq 0x339e(%rip), %rsi      # 0x2e5c4
callq 0x4300
movq (%r14), %rax
movq -0x18(%rax), %rax
pushq $0xe
popq %rcx
movq %rcx, 0x10(%r14,%rax)
movq (%rsp), %rax
movss (%rax,%rbp,4), %xmm0
movq %r14, %rdi
callq 0x4250
movq %rax, %rdi
callq 0x4180
movq %r15, %rbp
jmp 0x2b098
incq %rbp
jmp 0x2b098
nop