// File: 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
subq $0xa20, %rsp            # imm = 0xA20
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x5e8(%rbp)
movslq -0x8(%rbp), %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x5e0(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x5d8(%rbp)
callq 0x7680
movq -0x5d8(%rbp), %rdx
leaq 0x12a9b(%rip), %rsi     # 0x1b14c
leaq -0x30(%rbp), %rdi
callq 0xa470
jmp 0x86bc
movq -0x5e0(%rbp), %rsi
movq -0x5e8(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0x7c00
movb %al, -0x5e9(%rbp)
jmp 0x86db
leaq -0x30(%rbp), %rdi
callq 0x7738
leaq -0x31(%rbp), %rdi
callq 0x73c0
movb -0x5e9(%rbp), %al
testb $0x1, %al
jne 0x86fc
jmp 0x87be
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x600(%rbp)
leaq -0x69(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0x7680
movq -0x600(%rbp), %rsi
movq -0x5f8(%rbp), %rdx
leaq -0x68(%rbp), %rdi
callq 0xa470
jmp 0x8733
leaq -0x68(%rbp), %rdi
callq 0x85e0
jmp 0x873e
leaq -0x68(%rbp), %rdi
callq 0x7738
leaq -0x69(%rbp), %rdi
callq 0x73c0
movl $0x0, -0x4(%rbp)
jmp 0xa44e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x877f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x7738
leaq -0x31(%rbp), %rdi
callq 0x73c0
jmp 0xa45a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x87b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x7738
leaq -0x69(%rbp), %rdi
callq 0x73c0
jmp 0xa45a
movq -0x10(%rbp), %rax
movq %rax, -0x618(%rbp)
movslq -0x8(%rbp), %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x610(%rbp)
leaq -0x99(%rbp), %rdi
movq %rdi, -0x608(%rbp)
callq 0x7680
movq -0x608(%rbp), %rdx
leaq 0x12956(%rip), %rsi     # 0x1b14f
leaq -0x98(%rbp), %rdi
callq 0xa470
jmp 0x8807
movq -0x610(%rbp), %rsi
movq -0x618(%rbp), %rdi
leaq -0x98(%rbp), %rdx
callq 0x7b90
movq %rax, -0x620(%rbp)
jmp 0x882a
leaq -0x98(%rbp), %rdi
callq 0x7738
leaq -0x99(%rbp), %rdi
callq 0x73c0
movq -0x620(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x638(%rbp)
movslq -0x8(%rbp), %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x630(%rbp)
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x628(%rbp)
callq 0x7680
movq -0x628(%rbp), %rdx
leaq 0x128ca(%rip), %rsi     # 0x1b152
leaq -0xc8(%rbp), %rdi
callq 0xa470
jmp 0x8896
movq -0x630(%rbp), %rsi
movq -0x638(%rbp), %rdi
leaq -0xc8(%rbp), %rdx
callq 0x7b90
movq %rax, -0x640(%rbp)
jmp 0x88b9
leaq -0xc8(%rbp), %rdi
callq 0x7738
leaq -0xc9(%rbp), %rdi
callq 0x73c0
movq -0x640(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x658(%rbp)
movslq -0x8(%rbp), %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x650(%rbp)
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x648(%rbp)
callq 0x7680
movq -0x648(%rbp), %rdx
leaq 0x1283b(%rip), %rsi     # 0x1b155
leaq -0xf8(%rbp), %rdi
callq 0xa470
jmp 0x8928
movq -0x650(%rbp), %rsi
movq -0x658(%rbp), %rdi
leaq -0xf8(%rbp), %rdx
callq 0x7b90
movq %rax, -0x660(%rbp)
jmp 0x894b
leaq -0xf8(%rbp), %rdi
callq 0x7738
leaq -0xf9(%rbp), %rdi
callq 0x73c0
movq -0x660(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x678(%rbp)
movslq -0x8(%rbp), %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x670(%rbp)
leaq -0x129(%rbp), %rdi
movq %rdi, -0x668(%rbp)
callq 0x7680
movq -0x668(%rbp), %rdx
leaq 0x127ac(%rip), %rsi     # 0x1b158
leaq -0x128(%rbp), %rdi
callq 0xa470
jmp 0x89ba
movq -0x670(%rbp), %rsi
movq -0x678(%rbp), %rdi
leaq -0x128(%rbp), %rdx
callq 0x7b90
movq %rax, -0x680(%rbp)
jmp 0x89dd
leaq -0x128(%rbp), %rdi
callq 0x7738
leaq -0x129(%rbp), %rdi
callq 0x73c0
movq -0x680(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x698(%rbp)
movslq -0x8(%rbp), %rcx
leaq (%rax,%rcx,8), %rax
movq %rax, -0x690(%rbp)
leaq -0x159(%rbp), %rdi
movq %rdi, -0x688(%rbp)
callq 0x7680
movq -0x688(%rbp), %rdx
leaq 0x1271d(%rip), %rsi     # 0x1b15b
leaq -0x158(%rbp), %rdi
callq 0xa470
jmp 0x8a4c
movq -0x690(%rbp), %rsi
movq -0x698(%rbp), %rdi
leaq -0x158(%rbp), %rdx
callq 0x7b90
movq %rax, -0x6a0(%rbp)
jmp 0x8a6f
leaq -0x158(%rbp), %rdi
callq 0x7738
leaq -0x159(%rbp), %rdi
callq 0x73c0
movq -0x6a0(%rbp), %rax
movq %rax, -0x138(%rbp)
movss 0x12573(%rip), %xmm0    # 0x1b010
movss %xmm0, -0x160(%rbp)
movl $0x1, -0x164(%rbp)
movl $0x0, -0x168(%rbp)
movss 0x1254b(%rip), %xmm0    # 0x1b00c
movss %xmm0, -0x16c(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x170(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x74e0
movl $0x0, -0x194(%rbp)
movl $0x0, -0x198(%rbp)
movl $0x0, -0x19c(%rbp)
movl $0x0, -0x1a0(%rbp)
movb $0x0, -0x1a1(%rbp)
cmpq $0x0, -0x138(%rbp)
je 0x8c3c
movb $0x1, -0x1a1(%rbp)
jmp 0x8c3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8b4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x7738
leaq -0x99(%rbp), %rdi
callq 0x73c0
jmp 0xa45a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8b86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x7738
leaq -0xc9(%rbp), %rdi
callq 0x73c0
jmp 0xa45a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8bbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x7738
leaq -0xf9(%rbp), %rdi
callq 0x73c0
jmp 0xa45a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8bf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x7738
leaq -0x129(%rbp), %rdi
callq 0x73c0
jmp 0xa45a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8c2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x7738
leaq -0x159(%rbp), %rdi
callq 0x73c0
jmp 0xa45a
cmpq $0x0, -0xd8(%rbp)
je 0x8cde
movq -0xd8(%rbp), %rax
movq %rax, -0x6b0(%rbp)
leaq -0x1c9(%rbp), %rdi
movq %rdi, -0x6a8(%rbp)
callq 0x7680
movq -0x6b0(%rbp), %rsi
movq -0x6a8(%rbp), %rdx
leaq -0x1c8(%rbp), %rdi
callq 0xa470
jmp 0x8c87
leaq -0x1c9(%rbp), %rdi
callq 0x73c0
leaq -0x1c8(%rbp), %rdi
callq 0x7190
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x74c0
movss %xmm0, -0x160(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x7738
jmp 0x8cde
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1c9(%rbp), %rdi
callq 0x73c0
jmp 0xa440
cmpq $0x0, -0x108(%rbp)
je 0x8d82
movq -0x108(%rbp), %rax
movq %rax, -0x6c0(%rbp)
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x6b8(%rbp)
callq 0x7680
movq -0x6c0(%rbp), %rsi
movq -0x6b8(%rbp), %rdx
leaq -0x1f0(%rbp), %rdi
callq 0xa470
jmp 0x8d29
leaq -0x1f1(%rbp), %rdi
callq 0x73c0
leaq -0x1f0(%rbp), %rdi
callq 0x7190
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x74c0
cvttss2si %xmm0, %eax
movl %eax, -0x164(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x7738
jmp 0x8d82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1f1(%rbp), %rdi
callq 0x73c0
jmp 0xa440
cmpq $0x0, -0x78(%rbp)
je 0x9e80
cmpq $0x0, -0xa8(%rbp)
je 0x9e80
leaq -0x210(%rbp), %rdi
callq 0xa660
leaq -0x228(%rbp), %rdi
callq 0xa660
testb $0x1, -0x1a1(%rbp)
je 0x8e19
movq 0x201ed(%rip), %rdi     # 0x28fb0
leaq 0x12394(%rip), %rsi     # 0x1b15e
callq 0x7370
movq %rax, -0x6c8(%rbp)
jmp 0x8dd8
movq -0x6c8(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x7370
movq %rax, -0x6d0(%rbp)
jmp 0x8df1
movq -0x6d0(%rbp), %rdi
movq 0x20181(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0x8e06
jmp 0x8e19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x9e63
movq -0x78(%rbp), %rax
movq %rax, -0x6e0(%rbp)
leaq -0x249(%rbp), %rdi
movq %rdi, -0x6d8(%rbp)
callq 0x7680
movq -0x6e0(%rbp), %rsi
movq -0x6d8(%rbp), %rdx
leaq -0x248(%rbp), %rdi
callq 0xa470
jmp 0x8e53
leaq -0x271(%rbp), %rdi
movq %rdi, -0x6e8(%rbp)
callq 0x7680
movq -0x6e8(%rbp), %rdx
leaq 0x122fb(%rip), %rsi     # 0x1b16f
leaq -0x270(%rbp), %rdi
callq 0xa470
jmp 0x8e82
leaq -0x248(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x85a0
movb %al, -0x6e9(%rbp)
jmp 0x8e9d
leaq -0x270(%rbp), %rdi
callq 0x7738
leaq -0x271(%rbp), %rdi
callq 0x73c0
leaq -0x248(%rbp), %rdi
callq 0x7738
leaq -0x249(%rbp), %rdi
callq 0x73c0
movb -0x6e9(%rbp), %al
testb $0x1, %al
jne 0x8edc
jmp 0x8f75
movq -0x78(%rbp), %rsi
movl -0x164(%rbp), %edx
leaq -0x290(%rbp), %rdi
callq 0x7f80
jmp 0x8ef4
leaq -0x210(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0xaa40
leaq -0x290(%rbp), %rdi
callq 0xa6f0
jmp 0x90d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8f64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x8f4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x7738
leaq -0x271(%rbp), %rdi
callq 0x73c0
leaq -0x248(%rbp), %rdi
callq 0x7738
leaq -0x249(%rbp), %rdi
callq 0x73c0
jmp 0x9e63
movq -0x78(%rbp), %rax
movq %rax, -0x700(%rbp)
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x6f8(%rbp)
callq 0x7680
movq -0x700(%rbp), %rsi
movq -0x6f8(%rbp), %rdx
leaq -0x2b0(%rbp), %rdi
callq 0xa470
jmp 0x8faf
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0x708(%rbp)
callq 0x7680
movq -0x708(%rbp), %rdx
leaq 0x121a7(%rip), %rsi     # 0x1b177
leaq -0x2d8(%rbp), %rdi
callq 0xa470
jmp 0x8fde
leaq -0x2b0(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x85a0
movb %al, -0x709(%rbp)
jmp 0x8ff9
leaq -0x2d8(%rbp), %rdi
callq 0x7738
leaq -0x2d9(%rbp), %rdi
callq 0x73c0
leaq -0x2b0(%rbp), %rdi
callq 0x7738
leaq -0x2b1(%rbp), %rdi
callq 0x73c0
movb -0x709(%rbp), %al
testb $0x1, %al
jne 0x9038
jmp 0x90ce
movq -0x78(%rbp), %rsi
movl -0x164(%rbp), %edx
leaq -0x2f8(%rbp), %rdi
callq 0x7d90
jmp 0x9050
leaq -0x210(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0xaa40
leaq -0x2f8(%rbp), %rdi
callq 0xa6f0
jmp 0x90ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x90bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x90a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x7738
leaq -0x2d9(%rbp), %rdi
callq 0x73c0
leaq -0x2b0(%rbp), %rdi
callq 0x7738
leaq -0x2b1(%rbp), %rdi
callq 0x73c0
jmp 0x9e63
jmp 0x90d0
testb $0x1, -0x1a1(%rbp)
je 0x91dd
movq 0x1fecc(%rip), %rdi     # 0x28fb0
leaq 0x12091(%rip), %rsi     # 0x1b17c
callq 0x7370
movq %rax, -0x718(%rbp)
jmp 0x90f9
leaq -0x210(%rbp), %rdi
callq 0xaa70
movq -0x718(%rbp), %rdi
movq %rax, %rsi
callq 0x70a0
movq %rax, -0x720(%rbp)
jmp 0x911d
movq -0x720(%rbp), %rdi
leaq 0x12059(%rip), %rsi     # 0x1b184
callq 0x7370
movq %rax, -0x728(%rbp)
jmp 0x9139
movslq -0x164(%rbp), %rax
movq %rax, -0x738(%rbp)
leaq -0x210(%rbp), %rdi
callq 0xaa70
movq -0x738(%rbp), %rsi
movq -0x728(%rbp), %rdi
imulq %rax, %rsi
callq 0x70a0
movq %rax, -0x730(%rbp)
jmp 0x9173
movq -0x730(%rbp), %rdi
leaq 0x12015(%rip), %rsi     # 0x1b196
callq 0x7370
movq %rax, -0x740(%rbp)
jmp 0x918f
movq -0x740(%rbp), %rdi
movl -0x164(%rbp), %esi
callq 0x7650
movq %rax, -0x748(%rbp)
jmp 0x91aa
movq -0x748(%rbp), %rdi
leaq 0x12724(%rip), %rsi     # 0x1b8dc
callq 0x7370
movq %rax, -0x750(%rbp)
jmp 0x91c6
movq -0x750(%rbp), %rdi
movq 0x1fdac(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0x91db
jmp 0x91dd
testb $0x1, -0x1a1(%rbp)
je 0x9235
movq 0x1fdc3(%rip), %rdi     # 0x28fb0
leaq 0x11faa(%rip), %rsi     # 0x1b19e
callq 0x7370
movq %rax, -0x758(%rbp)
jmp 0x9202
movq -0x758(%rbp), %rdi
movq -0xa8(%rbp), %rsi
callq 0x7370
movq %rax, -0x760(%rbp)
jmp 0x921e
movq -0x760(%rbp), %rdi
movq 0x1fd54(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0x9233
jmp 0x9235
movq -0xa8(%rbp), %rax
movq %rax, -0x770(%rbp)
leaq -0x319(%rbp), %rdi
movq %rdi, -0x768(%rbp)
callq 0x7680
movq -0x770(%rbp), %rsi
movq -0x768(%rbp), %rdx
leaq -0x318(%rbp), %rdi
callq 0xa470
jmp 0x9272
leaq -0x341(%rbp), %rdi
movq %rdi, -0x778(%rbp)
callq 0x7680
movq -0x778(%rbp), %rdx
leaq 0x11edc(%rip), %rsi     # 0x1b16f
leaq -0x340(%rbp), %rdi
callq 0xa470
jmp 0x92a1
leaq -0x318(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x85a0
movb %al, -0x779(%rbp)
jmp 0x92bc
leaq -0x340(%rbp), %rdi
callq 0x7738
leaq -0x341(%rbp), %rdi
callq 0x73c0
leaq -0x318(%rbp), %rdi
callq 0x7738
leaq -0x319(%rbp), %rdi
callq 0x73c0
movb -0x779(%rbp), %al
testb $0x1, %al
jne 0x92fb
jmp 0x9397
movq -0xa8(%rbp), %rsi
movl -0x164(%rbp), %edx
leaq -0x360(%rbp), %rdi
callq 0x7f80
jmp 0x9316
leaq -0x228(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0xaa40
leaq -0x360(%rbp), %rdi
callq 0xa6f0
jmp 0x94f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x9386
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x936e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x7738
leaq -0x341(%rbp), %rdi
callq 0x73c0
leaq -0x318(%rbp), %rdi
callq 0x7738
leaq -0x319(%rbp), %rdi
callq 0x73c0
jmp 0x9e63
movq -0xa8(%rbp), %rax
movq %rax, -0x790(%rbp)
leaq -0x381(%rbp), %rdi
movq %rdi, -0x788(%rbp)
callq 0x7680
movq -0x790(%rbp), %rsi
movq -0x788(%rbp), %rdx
leaq -0x380(%rbp), %rdi
callq 0xa470
jmp 0x93d4
leaq -0x3a9(%rbp), %rdi
movq %rdi, -0x798(%rbp)
callq 0x7680
movq -0x798(%rbp), %rdx
leaq 0x11d82(%rip), %rsi     # 0x1b177
leaq -0x3a8(%rbp), %rdi
callq 0xa470
jmp 0x9403
leaq -0x380(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x85a0
movb %al, -0x799(%rbp)
jmp 0x941e
leaq -0x3a8(%rbp), %rdi
callq 0x7738
leaq -0x3a9(%rbp), %rdi
callq 0x73c0
leaq -0x380(%rbp), %rdi
callq 0x7738
leaq -0x381(%rbp), %rdi
callq 0x73c0
movb -0x799(%rbp), %al
testb $0x1, %al
jne 0x945d
jmp 0x94f6
movq -0xa8(%rbp), %rsi
movl -0x164(%rbp), %edx
leaq -0x3c8(%rbp), %rdi
callq 0x7d90
jmp 0x9478
leaq -0x228(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0xaa40
leaq -0x3c8(%rbp), %rdi
callq 0xa6f0
jmp 0x94f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x94e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x94cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0x7738
leaq -0x3a9(%rbp), %rdi
callq 0x73c0
leaq -0x380(%rbp), %rdi
callq 0x7738
leaq -0x381(%rbp), %rdi
callq 0x73c0
jmp 0x9e63
jmp 0x94f8
testb $0x1, -0x1a1(%rbp)
je 0x9605
movq 0x1faa4(%rip), %rdi     # 0x28fb0
leaq 0x11c69(%rip), %rsi     # 0x1b17c
callq 0x7370
movq %rax, -0x7a8(%rbp)
jmp 0x9521
leaq -0x228(%rbp), %rdi
callq 0xaa70
movq -0x7a8(%rbp), %rdi
movq %rax, %rsi
callq 0x70a0
movq %rax, -0x7b0(%rbp)
jmp 0x9545
movq -0x7b0(%rbp), %rdi
leaq 0x11c31(%rip), %rsi     # 0x1b184
callq 0x7370
movq %rax, -0x7b8(%rbp)
jmp 0x9561
movslq -0x164(%rbp), %rax
movq %rax, -0x7c8(%rbp)
leaq -0x228(%rbp), %rdi
callq 0xaa70
movq -0x7c8(%rbp), %rsi
movq -0x7b8(%rbp), %rdi
imulq %rax, %rsi
callq 0x70a0
movq %rax, -0x7c0(%rbp)
jmp 0x959b
movq -0x7c0(%rbp), %rdi
leaq 0x11bed(%rip), %rsi     # 0x1b196
callq 0x7370
movq %rax, -0x7d0(%rbp)
jmp 0x95b7
movq -0x7d0(%rbp), %rdi
movl -0x164(%rbp), %esi
callq 0x7650
movq %rax, -0x7d8(%rbp)
jmp 0x95d2
movq -0x7d8(%rbp), %rdi
leaq 0x122fc(%rip), %rsi     # 0x1b8dc
callq 0x7370
movq %rax, -0x7e0(%rbp)
jmp 0x95ee
movq -0x7e0(%rbp), %rdi
movq 0x1f984(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0x9603
jmp 0x9605
testb $0x1, -0x1a1(%rbp)
je 0x965e
movq 0x1f99b(%rip), %rdi     # 0x28fb0
leaq 0x11b93(%rip), %rsi     # 0x1b1af
callq 0x7370
movq %rax, -0x7e8(%rbp)
jmp 0x962a
movq -0x7e8(%rbp), %rdi
movss 0x1fd6f(%rip), %xmm0    # 0x293a8
callq 0x72a0
movq %rax, -0x7f0(%rbp)
jmp 0x9647
movq -0x7f0(%rbp), %rdi
movq 0x1f92b(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0x965c
jmp 0x965e
testb $0x1, -0x1a1(%rbp)
je 0x969a
movq 0x1f942(%rip), %rdi     # 0x28fb0
leaq 0x11b49(%rip), %rsi     # 0x1b1be
callq 0x7370
movq %rax, -0x7f8(%rbp)
jmp 0x9683
movq -0x7f8(%rbp), %rdi
movq 0x1f8ef(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0x9698
jmp 0x969a
leaq -0x210(%rbp), %rdi
callq 0xaa70
movq %rax, -0x800(%rbp)
leaq -0x228(%rbp), %rdi
callq 0xaa70
movq %rax, %rcx
movq -0x800(%rbp), %rax
cmpq %rcx, %rax
jbe 0x9783
movq 0x1f915(%rip), %rdi     # 0x28fe8
leaq 0x1fd46(%rip), %rsi     # 0x29420
callq 0x7320
movq %rax, -0x808(%rbp)
jmp 0x96e8
movq -0x808(%rbp), %rdi
leaq 0x11ad5(%rip), %rsi     # 0x1b1cb
callq 0x7370
movq %rax, -0x810(%rbp)
jmp 0x9704
movq -0x810(%rbp), %rdi
movq -0xa8(%rbp), %rsi
callq 0x7370
movq %rax, -0x818(%rbp)
jmp 0x9720
movq -0x818(%rbp), %rdi
leaq 0x121ae(%rip), %rsi     # 0x1b8dc
callq 0x7370
movq %rax, -0x820(%rbp)
jmp 0x973c
movq -0x820(%rbp), %rdi
leaq 0x1fd36(%rip), %rsi     # 0x29480
callq 0x7320
movq %rax, -0x828(%rbp)
jmp 0x9758
movq -0x828(%rbp), %rdi
movq 0x1f81a(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0x976d
movl $0x1, -0x4(%rbp)
movl $0x1, -0x3cc(%rbp)
jmp 0x9e36
movl $0x0, -0x3d0(%rbp)
movslq -0x3d0(%rbp), %rax
movq %rax, -0x830(%rbp)
leaq -0x228(%rbp), %rdi
callq 0xaa70
movq %rax, -0x838(%rbp)
leaq -0x210(%rbp), %rdi
callq 0xaa70
movq -0x838(%rbp), %rcx
movq %rax, %rdx
movq -0x830(%rbp), %rax
subq %rdx, %rcx
cmpq %rcx, %rax
jae 0x9e2c
movl -0x1a0(%rbp), %eax
imull -0x164(%rbp), %eax
cvtsi2ss %eax, %xmm0
ucomiss 0x1fbb9(%rip), %xmm0    # 0x293a8
jb 0x980a
movl $0x0, -0x1a0(%rbp)
movl -0x19c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x19c(%rbp)
cmpl $0x3b, -0x19c(%rbp)
jle 0x982c
movl $0x0, -0x19c(%rbp)
movl -0x198(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x198(%rbp)
cmpl $0x3b, -0x198(%rbp)
jle 0x984e
movl $0x0, -0x198(%rbp)
movl -0x194(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x194(%rbp)
leaq -0x558(%rbp), %rdi
callq 0x7270
jmp 0x985c
leaq -0x548(%rbp), %rax
movq %rax, -0x848(%rbp)
movl $0x30, %edi
callq 0xaa90
movb %al, -0x839(%rbp)
jmp 0x987c
movq -0x848(%rbp), %rdi
movb -0x839(%rbp), %al
movb %al, -0x559(%rbp)
movzbl -0x559(%rbp), %esi
callq 0x75a0
movq %rax, -0x850(%rbp)
jmp 0x98a4
movl $0x2, %edi
callq 0xaab0
movl %eax, -0x854(%rbp)
jmp 0x98b6
movq -0x850(%rbp), %rdi
movl -0x854(%rbp), %eax
movl %eax, -0x560(%rbp)
movl -0x560(%rbp), %esi
callq 0x7430
movq %rax, -0x860(%rbp)
jmp 0x98dd
movq -0x860(%rbp), %rdi
movl -0x194(%rbp), %esi
callq 0x7650
jmp 0x98f1
leaq -0x548(%rbp), %rdi
leaq 0x1198c(%rip), %rsi     # 0x1b28b
callq 0x7370
jmp 0x9906
leaq -0x548(%rbp), %rax
movq %rax, -0x870(%rbp)
movl $0x30, %edi
callq 0xaa90
movb %al, -0x861(%rbp)
jmp 0x9926
movq -0x870(%rbp), %rdi
movb -0x861(%rbp), %al
movb %al, -0x561(%rbp)
movzbl -0x561(%rbp), %esi
callq 0x75a0
movq %rax, -0x878(%rbp)
jmp 0x994e
movl $0x2, %edi
callq 0xaab0
movl %eax, -0x87c(%rbp)
jmp 0x9960
movq -0x878(%rbp), %rdi
movl -0x87c(%rbp), %eax
movl %eax, -0x568(%rbp)
movl -0x568(%rbp), %esi
callq 0x7430
movq %rax, -0x888(%rbp)
jmp 0x9987
movq -0x888(%rbp), %rdi
movl -0x198(%rbp), %esi
callq 0x7650
jmp 0x999b
leaq -0x548(%rbp), %rdi
leaq 0x118e2(%rip), %rsi     # 0x1b28b
callq 0x7370
jmp 0x99b0
leaq -0x548(%rbp), %rax
movq %rax, -0x898(%rbp)
movl $0x30, %edi
callq 0xaa90
movb %al, -0x889(%rbp)
jmp 0x99d0
movq -0x898(%rbp), %rdi
movb -0x889(%rbp), %al
movb %al, -0x569(%rbp)
movzbl -0x569(%rbp), %esi
callq 0x75a0
movq %rax, -0x8a0(%rbp)
jmp 0x99f8
movl $0x2, %edi
callq 0xaab0
movl %eax, -0x8a4(%rbp)
jmp 0x9a0a
movq -0x8a0(%rbp), %rdi
movl -0x8a4(%rbp), %eax
movl %eax, -0x570(%rbp)
movl -0x570(%rbp), %esi
callq 0x7430
movq %rax, -0x8b0(%rbp)
jmp 0x9a31
movq -0x8b0(%rbp), %rdi
movl -0x19c(%rbp), %esi
callq 0x7650
jmp 0x9a45
leaq -0x548(%rbp), %rdi
leaq 0x11838(%rip), %rsi     # 0x1b28b
callq 0x7370
jmp 0x9a5a
leaq -0x548(%rbp), %rax
movq %rax, -0x8c0(%rbp)
movl $0x30, %edi
callq 0xaa90
movb %al, -0x8b1(%rbp)
jmp 0x9a7a
movq -0x8c0(%rbp), %rdi
movb -0x8b1(%rbp), %al
movb %al, -0x571(%rbp)
movzbl -0x571(%rbp), %esi
callq 0x75a0
movq %rax, -0x8c8(%rbp)
jmp 0x9aa2
movl $0x2, %edi
callq 0xaab0
movl %eax, -0x8cc(%rbp)
jmp 0x9ab4
movq -0x8c8(%rbp), %rdi
movl -0x8cc(%rbp), %eax
movl %eax, -0x578(%rbp)
movl -0x578(%rbp), %esi
callq 0x7430
movq %rax, -0x8d8(%rbp)
jmp 0x9adb
movq -0x8d8(%rbp), %rdi
movl -0x1a0(%rbp), %esi
callq 0x7650
jmp 0x9aef
leaq -0x598(%rbp), %rdi
leaq -0x558(%rbp), %rsi
callq 0x7360
jmp 0x9b04
cmpl $0x2, -0x168(%rbp)
jne 0x9b2d
movl $0x2, -0x3cc(%rbp)
jmp 0x9de2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x9e1e
movslq -0x3d0(%rbp), %rsi
leaq -0x228(%rbp), %rdi
callq 0xaaf0
movss (%rax), %xmm0
movss %xmm0, -0x8e0(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x210(%rbp), %rdi
callq 0xaaf0
movss -0x8e0(%rbp), %xmm0
movss (%rax), %xmm1
subss %xmm1, %xmm0
callq 0xaad0
movss %xmm0, -0x8dc(%rbp)
jmp 0x9b7b
movss -0x8dc(%rbp), %xmm1
movss -0x160(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x9dc9
xorps %xmm0, %xmm0
movss %xmm0, -0x59c(%rbp)
movl $0x0, -0x5a0(%rbp)
movl $0x0, -0x5a4(%rbp)
movslq -0x5a4(%rbp), %rax
movq %rax, -0x8e8(%rbp)
leaq -0x210(%rbp), %rdi
callq 0xaa70
movq %rax, %rcx
movq -0x8e8(%rbp), %rax
cmpq %rcx, %rax
jae 0x9ca7
movss -0x59c(%rbp), %xmm0
movss %xmm0, -0x8f4(%rbp)
movl -0x5a4(%rbp), %eax
movl -0x3d0(%rbp), %ecx
addl %ecx, %eax
movslq %eax, %rsi
leaq -0x228(%rbp), %rdi
callq 0xaaf0
movss (%rax), %xmm0
movss %xmm0, -0x8f0(%rbp)
movslq -0x5a4(%rbp), %rsi
leaq -0x210(%rbp), %rdi
callq 0xaaf0
movss -0x8f0(%rbp), %xmm0
movss (%rax), %xmm1
subss %xmm1, %xmm0
callq 0xaad0
movss %xmm0, -0x8ec(%rbp)
jmp 0x9c4b
movss -0x8ec(%rbp), %xmm1
movss -0x8f4(%rbp), %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x59c(%rbp)
movl -0x5a0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5a0(%rbp)
movl -0x5a4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5a4(%rbp)
jmp 0x9bb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x598(%rbp), %rdi
callq 0x7738
jmp 0x9e1e
movss -0x59c(%rbp), %xmm0
cvtsi2ssl -0x5a0(%rbp), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x59c(%rbp)
movss -0x59c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x9d16
jp 0x9d16
movl $0x2, -0x168(%rbp)
movl -0x3d0(%rbp), %eax
movl -0x164(%rbp), %ecx
imull %ecx, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x170(%rbp)
leaq -0x190(%rbp), %rdi
leaq -0x598(%rbp), %rsi
callq 0x7030
jmp 0x9d14
jmp 0x9d16
movss -0x59c(%rbp), %xmm1
movss -0x160(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x9d70
cmpl $0x2, -0x168(%rbp)
je 0x9d70
movl $0x1, -0x168(%rbp)
movl -0x3d0(%rbp), %eax
movl -0x164(%rbp), %ecx
imull %ecx, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x170(%rbp)
leaq -0x190(%rbp), %rdi
leaq -0x598(%rbp), %rsi
callq 0x7030
jmp 0x9d6e
jmp 0x9d70
movss -0x59c(%rbp), %xmm1
movss -0x16c(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x9dc7
movss -0x59c(%rbp), %xmm0
movss %xmm0, -0x16c(%rbp)
movl -0x3d0(%rbp), %eax
movl -0x164(%rbp), %ecx
imull %ecx, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x170(%rbp)
leaq -0x190(%rbp), %rdi
leaq -0x598(%rbp), %rsi
callq 0x7030
jmp 0x9dc5
jmp 0x9dc7
jmp 0x9dc9
movl -0x1a0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1a0(%rbp)
movl $0x0, -0x3cc(%rbp)
leaq -0x598(%rbp), %rdi
callq 0x7738
leaq -0x558(%rbp), %rdi
callq 0x72b0
movl -0x3cc(%rbp), %eax
testl %eax, %eax
je 0x9e08
jmp 0x9e06
jmp 0x9e2c
jmp 0x9e0a
movl -0x3d0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3d0(%rbp)
jmp 0x978d
leaq -0x558(%rbp), %rdi
callq 0x72b0
jmp 0x9e63
movl $0x0, -0x3cc(%rbp)
leaq -0x228(%rbp), %rdi
callq 0xa6f0
leaq -0x210(%rbp), %rdi
callq 0xa6f0
movl -0x3cc(%rbp), %eax
testl %eax, %eax
jne 0xa432
jmp 0x9e5e
jmp 0x9f30
leaq -0x228(%rbp), %rdi
callq 0xa6f0
leaq -0x210(%rbp), %rdi
callq 0xa6f0
jmp 0xa440
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x908(%rbp)
leaq -0x5c9(%rbp), %rdi
movq %rdi, -0x900(%rbp)
callq 0x7680
movq -0x908(%rbp), %rsi
movq -0x900(%rbp), %rdx
leaq -0x5c8(%rbp), %rdi
callq 0xa470
jmp 0x9ebd
leaq -0x5c8(%rbp), %rdi
callq 0x85e0
jmp 0x9ecb
leaq -0x5c8(%rbp), %rdi
callq 0x7738
leaq -0x5c9(%rbp), %rdi
callq 0x73c0
movl $0x0, -0x4(%rbp)
movl $0x1, -0x3cc(%rbp)
jmp 0xa432
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x9f1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x5c8(%rbp), %rdi
callq 0x7738
leaq -0x5c9(%rbp), %rdi
callq 0x73c0
jmp 0xa440
cmpl $0x0, -0x168(%rbp)
jne 0xa086
testb $0x1, -0x1a1(%rbp)
je 0xa070
movq 0x1f05f(%rip), %rdi     # 0x28fb0
leaq 0x112a6(%rip), %rsi     # 0x1b1fe
callq 0x7370
movq %rax, -0x910(%rbp)
jmp 0x9f66
movq -0x910(%rbp), %rdi
movss -0x160(%rbp), %xmm0
callq 0x72a0
movq %rax, -0x918(%rbp)
jmp 0x9f83
movq -0x918(%rbp), %rdi
leaq 0x11285(%rip), %rsi     # 0x1b216
callq 0x7370
movq %rax, -0x920(%rbp)
jmp 0x9f9f
movq -0x920(%rbp), %rdi
leaq 0x1f473(%rip), %rsi     # 0x29420
callq 0x7320
movq %rax, -0x928(%rbp)
jmp 0x9fbb
movq -0x928(%rbp), %rdi
movss -0x16c(%rbp), %xmm0
callq 0x72a0
movq %rax, -0x930(%rbp)
jmp 0x9fd8
movq -0x930(%rbp), %rdi
leaq 0x1f49a(%rip), %rsi     # 0x29480
callq 0x7320
movq %rax, -0x938(%rbp)
jmp 0x9ff4
movq -0x938(%rbp), %rdi
leaq 0x111f9(%rip), %rsi     # 0x1b1fb
callq 0x7370
movq %rax, -0x940(%rbp)
jmp 0xa010
movq -0x940(%rbp), %rdi
movq -0xa8(%rbp), %rsi
callq 0x7370
movq %rax, -0x948(%rbp)
jmp 0xa02c
movq -0x948(%rbp), %rdi
leaq 0x118a2(%rip), %rsi     # 0x1b8dc
callq 0x7370
movq %rax, -0x950(%rbp)
jmp 0xa048
movq -0x950(%rbp), %rdi
movq 0x1ef2a(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0xa05d
jmp 0xa070
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xa440
movl $0x1, -0x4(%rbp)
movl $0x1, -0x3cc(%rbp)
jmp 0xa432
cmpl $0x1, -0x168(%rbp)
jne 0xa274
movq 0x1ef16(%rip), %rdi     # 0x28fb0
leaq 0x1f35f(%rip), %rsi     # 0x29400
callq 0x7320
movq %rax, -0x958(%rbp)
jmp 0xa0af
movq -0x958(%rbp), %rdi
leaq 0x11162(%rip), %rsi     # 0x1b21f
callq 0x7370
movq %rax, -0x960(%rbp)
jmp 0xa0cb
movq -0x960(%rbp), %rdi
leaq 0x1f3a7(%rip), %rsi     # 0x29480
callq 0x7320
movq %rax, -0x968(%rbp)
jmp 0xa0e7
movq -0x968(%rbp), %rdi
leaq 0x1113c(%rip), %rsi     # 0x1b231
callq 0x7370
movq %rax, -0x970(%rbp)
jmp 0xa103
movq -0x970(%rbp), %rdi
movss -0x160(%rbp), %xmm0
callq 0x72a0
movq %rax, -0x978(%rbp)
jmp 0xa120
movq -0x978(%rbp), %rdi
leaq 0x11119(%rip), %rsi     # 0x1b247
callq 0x7370
movq %rax, -0x980(%rbp)
jmp 0xa13c
movq -0x980(%rbp), %rdi
leaq 0x1f2d6(%rip), %rsi     # 0x29420
callq 0x7320
movq %rax, -0x988(%rbp)
jmp 0xa158
movq -0x988(%rbp), %rdi
movss -0x16c(%rbp), %xmm0
callq 0x72a0
movq %rax, -0x990(%rbp)
jmp 0xa175
movq -0x990(%rbp), %rdi
leaq 0x1f2fd(%rip), %rsi     # 0x29480
callq 0x7320
movq %rax, -0x998(%rbp)
jmp 0xa191
movq -0x998(%rbp), %rdi
movq 0x1ede1(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0xa1a6
movq -0xa8(%rbp), %rsi
movq 0x1edfc(%rip), %rdi     # 0x28fb0
callq 0x7370
movq %rax, -0x9a0(%rbp)
jmp 0xa1c2
movq -0x9a0(%rbp), %rdi
movq 0x1edb0(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0xa1d7
movq 0x1edd2(%rip), %rdi     # 0x28fb0
leaq 0x11070(%rip), %rsi     # 0x1b255
callq 0x7370
movq %rax, -0x9a8(%rbp)
jmp 0xa1f3
movq -0x9a8(%rbp), %rdi
movss -0x170(%rbp), %xmm0
callq 0x72a0
movq %rax, -0x9b0(%rbp)
jmp 0xa210
movq -0x9b0(%rbp), %rdi
movq 0x1ed62(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0xa225
movq 0x1ed84(%rip), %rdi     # 0x28fb0
leaq 0x11027(%rip), %rsi     # 0x1b25a
callq 0x7370
movq %rax, -0x9b8(%rbp)
jmp 0xa241
movq -0x9b8(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x7320
movq %rax, -0x9c0(%rbp)
jmp 0xa25d
movq -0x9c0(%rbp), %rdi
movq 0x1ed15(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0xa272
jmp 0xa274
cmpl $0x2, -0x168(%rbp)
jne 0xa421
movq 0x1ed28(%rip), %rdi     # 0x28fb0
leaq 0x1f171(%rip), %rsi     # 0x29400
callq 0x7320
movq %rax, -0x9c8(%rbp)
jmp 0xa29d
movq -0x9c8(%rbp), %rdi
leaq 0x10fb4(%rip), %rsi     # 0x1b25f
callq 0x7370
movq %rax, -0x9d0(%rbp)
jmp 0xa2b9
movq -0x9d0(%rbp), %rdi
leaq 0x1f1b9(%rip), %rsi     # 0x29480
callq 0x7320
movq %rax, -0x9d8(%rbp)
jmp 0xa2d5
movq -0x9d8(%rbp), %rdi
leaq 0x10f8c(%rip), %rsi     # 0x1b26f
callq 0x7370
movq %rax, -0x9e0(%rbp)
jmp 0xa2f1
movq -0x9e0(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x7370
movq %rax, -0x9e8(%rbp)
jmp 0xa30a
movq -0x9e8(%rbp), %rdi
leaq 0x10f5e(%rip), %rsi     # 0x1b276
callq 0x7370
movq %rax, -0x9f0(%rbp)
jmp 0xa326
movq -0x9f0(%rbp), %rdi
movq -0xa8(%rbp), %rsi
callq 0x7370
movq %rax, -0x9f8(%rbp)
jmp 0xa342
movq -0x9f8(%rbp), %rdi
leaq 0x10f2c(%rip), %rsi     # 0x1b27c
callq 0x7370
movq %rax, -0xa00(%rbp)
jmp 0xa35e
movq -0xa00(%rbp), %rdi
movq 0x1ec14(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0xa373
movq 0x1ec36(%rip), %rdi     # 0x28fb0
leaq 0x10ed4(%rip), %rsi     # 0x1b255
callq 0x7370
movq %rax, -0xa08(%rbp)
jmp 0xa38f
movq -0xa08(%rbp), %rdi
movss -0x170(%rbp), %xmm0
callq 0x72a0
movq %rax, -0xa10(%rbp)
jmp 0xa3ac
movq -0xa10(%rbp), %rdi
movq 0x1ebc6(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0xa3c1
movq 0x1ebe8(%rip), %rdi     # 0x28fb0
leaq 0x10e8b(%rip), %rsi     # 0x1b25a
callq 0x7370
movq %rax, -0xa18(%rbp)
jmp 0xa3dd
movq -0xa18(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x7320
movq %rax, -0xa20(%rbp)
jmp 0xa3f9
movq -0xa20(%rbp), %rdi
movq 0x1eb79(%rip), %rsi     # 0x28f80
callq 0x73a0
jmp 0xa40e
movl $0x0, -0x4(%rbp)
movl $0x1, -0x3cc(%rbp)
jmp 0xa432
movl $0x0, -0x4(%rbp)
movl $0x1, -0x3cc(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x7738
jmp 0xa44e
leaq -0x190(%rbp), %rdi
callq 0x7738
jmp 0xa45a
movl -0x4(%rbp), %eax
addq $0xa20, %rsp            # imm = 0xA20
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x7660
nopw %cs:(%rax,%rax)
nopl (%rax)