// File: joao18araujo[P]pierluigi/src/fourth_species_counterpoint.cpp
// Function: FourthSpeciesCounterpoint::solve(unsigned int, unsigned int, int, int, bool, Song&)
bool FourthSpeciesCounterpoint::solve(unsigned position, unsigned compass_position, int paralels, int same_movements, bool ascendant, Song & counterpoint){
  if(position + compass_position == 0){
    memset(dp, true, sizeof dp);
    srand(clock());
  }

  if(position >= song->size_without_rest()){
    // printf("Total: %d %lu\n", paralels, song->size() - same_movements);
    return true;
  }

  if((position + compass_position) && !dp[position][compass_position][counterpoint.back().midi_number][paralels][same_movements]) return false;

  vector<Interval> possible_intervals;

  Note note = song->notes[position];

  if(position and (position < song->size_without_rest() - 1 or compass_position == 0)){
    auto previous_note = song->notes[position - 1 + (compass_position != 0)];
    auto previous_counterpoint_note = counterpoint.notes.back();
    auto melodic_cantus_interval = Interval(previous_note, note);
    bool melodic_ascendant = !melodic_cantus_interval.ascendant(); // XOR with true
    auto previous_interval = Interval(previous_note, previous_counterpoint_note);
    auto linked_interval = Interval(note, previous_counterpoint_note);

    int size = 0;
    if(not note.rest()){
      if(compass_position == 0){
        if(linked_interval.is_dissonant()) {
          possible_intervals.push_back(linked_interval);
          size = possible_intervals.size();
        }

        if(ascendant){
          possible_intervals.push_back(Interval("P4", ascendant));
          possible_intervals.push_back(Interval("m7", ascendant));
          possible_intervals.push_back(Interval("M7", ascendant));
        }else{
          possible_intervals.push_back(Interval("m2", ascendant));
          possible_intervals.push_back(Interval("M2", ascendant));
          possible_intervals.push_back(Interval("m9", ascendant));
          possible_intervals.push_back(Interval("M9", ascendant));
        }
      }else{
        if(ascendant){
          if(previous_interval.quantitative == 4){
            possible_intervals.push_back(Interval("m3", ascendant));
            possible_intervals.push_back(Interval("M3", ascendant));
          }else if(previous_interval.quantitative == 7){
            possible_intervals.push_back(Interval("m6", ascendant));
            possible_intervals.push_back(Interval("M6", ascendant));
          }
        }else{
          if(previous_interval.quantitative == 2){
            possible_intervals.push_back(Interval("m3", ascendant));
            possible_intervals.push_back(Interval("M3", ascendant));
          }else if(previous_interval.quantitative == 9){
            possible_intervals.push_back(Interval("m10", ascendant));
            possible_intervals.push_back(Interval("M10", ascendant));
          }
        }
      }

      random_shuffle(possible_intervals.begin() + size, possible_intervals.end());
    }else{
      possible_intervals.push_back(Interval("P1"));
    }

    // printf("[%u][%u][%d][%d][%d]\n", position - 1 + compass_position, compass_position, song->notes[position - 1 + compass_position].midi_number, paralels, same_movements);

    int par, sm;
    for(auto interval : possible_intervals){
      auto c_note = Interval::interval_to_note(note, interval);
      c_note.duration /= 2;
      c_note.linked = (c_note == counterpoint.back());
      Interval melodic_interval(previous_counterpoint_note, note);

      par = paralels - (interval.quantitative == previous_interval.quantitative and (interval.quantitative == 3 || interval.quantitative == 6 || interval.quantitative == 10));
      sm = same_movements - (melodic_interval.ascendant() != melodic_ascendant);
      if(par < 0 || sm < 0) continue;
      counterpoint.notes.push_back(c_note);
      if(solve(position + compass_position, (compass_position + 1)%2, par, sm, ascendant, counterpoint)) return true;
      counterpoint.notes.pop_back();
    }
  }else if(position == song->size_without_rest() - 1 && compass_position){
    //Última nota
    auto previous_note = song->notes[position - 1];
    auto previous_counterpoint_note = counterpoint.notes.back();
    auto melodic_cantus_interval = Interval(previous_note, note);
    bool melodic_ascendant = !melodic_cantus_interval.ascendant(); // XOR with true
    auto previous_interval = Interval(previous_note, previous_counterpoint_note);

    if(not note.rest()){
      analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("P1", ascendant), &counterpoint);
      if(previous_interval != "P8")
        analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("P8", ascendant), &counterpoint);
      if(previous_interval != "P5" && ascendant)
        analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("P5", ascendant), &counterpoint);

      random_shuffle(possible_intervals.begin(), possible_intervals.end());
      int size = possible_intervals.size();

      analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("P1", ascendant), &counterpoint);
      if(previous_interval != "P8")
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("P8", ascendant), &counterpoint);
      if(previous_interval != "P5" && ascendant)
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("P5", ascendant), &counterpoint);

      random_shuffle(possible_intervals.begin() + size, possible_intervals.end());
    }else{
      possible_intervals.push_back(Interval("P1"));
    }

    int par, sm;
    for(auto interval : possible_intervals){
      auto c_note = Interval::interval_to_note(note, interval);
      Interval melodic_interval(previous_counterpoint_note, note);

      par = paralels - (interval.quantitative == previous_interval.quantitative and (interval.quantitative == 3 || interval.quantitative == 6 || interval.quantitative == 10)); //TODO: criar método retornando qualidade
      sm = same_movements -  (melodic_interval.ascendant() != melodic_ascendant);
      if(par < 0 || sm < 0) continue;
      c_note.duration /= 2;
      counterpoint.notes.push_back(c_note);
      if(solve(position + 1, 0, par, sm, ascendant, counterpoint)) return true;
      counterpoint.notes.pop_back();
    }
  }else{
    //Primeira nota
    if(compass_position == 0){
      counterpoint.notes.push_back(Note("r", "", 0, song->notes[0].duration / 2));
      if(solve(0, 1, paralels, same_movements, ascendant, counterpoint)) return true;
      counterpoint.notes.pop_back();
    }else{
      possible_intervals.push_back(Interval("P1", ascendant));
      possible_intervals.push_back(Interval("P8", ascendant));
      possible_intervals.push_back(Interval("m3", ascendant));
      possible_intervals.push_back(Interval("M3", ascendant));
      possible_intervals.push_back(Interval("m7", ascendant));
      possible_intervals.push_back(Interval("M7", ascendant));
      possible_intervals.push_back(Interval("m10", ascendant));
      possible_intervals.push_back(Interval("M10", ascendant));

      random_shuffle(possible_intervals.begin(), possible_intervals.end());

      for(auto interval : possible_intervals){
        auto c_note = Interval::interval_to_note(note, interval);
        c_note.duration /= 2;
        counterpoint.notes.push_back(c_note);
        if(solve(position + compass_position, (compass_position + 1)%2, paralels, same_movements, ascendant, counterpoint)) return true;
        counterpoint.notes.pop_back();
      }
    }
  }

  dp[position][compass_position][counterpoint.back().midi_number][paralels][same_movements] = false;
  return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1f40, %rsp           # imm = 0x1F40
