// File: /workspace/github_cpp_makefile_star2_O2/joao18araujo[P]pierluigi/src/second_species_counterpoint.cpp
// Function: SecondSpeciesCounterpoint::solve(unsigned int, unsigned int, int, int, bool, Song&)
bool SecondSpeciesCounterpoint::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) printf("[%d][%d][%d][%d][%d]\n", position, compass_position, counterpoint.back().midi_number, paralels, same_movements);
  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 || compass_position) && (position < song->size_without_rest() - 1)){
    auto previous_note = song->notes[position - 1 + compass_position];
    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);
    string previous = previous_interval.description();

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

      if(previous != "P5" && ascendant)
        analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("P5", ascendant), &counterpoint);

      analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("m3", ascendant), &counterpoint);
      analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("M3", ascendant), &counterpoint);
      analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("m6", ascendant), &counterpoint);
      analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("M6", ascendant), &counterpoint);
      analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("m10", ascendant), &counterpoint);
      analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("M10", ascendant), &counterpoint);

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

      //intervals with same movement
      if(previous != "P8")
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("P8", ascendant), &counterpoint);
      if(previous != "P5" && ascendant)
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("P5", ascendant), &counterpoint);

      analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("m3", ascendant), &counterpoint);
      analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("M3", ascendant), &counterpoint);
      analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("m6", ascendant), &counterpoint);
      analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("M6", ascendant), &counterpoint);
      analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("m10", ascendant), &counterpoint);
      analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("M10", ascendant), &counterpoint);

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

      if(!is_thesis(note, (note.duration / 2) * compass_position)){
        //Tempo fraco
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("P4", ascendant), &counterpoint);
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("m2", ascendant), &counterpoint);
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("M2", ascendant), &counterpoint);
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("m7", ascendant), &counterpoint);
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("M7", ascendant), &counterpoint);
        // TODO: m9?
      }
    }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;
      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;
      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){
    //Ú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);
    string previous = previous_interval.description();

    if(not note.rest()){
      analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("P1", ascendant), &counterpoint);
      if(previous != "P8")
        analyse_and_add_interval(true, melodic_ascendant, possible_intervals, previous_note, note, Interval("P8", ascendant), &counterpoint);
      if(previous != "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 != "P8")
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("P8", ascendant), &counterpoint);
      if(previous != "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));
      sm = same_movements -  (melodic_interval.ascendant() != melodic_ascendant);
      if(par < 0 || sm < 0) continue;
      counterpoint.notes.push_back(c_note);
      if(solve(position + 1, 0, par, sm, ascendant, counterpoint)) return true;
      counterpoint.notes.pop_back();
    }
  }else{
    //Primeira nota
    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);
      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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2428, %rsp           # imm = 0x2428
