// File: UBOdin[P]jitd-cpp/src/jitd_tester.cpp
// Function: jitd_test(JITD<Record, PureLocalPolicy<Record>>&, std::istream&, bool, int)
int jitd_test(
  JITD<Record, JITD_TEST_POLICY> &jitd, 
  istream &input, 
  bool interactive, 
  int per_op_sleep_ms
) {
  string line;
  vector<std::thread> threads;
  
  timeval global_start, global_end;
  gettimeofday(&global_start, NULL);
  
  if(interactive) { cout << "jitd> "; cout.flush(); }
  while(getline(input, line)){
    istringstream toks(line);
    string op;
    
    CASE_1("--") {
      // comment, ignore
      
    ///////////////// MUTATOR OPERATIONS /////////////////
    } CASE("init") {
      timeval start, end;
      RecordBuffer data = buffer_cmd(toks);
      gettimeofday(&start, NULL);
      jitd.init(data);
      gettimeofday(&end, NULL);
      cout << "Init JITD: " << total_time(start, end) << " us" << endl;
    } CASE("insert") {
      timeval start, end;
      RecordBuffer data = buffer_cmd(toks);
      gettimeofday(&start, NULL);
      jitd.insert(data);
      gettimeofday(&end, NULL);
      cout << "Insert into JITD: " << total_time(start, end) << " us" << endl;
    } CASE("remove") {
      timeval start, end;
      RecordBuffer data = buffer_cmd(toks);
      gettimeofday(&start, NULL);
      jitd.remove(data);
      gettimeofday(&end, NULL);
      cout << "Delete from JITD: " << total_time(start, end) << " us" << endl;

    ///////////////// POLICY OPERATIONS /////////////////    
    } CASE("policy_set") {
      
      CASE_1("cracksort"){
        int threshold;
        toks >> threshold;
        cout << "Switching to Crack/Sort Policy with Threshold of " << threshold << endl;
        jitd.getPolicy()->setScoreFunction(
          std::bind(CrackOrSortArraysBigFirst<Record>, threshold, std::placeholders::_1)
        );
        jitd.reinitPolicy();
      } else {
        cerr << "Invalid Policy " << op << endl;
        exit(-1);
      }

    } CASE("policy_act_once") {
      timeval start, end;
      jitd.getPolicy()->describeNext();
      JITD_TEST_POLICY *policy = jitd.getPolicy();
      gettimeofday(&start, NULL);
      policy->act();
      gettimeofday(&end, NULL);
      cout << "Policy Action: " << total_time(start, end) << " us" << endl;

    } CASE("policy_act_for") {
      int target_steps;
      double used_microseconds = 0;
      timeval start, end;
      JITD_TEST_POLICY *policy = jitd.getPolicy();

      toks >> target_steps;

      for(int x = 0; x < target_steps; x++){
        gettimeofday(&start, NULL);
        policy->act();
        gettimeofday(&end, NULL);
        used_microseconds += total_time(start, end);
      }

      cout << "Policy " << target_steps << " Actions: " << used_microseconds << " us" << endl;

    } CASE("policy_act_until_done") {
      bool more_work_to_do = true;
      int steps_taken;
      timeval start, end;
      JITD_TEST_POLICY *policy = jitd.getPolicy();

      gettimeofday(&start, NULL);
      while(more_work_to_do){
        steps_taken++;
        more_work_to_do = policy->act();
      }
      gettimeofday(&end, NULL);
      cout << "Policy " << steps_taken << " Actions: " << total_time(start, end) << " us" << endl;


    ///////////////// ACCESS OPERATIONS /////////////////    
    } CASE("scan") {
      Iterator<Record> iter = jitd.iterator();
      timeval start, end;
      int idx = 0;
      
      while(!toks.eof() && !iter->atEnd()){
        CASE_1("flush") { // no argument
          int startidx = idx;
          gettimeofday(&start, NULL);
          while(!iter->atEnd()){ iter->next(); idx++; }
          gettimeofday(&end, NULL);
          cout << "Records Flushed: " << (idx - startidx) << endl;
          cout << "Flush Time: " << total_time(start, end) << " us" << endl;
        } CASE("full") { // no argument
          while(!iter->atEnd()){ 
            cout << idx << " -> " << iter->get()->key << endl;
            iter->next(); 
            idx++; 
          }
        } CASE("step") { // no argument
          cout << idx << " -> " << iter->get()->key << endl;
          idx++;
          iter->next();
        } CASE("next") { // [CNT]
          int cnt;
          for(toks >> cnt; (cnt > 0) && !iter->atEnd(); cnt--){
            cout << idx << " -> " << iter->get()->key << endl;
            idx++;
            iter->next();
          }
        } CASE("quiet_next") { // [CNT]
          int cnt, startidx = idx;
          for(toks >> cnt; (cnt > 0) && !iter->atEnd(); cnt--){ 
            idx++;
            iter->next();
          }
        } CASE("seek") { // [TARGET]
          Record target;
          toks >> target.key;
          target.value = NULL;
          gettimeofday(&start, NULL);
          iter->seek(target);
          gettimeofday(&end, NULL);
          cout << "Seek Time: " << total_time(start, end) << " us" << endl;
        } CASE("quiet_seek") { // [TARGET]
          Record target;
          toks >> target.key;
          target.value = NULL;
          iter->seek(target);
        }
      }
    } CASE("random_scan") {
      int time_in_ms, max_key, key_cnt;
      long int scan_count = 0;
      timeval start, end;
      Record target;
      target.value = NULL;
      toks >> time_in_ms >> max_key >> key_cnt;
      gettimeofday(&start, NULL);
      gettimeofday(&end, NULL);
      
      cout << "Scanning for " << time_in_ms << " s in [0,"
           << max_key << ") -> " << key_cnt << " keys/read" << endl;
      while(total_time(start, end) < time_in_ms*1000){
        Iterator<Record> iter = jitd.iterator();
        target.key = rand() % max_key;
        iter->seek(target);
        for(; key_cnt > 0; key_cnt--) { iter->next(); }
        scan_count++;
        
        gettimeofday(&end, NULL);
      }
      cout << "Random Scan: " << scan_count << " scans over "
           << total_time(start, end)/(1000*1000) << " s" << endl 
           << "Rate: " 
             << ((1000*1000*scan_count) / total_time(start, end))
             << " scans/sec" << endl;
    
    } CASE("spawn") {
      string file;
      toks >> file;
      threads.emplace_back(run_test_thread, &jitd, file, 0);

    } CASE("spawn_slow") {
      int delay_ms;
      string file;
      toks >> delay_ms >> file;
      threads.emplace_back(run_test_thread, &jitd, file, delay_ms);
    
    } CASE("spawn_updates") {
      Key max_key;
      int size;
      long int low_mark;
      long int high_mark;
      int seed = 42;
      int per_op_sleep_ms;
      int runtime_ms;
      
      toks >> max_key >> size >> low_mark >> high_mark >> per_op_sleep_ms >> runtime_ms;
      
      threads.emplace_back(run_update_thread, &jitd, max_key, size, low_mark, high_mark, seed, per_op_sleep_ms, runtime_ms);

    } CASE("run") {
      string file;
      toks >> file;
      run_test_thread(&jitd, file, per_op_sleep_ms);

    } CASE("time") {
      timeval end; 
      gettimeofday(&end, NULL);
      cout << "Time now: " << total_time(global_start, end)/(1000*1000) << endl;
    
    } CASE("sleep") {
      int ms;
      toks >> ms;
      this_thread::sleep_for(chrono::milliseconds(ms));
      
    } CASE("size") {
      cout << jitd.size() << " records" << endl;
    } CASE("dump") {
      jitd.printDebug();
      
    ///////////////// OOOPS /////////////////
    } else {
      cerr << "Invalid Test Operation: " << op << endl;
      exit(-1);
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xeb0, %rsp            # imm = 0xEB0
movb %dl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movl %ecx, -0x18(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x4350
leaq -0x50(%rbp), %rdi
callq 0x12ce0
leaq -0x60(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x43b0
testb $0x1, -0x11(%rbp)
je 0xfb88
movq 0x2046f(%rip), %rdi     # 0x2ffc8
leaq 0x10c73(%rip), %rsi     # 0x207d3
callq 0x4280
jmp 0xfb67
movq 0x2045a(%rip), %rdi     # 0x2ffc8
callq 0x41c0
jmp 0xfb75
jmp 0xfb88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x124c6
jmp 0xfb8a
movq -0x10(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x4050
movq %rax, -0x980(%rbp)
jmp 0xfba0
movq -0x980(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x4310
movb %al, -0x981(%rbp)
jmp 0xfbbe
movb -0x981(%rbp), %al
testb $0x1, %al
jne 0xfbcd
jmp 0x123ea
leaq -0x200(%rbp), %rdi
leaq -0x38(%rbp), %rsi
movl $0x8, %edx
callq 0x43e0
jmp 0xfbe4
leaq -0x220(%rbp), %rdi
movq %rdi, -0x990(%rbp)
callq 0x4350
movq -0x990(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0x4320
jmp 0xfc0c
leaq -0x241(%rbp), %rdi
movq %rdi, -0x998(%rbp)
callq 0x4430
movq -0x998(%rbp), %rdx
leaq 0x104c8(%rip), %rsi     # 0x200f5
leaq -0x240(%rbp), %rdi
callq 0x4340
jmp 0xfc3b
leaq -0x240(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0x999(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x4180
leaq -0x241(%rbp), %rdi
callq 0x42d0
movb -0x999(%rbp), %al
testb $0x1, %al
jne 0xfc78
jmp 0xfcab
jmp 0x1235d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x123cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x241(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
leaq -0x269(%rbp), %rdi
movq %rdi, -0x9a8(%rbp)
callq 0x4430
movq -0x9a8(%rbp), %rdx
leaq 0x10b0e(%rip), %rsi     # 0x207da
leaq -0x268(%rbp), %rdi
callq 0x4340
jmp 0xfcda
leaq -0x268(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0x9a9(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x4180
leaq -0x269(%rbp), %rdi
callq 0x42d0
movb -0x9a9(%rbp), %al
testb $0x1, %al
jne 0xfd1a
jmp 0xfe81
leaq -0x2a0(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x1e570
jmp 0xfd2f
xorl %eax, %eax
movl %eax, %esi
leaq -0x280(%rbp), %rdi
callq 0x43b0
movq -0x8(%rbp), %rax
movq %rax, -0x9c0(%rbp)
leaq -0x2b0(%rbp), %rdi
movq %rdi, -0x9b8(%rbp)
leaq -0x2a0(%rbp), %rsi
callq 0x73a0
movq -0x9c0(%rbp), %rdi
movq -0x9b8(%rbp), %rsi
callq 0x12d00
jmp 0xfd79
leaq -0x2b0(%rbp), %rdi
callq 0x72b0
xorl %eax, %eax
movl %eax, %esi
leaq -0x290(%rbp), %rdi
callq 0x43b0
movq 0x2022c(%rip), %rdi     # 0x2ffc8
leaq 0x10a3c(%rip), %rsi     # 0x207df
callq 0x4280
movq %rax, -0x9c8(%rbp)
jmp 0xfdb1
leaq -0x280(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0x9d0(%rbp)
jmp 0xfdce
movsd -0x9d0(%rbp), %xmm0
movq -0x9c8(%rbp), %rdi
callq 0x4470
movq %rax, -0x9d8(%rbp)
jmp 0xfdeb
movq -0x9d8(%rbp), %rdi
leaq 0x10328(%rip), %rsi     # 0x20121
callq 0x4280
movq %rax, -0x9e0(%rbp)
jmp 0xfe07
movq -0x9e0(%rbp), %rdi
movq 0x2018b(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0xfe1c
leaq -0x2a0(%rbp), %rdi
callq 0x72b0
jmp 0x1235b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x269(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x72b0
jmp 0xfe70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x72b0
jmp 0x123cd
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x9e8(%rbp)
callq 0x4430
movq -0x9e8(%rbp), %rdx
leaq 0x102ee(%rip), %rsi     # 0x20190
leaq -0x2d0(%rbp), %rdi
callq 0x4340
jmp 0xfeb0
leaq -0x2d0(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0x9e9(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x4180
leaq -0x2d1(%rbp), %rdi
callq 0x42d0
movb -0x9e9(%rbp), %al
testb $0x1, %al
jne 0xfef0
jmp 0x10057
leaq -0x308(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x1e570
jmp 0xff05
xorl %eax, %eax
movl %eax, %esi
leaq -0x2e8(%rbp), %rdi
callq 0x43b0
movq -0x8(%rbp), %rax
movq %rax, -0xa00(%rbp)
leaq -0x318(%rbp), %rdi
movq %rdi, -0x9f8(%rbp)
leaq -0x308(%rbp), %rsi
callq 0x73a0
movq -0xa00(%rbp), %rdi
movq -0x9f8(%rbp), %rsi
callq 0x12650
jmp 0xff4f
leaq -0x318(%rbp), %rdi
callq 0x72b0
xorl %eax, %eax
movl %eax, %esi
leaq -0x2f8(%rbp), %rdi
callq 0x43b0
movq 0x20056(%rip), %rdi     # 0x2ffc8
leaq 0x10872(%rip), %rsi     # 0x207eb
callq 0x4280
movq %rax, -0xa08(%rbp)
jmp 0xff87
leaq -0x2e8(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0xa10(%rbp)
jmp 0xffa4
movsd -0xa10(%rbp), %xmm0
movq -0xa08(%rbp), %rdi
callq 0x4470
movq %rax, -0xa18(%rbp)
jmp 0xffc1
movq -0xa18(%rbp), %rdi
leaq 0x10152(%rip), %rsi     # 0x20121
callq 0x4280
movq %rax, -0xa20(%rbp)
jmp 0xffdd
movq -0xa20(%rbp), %rdi
movq 0x1ffb5(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0xfff2
leaq -0x308(%rbp), %rdi
callq 0x72b0
jmp 0x12359
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x2d1(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x72b0
jmp 0x10046
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x72b0
jmp 0x123cd
leaq -0x339(%rbp), %rdi
movq %rdi, -0xa28(%rbp)
callq 0x4430
movq -0xa28(%rbp), %rdx
leaq 0x10786(%rip), %rsi     # 0x207fe
leaq -0x338(%rbp), %rdi
callq 0x4340
jmp 0x10086
leaq -0x338(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xa29(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x4180
leaq -0x339(%rbp), %rdi
callq 0x42d0
movb -0xa29(%rbp), %al
testb $0x1, %al
jne 0x100c6
jmp 0x1022d
leaq -0x370(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x1e570
jmp 0x100db
xorl %eax, %eax
movl %eax, %esi
leaq -0x350(%rbp), %rdi
callq 0x43b0
movq -0x8(%rbp), %rax
movq %rax, -0xa40(%rbp)
leaq -0x380(%rbp), %rdi
movq %rdi, -0xa38(%rbp)
leaq -0x370(%rbp), %rsi
callq 0x73a0
movq -0xa40(%rbp), %rdi
movq -0xa38(%rbp), %rsi
callq 0x12930
jmp 0x10125
leaq -0x380(%rbp), %rdi
callq 0x72b0
xorl %eax, %eax
movl %eax, %esi
leaq -0x360(%rbp), %rdi
callq 0x43b0
movq 0x1fe80(%rip), %rdi     # 0x2ffc8
leaq 0x106b6(%rip), %rsi     # 0x20805
callq 0x4280
movq %rax, -0xa48(%rbp)
jmp 0x1015d
leaq -0x350(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0xa50(%rbp)
jmp 0x1017a
movsd -0xa50(%rbp), %xmm0
movq -0xa48(%rbp), %rdi
callq 0x4470
movq %rax, -0xa58(%rbp)
jmp 0x10197
movq -0xa58(%rbp), %rdi
leaq 0xff7c(%rip), %rsi      # 0x20121
callq 0x4280
movq %rax, -0xa60(%rbp)
jmp 0x101b3
movq -0xa60(%rbp), %rdi
movq 0x1fddf(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x101c8
leaq -0x370(%rbp), %rdi
callq 0x72b0
jmp 0x12357
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x339(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x72b0
jmp 0x1021c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x370(%rbp), %rdi
callq 0x72b0
jmp 0x123cd
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0xa68(%rbp)
callq 0x4430
movq -0xa68(%rbp), %rdx
leaq 0x105ca(%rip), %rsi     # 0x20818
leaq -0x3a0(%rbp), %rdi
callq 0x4340
jmp 0x1025c
leaq -0x3a0(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xa69(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x4180
leaq -0x3a1(%rbp), %rdi
callq 0x42d0
movb -0xa69(%rbp), %al
testb $0x1, %al
jne 0x1029c
jmp 0x104af
leaq -0x200(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x4320
jmp 0x102b1
leaq -0x3c9(%rbp), %rdi
movq %rdi, -0xa78(%rbp)
callq 0x4430
movq -0xa78(%rbp), %rdx
leaq 0x10551(%rip), %rsi     # 0x20823
leaq -0x3c8(%rbp), %rdi
callq 0x4340
jmp 0x102e0
leaq -0x3c8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xa79(%rbp)
leaq -0x3c8(%rbp), %rdi
callq 0x4180
leaq -0x3c9(%rbp), %rdi
callq 0x42d0
movb -0xa79(%rbp), %al
testb $0x1, %al
jne 0x10320
jmp 0x10453
leaq -0x200(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x4170
jmp 0x10335
movq 0x1fc8c(%rip), %rdi     # 0x2ffc8
leaq 0x104ea(%rip), %rsi     # 0x2082d
callq 0x4280
movq %rax, -0xa88(%rbp)
jmp 0x10351
movq -0xa88(%rbp), %rdi
movl -0x3d0(%rbp), %esi
callq 0x4410
movq %rax, -0xa90(%rbp)
jmp 0x1036c
movq -0xa90(%rbp), %rdi
movq 0x1fc26(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x10381
movq -0x8(%rbp), %rdi
callq 0x12e40
movq %rax, -0xa98(%rbp)
jmp 0x10393
leaq 0x2b46(%rip), %rsi      # 0x12ee0
movq 0x1fc17(%rip), %rcx     # 0x2ffb8
leaq -0x400(%rbp), %rdi
leaq -0x3d0(%rbp), %rdx
callq 0x12e90
jmp 0x103b6
leaq -0x3f0(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x13030
jmp 0x103cb
movq -0xa98(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
callq 0x12e60
jmp 0x103e0
leaq -0x3f0(%rbp), %rdi
callq 0x130d0
movq -0x8(%rbp), %rdi
callq 0x130f0
jmp 0x103f7
jmp 0x104aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x3a1(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x3c9(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x3f0(%rbp), %rdi
callq 0x130d0
jmp 0x123cd
movq 0x1fb96(%rip), %rdi     # 0x2fff0
leaq 0x103fe(%rip), %rsi     # 0x2085f
callq 0x4280
movq %rax, -0xaa0(%rbp)
jmp 0x1046f
movq -0xaa0(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x4240
movq %rax, -0xaa8(%rbp)
jmp 0x1048b
movq -0xaa8(%rbp), %rdi
movq 0x1fb07(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x104a0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x4300
jmp 0x12355
leaq -0x421(%rbp), %rdi
movq %rdi, -0xab0(%rbp)
callq 0x4430
movq -0xab0(%rbp), %rdx
leaq 0x1039f(%rip), %rsi     # 0x2086f
leaq -0x420(%rbp), %rdi
callq 0x4340
jmp 0x104de
leaq -0x420(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xab1(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x4180
leaq -0x421(%rbp), %rdi
callq 0x42d0
movb -0xab1(%rbp), %al
testb $0x1, %al
jne 0x1051e
jmp 0x10635
movq -0x8(%rbp), %rdi
callq 0x12e40
movq %rax, -0xac0(%rbp)
jmp 0x10530
movq -0xac0(%rbp), %rdi
callq 0x13160
jmp 0x1053e
movq -0x8(%rbp), %rdi
callq 0x12e40
movq %rax, -0xac8(%rbp)
jmp 0x10550
movq -0xac8(%rbp), %rax
movq %rax, -0x450(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x438(%rbp), %rdi
callq 0x43b0
movq -0x450(%rbp), %rdi
callq 0x13200
jmp 0x1057c
xorl %eax, %eax
movl %eax, %esi
leaq -0x448(%rbp), %rdi
callq 0x43b0
movq 0x1fa35(%rip), %rdi     # 0x2ffc8
leaq 0x102e5(%rip), %rsi     # 0x2087f
callq 0x4280
movq %rax, -0xad0(%rbp)
jmp 0x105a8
leaq -0x438(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0xad8(%rbp)
jmp 0x105c5
movsd -0xad8(%rbp), %xmm0
movq -0xad0(%rbp), %rdi
callq 0x4470
movq %rax, -0xae0(%rbp)
jmp 0x105e2
movq -0xae0(%rbp), %rdi
leaq 0xfb31(%rip), %rsi      # 0x20121
callq 0x4280
movq %rax, -0xae8(%rbp)
jmp 0x105fe
movq -0xae8(%rbp), %rdi
movq 0x1f994(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x10613
jmp 0x12353
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x421(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
leaq -0x471(%rbp), %rdi
movq %rdi, -0xaf0(%rbp)
callq 0x4430
movq -0xaf0(%rbp), %rdx
leaq 0x10239(%rip), %rsi     # 0x2088f
leaq -0x470(%rbp), %rdi
callq 0x4340
jmp 0x10664
leaq -0x470(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xaf1(%rbp)
leaq -0x470(%rbp), %rdi
callq 0x4180
leaq -0x471(%rbp), %rdi
callq 0x42d0
movb -0xaf1(%rbp), %al
testb $0x1, %al
jne 0x106a4
jmp 0x10841
movq $0x0, -0x480(%rbp)
movq -0x8(%rbp), %rdi
callq 0x12e40
movq %rax, -0xb00(%rbp)
jmp 0x106c1
movq -0xb00(%rbp), %rax
movq %rax, -0x4a8(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0x4170
jmp 0x106e4
movl $0x0, -0x4ac(%rbp)
movl -0x4ac(%rbp), %eax
cmpl -0x478(%rbp), %eax
jge 0x1079b
xorl %eax, %eax
movl %eax, %esi
leaq -0x490(%rbp), %rdi
callq 0x43b0
movq -0x4a8(%rbp), %rdi
callq 0x13200
jmp 0x1071e
xorl %eax, %eax
movl %eax, %esi
leaq -0x4a0(%rbp), %rdi
movq %rdi, -0xb10(%rbp)
callq 0x43b0
movq -0xb10(%rbp), %rsi
leaq -0x490(%rbp), %rdi
callq 0x1e520
movsd %xmm0, -0xb08(%rbp)
jmp 0x10752
movsd -0xb08(%rbp), %xmm0
addsd -0x480(%rbp), %xmm0
movsd %xmm0, -0x480(%rbp)
movl -0x4ac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4ac(%rbp)
jmp 0x106ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x471(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq 0x1f826(%rip), %rdi     # 0x2ffc8
leaq 0x100be(%rip), %rsi     # 0x20867
callq 0x4280
movq %rax, -0xb18(%rbp)
jmp 0x107b7
movq -0xb18(%rbp), %rdi
movl -0x478(%rbp), %esi
callq 0x4410
movq %rax, -0xb20(%rbp)
jmp 0x107d2
movq -0xb20(%rbp), %rdi
leaq 0x100be(%rip), %rsi     # 0x2089e
callq 0x4280
movq %rax, -0xb28(%rbp)
jmp 0x107ee
movq -0xb28(%rbp), %rdi
movsd -0x480(%rbp), %xmm0
callq 0x4470
movq %rax, -0xb30(%rbp)
jmp 0x1080b
movq -0xb30(%rbp), %rdi
leaq 0xf908(%rip), %rsi      # 0x20121
callq 0x4280
movq %rax, -0xb38(%rbp)
jmp 0x10827
movq -0xb38(%rbp), %rdi
movq 0x1f76b(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x1083c
jmp 0x12351
leaq -0x4d1(%rbp), %rdi
movq %rdi, -0xb40(%rbp)
callq 0x4430
movq -0xb40(%rbp), %rdx
leaq 0x10047(%rip), %rsi     # 0x208a9
leaq -0x4d0(%rbp), %rdi
callq 0x4340
jmp 0x10870
leaq -0x4d0(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xb41(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x4180
leaq -0x4d1(%rbp), %rdi
callq 0x42d0
movb -0xb41(%rbp), %al
testb $0x1, %al
jne 0x108b0
jmp 0x10a12
movb $0x1, -0x4d2(%rbp)
movq -0x8(%rbp), %rdi
callq 0x12e40
movq %rax, -0xb50(%rbp)
jmp 0x108c9
movq -0xb50(%rbp), %rax
movq %rax, -0x500(%rbp)
leaq -0x4e8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x43b0
testb $0x1, -0x4d2(%rbp)
je 0x1093f
movl -0x4d8(%rbp), %eax
incl %eax
movl %eax, -0x4d8(%rbp)
movq -0x500(%rbp), %rdi
callq 0x13200
movb %al, -0xb51(%rbp)
jmp 0x10912
movb -0xb51(%rbp), %al
andb $0x1, %al
movb %al, -0x4d2(%rbp)
jmp 0x108e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x4d1(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
xorl %eax, %eax
movl %eax, %esi
leaq -0x4f8(%rbp), %rdi
callq 0x43b0
movq 0x1f672(%rip), %rdi     # 0x2ffc8
leaq 0xff0a(%rip), %rsi      # 0x20867
callq 0x4280
movq %rax, -0xb60(%rbp)
jmp 0x1096b
movq -0xb60(%rbp), %rdi
movl -0x4d8(%rbp), %esi
callq 0x4410
movq %rax, -0xb68(%rbp)
jmp 0x10986
movq -0xb68(%rbp), %rdi
leaq 0xff0a(%rip), %rsi      # 0x2089e
callq 0x4280
movq %rax, -0xb70(%rbp)
jmp 0x109a2
leaq -0x4e8(%rbp), %rdi
leaq -0x4f8(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0xb78(%rbp)
jmp 0x109bf
movsd -0xb78(%rbp), %xmm0
movq -0xb70(%rbp), %rdi
callq 0x4470
movq %rax, -0xb80(%rbp)
jmp 0x109dc
movq -0xb80(%rbp), %rdi
leaq 0xf737(%rip), %rsi      # 0x20121
callq 0x4280
movq %rax, -0xb88(%rbp)
jmp 0x109f8
movq -0xb88(%rbp), %rdi
movq 0x1f59a(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x10a0d
jmp 0x1234f
leaq -0x521(%rbp), %rdi
movq %rdi, -0xb90(%rbp)
callq 0x4430
movq -0xb90(%rbp), %rdx
leaq 0xf6ca(%rip), %rsi      # 0x200fd
leaq -0x520(%rbp), %rdi
callq 0x4340
jmp 0x10a41
leaq -0x520(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xb91(%rbp)
leaq -0x520(%rbp), %rdi
callq 0x4180
leaq -0x521(%rbp), %rdi
callq 0x42d0
movb -0xb91(%rbp), %al
testb $0x1, %al
jne 0x10a81
jmp 0x115ca
movq -0x8(%rbp), %rsi
leaq -0x538(%rbp), %rdi
callq 0x13490
jmp 0x10a93
movl $0x0, -0x55c(%rbp)
movq -0x200(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x200(%rbp,%rax), %rdi
callq 0x4450
movb %al, -0xb92(%rbp)
jmp 0x10abd
movb -0xb92(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xb93(%rbp)
jne 0x10b00
jmp 0x10ad2
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movb %al, -0xb94(%rbp)
jmp 0x10af2
movb -0xb94(%rbp), %al
xorb $-0x1, %al
movb %al, -0xb93(%rbp)
movb -0xb93(%rbp), %al
testb $0x1, %al
jne 0x10b0f
jmp 0x115a8
leaq -0x200(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x4320
jmp 0x10b24
leaq -0x581(%rbp), %rdi
movq %rdi, -0xba0(%rbp)
callq 0x4430
movq -0xba0(%rbp), %rdx
leaq 0xfd7a(%rip), %rsi      # 0x208bf
leaq -0x580(%rbp), %rdi
callq 0x4340
jmp 0x10b53
leaq -0x580(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xba1(%rbp)
leaq -0x580(%rbp), %rdi
callq 0x4180
leaq -0x581(%rbp), %rdi
callq 0x42d0
movb -0xba1(%rbp), %al
testb $0x1, %al
jne 0x10b93
jmp 0x10d43
movl -0x55c(%rbp), %eax
movl %eax, -0x588(%rbp)
leaq -0x548(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x43b0
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movb %al, -0xba2(%rbp)
jmp 0x10bcf
movb -0xba2(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x10bdd
jmp 0x10c53
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
jmp 0x10bf7
movl -0x55c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x55c(%rbp)
jmp 0x10baf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x521(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x115b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x581(%rbp), %rdi
callq 0x42d0
jmp 0x115b9
xorl %eax, %eax
movl %eax, %esi
leaq -0x558(%rbp), %rdi
callq 0x43b0
movq 0x1f35e(%rip), %rdi     # 0x2ffc8
leaq 0xfc54(%rip), %rsi      # 0x208c5
callq 0x4280
movq %rax, -0xbb0(%rbp)
jmp 0x10c7f
movq -0xbb0(%rbp), %rdi
movl -0x55c(%rbp), %esi
movl -0x588(%rbp), %eax
subl %eax, %esi
callq 0x4410
movq %rax, -0xbb8(%rbp)
jmp 0x10ca2
movq -0xbb8(%rbp), %rdi
movq 0x1f2f0(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x10cb7
movq 0x1f30a(%rip), %rdi     # 0x2ffc8
leaq 0xfc12(%rip), %rsi      # 0x208d7
callq 0x4280
movq %rax, -0xbc0(%rbp)
jmp 0x10cd3
leaq -0x548(%rbp), %rdi
leaq -0x558(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0xbc8(%rbp)
jmp 0x10cf0
movsd -0xbc8(%rbp), %xmm0
movq -0xbc0(%rbp), %rdi
callq 0x4470
movq %rax, -0xbd0(%rbp)
jmp 0x10d0d
movq -0xbd0(%rbp), %rdi
leaq 0xf406(%rip), %rsi      # 0x20121
callq 0x4280
movq %rax, -0xbd8(%rbp)
jmp 0x10d29
movq -0xbd8(%rbp), %rdi
movq 0x1f269(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x10d3e
jmp 0x115a3
leaq -0x5a9(%rbp), %rdi
movq %rdi, -0xbe0(%rbp)
callq 0x4430
movq -0xbe0(%rbp), %rdx
leaq 0xfb80(%rip), %rsi      # 0x208e4
leaq -0x5a8(%rbp), %rdi
callq 0x4340
jmp 0x10d72
leaq -0x5a8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xbe1(%rbp)
leaq -0x5a8(%rbp), %rdi
callq 0x4180
leaq -0x5a9(%rbp), %rdi
callq 0x42d0
movb -0xbe1(%rbp), %al
testb $0x1, %al
jne 0x10db2
jmp 0x10ed3
jmp 0x10db4
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movb %al, -0xbe2(%rbp)
jmp 0x10dd4
movb -0xbe2(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x10de5
jmp 0x10ece
movl -0x55c(%rbp), %esi
movq 0x1f1d6(%rip), %rdi     # 0x2ffc8
callq 0x4410
movq %rax, -0xbf0(%rbp)
jmp 0x10e00
movq -0xbf0(%rbp), %rdi
leaq 0xfb27(%rip), %rsi      # 0x20935
callq 0x4280
movq %rax, -0xbf8(%rbp)
jmp 0x10e1c
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movq %rax, -0xc00(%rbp)
jmp 0x10e3c
movq -0xc00(%rbp), %rax
movq %rax, -0x5b8(%rbp)
leaq -0x5b8(%rbp), %rdi
callq 0x7ad0
movq -0xbf8(%rbp), %rdi
movq (%rax), %rsi
callq 0x4440
movq %rax, -0xc08(%rbp)
jmp 0x10e6e
movq -0xc08(%rbp), %rdi
movq 0x1f124(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x10e83
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
jmp 0x10e9d
movl -0x55c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x55c(%rbp)
jmp 0x10db4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x5a9(%rbp), %rdi
callq 0x42d0
jmp 0x115b9
jmp 0x115a1
leaq -0x5d9(%rbp), %rdi
movq %rdi, -0xc10(%rbp)
callq 0x4430
movq -0xc10(%rbp), %rdx
leaq 0xf9f5(%rip), %rsi      # 0x208e9
leaq -0x5d8(%rbp), %rdi
callq 0x4340
jmp 0x10f02
leaq -0x5d8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xc11(%rbp)
leaq -0x5d8(%rbp), %rdi
callq 0x4180
leaq -0x5d9(%rbp), %rdi
callq 0x42d0
movb -0xc11(%rbp), %al
testb $0x1, %al
jne 0x10f42
jmp 0x1102a
movl -0x55c(%rbp), %esi
movq 0x1f079(%rip), %rdi     # 0x2ffc8
callq 0x4410
movq %rax, -0xc20(%rbp)
jmp 0x10f5d
movq -0xc20(%rbp), %rdi
leaq 0xf9ca(%rip), %rsi      # 0x20935
callq 0x4280
movq %rax, -0xc28(%rbp)
jmp 0x10f79
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movq %rax, -0xc30(%rbp)
jmp 0x10f99
movq -0xc30(%rbp), %rax
movq %rax, -0x5e8(%rbp)
leaq -0x5e8(%rbp), %rdi
callq 0x7ad0
movq -0xc28(%rbp), %rdi
movq (%rax), %rsi
callq 0x4440
movq %rax, -0xc38(%rbp)
jmp 0x10fcb
movq -0xc38(%rbp), %rdi
movq 0x1efc7(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x10fe0
movl -0x55c(%rbp), %eax
incl %eax
movl %eax, -0x55c(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
jmp 0x11008
jmp 0x1159f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x5d9(%rbp), %rdi
callq 0x42d0
jmp 0x115b9
leaq -0x609(%rbp), %rdi
movq %rdi, -0xc40(%rbp)
callq 0x4430
movq -0xc40(%rbp), %rdx
leaq 0xf8a9(%rip), %rsi      # 0x208f4
leaq -0x608(%rbp), %rdi
callq 0x4340
jmp 0x11059
leaq -0x608(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xc41(%rbp)
leaq -0x608(%rbp), %rdi
callq 0x4180
leaq -0x609(%rbp), %rdi
callq 0x42d0
movb -0xc41(%rbp), %al
testb $0x1, %al
jne 0x11099
jmp 0x111fc
leaq -0x200(%rbp), %rdi
leaq -0x610(%rbp), %rsi
callq 0x4170
jmp 0x110ae
jmp 0x110b0
xorl %eax, %eax
cmpl $0x0, -0x610(%rbp)
movb %al, -0xc42(%rbp)
jle 0x110ef
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movb %al, -0xc43(%rbp)
jmp 0x110e1
movb -0xc43(%rbp), %al
xorb $-0x1, %al
movb %al, -0xc42(%rbp)
movb -0xc42(%rbp), %al
testb $0x1, %al
jne 0x110fe
jmp 0x111f7
movl -0x55c(%rbp), %esi
movq 0x1eebd(%rip), %rdi     # 0x2ffc8
callq 0x4410
movq %rax, -0xc50(%rbp)
jmp 0x11119
movq -0xc50(%rbp), %rdi
leaq 0xf80e(%rip), %rsi      # 0x20935
callq 0x4280
movq %rax, -0xc58(%rbp)
jmp 0x11135
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movq %rax, -0xc60(%rbp)
jmp 0x11155
movq -0xc60(%rbp), %rax
movq %rax, -0x618(%rbp)
leaq -0x618(%rbp), %rdi
callq 0x7ad0
movq -0xc58(%rbp), %rdi
movq (%rax), %rsi
callq 0x4440
movq %rax, -0xc68(%rbp)
jmp 0x11187
movq -0xc68(%rbp), %rdi
movq 0x1ee0b(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x1119c
movl -0x55c(%rbp), %eax
incl %eax
movl %eax, -0x55c(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
jmp 0x111c4
jmp 0x111c6
movl -0x610(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x610(%rbp)
jmp 0x110b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x609(%rbp), %rdi
callq 0x42d0
jmp 0x115b9
jmp 0x1159d
leaq -0x639(%rbp), %rdi
movq %rdi, -0xc70(%rbp)
callq 0x4430
movq -0xc70(%rbp), %rdx
leaq 0xf6d1(%rip), %rsi      # 0x208ee
leaq -0x638(%rbp), %rdi
callq 0x4340
jmp 0x1122b
leaq -0x638(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xc71(%rbp)
leaq -0x638(%rbp), %rdi
callq 0x4180
leaq -0x639(%rbp), %rdi
callq 0x42d0
movb -0xc71(%rbp), %al
testb $0x1, %al
jne 0x1126b
jmp 0x11339
movl -0x55c(%rbp), %eax
movl %eax, -0x644(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x640(%rbp), %rsi
callq 0x4170
jmp 0x1128c
jmp 0x1128e
xorl %eax, %eax
cmpl $0x0, -0x640(%rbp)
movb %al, -0xc72(%rbp)
jle 0x112cd
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movb %al, -0xc73(%rbp)
jmp 0x112bf
movb -0xc73(%rbp), %al
xorb $-0x1, %al
movb %al, -0xc72(%rbp)
movb -0xc72(%rbp), %al
testb $0x1, %al
jne 0x112d9
jmp 0x11334
movl -0x55c(%rbp), %eax
incl %eax
movl %eax, -0x55c(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
jmp 0x11301
jmp 0x11303
movl -0x640(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x640(%rbp)
jmp 0x1128e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x639(%rbp), %rdi
callq 0x42d0
jmp 0x115b9
jmp 0x1159b
leaq -0x669(%rbp), %rdi
movq %rdi, -0xc80(%rbp)
callq 0x4430
movq -0xc80(%rbp), %rdx
leaq 0xf5b1(%rip), %rsi      # 0x2090b
leaq -0x668(%rbp), %rdi
callq 0x4340
jmp 0x11368
leaq -0x668(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xc81(%rbp)
leaq -0x668(%rbp), %rdi
callq 0x4180
leaq -0x669(%rbp), %rdi
callq 0x42d0
movb -0xc81(%rbp), %al
testb $0x1, %al
jne 0x113a8
jmp 0x114c0
leaq -0x680(%rbp), %rdi
callq 0x72f0
jmp 0x113b6
leaq -0x200(%rbp), %rdi
leaq -0x680(%rbp), %rsi
callq 0x4160
jmp 0x113cb
movq $0x0, -0x678(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x548(%rbp), %rdi
callq 0x43b0
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
leaq -0x680(%rbp), %rsi
callq *%rax
jmp 0x11407
xorl %eax, %eax
movl %eax, %esi
leaq -0x558(%rbp), %rdi
callq 0x43b0
movq 0x1ebaa(%rip), %rdi     # 0x2ffc8
leaq 0xf4d4(%rip), %rsi      # 0x208f9
callq 0x4280
movq %rax, -0xc90(%rbp)
jmp 0x11433
leaq -0x548(%rbp), %rdi
leaq -0x558(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0xc98(%rbp)
jmp 0x11450
movsd -0xc98(%rbp), %xmm0
movq -0xc90(%rbp), %rdi
callq 0x4470
movq %rax, -0xca0(%rbp)
jmp 0x1146d
movq -0xca0(%rbp), %rdi
leaq 0xeca6(%rip), %rsi      # 0x20121
callq 0x4280
movq %rax, -0xca8(%rbp)
jmp 0x11489
movq -0xca8(%rbp), %rdi
movq 0x1eb09(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x1149e
jmp 0x11599
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x669(%rbp), %rdi
callq 0x42d0
jmp 0x115b9
leaq -0x6a1(%rbp), %rdi
movq %rdi, -0xcb0(%rbp)
callq 0x4430
movq -0xcb0(%rbp), %rdx
leaq 0xf424(%rip), %rsi      # 0x20905
leaq -0x6a0(%rbp), %rdi
callq 0x4340
jmp 0x114ef
leaq -0x6a0(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xcb1(%rbp)
leaq -0x6a0(%rbp), %rdi
callq 0x4180
leaq -0x6a1(%rbp), %rdi
callq 0x42d0
movb -0xcb1(%rbp), %al
testb $0x1, %al
jne 0x1152c
jmp 0x11597
leaq -0x6b8(%rbp), %rdi
callq 0x72f0
jmp 0x1153a
leaq -0x200(%rbp), %rdi
leaq -0x6b8(%rbp), %rsi
callq 0x4160
jmp 0x1154f
movq $0x0, -0x6b0(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
leaq -0x6b8(%rbp), %rsi
callq *%rax
jmp 0x1157b
jmp 0x11597
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x6a1(%rbp), %rdi
callq 0x42d0
jmp 0x115b9
jmp 0x11599
jmp 0x1159b
jmp 0x1159d
jmp 0x1159f
jmp 0x115a1
jmp 0x115a3
jmp 0x10a9d
leaq -0x538(%rbp), %rdi
callq 0x7af0
jmp 0x1234d
leaq -0x538(%rbp), %rdi
callq 0x7af0
jmp 0x123cd
leaq -0x6d9(%rbp), %rdi
movq %rdi, -0xcc0(%rbp)
callq 0x4430
movq -0xcc0(%rbp), %rdx
leaq 0xf325(%rip), %rsi      # 0x20910
leaq -0x6d8(%rbp), %rdi
callq 0x4340
jmp 0x115f9
leaq -0x6d8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xcc1(%rbp)
leaq -0x6d8(%rbp), %rdi
callq 0x4180
leaq -0x6d9(%rbp), %rdi
callq 0x42d0
movb -0xcc1(%rbp), %al
testb $0x1, %al
jne 0x11639
jmp 0x11a5e
movq $0x0, -0x6f0(%rbp)
leaq -0x720(%rbp), %rdi
callq 0x72f0
jmp 0x11652
movq $0x0, -0x718(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x6e0(%rbp), %rsi
callq 0x4170
movq %rax, -0xcd0(%rbp)
jmp 0x11679
movq -0xcd0(%rbp), %rdi
leaq -0x6e4(%rbp), %rsi
callq 0x4170
movq %rax, -0xcd8(%rbp)
jmp 0x11695
movq -0xcd8(%rbp), %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x4170
jmp 0x116aa
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0xce8(%rbp)
leaq -0x700(%rbp), %rdi
callq 0x43b0
movq -0xce8(%rbp), %rsi
leaq -0x710(%rbp), %rdi
callq 0x43b0
movq 0x1e8ed(%rip), %rdi     # 0x2ffc8
leaq 0xf23a(%rip), %rsi      # 0x2091c
callq 0x4280
movq %rax, -0xce0(%rbp)
jmp 0x116f0
movq -0xce0(%rbp), %rdi
movl -0x6e0(%rbp), %esi
callq 0x4410
movq %rax, -0xcf0(%rbp)
jmp 0x1170b
movq -0xcf0(%rbp), %rdi
leaq 0xf211(%rip), %rsi      # 0x2092a
callq 0x4280
movq %rax, -0xcf8(%rbp)
jmp 0x11727
movq -0xcf8(%rbp), %rdi
movl -0x6e4(%rbp), %esi
callq 0x4410
movq %rax, -0xd00(%rbp)
jmp 0x11742
movq -0xd00(%rbp), %rdi
leaq 0xf1e4(%rip), %rsi      # 0x20934
callq 0x4280
movq %rax, -0xd08(%rbp)
jmp 0x1175e
movq -0xd08(%rbp), %rdi
movl -0x6e8(%rbp), %esi
callq 0x4410
movq %rax, -0xd10(%rbp)
jmp 0x11779
movq -0xd10(%rbp), %rdi
leaq 0xf1b3(%rip), %rsi      # 0x2093a
callq 0x4280
movq %rax, -0xd18(%rbp)
jmp 0x11795
movq -0xd18(%rbp), %rdi
movq 0x1e7fd(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x117aa
jmp 0x117ac
leaq -0x700(%rbp), %rdi
leaq -0x710(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0xd20(%rbp)
jmp 0x117c9
movsd -0xd20(%rbp), %xmm1
imull $0x3e8, -0x6e0(%rbp), %eax # imm = 0x3E8
cvtsi2sd %eax, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x118d9
movq -0x8(%rbp), %rsi
leaq -0x730(%rbp), %rdi
callq 0x13490
jmp 0x117fb
callq 0x4070
movl -0x6e4(%rbp), %ecx
cltd
idivl %ecx
movslq %edx, %rax
movq %rax, -0x720(%rbp)
leaq -0x730(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
leaq -0x720(%rbp), %rsi
callq *%rax
jmp 0x11834
jmp 0x11836
cmpl $0x0, -0x6e8(%rbp)
jle 0x118a6
leaq -0x730(%rbp), %rdi
callq 0x7ab0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
jmp 0x11859
jmp 0x1185b
movl -0x6e8(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x6e8(%rbp)
jmp 0x11836
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x6d9(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x730(%rbp), %rdi
callq 0x7af0
jmp 0x123cd
movq -0x6f0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x6f0(%rbp)
leaq -0x710(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x43b0
leaq -0x730(%rbp), %rdi
callq 0x7af0
jmp 0x117ac
movq 0x1e6e8(%rip), %rdi     # 0x2ffc8
leaq 0xf05e(%rip), %rsi      # 0x20945
callq 0x4280
movq %rax, -0xd28(%rbp)
jmp 0x118f5
movq -0xd28(%rbp), %rdi
movq -0x6f0(%rbp), %rsi
callq 0x4440
movq %rax, -0xd30(%rbp)
jmp 0x11911
movq -0xd30(%rbp), %rdi
leaq 0xf034(%rip), %rsi      # 0x20953
callq 0x4280
movq %rax, -0xd38(%rbp)
jmp 0x1192d
leaq -0x700(%rbp), %rdi
leaq -0x710(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0xd40(%rbp)
jmp 0x1194a
movq -0xd38(%rbp), %rdi
movsd -0xd40(%rbp), %xmm0
movsd 0xe71f(%rip), %xmm1     # 0x20080
divsd %xmm1, %xmm0
callq 0x4470
movq %rax, -0xd48(%rbp)
jmp 0x11973
movq -0xd48(%rbp), %rdi
leaq 0xee4f(%rip), %rsi      # 0x207d0
callq 0x4280
movq %rax, -0xd50(%rbp)
jmp 0x1198f
movq -0xd50(%rbp), %rdi
movq 0x1e603(%rip), %rsi     # 0x2ffa0
callq 0x42c0
movq %rax, -0xd58(%rbp)
jmp 0x119ab
movq -0xd58(%rbp), %rdi
leaq 0xefa7(%rip), %rsi      # 0x20960
callq 0x4280
movq %rax, -0xd60(%rbp)
jmp 0x119c7
movq -0x6f0(%rbp), %rax
imulq $0xf4240, %rax, %rax    # imm = 0xF4240
cvtsi2sd %rax, %xmm0
movsd %xmm0, -0xd70(%rbp)
leaq -0x700(%rbp), %rdi
leaq -0x710(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0xd68(%rbp)
jmp 0x119ff
movq -0xd60(%rbp), %rdi
movsd -0xd68(%rbp), %xmm1
movsd -0xd70(%rbp), %xmm0
divsd %xmm1, %xmm0
callq 0x4470
movq %rax, -0xd78(%rbp)
jmp 0x11a28
movq -0xd78(%rbp), %rdi
leaq 0xef31(%rip), %rsi      # 0x20967
callq 0x4280
movq %rax, -0xd80(%rbp)
jmp 0x11a44
movq -0xd80(%rbp), %rdi
movq 0x1e54e(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x11a59
jmp 0x1234b
leaq -0x751(%rbp), %rdi
movq %rdi, -0xd88(%rbp)
callq 0x4430
movq -0xd88(%rbp), %rdx
leaq 0xeef3(%rip), %rsi      # 0x20972
leaq -0x750(%rbp), %rdi
callq 0x4340
jmp 0x11a8d
leaq -0x750(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xd89(%rbp)
leaq -0x750(%rbp), %rdi
callq 0x4180
leaq -0x751(%rbp), %rdi
callq 0x42d0
movb -0xd89(%rbp), %al
testb $0x1, %al
jne 0x11acd
jmp 0x11b7c
leaq -0x778(%rbp), %rdi
movq %rdi, -0xd98(%rbp)
callq 0x4350
movq -0xd98(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0x4320
jmp 0x11af5
movq -0x8(%rbp), %rax
movq %rax, -0x780(%rbp)
movl $0x0, -0x784(%rbp)
leaq -0x21c1(%rip), %rsi     # 0xf950
leaq -0x50(%rbp), %rdi
leaq -0x780(%rbp), %rdx
leaq -0x778(%rbp), %rcx
leaq -0x784(%rbp), %r8
callq 0x13510
jmp 0x11b31
leaq -0x778(%rbp), %rdi
callq 0x4180
jmp 0x12349
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x751(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x778(%rbp), %rdi
callq 0x4180
jmp 0x123cd
leaq -0x7a9(%rbp), %rdi
movq %rdi, -0xda0(%rbp)
callq 0x4430
movq -0xda0(%rbp), %rdx
leaq 0xeddb(%rip), %rsi      # 0x20978
leaq -0x7a8(%rbp), %rdi
callq 0x4340
jmp 0x11bab
leaq -0x7a8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xda1(%rbp)
leaq -0x7a8(%rbp), %rdi
callq 0x4180
leaq -0x7a9(%rbp), %rdi
callq 0x42d0
movb -0xda1(%rbp), %al
testb $0x1, %al
jne 0x11beb
jmp 0x11ca5
leaq -0x7d0(%rbp), %rdi
callq 0x4350
leaq -0x200(%rbp), %rdi
leaq -0x7b0(%rbp), %rsi
callq 0x4170
movq %rax, -0xdb0(%rbp)
jmp 0x11c13
movq -0xdb0(%rbp), %rdi
leaq -0x7d0(%rbp), %rsi
callq 0x4320
jmp 0x11c28
movq -0x8(%rbp), %rax
movq %rax, -0x7d8(%rbp)
leaq -0x22ea(%rip), %rsi     # 0xf950
leaq -0x50(%rbp), %rdi
leaq -0x7d8(%rbp), %rdx
leaq -0x7d0(%rbp), %rcx
leaq -0x7b0(%rbp), %r8
callq 0x135a0
jmp 0x11c5a
leaq -0x7d0(%rbp), %rdi
callq 0x4180
jmp 0x12347
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x7a9(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x7d0(%rbp), %rdi
callq 0x4180
jmp 0x123cd
leaq -0x7f9(%rbp), %rdi
movq %rdi, -0xdb8(%rbp)
callq 0x4430
movq -0xdb8(%rbp), %rdx
leaq 0xecbd(%rip), %rsi      # 0x20983
leaq -0x7f8(%rbp), %rdi
callq 0x4340
jmp 0x11cd4
leaq -0x7f8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xdb9(%rbp)
leaq -0x7f8(%rbp), %rdi
callq 0x4180
leaq -0x7f9(%rbp), %rdi
callq 0x42d0
movb -0xdb9(%rbp), %al
testb $0x1, %al
jne 0x11d14
jmp 0x11e48
movl $0x2a, -0x824(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x808(%rbp), %rsi
callq 0x4160
movq %rax, -0xdc8(%rbp)
jmp 0x11d3a
movq -0xdc8(%rbp), %rdi
leaq -0x80c(%rbp), %rsi
callq 0x4170
movq %rax, -0xdd0(%rbp)
jmp 0x11d56
movq -0xdd0(%rbp), %rdi
leaq -0x818(%rbp), %rsi
callq 0x4160
movq %rax, -0xdd8(%rbp)
jmp 0x11d72
movq -0xdd8(%rbp), %rdi
leaq -0x820(%rbp), %rsi
callq 0x4160
movq %rax, -0xde0(%rbp)
jmp 0x11d8e
movq -0xde0(%rbp), %rdi
leaq -0x828(%rbp), %rsi
callq 0x4170
movq %rax, -0xde8(%rbp)
jmp 0x11daa
movq -0xde8(%rbp), %rdi
leaq -0x82c(%rbp), %rsi
callq 0x4170
jmp 0x11dbf
movq -0x8(%rbp), %rax
movq %rax, -0x838(%rbp)
movq %rsp, %rax
leaq -0x82c(%rbp), %rcx
movq %rcx, 0x18(%rax)
leaq -0x828(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq -0x824(%rbp), %rcx
movq %rcx, 0x8(%rax)
leaq -0x820(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x296f(%rip), %rsi     # 0xf490
leaq -0x50(%rbp), %rdi
leaq -0x838(%rbp), %rdx
leaq -0x808(%rbp), %rcx
leaq -0x80c(%rbp), %r8
leaq -0x818(%rbp), %r9
callq 0x13630
jmp 0x11e26
jmp 0x12345
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x7f9(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
leaq -0x859(%rbp), %rdi
movq %rdi, -0xdf0(%rbp)
callq 0x4430
movq -0xdf0(%rbp), %rdx
leaq 0xeb28(%rip), %rsi      # 0x20991
leaq -0x858(%rbp), %rdi
callq 0x4340
jmp 0x11e77
leaq -0x858(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xdf1(%rbp)
leaq -0x858(%rbp), %rdi
callq 0x4180
leaq -0x859(%rbp), %rdi
callq 0x42d0
movb -0xdf1(%rbp), %al
testb $0x1, %al
jne 0x11eb7
jmp 0x11f88
leaq -0x880(%rbp), %rdi
movq %rdi, -0xe00(%rbp)
callq 0x4350
movq -0xe00(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0x4320
jmp 0x11edf
movq -0x8(%rbp), %rax
movq %rax, -0xe08(%rbp)
leaq -0x8a0(%rbp), %rdi
leaq -0x880(%rbp), %rsi
callq 0x40e0
jmp 0x11eff
movq -0xe08(%rbp), %rdi
movl -0x18(%rbp), %edx
leaq -0x8a0(%rbp), %rsi
callq 0xf950
jmp 0x11f17
leaq -0x8a0(%rbp), %rdi
callq 0x4180
leaq -0x880(%rbp), %rdi
callq 0x4180
jmp 0x12343
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x859(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x11f77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x8a0(%rbp), %rdi
callq 0x4180
leaq -0x880(%rbp), %rdi
callq 0x4180
jmp 0x123cd
leaq -0x8c1(%rbp), %rdi
movq %rdi, -0xe10(%rbp)
callq 0x4430
movq -0xe10(%rbp), %rdx
leaq 0xe9ec(%rip), %rsi      # 0x20995
leaq -0x8c0(%rbp), %rdi
callq 0x4340
jmp 0x11fb7
leaq -0x8c0(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xe11(%rbp)
leaq -0x8c0(%rbp), %rdi
callq 0x4180
leaq -0x8c1(%rbp), %rdi
callq 0x42d0
movb -0xe11(%rbp), %al
testb $0x1, %al
jne 0x11ff7
jmp 0x1209d
xorl %eax, %eax
movl %eax, %esi
leaq -0x8d8(%rbp), %rdi
callq 0x43b0
movq 0x1dfba(%rip), %rdi     # 0x2ffc8
leaq 0xe985(%rip), %rsi      # 0x2099a
callq 0x4280
movq %rax, -0xe20(%rbp)
jmp 0x12023
leaq -0x60(%rbp), %rdi
leaq -0x8d8(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0xe28(%rbp)
jmp 0x1203d
movq -0xe20(%rbp), %rdi
movsd -0xe28(%rbp), %xmm0
movsd 0xe02c(%rip), %xmm1     # 0x20080
divsd %xmm1, %xmm0
callq 0x4470
movq %rax, -0xe30(%rbp)
jmp 0x12066
movq -0xe30(%rbp), %rdi
movq 0x1df2c(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x1207b
jmp 0x12341
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x8c1(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
leaq -0x8f9(%rbp), %rdi
movq %rdi, -0xe38(%rbp)
callq 0x4430
movq -0xe38(%rbp), %rdx
leaq 0xe8e7(%rip), %rsi      # 0x209a5
leaq -0x8f8(%rbp), %rdi
callq 0x4340
jmp 0x120cc
leaq -0x8f8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xe39(%rbp)
leaq -0x8f8(%rbp), %rdi
callq 0x4180
leaq -0x8f9(%rbp), %rdi
callq 0x42d0
movb -0xe39(%rbp), %al
testb $0x1, %al
jne 0x12109
jmp 0x12163
leaq -0x200(%rbp), %rdi
leaq -0x900(%rbp), %rsi
callq 0x4170
jmp 0x1211e
leaq -0x908(%rbp), %rdi
leaq -0x900(%rbp), %rsi
callq 0x12cc0
jmp 0x12133
leaq -0x908(%rbp), %rdi
callq 0x12c10
jmp 0x12141
jmp 0x1233f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x8f9(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
leaq -0x929(%rbp), %rdi
movq %rdi, -0xe48(%rbp)
callq 0x4430
movq -0xe48(%rbp), %rdx
leaq 0xdf44(%rip), %rsi      # 0x200c8
leaq -0x928(%rbp), %rdi
callq 0x4340
jmp 0x12192
leaq -0x928(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xe49(%rbp)
leaq -0x928(%rbp), %rdi
callq 0x4180
leaq -0x929(%rbp), %rdi
callq 0x42d0
movb -0xe49(%rbp), %al
testb $0x1, %al
jne 0x121cf
jmp 0x1224e
movq -0x8(%rbp), %rdi
callq 0x13730
movl %eax, -0xe50(%rbp)
jmp 0x121e0
movl -0xe50(%rbp), %esi
movq 0x1dddb(%rip), %rdi     # 0x2ffc8
callq 0x4410
movq %rax, -0xe58(%rbp)
jmp 0x121fb
movq -0xe58(%rbp), %rdi
leaq 0xdecb(%rip), %rsi      # 0x200d4
callq 0x4280
movq %rax, -0xe60(%rbp)
jmp 0x12217
movq -0xe60(%rbp), %rdi
movq 0x1dd7b(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x1222c
jmp 0x1233d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x929(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
leaq -0x951(%rbp), %rdi
movq %rdi, -0xe68(%rbp)
callq 0x4430
movq -0xe68(%rbp), %rdx
leaq 0xde6e(%rip), %rsi      # 0x200dd
leaq -0x950(%rbp), %rdi
callq 0x4340
jmp 0x1227d
leaq -0x950(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7690
movb %al, -0xe69(%rbp)
leaq -0x950(%rbp), %rdi
callq 0x4180
leaq -0x951(%rbp), %rdi
callq 0x42d0
movb -0xe69(%rbp), %al
testb $0x1, %al
jne 0x122ba
jmp 0x122e4
movq -0x8(%rbp), %rdi
callq 0x137a0
jmp 0x122c5
jmp 0x1233b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x951(%rbp), %rdi
callq 0x42d0
jmp 0x123cd
movq 0x1dd05(%rip), %rdi     # 0x2fff0
leaq 0xde41(%rip), %rsi      # 0x20133
callq 0x4280
movq %rax, -0xe78(%rbp)
jmp 0x12300
movq -0xe78(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x4240
movq %rax, -0xe80(%rbp)
jmp 0x1231c
movq -0xe80(%rbp), %rdi
movq 0x1dc76(%rip), %rsi     # 0x2ffa0
callq 0x42c0
jmp 0x12331
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x4300
jmp 0x1233d
jmp 0x1233f
jmp 0x12341
jmp 0x12343
jmp 0x12345
jmp 0x12347
jmp 0x12349
jmp 0x1234b
jmp 0x1234d
jmp 0x1234f
jmp 0x12351
jmp 0x12353
jmp 0x12355
jmp 0x12357
jmp 0x12359
jmp 0x1235b
jmp 0x1235d
testb $0x1, -0x11(%rbp)
je 0x12388
movq 0x1dc5e(%rip), %rdi     # 0x2ffc8
leaq 0xe462(%rip), %rsi      # 0x207d3
callq 0x4280
jmp 0x12378
movq 0x1dc49(%rip), %rdi     # 0x2ffc8
callq 0x41c0
jmp 0x12386
jmp 0x12388
cmpl $0x0, -0x18(%rbp)
jle 0x123b0
leaq -0x960(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x12cc0
jmp 0x123a0
leaq -0x960(%rbp), %rdi
callq 0x12c10
jmp 0x123ae
jmp 0x123b0
leaq -0x220(%rbp), %rdi
callq 0x4180
leaq -0x200(%rbp), %rdi
callq 0x4120
jmp 0xfb8a
leaq -0x220(%rbp), %rdi
callq 0x4180
leaq -0x200(%rbp), %rdi
callq 0x4120
jmp 0x124c6
leaq -0x70(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x43b0
leaq -0x968(%rbp), %rdi
callq 0x13870
leaq -0x50(%rbp), %rdi
callq 0x13890
movq %rax, -0x970(%rbp)
movq -0x970(%rbp), %rax
movq %rax, -0x968(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x13900
movq %rax, -0x978(%rbp)
leaq -0x968(%rbp), %rdi
leaq -0x978(%rbp), %rsi
callq 0x138c0
testb $0x1, %al
jne 0x1244a
jmp 0x12470
leaq -0x968(%rbp), %rdi
callq 0x13930
movq %rax, %rdi
callq 0x4400
jmp 0x12460
jmp 0x12462
leaq -0x968(%rbp), %rdi
callq 0x13950
jmp 0x12421
leaq -0x60(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x1e520
movsd %xmm0, -0xe88(%rbp)
jmp 0x12487
movsd -0xe88(%rbp), %xmm0
movsd 0xdbe9(%rip), %xmm1     # 0x20080
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0xe8c(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x13970
leaq -0x38(%rbp), %rdi
callq 0x4180
movl -0xe8c(%rbp), %eax
addq $0xeb0, %rsp            # imm = 0xEB0
popq %rbp
retq
leaq -0x50(%rbp), %rdi
callq 0x13970
leaq -0x38(%rbp), %rdi
callq 0x4180
movq -0x78(%rbp), %rdi
callq 0x4420
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)