movb %r8b, %al
movl %edi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movl %ecx, -0x14(%rbp)
andb $0x1, %al
movb %al, -0x15(%rbp)
movq %r9, -0x20(%rbp)
movl -0x8(%rbp), %eax
addl -0xc(%rbp), %eax
cmpl $0x0, %eax
jne 0x170f0
leaq 0x6b81b(%rip), %rdi     # 0x828f0
movl $0x1, %esi
movl $0x9bc8cf8, %edx        # imm = 0x9BC8CF8
callq 0x6260
callq 0x6320
movl %eax, %edi
callq 0x6460
movl -0x8(%rbp), %eax
movl %eax, -0x1d44(%rbp)
leaq 0x9c344e8(%rip), %rax   # 0x9c4b5e8
movq (%rax), %rdi
callq 0x2dd40
movl %eax, %ecx
movl -0x1d44(%rbp), %eax
cmpl %ecx, %eax
jb 0x1711d
movb $0x1, -0x1(%rbp)
jmp 0x1ab56
movl -0x8(%rbp), %ecx
addl -0xc(%rbp), %ecx
movb $0x0, -0x79(%rbp)
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x1d45(%rbp)
je 0x171a1
movl -0x8(%rbp), %eax
movl %eax, %ecx
leaq 0x6b7b0(%rip), %rax     # 0x828f0
imulq $0x1081c8, %rcx, %rcx   # imm = 0x1081C8
addq %rcx, %rax
movl -0xc(%rbp), %ecx
imulq $0x42072, %rcx, %rcx    # imm = 0x42072
addq %rcx, %rax
movq %rax, -0x1d50(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x2ddf0
movq -0x1d50(%rbp), %rax
movb $0x1, -0x79(%rbp)
movslq -0x2c(%rbp), %rcx
imulq $0xbbd, %rcx, %rcx      # imm = 0xBBD
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
imulq $0x259, %rcx, %rcx      # imm = 0x259
addq %rcx, %rax
movslq -0x14(%rbp), %rcx
movb (%rax,%rcx), %al
xorb $-0x1, %al
movb %al, -0x1d45(%rbp)
movb -0x1d45(%rbp), %al
movb %al, -0x1d51(%rbp)
testb $0x1, -0x79(%rbp)
jne 0x171b5
jmp 0x171be
leaq -0x78(%rbp), %rdi
callq 0xfd80
movb -0x1d51(%rbp), %al
testb $0x1, %al
jne 0x171ca
jmp 0x171d3
movb $0x0, -0x1(%rbp)
jmp 0x1ab56
leaq -0x98(%rbp), %rdi
callq 0xfcb0
leaq 0x9c34402(%rip), %rax   # 0x9c4b5e8
movq (%rax), %rdi
movl -0x8(%rbp), %eax
movl %eax, %esi
callq 0xfd10
movq %rax, %rsi
leaq -0xf0(%rbp), %rdi
callq 0x22ce0
jmp 0x17204
cmpl $0x0, -0x8(%rbp)
je 0x18a0c
movl -0x8(%rbp), %eax
movl %eax, -0x1d5c(%rbp)
leaq 0x9c343ca(%rip), %rax   # 0x9c4b5e8
movq (%rax), %rdi
callq 0x2dd40
movl %eax, -0x1d58(%rbp)
jmp 0x1722e
movl -0x1d5c(%rbp), %eax
movl -0x1d58(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jb 0x1724b
cmpl $0x0, -0xc(%rbp)
jne 0x18a0c
leaq 0x9c34396(%rip), %rax   # 0x9c4b5e8
movq (%rax), %rdi
movl -0x8(%rbp), %eax
movl -0xc(%rbp), %ecx
subl $0x1, %ecx
sbbl $-0x1, %eax
decl %eax
movl %eax, %esi
callq 0xfd10
movq %rax, %rsi
leaq -0x158(%rbp), %rdi
callq 0x22ce0
jmp 0x1727b
movq -0x20(%rbp), %rdi
callq 0x1b790
movq %rax, %rsi
leaq -0x1b0(%rbp), %rdi
callq 0x22ce0
jmp 0x17295
leaq -0x238(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x22ce0
jmp 0x172aa
leaq -0x290(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x172bf
leaq -0x1e0(%rbp), %rdi
leaq -0x238(%rbp), %rsi
leaq -0x290(%rbp), %rdx
callq 0x1bf30
jmp 0x172db
leaq -0x290(%rbp), %rdi
callq 0xfd80
leaq -0x238(%rbp), %rdi
callq 0xfd80
leaq -0x1e0(%rbp), %rdi
callq 0x1c680
movb %al, -0x1d5d(%rbp)
jmp 0x17307
movb -0x1d5d(%rbp), %al
notb %al
andb $0x1, %al
movb %al, -0x291(%rbp)
leaq -0x320(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x22ce0
jmp 0x1732c
leaq -0x378(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x17341
leaq -0x2c8(%rbp), %rdi
leaq -0x320(%rbp), %rsi
leaq -0x378(%rbp), %rdx
callq 0x1bf30
jmp 0x1735d
leaq -0x378(%rbp), %rdi
callq 0xfd80
leaq -0x320(%rbp), %rdi
callq 0xfd80
leaq -0x400(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x1738a
leaq -0x458(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x1739f
leaq -0x3a8(%rbp), %rdi
leaq -0x400(%rbp), %rsi
leaq -0x458(%rbp), %rdx
callq 0x1bf30
jmp 0x173bb
leaq -0x458(%rbp), %rdi
callq 0xfd80
leaq -0x400(%rbp), %rdi
callq 0xfd80
movl $0x0, -0x45c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x23be0
movb %al, -0x1d5e(%rbp)
jmp 0x173f1
movb -0x1d5e(%rbp), %al
testb $0x1, %al
jne 0x18426
jmp 0x17401
cmpl $0x0, -0xc(%rbp)
jne 0x17c2e
leaq -0x3a8(%rbp), %rdi
callq 0x1c210
movb %al, -0x1d5f(%rbp)
jmp 0x1741f
movb -0x1d5f(%rbp), %al
testb $0x1, %al
jne 0x1742e
jmp 0x175c4
leaq -0x98(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x101f0
jmp 0x17443
leaq -0x98(%rbp), %rdi
callq 0xfee0
movl %eax, -0x45c(%rbp)
jmp 0x175c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1ab48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1ab3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x189fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x189ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x174e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xfd80
leaq -0x238(%rbp), %rdi
callq 0xfd80
jmp 0x189ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x189e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17542
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x378(%rbp), %rdi
callq 0xfd80
leaq -0x320(%rbp), %rdi
callq 0xfd80
jmp 0x189e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x189d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1759c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x458(%rbp), %rdi
callq 0xfd80
leaq -0x400(%rbp), %rdi
callq 0xfd80
jmp 0x189d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x189cb
testb $0x1, -0x15(%rbp)
je 0x17888
leaq -0x4b1(%rbp), %rdi
movq %rdi, -0x1d68(%rbp)
callq 0x6830
movq -0x1d68(%rbp), %rdx
leaq 0x48aad(%rip), %rsi     # 0x6009c
leaq -0x4b0(%rbp), %rdi
callq 0xfb20
jmp 0x175fd
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x490(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0x1bbe0
jmp 0x17619
leaq -0x98(%rbp), %rdi
leaq -0x490(%rbp), %rsi
callq 0x16860
jmp 0x1762e
leaq -0x490(%rbp), %rdi
callq 0xfc90
leaq -0x4b0(%rbp), %rdi
callq 0x62d0
leaq -0x4b1(%rbp), %rdi
callq 0x64f0
leaq -0x509(%rbp), %rdi
movq %rdi, -0x1d70(%rbp)
callq 0x6830
movq -0x1d70(%rbp), %rdx
leaq 0x48a2c(%rip), %rsi     # 0x6009f
leaq -0x508(%rbp), %rdi
callq 0xfb20
jmp 0x17681
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x4e8(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0x1bbe0
jmp 0x1769d
leaq -0x98(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0x16860
jmp 0x176b2
leaq -0x4e8(%rbp), %rdi
callq 0xfc90
leaq -0x508(%rbp), %rdi
callq 0x62d0
leaq -0x509(%rbp), %rdi
callq 0x64f0
leaq -0x561(%rbp), %rdi
movq %rdi, -0x1d78(%rbp)
callq 0x6830
movq -0x1d78(%rbp), %rdx
leaq 0x489ab(%rip), %rsi     # 0x600a2
leaq -0x560(%rbp), %rdi
callq 0xfb20
jmp 0x17705
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x540(%rbp), %rdi
leaq -0x560(%rbp), %rsi
callq 0x1bbe0
jmp 0x17721
leaq -0x98(%rbp), %rdi
leaq -0x540(%rbp), %rsi
callq 0x16860
jmp 0x17736
leaq -0x540(%rbp), %rdi
callq 0xfc90
leaq -0x560(%rbp), %rdi
callq 0x62d0
leaq -0x561(%rbp), %rdi
callq 0x64f0
jmp 0x17c29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x177b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x177a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x490(%rbp), %rdi
callq 0xfc90
leaq -0x4b0(%rbp), %rdi
callq 0x62d0
leaq -0x4b1(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17814
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17808
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0xfc90
leaq -0x508(%rbp), %rdi
callq 0x62d0
leaq -0x509(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17877
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1786b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x540(%rbp), %rdi
callq 0xfc90
leaq -0x560(%rbp), %rdi
callq 0x62d0
leaq -0x561(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
leaq -0x5b9(%rbp), %rdi
movq %rdi, -0x1d80(%rbp)
callq 0x6830
movq -0x1d80(%rbp), %rdx
leaq 0x487ed(%rip), %rsi     # 0x60096
leaq -0x5b8(%rbp), %rdi
callq 0xfb20
jmp 0x178b7
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x598(%rbp), %rdi
leaq -0x5b8(%rbp), %rsi
callq 0x1bbe0
jmp 0x178d3
leaq -0x98(%rbp), %rdi
leaq -0x598(%rbp), %rsi
callq 0x16860
jmp 0x178e8
leaq -0x598(%rbp), %rdi
callq 0xfc90
leaq -0x5b8(%rbp), %rdi
callq 0x62d0
leaq -0x5b9(%rbp), %rdi
callq 0x64f0
leaq -0x611(%rbp), %rdi
movq %rdi, -0x1d88(%rbp)
callq 0x6830
movq -0x1d88(%rbp), %rdx
leaq 0x4876c(%rip), %rsi     # 0x60099
leaq -0x610(%rbp), %rdi
callq 0xfb20
jmp 0x1793b
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x5f0(%rbp), %rdi
leaq -0x610(%rbp), %rsi
callq 0x1bbe0
jmp 0x17957
leaq -0x98(%rbp), %rdi
leaq -0x5f0(%rbp), %rsi
callq 0x16860
jmp 0x1796c
leaq -0x5f0(%rbp), %rdi
callq 0xfc90
leaq -0x610(%rbp), %rdi
callq 0x62d0
leaq -0x611(%rbp), %rdi
callq 0x64f0
leaq -0x669(%rbp), %rdi
movq %rdi, -0x1d90(%rbp)
callq 0x6830
movq -0x1d90(%rbp), %rdx
leaq 0x486f4(%rip), %rsi     # 0x600a5
leaq -0x668(%rbp), %rdi
callq 0xfb20
jmp 0x179bf
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x648(%rbp), %rdi
leaq -0x668(%rbp), %rsi
callq 0x1bbe0
jmp 0x179db
leaq -0x98(%rbp), %rdi
leaq -0x648(%rbp), %rsi
callq 0x16860
jmp 0x179f0
leaq -0x648(%rbp), %rdi
callq 0xfc90
leaq -0x668(%rbp), %rdi
callq 0x62d0
leaq -0x669(%rbp), %rdi
callq 0x64f0
leaq -0x6c1(%rbp), %rdi
movq %rdi, -0x1d98(%rbp)
callq 0x6830
movq -0x1d98(%rbp), %rdx
leaq 0x48673(%rip), %rsi     # 0x600a8
leaq -0x6c0(%rbp), %rdi
callq 0xfb20
jmp 0x17a43
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x6a0(%rbp), %rdi
leaq -0x6c0(%rbp), %rsi
callq 0x1bbe0
jmp 0x17a5f
leaq -0x98(%rbp), %rdi
leaq -0x6a0(%rbp), %rsi
callq 0x16860
jmp 0x17a74
leaq -0x6a0(%rbp), %rdi
callq 0xfc90
leaq -0x6c0(%rbp), %rdi
callq 0x62d0
leaq -0x6c1(%rbp), %rdi
callq 0x64f0
jmp 0x17c29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17aef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17ae3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x598(%rbp), %rdi
callq 0xfc90
leaq -0x5b8(%rbp), %rdi
callq 0x62d0
leaq -0x5b9(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17b52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17b46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x5f0(%rbp), %rdi
callq 0xfc90
leaq -0x610(%rbp), %rdi
callq 0x62d0
leaq -0x611(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17bb5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17ba9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x648(%rbp), %rdi
callq 0xfc90
leaq -0x668(%rbp), %rdi
callq 0x62d0
leaq -0x669(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17c18
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17c0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x6a0(%rbp), %rdi
callq 0xfc90
leaq -0x6c0(%rbp), %rdi
callq 0x62d0
leaq -0x6c1(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
jmp 0x183c5
testb $0x1, -0x15(%rbp)
je 0x17fff
cmpl $0x4, -0x2c8(%rbp)
jne 0x17e18
leaq -0x719(%rbp), %rdi
movq %rdi, -0x1da0(%rbp)
callq 0x6830
movq -0x1da0(%rbp), %rdx
leaq 0x483a7(%rip), %rsi     # 0x6000d
leaq -0x718(%rbp), %rdi
callq 0xfb20
jmp 0x17c74
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x6f8(%rbp), %rdi
leaq -0x718(%rbp), %rsi
callq 0x1bbe0
jmp 0x17c90
leaq -0x98(%rbp), %rdi
leaq -0x6f8(%rbp), %rsi
callq 0x16860
jmp 0x17ca5
leaq -0x6f8(%rbp), %rdi
callq 0xfc90
leaq -0x718(%rbp), %rdi
callq 0x62d0
leaq -0x719(%rbp), %rdi
callq 0x64f0
leaq -0x771(%rbp), %rdi
movq %rdi, -0x1da8(%rbp)
callq 0x6830
movq -0x1da8(%rbp), %rdx
leaq 0x48326(%rip), %rsi     # 0x60010
leaq -0x770(%rbp), %rdi
callq 0xfb20
jmp 0x17cf8
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x750(%rbp), %rdi
leaq -0x770(%rbp), %rsi
callq 0x1bbe0
jmp 0x17d14
leaq -0x98(%rbp), %rdi
leaq -0x750(%rbp), %rsi
callq 0x16860
jmp 0x17d29
leaq -0x750(%rbp), %rdi
callq 0xfc90
leaq -0x770(%rbp), %rdi
callq 0x62d0
leaq -0x771(%rbp), %rdi
callq 0x64f0
jmp 0x17ffa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17da4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17d98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x6f8(%rbp), %rdi
callq 0xfc90
leaq -0x718(%rbp), %rdi
callq 0x62d0
leaq -0x719(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17e07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17dfb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x750(%rbp), %rdi
callq 0xfc90
leaq -0x770(%rbp), %rdi
callq 0x62d0
leaq -0x771(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
cmpl $0x7, -0x2c8(%rbp)
jne 0x17ff8
leaq -0x7c9(%rbp), %rdi
movq %rdi, -0x1db0(%rbp)
callq 0x6830
movq -0x1db0(%rbp), %rdx
leaq 0x481cd(%rip), %rsi     # 0x60013
leaq -0x7c8(%rbp), %rdi
callq 0xfb20
jmp 0x17e54
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x7a8(%rbp), %rdi
leaq -0x7c8(%rbp), %rsi
callq 0x1bbe0
jmp 0x17e70
leaq -0x98(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
callq 0x16860
jmp 0x17e85
leaq -0x7a8(%rbp), %rdi
callq 0xfc90
leaq -0x7c8(%rbp), %rdi
callq 0x62d0
leaq -0x7c9(%rbp), %rdi
callq 0x64f0
leaq -0x821(%rbp), %rdi
movq %rdi, -0x1db8(%rbp)
callq 0x6830
movq -0x1db8(%rbp), %rdx
leaq 0x4814c(%rip), %rsi     # 0x60016
leaq -0x820(%rbp), %rdi
callq 0xfb20
jmp 0x17ed8
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x800(%rbp), %rdi
leaq -0x820(%rbp), %rsi
callq 0x1bbe0
jmp 0x17ef4
leaq -0x98(%rbp), %rdi
leaq -0x800(%rbp), %rsi
callq 0x16860
jmp 0x17f09
leaq -0x800(%rbp), %rdi
callq 0xfc90
leaq -0x820(%rbp), %rdi
callq 0x62d0
leaq -0x821(%rbp), %rdi
callq 0x64f0
jmp 0x17ff8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17f84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17f78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x7a8(%rbp), %rdi
callq 0xfc90
leaq -0x7c8(%rbp), %rdi
callq 0x62d0
leaq -0x7c9(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17fe7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x17fdb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x800(%rbp), %rdi
callq 0xfc90
leaq -0x820(%rbp), %rdi
callq 0x62d0
leaq -0x821(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
jmp 0x17ffa
jmp 0x183c3
cmpl $0x2, -0x2c8(%rbp)
jne 0x181df
leaq -0x879(%rbp), %rdi
movq %rdi, -0x1dc0(%rbp)
callq 0x6830
movq -0x1dc0(%rbp), %rdx
leaq 0x47fe0(%rip), %rsi     # 0x6000d
leaq -0x878(%rbp), %rdi
callq 0xfb20
jmp 0x1803b
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x858(%rbp), %rdi
leaq -0x878(%rbp), %rsi
callq 0x1bbe0
jmp 0x18057
leaq -0x98(%rbp), %rdi
leaq -0x858(%rbp), %rsi
callq 0x16860
jmp 0x1806c
leaq -0x858(%rbp), %rdi
callq 0xfc90
leaq -0x878(%rbp), %rdi
callq 0x62d0
leaq -0x879(%rbp), %rdi
callq 0x64f0
leaq -0x8d1(%rbp), %rdi
movq %rdi, -0x1dc8(%rbp)
callq 0x6830
movq -0x1dc8(%rbp), %rdx
leaq 0x47f5f(%rip), %rsi     # 0x60010
leaq -0x8d0(%rbp), %rdi
callq 0xfb20
jmp 0x180bf
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x8b0(%rbp), %rdi
leaq -0x8d0(%rbp), %rsi
callq 0x1bbe0
jmp 0x180db
leaq -0x98(%rbp), %rdi
leaq -0x8b0(%rbp), %rsi
callq 0x16860
jmp 0x180f0
leaq -0x8b0(%rbp), %rdi
callq 0xfc90
leaq -0x8d0(%rbp), %rdi
callq 0x62d0
leaq -0x8d1(%rbp), %rdi
callq 0x64f0
jmp 0x183c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1816b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1815f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x858(%rbp), %rdi
callq 0xfc90
leaq -0x878(%rbp), %rdi
callq 0x62d0
leaq -0x879(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x181ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x181c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x8b0(%rbp), %rdi
callq 0xfc90
leaq -0x8d0(%rbp), %rdi
callq 0x62d0
leaq -0x8d1(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
cmpl $0x9, -0x2c8(%rbp)
jne 0x183bf
leaq -0x929(%rbp), %rdi
movq %rdi, -0x1dd0(%rbp)
callq 0x6830
movq -0x1dd0(%rbp), %rdx
leaq 0x47e0c(%rip), %rsi     # 0x60019
leaq -0x928(%rbp), %rdi
callq 0xfb20
jmp 0x1821b
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x908(%rbp), %rdi
leaq -0x928(%rbp), %rsi
callq 0x1bbe0
jmp 0x18237
leaq -0x98(%rbp), %rdi
leaq -0x908(%rbp), %rsi
callq 0x16860
jmp 0x1824c
leaq -0x908(%rbp), %rdi
callq 0xfc90
leaq -0x928(%rbp), %rdi
callq 0x62d0
leaq -0x929(%rbp), %rdi
callq 0x64f0
leaq -0x981(%rbp), %rdi
movq %rdi, -0x1dd8(%rbp)
callq 0x6830
movq -0x1dd8(%rbp), %rdx
leaq 0x47d8c(%rip), %rsi     # 0x6001d
leaq -0x980(%rbp), %rdi
callq 0xfb20
jmp 0x1829f
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x960(%rbp), %rdi
leaq -0x980(%rbp), %rsi
callq 0x1bbe0
jmp 0x182bb
leaq -0x98(%rbp), %rdi
leaq -0x960(%rbp), %rsi
callq 0x16860
jmp 0x182d0
leaq -0x960(%rbp), %rdi
callq 0xfc90
leaq -0x980(%rbp), %rdi
callq 0x62d0
leaq -0x981(%rbp), %rdi
callq 0x64f0
jmp 0x183bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1834b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1833f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x908(%rbp), %rdi
callq 0xfc90
leaq -0x928(%rbp), %rdi
callq 0x62d0
leaq -0x929(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x183ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x183a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x960(%rbp), %rdi
callq 0xfc90
leaq -0x980(%rbp), %rdi
callq 0x62d0
leaq -0x981(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
jmp 0x183c1
jmp 0x183c3
jmp 0x183c5
leaq -0x98(%rbp), %rdi
movq %rdi, -0x1de0(%rbp)
callq 0x12f70
movq %rax, -0x998(%rbp)
movslq -0x45c(%rbp), %rsi
leaq -0x998(%rbp), %rdi
callq 0x16820
movq -0x1de0(%rbp), %rdi
movq %rax, -0x990(%rbp)
callq 0x12de0
movq %rax, -0x9a0(%rbp)
movq -0x990(%rbp), %rdi
movq -0x9a0(%rbp), %rsi
callq 0x16750
jmp 0x18421
jmp 0x1850d
leaq -0x9f1(%rbp), %rdi
movq %rdi, -0x1de8(%rbp)
callq 0x6830
movq -0x1de8(%rbp), %rdx
leaq 0x47bbd(%rip), %rsi     # 0x60004
leaq -0x9f0(%rbp), %rdi
callq 0xfb20
jmp 0x18455
leaq -0x9d0(%rbp), %rdi
leaq -0x9f0(%rbp), %rsi
movl $0x1, %edx
callq 0x1bbe0
jmp 0x1846f
leaq -0x98(%rbp), %rdi
leaq -0x9d0(%rbp), %rsi
callq 0x16860
jmp 0x18484
leaq -0x9d0(%rbp), %rdi
callq 0xfc90
leaq -0x9f0(%rbp), %rdi
callq 0x62d0
leaq -0x9f1(%rbp), %rdi
callq 0x64f0
jmp 0x1850d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x184fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x184f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x9d0(%rbp), %rdi
callq 0xfc90
leaq -0x9f0(%rbp), %rdi
callq 0x62d0
leaq -0x9f1(%rbp), %rdi
callq 0x64f0
jmp 0x189cb
leaq -0x98(%rbp), %rax
movq %rax, -0xa08(%rbp)
movq -0xa08(%rbp), %rdi
callq 0x12f70
movq %rax, -0xa10(%rbp)
movq -0xa08(%rbp), %rdi
callq 0x12de0
movq %rax, -0xa18(%rbp)
leaq -0xa10(%rbp), %rdi
leaq -0xa18(%rbp), %rsi
callq 0x16890
testb $0x1, %al
jne 0x1855d
jmp 0x18970
leaq -0xa10(%rbp), %rdi
callq 0x168d0
movq %rax, %rsi
leaq -0xa48(%rbp), %rdi
callq 0xfdb0
jmp 0x1857a
leaq -0xaf8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x1858f
leaq -0xb28(%rbp), %rdi
leaq -0xa48(%rbp), %rsi
callq 0xfdb0
jmp 0x185a4
leaq -0xaa0(%rbp), %rdi
leaq -0xaf8(%rbp), %rsi
leaq -0xb28(%rbp), %rdx
callq 0x1c440
jmp 0x185c0
leaq -0xb28(%rbp), %rdi
callq 0xfc90
leaq -0xaf8(%rbp), %rdi
callq 0xfd80
movl -0xaa0(%rbp), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %ecx, %eax
sarl %eax
movl %eax, -0xaa0(%rbp)
movq -0x20(%rbp), %rsi
leaq -0xb80(%rbp), %rdi
callq 0x2ddf0
jmp 0x185ff
leaq -0xaa0(%rbp), %rdi
leaq -0xb80(%rbp), %rsi
callq 0x23ae0
movb %al, -0x1de9(%rbp)
jmp 0x1861a
movb -0x1de9(%rbp), %al
andb $0x1, %al
movb %al, -0xa4b(%rbp)
leaq -0xb80(%rbp), %rdi
callq 0xfd80
leaq -0xc08(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x18649
leaq -0xc60(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x1865e
leaq -0xbb0(%rbp), %rdi
leaq -0xc08(%rbp), %rsi
leaq -0xc60(%rbp), %rdx
callq 0x1bf30
jmp 0x1867a
leaq -0xc60(%rbp), %rdi
callq 0xfd80
leaq -0xc08(%rbp), %rdi
callq 0xfd80
movl -0x10(%rbp), %eax
movl %eax, -0x1df0(%rbp)
movl -0xa48(%rbp), %ecx
xorl %eax, %eax
cmpl -0x2c8(%rbp), %ecx
movb %al, -0x1dea(%rbp)
jne 0x186ef
movb $0x1, %al
cmpl $0x3, -0xa48(%rbp)
movb %al, -0x1df1(%rbp)
je 0x186e3
movb $0x1, %al
cmpl $0x6, -0xa48(%rbp)
movb %al, -0x1df1(%rbp)
je 0x186e3
cmpl $0xa, -0xa48(%rbp)
sete %al
movb %al, -0x1df1(%rbp)
movb -0x1df1(%rbp), %al
movb %al, -0x1dea(%rbp)
movl -0x1df0(%rbp), %eax
movb -0x1dea(%rbp), %cl
movzbl %cl, %ecx
andl $0x1, %ecx
subl %ecx, %eax
movl %eax, -0x9f8(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x1df8(%rbp)
leaq -0xbb0(%rbp), %rdi
callq 0x1c680
movb %al, -0x1df2(%rbp)
jmp 0x18726
movl -0x1df8(%rbp), %eax
movb -0x1df2(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
movb -0x291(%rbp), %dl
andb $0x1, %dl
movzbl %dl, %edx
cmpl %edx, %ecx
setne %cl
andb $0x1, %cl
movzbl %cl, %ecx
subl %ecx, %eax
movl %eax, -0x9fc(%rbp)
cmpl $0x0, -0x9f8(%rbp)
jl 0x1876d
cmpl $0x0, -0x9fc(%rbp)
jge 0x18876
movl $0x3, -0xc64(%rbp)
jmp 0x188ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x18962
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x187c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xb28(%rbp), %rdi
callq 0xfc90
leaq -0xaf8(%rbp), %rdi
callq 0xfd80
jmp 0x18962
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x18956
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xb80(%rbp), %rdi
callq 0xfd80
jmp 0x18956
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x18842
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xc60(%rbp), %rdi
callq 0xfd80
leaq -0xc08(%rbp), %rdi
callq 0xfd80
jmp 0x18956
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xbb0(%rbp), %rdi
callq 0xfc90
jmp 0x18956
movq -0x20(%rbp), %rdi
leaq -0xaa0(%rbp), %rsi
callq 0xff80
jmp 0x18888
movl -0x8(%rbp), %edi
movl -0xc(%rbp), %esi
addl %esi, %edi
incl %esi
andl $0x1, %esi
movl -0x9f8(%rbp), %edx
movl -0x9fc(%rbp), %ecx
movq -0x20(%rbp), %r9
movzbl -0x15(%rbp), %r8d
andl $0x1, %r8d
callq 0x170a0
movb %al, -0x1df9(%rbp)
jmp 0x188bb
movb -0x1df9(%rbp), %al
testb $0x1, %al
jne 0x188c7
jmp 0x188d7
movb $0x1, -0x1(%rbp)
movl $0x1, -0xc64(%rbp)
jmp 0x188ea
movq -0x20(%rbp), %rdi
callq 0x168f0
movl $0x0, -0xc64(%rbp)
leaq -0xbb0(%rbp), %rdi
callq 0xfc90
leaq -0xaa0(%rbp), %rdi
callq 0xfd80
movl -0xc64(%rbp), %eax
testl %eax, %eax
jne 0x18918
jmp 0x1890e
movl $0x0, -0xc64(%rbp)
leaq -0xa48(%rbp), %rdi
callq 0xfc90
movl -0xc64(%rbp), %eax
movl %eax, -0x1e00(%rbp)
testl %eax, %eax
je 0x18943
jmp 0x18936
movl -0x1e00(%rbp), %eax
subl $0x3, %eax
je 0x18945
jmp 0x1897a
jmp 0x18945
leaq -0xa10(%rbp), %rdi
callq 0x16920
jmp 0x18541
leaq -0xaa0(%rbp), %rdi
callq 0xfd80
leaq -0xa48(%rbp), %rdi
callq 0xfc90
jmp 0x189cb
movl $0x0, -0xc64(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0xfc90
leaq -0x2c8(%rbp), %rdi
callq 0xfc90
leaq -0x1e0(%rbp), %rdi
callq 0xfc90
leaq -0x1b0(%rbp), %rdi
callq 0xfd80
leaq -0x158(%rbp), %rdi
callq 0xfd80
movl -0xc64(%rbp), %eax
testl %eax, %eax
jne 0x1ab22
jmp 0x189c6
jmp 0x1aaa0
leaq -0x3a8(%rbp), %rdi
callq 0xfc90
leaq -0x2c8(%rbp), %rdi
callq 0xfc90
leaq -0x1e0(%rbp), %rdi
callq 0xfc90
leaq -0x1b0(%rbp), %rdi
callq 0xfd80
leaq -0x158(%rbp), %rdi
callq 0xfd80
jmp 0x1ab3c
movl -0x8(%rbp), %eax
movl %eax, -0x1e08(%rbp)
leaq 0x9c32bcc(%rip), %rax   # 0x9c4b5e8
movq (%rax), %rdi
callq 0x2dd40
movl %eax, -0x1e04(%rbp)
jmp 0x18a2c
movl -0x1e08(%rbp), %eax
movl -0x1e04(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x19ef8
cmpl $0x0, -0xc(%rbp)
je 0x19ef8
leaq 0x9c32b94(%rip), %rax   # 0x9c4b5e8
movq (%rax), %rdi
movl -0x8(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xfd10
movq %rax, %rsi
leaq -0xcc0(%rbp), %rdi
callq 0x22ce0
jmp 0x18a74
movq -0x20(%rbp), %rdi
callq 0x1b790
movq %rax, %rsi
leaq -0xd18(%rbp), %rdi
callq 0x22ce0
jmp 0x18a8e
leaq -0xda0(%rbp), %rdi
leaq -0xcc0(%rbp), %rsi
callq 0x22ce0
jmp 0x18aa3
leaq -0xdf8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x18ab8
leaq -0xd48(%rbp), %rdi
leaq -0xda0(%rbp), %rsi
leaq -0xdf8(%rbp), %rdx
callq 0x1bf30
jmp 0x18ad4
leaq -0xdf8(%rbp), %rdi
callq 0xfd80
leaq -0xda0(%rbp), %rdi
callq 0xfd80
leaq -0xd48(%rbp), %rdi
callq 0x1c680
movb %al, -0x1e09(%rbp)
jmp 0x18b00
movb -0x1e09(%rbp), %al
notb %al
andb $0x1, %al
movb %al, -0xdf9(%rbp)
leaq -0xe88(%rbp), %rdi
leaq -0xcc0(%rbp), %rsi
callq 0x22ce0
jmp 0x18b25
leaq -0xee0(%rbp), %rdi
leaq -0xd18(%rbp), %rsi
callq 0x22ce0
jmp 0x18b3a
leaq -0xe30(%rbp), %rdi
leaq -0xe88(%rbp), %rsi
leaq -0xee0(%rbp), %rdx
callq 0x1bf30
jmp 0x18b56
leaq -0xee0(%rbp), %rdi
callq 0xfd80
leaq -0xe88(%rbp), %rdi
callq 0xfd80
leaq -0xf0(%rbp), %rdi
callq 0x23be0
movb %al, -0x1e0a(%rbp)
jmp 0x18b82
movb -0x1e0a(%rbp), %al
testb $0x1, %al
jne 0x1999a
jmp 0x18b92
movb -0xdf9(%rbp), %al
movb %al, -0x1e0b(%rbp)
leaq -0xf38(%rbp), %rdi
leaq -0xcc0(%rbp), %rsi
callq 0x22ce0
jmp 0x18bb3
leaq -0xf90(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x18bc8
leaq -0xfe1(%rbp), %rdi
movq %rdi, -0x1e18(%rbp)
callq 0x6830
movq -0x1e18(%rbp), %rdx
leaq 0x4741b(%rip), %rsi     # 0x60004
leaq -0xfe0(%rbp), %rdi
callq 0xfb20
jmp 0x18bf7
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0xfc0(%rbp), %rdi
leaq -0xfe0(%rbp), %rsi
callq 0x1bbe0
jmp 0x18c13
movb -0x1e0b(%rbp), %al
movq -0x20(%rbp), %rdx
movq %rsp, %rcx
movq %rdx, (%rcx)
movzbl %al, %esi
andl $0x1, %esi
movl $0x1, %edi
leaq -0x98(%rbp), %rdx
leaq -0xf38(%rbp), %rcx
leaq -0xf90(%rbp), %r8
leaq -0xfc0(%rbp), %r9
callq 0x1ab70
jmp 0x18c51
leaq -0xfc0(%rbp), %rdi
callq 0xfc90
leaq -0xfe0(%rbp), %rdi
callq 0x62d0
leaq -0xfe1(%rbp), %rdi
callq 0x64f0
leaq -0xf90(%rbp), %rdi
callq 0xfd80
leaq -0xf38(%rbp), %rdi
callq 0xfd80
leaq -0x1009(%rbp), %rdi
movq %rdi, -0x1e20(%rbp)
callq 0x6830
movq -0x1e20(%rbp), %rdx
leaq 0x47359(%rip), %rsi     # 0x60007
leaq -0x1008(%rbp), %rdi
callq 0xfb20
jmp 0x18cbc
leaq -0xe30(%rbp), %rdi
leaq -0x1008(%rbp), %rsi
callq 0x1c180
movb %al, -0x1e21(%rbp)
jmp 0x18cd7
leaq -0x1008(%rbp), %rdi
callq 0x62d0
leaq -0x1009(%rbp), %rdi
callq 0x64f0
movb -0x1e21(%rbp), %al
testb $0x1, %al
jne 0x18cfe
jmp 0x19041
movb -0xdf9(%rbp), %al
movb %al, -0x1e22(%rbp)
leaq -0x1068(%rbp), %rdi
leaq -0xcc0(%rbp), %rsi
callq 0x22ce0
jmp 0x18d1f
leaq -0x10c0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x18d34
leaq -0x1111(%rbp), %rdi
movq %rdi, -0x1e30(%rbp)
callq 0x6830
movq -0x1e30(%rbp), %rdx
leaq 0x472b2(%rip), %rsi     # 0x60007
leaq -0x1110(%rbp), %rdi
callq 0xfb20
jmp 0x18d63
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x10f0(%rbp), %rdi
leaq -0x1110(%rbp), %rsi
callq 0x1bbe0
jmp 0x18d7f
movb -0x1e22(%rbp), %al
movq -0x20(%rbp), %rdx
movq %rsp, %rcx
movq %rdx, (%rcx)
movzbl %al, %esi
andl $0x1, %esi
movl $0x1, %edi
leaq -0x98(%rbp), %rdx
leaq -0x1068(%rbp), %rcx
leaq -0x10c0(%rbp), %r8
leaq -0x10f0(%rbp), %r9
callq 0x1ab70
jmp 0x18dbd
leaq -0x10f0(%rbp), %rdi
callq 0xfc90
leaq -0x1110(%rbp), %rdi
callq 0x62d0
leaq -0x1111(%rbp), %rdi
callq 0x64f0
leaq -0x10c0(%rbp), %rdi
callq 0xfd80
leaq -0x1068(%rbp), %rdi
callq 0xfd80
jmp 0x19041
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19ee7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19edb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x18e5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xdf8(%rbp), %rdi
callq 0xfd80
leaq -0xda0(%rbp), %rdi
callq 0xfd80
jmp 0x19edb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19ecf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x18eb8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xee0(%rbp), %rdi
callq 0xfd80
leaq -0xe88(%rbp), %rdi
callq 0xfd80
jmp 0x19ecf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19ec3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x18f5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x18f46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x18f3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xfc0(%rbp), %rdi
callq 0xfc90
leaq -0xfe0(%rbp), %rdi
callq 0x62d0
leaq -0xfe1(%rbp), %rdi
callq 0x64f0
leaq -0xf90(%rbp), %rdi
callq 0xfd80
leaq -0xf38(%rbp), %rdi
callq 0xfd80
jmp 0x19ec3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x18fa1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1008(%rbp), %rdi
callq 0x62d0
leaq -0x1009(%rbp), %rdi
callq 0x64f0
jmp 0x19ec3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19030
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19018
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1900c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x10f0(%rbp), %rdi
callq 0xfc90
leaq -0x1110(%rbp), %rdi
callq 0x62d0
leaq -0x1111(%rbp), %rdi
callq 0x64f0
leaq -0x10c0(%rbp), %rdi
callq 0xfd80
leaq -0x1068(%rbp), %rdi
callq 0xfd80
jmp 0x19ec3
leaq -0x1139(%rbp), %rdi
movq %rdi, -0x1e38(%rbp)
callq 0x6830
movq -0x1e38(%rbp), %rdx
leaq 0x46fa8(%rip), %rsi     # 0x6000a
leaq -0x1138(%rbp), %rdi
callq 0xfb20
jmp 0x19070
leaq -0xe30(%rbp), %rdi
leaq -0x1138(%rbp), %rsi
callq 0x1c180
movb %al, -0x1e39(%rbp)
jmp 0x1908b
movb -0x1e39(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x1e3a(%rbp)
jne 0x190a0
jmp 0x190a9
movb -0x15(%rbp), %al
movb %al, -0x1e3a(%rbp)
movb -0x1e3a(%rbp), %al
movb %al, -0x1e3b(%rbp)
leaq -0x1138(%rbp), %rdi
callq 0x62d0
leaq -0x1139(%rbp), %rdi
callq 0x64f0
movb -0x1e3b(%rbp), %al
testb $0x1, %al
jne 0x190dc
jmp 0x192ae
movb -0xdf9(%rbp), %al
movb %al, -0x1e3c(%rbp)
leaq -0x1198(%rbp), %rdi
leaq -0xcc0(%rbp), %rsi
callq 0x22ce0
jmp 0x190fd
leaq -0x11f0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x19112
leaq -0x1241(%rbp), %rdi
movq %rdi, -0x1e48(%rbp)
callq 0x6830
movq -0x1e48(%rbp), %rdx
leaq 0x46ed7(%rip), %rsi     # 0x6000a
leaq -0x1240(%rbp), %rdi
callq 0xfb20
jmp 0x19141
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x1220(%rbp), %rdi
leaq -0x1240(%rbp), %rsi
callq 0x1bbe0
jmp 0x1915d
movb -0x1e3c(%rbp), %al
movq -0x20(%rbp), %rdx
movq %rsp, %rcx
movq %rdx, (%rcx)
movzbl %al, %esi
andl $0x1, %esi
movl $0x1, %edi
leaq -0x98(%rbp), %rdx
leaq -0x1198(%rbp), %rcx
leaq -0x11f0(%rbp), %r8
leaq -0x1220(%rbp), %r9
callq 0x1ab70
jmp 0x1919b
leaq -0x1220(%rbp), %rdi
callq 0xfc90
leaq -0x1240(%rbp), %rdi
callq 0x62d0
leaq -0x1241(%rbp), %rdi
callq 0x64f0
leaq -0x11f0(%rbp), %rdi
callq 0xfd80
leaq -0x1198(%rbp), %rdi
callq 0xfd80
jmp 0x192ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1920e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1138(%rbp), %rdi
callq 0x62d0
leaq -0x1139(%rbp), %rdi
callq 0x64f0
jmp 0x19ec3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1929d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19285
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19279
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1220(%rbp), %rdi
callq 0xfc90
leaq -0x1240(%rbp), %rdi
callq 0x62d0
leaq -0x1241(%rbp), %rdi
callq 0x64f0
leaq -0x11f0(%rbp), %rdi
callq 0xfd80
leaq -0x1198(%rbp), %rdi
callq 0xfd80
jmp 0x19ec3
leaq -0x98(%rbp), %rdi
movq %rdi, -0x1e50(%rbp)
callq 0x12f70
movq -0x1e50(%rbp), %rdi
movq %rax, -0x1250(%rbp)
callq 0x12de0
movq %rax, -0x1258(%rbp)
movq -0x1250(%rbp), %rdi
movq -0x1258(%rbp), %rsi
callq 0x16750
jmp 0x192f0
leaq -0x98(%rbp), %rdi
callq 0xfee0
movl %eax, -0x125c(%rbp)
movb -0xdf9(%rbp), %al
xorb $0x1, %al
movb %al, -0x1e51(%rbp)
leaq -0x12b8(%rbp), %rdi
leaq -0xcc0(%rbp), %rsi
callq 0x22ce0
jmp 0x19325
leaq -0x1310(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x1933a
leaq -0x1361(%rbp), %rdi
movq %rdi, -0x1e60(%rbp)
callq 0x6830
movq -0x1e60(%rbp), %rdx
leaq 0x46ca9(%rip), %rsi     # 0x60004
leaq -0x1360(%rbp), %rdi
callq 0xfb20
jmp 0x19369
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x1340(%rbp), %rdi
leaq -0x1360(%rbp), %rsi
callq 0x1bbe0
jmp 0x19385
movb -0x1e51(%rbp), %al
movq -0x20(%rbp), %rdx
movq %rsp, %rcx
movq %rdx, (%rcx)
movzbl %al, %esi
andl $0x1, %esi
xorl %edi, %edi
leaq -0x98(%rbp), %rdx
leaq -0x12b8(%rbp), %rcx
leaq -0x1310(%rbp), %r8
leaq -0x1340(%rbp), %r9
callq 0x1ab70
jmp 0x193c0
leaq -0x1340(%rbp), %rdi
callq 0xfc90
leaq -0x1360(%rbp), %rdi
callq 0x62d0
leaq -0x1361(%rbp), %rdi
callq 0x64f0
leaq -0x1310(%rbp), %rdi
callq 0xfd80
leaq -0x12b8(%rbp), %rdi
callq 0xfd80
leaq -0x1389(%rbp), %rdi
movq %rdi, -0x1e68(%rbp)
callq 0x6830
movq -0x1e68(%rbp), %rdx
leaq 0x46bea(%rip), %rsi     # 0x60007
leaq -0x1388(%rbp), %rdi
callq 0xfb20
jmp 0x1942b
leaq -0xe30(%rbp), %rdi
leaq -0x1388(%rbp), %rsi
callq 0x1c180
movb %al, -0x1e69(%rbp)
jmp 0x19446
leaq -0x1388(%rbp), %rdi
callq 0x62d0
leaq -0x1389(%rbp), %rdi
callq 0x64f0
movb -0x1e69(%rbp), %al
testb $0x1, %al
jne 0x1946d
jmp 0x196cd
movb -0xdf9(%rbp), %al
xorb $0x1, %al
movb %al, -0x1e6a(%rbp)
leaq -0x13e8(%rbp), %rdi
leaq -0xcc0(%rbp), %rsi
callq 0x22ce0
jmp 0x19490
leaq -0x1440(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x194a5
leaq -0x1491(%rbp), %rdi
movq %rdi, -0x1e78(%rbp)
callq 0x6830
movq -0x1e78(%rbp), %rdx
leaq 0x46b41(%rip), %rsi     # 0x60007
leaq -0x1490(%rbp), %rdi
callq 0xfb20
jmp 0x194d4
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x1470(%rbp), %rdi
leaq -0x1490(%rbp), %rsi
callq 0x1bbe0
jmp 0x194f0
movb -0x1e6a(%rbp), %al
movq -0x20(%rbp), %rdx
movq %rsp, %rcx
movq %rdx, (%rcx)
movzbl %al, %esi
andl $0x1, %esi
xorl %edi, %edi
leaq -0x98(%rbp), %rdx
leaq -0x13e8(%rbp), %rcx
leaq -0x1440(%rbp), %r8
leaq -0x1470(%rbp), %r9
callq 0x1ab70
jmp 0x1952b
leaq -0x1470(%rbp), %rdi
callq 0xfc90
leaq -0x1490(%rbp), %rdi
callq 0x62d0
leaq -0x1491(%rbp), %rdi
callq 0x64f0
leaq -0x1440(%rbp), %rdi
callq 0xfd80
leaq -0x13e8(%rbp), %rdi
callq 0xfd80
jmp 0x196cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x195ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x195d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x195c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1340(%rbp), %rdi
callq 0xfc90
leaq -0x1360(%rbp), %rdi
callq 0x62d0
leaq -0x1361(%rbp), %rdi
callq 0x64f0
leaq -0x1310(%rbp), %rdi
callq 0xfd80
leaq -0x12b8(%rbp), %rdi
callq 0xfd80
jmp 0x19ec3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1962d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1388(%rbp), %rdi
callq 0x62d0
leaq -0x1389(%rbp), %rdi
callq 0x64f0
jmp 0x19ec3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x196bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x196a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19698
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1470(%rbp), %rdi
callq 0xfc90
leaq -0x1490(%rbp), %rdi
callq 0x62d0
leaq -0x1491(%rbp), %rdi
callq 0x64f0
leaq -0x1440(%rbp), %rdi
callq 0xfd80
leaq -0x13e8(%rbp), %rdi
callq 0xfd80
jmp 0x19ec3
leaq -0x14b9(%rbp), %rdi
movq %rdi, -0x1e80(%rbp)
callq 0x6830
movq -0x1e80(%rbp), %rdx
leaq 0x4691c(%rip), %rsi     # 0x6000a
leaq -0x14b8(%rbp), %rdi
callq 0xfb20
jmp 0x196fc
leaq -0xe30(%rbp), %rdi
leaq -0x14b8(%rbp), %rsi
callq 0x1c180
movb %al, -0x1e81(%rbp)
jmp 0x19717
movb -0x1e81(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x1e82(%rbp)
jne 0x1972c
jmp 0x19735
movb -0x15(%rbp), %al
movb %al, -0x1e82(%rbp)
movb -0x1e82(%rbp), %al
movb %al, -0x1e83(%rbp)
leaq -0x14b8(%rbp), %rdi
callq 0x62d0
leaq -0x14b9(%rbp), %rdi
callq 0x64f0
movb -0x1e83(%rbp), %al
testb $0x1, %al
jne 0x19768
jmp 0x19939
movb -0xdf9(%rbp), %al
xorb $0x1, %al
movb %al, -0x1e84(%rbp)
leaq -0x1518(%rbp), %rdi
leaq -0xcc0(%rbp), %rsi
callq 0x22ce0
jmp 0x1978b
leaq -0x1570(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x197a0
leaq -0x15c1(%rbp), %rdi
movq %rdi, -0x1e90(%rbp)
callq 0x6830
movq -0x1e90(%rbp), %rdx
leaq 0x46849(%rip), %rsi     # 0x6000a
leaq -0x15c0(%rbp), %rdi
callq 0xfb20
jmp 0x197cf
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x15a0(%rbp), %rdi
leaq -0x15c0(%rbp), %rsi
callq 0x1bbe0
jmp 0x197eb
movb -0x1e84(%rbp), %al
movq -0x20(%rbp), %rdx
movq %rsp, %rcx
movq %rdx, (%rcx)
movzbl %al, %esi
andl $0x1, %esi
xorl %edi, %edi
leaq -0x98(%rbp), %rdx
leaq -0x1518(%rbp), %rcx
leaq -0x1570(%rbp), %r8
leaq -0x15a0(%rbp), %r9
callq 0x1ab70
jmp 0x19826
leaq -0x15a0(%rbp), %rdi
callq 0xfc90
leaq -0x15c0(%rbp), %rdi
callq 0x62d0
leaq -0x15c1(%rbp), %rdi
callq 0x64f0
leaq -0x1570(%rbp), %rdi
callq 0xfd80
leaq -0x1518(%rbp), %rdi
callq 0xfd80
jmp 0x19939
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19899
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x14b8(%rbp), %rdi
callq 0x62d0
leaq -0x14b9(%rbp), %rdi
callq 0x64f0
jmp 0x19ec3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19928
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19910
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19904
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x15a0(%rbp), %rdi
callq 0xfc90
leaq -0x15c0(%rbp), %rdi
callq 0x62d0
leaq -0x15c1(%rbp), %rdi
callq 0x64f0
leaq -0x1570(%rbp), %rdi
callq 0xfd80
leaq -0x1518(%rbp), %rdi
callq 0xfd80
jmp 0x19ec3
leaq -0x98(%rbp), %rdi
movq %rdi, -0x1e98(%rbp)
callq 0x12f70
movq %rax, -0x15d8(%rbp)
movslq -0x125c(%rbp), %rsi
leaq -0x15d8(%rbp), %rdi
callq 0x16820
movq -0x1e98(%rbp), %rdi
movq %rax, -0x15d0(%rbp)
callq 0x12de0
movq %rax, -0x15e0(%rbp)
movq -0x15d0(%rbp), %rdi
movq -0x15e0(%rbp), %rsi
callq 0x16750
jmp 0x19995
jmp 0x19a81
leaq -0x1631(%rbp), %rdi
movq %rdi, -0x1ea0(%rbp)
callq 0x6830
movq -0x1ea0(%rbp), %rdx
leaq 0x46649(%rip), %rsi     # 0x60004
leaq -0x1630(%rbp), %rdi
callq 0xfb20
jmp 0x199c9
leaq -0x1610(%rbp), %rdi
leaq -0x1630(%rbp), %rsi
movl $0x1, %edx
callq 0x1bbe0
jmp 0x199e3
leaq -0x98(%rbp), %rdi
leaq -0x1610(%rbp), %rsi
callq 0x16860
jmp 0x199f8
leaq -0x1610(%rbp), %rdi
callq 0xfc90
leaq -0x1630(%rbp), %rdi
callq 0x62d0
leaq -0x1631(%rbp), %rdi
callq 0x64f0
jmp 0x19a81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19a70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19a64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1610(%rbp), %rdi
callq 0xfc90
leaq -0x1630(%rbp), %rdi
callq 0x62d0
leaq -0x1631(%rbp), %rdi
callq 0x64f0
jmp 0x19ec3
leaq -0x98(%rbp), %rax
movq %rax, -0x1648(%rbp)
movq -0x1648(%rbp), %rdi
callq 0x12f70
movq %rax, -0x1650(%rbp)
movq -0x1648(%rbp), %rdi
callq 0x12de0
movq %rax, -0x1658(%rbp)
leaq -0x1650(%rbp), %rdi
leaq -0x1658(%rbp), %rsi
callq 0x16890
testb $0x1, %al
jne 0x19ad1
jmp 0x19e74
leaq -0x1650(%rbp), %rdi
callq 0x168d0
movq %rax, %rsi
leaq -0x1688(%rbp), %rdi
callq 0xfdb0
jmp 0x19aee
leaq -0x1738(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x19b03
leaq -0x1768(%rbp), %rdi
leaq -0x1688(%rbp), %rsi
callq 0xfdb0
jmp 0x19b18
leaq -0x16e0(%rbp), %rdi
leaq -0x1738(%rbp), %rsi
leaq -0x1768(%rbp), %rdx
callq 0x1c440
jmp 0x19b34
leaq -0x1768(%rbp), %rdi
callq 0xfc90
leaq -0x1738(%rbp), %rdi
callq 0xfd80
leaq -0x17f0(%rbp), %rdi
leaq -0xd18(%rbp), %rsi
callq 0x22ce0
jmp 0x19b61
leaq -0x1848(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x19b76
leaq -0x1798(%rbp), %rdi
leaq -0x17f0(%rbp), %rsi
leaq -0x1848(%rbp), %rdx
callq 0x1bf30
jmp 0x19b92
leaq -0x1848(%rbp), %rdi
callq 0xfd80
leaq -0x17f0(%rbp), %rdi
callq 0xfd80
movl -0x10(%rbp), %eax
movl %eax, -0x1ea8(%rbp)
movl -0x1688(%rbp), %ecx
xorl %eax, %eax
cmpl -0xe30(%rbp), %ecx
movb %al, -0x1ea1(%rbp)
jne 0x19c07
movb $0x1, %al
cmpl $0x3, -0x1688(%rbp)
movb %al, -0x1ea9(%rbp)
je 0x19bfb
movb $0x1, %al
cmpl $0x6, -0x1688(%rbp)
movb %al, -0x1ea9(%rbp)
je 0x19bfb
cmpl $0xa, -0x1688(%rbp)
sete %al
movb %al, -0x1ea9(%rbp)
movb -0x1ea9(%rbp), %al
movb %al, -0x1ea1(%rbp)
movl -0x1ea8(%rbp), %eax
movb -0x1ea1(%rbp), %cl
movzbl %cl, %ecx
andl $0x1, %ecx
subl %ecx, %eax
movl %eax, -0x1638(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x1eb0(%rbp)
leaq -0x1798(%rbp), %rdi
callq 0x1c680
movb %al, -0x1eaa(%rbp)
jmp 0x19c3e
movl -0x1eb0(%rbp), %eax
movb -0x1eaa(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
movb -0xdf9(%rbp), %dl
andb $0x1, %dl
movzbl %dl, %edx
cmpl %edx, %ecx
setne %cl
andb $0x1, %cl
movzbl %cl, %ecx
subl %ecx, %eax
movl %eax, -0x163c(%rbp)
cmpl $0x0, -0x1638(%rbp)
jl 0x19c85
cmpl $0x0, -0x163c(%rbp)
jge 0x19d6b
movl $0x5, -0xc64(%rbp)
jmp 0x19dee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19e66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19cdd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1768(%rbp), %rdi
callq 0xfc90
leaq -0x1738(%rbp), %rdi
callq 0xfd80
jmp 0x19e66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19e5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x19d37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1848(%rbp), %rdi
callq 0xfd80
leaq -0x17f0(%rbp), %rdi
callq 0xfd80
jmp 0x19e5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1798(%rbp), %rdi
callq 0xfc90
jmp 0x19e5a
movl -0x16e0(%rbp), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %ecx, %eax
sarl %eax
movl %eax, -0x16e0(%rbp)
movq -0x20(%rbp), %rdi
leaq -0x16e0(%rbp), %rsi
callq 0xff80
jmp 0x19d92
movl -0x8(%rbp), %edi
incl %edi
movl -0x1638(%rbp), %edx
movl -0x163c(%rbp), %ecx
movq -0x20(%rbp), %r9
movzbl -0x15(%rbp), %r8d
andl $0x1, %r8d
xorl %esi, %esi
callq 0x170a0
movb %al, -0x1eb1(%rbp)
jmp 0x19dbf
movb -0x1eb1(%rbp), %al
testb $0x1, %al
jne 0x19dcb
jmp 0x19ddb
movb $0x1, -0x1(%rbp)
movl $0x1, -0xc64(%rbp)
jmp 0x19dee
movq -0x20(%rbp), %rdi
callq 0x168f0
movl $0x0, -0xc64(%rbp)
leaq -0x1798(%rbp), %rdi
callq 0xfc90
leaq -0x16e0(%rbp), %rdi
callq 0xfd80
movl -0xc64(%rbp), %eax
testl %eax, %eax
jne 0x19e1c
jmp 0x19e12
movl $0x0, -0xc64(%rbp)
leaq -0x1688(%rbp), %rdi
callq 0xfc90
movl -0xc64(%rbp), %eax
movl %eax, -0x1eb8(%rbp)
testl %eax, %eax
je 0x19e47
jmp 0x19e3a
movl -0x1eb8(%rbp), %eax
subl $0x5, %eax
je 0x19e49
jmp 0x19e7e
jmp 0x19e49
leaq -0x1650(%rbp), %rdi
callq 0x16920
jmp 0x19ab5
leaq -0x16e0(%rbp), %rdi
callq 0xfd80
leaq -0x1688(%rbp), %rdi
callq 0xfc90
jmp 0x19ec3
movl $0x0, -0xc64(%rbp)
leaq -0xe30(%rbp), %rdi
callq 0xfc90
leaq -0xd48(%rbp), %rdi
callq 0xfc90
leaq -0xd18(%rbp), %rdi
callq 0xfd80
leaq -0xcc0(%rbp), %rdi
callq 0xfd80
movl -0xc64(%rbp), %eax
testl %eax, %eax
jne 0x1ab22
jmp 0x19ebe
jmp 0x1aa9e
leaq -0xe30(%rbp), %rdi
callq 0xfc90
leaq -0xd48(%rbp), %rdi
callq 0xfc90
leaq -0xd18(%rbp), %rdi
callq 0xfd80
leaq -0xcc0(%rbp), %rdi
callq 0xfd80
jmp 0x1ab3c
cmpl $0x0, -0xc(%rbp)
jne 0x1a0f0
movq -0x20(%rbp), %rax
movq %rax, -0x1ec8(%rbp)
leaq -0x18c1(%rbp), %rdi
movq %rdi, -0x1ec0(%rbp)
callq 0x6830
movq -0x1ec0(%rbp), %rdx
leaq 0x46d9f(%rip), %rsi     # 0x60ccd
leaq -0x18c0(%rbp), %rdi
callq 0xfb20
jmp 0x19f3c
leaq -0x18e9(%rbp), %rdi
movq %rdi, -0x1ed0(%rbp)
callq 0x6830
movq -0x1ed0(%rbp), %rdx
leaq 0x46875(%rip), %rsi     # 0x607d2
leaq -0x18e8(%rbp), %rdi
callq 0xfb20
jmp 0x19f6b
leaq 0x9c31676(%rip), %rax   # 0x9c4b5e8
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, -0x1ed4(%rbp)
movl %eax, %esi
callq 0xfd10
movl -0x1ed4(%rbp), %r9d
movl (%rax), %r8d
movl %r8d, %eax
shrl $0x1f, %eax
addl %eax, %r8d
sarl %r8d
leaq -0x18a0(%rbp), %rdi
leaq -0x18c0(%rbp), %rsi
leaq -0x18e8(%rbp), %rdx
movl %r9d, %ecx
callq 0x22ac0
jmp 0x19fb9
movq -0x1ec8(%rbp), %rdi
leaq -0x18a0(%rbp), %rsi
callq 0x1b7d0
jmp 0x19fce
leaq -0x18a0(%rbp), %rdi
callq 0xfd80
leaq -0x18e8(%rbp), %rdi
callq 0x62d0
leaq -0x18e9(%rbp), %rdi
callq 0x64f0
leaq -0x18c0(%rbp), %rdi
callq 0x62d0
leaq -0x18c1(%rbp), %rdi
callq 0x64f0
movl -0x10(%rbp), %edx
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %r9
movzbl -0x15(%rbp), %r8d
andl $0x1, %r8d
xorl %edi, %edi
movl $0x1, %esi
callq 0x170a0
movb %al, -0x1ed5(%rbp)
jmp 0x1a031
movb -0x1ed5(%rbp), %al
testb $0x1, %al
jne 0x1a040
jmp 0x1a0e2
movb $0x1, -0x1(%rbp)
movl $0x1, -0xc64(%rbp)
jmp 0x1ab22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a0d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a0b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a0ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x18a0(%rbp), %rdi
callq 0xfd80
leaq -0x18e8(%rbp), %rdi
callq 0x62d0
leaq -0x18e9(%rbp), %rdi
callq 0x64f0
leaq -0x18c0(%rbp), %rdi
callq 0x62d0
leaq -0x18c1(%rbp), %rdi
callq 0x64f0
jmp 0x1ab3c
movq -0x20(%rbp), %rdi
callq 0x168f0
jmp 0x1aa9c
leaq -0x1941(%rbp), %rdi
movq %rdi, -0x1ee0(%rbp)
callq 0x6830
movq -0x1ee0(%rbp), %rdx
leaq 0x45ef3(%rip), %rsi     # 0x60004
leaq -0x1940(%rbp), %rdi
callq 0xfb20
jmp 0x1a11f
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x1920(%rbp), %rdi
leaq -0x1940(%rbp), %rsi
callq 0x1bbe0
jmp 0x1a13b
leaq -0x98(%rbp), %rdi
leaq -0x1920(%rbp), %rsi
callq 0x16860
jmp 0x1a150
leaq -0x1920(%rbp), %rdi
callq 0xfc90
leaq -0x1940(%rbp), %rdi
callq 0x62d0
leaq -0x1941(%rbp), %rdi
callq 0x64f0
leaq -0x1999(%rbp), %rdi
movq %rdi, -0x1ee8(%rbp)
callq 0x6830
movq -0x1ee8(%rbp), %rdx
leaq 0x45e72(%rip), %rsi     # 0x60007
leaq -0x1998(%rbp), %rdi
callq 0xfb20
jmp 0x1a1a3
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x1978(%rbp), %rdi
leaq -0x1998(%rbp), %rsi
callq 0x1bbe0
jmp 0x1a1bf
leaq -0x98(%rbp), %rdi
leaq -0x1978(%rbp), %rsi
callq 0x16860
jmp 0x1a1d4
leaq -0x1978(%rbp), %rdi
callq 0xfc90
leaq -0x1998(%rbp), %rdi
callq 0x62d0
leaq -0x1999(%rbp), %rdi
callq 0x64f0
leaq -0x19f1(%rbp), %rdi
movq %rdi, -0x1ef0(%rbp)
callq 0x6830
movq -0x1ef0(%rbp), %rdx
leaq 0x45df4(%rip), %rsi     # 0x6000d
leaq -0x19f0(%rbp), %rdi
callq 0xfb20
jmp 0x1a227
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x19d0(%rbp), %rdi
leaq -0x19f0(%rbp), %rsi
callq 0x1bbe0
jmp 0x1a243
leaq -0x98(%rbp), %rdi
leaq -0x19d0(%rbp), %rsi
callq 0x16860
jmp 0x1a258
leaq -0x19d0(%rbp), %rdi
callq 0xfc90
leaq -0x19f0(%rbp), %rdi
callq 0x62d0
leaq -0x19f1(%rbp), %rdi
callq 0x64f0
leaq -0x1a49(%rbp), %rdi
movq %rdi, -0x1ef8(%rbp)
callq 0x6830
movq -0x1ef8(%rbp), %rdx
leaq 0x45d73(%rip), %rsi     # 0x60010
leaq -0x1a48(%rbp), %rdi
callq 0xfb20
jmp 0x1a2ab
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x1a28(%rbp), %rdi
leaq -0x1a48(%rbp), %rsi
callq 0x1bbe0
jmp 0x1a2c7
leaq -0x98(%rbp), %rdi
leaq -0x1a28(%rbp), %rsi
callq 0x16860
jmp 0x1a2dc
leaq -0x1a28(%rbp), %rdi
callq 0xfc90
leaq -0x1a48(%rbp), %rdi
callq 0x62d0
leaq -0x1a49(%rbp), %rdi
callq 0x64f0
leaq -0x1aa1(%rbp), %rdi
movq %rdi, -0x1f00(%rbp)
callq 0x6830
movq -0x1f00(%rbp), %rdx
leaq 0x45d7e(%rip), %rsi     # 0x6009f
leaq -0x1aa0(%rbp), %rdi
callq 0xfb20
jmp 0x1a32f
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x1a80(%rbp), %rdi
leaq -0x1aa0(%rbp), %rsi
callq 0x1bbe0
jmp 0x1a34b
leaq -0x98(%rbp), %rdi
leaq -0x1a80(%rbp), %rsi
callq 0x16860
jmp 0x1a360
leaq -0x1a80(%rbp), %rdi
callq 0xfc90
leaq -0x1aa0(%rbp), %rdi
callq 0x62d0
leaq -0x1aa1(%rbp), %rdi
callq 0x64f0
leaq -0x1af9(%rbp), %rdi
movq %rdi, -0x1f08(%rbp)
callq 0x6830
movq -0x1f08(%rbp), %rdx
leaq 0x45cfd(%rip), %rsi     # 0x600a2
leaq -0x1af8(%rbp), %rdi
callq 0xfb20
jmp 0x1a3b3
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x1ad8(%rbp), %rdi
leaq -0x1af8(%rbp), %rsi
callq 0x1bbe0
jmp 0x1a3cf
leaq -0x98(%rbp), %rdi
leaq -0x1ad8(%rbp), %rsi
callq 0x16860
jmp 0x1a3e4
leaq -0x1ad8(%rbp), %rdi
callq 0xfc90
leaq -0x1af8(%rbp), %rdi
callq 0x62d0
leaq -0x1af9(%rbp), %rdi
callq 0x64f0
leaq -0x1b51(%rbp), %rdi
movq %rdi, -0x1f10(%rbp)
callq 0x6830
movq -0x1f10(%rbp), %rdx
leaq 0x45bf0(%rip), %rsi     # 0x60019
leaq -0x1b50(%rbp), %rdi
callq 0xfb20
jmp 0x1a437
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x1b30(%rbp), %rdi
leaq -0x1b50(%rbp), %rsi
callq 0x1bbe0
jmp 0x1a453
leaq -0x98(%rbp), %rdi
leaq -0x1b30(%rbp), %rsi
callq 0x16860
jmp 0x1a468
leaq -0x1b30(%rbp), %rdi
callq 0xfc90
leaq -0x1b50(%rbp), %rdi
callq 0x62d0
leaq -0x1b51(%rbp), %rdi
callq 0x64f0
leaq -0x1ba9(%rbp), %rdi
movq %rdi, -0x1f18(%rbp)
callq 0x6830
movq -0x1f18(%rbp), %rdx
leaq 0x45b70(%rip), %rsi     # 0x6001d
leaq -0x1ba8(%rbp), %rdi
callq 0xfb20
jmp 0x1a4bb
movzbl -0x15(%rbp), %edx
andl $0x1, %edx
leaq -0x1b88(%rbp), %rdi
leaq -0x1ba8(%rbp), %rsi
callq 0x1bbe0
jmp 0x1a4d7
leaq -0x98(%rbp), %rdi
leaq -0x1b88(%rbp), %rsi
callq 0x16860
jmp 0x1a4ec
leaq -0x1b88(%rbp), %rdi
callq 0xfc90
leaq -0x1ba8(%rbp), %rdi
callq 0x62d0
leaq -0x1ba9(%rbp), %rdi
callq 0x64f0
leaq -0x98(%rbp), %rdi
movq %rdi, -0x1f20(%rbp)
callq 0x12f70
movq -0x1f20(%rbp), %rdi
movq %rax, -0x1bb8(%rbp)
callq 0x12de0
movq %rax, -0x1bc0(%rbp)
movq -0x1bb8(%rbp), %rdi
movq -0x1bc0(%rbp), %rsi
callq 0x16750
jmp 0x1a552
leaq -0x98(%rbp), %rax
movq %rax, -0x1bc8(%rbp)
movq -0x1bc8(%rbp), %rdi
callq 0x12f70
movq %rax, -0x1bd0(%rbp)
movq -0x1bc8(%rbp), %rdi
callq 0x12de0
movq %rax, -0x1bd8(%rbp)
leaq -0x1bd0(%rbp), %rdi
leaq -0x1bd8(%rbp), %rsi
callq 0x16890
testb $0x1, %al
jne 0x1a5a2
jmp 0x1aa9a
leaq -0x1bd0(%rbp), %rdi
callq 0x168d0
movq %rax, %rsi
leaq -0x1c08(%rbp), %rdi
callq 0xfdb0
jmp 0x1a5bf
leaq -0x1cb8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x1a5d4
leaq -0x1ce8(%rbp), %rdi
leaq -0x1c08(%rbp), %rsi
callq 0xfdb0
jmp 0x1a5e9
leaq -0x1c60(%rbp), %rdi
leaq -0x1cb8(%rbp), %rsi
leaq -0x1ce8(%rbp), %rdx
callq 0x1c440
jmp 0x1a605
leaq -0x1ce8(%rbp), %rdi
callq 0xfc90
leaq -0x1cb8(%rbp), %rdi
callq 0xfd80
movl -0x1c60(%rbp), %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %ecx, %eax
sarl %eax
movl %eax, -0x1c60(%rbp)
movq -0x20(%rbp), %rdi
leaq -0x1c60(%rbp), %rsi
callq 0xff80
jmp 0x1a644
movl -0x8(%rbp), %edi
movl -0xc(%rbp), %esi
addl %esi, %edi
incl %esi
andl $0x1, %esi
movl -0x10(%rbp), %edx
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %r9
movzbl -0x15(%rbp), %r8d
andl $0x1, %r8d
callq 0x170a0
movb %al, -0x1f21(%rbp)
jmp 0x1a671
movb -0x1f21(%rbp), %al
testb $0x1, %al
jne 0x1a680
jmp 0x1aa25
movb $0x1, -0x1(%rbp)
movl $0x1, -0xc64(%rbp)
jmp 0x1aa38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a6e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a6d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1920(%rbp), %rdi
callq 0xfc90
leaq -0x1940(%rbp), %rdi
callq 0x62d0
leaq -0x1941(%rbp), %rdi
callq 0x64f0
jmp 0x1ab3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a748
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a73c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1978(%rbp), %rdi
callq 0xfc90
leaq -0x1998(%rbp), %rdi
callq 0x62d0
leaq -0x1999(%rbp), %rdi
callq 0x64f0
jmp 0x1ab3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a7ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a79f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x19d0(%rbp), %rdi
callq 0xfc90
leaq -0x19f0(%rbp), %rdi
callq 0x62d0
leaq -0x19f1(%rbp), %rdi
callq 0x64f0
jmp 0x1ab3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a80e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a802
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1a28(%rbp), %rdi
callq 0xfc90
leaq -0x1a48(%rbp), %rdi
callq 0x62d0
leaq -0x1a49(%rbp), %rdi
callq 0x64f0
jmp 0x1ab3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a871
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a865
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1a80(%rbp), %rdi
callq 0xfc90
leaq -0x1aa0(%rbp), %rdi
callq 0x62d0
leaq -0x1aa1(%rbp), %rdi
callq 0x64f0
jmp 0x1ab3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a8d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a8c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1ad8(%rbp), %rdi
callq 0xfc90
leaq -0x1af8(%rbp), %rdi
callq 0x62d0
leaq -0x1af9(%rbp), %rdi
callq 0x64f0
jmp 0x1ab3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a937
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a92b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1b30(%rbp), %rdi
callq 0xfc90
leaq -0x1b50(%rbp), %rdi
callq 0x62d0
leaq -0x1b51(%rbp), %rdi
callq 0x64f0
jmp 0x1ab3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a99a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a98e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1b88(%rbp), %rdi
callq 0xfc90
leaq -0x1ba8(%rbp), %rdi
callq 0x62d0
leaq -0x1ba9(%rbp), %rdi
callq 0x64f0
jmp 0x1ab3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1aa89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1a9f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1ce8(%rbp), %rdi
callq 0xfc90
leaq -0x1cb8(%rbp), %rdi
callq 0xfd80
jmp 0x1aa89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1c60(%rbp), %rdi
callq 0xfd80
jmp 0x1aa89
movq -0x20(%rbp), %rdi
callq 0x168f0
movl $0x0, -0xc64(%rbp)
leaq -0x1c60(%rbp), %rdi
callq 0xfd80
movl -0xc64(%rbp), %eax
testl %eax, %eax
jne 0x1aa5a
jmp 0x1aa50
movl $0x0, -0xc64(%rbp)
leaq -0x1c08(%rbp), %rdi
callq 0xfc90
movl -0xc64(%rbp), %eax
testl %eax, %eax
jne 0x1ab22
jmp 0x1aa76
jmp 0x1aa78
leaq -0x1bd0(%rbp), %rdi
callq 0x16920
jmp 0x1a586
leaq -0x1c08(%rbp), %rdi
callq 0xfc90
jmp 0x1ab3c
jmp 0x1aa9c
jmp 0x1aa9e
jmp 0x1aaa0
movl -0x8(%rbp), %eax
imulq $0x1081c8, %rax, %rcx   # imm = 0x1081C8
leaq 0x67e3f(%rip), %rax     # 0x828f0
addq %rcx, %rax
movl -0xc(%rbp), %ecx
imulq $0x42072, %rcx, %rcx    # imm = 0x42072
addq %rcx, %rax
movq %rax, -0x1f30(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x1d40(%rbp), %rdi
callq 0x2ddf0
jmp 0x1aada
movq -0x1f30(%rbp), %rax
movslq -0x1cf4(%rbp), %rcx
imulq $0xbbd, %rcx, %rcx      # imm = 0xBBD
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
imulq $0x259, %rcx, %rcx      # imm = 0x259
addq %rcx, %rax
movslq -0x14(%rbp), %rcx
movb $0x0, (%rax,%rcx)
leaq -0x1d40(%rbp), %rdi
callq 0xfd80
movb $0x0, -0x1(%rbp)
movl $0x1, -0xc64(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0xfd80
leaq -0x98(%rbp), %rdi
callq 0x10050
jmp 0x1ab56
leaq -0xf0(%rbp), %rdi
callq 0xfd80
leaq -0x98(%rbp), %rdi
callq 0x10050
jmp 0x1ab64
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x1f40, %rsp           # imm = 0x1F40
popq %rbp
retq
movq -0xf8(%rbp), %rdi
callq 0x6820