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

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

  // printf("size: %d\n", (int) counterpoint.size());
  // if(position) printf("[%d][%d][%d][%d][%d]\n", position, 0, counterpoint.back().midi_number, paralels, same_movements);
  if(position && !dp[position][0][counterpoint.back().midi_number][paralels][same_movements]) return false;

  vector<Interval> possible_intervals;

  Note note = song->notes[position];
  bool reverse_movement = true;

  if(position){
    auto previous_note = song->notes[position - 1];
    auto previous_counterpoint_note = counterpoint.back();
    auto melodic_cantus_interval = Interval(previous_note, note);
    bool melodic_ascendant = !melodic_cantus_interval.ascendant();
    auto previous_interval = Interval(previous_note, previous_counterpoint_note);
    string previous = previous_interval.description();

    if(not note.rest()){
      if(previous != "P8")
        analyse_and_add_interval(reverse_movement, melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("P8", ascendant), nullptr);

      if(previous != "P5" && ascendant)
        analyse_and_add_interval(reverse_movement, melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("P5", ascendant), nullptr);

      if(position == song->size() - 1){
        analyse_and_add_interval(reverse_movement, melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("P1", ascendant), nullptr);
      }else{
        analyse_and_add_interval(reverse_movement, melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("m3", ascendant), nullptr);
        analyse_and_add_interval(reverse_movement, melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("M3", ascendant), nullptr);
        analyse_and_add_interval(reverse_movement, melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("m6", ascendant), nullptr);
        analyse_and_add_interval(reverse_movement, melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("M6", ascendant), nullptr);
        analyse_and_add_interval(reverse_movement, melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("m10", ascendant), nullptr);
        analyse_and_add_interval(reverse_movement, melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("M10", ascendant), nullptr);
      }
      random_shuffle(possible_intervals.begin(), possible_intervals.end());
      int size = possible_intervals.size();

      //intervals with same movement
      if(previous != "P8")
        analyse_and_add_interval(!reverse_movement, !melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("P8", ascendant), nullptr);
      if(previous != "P5" && ascendant)
        analyse_and_add_interval(!reverse_movement, !melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("P5", ascendant), nullptr);

      if(position == song->size() - 1){
        analyse_and_add_interval(!reverse_movement, !melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("P1", ascendant), nullptr);
      }else{
        analyse_and_add_interval(!reverse_movement, !melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("m3", ascendant), nullptr);
        analyse_and_add_interval(!reverse_movement, !melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("M3", ascendant), nullptr);
        analyse_and_add_interval(!reverse_movement, !melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("m6", ascendant), nullptr);
        analyse_and_add_interval(!reverse_movement, !melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("M6", ascendant), nullptr);
        analyse_and_add_interval(!reverse_movement, !melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("m10", ascendant), nullptr);
        analyse_and_add_interval(!reverse_movement, !melodic_ascendant, possible_intervals, previous_counterpoint_note, note, Interval("M10", ascendant), nullptr);
      }
      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);

      // FIXME confirmar regra de sextas paralelas
      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;
      counterpoint.notes.push_back(c_note);
      if(solve(position + 1, par, sm, counterpoint, ascendant)) return true;
      counterpoint.notes.pop_back();
    }
  }else{
    possible_intervals.push_back(Interval("P1", ascendant));
    possible_intervals.push_back(Interval("P8", ascendant));
    if(ascendant) possible_intervals.push_back(Interval("P5", ascendant));
    random_shuffle(possible_intervals.begin(), possible_intervals.end());

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

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1d10, %rsp           # imm = 0x1D10
movb %r8b, %al
movl %edi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
cmpl $0x0, -0x8(%rbp)
jne 0x13478
leaq 0x6f493(%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, -0x1b64(%rbp)
leaq 0x9c38160(%rip), %rax   # 0x9c4b5e8
movq (%rax), %rdi
callq 0x2dd20
movl %eax, %ecx
movl -0x1b64(%rbp), %eax
cmpl %ecx, %eax
jb 0x134a5
movb $0x1, -0x1(%rbp)
jmp 0x1625e
movl -0x8(%rbp), %ecx
movb $0x0, -0x79(%rbp)
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x1b65(%rbp)
je 0x13519
movl -0x8(%rbp), %eax
movl %eax, %ecx
leaq 0x6f42b(%rip), %rax     # 0x828f0
imulq $0x1081c8, %rcx, %rcx   # imm = 0x1081C8
addq %rcx, %rax
movq %rax, -0x1b70(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x2ddf0
movq -0x1b70(%rbp), %rax
movb $0x1, -0x79(%rbp)
movslq -0x2c(%rbp), %rcx
imulq $0xbbd, %rcx, %rcx      # imm = 0xBBD
addq %rcx, %rax
movslq -0xc(%rbp), %rcx
imulq $0x259, %rcx, %rcx      # imm = 0x259
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movb (%rax,%rcx), %al
xorb $-0x1, %al
movb %al, -0x1b65(%rbp)
movb -0x1b65(%rbp), %al
movb %al, -0x1b71(%rbp)
testb $0x1, -0x79(%rbp)
jne 0x1352d
jmp 0x13536
leaq -0x78(%rbp), %rdi
callq 0xfd80
movb -0x1b71(%rbp), %al
testb $0x1, %al
jne 0x13542
jmp 0x1354b
movb $0x0, -0x1(%rbp)
jmp 0x1625e
leaq -0x98(%rbp), %rdi
callq 0xfcb0
leaq 0x9c3808a(%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 0x1357c
movb $0x1, -0xfd(%rbp)
cmpl $0x0, -0x8(%rbp)
je 0x15c9a
leaq 0x9c38054(%rip), %rax   # 0x9c4b5e8
movq (%rax), %rdi
movl -0x8(%rbp), %eax
decl %eax
movl %eax, %esi
callq 0xfd10
movq %rax, %rsi
leaq -0x158(%rbp), %rdi
callq 0x22ce0
jmp 0x135b4
movq -0x18(%rbp), %rsi
leaq -0x1b0(%rbp), %rdi
callq 0x2ddf0
jmp 0x135c6
leaq -0x238(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x22ce0
jmp 0x135db
leaq -0x290(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x135f0
leaq -0x1e0(%rbp), %rdi
leaq -0x238(%rbp), %rsi
leaq -0x290(%rbp), %rdx
callq 0x1bf30
jmp 0x1360c
leaq -0x290(%rbp), %rdi
callq 0xfd80
leaq -0x238(%rbp), %rdi
callq 0xfd80
leaq -0x1e0(%rbp), %rdi
callq 0x1c680
movb %al, -0x1b72(%rbp)
jmp 0x13638
movb -0x1b72(%rbp), %al
notb %al
andb $0x1, %al
movb %al, -0x291(%rbp)
leaq -0x320(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x22ce0
jmp 0x1365d
leaq -0x378(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x13672
leaq -0x2c8(%rbp), %rdi
leaq -0x320(%rbp), %rsi
leaq -0x378(%rbp), %rdx
callq 0x1bf30
jmp 0x1368e
leaq -0x378(%rbp), %rdi
callq 0xfd80
leaq -0x320(%rbp), %rdi
callq 0xfd80
leaq -0x398(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x1c100
jmp 0x136bb
leaq -0xf0(%rbp), %rdi
callq 0x23be0
movb %al, -0x1b73(%rbp)
jmp 0x136cf
movb -0x1b73(%rbp), %al
testb $0x1, %al
jne 0x1573b
jmp 0x136df
leaq 0x4c921(%rip), %rsi     # 0x60007
leaq -0x398(%rbp), %rdi
callq 0xfe70
movb %al, -0x1b74(%rbp)
jmp 0x136fa
movb -0x1b74(%rbp), %al
testb $0x1, %al
jne 0x13709
jmp 0x139d2
movb -0xfd(%rbp), %al
movb %al, -0x1b76(%rbp)
movb -0x291(%rbp), %al
movb %al, -0x1b75(%rbp)
leaq -0x3f0(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x13736
leaq -0x448(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x1374b
leaq -0x499(%rbp), %rdi
movq %rdi, -0x1b80(%rbp)
callq 0x6830
movq -0x1b80(%rbp), %rdx
leaq 0x4c89b(%rip), %rsi     # 0x60007
leaq -0x498(%rbp), %rdi
callq 0xfb20
jmp 0x1377a
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x478(%rbp), %rdi
leaq -0x498(%rbp), %rsi
callq 0x1bbe0
jmp 0x13796
movb -0x1b75(%rbp), %al
movb -0x1b76(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x3f0(%rbp), %rcx
leaq -0x448(%rbp), %r8
leaq -0x478(%rbp), %r9
callq 0x16280
jmp 0x137db
leaq -0x478(%rbp), %rdi
callq 0xfc90
leaq -0x498(%rbp), %rdi
callq 0x62d0
leaq -0x499(%rbp), %rdi
callq 0x64f0
leaq -0x448(%rbp), %rdi
callq 0xfd80
leaq -0x3f0(%rbp), %rdi
callq 0xfd80
jmp 0x139d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x16250
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x16244
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15c89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15c7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x138aa
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 0x15c7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15c71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x13904
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 0x15c71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15c65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15c59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x139c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x139a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1399d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x478(%rbp), %rdi
callq 0xfc90
leaq -0x498(%rbp), %rdi
callq 0x62d0
leaq -0x499(%rbp), %rdi
callq 0x64f0
leaq -0x448(%rbp), %rdi
callq 0xfd80
leaq -0x3f0(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
leaq 0x4c631(%rip), %rsi     # 0x6000a
leaq -0x398(%rbp), %rdi
callq 0xfe70
movb %al, -0x1b81(%rbp)
jmp 0x139ed
movb -0x1b81(%rbp), %al
testb $0x1, %al
jne 0x139fc
jmp 0x13ba8
testb $0x1, -0x19(%rbp)
je 0x13ba8
movb -0xfd(%rbp), %al
movb %al, -0x1b83(%rbp)
movb -0x291(%rbp), %al
movb %al, -0x1b82(%rbp)
leaq -0x4f8(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x13a33
leaq -0x550(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x13a48
leaq -0x5a1(%rbp), %rdi
movq %rdi, -0x1b90(%rbp)
callq 0x6830
movq -0x1b90(%rbp), %rdx
leaq 0x4c5a1(%rip), %rsi     # 0x6000a
leaq -0x5a0(%rbp), %rdi
callq 0xfb20
jmp 0x13a77
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x580(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
callq 0x1bbe0
jmp 0x13a93
movb -0x1b82(%rbp), %al
movb -0x1b83(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x4f8(%rbp), %rcx
leaq -0x550(%rbp), %r8
leaq -0x580(%rbp), %r9
callq 0x16280
jmp 0x13ad8
leaq -0x580(%rbp), %rdi
callq 0xfc90
leaq -0x5a0(%rbp), %rdi
callq 0x62d0
leaq -0x5a1(%rbp), %rdi
callq 0x64f0
leaq -0x550(%rbp), %rdi
callq 0xfd80
leaq -0x4f8(%rbp), %rdi
callq 0xfd80
jmp 0x13ba8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x13b97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x13b7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x13b73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x580(%rbp), %rdi
callq 0xfc90
leaq -0x5a0(%rbp), %rdi
callq 0x62d0
leaq -0x5a1(%rbp), %rdi
callq 0x64f0
leaq -0x550(%rbp), %rdi
callq 0xfd80
leaq -0x4f8(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movl -0x8(%rbp), %eax
movl %eax, -0x1b98(%rbp)
leaq 0x9c37a30(%rip), %rax   # 0x9c4b5e8
movq (%rax), %rdi
callq 0x2dd20
movl %eax, -0x1b94(%rbp)
jmp 0x13bc8
movl -0x1b98(%rbp), %eax
movl -0x1b94(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x13d81
movb -0xfd(%rbp), %al
movb %al, -0x1b9a(%rbp)
movb -0x291(%rbp), %al
movb %al, -0x1b99(%rbp)
leaq -0x600(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x13c0c
leaq -0x658(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x13c21
leaq -0x6a9(%rbp), %rdi
movq %rdi, -0x1ba8(%rbp)
callq 0x6830
movq -0x1ba8(%rbp), %rdx
leaq 0x4c3c2(%rip), %rsi     # 0x60004
leaq -0x6a8(%rbp), %rdi
callq 0xfb20
jmp 0x13c50
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x688(%rbp), %rdi
leaq -0x6a8(%rbp), %rsi
callq 0x1bbe0
jmp 0x13c6c
movb -0x1b99(%rbp), %al
movb -0x1b9a(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x600(%rbp), %rcx
leaq -0x658(%rbp), %r8
leaq -0x688(%rbp), %r9
callq 0x16280
jmp 0x13cb1
leaq -0x688(%rbp), %rdi
callq 0xfc90
leaq -0x6a8(%rbp), %rdi
callq 0x62d0
leaq -0x6a9(%rbp), %rdi
callq 0x64f0
leaq -0x658(%rbp), %rdi
callq 0xfd80
leaq -0x600(%rbp), %rdi
callq 0xfd80
jmp 0x14734
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x13d70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x13d58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x13d4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x688(%rbp), %rdi
callq 0xfc90
leaq -0x6a8(%rbp), %rdi
callq 0x62d0
leaq -0x6a9(%rbp), %rdi
callq 0x64f0
leaq -0x658(%rbp), %rdi
callq 0xfd80
leaq -0x600(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movb -0xfd(%rbp), %al
movb %al, -0x1baa(%rbp)
movb -0x291(%rbp), %al
movb %al, -0x1ba9(%rbp)
leaq -0x708(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x13dae
leaq -0x760(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x13dc3
leaq -0x7b1(%rbp), %rdi
movq %rdi, -0x1bb8(%rbp)
callq 0x6830
movq -0x1bb8(%rbp), %rdx
leaq 0x4c229(%rip), %rsi     # 0x6000d
leaq -0x7b0(%rbp), %rdi
callq 0xfb20
jmp 0x13df2
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x790(%rbp), %rdi
leaq -0x7b0(%rbp), %rsi
callq 0x1bbe0
jmp 0x13e0e
movb -0x1ba9(%rbp), %al
movb -0x1baa(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x708(%rbp), %rcx
leaq -0x760(%rbp), %r8
leaq -0x790(%rbp), %r9
callq 0x16280
jmp 0x13e53
leaq -0x790(%rbp), %rdi
callq 0xfc90
leaq -0x7b0(%rbp), %rdi
callq 0x62d0
leaq -0x7b1(%rbp), %rdi
callq 0x64f0
leaq -0x760(%rbp), %rdi
callq 0xfd80
leaq -0x708(%rbp), %rdi
callq 0xfd80
movb -0xfd(%rbp), %al
movb %al, -0x1bba(%rbp)
movb -0x291(%rbp), %al
movb %al, -0x1bb9(%rbp)
leaq -0x810(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x13ebc
leaq -0x868(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x13ed1
leaq -0x8b9(%rbp), %rdi
movq %rdi, -0x1bc8(%rbp)
callq 0x6830
movq -0x1bc8(%rbp), %rdx
leaq 0x4c11e(%rip), %rsi     # 0x60010
leaq -0x8b8(%rbp), %rdi
callq 0xfb20
jmp 0x13f00
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x898(%rbp), %rdi
leaq -0x8b8(%rbp), %rsi
callq 0x1bbe0
jmp 0x13f1c
movb -0x1bb9(%rbp), %al
movb -0x1bba(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x810(%rbp), %rcx
leaq -0x868(%rbp), %r8
leaq -0x898(%rbp), %r9
callq 0x16280
jmp 0x13f61
leaq -0x898(%rbp), %rdi
callq 0xfc90
leaq -0x8b8(%rbp), %rdi
callq 0x62d0
leaq -0x8b9(%rbp), %rdi
callq 0x64f0
leaq -0x868(%rbp), %rdi
callq 0xfd80
leaq -0x810(%rbp), %rdi
callq 0xfd80
movb -0xfd(%rbp), %al
movb %al, -0x1bca(%rbp)
movb -0x291(%rbp), %al
movb %al, -0x1bc9(%rbp)
leaq -0x918(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x13fca
leaq -0x970(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x13fdf
leaq -0x9c1(%rbp), %rdi
movq %rdi, -0x1bd8(%rbp)
callq 0x6830
movq -0x1bd8(%rbp), %rdx
leaq 0x4c013(%rip), %rsi     # 0x60013
leaq -0x9c0(%rbp), %rdi
callq 0xfb20
jmp 0x1400e
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x9a0(%rbp), %rdi
leaq -0x9c0(%rbp), %rsi
callq 0x1bbe0
jmp 0x1402a
movb -0x1bc9(%rbp), %al
movb -0x1bca(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x918(%rbp), %rcx
leaq -0x970(%rbp), %r8
leaq -0x9a0(%rbp), %r9
callq 0x16280
jmp 0x1406f
leaq -0x9a0(%rbp), %rdi
callq 0xfc90
leaq -0x9c0(%rbp), %rdi
callq 0x62d0
leaq -0x9c1(%rbp), %rdi
callq 0x64f0
leaq -0x970(%rbp), %rdi
callq 0xfd80
leaq -0x918(%rbp), %rdi
callq 0xfd80
movb -0xfd(%rbp), %al
movb %al, -0x1bda(%rbp)
movb -0x291(%rbp), %al
movb %al, -0x1bd9(%rbp)
leaq -0xa20(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x140d8
leaq -0xa78(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x140ed
leaq -0xac9(%rbp), %rdi
movq %rdi, -0x1be8(%rbp)
callq 0x6830
movq -0x1be8(%rbp), %rdx
leaq 0x4bf08(%rip), %rsi     # 0x60016
leaq -0xac8(%rbp), %rdi
callq 0xfb20
jmp 0x1411c
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0xaa8(%rbp), %rdi
leaq -0xac8(%rbp), %rsi
callq 0x1bbe0
jmp 0x14138
movb -0x1bd9(%rbp), %al
movb -0x1bda(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0xa20(%rbp), %rcx
leaq -0xa78(%rbp), %r8
leaq -0xaa8(%rbp), %r9
callq 0x16280
jmp 0x1417d
leaq -0xaa8(%rbp), %rdi
callq 0xfc90
leaq -0xac8(%rbp), %rdi
callq 0x62d0
leaq -0xac9(%rbp), %rdi
callq 0x64f0
leaq -0xa78(%rbp), %rdi
callq 0xfd80
leaq -0xa20(%rbp), %rdi
callq 0xfd80
movb -0xfd(%rbp), %al
movb %al, -0x1bea(%rbp)
movb -0x291(%rbp), %al
movb %al, -0x1be9(%rbp)
leaq -0xb28(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x141e6
leaq -0xb80(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x141fb
leaq -0xbd1(%rbp), %rdi
movq %rdi, -0x1bf8(%rbp)
callq 0x6830
movq -0x1bf8(%rbp), %rdx
leaq 0x4bdfd(%rip), %rsi     # 0x60019
leaq -0xbd0(%rbp), %rdi
callq 0xfb20
jmp 0x1422a
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0xbb0(%rbp), %rdi
leaq -0xbd0(%rbp), %rsi
callq 0x1bbe0
jmp 0x14246
movb -0x1be9(%rbp), %al
movb -0x1bea(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0xb28(%rbp), %rcx
leaq -0xb80(%rbp), %r8
leaq -0xbb0(%rbp), %r9
callq 0x16280
jmp 0x1428b
leaq -0xbb0(%rbp), %rdi
callq 0xfc90
leaq -0xbd0(%rbp), %rdi
callq 0x62d0
leaq -0xbd1(%rbp), %rdi
callq 0x64f0
leaq -0xb80(%rbp), %rdi
callq 0xfd80
leaq -0xb28(%rbp), %rdi
callq 0xfd80
movb -0xfd(%rbp), %al
movb %al, -0x1bfa(%rbp)
movb -0x291(%rbp), %al
movb %al, -0x1bf9(%rbp)
leaq -0xc30(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x142f4
leaq -0xc88(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x14309
leaq -0xcd9(%rbp), %rdi
movq %rdi, -0x1c08(%rbp)
callq 0x6830
movq -0x1c08(%rbp), %rdx
leaq 0x4bcf3(%rip), %rsi     # 0x6001d
leaq -0xcd8(%rbp), %rdi
callq 0xfb20
jmp 0x14338
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0xcb8(%rbp), %rdi
leaq -0xcd8(%rbp), %rsi
callq 0x1bbe0
jmp 0x14354
movb -0x1bf9(%rbp), %al
movb -0x1bfa(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0xc30(%rbp), %rcx
leaq -0xc88(%rbp), %r8
leaq -0xcb8(%rbp), %r9
callq 0x16280
jmp 0x14399
leaq -0xcb8(%rbp), %rdi
callq 0xfc90
leaq -0xcd8(%rbp), %rdi
callq 0x62d0
leaq -0xcd9(%rbp), %rdi
callq 0x64f0
leaq -0xc88(%rbp), %rdi
callq 0xfd80
leaq -0xc30(%rbp), %rdi
callq 0xfd80
jmp 0x14734
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14458
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14440
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14434
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x790(%rbp), %rdi
callq 0xfc90
leaq -0x7b0(%rbp), %rdi
callq 0x62d0
leaq -0x7b1(%rbp), %rdi
callq 0x64f0
leaq -0x760(%rbp), %rdi
callq 0xfd80
leaq -0x708(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x144e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x144cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x144c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x898(%rbp), %rdi
callq 0xfc90
leaq -0x8b8(%rbp), %rdi
callq 0x62d0
leaq -0x8b9(%rbp), %rdi
callq 0x64f0
leaq -0x868(%rbp), %rdi
callq 0xfd80
leaq -0x810(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14576
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1455e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14552
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x9a0(%rbp), %rdi
callq 0xfc90
leaq -0x9c0(%rbp), %rdi
callq 0x62d0
leaq -0x9c1(%rbp), %rdi
callq 0x64f0
leaq -0x970(%rbp), %rdi
callq 0xfd80
leaq -0x918(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14605
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x145ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x145e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xaa8(%rbp), %rdi
callq 0xfc90
leaq -0xac8(%rbp), %rdi
callq 0x62d0
leaq -0xac9(%rbp), %rdi
callq 0x64f0
leaq -0xa78(%rbp), %rdi
callq 0xfd80
leaq -0xa20(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14694
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1467c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14670
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xbb0(%rbp), %rdi
callq 0xfc90
leaq -0xbd0(%rbp), %rdi
callq 0x62d0
leaq -0xbd1(%rbp), %rdi
callq 0x64f0
leaq -0xb80(%rbp), %rdi
callq 0xfd80
leaq -0xb28(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14723
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1470b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x146ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xcb8(%rbp), %rdi
callq 0xfc90
leaq -0xcd8(%rbp), %rdi
callq 0x62d0
leaq -0xcd9(%rbp), %rdi
callq 0x64f0
leaq -0xc88(%rbp), %rdi
callq 0xfd80
leaq -0xc30(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
leaq -0x98(%rbp), %rdi
movq %rdi, -0x1c10(%rbp)
callq 0x12f70
movq -0x1c10(%rbp), %rdi
movq %rax, -0xce8(%rbp)
callq 0x12de0
movq %rax, -0xcf0(%rbp)
movq -0xce8(%rbp), %rdi
movq -0xcf0(%rbp), %rsi
callq 0x16750
jmp 0x14776
leaq -0x98(%rbp), %rdi
callq 0xfee0
movl %eax, -0xcf4(%rbp)
leaq 0x4b878(%rip), %rsi     # 0x60007
leaq -0x398(%rbp), %rdi
callq 0xfe70
movb %al, -0x1c11(%rbp)
jmp 0x147a3
movb -0x1c11(%rbp), %al
testb $0x1, %al
jne 0x147b2
jmp 0x14958
movb -0xfd(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c13(%rbp)
movb -0x291(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c12(%rbp)
leaq -0xd50(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x147e3
leaq -0xda8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x147f8
leaq -0xdf9(%rbp), %rdi
movq %rdi, -0x1c20(%rbp)
callq 0x6830
movq -0x1c20(%rbp), %rdx
leaq 0x4b7ee(%rip), %rsi     # 0x60007
leaq -0xdf8(%rbp), %rdi
callq 0xfb20
jmp 0x14827
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0xdd8(%rbp), %rdi
leaq -0xdf8(%rbp), %rsi
callq 0x1bbe0
jmp 0x14843
movb -0x1c12(%rbp), %al
movb -0x1c13(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0xd50(%rbp), %rcx
leaq -0xda8(%rbp), %r8
leaq -0xdd8(%rbp), %r9
callq 0x16280
jmp 0x14888
leaq -0xdd8(%rbp), %rdi
callq 0xfc90
leaq -0xdf8(%rbp), %rdi
callq 0x62d0
leaq -0xdf9(%rbp), %rdi
callq 0x64f0
leaq -0xda8(%rbp), %rdi
callq 0xfd80
leaq -0xd50(%rbp), %rdi
callq 0xfd80
jmp 0x14958
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14947
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1492f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14923
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xdd8(%rbp), %rdi
callq 0xfc90
leaq -0xdf8(%rbp), %rdi
callq 0x62d0
leaq -0xdf9(%rbp), %rdi
callq 0x64f0
leaq -0xda8(%rbp), %rdi
callq 0xfd80
leaq -0xd50(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
leaq 0x4b6ab(%rip), %rsi     # 0x6000a
leaq -0x398(%rbp), %rdi
callq 0xfe70
movb %al, -0x1c21(%rbp)
jmp 0x14973
movb -0x1c21(%rbp), %al
testb $0x1, %al
jne 0x14982
jmp 0x14b32
testb $0x1, -0x19(%rbp)
je 0x14b32
movb -0xfd(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c23(%rbp)
movb -0x291(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c22(%rbp)
leaq -0xe58(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x149bd
leaq -0xeb0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x149d2
leaq -0xf01(%rbp), %rdi
movq %rdi, -0x1c30(%rbp)
callq 0x6830
movq -0x1c30(%rbp), %rdx
leaq 0x4b617(%rip), %rsi     # 0x6000a
leaq -0xf00(%rbp), %rdi
callq 0xfb20
jmp 0x14a01
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0xee0(%rbp), %rdi
leaq -0xf00(%rbp), %rsi
callq 0x1bbe0
jmp 0x14a1d
movb -0x1c22(%rbp), %al
movb -0x1c23(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0xe58(%rbp), %rcx
leaq -0xeb0(%rbp), %r8
leaq -0xee0(%rbp), %r9
callq 0x16280
jmp 0x14a62
leaq -0xee0(%rbp), %rdi
callq 0xfc90
leaq -0xf00(%rbp), %rdi
callq 0x62d0
leaq -0xf01(%rbp), %rdi
callq 0x64f0
leaq -0xeb0(%rbp), %rdi
callq 0xfd80
leaq -0xe58(%rbp), %rdi
callq 0xfd80
jmp 0x14b32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14b21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14b09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14afd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xee0(%rbp), %rdi
callq 0xfc90
leaq -0xf00(%rbp), %rdi
callq 0x62d0
leaq -0xf01(%rbp), %rdi
callq 0x64f0
leaq -0xeb0(%rbp), %rdi
callq 0xfd80
leaq -0xe58(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movl -0x8(%rbp), %eax
movl %eax, -0x1c38(%rbp)
leaq 0x9c36aa6(%rip), %rax   # 0x9c4b5e8
movq (%rax), %rdi
callq 0x2dd20
movl %eax, -0x1c34(%rbp)
jmp 0x14b52
movl -0x1c38(%rbp), %eax
movl -0x1c34(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jne 0x14d0f
movb -0xfd(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c3a(%rbp)
movb -0x291(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c39(%rbp)
leaq -0xf60(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x14b9a
leaq -0xfb8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x14baf
leaq -0x1009(%rbp), %rdi
movq %rdi, -0x1c48(%rbp)
callq 0x6830
movq -0x1c48(%rbp), %rdx
leaq 0x4b434(%rip), %rsi     # 0x60004
leaq -0x1008(%rbp), %rdi
callq 0xfb20
jmp 0x14bde
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0xfe8(%rbp), %rdi
leaq -0x1008(%rbp), %rsi
callq 0x1bbe0
jmp 0x14bfa
movb -0x1c39(%rbp), %al
movb -0x1c3a(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0xf60(%rbp), %rcx
leaq -0xfb8(%rbp), %r8
leaq -0xfe8(%rbp), %r9
callq 0x16280
jmp 0x14c3f
leaq -0xfe8(%rbp), %rdi
callq 0xfc90
leaq -0x1008(%rbp), %rdi
callq 0x62d0
leaq -0x1009(%rbp), %rdi
callq 0x64f0
leaq -0xfb8(%rbp), %rdi
callq 0xfd80
leaq -0xf60(%rbp), %rdi
callq 0xfd80
jmp 0x156da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14cfe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14ce6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x14cda
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xfe8(%rbp), %rdi
callq 0xfc90
leaq -0x1008(%rbp), %rdi
callq 0x62d0
leaq -0x1009(%rbp), %rdi
callq 0x64f0
leaq -0xfb8(%rbp), %rdi
callq 0xfd80
leaq -0xf60(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movb -0xfd(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c4a(%rbp)
movb -0x291(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c49(%rbp)
leaq -0x1068(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x14d40
leaq -0x10c0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x14d55
leaq -0x1111(%rbp), %rdi
movq %rdi, -0x1c58(%rbp)
callq 0x6830
movq -0x1c58(%rbp), %rdx
leaq 0x4b297(%rip), %rsi     # 0x6000d
leaq -0x1110(%rbp), %rdi
callq 0xfb20
jmp 0x14d84
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x10f0(%rbp), %rdi
leaq -0x1110(%rbp), %rsi
callq 0x1bbe0
jmp 0x14da0
movb -0x1c49(%rbp), %al
movb -0x1c4a(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x1068(%rbp), %rcx
leaq -0x10c0(%rbp), %r8
leaq -0x10f0(%rbp), %r9
callq 0x16280
jmp 0x14de5
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
movb -0xfd(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c5a(%rbp)
movb -0x291(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c59(%rbp)
leaq -0x1170(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x14e52
leaq -0x11c8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x14e67
leaq -0x1219(%rbp), %rdi
movq %rdi, -0x1c68(%rbp)
callq 0x6830
movq -0x1c68(%rbp), %rdx
leaq 0x4b188(%rip), %rsi     # 0x60010
leaq -0x1218(%rbp), %rdi
callq 0xfb20
jmp 0x14e96
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x11f8(%rbp), %rdi
leaq -0x1218(%rbp), %rsi
callq 0x1bbe0
jmp 0x14eb2
movb -0x1c59(%rbp), %al
movb -0x1c5a(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x1170(%rbp), %rcx
leaq -0x11c8(%rbp), %r8
leaq -0x11f8(%rbp), %r9
callq 0x16280
jmp 0x14ef7
leaq -0x11f8(%rbp), %rdi
callq 0xfc90
leaq -0x1218(%rbp), %rdi
callq 0x62d0
leaq -0x1219(%rbp), %rdi
callq 0x64f0
leaq -0x11c8(%rbp), %rdi
callq 0xfd80
leaq -0x1170(%rbp), %rdi
callq 0xfd80
movb -0xfd(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c6a(%rbp)
movb -0x291(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c69(%rbp)
leaq -0x1278(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x14f64
leaq -0x12d0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x14f79
leaq -0x1321(%rbp), %rdi
movq %rdi, -0x1c78(%rbp)
callq 0x6830
movq -0x1c78(%rbp), %rdx
leaq 0x4b079(%rip), %rsi     # 0x60013
leaq -0x1320(%rbp), %rdi
callq 0xfb20
jmp 0x14fa8
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x1300(%rbp), %rdi
leaq -0x1320(%rbp), %rsi
callq 0x1bbe0
jmp 0x14fc4
movb -0x1c69(%rbp), %al
movb -0x1c6a(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x1278(%rbp), %rcx
leaq -0x12d0(%rbp), %r8
leaq -0x1300(%rbp), %r9
callq 0x16280
jmp 0x15009
leaq -0x1300(%rbp), %rdi
callq 0xfc90
leaq -0x1320(%rbp), %rdi
callq 0x62d0
leaq -0x1321(%rbp), %rdi
callq 0x64f0
leaq -0x12d0(%rbp), %rdi
callq 0xfd80
leaq -0x1278(%rbp), %rdi
callq 0xfd80
movb -0xfd(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c7a(%rbp)
movb -0x291(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c79(%rbp)
leaq -0x1380(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x15076
leaq -0x13d8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x1508b
leaq -0x1429(%rbp), %rdi
movq %rdi, -0x1c88(%rbp)
callq 0x6830
movq -0x1c88(%rbp), %rdx
leaq 0x4af6a(%rip), %rsi     # 0x60016
leaq -0x1428(%rbp), %rdi
callq 0xfb20
jmp 0x150ba
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x1408(%rbp), %rdi
leaq -0x1428(%rbp), %rsi
callq 0x1bbe0
jmp 0x150d6
movb -0x1c79(%rbp), %al
movb -0x1c7a(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x1380(%rbp), %rcx
leaq -0x13d8(%rbp), %r8
leaq -0x1408(%rbp), %r9
callq 0x16280
jmp 0x1511b
leaq -0x1408(%rbp), %rdi
callq 0xfc90
leaq -0x1428(%rbp), %rdi
callq 0x62d0
leaq -0x1429(%rbp), %rdi
callq 0x64f0
leaq -0x13d8(%rbp), %rdi
callq 0xfd80
leaq -0x1380(%rbp), %rdi
callq 0xfd80
movb -0xfd(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c8a(%rbp)
movb -0x291(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c89(%rbp)
leaq -0x1488(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x15188
leaq -0x14e0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x1519d
leaq -0x1531(%rbp), %rdi
movq %rdi, -0x1c98(%rbp)
callq 0x6830
movq -0x1c98(%rbp), %rdx
leaq 0x4ae5b(%rip), %rsi     # 0x60019
leaq -0x1530(%rbp), %rdi
callq 0xfb20
jmp 0x151cc
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x1510(%rbp), %rdi
leaq -0x1530(%rbp), %rsi
callq 0x1bbe0
jmp 0x151e8
movb -0x1c89(%rbp), %al
movb -0x1c8a(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x1488(%rbp), %rcx
leaq -0x14e0(%rbp), %r8
leaq -0x1510(%rbp), %r9
callq 0x16280
jmp 0x1522d
leaq -0x1510(%rbp), %rdi
callq 0xfc90
leaq -0x1530(%rbp), %rdi
callq 0x62d0
leaq -0x1531(%rbp), %rdi
callq 0x64f0
leaq -0x14e0(%rbp), %rdi
callq 0xfd80
leaq -0x1488(%rbp), %rdi
callq 0xfd80
movb -0xfd(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c9a(%rbp)
movb -0x291(%rbp), %al
xorb $0x1, %al
movb %al, -0x1c99(%rbp)
leaq -0x1590(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x1529a
leaq -0x15e8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x152af
leaq -0x1639(%rbp), %rdi
movq %rdi, -0x1ca8(%rbp)
callq 0x6830
movq -0x1ca8(%rbp), %rdx
leaq 0x4ad4d(%rip), %rsi     # 0x6001d
leaq -0x1638(%rbp), %rdi
callq 0xfb20
jmp 0x152de
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x1618(%rbp), %rdi
leaq -0x1638(%rbp), %rsi
callq 0x1bbe0
jmp 0x152fa
movb -0x1c99(%rbp), %al
movb -0x1c9a(%rbp), %cl
movq %rsp, %rdx
movq $0x0, (%rdx)
movzbl %cl, %edi
andl $0x1, %edi
movzbl %al, %esi
andl $0x1, %esi
leaq -0x98(%rbp), %rdx
leaq -0x1590(%rbp), %rcx
leaq -0x15e8(%rbp), %r8
leaq -0x1618(%rbp), %r9
callq 0x16280
jmp 0x1533f
leaq -0x1618(%rbp), %rdi
callq 0xfc90
leaq -0x1638(%rbp), %rdi
callq 0x62d0
leaq -0x1639(%rbp), %rdi
callq 0x64f0
leaq -0x15e8(%rbp), %rdi
callq 0xfd80
leaq -0x1590(%rbp), %rdi
callq 0xfd80
jmp 0x156da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x153fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x153e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x153da
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 0x15c59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1548d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15475
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15469
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x11f8(%rbp), %rdi
callq 0xfc90
leaq -0x1218(%rbp), %rdi
callq 0x62d0
leaq -0x1219(%rbp), %rdi
callq 0x64f0
leaq -0x11c8(%rbp), %rdi
callq 0xfd80
leaq -0x1170(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1551c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15504
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x154f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1300(%rbp), %rdi
callq 0xfc90
leaq -0x1320(%rbp), %rdi
callq 0x62d0
leaq -0x1321(%rbp), %rdi
callq 0x64f0
leaq -0x12d0(%rbp), %rdi
callq 0xfd80
leaq -0x1278(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x155ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15593
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15587
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1408(%rbp), %rdi
callq 0xfc90
leaq -0x1428(%rbp), %rdi
callq 0x62d0
leaq -0x1429(%rbp), %rdi
callq 0x64f0
leaq -0x13d8(%rbp), %rdi
callq 0xfd80
leaq -0x1380(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1563a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15622
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15616
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1510(%rbp), %rdi
callq 0xfc90
leaq -0x1530(%rbp), %rdi
callq 0x62d0
leaq -0x1531(%rbp), %rdi
callq 0x64f0
leaq -0x14e0(%rbp), %rdi
callq 0xfd80
leaq -0x1488(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x156c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x156b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x156a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1618(%rbp), %rdi
callq 0xfc90
leaq -0x1638(%rbp), %rdi
callq 0x62d0
leaq -0x1639(%rbp), %rdi
callq 0x64f0
leaq -0x15e8(%rbp), %rdi
callq 0xfd80
leaq -0x1590(%rbp), %rdi
callq 0xfd80
jmp 0x15c59
leaq -0x98(%rbp), %rdi
movq %rdi, -0x1cb0(%rbp)
callq 0x12f70
movq %rax, -0x1650(%rbp)
movslq -0xcf4(%rbp), %rsi
leaq -0x1650(%rbp), %rdi
callq 0x16820
movq -0x1cb0(%rbp), %rdi
movq %rax, -0x1648(%rbp)
callq 0x12de0
movq %rax, -0x1658(%rbp)
movq -0x1648(%rbp), %rdi
movq -0x1658(%rbp), %rsi
callq 0x16750
jmp 0x15736
jmp 0x15822
leaq -0x16a9(%rbp), %rdi
movq %rdi, -0x1cb8(%rbp)
callq 0x6830
movq -0x1cb8(%rbp), %rdx
leaq 0x4a8a8(%rip), %rsi     # 0x60004
leaq -0x16a8(%rbp), %rdi
callq 0xfb20
jmp 0x1576a
leaq -0x1688(%rbp), %rdi
leaq -0x16a8(%rbp), %rsi
movl $0x1, %edx
callq 0x1bbe0
jmp 0x15784
leaq -0x98(%rbp), %rdi
leaq -0x1688(%rbp), %rsi
callq 0x16860
jmp 0x15799
leaq -0x1688(%rbp), %rdi
callq 0xfc90
leaq -0x16a8(%rbp), %rdi
callq 0x62d0
leaq -0x16a9(%rbp), %rdi
callq 0x64f0
jmp 0x15822
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15811
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15805
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1688(%rbp), %rdi
callq 0xfc90
leaq -0x16a8(%rbp), %rdi
callq 0x62d0
leaq -0x16a9(%rbp), %rdi
callq 0x64f0
jmp 0x15c59
leaq -0x98(%rbp), %rax
movq %rax, -0x16c0(%rbp)
movq -0x16c0(%rbp), %rdi
callq 0x12f70
movq %rax, -0x16c8(%rbp)
movq -0x16c0(%rbp), %rdi
callq 0x12de0
movq %rax, -0x16d0(%rbp)
leaq -0x16c8(%rbp), %rdi
leaq -0x16d0(%rbp), %rsi
callq 0x16890
testb $0x1, %al
jne 0x15872
jmp 0x15bfe
leaq -0x16c8(%rbp), %rdi
callq 0x168d0
movq %rax, %rsi
leaq -0x1700(%rbp), %rdi
callq 0xfdb0
jmp 0x1588f
leaq -0x17b0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x158a4
leaq -0x17e0(%rbp), %rdi
leaq -0x1700(%rbp), %rsi
callq 0xfdb0
jmp 0x158b9
leaq -0x1758(%rbp), %rdi
leaq -0x17b0(%rbp), %rsi
leaq -0x17e0(%rbp), %rdx
callq 0x1c440
jmp 0x158d5
leaq -0x17e0(%rbp), %rdi
callq 0xfc90
leaq -0x17b0(%rbp), %rdi
callq 0xfd80
leaq -0x1868(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x22ce0
jmp 0x15902
leaq -0x18c0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x15917
leaq -0x1810(%rbp), %rdi
leaq -0x1868(%rbp), %rsi
leaq -0x18c0(%rbp), %rdx
callq 0x1bf30
jmp 0x15933
leaq -0x18c0(%rbp), %rdi
callq 0xfd80
leaq -0x1868(%rbp), %rdi
callq 0xfd80
movl -0xc(%rbp), %eax
movl %eax, -0x1cc0(%rbp)
movl -0x1700(%rbp), %ecx
xorl %eax, %eax
cmpl -0x2c8(%rbp), %ecx
movb %al, -0x1cb9(%rbp)
jne 0x159a8
movb $0x1, %al
cmpl $0x3, -0x1700(%rbp)
movb %al, -0x1cc1(%rbp)
je 0x1599c
movb $0x1, %al
cmpl $0x6, -0x1700(%rbp)
movb %al, -0x1cc1(%rbp)
je 0x1599c
cmpl $0xa, -0x1700(%rbp)
sete %al
movb %al, -0x1cc1(%rbp)
movb -0x1cc1(%rbp), %al
movb %al, -0x1cb9(%rbp)
movl -0x1cc0(%rbp), %eax
movb -0x1cb9(%rbp), %cl
movzbl %cl, %ecx
andl $0x1, %ecx
subl %ecx, %eax
movl %eax, -0x16b0(%rbp)
movl -0x10(%rbp), %eax
movl %eax, -0x1cc8(%rbp)
leaq -0x1810(%rbp), %rdi
callq 0x1c680
movb %al, -0x1cc2(%rbp)
jmp 0x159df
movl -0x1cc8(%rbp), %eax
movb -0x1cc2(%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, -0x16b4(%rbp)
cmpl $0x0, -0x16b0(%rbp)
jl 0x15a26
cmpl $0x0, -0x16b4(%rbp)
jge 0x15b0c
movl $0x3, -0x18c4(%rbp)
jmp 0x15b78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15bf0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15a7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x17e0(%rbp), %rdi
callq 0xfc90
leaq -0x17b0(%rbp), %rdi
callq 0xfd80
jmp 0x15bf0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15be4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15ad8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x18c0(%rbp), %rdi
callq 0xfd80
leaq -0x1868(%rbp), %rdi
callq 0xfd80
jmp 0x15be4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1810(%rbp), %rdi
callq 0xfc90
jmp 0x15be4
movq -0x18(%rbp), %rdi
leaq -0x1758(%rbp), %rsi
callq 0xff80
jmp 0x15b1e
movl -0x8(%rbp), %edi
incl %edi
movl -0x16b0(%rbp), %esi
movl -0x16b4(%rbp), %edx
movq -0x18(%rbp), %rcx
movzbl -0x19(%rbp), %r8d
andl $0x1, %r8d
callq 0x13430
movb %al, -0x1cc9(%rbp)
jmp 0x15b49
movb -0x1cc9(%rbp), %al
testb $0x1, %al
jne 0x15b55
jmp 0x15b65
movb $0x1, -0x1(%rbp)
movl $0x1, -0x18c4(%rbp)
jmp 0x15b78
movq -0x18(%rbp), %rdi
callq 0x168f0
movl $0x0, -0x18c4(%rbp)
leaq -0x1810(%rbp), %rdi
callq 0xfc90
leaq -0x1758(%rbp), %rdi
callq 0xfd80
movl -0x18c4(%rbp), %eax
testl %eax, %eax
jne 0x15ba6
jmp 0x15b9c
movl $0x0, -0x18c4(%rbp)
leaq -0x1700(%rbp), %rdi
callq 0xfc90
movl -0x18c4(%rbp), %eax
movl %eax, -0x1cd0(%rbp)
testl %eax, %eax
je 0x15bd1
jmp 0x15bc4
movl -0x1cd0(%rbp), %eax
subl $0x3, %eax
je 0x15bd3
jmp 0x15c08
jmp 0x15bd3
leaq -0x16c8(%rbp), %rdi
callq 0x16920
jmp 0x15856
leaq -0x1758(%rbp), %rdi
callq 0xfd80
leaq -0x1700(%rbp), %rdi
callq 0xfc90
jmp 0x15c59
movl $0x0, -0x18c4(%rbp)
leaq -0x398(%rbp), %rdi
callq 0x62d0
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 -0x18c4(%rbp), %eax
testl %eax, %eax
jne 0x1622a
jmp 0x15c54
jmp 0x161b5
leaq -0x398(%rbp), %rdi
callq 0x62d0
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 0x16244
leaq -0x1919(%rbp), %rdi
movq %rdi, -0x1cd8(%rbp)
callq 0x6830
movq -0x1cd8(%rbp), %rdx
leaq 0x4a349(%rip), %rsi     # 0x60004
leaq -0x1918(%rbp), %rdi
callq 0xfb20
jmp 0x15cc9
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x18f8(%rbp), %rdi
leaq -0x1918(%rbp), %rsi
callq 0x1bbe0
jmp 0x15ce5
leaq -0x98(%rbp), %rdi
leaq -0x18f8(%rbp), %rsi
callq 0x16860
jmp 0x15cfa
leaq -0x18f8(%rbp), %rdi
callq 0xfc90
leaq -0x1918(%rbp), %rdi
callq 0x62d0
leaq -0x1919(%rbp), %rdi
callq 0x64f0
leaq -0x1971(%rbp), %rdi
movq %rdi, -0x1ce0(%rbp)
callq 0x6830
movq -0x1ce0(%rbp), %rdx
leaq 0x4a2c8(%rip), %rsi     # 0x60007
leaq -0x1970(%rbp), %rdi
callq 0xfb20
jmp 0x15d4d
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x1950(%rbp), %rdi
leaq -0x1970(%rbp), %rsi
callq 0x1bbe0
jmp 0x15d69
leaq -0x98(%rbp), %rdi
leaq -0x1950(%rbp), %rsi
callq 0x16860
jmp 0x15d7e
leaq -0x1950(%rbp), %rdi
callq 0xfc90
leaq -0x1970(%rbp), %rdi
callq 0x62d0
leaq -0x1971(%rbp), %rdi
callq 0x64f0
testb $0x1, -0x19(%rbp)
je 0x15f5e
leaq -0x19c9(%rbp), %rdi
movq %rdi, -0x1ce8(%rbp)
callq 0x6830
movq -0x1ce8(%rbp), %rdx
leaq 0x4a23d(%rip), %rsi     # 0x6000a
leaq -0x19c8(%rbp), %rdi
callq 0xfb20
jmp 0x15ddb
movzbl -0x19(%rbp), %edx
andl $0x1, %edx
leaq -0x19a8(%rbp), %rdi
leaq -0x19c8(%rbp), %rsi
callq 0x1bbe0
jmp 0x15df7
leaq -0x98(%rbp), %rdi
leaq -0x19a8(%rbp), %rsi
callq 0x16860
jmp 0x15e0c
leaq -0x19a8(%rbp), %rdi
callq 0xfc90
leaq -0x19c8(%rbp), %rdi
callq 0x62d0
leaq -0x19c9(%rbp), %rdi
callq 0x64f0
jmp 0x15f5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15e87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15e7b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x18f8(%rbp), %rdi
callq 0xfc90
leaq -0x1918(%rbp), %rdi
callq 0x62d0
leaq -0x1919(%rbp), %rdi
callq 0x64f0
jmp 0x16244
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15eea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15ede
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1950(%rbp), %rdi
callq 0xfc90
leaq -0x1970(%rbp), %rdi
callq 0x62d0
leaq -0x1971(%rbp), %rdi
callq 0x64f0
jmp 0x16244
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15f4d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x15f41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x19a8(%rbp), %rdi
callq 0xfc90
leaq -0x19c8(%rbp), %rdi
callq 0x62d0
leaq -0x19c9(%rbp), %rdi
callq 0x64f0
jmp 0x16244
leaq -0x98(%rbp), %rdi
movq %rdi, -0x1cf0(%rbp)
callq 0x12f70
movq -0x1cf0(%rbp), %rdi
movq %rax, -0x19d8(%rbp)
callq 0x12de0
movq %rax, -0x19e0(%rbp)
movq -0x19d8(%rbp), %rdi
movq -0x19e0(%rbp), %rsi
callq 0x16750
jmp 0x15fa0
leaq -0x98(%rbp), %rax
movq %rax, -0x19e8(%rbp)
movq -0x19e8(%rbp), %rdi
callq 0x12f70
movq %rax, -0x19f0(%rbp)
movq -0x19e8(%rbp), %rdi
callq 0x12de0
movq %rax, -0x19f8(%rbp)
leaq -0x19f0(%rbp), %rdi
leaq -0x19f8(%rbp), %rsi
callq 0x16890
testb $0x1, %al
jne 0x15ff0
jmp 0x161b3
leaq -0x19f0(%rbp), %rdi
callq 0x168d0
movq %rax, %rsi
leaq -0x1a28(%rbp), %rdi
callq 0xfdb0
jmp 0x1600d
leaq -0x1ad8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x22ce0
jmp 0x16022
leaq -0x1b08(%rbp), %rdi
leaq -0x1a28(%rbp), %rsi
callq 0xfdb0
jmp 0x16037
leaq -0x1a80(%rbp), %rdi
leaq -0x1ad8(%rbp), %rsi
leaq -0x1b08(%rbp), %rdx
callq 0x1c440
jmp 0x16053
leaq -0x1b08(%rbp), %rdi
callq 0xfc90
leaq -0x1ad8(%rbp), %rdi
callq 0xfd80
movq -0x18(%rbp), %rdi
leaq -0x1a80(%rbp), %rsi
callq 0xff80
jmp 0x1607d
movl -0x8(%rbp), %edi
incl %edi
movl -0xc(%rbp), %esi
movl -0x10(%rbp), %edx
movq -0x18(%rbp), %rcx
movzbl -0x19(%rbp), %r8d
andl $0x1, %r8d
callq 0x13430
movb %al, -0x1cf1(%rbp)
jmp 0x160a2
movb -0x1cf1(%rbp), %al
testb $0x1, %al
jne 0x160b1
jmp 0x1613e
movb $0x1, -0x1(%rbp)
movl $0x1, -0x18c4(%rbp)
jmp 0x16151
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x161a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
jmp 0x1610d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1b08(%rbp), %rdi
callq 0xfc90
leaq -0x1ad8(%rbp), %rdi
callq 0xfd80
jmp 0x161a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0x1a80(%rbp), %rdi
callq 0xfd80
jmp 0x161a2
movq -0x18(%rbp), %rdi
callq 0x168f0
movl $0x0, -0x18c4(%rbp)
leaq -0x1a80(%rbp), %rdi
callq 0xfd80
movl -0x18c4(%rbp), %eax
testl %eax, %eax
jne 0x16173
jmp 0x16169
movl $0x0, -0x18c4(%rbp)
leaq -0x1a28(%rbp), %rdi
callq 0xfc90
movl -0x18c4(%rbp), %eax
testl %eax, %eax
jne 0x1622a
jmp 0x1618f
jmp 0x16191
leaq -0x19f0(%rbp), %rdi
callq 0x16920
jmp 0x15fd4
leaq -0x1a28(%rbp), %rdi
callq 0xfc90
jmp 0x16244
jmp 0x161b5
movl -0x8(%rbp), %eax
imulq $0x1081c8, %rax, %rcx   # imm = 0x1081C8
leaq 0x6c72a(%rip), %rax     # 0x828f0
addq %rcx, %rax
movq %rax, -0x1d00(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x1b60(%rbp), %rdi
callq 0x2ddf0
jmp 0x161e2
movq -0x1d00(%rbp), %rax
movslq -0x1b14(%rbp), %rcx
imulq $0xbbd, %rcx, %rcx      # imm = 0xBBD
addq %rcx, %rax
movslq -0xc(%rbp), %rcx
imulq $0x259, %rcx, %rcx      # imm = 0x259
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movb $0x0, (%rax,%rcx)
leaq -0x1b60(%rbp), %rdi
callq 0xfd80
movb $0x0, -0x1(%rbp)
movl $0x1, -0x18c4(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0xfd80
leaq -0x98(%rbp), %rdi
callq 0x10050
jmp 0x1625e
leaq -0xf0(%rbp), %rdi
callq 0xfd80
leaq -0x98(%rbp), %rdi
callq 0x10050
jmp 0x1626c
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x1d10, %rsp           # imm = 0x1D10
popq %rbp
retq
movq -0xf8(%rbp), %rdi
callq 0x6820
nopl (%rax,%rax)