movq %r9, 0x18(%rsp)
movl %r8d, %ebp
movl %ecx, 0x44(%rsp)
movl %edx, 0x40(%rsp)
movl %esi, %r15d
movl %edi, %r14d
movl %esi, %eax
addl %edi, %eax
movl %eax, 0x60(%rsp)
jne 0x14abf
leaq 0x25d0a(%rip), %rdi     # 0x3a7b0
pushq $0x1
popq %rsi
movl $0x9bc8cf8, %edx        # imm = 0x9BC8CF8
callq 0x5220
callq 0x5270
movl %eax, %edi
callq 0x5330
leaq 0x9bee9e2(%rip), %rax   # 0x9c034a8
movq (%rax), %rdi
callq 0x17cf4
movb $0x1, %bl
cmpl %r14d, %eax
jbe 0x16bee
movl %ebp, 0x11c(%rsp)
movq %r14, 0x50(%rsp)
movl %r14d, %r14d
movq %r15, 0x48(%rsp)
movl %r15d, %r15d
movslq 0x40(%rsp), %r13
movslq 0x44(%rsp), %r12
cmpl $0x0, 0x60(%rsp)
je 0x14b5c
leaq 0x120(%rsp), %rbx
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
callq 0x17d60
imulq $0x1081c8, %r14, %rax   # imm = 0x1081C8
addq 0x25454(%rip), %rax     # 0x39f78
movslq 0x4c(%rbx), %rcx
imulq $0x42072, %r15, %rdx    # imm = 0x42072
addq %rax, %rdx
imulq $0xbbd, %rcx, %rax      # imm = 0xBBD
addq %rdx, %rax
imulq $0x259, %r13, %rcx      # imm = 0x259
addq %rax, %rcx
movb (%r12,%rcx), %bpl
movq %rbx, %rdi
callq 0x979a
cmpb $0x1, %bpl
jne 0x14f33
movq %r15, 0x1a0(%rsp)
movq %r13, 0x1a8(%rsp)
movq %r12, 0x1b0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
andq $0x0, 0x30(%rsp)
leaq 0x9bee91f(%rip), %r12   # 0x9c034a8
movq (%r12), %rax
movq %r14, 0x198(%rsp)
imulq $0x58, %r14, %rsi
addq (%rax), %rsi
leaq 0x120(%rsp), %rdi
callq 0x12676
movq 0x48(%rsp), %r15
movl %r15d, %eax
movq 0x50(%rsp), %r13
orl %r13d, %eax
movl 0x11c(%rsp), %r14d
movzbl %r14b, %eax
movl %eax, 0x14(%rsp)
movl %r15d, %eax
notl %eax
movl %eax, 0x58(%rsp)
pushq $0x30
popq %rbx
je 0x14d87
movq (%r12), %rdi
callq 0x17cf4
decl %eax
cmpl %r13d, %eax
jbe 0x14d87
movq (%r12), %rax
leal (%r15,%r13), %ecx
decl %ecx
imulq $0x58, %rcx, %rsi
addq (%rax), %rsi
leaq 0x68(%rsp), %rdi
callq 0x12676
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rsi
addq $-0x58, %rsi
leaq 0x218(%rsp), %rdi
callq 0x12676
leaq 0x2168(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x2110(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x2a0(%rsp), %rdi
leaq 0x2168(%rsp), %rsi
leaq 0x2110(%rsp), %rdx
callq 0xf41a
leaq 0x2110(%rsp), %rdi
callq 0x979a
leaq 0x2168(%rsp), %rdi
callq 0x979a
leaq 0x2a0(%rsp), %rdi
callq 0xf856
movl %eax, %ebp
leaq 0x20b8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x2060(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0x12676
leaq 0x1e8(%rsp), %rdi
leaq 0x20b8(%rsp), %rsi
leaq 0x2060(%rsp), %rdx
callq 0xf41a
leaq 0x2060(%rsp), %rdi
callq 0x979a
leaq 0x20b8(%rsp), %rdi
callq 0x979a
leaq 0x178(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0xf548
leaq 0x120(%rsp), %rdi
callq 0x1302a
movl %ebp, %ecx
xorb $0x1, %cl
movb %cl, 0x50(%rsp)
testb %al, %al
je 0x158b9
leaq 0x142f7(%rip), %rsi     # 0x29020
leaq 0x410(%rsp), %rdi
leaq 0x1b8(%rsp), %rdx
callq 0x96e6
leaq 0xc0(%rsp), %rdi
leaq 0x410(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
leaq 0x20(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xc54a
leaq 0xc8(%rsp), %rdi
callq 0x51b0
leaq 0x410(%rsp), %rdi
callq 0x51b0
jmp 0x1695a
movq (%r12), %rdi
callq 0x17cf4
decl %eax
cmpl %r13d, %eax
jne 0x14f3a
movq (%r12), %rax
leal -0x1(%r13), %ecx
imulq $0x58, %rcx, %rsi
addq (%rax), %rsi
leaq 0x68(%rsp), %rdi
callq 0x12676
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rsi
addq $-0x58, %rsi
leaq 0x218(%rsp), %rdi
callq 0x12676
leaq 0x1198(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x2a0(%rsp), %rdi
leaq 0x1198(%rsp), %rsi
leaq 0x1140(%rsp), %rdx
callq 0xf41a
leaq 0x1140(%rsp), %rdi
callq 0x979a
leaq 0x1198(%rsp), %rdi
callq 0x979a
leaq 0x2a0(%rsp), %rdi
callq 0xf856
movl %eax, %r15d
leaq 0x10e8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1090(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0x12676
leaq 0x1e8(%rsp), %rdi
leaq 0x10e8(%rsp), %rsi
leaq 0x1090(%rsp), %rdx
callq 0xf41a
leaq 0x1090(%rsp), %rdi
callq 0x979a
leaq 0x10e8(%rsp), %rdi
callq 0x979a
leaq 0x178(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0xf548
leaq 0x120(%rsp), %rdi
callq 0x1302a
movl %r15d, %ecx
xorb $0x1, %cl
movb %cl, 0x48(%rsp)
testb %al, %al
je 0x15145
leaq 0x1414b(%rip), %rsi     # 0x29020
leaq 0x330(%rsp), %rdi
leaq 0x1b8(%rsp), %rdx
callq 0x96e6
leaq 0xc0(%rsp), %rdi
leaq 0x330(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
leaq 0x20(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xc54a
leaq 0xc8(%rsp), %rdi
callq 0x51b0
leaq 0x330(%rsp), %rdi
callq 0x51b0
jmp 0x15676
xorl %ebx, %ebx
jmp 0x16bee
leaq 0x140df(%rip), %rsi     # 0x29020
leaq 0x310(%rsp), %rdi
leaq 0x218(%rsp), %rdx
callq 0x96e6
leaq 0x68(%rsp), %rdi
leaq 0x310(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
leaq 0x20(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xc54a
leaq 0x70(%rsp), %rdi
callq 0x51b0
leaq 0x310(%rsp), %rdi
callq 0x51b0
leaq 0x1408a(%rip), %rsi     # 0x29023
leaq 0x2f0(%rsp), %rdi
leaq 0x218(%rsp), %rdx
callq 0x96e6
leaq 0x68(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
leaq 0x20(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xc54a
leaq 0x70(%rsp), %rdi
callq 0x51b0
leaq 0x2f0(%rsp), %rdi
callq 0x51b0
testb %r14b, %r14b
je 0x15046
leaq 0x14030(%rip), %rsi     # 0x29026
leaq 0x2d0(%rsp), %rdi
leaq 0x218(%rsp), %rdx
callq 0x96e6
leaq 0x68(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
leaq 0x20(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xc54a
leaq 0x70(%rsp), %rdi
callq 0x51b0
leaq 0x2d0(%rsp), %rdi
callq 0x51b0
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xc3c6
movq 0x20(%rsp), %rbx
movq 0x28(%rsp), %rax
movq %rax, 0x48(%rsp)
andl $0x1, 0x58(%rsp)
leaq 0x218(%rsp), %rbp
leaq 0x2270(%rsp), %r13
leaq 0xbe0(%rsp), %r14
leaq 0x68(%rsp), %r15
movq 0x18(%rsp), %r12
cmpq 0x48(%rsp), %rbx
je 0x16b71
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x97b4
movq %r13, %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
movq %r14, %rdi
movq %rbp, %rsi
callq 0x97b4
movq %r15, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0xf750
leaq 0xbe8(%rsp), %rdi
callq 0x51b0
movq %r13, %rdi
callq 0x979a
movl 0x68(%rsp), %eax
cltd
pushq $0x2
popq %rcx
idivl %ecx
movl %eax, 0x68(%rsp)
movq %r12, %rdi
movq %r15, %rsi
callq 0x986e
movl 0x60(%rsp), %edi
movl 0x58(%rsp), %esi
movl 0x40(%rsp), %edx
movl 0x44(%rsp), %ecx
movl 0x14(%rsp), %r8d
movq %r12, %r9
callq 0x14a6e
testb %al, %al
jne 0x1589b
movq 0x18(%rsp), %rdi
callq 0xc42c
movq %r15, %rdi
callq 0x979a
leaq 0x220(%rsp), %rdi
callq 0x51b0
addq $0x30, %rbx
jmp 0x1508b
leaq 0x1038(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0xfe0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x13ead(%rip), %rsi     # 0x29020
leaq 0x3f0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x7c0(%rsp), %rdi
leaq 0x3f0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movzbl 0x48(%rsp), %ebp
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1038(%rsp), %rcx
leaq 0xfe0(%rsp), %r8
leaq 0x7c0(%rsp), %r9
movl %ebp, %esi
callq 0x1767c
leaq 0x7c8(%rsp), %rdi
callq 0x51b0
leaq 0x3f0(%rsp), %rdi
callq 0x51b0
leaq 0xfe0(%rsp), %rdi
callq 0x979a
leaq 0x1038(%rsp), %rdi
callq 0x979a
leaq 0x13e12(%rip), %rsi     # 0x29023
leaq 0x178(%rsp), %rdi
callq 0x982d
testb %al, %al
je 0x152e6
leaq 0xf88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0xf30(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x13dcf(%rip), %rsi     # 0x29023
leaq 0x3d0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x790(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0xf88(%rsp), %rcx
leaq 0xf30(%rsp), %r8
leaq 0x790(%rsp), %r9
movl %ebp, %esi
callq 0x1767c
leaq 0x798(%rsp), %rdi
callq 0x51b0
leaq 0x3d0(%rsp), %rdi
callq 0x51b0
leaq 0xf30(%rsp), %rdi
callq 0x979a
leaq 0xf88(%rsp), %rdi
callq 0x979a
leaq 0x13d39(%rip), %rsi     # 0x29026
leaq 0x178(%rsp), %rdi
callq 0x982d
andb %r14b, %al
cmpb $0x1, %al
jne 0x153c4
leaq 0xed8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0xe80(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x13cf3(%rip), %rsi     # 0x29026
leaq 0x3b0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x760(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0xed8(%rsp), %rcx
leaq 0xe80(%rsp), %r8
leaq 0x760(%rsp), %r9
movl %ebp, %esi
callq 0x1767c
leaq 0x768(%rsp), %rdi
callq 0x51b0
leaq 0x3b0(%rsp), %rdi
callq 0x51b0
leaq 0xe80(%rsp), %rdi
callq 0x979a
leaq 0xed8(%rsp), %rdi
callq 0x979a
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xc3c6
movq 0x28(%rsp), %rax
subq 0x20(%rsp), %rax
cqto
idivq %rbx
movq %rax, %r12
leaq 0xe28(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0xdd0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x13c0d(%rip), %rsi     # 0x29020
leaq 0x390(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x730(%rsp), %rdi
leaq 0x390(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movzbl %r15b, %ebp
leaq 0x20(%rsp), %rdx
leaq 0xe28(%rsp), %rcx
leaq 0xdd0(%rsp), %r8
leaq 0x730(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x1767c
leaq 0x738(%rsp), %rdi
callq 0x51b0
leaq 0x390(%rsp), %rdi
callq 0x51b0
leaq 0xdd0(%rsp), %rdi
callq 0x979a
leaq 0xe28(%rsp), %rdi
callq 0x979a
leaq 0x13b74(%rip), %rsi     # 0x29023
leaq 0x178(%rsp), %rdi
callq 0x982d
testb %al, %al
je 0x15583
leaq 0xd78(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0xd20(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x13b31(%rip), %rsi     # 0x29023
leaq 0x370(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x700(%rsp), %rdi
leaq 0x370(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0xd78(%rsp), %rcx
leaq 0xd20(%rsp), %r8
leaq 0x700(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x1767c
leaq 0x708(%rsp), %rdi
callq 0x51b0
leaq 0x370(%rsp), %rdi
callq 0x51b0
leaq 0xd20(%rsp), %rdi
callq 0x979a
leaq 0xd78(%rsp), %rdi
callq 0x979a
leaq 0x13a9c(%rip), %rsi     # 0x29026
leaq 0x178(%rsp), %rdi
callq 0x982d
andb %r14b, %al
cmpb $0x1, %al
jne 0x15660
leaq 0xcc8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0xc70(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x13a56(%rip), %rsi     # 0x29026
leaq 0x350(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x6d0(%rsp), %rdi
leaq 0x350(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0xcc8(%rsp), %rcx
leaq 0xc70(%rsp), %r8
leaq 0x6d0(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x1767c
leaq 0x6d8(%rsp), %rdi
callq 0x51b0
leaq 0x350(%rsp), %rdi
callq 0x51b0
leaq 0xc70(%rsp), %rdi
callq 0x979a
leaq 0xcc8(%rsp), %rdi
callq 0x979a
movslq %r12d, %rax
imulq $0x30, %rax, %rdi
addq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xc3c6
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rax
movq %rax, 0x58(%rsp)
incl %r13d
movq %r13, 0x50(%rsp)
leaq 0x1b8(%rsp), %r14
leaq 0x21c0(%rsp), %rbx
leaq 0x120(%rsp), %r15
leaq 0xc10(%rsp), %r13
cmpq 0x58(%rsp), %rsi
je 0x15848
movq %r14, %rdi
movq %rsi, 0x60(%rsp)
callq 0x97b4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x12676
movq %r13, %rdi
movq %r14, %rsi
callq 0x97b4
leaq 0xc0(%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0xf750
leaq 0xc18(%rsp), %rdi
callq 0x51b0
movq %rbx, %rdi
callq 0x979a
leaq 0x2320(%rsp), %rbx
movq %rbx, %rdi
leaq 0x218(%rsp), %rsi
callq 0x12676
leaq 0x22c8(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
callq 0x12676
leaq 0x270(%rsp), %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0xf41a
movq %rbx, %r15
movq %r14, %rbx
movq %rbp, %rdi
callq 0x979a
movq %r15, %rdi
callq 0x979a
movl 0x1b8(%rsp), %eax
xorl %r12d, %r12d
cmpl 0x1e8(%rsp), %eax
jne 0x15785
pushq $-0x1
popq %r12
cmpl $0x3, %eax
je 0x15785
cmpl $0x6, %eax
je 0x15785
xorl %r12d, %r12d
cmpl $0xa, %eax
sete %r12b
negl %r12d
leaq 0x270(%rsp), %rdi
callq 0xf856
addl 0x40(%rsp), %r12d
xorb 0x48(%rsp), %al
movzbl %al, %eax
movl 0x44(%rsp), %r14d
subl %eax, %r14d
movl %r14d, %eax
orl %r12d, %eax
pushq $0x5
popq %r15
js 0x157f5
movq 0x18(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x986e
movq 0x50(%rsp), %rdi
xorl %esi, %esi
movl %r12d, %edx
movl %r14d, %ecx
movl 0x14(%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0x14a6e
pushq $0x1
popq %r15
testb %al, %al
jne 0x157f5
movq 0x18(%rsp), %rdi
callq 0xc42c
xorl %r15d, %r15d
leaq 0x278(%rsp), %rdi
callq 0x51b0
leaq 0xc0(%rsp), %rdi
callq 0x979a
leaq 0x1c0(%rsp), %rdi
callq 0x51b0
cmpl $0x5, %r15d
je 0x15827
testl %r15d, %r15d
jne 0x1584c
movq 0x60(%rsp), %rsi
addq $0x30, %rsi
movq %rbx, %r14
leaq 0x21c0(%rsp), %rbx
leaq 0x120(%rsp), %r15
jmp 0x156ad
pushq $0x4
popq %r15
leaq 0x178(%rsp), %rdi
callq 0x51b0
leaq 0x1f0(%rsp), %rdi
callq 0x51b0
leaq 0x2a8(%rsp), %rdi
callq 0x51b0
leaq 0x218(%rsp), %rdi
callq 0x979a
leaq 0x68(%rsp), %rdi
callq 0x979a
movb $0x1, %bl
testb $0x3, %r15b
jne 0x16bd7
jmp 0x16b71
leaq 0x68(%rsp), %rdi
callq 0x979a
leaq 0x220(%rsp), %rdi
callq 0x51b0
movb $0x1, %bl
jmp 0x16bd7
leaq 0x13763(%rip), %rsi     # 0x29023
leaq 0x178(%rsp), %rdi
callq 0x982d
movzbl 0x50(%rsp), %r13d
testb %al, %al
je 0x1599c
leaq 0x2008(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1fb0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x1371a(%rip), %rsi     # 0x29023
leaq 0x6b0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0xbb0(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x2008(%rsp), %rcx
leaq 0x1fb0(%rsp), %r8
leaq 0xbb0(%rsp), %r9
movl %r13d, %esi
callq 0x1767c
leaq 0xbb8(%rsp), %rdi
callq 0x51b0
leaq 0x6b0(%rsp), %rdi
callq 0x51b0
leaq 0x1fb0(%rsp), %rdi
callq 0x979a
leaq 0x2008(%rsp), %rdi
callq 0x979a
leaq 0x13683(%rip), %rsi     # 0x29026
leaq 0x178(%rsp), %rdi
callq 0x982d
andb %r14b, %al
cmpb $0x1, %al
jne 0x15a7b
leaq 0x1f58(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1f00(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x1363d(%rip), %rsi     # 0x29026
leaq 0x690(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0xb80(%rsp), %rdi
leaq 0x690(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1f58(%rsp), %rcx
leaq 0x1f00(%rsp), %r8
leaq 0xb80(%rsp), %r9
movl %r13d, %esi
callq 0x1767c
leaq 0xb88(%rsp), %rdi
callq 0x51b0
leaq 0x690(%rsp), %rdi
callq 0x51b0
leaq 0x1f00(%rsp), %rdi
callq 0x979a
leaq 0x1f58(%rsp), %rdi
callq 0x979a
leaq 0x1ea8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1e50(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x13580(%rip), %rsi     # 0x29029
leaq 0x670(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0xb50(%rsp), %rdi
leaq 0x670(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1ea8(%rsp), %rcx
leaq 0x1e50(%rsp), %r8
leaq 0xb50(%rsp), %r9
movl %r13d, %esi
callq 0x1767c
leaq 0xb58(%rsp), %rdi
callq 0x51b0
leaq 0x670(%rsp), %rdi
callq 0x51b0
leaq 0x1e50(%rsp), %rdi
callq 0x979a
leaq 0x1ea8(%rsp), %rdi
callq 0x979a
leaq 0x1df8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1da0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x134c2(%rip), %rsi     # 0x2902c
leaq 0x650(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0xb20(%rsp), %rdi
leaq 0x650(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1df8(%rsp), %rcx
leaq 0x1da0(%rsp), %r8
leaq 0xb20(%rsp), %r9
movl %r13d, %esi
callq 0x1767c
leaq 0xb28(%rsp), %rdi
callq 0x51b0
leaq 0x650(%rsp), %rdi
callq 0x51b0
leaq 0x1da0(%rsp), %rdi
callq 0x979a
leaq 0x1df8(%rsp), %rdi
callq 0x979a
leaq 0x1d48(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1cf0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x13404(%rip), %rsi     # 0x2902f
leaq 0x630(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0xaf0(%rsp), %rdi
leaq 0x630(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1d48(%rsp), %rcx
leaq 0x1cf0(%rsp), %r8
leaq 0xaf0(%rsp), %r9
movl %r13d, %esi
callq 0x1767c
leaq 0xaf8(%rsp), %rdi
callq 0x51b0
leaq 0x630(%rsp), %rdi
callq 0x51b0
leaq 0x1cf0(%rsp), %rdi
callq 0x979a
leaq 0x1d48(%rsp), %rdi
callq 0x979a
leaq 0x1c98(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1c40(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x13346(%rip), %rsi     # 0x29032
leaq 0x610(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0xac0(%rsp), %rdi
leaq 0x610(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1c98(%rsp), %rcx
leaq 0x1c40(%rsp), %r8
leaq 0xac0(%rsp), %r9
movl %r13d, %esi
callq 0x1767c
leaq 0xac8(%rsp), %rdi
callq 0x51b0
leaq 0x610(%rsp), %rdi
callq 0x51b0
leaq 0x1c40(%rsp), %rdi
callq 0x979a
leaq 0x1c98(%rsp), %rdi
callq 0x979a
leaq 0x1be8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1b90(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x13288(%rip), %rsi     # 0x29035
leaq 0x5f0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0xa90(%rsp), %rdi
leaq 0x5f0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1be8(%rsp), %rcx
leaq 0x1b90(%rsp), %r8
leaq 0xa90(%rsp), %r9
movl %r13d, %esi
callq 0x1767c
leaq 0xa98(%rsp), %rdi
callq 0x51b0
leaq 0x5f0(%rsp), %rdi
callq 0x51b0
leaq 0x1b90(%rsp), %rdi
callq 0x979a
leaq 0x1be8(%rsp), %rdi
callq 0x979a
leaq 0x1b38(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1ae0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x131cb(%rip), %rsi     # 0x29039
leaq 0x5d0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0xa60(%rsp), %rdi
leaq 0x5d0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1b38(%rsp), %rcx
leaq 0x1ae0(%rsp), %r8
leaq 0xa60(%rsp), %r9
movl %r13d, %esi
callq 0x1767c
leaq 0xa68(%rsp), %rdi
callq 0x51b0
leaq 0x5d0(%rsp), %rdi
callq 0x51b0
leaq 0x1ae0(%rsp), %rdi
callq 0x979a
leaq 0x1b38(%rsp), %rdi
callq 0x979a
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xc3c6
movq 0x28(%rsp), %rax
subq 0x20(%rsp), %rax
cqto
idivq %rbx
movq %rax, %rbx
leaq 0x130fa(%rip), %rsi     # 0x29023
leaq 0x178(%rsp), %rdi
callq 0x982d
movzbl %bpl, %r13d
testb %al, %al
je 0x16002
leaq 0x1a88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1a30(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x130b3(%rip), %rsi     # 0x29023
leaq 0x5b0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0xa30(%rsp), %rdi
leaq 0x5b0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1a88(%rsp), %rcx
leaq 0x1a30(%rsp), %r8
leaq 0xa30(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0xa38(%rsp), %rdi
callq 0x51b0
leaq 0x5b0(%rsp), %rdi
callq 0x51b0
leaq 0x1a30(%rsp), %rdi
callq 0x979a
leaq 0x1a88(%rsp), %rdi
callq 0x979a
leaq 0x1301d(%rip), %rsi     # 0x29026
leaq 0x178(%rsp), %rdi
callq 0x982d
andb %r14b, %al
cmpb $0x1, %al
jne 0x160e0
leaq 0x19d8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1980(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x12fd7(%rip), %rsi     # 0x29026
leaq 0x590(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0xa00(%rsp), %rdi
leaq 0x590(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x19d8(%rsp), %rcx
leaq 0x1980(%rsp), %r8
leaq 0xa00(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0xa08(%rsp), %rdi
callq 0x51b0
leaq 0x590(%rsp), %rdi
callq 0x51b0
leaq 0x1980(%rsp), %rdi
callq 0x979a
leaq 0x19d8(%rsp), %rdi
callq 0x979a
leaq 0x1928(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x18d0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x12f1b(%rip), %rsi     # 0x29029
leaq 0x570(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x9d0(%rsp), %rdi
leaq 0x570(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1928(%rsp), %rcx
leaq 0x18d0(%rsp), %r8
leaq 0x9d0(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0x9d8(%rsp), %rdi
callq 0x51b0
leaq 0x570(%rsp), %rdi
callq 0x51b0
leaq 0x18d0(%rsp), %rdi
callq 0x979a
leaq 0x1928(%rsp), %rdi
callq 0x979a
leaq 0x1878(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1820(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x12e5e(%rip), %rsi     # 0x2902c
leaq 0x550(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x9a0(%rsp), %rdi
leaq 0x550(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1878(%rsp), %rcx
leaq 0x1820(%rsp), %r8
leaq 0x9a0(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0x9a8(%rsp), %rdi
callq 0x51b0
leaq 0x550(%rsp), %rdi
callq 0x51b0
leaq 0x1820(%rsp), %rdi
callq 0x979a
leaq 0x1878(%rsp), %rdi
callq 0x979a
leaq 0x17c8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1770(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x12da1(%rip), %rsi     # 0x2902f
leaq 0x530(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x970(%rsp), %rdi
leaq 0x530(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x17c8(%rsp), %rcx
leaq 0x1770(%rsp), %r8
leaq 0x970(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0x978(%rsp), %rdi
callq 0x51b0
leaq 0x530(%rsp), %rdi
callq 0x51b0
leaq 0x1770(%rsp), %rdi
callq 0x979a
leaq 0x17c8(%rsp), %rdi
callq 0x979a
leaq 0x1718(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x16c0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x12ce4(%rip), %rsi     # 0x29032
leaq 0x510(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x940(%rsp), %rdi
leaq 0x510(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1718(%rsp), %rcx
leaq 0x16c0(%rsp), %r8
leaq 0x940(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0x948(%rsp), %rdi
callq 0x51b0
leaq 0x510(%rsp), %rdi
callq 0x51b0
leaq 0x16c0(%rsp), %rdi
callq 0x979a
leaq 0x1718(%rsp), %rdi
callq 0x979a
leaq 0x1668(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1610(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x12c27(%rip), %rsi     # 0x29035
leaq 0x4f0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x910(%rsp), %rdi
leaq 0x4f0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1668(%rsp), %rcx
leaq 0x1610(%rsp), %r8
leaq 0x910(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0x918(%rsp), %rdi
callq 0x51b0
leaq 0x4f0(%rsp), %rdi
callq 0x51b0
leaq 0x1610(%rsp), %rdi
callq 0x979a
leaq 0x1668(%rsp), %rdi
callq 0x979a
leaq 0x15b8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1560(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x12b6b(%rip), %rsi     # 0x29039
leaq 0x4d0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x8e0(%rsp), %rdi
leaq 0x4d0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x15b8(%rsp), %rcx
leaq 0x1560(%rsp), %r8
leaq 0x8e0(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0x8e8(%rsp), %rdi
callq 0x51b0
leaq 0x4d0(%rsp), %rdi
callq 0x51b0
leaq 0x1560(%rsp), %rdi
callq 0x979a
leaq 0x15b8(%rsp), %rdi
callq 0x979a
movslq %ebx, %rax
imulq $0x30, %rax, %rdi
addq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xc3c6
leaq 0x120(%rsp), %rdi
movl (%rdi), %eax
cltd
pushq $0x2
popq %rcx
idivl %ecx
imull %eax, %r15d
movl %r15d, %esi
callq 0x9634
testb %al, %al
jne 0x1695a
leaq 0x1508(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x14b0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x12af0(%rip), %rsi     # 0x290b8
leaq 0x4b0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x8b0(%rsp), %rdi
leaq 0x4b0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1508(%rsp), %rcx
leaq 0x14b0(%rsp), %r8
leaq 0x8b0(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0x8b8(%rsp), %rdi
callq 0x51b0
leaq 0x4b0(%rsp), %rdi
callq 0x51b0
leaq 0x14b0(%rsp), %rdi
callq 0x979a
leaq 0x1508(%rsp), %rdi
callq 0x979a
leaq 0x1458(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1400(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x12a2a(%rip), %rsi     # 0x290b2
leaq 0x490(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x880(%rsp), %rdi
leaq 0x490(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1458(%rsp), %rcx
leaq 0x1400(%rsp), %r8
leaq 0x880(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0x888(%rsp), %rdi
callq 0x51b0
leaq 0x490(%rsp), %rdi
callq 0x51b0
leaq 0x1400(%rsp), %rdi
callq 0x979a
leaq 0x1458(%rsp), %rdi
callq 0x979a
leaq 0x13a8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x1350(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x1296d(%rip), %rsi     # 0x290b5
leaq 0x470(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x850(%rsp), %rdi
leaq 0x470(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x13a8(%rsp), %rcx
leaq 0x1350(%rsp), %r8
leaq 0x850(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0x858(%rsp), %rdi
callq 0x51b0
leaq 0x470(%rsp), %rdi
callq 0x51b0
leaq 0x1350(%rsp), %rdi
callq 0x979a
leaq 0x13a8(%rsp), %rdi
callq 0x979a
leaq 0x12f8(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x12a0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x128b3(%rip), %rsi     # 0x290bb
leaq 0x450(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x820(%rsp), %rdi
leaq 0x450(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x12f8(%rsp), %rcx
leaq 0x12a0(%rsp), %r8
leaq 0x820(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0x828(%rsp), %rdi
callq 0x51b0
leaq 0x450(%rsp), %rdi
callq 0x51b0
leaq 0x12a0(%rsp), %rdi
callq 0x979a
leaq 0x12f8(%rsp), %rdi
callq 0x979a
leaq 0x1248(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x12676
leaq 0x11f0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x12676
leaq 0x127f6(%rip), %rsi     # 0x290be
leaq 0x430(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x96e6
leaq 0x7f0(%rsp), %rdi
leaq 0x430(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1248(%rsp), %rcx
leaq 0x11f0(%rsp), %r8
leaq 0x7f0(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0x1767c
leaq 0x7f8(%rsp), %rdi
callq 0x51b0
leaq 0x430(%rsp), %rdi
callq 0x51b0
leaq 0x11f0(%rsp), %rdi
callq 0x979a
leaq 0x1248(%rsp), %rdi
callq 0x979a
movq 0x20(%rsp), %r14
movq 0x28(%rsp), %rax
movq %rax, 0x48(%rsp)
andl $0x1, 0x58(%rsp)
leaq 0x1b8(%rsp), %r15
leaq 0x23d0(%rsp), %r12
leaq 0x120(%rsp), %rbx
cmpq 0x48(%rsp), %r14
je 0x16b27
movq %r15, %rdi
movq %r14, %rsi
callq 0x97b4
movq %r12, %rdi
movq %rbx, %rsi
callq 0x12676
leaq 0xc40(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
callq 0x97b4
leaq 0xc0(%rsp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0xf750
leaq 0xc48(%rsp), %rdi
callq 0x51b0
movq %r12, %rdi
callq 0x979a
movl 0xc0(%rsp), %eax
cltd
pushq $0x2
popq %rcx
idivl %ecx
movl %eax, 0xc0(%rsp)
leaq 0x2218(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0x12676
leaq 0x2378(%rsp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x12676
leaq 0x270(%rsp), %rdi
leaq 0x2218(%rsp), %r15
movq %r15, %rsi
movq %r13, %rdx
callq 0xf41a
movq %r13, %rdi
callq 0x979a
movq %r15, %rdi
callq 0x979a
movl 0x1b8(%rsp), %eax
xorl %r13d, %r13d
cmpl 0x1e8(%rsp), %eax
jne 0x16a77
pushq $-0x1
popq %r13
cmpl $0x3, %eax
je 0x16a77
cmpl $0x6, %eax
je 0x16a77
xorl %r13d, %r13d
cmpl $0xa, %eax
sete %r13b
negl %r13d
leaq 0x270(%rsp), %rdi
callq 0xf856
addl 0x40(%rsp), %r13d
xorb 0x50(%rsp), %al
movzbl %al, %eax
movl 0x44(%rsp), %ebp
subl %eax, %ebp
movl %ebp, %eax
orl %r13d, %eax
pushq $0x3
popq %r15
js 0x16ae4
movq 0x18(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x986e
movl 0x60(%rsp), %edi
movl 0x58(%rsp), %esi
movl %r13d, %edx
movl %ebp, %ecx
movl 0x14(%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0x14a6e
pushq $0x1
popq %r15
testb %al, %al
jne 0x16ae4
movq 0x18(%rsp), %rdi
callq 0xc42c
xorl %r15d, %r15d
leaq 0x278(%rsp), %rdi
callq 0x51b0
leaq 0xc0(%rsp), %rdi
callq 0x979a
leaq 0x1c0(%rsp), %rdi
callq 0x51b0
cmpl $0x3, %r15d
je 0x16b16
testl %r15d, %r15d
jne 0x16b2b
addq $0x30, %r14
leaq 0x1b8(%rsp), %r15
jmp 0x16986
pushq $0x2
popq %r15
leaq 0x178(%rsp), %rdi
callq 0x51b0
leaq 0x1f0(%rsp), %rdi
callq 0x51b0
leaq 0x2a8(%rsp), %rdi
callq 0x51b0
leaq 0x218(%rsp), %rdi
callq 0x979a
leaq 0x68(%rsp), %rdi
callq 0x979a
movb $0x1, %bl
testb $0x1, %r15b
jne 0x16bd7
leaq 0x68(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x17d60
leaq 0x68(%rsp), %rdi
imulq $0x1081c8, 0x198(%rsp), %rax # imm = 0x1081C8
addq 0x233e0(%rip), %rax     # 0x39f78
movslq 0x4c(%rdi), %rcx
imulq $0x42072, 0x1a0(%rsp), %rdx # imm = 0x42072
addq %rax, %rdx
imulq $0xbbd, %rcx, %rax      # imm = 0xBBD
imulq $0x259, 0x1a8(%rsp), %rcx # imm = 0x259
addq %rdx, %rcx
addq %rax, %rcx
movq 0x1b0(%rsp), %rax
movb $0x0, (%rax,%rcx)
callq 0x979a
xorl %ebx, %ebx
leaq 0x120(%rsp), %rdi
callq 0x979a
leaq 0x20(%rsp), %rdi
callq 0x98a8
movl %ebx, %eax
addq $0x2428, %rsp           # imm = 0x2428
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x7f8(%rsp), %rdi
callq 0x51b0
jmp 0x16c17
movq %rax, %rbx
leaq 0x430(%rsp), %rdi
callq 0x51b0
jmp 0x16c29
movq %rax, %rbx
leaq 0x11f0(%rsp), %rdi
callq 0x979a
jmp 0x16c3b
movq %rax, %rbx
leaq 0x1248(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x828(%rsp), %rdi
callq 0x51b0
jmp 0x16c5d
movq %rax, %rbx
leaq 0x450(%rsp), %rdi
callq 0x51b0
jmp 0x16c6f
movq %rax, %rbx
leaq 0x12a0(%rsp), %rdi
callq 0x979a
jmp 0x16c81
movq %rax, %rbx
leaq 0x12f8(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x858(%rsp), %rdi
callq 0x51b0
jmp 0x16ca3
movq %rax, %rbx
leaq 0x470(%rsp), %rdi
callq 0x51b0
jmp 0x16cb5
movq %rax, %rbx
leaq 0x1350(%rsp), %rdi
callq 0x979a
jmp 0x16cc7
movq %rax, %rbx
leaq 0x13a8(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x888(%rsp), %rdi
callq 0x51b0
jmp 0x16ce9
movq %rax, %rbx
leaq 0x490(%rsp), %rdi
callq 0x51b0
jmp 0x16cfb
movq %rax, %rbx
leaq 0x1400(%rsp), %rdi
callq 0x979a
jmp 0x16d0d
movq %rax, %rbx
leaq 0x1458(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x8b8(%rsp), %rdi
callq 0x51b0
jmp 0x16d2f
movq %rax, %rbx
leaq 0x4b0(%rsp), %rdi
callq 0x51b0
jmp 0x16d41
movq %rax, %rbx
leaq 0x14b0(%rsp), %rdi
callq 0x979a
jmp 0x16d53
movq %rax, %rbx
leaq 0x1508(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0xa08(%rsp), %rdi
callq 0x51b0
jmp 0x16d75
movq %rax, %rbx
leaq 0x590(%rsp), %rdi
callq 0x51b0
jmp 0x16d87
movq %rax, %rbx
leaq 0x1980(%rsp), %rdi
callq 0x979a
jmp 0x16d99
movq %rax, %rbx
leaq 0x19d8(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0xa38(%rsp), %rdi
callq 0x51b0
jmp 0x16dbb
movq %rax, %rbx
leaq 0x5b0(%rsp), %rdi
callq 0x51b0
jmp 0x16dcd
movq %rax, %rbx
leaq 0x1a30(%rsp), %rdi
callq 0x979a
jmp 0x16ddf
movq %rax, %rbx
leaq 0x1a88(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0xb88(%rsp), %rdi
callq 0x51b0
jmp 0x16e01
movq %rax, %rbx
leaq 0x690(%rsp), %rdi
callq 0x51b0
jmp 0x16e13
movq %rax, %rbx
leaq 0x1f00(%rsp), %rdi
callq 0x979a
jmp 0x16e25
movq %rax, %rbx
leaq 0x1f58(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0xbb8(%rsp), %rdi
callq 0x51b0
jmp 0x16e47
movq %rax, %rbx
leaq 0x6b0(%rsp), %rdi
callq 0x51b0
jmp 0x16e59
movq %rax, %rbx
leaq 0x1fb0(%rsp), %rdi
callq 0x979a
jmp 0x16e6b
movq %rax, %rbx
leaq 0x2008(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x6d8(%rsp), %rdi
callq 0x51b0
jmp 0x16e8d
movq %rax, %rbx
leaq 0x350(%rsp), %rdi
callq 0x51b0
jmp 0x16e9f
movq %rax, %rbx
leaq 0xc70(%rsp), %rdi
callq 0x979a
jmp 0x16eb1
movq %rax, %rbx
leaq 0xcc8(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x708(%rsp), %rdi
callq 0x51b0
jmp 0x16ed3
movq %rax, %rbx
leaq 0x370(%rsp), %rdi
callq 0x51b0
jmp 0x16ee5
movq %rax, %rbx
leaq 0xd20(%rsp), %rdi
callq 0x979a
jmp 0x16ef7
movq %rax, %rbx
leaq 0xd78(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x768(%rsp), %rdi
callq 0x51b0
jmp 0x16f19
movq %rax, %rbx
leaq 0x3b0(%rsp), %rdi
callq 0x51b0
jmp 0x16f2b
movq %rax, %rbx
leaq 0xe80(%rsp), %rdi
callq 0x979a
jmp 0x16f3d
movq %rax, %rbx
leaq 0xed8(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x798(%rsp), %rdi
callq 0x51b0
jmp 0x16f5f
movq %rax, %rbx
leaq 0x3d0(%rsp), %rdi
callq 0x51b0
jmp 0x16f71
movq %rax, %rbx
leaq 0xf30(%rsp), %rdi
callq 0x979a
jmp 0x16f83
movq %rax, %rbx
leaq 0xf88(%rsp), %rdi
jmp 0x1739f
jmp 0x175cd
movq %rax, %rbx
leaq 0x8e8(%rsp), %rdi
callq 0x51b0
jmp 0x16faa
movq %rax, %rbx
leaq 0x4d0(%rsp), %rdi
callq 0x51b0
jmp 0x16fbc
movq %rax, %rbx
leaq 0x1560(%rsp), %rdi
callq 0x979a
jmp 0x16fce
movq %rax, %rbx
leaq 0x15b8(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x918(%rsp), %rdi
callq 0x51b0
jmp 0x16ff0
movq %rax, %rbx
leaq 0x4f0(%rsp), %rdi
callq 0x51b0
jmp 0x17002
movq %rax, %rbx
leaq 0x1610(%rsp), %rdi
callq 0x979a
jmp 0x17014
movq %rax, %rbx
leaq 0x1668(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x948(%rsp), %rdi
callq 0x51b0
jmp 0x17036
movq %rax, %rbx
leaq 0x510(%rsp), %rdi
callq 0x51b0
jmp 0x17048
movq %rax, %rbx
leaq 0x16c0(%rsp), %rdi
callq 0x979a
jmp 0x1705a
movq %rax, %rbx
leaq 0x1718(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x978(%rsp), %rdi
callq 0x51b0
jmp 0x1707c
movq %rax, %rbx
leaq 0x530(%rsp), %rdi
callq 0x51b0
jmp 0x1708e
movq %rax, %rbx
leaq 0x1770(%rsp), %rdi
callq 0x979a
jmp 0x170a0
movq %rax, %rbx
leaq 0x17c8(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x9a8(%rsp), %rdi
callq 0x51b0
jmp 0x170c2
movq %rax, %rbx
leaq 0x550(%rsp), %rdi
callq 0x51b0
jmp 0x170d4
movq %rax, %rbx
leaq 0x1820(%rsp), %rdi
callq 0x979a
jmp 0x170e6
movq %rax, %rbx
leaq 0x1878(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x9d8(%rsp), %rdi
callq 0x51b0
jmp 0x17108
movq %rax, %rbx
leaq 0x570(%rsp), %rdi
callq 0x51b0
jmp 0x1711a
movq %rax, %rbx
leaq 0x18d0(%rsp), %rdi
callq 0x979a
jmp 0x1712c
movq %rax, %rbx
leaq 0x1928(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0xa68(%rsp), %rdi
callq 0x51b0
jmp 0x1714e
movq %rax, %rbx
leaq 0x5d0(%rsp), %rdi
callq 0x51b0
jmp 0x17160
movq %rax, %rbx
leaq 0x1ae0(%rsp), %rdi
callq 0x979a
jmp 0x17172
movq %rax, %rbx
leaq 0x1b38(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0xa98(%rsp), %rdi
callq 0x51b0
jmp 0x17194
movq %rax, %rbx
leaq 0x5f0(%rsp), %rdi
callq 0x51b0
jmp 0x171a6
movq %rax, %rbx
leaq 0x1b90(%rsp), %rdi
callq 0x979a
jmp 0x171b8
movq %rax, %rbx
leaq 0x1be8(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0xac8(%rsp), %rdi
callq 0x51b0
jmp 0x171da
movq %rax, %rbx
leaq 0x610(%rsp), %rdi
callq 0x51b0
jmp 0x171ec
movq %rax, %rbx
leaq 0x1c40(%rsp), %rdi
callq 0x979a
jmp 0x171fe
movq %rax, %rbx
leaq 0x1c98(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0xaf8(%rsp), %rdi
callq 0x51b0
jmp 0x17220
movq %rax, %rbx
leaq 0x630(%rsp), %rdi
callq 0x51b0
jmp 0x17232
movq %rax, %rbx
leaq 0x1cf0(%rsp), %rdi
callq 0x979a
jmp 0x17244
movq %rax, %rbx
leaq 0x1d48(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0xb28(%rsp), %rdi
callq 0x51b0
jmp 0x17266
movq %rax, %rbx
leaq 0x650(%rsp), %rdi
callq 0x51b0
jmp 0x17278
movq %rax, %rbx
leaq 0x1da0(%rsp), %rdi
callq 0x979a
jmp 0x1728a
movq %rax, %rbx
leaq 0x1df8(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0xb58(%rsp), %rdi
callq 0x51b0
jmp 0x172ac
movq %rax, %rbx
leaq 0x670(%rsp), %rdi
callq 0x51b0
jmp 0x172be
movq %rax, %rbx
leaq 0x1e50(%rsp), %rdi
callq 0x979a
jmp 0x172d0
movq %rax, %rbx
leaq 0x1ea8(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
callq 0x51b0
jmp 0x172f2
movq %rax, %rbx
leaq 0x410(%rsp), %rdi
jmp 0x1761a
jmp 0x175cd
jmp 0x175cd
movq %rax, %rbx
leaq 0x738(%rsp), %rdi
callq 0x51b0
jmp 0x1731e
movq %rax, %rbx
leaq 0x390(%rsp), %rdi
callq 0x51b0
jmp 0x17330
movq %rax, %rbx
leaq 0xdd0(%rsp), %rdi
callq 0x979a
jmp 0x17342
movq %rax, %rbx
leaq 0xe28(%rsp), %rdi
jmp 0x1739f
movq %rax, %rbx
leaq 0x7c8(%rsp), %rdi
callq 0x51b0
jmp 0x17361
movq %rax, %rbx
leaq 0x3f0(%rsp), %rdi
callq 0x51b0
jmp 0x17373
movq %rax, %rbx
leaq 0xfe0(%rsp), %rdi
callq 0x979a
jmp 0x17397
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
callq 0x51b0
jmp 0x173ac
movq %rax, %rbx
leaq 0x1038(%rsp), %rdi
callq 0x979a
jmp 0x1761f
movq %rax, %rbx
leaq 0x330(%rsp), %rdi
jmp 0x1761a
jmp 0x175cd
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x51b0
jmp 0x173d0
movq %rax, %rbx
leaq 0x2d0(%rsp), %rdi
jmp 0x175ec
jmp 0x1750c
jmp 0x17438
movq %rax, %rbx
leaq 0x2060(%rsp), %rdi
callq 0x979a
jmp 0x173f9
movq %rax, %rbx
leaq 0x20b8(%rsp), %rdi
jmp 0x1745d
jmp 0x17478
jmp 0x17478
movq %rax, %rbx
leaq 0x2110(%rsp), %rdi
callq 0x979a
jmp 0x1741c
movq %rax, %rbx
leaq 0x2168(%rsp), %rdi
jmp 0x174af
jmp 0x174c8
jmp 0x174e0
jmp 0x1750c
movq %rax, %rbx
jmp 0x1762c
movq %rax, %rbx
leaq 0x1090(%rsp), %rdi
callq 0x979a
jmp 0x17455
movq %rax, %rbx
leaq 0x10e8(%rsp), %rdi
callq 0x979a
jmp 0x17639
jmp 0x17478
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x51b0
jmp 0x17483
movq %rax, %rbx
jmp 0x17639
movq %rax, %rbx
leaq 0x2f0(%rsp), %rdi
jmp 0x175ec
movq %rax, %rbx
leaq 0x1140(%rsp), %rdi
callq 0x979a
jmp 0x174a7
jmp 0x1750c
movq %rax, %rbx
leaq 0x1198(%rsp), %rdi
callq 0x979a
jmp 0x17646
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x51b0
jmp 0x174d3
movq %rax, %rbx
jmp 0x17646
movq %rax, %rbx
leaq 0x310(%rsp), %rdi
jmp 0x175ec
movq %rax, %rbx
jmp 0x17653
jmp 0x1750c
jmp 0x1750c
jmp 0x1750c
jmp 0x175cd
movq %rax, %rbx
jmp 0x1766a
jmp 0x175cd
jmp 0x1750c
jmp 0x175cd
jmp 0x175cd
movq %rax, %rbx
jmp 0x1765d
movq %rax, %rbx
jmp 0x17531
movq %rax, %rbx
jmp 0x175e4
movq %rax, %rbx
leaq 0xbe8(%rsp), %rdi
callq 0x51b0
leaq 0x2270(%rsp), %rdi
jmp 0x175df
movq %rax, %rbx
jmp 0x17553
movq %rax, %rbx
leaq 0xc48(%rsp), %rdi
callq 0x51b0
leaq 0x23d0(%rsp), %rdi
jmp 0x1760d
jmp 0x175a4
movq %rax, %rbx
jmp 0x17577
movq %rax, %rbx
leaq 0x2378(%rsp), %rdi
callq 0x979a
leaq 0x2218(%rsp), %rdi
jmp 0x175c6
jmp 0x175cd
jmp 0x175d2
movq %rax, %rbx
jmp 0x1759a
movq %rax, %rbx
leaq 0xc18(%rsp), %rdi
callq 0x51b0
leaq 0x21c0(%rsp), %rdi
jmp 0x1760d
movq %rax, %rbx
jmp 0x17605
movq %rax, %rbx
jmp 0x175be
movq %rax, %rbx
leaq 0x22c8(%rsp), %rdi
callq 0x979a
leaq 0x2320(%rsp), %rdi
callq 0x979a
jmp 0x17605
movq %rax, %rbx
jmp 0x1761f
movq %rax, %rbx
jmp 0x17612
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x979a
leaq 0x220(%rsp), %rdi
callq 0x51b0
jmp 0x1765d
jmp 0x175f5
movq %rax, %rbx
leaq 0x278(%rsp), %rdi
callq 0x51b0
leaq 0xc0(%rsp), %rdi
callq 0x979a
leaq 0x1c0(%rsp), %rdi
callq 0x51b0
leaq 0x178(%rsp), %rdi
callq 0x51b0
leaq 0x1f0(%rsp), %rdi
callq 0x51b0
leaq 0x2a8(%rsp), %rdi
callq 0x51b0
leaq 0x218(%rsp), %rdi
callq 0x979a
leaq 0x68(%rsp), %rdi
callq 0x979a
leaq 0x120(%rsp), %rdi
callq 0x979a
leaq 0x20(%rsp), %rdi
callq 0x98a8
movq %rbx, %rdi
callq 0x55d0