// File: /workspace/github_cpp_makefile_star2_O1/NFAcz[P]compareQC/main.cpp
// Function: main
int main(int argc, char** argv) {

  if(cmdOptionExists(argv, argv+argc, "-h"))
  {
    help(argv[0]);
    return 0;
  }

  char * filename1 = getCmdOption(argv, argv + argc, "-a");
  char * filename2 = getCmdOption(argv, argv + argc, "-b");
  char * thresh = getCmdOption(argv, argv + argc, "-t");
  char * jump = getCmdOption(argv, argv + argc, "-s");
  char * verbose = getCmdOption(argv, argv + argc, "-v");

  float THRESHOLD = 7.5;
  int JUMP = 1;
  int something = 0;

  float lowest = 1024.0;
  float index = 0;
  string TCindex;

  int hours = 0;
  int minutes = 0;
  int seconds = 0;
  int frames = 0;

  bool DEBUG = false;

  if(verbose){
    DEBUG = true;
  }

  // parse -t
  if(thresh){
    std::string ts(thresh);
    THRESHOLD = float(strtof(ts.c_str(),NULL));
  }

  //parse -s
  if(jump){
    std::string ts(jump);
    JUMP = int(strtof(ts.c_str(),NULL));
  }

  //parse -a and -b (no file existance check so far)
  if (filename1 && filename2){
    std::vector<float> a,b;
    if(DEBUG)
      std::cout << "loading file A: " << filename1 << std::endl;

    if(is_match(filename1,".xml.gz")){
      a = load(filename1,JUMP);
    }else if(is_match(filename1,".txt")){
      a = loadFromTxt(filename1,JUMP);
    }

    if(DEBUG)
      std::cout << "loaded " << a.size() << " frames of total " << (JUMP * a.size()) << " (skip "<< JUMP <<")" << std::endl;


    if(DEBUG)
      std::cout << "loading file B: " << filename2 << std::endl;

    if(is_match(filename2,".xml.gz")){
      b = load(filename2,JUMP);
    }else if(is_match(filename2,".txt")){
      b = loadFromTxt(filename2,JUMP);
    }

    if(DEBUG)
      std::cout << "loaded " << b.size() << " frames of total " << (JUMP * b.size()) << " (skip "<< JUMP <<")" << std::endl;

    if(DEBUG)
      std::cout << "detected FPS: " << FPS << std::endl;

    if(DEBUG)
      std::cout << "comparing..." << std::endl;

    if(a.size()>b.size()){
      std::cerr << yellow << "Note: input file A should be shorter than B file ("<<filename2<<")" << reset << std::endl;
      return 1;
    }

    // sample comparation main loop
    for(int i = 0 ; i < b.size() - a.size() ; i++){


      // timecode estimation
      //
      if(frames * JUMP >= FPS){
        frames = 0;
        seconds++;
      }

      if(seconds > 59){
        seconds = 0;
        minutes++;
      }

      if(minutes > 59){
        minutes = 0;
        hours++;
      }

      stringstream tc;
      tc << setfill('0') << std::setw(2) << hours;
      tc << ":";
      tc << setfill('0') << std::setw(2) << minutes;
      tc << ":";
      tc << setfill('0') << std::setw(2) << seconds;
      tc << ":";
      tc << setfill('0') << std::setw(2) << frames;
      string TC = tc.str();



      // weird placement but if match is perfect it needs to be broken here
      if(something==2){
        break;
      }

      // if the diff of first sample of B is whitin threshold do seek more samples
      if(fabs(b[i]-a[0])<THRESHOLD){

        float avg = 0;

        // compute average diffenrence
        int cnt = 0;

        for(int ii = 0 ; ii < a.size() ; ii++){
          avg = avg + ( fabs( b[ii+i] - a[ii] ));
          cnt++;
        }
        avg = avg / cnt;

        // this means perfect match
        if(avg==0.0){
          something = 2;
          index = i * JUMP;
          TCindex = TC;
        }

        // record if avg in range
        if(avg < THRESHOLD && something !=2 ){
          something = 1;
          index = i * JUMP;
          TCindex = TC;
        }

        // collect the best fitting record
        if(avg < lowest){
          lowest = avg;
          index = i * JUMP;
          TCindex = TC;
        }

      }

      frames+=1;
    }

  }else{
    help(argv[0]);
    return 0;
  }

  if(something==0){
    if(DEBUG)
    std::cout << "NO match, threshold is " << THRESHOLD << ", best: " << yellow << lowest << reset << " (" << filename2 << ")" << std::endl;
    //std::cout << "FR: " << index << std::endl;
    //std::cout << "TC: " << TCindex << std::endl;
    return 1;
  }

  if(something==1){
    std::cout << green << "close MATCH found" << reset << " whitin threshold of " << THRESHOLD << ", it scores: " << yellow << lowest << reset << std::endl;
    std::cout << filename2 << std::endl;
    std::cout << "FR: " << index << std::endl;
    std::cout << "TC: " << TCindex << std::endl;
  }

  if(something==2){
    std::cout << green << "complete MATCH!" << reset << " file " << filename1 << " and " << filename2 << " are the same @:" << std::endl;
    std::cout << "FR: " << index << std::endl;
    std::cout << "TC: " << TCindex << std::endl;
    return 0;
  }
  return 0;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2b8, %rsp            # imm = 0x2B8
movq %rsi, %rbx
movl %edi, %r14d
leaq -0x270(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x806d(%rip), %rsi      # 0xf137
leaq 0x8068(%rip), %rdx      # 0xf139
leaq -0x280(%rbp), %rdi
callq 0x8cf0
movslq %r14d, %rax
leaq (%rbx,%rax,8), %r14
leaq -0x280(%rbp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8d89
movq %rax, %r15
movq -0x280(%rbp), %rdi
cmpq %r12, %rdi
je 0x7114
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
cmpq %r14, %r15
je 0x7162
movq (%rbx), %rsi
leaq -0x2e0(%rbp), %rdi
leaq -0x280(%rbp), %rdx
callq 0x89ac
leaq -0x2e0(%rbp), %rdi
callq 0x6fd5
leaq -0x2d0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x715a
movq -0x2d0(%rbp), %rsi
incq %rsi
callq 0x6280
xorl %r14d, %r14d
jmp 0x8796
leaq -0x280(%rbp), %rdi
movq %r12, (%rdi)
leaq 0x7fc7(%rip), %rsi      # 0xf13a
leaq 0x7fc2(%rip), %rdx      # 0xf13c
callq 0x8cf0
leaq -0x280(%rbp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8d89
cmpq %r14, %rax
je 0x71a4
addq $0x8, %rax
cmpq %r14, %rax
je 0x71a4
movq (%rax), %r12
jmp 0x71a7
xorl %r12d, %r12d
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x71c9
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
leaq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
movq %rax, (%rdi)
leaq 0x7f5c(%rip), %rsi      # 0xf13d
leaq 0x7f57(%rip), %rdx      # 0xf13f
callq 0x8cf0
leaq -0x280(%rbp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8d89
cmpq %r14, %rax
je 0x7212
addq $0x8, %rax
cmpq %r14, %rax
je 0x7212
movq (%rax), %r15
jmp 0x7215
xorl %r15d, %r15d
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x7237
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
leaq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
movq %rax, (%rdi)
leaq 0x7ef1(%rip), %rsi      # 0xf140
leaq 0x7eec(%rip), %rdx      # 0xf142
callq 0x8cf0
leaq -0x280(%rbp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8d89
cmpq %r14, %rax
movq %r12, -0xc0(%rbp)
je 0x7287
addq $0x8, %rax
cmpq %r14, %rax
je 0x7287
movq (%rax), %r12
jmp 0x728a
xorl %r12d, %r12d
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x72ac
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
leaq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
movq %rax, (%rdi)
leaq 0x7e7f(%rip), %rsi      # 0xf143
leaq 0x7e7a(%rip), %rdx      # 0xf145
callq 0x8cf0
leaq -0x280(%rbp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8d89
cmpq %r14, %rax
movq %r15, -0xa8(%rbp)
je 0x72fc
addq $0x8, %rax
cmpq %r14, %rax
je 0x72fc
movq (%rax), %r13
jmp 0x72ff
xorl %r13d, %r13d
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x7321
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
leaq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
movq %rax, (%rdi)
leaq 0x7e0d(%rip), %rsi      # 0xf146
leaq 0x7e08(%rip), %rdx      # 0xf148
callq 0x8cf0
leaq -0x280(%rbp), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8d89
movb $0x1, %r15b
cmpq %r14, %rax
je 0x7370
addq $0x8, %rax
cmpq %r14, %rax
je 0x7370
cmpq $0x0, (%rax)
sete %r15b
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x7392
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
movb %r15b, -0x39(%rbp)
leaq -0xd8(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
testq %r12, %r12
je 0x7410
leaq -0x280(%rbp), %r14
leaq -0x270(%rbp), %r15
movq %r15, (%r14)
movq %r12, %rdi
callq 0x6110
leaq (%rax,%r12), %rdx
movq %r14, %rdi
movq %r12, %rsi
callq 0x8cf0
movq -0x280(%rbp), %rdi
xorl %esi, %esi
callq 0x6320
movss %xmm0, -0x5c(%rbp)
movq -0x280(%rbp), %rdi
cmpq %r15, %rdi
movq -0xc0(%rbp), %r12
je 0x7424
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
jmp 0x7424
movss 0x7bf0(%rip), %xmm0     # 0xf008
movss %xmm0, -0x5c(%rbp)
movq -0xc0(%rbp), %r12
testq %r13, %r13
je 0x7498
leaq -0x280(%rbp), %r14
leaq -0x270(%rbp), %r15
movq %r15, (%r14)
movq %r13, %rdi
callq 0x6110
leaq (%rax,%r13), %rdx
movq %r14, %rdi
movq %r13, %rsi
callq 0x8cf0
movq -0x280(%rbp), %rdi
xorl %esi, %esi
callq 0x6320
movq -0x280(%rbp), %rdi
cmpq %r15, %rdi
movq -0xa8(%rbp), %r13
je 0x748b
movq -0x270(%rbp), %rsi
incq %rsi
movss %xmm0, -0x58(%rbp)
callq 0x6280
movss -0x58(%rbp), %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x40(%rbp)
movb -0x39(%rbp), %r15b
jmp 0x74aa
movl $0x1, -0x40(%rbp)
movb -0x39(%rbp), %r15b
movq -0xa8(%rbp), %r13
testq %r12, %r12
je 0x7685
testq %r13, %r13
je 0x7685
testb %r15b, %r15b
jne 0x75c5
movq $0x0, -0x38(%rbp)
movq 0xfad4(%rip), %rdi      # 0x16fa8
leaq 0x7c6e(%rip), %rsi      # 0xf149
movl $0x10, %edx
movq $0x0, -0x30(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
callq 0x62d0
movq %r12, %rdi
callq 0x6110
movq $0x0, -0x38(%rbp)
movq 0xfa94(%rip), %rbx      # 0x16fa8
movq $0x0, -0x30(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
movq %rbx, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x62d0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
movq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movq $0x0, -0x38(%rbp)
movsbl %al, %esi
movq 0xfa28(%rip), %rdi      # 0x16fa8
movq $0x0, -0x30(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
callq 0x6030
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
movq %rax, %rdi
callq 0x6190
leaq -0x280(%rbp), %rbx
leaq -0x270(%rbp), %rax
movq %rax, (%rbx)
movq %r12, %rdi
callq 0x6110
leaq (%rax,%r12), %rdx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x8cf0
leaq -0x80(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x7b5e(%rip), %rsi      # 0xf15a
leaq 0x7b5e(%rip), %rdx      # 0xf161
leaq -0x90(%rbp), %rdi
callq 0x8cf0
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rcx
leaq -0x280(%rbp), %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x7646
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x6280
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x7668
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
cmpq $-0x1, %rbx
je 0x76ce
leaq -0x280(%rbp), %rdi
movq %r12, %rsi
movl -0x40(%rbp), %edx
callq 0x6af4
jmp 0x7788
movq (%rbx), %rsi
leaq -0x2c0(%rbp), %rdi
leaq -0x280(%rbp), %rdx
callq 0x89ac
leaq -0x2c0(%rbp), %rdi
callq 0x6fd5
leaq -0x2b0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x76c6
movq -0x2b0(%rbp), %rsi
incq %rsi
callq 0x6280
xorl %r14d, %r14d
jmp 0x8774
leaq -0x280(%rbp), %rbx
leaq -0x270(%rbp), %rax
movq %rax, (%rbx)
movq %r12, %rdi
callq 0x6110
leaq (%rax,%r12), %rdx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x8cf0
leaq -0x90(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x7a5b(%rip), %rsi      # 0xf162
leaq 0x7a58(%rip), %rdx      # 0xf166
callq 0x8cf0
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rcx
leaq -0x280(%rbp), %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x774a
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x6280
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x776c
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
cmpq $-0x1, %rbx
je 0x83b7
leaq -0x280(%rbp), %rdi
movq %r12, %rsi
movl -0x40(%rbp), %edx
callq 0x6966
movq -0x280(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x278(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x270(%rbp), %rax
movq %rax, -0x50(%rbp)
testb %r15b, %r15b
jne 0x79c5
movq $0x0, -0x38(%rbp)
movq 0xf7e4(%rip), %rdi      # 0x16fa8
leaq 0x799c(%rip), %rsi      # 0xf167
movl $0x7, %edx
movq $0x0, -0x30(%rbp)
callq 0x62d0
movq -0xb0(%rbp), %rbx
subq -0x48(%rbp), %rbx
sarq $0x2, %rbx
movq $0x0, -0x38(%rbp)
movq 0xf7ad(%rip), %rdi      # 0x16fa8
movq $0x0, -0x30(%rbp)
movq %rbx, %rsi
callq 0x6180
movq %rax, %r14
movq $0x0, -0x38(%rbp)
leaq 0x7952(%rip), %rsi      # 0xf16f
movl $0x11, %edx
movq $0x0, -0x30(%rbp)
movq %rax, %rdi
callq 0x62d0
movslq -0x40(%rbp), %rax
imulq %rax, %rbx
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6180
movq %rax, %rbx
movq $0x0, -0x38(%rbp)
leaq 0x791a(%rip), %rsi      # 0xf181
movl $0x7, %edx
movq $0x0, -0x30(%rbp)
movq %rax, %rdi
callq 0x62d0
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movq %rbx, %rdi
movl -0x40(%rbp), %esi
callq 0x6430
movq %rax, %rbx
movq $0x0, -0x38(%rbp)
leaq 0x8015(%rip), %rsi      # 0xf8be
movl $0x1, %edx
movq $0x0, -0x30(%rbp)
movq %rax, %rdi
callq 0x62d0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movl $0xa, %esi
callq 0x6250
movq $0x0, -0x38(%rbp)
movsbl %al, %esi
movq $0x0, -0x30(%rbp)
movq %rbx, %rdi
callq 0x6030
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movq %rax, %rdi
callq 0x6190
movq $0x0, -0x38(%rbp)
movq 0xf684(%rip), %rdi      # 0x16fa8
leaq 0x785e(%rip), %rsi      # 0xf189
movl $0x10, %edx
movq $0x0, -0x30(%rbp)
callq 0x62d0
movq %r13, %rdi
callq 0x6110
movq $0x0, -0x38(%rbp)
movq 0xf654(%rip), %rbx      # 0x16fa8
movq $0x0, -0x30(%rbp)
movq %rbx, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x62d0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movq $0x0, -0x38(%rbp)
movsbl %al, %esi
movq 0xf608(%rip), %rdi      # 0x16fa8
movq $0x0, -0x30(%rbp)
callq 0x6030
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movq %rax, %rdi
callq 0x6190
leaq -0x280(%rbp), %rbx
leaq -0x270(%rbp), %rax
movq %rax, (%rbx)
movq %r13, %rdi
callq 0x6110
leaq (%rax,%r13), %rdx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x8cf0
leaq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %r14
movq %r14, (%rdi)
leaq 0x7758(%rip), %rsi      # 0xf15a
leaq 0x7758(%rip), %rdx      # 0xf161
callq 0x8cf0
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rcx
leaq -0x280(%rbp), %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x7a45
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x6280
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x7a67
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
cmpq $-0x1, %rbx
je 0x7a84
leaq -0x280(%rbp), %rdi
movq %r13, %rsi
movl -0x40(%rbp), %edx
callq 0x6af4
jmp 0x7b3e
leaq -0x280(%rbp), %rbx
leaq -0x270(%rbp), %rax
movq %rax, (%rbx)
movq %r13, %rdi
callq 0x6110
leaq (%rax,%r13), %rdx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x8cf0
leaq -0x90(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x76a5(%rip), %rsi      # 0xf162
leaq 0x76a2(%rip), %rdx      # 0xf166
callq 0x8cf0
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rcx
leaq -0x280(%rbp), %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x7b00
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x6280
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x7b22
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
cmpq $-0x1, %rbx
je 0x83d7
leaq -0x280(%rbp), %rdi
movq %r13, %rsi
movl -0x40(%rbp), %edx
callq 0x6966
movq -0x280(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x278(%rbp), %rcx
movq -0x270(%rbp), %rax
movq %rax, -0x38(%rbp)
testb %r15b, %r15b
movq %rcx, %r15
jne 0x7cbf
movq 0xf43a(%rip), %rdi      # 0x16fa8
leaq 0x75f2(%rip), %rsi      # 0xf167
movl $0x7, %edx
callq 0x62d0
movq %r15, %rbx
subq -0x30(%rbp), %rbx
sarq $0x2, %rbx
movq 0xf417(%rip), %rdi      # 0x16fa8
movq %rbx, %rsi
callq 0x6180
movq %rax, %r14
leaq 0x75cc(%rip), %rsi      # 0xf16f
movl $0x11, %edx
movq %rax, %rdi
callq 0x62d0
movslq -0x40(%rbp), %rax
imulq %rax, %rbx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x6180
movq %rax, %rbx
leaq 0x75b4(%rip), %rsi      # 0xf181
movl $0x7, %edx
movq %rax, %rdi
callq 0x62d0
movq %rbx, %rdi
movl -0x40(%rbp), %esi
callq 0x6430
movq %rax, %rbx
leaq 0x7ccf(%rip), %rsi      # 0xf8be
movl $0x1, %edx
movq %rax, %rdi
callq 0x62d0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6190
movq 0xf37e(%rip), %rdi      # 0x16fa8
leaq 0x7569(%rip), %rsi      # 0xf19a
movl $0xe, %edx
callq 0x62d0
cvtss2sd 0xf635(%rip), %xmm0     # 0x17278
movq 0xf35e(%rip), %rdi      # 0x16fa8
callq 0x63d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6190
movq 0xf328(%rip), %rbx      # 0x16fa8
leaq 0x7522(%rip), %rsi      # 0xf1a9
movl $0xc, %edx
movq %rbx, %rdi
callq 0x62d0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movsbl %al, %esi
movq 0xf2f6(%rip), %rdi      # 0x16fa8
callq 0x6030
movq %rax, %rdi
callq 0x6190
movq -0xb0(%rbp), %rcx
subq -0x48(%rbp), %rcx
sarq $0x2, %rcx
movq -0x30(%rbp), %rax
subq %rax, %r15
sarq $0x2, %r15
cmpq %rcx, %r15
movq %r15, -0x298(%rbp)
movq %rcx, -0x290(%rbp)
jae 0x7dae
movq 0xf5e9(%rip), %rsi      # 0x172e0
movq 0xf5ea(%rip), %rdx      # 0x172e8
movq 0xf2e3(%rip), %rdi      # 0x16fe8
callq 0x62d0
movq %rax, %rbx
leaq 0x74a2(%rip), %rsi      # 0xf1b6
movl $0x32, %edx
movq %rax, %rdi
callq 0x62d0
movq %r13, %rdi
callq 0x6110
movq %rbx, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0x62d0
leaq 0x7b80(%rip), %rsi      # 0xf8be
movl $0x1, %edx
movq %rbx, %rdi
callq 0x62d0
movq 0xf5ee(%rip), %rsi      # 0x17340
movq 0xf5ef(%rip), %rdx      # 0x17348
movq %rbx, %rdi
callq 0x62d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6190
movl $0x1, %r14d
xorl %r15d, %r15d
movsd 0x727c(%rip), %xmm0     # 0xf018
movsd %xmm0, -0x68(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x8278
subq %rcx, %r15
movq %r15, -0x2a0(%rbp)
jne 0x7dda
xorl %r15d, %r15d
movsd 0x7253(%rip), %xmm0     # 0xf018
movsd %xmm0, -0x68(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
xorl %r14d, %r14d
jmp 0x8278
cmpq $0x1, %rcx
adcq $0x0, %rcx
movq %rcx, -0x288(%rbp)
xorps %xmm0, %xmm0
cvtsi2ss %ecx, %xmm0
movss %xmm0, -0xc4(%rbp)
movss 0x720c(%rip), %xmm0     # 0xf00c
movss %xmm0, -0x70(%rbp)
movq %rax, -0xf0(%rbp)
movq $0x0, -0xa0(%rbp)
movl $0x0, -0x68(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x6c(%rbp)
movl $0x0, -0x58(%rbp)
xorl %r14d, %r14d
xorl %r12d, %r12d
movl $0x0, -0xb4(%rbp)
movl -0x58(%rbp), %edx
movl %edx, %eax
imull -0x40(%rbp), %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movss 0xf423(%rip), %xmm1     # 0x17278
ucomiss %xmm1, %xmm0
sbbl $-0x1, %r14d
ucomiss %xmm1, %xmm0
movl $0x0, %ecx
cmovael %ecx, %edx
movl %edx, -0x58(%rbp)
xorl %eax, %eax
cmpl $0x3c, %r14d
setge %al
cmovgel %ecx, %r14d
addl %eax, %r12d
xorl %ebx, %ebx
cmpl $0x3c, %r12d
setge %r13b
cmovgel %ecx, %r12d
leaq -0x280(%rbp), %rdi
callq 0x61b0
movq -0x270(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x270(%rbp), %rcx
leaq (%rcx,%rax), %r15
cmpb $0x0, -0x18f(%rbp,%rax)
jne 0x7ed0
movq %r15, %rdi
movl $0x20, %esi
callq 0x6250
movb %al, 0xe0(%r15)
movb $0x1, 0xe1(%r15)
movb %r13b, %bl
movl -0xb4(%rbp), %esi
addl %ebx, %esi
movb $0x30, 0xe0(%r15)
movq -0x270(%rbp), %rax
movq -0x18(%rax), %rax
movq $0x2, -0x260(%rbp,%rax)
leaq -0x270(%rbp), %rbx
movq %rbx, %rdi
movl %esi, -0xb4(%rbp)
callq 0x6430
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x7358(%rip), %rsi      # 0xf276
callq 0x62d0
movq -0x270(%rbp), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %r15
cmpb $0x0, -0x18f(%rbp,%rax)
jne 0x7f58
movq %r15, %rdi
movl $0x20, %esi
callq 0x6250
movb %al, 0xe0(%r15)
movb $0x1, 0xe1(%r15)
movb $0x30, 0xe0(%r15)
movq -0x270(%rbp), %rax
movq -0x18(%rax), %rax
movq $0x2, -0x260(%rbp,%rax)
movq %rbx, %rdi
movl %r12d, %esi
callq 0x6430
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x72e5(%rip), %rsi      # 0xf276
callq 0x62d0
movq -0x270(%rbp), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %r15
cmpb $0x0, -0x18f(%rbp,%rax)
jne 0x7fcb
movq %r15, %rdi
movl $0x20, %esi
callq 0x6250
movb %al, 0xe0(%r15)
movb $0x1, 0xe1(%r15)
movb $0x30, 0xe0(%r15)
movq -0x270(%rbp), %rax
movq -0x18(%rax), %rax
movq $0x2, -0x260(%rbp,%rax)
movq %rbx, %rdi
movl %r14d, %esi
callq 0x6430
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x7272(%rip), %rsi      # 0xf276
callq 0x62d0
movq -0x270(%rbp), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %r15
cmpb $0x0, -0x18f(%rbp,%rax)
jne 0x803e
movq %r15, %rdi
movl $0x20, %esi
callq 0x6250
movb %al, 0xe0(%r15)
movb $0x1, 0xe1(%r15)
movb $0x30, 0xe0(%r15)
movq -0x270(%rbp), %rax
movq -0x18(%rax), %rax
movq $0x2, -0x260(%rbp,%rax)
leaq -0x270(%rbp), %rdi
movl -0x58(%rbp), %esi
callq 0x6430
leaq -0x90(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x63c0
movl $0x2, %r15d
cmpl $0x2, -0x68(%rbp)
je 0x81e9
movq -0x30(%rbp), %rax
movq -0xa0(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x48(%rbp), %rcx
subss (%rcx), %xmm0
andps 0x6f72(%rip), %xmm0     # 0xf020
movss -0x5c(%rbp), %xmm1
ucomiss %xmm0, %xmm1
jbe 0x81d8
movss 0x6f4c(%rip), %xmm0     # 0xf010
cmpq %rcx, -0xb0(%rbp)
je 0x810e
xorps %xmm0, %xmm0
xorl %eax, %eax
movq -0x288(%rbp), %rdx
movaps 0x6f40(%rip), %xmm1     # 0xf020
movq -0xf0(%rbp), %rsi
movaps %xmm0, %xmm2
movss (%rsi,%rax,4), %xmm0
subss (%rcx,%rax,4), %xmm0
andps %xmm1, %xmm0
addss %xmm0, %xmm2
movaps %xmm2, %xmm0
incq %rax
cmpq %rax, %rdx
jne 0x80e7
divss -0xc4(%rbp), %xmm0
movss %xmm0, -0x94(%rbp)
ucomiss 0x6ef7(%rip), %xmm0     # 0xf014
movl -0x68(%rbp), %r15d
jne 0x8154
jp 0x8154
leaq -0xe8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6160
movl -0x40(%rbp), %eax
imull -0xa0(%rbp), %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x6c(%rbp)
movl $0x2, %r15d
movss -0x5c(%rbp), %xmm0
ucomiss -0x94(%rbp), %xmm0
jbe 0x8197
cmpl $0x2, %r15d
je 0x8197
leaq -0xe8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6160
movl -0x40(%rbp), %eax
imull -0xa0(%rbp), %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x6c(%rbp)
movl $0x1, %r15d
movss -0x70(%rbp), %xmm0
ucomiss -0x94(%rbp), %xmm0
jbe 0x81e1
leaq -0xe8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x6160
movl -0x40(%rbp), %eax
imull -0xa0(%rbp), %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x6c(%rbp)
movss -0x94(%rbp), %xmm0
jmp 0x81e1
movss -0x70(%rbp), %xmm0
movl -0x68(%rbp), %r15d
incl -0x58(%rbp)
movss %xmm0, -0x70(%rbp)
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x8205
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x6280
leaq -0x280(%rbp), %rdi
movq 0xed4d(%rip), %rsi      # 0x16f60
callq 0x61e0
leaq -0x200(%rbp), %rdi
callq 0x60c0
cmpl $0x2, -0x68(%rbp)
je 0x8254
movq -0xa0(%rbp), %rcx
incq %rcx
addq $0x4, -0xf0(%rbp)
movl %r15d, -0x68(%rbp)
movq %rcx, -0xa0(%rbp)
cmpq -0x2a0(%rbp), %rcx
jne 0x7e3d
xorps %xmm0, %xmm0
cvtss2sd -0x70(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
xorps %xmm0, %xmm0
cvtss2sd -0x6c(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
xorl %r14d, %r14d
movq -0xc0(%rbp), %r12
movq -0x30(%rbp), %rdi
testq %rdi, %rdi
je 0x828d
movq -0x38(%rbp), %rsi
subq %rdi, %rsi
callq 0x6280
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x82a2
movq -0x50(%rbp), %rsi
subq %rdi, %rsi
callq 0x6280
movq -0x290(%rbp), %rax
cmpq %rax, -0x298(%rbp)
jb 0x8774
xorl %r14d, %r14d
cmpl $0x2, %r15d
je 0x85e5
cmpl $0x1, %r15d
je 0x83ee
testl %r15d, %r15d
jne 0x8774
movl $0x1, %r14d
cmpb $0x0, -0x39(%rbp)
jne 0x8774
movq 0xecbb(%rip), %rdi      # 0x16fa8
leaq 0x6ef5(%rip), %rsi      # 0xf1e9
movl $0x17, %edx
callq 0x62d0
xorps %xmm0, %xmm0
cvtss2sd -0x5c(%rbp), %xmm0
movq 0xec9b(%rip), %rdi      # 0x16fa8
callq 0x63d0
movq %rax, %rbx
leaq 0x6ee5(%rip), %rsi      # 0xf201
movl $0x8, %edx
movq %rax, %rdi
callq 0x62d0
movq 0xefb0(%rip), %rsi      # 0x172e0
movq 0xefb1(%rip), %rdx      # 0x172e8
movq %rbx, %rdi
callq 0x62d0
movq %rax, %rdi
movsd -0x68(%rbp), %xmm0
callq 0x63d0
movq 0xefed(%rip), %rsi      # 0x17340
movq 0xefee(%rip), %rdx      # 0x17348
movq %rax, %rdi
callq 0x62d0
movq %rax, %rbx
leaq 0x6e7a(%rip), %rsi      # 0xf1e6
movl $0x2, %edx
movq %rax, %rdi
callq 0x62d0
movq -0xa8(%rbp), %r15
movq %r15, %rdi
callq 0x6110
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x62d0
leaq 0x7521(%rip), %rsi      # 0xf8be
movl $0x1, %edx
movq %rbx, %rdi
callq 0x62d0
movq %rbx, %rdi
callq 0x6120
jmp 0x8774
movq $0x0, -0x50(%rbp)
movq $0x0, -0xb0(%rbp)
movq $0x0, -0x48(%rbp)
jmp 0x77ac
movq $0x0, -0x38(%rbp)
xorl %ecx, %ecx
movq $0x0, -0x30(%rbp)
jmp 0x7b5b
movq 0xeecb(%rip), %rsi      # 0x172c0
movq 0xeecc(%rip), %rdx      # 0x172c8
movq 0xeba5(%rip), %rdi      # 0x16fa8
callq 0x62d0
movq %rax, %rbx
leaq 0x6df8(%rip), %rsi      # 0xf20a
movl $0x11, %edx
movq %rax, %rdi
callq 0x62d0
movq 0xef1a(%rip), %rsi      # 0x17340
movq 0xef1b(%rip), %rdx      # 0x17348
movq %rbx, %rdi
callq 0x62d0
movq %rax, %rbx
leaq 0x6ddd(%rip), %rsi      # 0xf21c
movl $0x15, %edx
movq %rax, %rdi
callq 0x62d0
xorps %xmm0, %xmm0
cvtss2sd -0x5c(%rbp), %xmm0
movq %rbx, %rdi
callq 0x63d0
movq %rax, %rbx
leaq 0x6dcc(%rip), %rsi      # 0xf232
movl $0xd, %edx
movq %rax, %rdi
callq 0x62d0
movq 0xee66(%rip), %rsi      # 0x172e0
movq 0xee67(%rip), %rdx      # 0x172e8
movq %rbx, %rdi
callq 0x62d0
movq %rax, %rdi
movsd -0x68(%rbp), %xmm0
callq 0x63d0
movq 0xeea3(%rip), %rsi      # 0x17340
movq 0xeea4(%rip), %rdx      # 0x17348
movq %rax, %rdi
callq 0x62d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6190
movq -0xa8(%rbp), %r12
movq %r12, %rdi
callq 0x6110
movq 0xeabc(%rip), %rbx      # 0x16fa8
movq %rbx, %rdi
movq %r12, %rsi
movq -0xc0(%rbp), %r12
movq %rax, %rdx
callq 0x62d0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movsbl %al, %esi
movq 0xea89(%rip), %rdi      # 0x16fa8
callq 0x6030
movq %rax, %rdi
callq 0x6190
movq 0xea75(%rip), %rdi      # 0x16fa8
leaq 0x6d06(%rip), %rsi      # 0xf240
movl $0x4, %edx
callq 0x62d0
movq 0xea5d(%rip), %rdi      # 0x16fa8
movsd -0x58(%rbp), %xmm0
callq 0x63d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6190
movq 0xea22(%rip), %rdi      # 0x16fa8
leaq 0x6cb8(%rip), %rsi      # 0xf245
movl $0x4, %edx
callq 0x62d0
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
movq 0xe9fc(%rip), %rdi      # 0x16fa8
callq 0x62d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6190
cmpl $0x2, %r15d
jne 0x8774
movq 0xecd4(%rip), %rsi      # 0x172c0
movq 0xecd5(%rip), %rdx      # 0x172c8
movq 0xe9ae(%rip), %rdi      # 0x16fa8
callq 0x62d0
movq %rax, %rbx
leaq 0x6c41(%rip), %rsi      # 0xf24a
movl $0xf, %edx
movq %rax, %rdi
callq 0x62d0
movq 0xed23(%rip), %rsi      # 0x17340
movq 0xed24(%rip), %rdx      # 0x17348
movq %rbx, %rdi
callq 0x62d0
movq %rax, %rbx
leaq 0x6c24(%rip), %rsi      # 0xf25a
movl $0x6, %edx
movq %rax, %rdi
callq 0x62d0
movq %r12, %rdi
callq 0x6110
movq %rbx, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x62d0
leaq 0x6c01(%rip), %rsi      # 0xf261
movl $0x5, %edx
movq %rbx, %rdi
callq 0x62d0
movq -0xa8(%rbp), %r15
movq %r15, %rdi
callq 0x6110
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x62d0
leaq 0x6bd6(%rip), %rsi      # 0xf267
movl $0x10, %edx
movq %rbx, %rdi
callq 0x62d0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6190
movq 0xe8dc(%rip), %rdi      # 0x16fa8
leaq 0x6b6d(%rip), %rsi      # 0xf240
movl $0x4, %edx
callq 0x62d0
movq 0xe8c4(%rip), %rdi      # 0x16fa8
movsd -0x58(%rbp), %xmm0
callq 0x63d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6190
movq 0xe889(%rip), %rdi      # 0x16fa8
leaq 0x6b1f(%rip), %rsi      # 0xf245
movl $0x4, %edx
callq 0x62d0
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
movq 0xe863(%rip), %rdi      # 0x16fa8
callq 0x62d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x6250
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6190
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x8796
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x6280
movl %r14d, %eax
addq $0x2b8, %rsp            # imm = 0x2B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x87e2
jmp 0x8821
jmp 0x87bb
jmp 0x87e2
jmp 0x87fa
jmp 0x8821
jmp 0x87e2
jmp 0x8821
movq %rax, %r12
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x87e5
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
jmp 0x87e5
movq %rax, %r12
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
jmp 0x8954
movq %rax, %r12
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x8824
movq -0x270(%rbp), %rsi
incq %rsi
callq 0x6280
jmp 0x8824
movq %rax, %r12
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
jmp 0x8954
movq %rax, %r12
leaq -0x2b0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8982
movq -0x2b0(%rbp), %rsi
incq %rsi
jmp 0x897d
jmp 0x8924
jmp 0x8924
jmp 0x8924
jmp 0x8893
jmp 0x891c
jmp 0x8893
jmp 0x891c
jmp 0x8893
jmp 0x891c
movq %rax, %r12
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
jne 0x8910
jmp 0x89a4
jmp 0x891c
jmp 0x88fa
jmp 0x891c
movq %rax, %r12
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x8935
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x6280
jmp 0x8935
movq %rax, %r12
leaq -0x2d0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x89a4
movq -0x2d0(%rbp), %rsi
jmp 0x899c
jmp 0x891c
movq %r12, %rcx
movq %rax, %r12
movq -0x280(%rbp), %rdi
cmpq %rcx, %rdi
je 0x89a4
movq -0x270(%rbp), %rsi
jmp 0x899c
movq %rax, %r12
jmp 0x89a4
movq %rax, %r12
jmp 0x8982
jmp 0x892d
jmp 0x8932
movq %rax, %r12
jmp 0x8954
movq %rax, %r12
movq 0xe624(%rip), %rsi      # 0x16f60
leaq -0x280(%rbp), %rdi
callq 0x61e0
leaq -0x200(%rbp), %rdi
callq 0x60c0
cmpq $0x0, -0x30(%rbp)
je 0x896b
movq -0x38(%rbp), %rsi
movq -0x30(%rbp), %rdi
subq %rdi, %rsi
callq 0x6280
cmpq $0x0, -0x48(%rbp)
je 0x8982
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdi
subq %rdi, %rsi
callq 0x6280
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x89a4
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x6280
movq %r12, %rdi
callq 0x6450