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

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

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

  vector<Interval> possible_intervals;

  Note note = song->notes[position];

  if((position || compass_position) && (position < song->size_without_rest() - 1)){
    auto previous_note = song->notes[position - 1 + (compass_position != 0)];
    auto previous_counterpoint_note = counterpoint.notes.back();
    auto melodic_cantus_interval = Interval(previous_note, note);
    bool melodic_ascendant = !melodic_cantus_interval.ascendant(); // XOR with true
    auto previous_interval = Interval(previous_note, previous_counterpoint_note);
    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 / 4) * 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 /= 4;
      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 == 3), (compass_position + 1)%4, 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)); //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, 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 /= 4;
      counterpoint.notes.push_back(c_note);
      if(solve(position + (compass_position == 3), (compass_position + 1)%4, 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 $0x2418, %rsp           # imm = 0x2418
movq %r9, 0x18(%rsp)
movl %r8d, %r14d
movl %ecx, 0x50(%rsp)
movl %edx, 0x4c(%rsp)
movl %edi, %r15d
movl %esi, 0x40(%rsp)
movl %esi, %ebp
negl %ebp
cmpl %edi, %ebp
jne 0x253d6
leaq 0x153f3(%rip), %rdi     # 0x3a7b0
pushq $0x1
popq %rsi
movl $0x9bc8cf8, %edx        # imm = 0x9BC8CF8
callq 0x5220
callq 0x5270
movl %eax, %edi
callq 0x5330
leaq 0x9bde0cb(%rip), %rax   # 0x9c034a8
movq (%rax), %rdi
callq 0x17cf4
movb $0x1, %bl
cmpl %r15d, %eax
jbe 0x2751b
movl %r14d, 0x54(%rsp)
movl %r15d, %ebx
movl 0x40(%rsp), %r13d
movq %r15, %rax
movslq 0x4c(%rsp), %r12
movslq 0x50(%rsp), %r15
movq %rax, %r14
cmpl %eax, %ebp
je 0x2546c
leaq 0x110(%rsp), %rbp
movq %rbp, %rdi
movq 0x18(%rsp), %rsi
callq 0x17d60
imulq $0x1081c8, %rbx, %rax   # imm = 0x1081C8
addq 0x14b44(%rip), %rax     # 0x39f78
movslq 0x4c(%rbp), %rcx
movq %rbp, %rdi
imulq $0x42072, %r13, %rdx    # imm = 0x42072
addq %rax, %rdx
imulq $0xbbd, %rcx, %rax      # imm = 0xBBD
addq %rdx, %rax
imulq $0x259, %r12, %rcx      # imm = 0x259
addq %rax, %rcx
movb (%r15,%rcx), %bpl
callq 0x979a
cmpb $0x1, %bpl
jne 0x25a63
movq %r13, 0x190(%rsp)
movq %r12, 0x198(%rsp)
movq %r15, 0x1a0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
andq $0x0, 0x30(%rsp)
leaq 0x9bde00f(%rip), %r12   # 0x9c034a8
movq (%r12), %rax
movq %rbx, 0x188(%rsp)
imulq $0x58, %rbx, %rsi
addq (%rax), %rsi
leaq 0x110(%rsp), %rdi
callq 0x12676
movl 0x40(%rsp), %eax
movq %r14, %r15
orl %r15d, %eax
movl 0x54(%rsp), %r14d
movzbl %r14b, %eax
movl %eax, 0x14(%rsp)
pushq $0x30
popq %rbx
je 0x2568c
movq (%r12), %rdi
callq 0x17cf4
decl %eax
cmpl %r15d, %eax
jbe 0x2568c
movq (%r12), %rax
cmpl $0x1, 0x40(%rsp)
movl %r15d, %ecx
sbbl $-0x1, %ecx
decl %ecx
imulq $0x58, %rcx, %rsi
addq (%rax), %rsi
leaq 0x60(%rsp), %rdi
callq 0x12676
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rsi
addq $-0x58, %rsi
leaq 0x208(%rsp), %rdi
callq 0x12676
leaq 0x2158(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x2100(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x290(%rsp), %rdi
leaq 0x2158(%rsp), %rsi
leaq 0x2100(%rsp), %rdx
callq 0xf41a
leaq 0x2100(%rsp), %rdi
callq 0x979a
leaq 0x2158(%rsp), %rdi
callq 0x979a
leaq 0x290(%rsp), %rdi
callq 0xf856
movl %eax, %ebp
leaq 0x20a8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x2050(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x12676
leaq 0x1d8(%rsp), %rdi
leaq 0x20a8(%rsp), %rsi
leaq 0x2050(%rsp), %rdx
callq 0xf41a
leaq 0x2050(%rsp), %rdi
callq 0x979a
leaq 0x20a8(%rsp), %rdi
callq 0x979a
leaq 0x168(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0xf548
leaq 0x110(%rsp), %rdi
callq 0x1302a
movl %ebp, %ecx
xorb $0x1, %cl
movb %cl, 0x48(%rsp)
testb %al, %al
je 0x261d4
leaq 0x39f2(%rip), %rsi      # 0x29020
leaq 0x400(%rsp), %rdi
leaq 0x1a8(%rsp), %rdx
callq 0x96e6
leaq 0xb8(%rsp), %rdi
leaq 0x400(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
leaq 0x20(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0xc54a
leaq 0xc0(%rsp), %rdi
callq 0x51b0
leaq 0x400(%rsp), %rdi
callq 0x51b0
jmp 0x27268
movq (%r12), %rdi
callq 0x17cf4
decl %eax
cmpl %r15d, %eax
jne 0x25838
movq (%r12), %rax
leal -0x1(%r15), %ecx
imulq $0x58, %rcx, %rsi
addq (%rax), %rsi
leaq 0x60(%rsp), %rdi
callq 0x12676
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rsi
addq $-0x58, %rsi
leaq 0x208(%rsp), %rdi
callq 0x12676
leaq 0x1188(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1130(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x290(%rsp), %rdi
leaq 0x1188(%rsp), %rsi
leaq 0x1130(%rsp), %rdx
callq 0xf41a
leaq 0x1130(%rsp), %rdi
callq 0x979a
leaq 0x1188(%rsp), %rdi
callq 0x979a
leaq 0x290(%rsp), %rdi
callq 0xf856
movl %eax, %r13d
leaq 0x10d8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1080(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x12676
leaq 0x1d8(%rsp), %rdi
leaq 0x10d8(%rsp), %rsi
leaq 0x1080(%rsp), %rdx
callq 0xf41a
leaq 0x1080(%rsp), %rdi
callq 0x979a
leaq 0x10d8(%rsp), %rdi
callq 0x979a
leaq 0x168(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0xf548
leaq 0x110(%rsp), %rdi
callq 0x1302a
movl %r13d, %ecx
xorb $0x1, %cl
movb %cl, 0x58(%rsp)
testb %al, %al
je 0x25a6a
leaq 0x3846(%rip), %rsi      # 0x29020
leaq 0x320(%rsp), %rdi
leaq 0x1a8(%rsp), %rdx
callq 0x96e6
leaq 0xb8(%rsp), %rdi
leaq 0x320(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
leaq 0x20(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0xc54a
leaq 0xc0(%rsp), %rdi
callq 0x51b0
leaq 0x320(%rsp), %rdi
callq 0x51b0
jmp 0x25f9b
leaq 0x37e1(%rip), %rsi      # 0x29020
leaq 0x300(%rsp), %rdi
leaq 0x208(%rsp), %rdx
callq 0x96e6
leaq 0x60(%rsp), %rdi
leaq 0x300(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xc54a
leaq 0x68(%rsp), %rdi
callq 0x51b0
leaq 0x300(%rsp), %rdi
callq 0x51b0
leaq 0x378c(%rip), %rsi      # 0x29023
leaq 0x2e0(%rsp), %rdi
leaq 0x208(%rsp), %rdx
callq 0x96e6
leaq 0x60(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xc54a
leaq 0x68(%rsp), %rdi
callq 0x51b0
leaq 0x2e0(%rsp), %rdi
callq 0x51b0
testb %r14b, %r14b
je 0x25944
leaq 0x3732(%rip), %rsi      # 0x29026
leaq 0x2c0(%rsp), %rdi
leaq 0x208(%rsp), %rdx
callq 0x96e6
leaq 0x60(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xc54a
leaq 0x68(%rsp), %rdi
callq 0x51b0
leaq 0x2c0(%rsp), %rdi
callq 0x51b0
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xc3c6
movq 0x20(%rsp), %rbx
movq 0x28(%rsp), %rax
movq %rax, 0x58(%rsp)
xorl %ecx, %ecx
movl 0x40(%rsp), %eax
cmpl $0x3, %eax
sete %cl
addl %r15d, %ecx
movl %ecx, 0x48(%rsp)
incl %eax
andl $0x3, %eax
movl %eax, 0x40(%rsp)
leaq 0x208(%rsp), %r12
leaq 0x2260(%rsp), %r13
leaq 0xc00(%rsp), %rbp
leaq 0x60(%rsp), %r14
cmpq 0x58(%rsp), %rbx
je 0x2749e
movq %r12, %rdi
movq %rbx, %rsi
callq 0x97b4
movq %r13, %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
movq %rbp, %rdi
movq %r12, %rsi
callq 0x97b4
movq %rbp, %rdx
movq %r12, %r15
movq %r14, %rdi
movq %r13, %rsi
movq %rdx, %rbp
callq 0xf750
leaq 0xc08(%rsp), %rdi
callq 0x51b0
movq %r13, %rdi
callq 0x979a
movl 0x60(%rsp), %eax
cltd
pushq $0x4
popq %rcx
idivl %ecx
movl %eax, 0x60(%rsp)
movq 0x18(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x986e
movl 0x48(%rsp), %edi
movl 0x40(%rsp), %esi
movl 0x4c(%rsp), %edx
movl 0x50(%rsp), %ecx
movl 0x14(%rsp), %r8d
movq %r12, %r9
callq 0x25386
testb %al, %al
jne 0x261b6
movq %r15, %r12
movq 0x18(%rsp), %rdi
callq 0xc42c
movq %r14, %rdi
callq 0x979a
leaq 0x210(%rsp), %rdi
callq 0x51b0
addq $0x30, %rbx
jmp 0x2599b
xorl %ebx, %ebx
jmp 0x2751b
leaq 0x1028(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0xfd0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x3588(%rip), %rsi      # 0x29020
leaq 0x3e0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x7b0(%rsp), %rdi
leaq 0x3e0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movzbl 0x58(%rsp), %ebp
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1028(%rsp), %rcx
leaq 0xfd0(%rsp), %r8
leaq 0x7b0(%rsp), %r9
movl %ebp, %esi
callq 0x27faa
leaq 0x7b8(%rsp), %rdi
callq 0x51b0
leaq 0x3e0(%rsp), %rdi
callq 0x51b0
leaq 0xfd0(%rsp), %rdi
callq 0x979a
leaq 0x1028(%rsp), %rdi
callq 0x979a
leaq 0x34ed(%rip), %rsi      # 0x29023
leaq 0x168(%rsp), %rdi
callq 0x982d
testb %al, %al
je 0x25c0b
leaq 0xf78(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0xf20(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x34aa(%rip), %rsi      # 0x29023
leaq 0x3c0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x780(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0xf78(%rsp), %rcx
leaq 0xf20(%rsp), %r8
leaq 0x780(%rsp), %r9
movl %ebp, %esi
callq 0x27faa
leaq 0x788(%rsp), %rdi
callq 0x51b0
leaq 0x3c0(%rsp), %rdi
callq 0x51b0
leaq 0xf20(%rsp), %rdi
callq 0x979a
leaq 0xf78(%rsp), %rdi
callq 0x979a
leaq 0x3414(%rip), %rsi      # 0x29026
leaq 0x168(%rsp), %rdi
callq 0x982d
andb %r14b, %al
cmpb $0x1, %al
jne 0x25ce9
leaq 0xec8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0xe70(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x33ce(%rip), %rsi      # 0x29026
leaq 0x3a0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x750(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0xec8(%rsp), %rcx
leaq 0xe70(%rsp), %r8
leaq 0x750(%rsp), %r9
movl %ebp, %esi
callq 0x27faa
leaq 0x758(%rsp), %rdi
callq 0x51b0
leaq 0x3a0(%rsp), %rdi
callq 0x51b0
leaq 0xe70(%rsp), %rdi
callq 0x979a
leaq 0xec8(%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 0xe18(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0xdc0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x32e8(%rip), %rsi      # 0x29020
leaq 0x380(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x720(%rsp), %rdi
leaq 0x380(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movzbl %r13b, %ebx
leaq 0x20(%rsp), %rdx
leaq 0xe18(%rsp), %rcx
leaq 0xdc0(%rsp), %r8
leaq 0x720(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x728(%rsp), %rdi
callq 0x51b0
leaq 0x380(%rsp), %rdi
callq 0x51b0
leaq 0xdc0(%rsp), %rdi
callq 0x979a
leaq 0xe18(%rsp), %rdi
callq 0x979a
leaq 0x324f(%rip), %rsi      # 0x29023
leaq 0x168(%rsp), %rdi
callq 0x982d
testb %al, %al
je 0x25ea8
leaq 0xd68(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0xd10(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x320c(%rip), %rsi      # 0x29023
leaq 0x360(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x6f0(%rsp), %rdi
leaq 0x360(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0xd68(%rsp), %rcx
leaq 0xd10(%rsp), %r8
leaq 0x6f0(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x6f8(%rsp), %rdi
callq 0x51b0
leaq 0x360(%rsp), %rdi
callq 0x51b0
leaq 0xd10(%rsp), %rdi
callq 0x979a
leaq 0xd68(%rsp), %rdi
callq 0x979a
leaq 0x3177(%rip), %rsi      # 0x29026
leaq 0x168(%rsp), %rdi
callq 0x982d
andb %r14b, %al
cmpb $0x1, %al
jne 0x25f85
leaq 0xcb8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0xc60(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x3131(%rip), %rsi      # 0x29026
leaq 0x340(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x6c0(%rsp), %rdi
leaq 0x340(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0xcb8(%rsp), %rcx
leaq 0xc60(%rsp), %r8
leaq 0x6c0(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x6c8(%rsp), %rdi
callq 0x51b0
leaq 0x340(%rsp), %rdi
callq 0x51b0
leaq 0xc60(%rsp), %rdi
callq 0x979a
leaq 0xcb8(%rsp), %rdi
callq 0x979a
movslq %r12d, %rax
imulq $0x30, %rax, %rdi
addq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xc3c6
movq 0x20(%rsp), %rbp
movq 0x28(%rsp), %rax
movq %rax, 0x40(%rsp)
incl %r15d
leaq 0x1a8(%rsp), %rbx
leaq 0x21b0(%rsp), %r14
leaq 0x110(%rsp), %r12
leaq 0xc30(%rsp), %r13
cmpq 0x40(%rsp), %rbp
je 0x26163
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x97b4
movq %r14, %rdi
movq %r12, %rsi
callq 0x12676
movq %r13, %rdi
movq %rbx, %rsi
callq 0x97b4
leaq 0xb8(%rsp), %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0xf750
leaq 0xc38(%rsp), %rdi
callq 0x51b0
movq %r14, %rdi
callq 0x979a
leaq 0x2310(%rsp), %rbx
movq %rbx, %rdi
leaq 0x208(%rsp), %rsi
callq 0x12676
leaq 0x22b8(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x12676
leaq 0x260(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0xf41a
movq %r14, %rdi
callq 0x979a
movq %rbx, %rdi
callq 0x979a
movl 0x1a8(%rsp), %eax
xorl %r14d, %r14d
cmpl 0x1d8(%rsp), %eax
jne 0x2609d
pushq $-0x1
popq %r14
cmpl $0x3, %eax
je 0x2609d
cmpl $0x6, %eax
je 0x2609d
xorl %r14d, %r14d
cmpl $0xa, %eax
sete %r14b
negl %r14d
movq %r15, %rbx
leaq 0x260(%rsp), %rdi
callq 0xf856
addl 0x4c(%rsp), %r14d
xorb 0x58(%rsp), %al
movzbl %al, %eax
movl 0x50(%rsp), %r15d
subl %eax, %r15d
movl %r15d, %eax
orl %r14d, %eax
pushq $0x5
popq %r12
js 0x2610d
movq 0x18(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x986e
movl %ebx, %edi
xorl %esi, %esi
movl %r14d, %edx
movl %r15d, %ecx
movl 0x14(%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0x25386
pushq $0x1
popq %r12
testb %al, %al
jne 0x2610d
movq 0x18(%rsp), %rdi
callq 0xc42c
xorl %r12d, %r12d
leaq 0x268(%rsp), %rdi
callq 0x51b0
leaq 0xb8(%rsp), %rdi
callq 0x979a
leaq 0x1b0(%rsp), %rdi
callq 0x51b0
cmpl $0x5, %r12d
je 0x2613f
testl %r12d, %r12d
jne 0x26167
addq $0x30, %rbp
movq %rbx, %r15
leaq 0x1a8(%rsp), %rbx
leaq 0x21b0(%rsp), %r14
leaq 0x110(%rsp), %r12
jmp 0x25fcd
pushq $0x4
popq %r12
leaq 0x168(%rsp), %rdi
callq 0x51b0
leaq 0x1e0(%rsp), %rdi
callq 0x51b0
leaq 0x298(%rsp), %rdi
callq 0x51b0
leaq 0x208(%rsp), %rdi
callq 0x979a
leaq 0x60(%rsp), %rdi
callq 0x979a
movb $0x1, %bl
testb $0x3, %r12b
jne 0x27504
jmp 0x2749e
leaq 0x60(%rsp), %rdi
callq 0x979a
leaq 0x210(%rsp), %rdi
callq 0x51b0
movb $0x1, %bl
jmp 0x27504
leaq 0x2e48(%rip), %rsi      # 0x29023
leaq 0x168(%rsp), %rdi
callq 0x982d
movzbl 0x48(%rsp), %r12d
testb %al, %al
je 0x262b7
leaq 0x1ff8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1fa0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2dff(%rip), %rsi      # 0x29023
leaq 0x6a0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0xbd0(%rsp), %rdi
leaq 0x6a0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1ff8(%rsp), %rcx
leaq 0x1fa0(%rsp), %r8
leaq 0xbd0(%rsp), %r9
movl %r12d, %esi
callq 0x27faa
leaq 0xbd8(%rsp), %rdi
callq 0x51b0
leaq 0x6a0(%rsp), %rdi
callq 0x51b0
leaq 0x1fa0(%rsp), %rdi
callq 0x979a
leaq 0x1ff8(%rsp), %rdi
callq 0x979a
leaq 0x2d68(%rip), %rsi      # 0x29026
leaq 0x168(%rsp), %rdi
callq 0x982d
andb %r14b, %al
cmpb $0x1, %al
jne 0x26396
leaq 0x1f48(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1ef0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2d22(%rip), %rsi      # 0x29026
leaq 0x680(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0xba0(%rsp), %rdi
leaq 0x680(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1f48(%rsp), %rcx
leaq 0x1ef0(%rsp), %r8
leaq 0xba0(%rsp), %r9
movl %r12d, %esi
callq 0x27faa
leaq 0xba8(%rsp), %rdi
callq 0x51b0
leaq 0x680(%rsp), %rdi
callq 0x51b0
leaq 0x1ef0(%rsp), %rdi
callq 0x979a
leaq 0x1f48(%rsp), %rdi
callq 0x979a
leaq 0x1e98(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1e40(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2c65(%rip), %rsi      # 0x29029
leaq 0x660(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0xb70(%rsp), %rdi
leaq 0x660(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1e98(%rsp), %rcx
leaq 0x1e40(%rsp), %r8
leaq 0xb70(%rsp), %r9
movl %r12d, %esi
callq 0x27faa
leaq 0xb78(%rsp), %rdi
callq 0x51b0
leaq 0x660(%rsp), %rdi
callq 0x51b0
leaq 0x1e40(%rsp), %rdi
callq 0x979a
leaq 0x1e98(%rsp), %rdi
callq 0x979a
leaq 0x1de8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1d90(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2ba7(%rip), %rsi      # 0x2902c
leaq 0x640(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0xb40(%rsp), %rdi
leaq 0x640(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1de8(%rsp), %rcx
leaq 0x1d90(%rsp), %r8
leaq 0xb40(%rsp), %r9
movl %r12d, %esi
callq 0x27faa
leaq 0xb48(%rsp), %rdi
callq 0x51b0
leaq 0x640(%rsp), %rdi
callq 0x51b0
leaq 0x1d90(%rsp), %rdi
callq 0x979a
leaq 0x1de8(%rsp), %rdi
callq 0x979a
leaq 0x1d38(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1ce0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2ae9(%rip), %rsi      # 0x2902f
leaq 0x620(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0xb10(%rsp), %rdi
leaq 0x620(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1d38(%rsp), %rcx
leaq 0x1ce0(%rsp), %r8
leaq 0xb10(%rsp), %r9
movl %r12d, %esi
callq 0x27faa
leaq 0xb18(%rsp), %rdi
callq 0x51b0
leaq 0x620(%rsp), %rdi
callq 0x51b0
leaq 0x1ce0(%rsp), %rdi
callq 0x979a
leaq 0x1d38(%rsp), %rdi
callq 0x979a
leaq 0x1c88(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1c30(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2a2b(%rip), %rsi      # 0x29032
leaq 0x600(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0xae0(%rsp), %rdi
leaq 0x600(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1c88(%rsp), %rcx
leaq 0x1c30(%rsp), %r8
leaq 0xae0(%rsp), %r9
movl %r12d, %esi
callq 0x27faa
leaq 0xae8(%rsp), %rdi
callq 0x51b0
leaq 0x600(%rsp), %rdi
callq 0x51b0
leaq 0x1c30(%rsp), %rdi
callq 0x979a
leaq 0x1c88(%rsp), %rdi
callq 0x979a
leaq 0x1bd8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1b80(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x296d(%rip), %rsi      # 0x29035
leaq 0x5e0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0xab0(%rsp), %rdi
leaq 0x5e0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1bd8(%rsp), %rcx
leaq 0x1b80(%rsp), %r8
leaq 0xab0(%rsp), %r9
movl %r12d, %esi
callq 0x27faa
leaq 0xab8(%rsp), %rdi
callq 0x51b0
leaq 0x5e0(%rsp), %rdi
callq 0x51b0
leaq 0x1b80(%rsp), %rdi
callq 0x979a
leaq 0x1bd8(%rsp), %rdi
callq 0x979a
leaq 0x1b28(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1ad0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x28b0(%rip), %rsi      # 0x29039
leaq 0x5c0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0xa80(%rsp), %rdi
leaq 0x5c0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
pushq $0x1
popq %rdi
leaq 0x20(%rsp), %rdx
leaq 0x1b28(%rsp), %rcx
leaq 0x1ad0(%rsp), %r8
leaq 0xa80(%rsp), %r9
movl %r12d, %esi
callq 0x27faa
leaq 0xa88(%rsp), %rdi
callq 0x51b0
leaq 0x5c0(%rsp), %rdi
callq 0x51b0
leaq 0x1ad0(%rsp), %rdi
callq 0x979a
leaq 0x1b28(%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 0x27df(%rip), %rsi      # 0x29023
leaq 0x168(%rsp), %rdi
callq 0x982d
movzbl %bpl, %ebx
testb %al, %al
je 0x2691c
leaq 0x1a78(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1a20(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2798(%rip), %rsi      # 0x29023
leaq 0x5a0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0xa50(%rsp), %rdi
leaq 0x5a0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1a78(%rsp), %rcx
leaq 0x1a20(%rsp), %r8
leaq 0xa50(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0xa58(%rsp), %rdi
callq 0x51b0
leaq 0x5a0(%rsp), %rdi
callq 0x51b0
leaq 0x1a20(%rsp), %rdi
callq 0x979a
leaq 0x1a78(%rsp), %rdi
callq 0x979a
leaq 0x2703(%rip), %rsi      # 0x29026
leaq 0x168(%rsp), %rdi
callq 0x982d
andb %r14b, %al
cmpb $0x1, %al
jne 0x269f9
leaq 0x19c8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1970(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x26bd(%rip), %rsi      # 0x29026
leaq 0x580(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0xa20(%rsp), %rdi
leaq 0x580(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x19c8(%rsp), %rcx
leaq 0x1970(%rsp), %r8
leaq 0xa20(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0xa28(%rsp), %rdi
callq 0x51b0
leaq 0x580(%rsp), %rdi
callq 0x51b0
leaq 0x1970(%rsp), %rdi
callq 0x979a
leaq 0x19c8(%rsp), %rdi
callq 0x979a
leaq 0x1918(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x18c0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2602(%rip), %rsi      # 0x29029
leaq 0x560(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x9f0(%rsp), %rdi
leaq 0x560(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1918(%rsp), %rcx
leaq 0x18c0(%rsp), %r8
leaq 0x9f0(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x9f8(%rsp), %rdi
callq 0x51b0
leaq 0x560(%rsp), %rdi
callq 0x51b0
leaq 0x18c0(%rsp), %rdi
callq 0x979a
leaq 0x1918(%rsp), %rdi
callq 0x979a
leaq 0x1868(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1810(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2546(%rip), %rsi      # 0x2902c
leaq 0x540(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x9c0(%rsp), %rdi
leaq 0x540(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1868(%rsp), %rcx
leaq 0x1810(%rsp), %r8
leaq 0x9c0(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x9c8(%rsp), %rdi
callq 0x51b0
leaq 0x540(%rsp), %rdi
callq 0x51b0
leaq 0x1810(%rsp), %rdi
callq 0x979a
leaq 0x1868(%rsp), %rdi
callq 0x979a
leaq 0x17b8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1760(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x248a(%rip), %rsi      # 0x2902f
leaq 0x520(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x990(%rsp), %rdi
leaq 0x520(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x17b8(%rsp), %rcx
leaq 0x1760(%rsp), %r8
leaq 0x990(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x998(%rsp), %rdi
callq 0x51b0
leaq 0x520(%rsp), %rdi
callq 0x51b0
leaq 0x1760(%rsp), %rdi
callq 0x979a
leaq 0x17b8(%rsp), %rdi
callq 0x979a
leaq 0x1708(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x16b0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x23ce(%rip), %rsi      # 0x29032
leaq 0x500(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x960(%rsp), %rdi
leaq 0x500(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1708(%rsp), %rcx
leaq 0x16b0(%rsp), %r8
leaq 0x960(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x968(%rsp), %rdi
callq 0x51b0
leaq 0x500(%rsp), %rdi
callq 0x51b0
leaq 0x16b0(%rsp), %rdi
callq 0x979a
leaq 0x1708(%rsp), %rdi
callq 0x979a
leaq 0x1658(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1600(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2312(%rip), %rsi      # 0x29035
leaq 0x4e0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x930(%rsp), %rdi
leaq 0x4e0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1658(%rsp), %rcx
leaq 0x1600(%rsp), %r8
leaq 0x930(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x938(%rsp), %rdi
callq 0x51b0
leaq 0x4e0(%rsp), %rdi
callq 0x51b0
leaq 0x1600(%rsp), %rdi
callq 0x979a
leaq 0x1658(%rsp), %rdi
callq 0x979a
leaq 0x15a8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1550(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2257(%rip), %rsi      # 0x29039
leaq 0x4c0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x900(%rsp), %rdi
leaq 0x4c0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x15a8(%rsp), %rcx
leaq 0x1550(%rsp), %r8
leaq 0x900(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x908(%rsp), %rdi
callq 0x51b0
leaq 0x4c0(%rsp), %rdi
callq 0x51b0
leaq 0x1550(%rsp), %rdi
callq 0x979a
leaq 0x15a8(%rsp), %rdi
callq 0x979a
movslq %r12d, %rax
imulq $0x30, %rax, %rdi
addq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xc3c6
leaq 0x110(%rsp), %rdi
movl (%rdi), %eax
cltd
pushq $0x4
popq %rcx
idivl %ecx
imull 0x40(%rsp), %eax
movl %eax, %esi
callq 0x9634
testb %al, %al
jne 0x27268
leaq 0x14f8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x14a0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x21dd(%rip), %rsi      # 0x290b8
leaq 0x4a0(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x8d0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x14f8(%rsp), %rcx
leaq 0x14a0(%rsp), %r8
leaq 0x8d0(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x8d8(%rsp), %rdi
callq 0x51b0
leaq 0x4a0(%rsp), %rdi
callq 0x51b0
leaq 0x14a0(%rsp), %rdi
callq 0x979a
leaq 0x14f8(%rsp), %rdi
callq 0x979a
leaq 0x1448(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x13f0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x2118(%rip), %rsi      # 0x290b2
leaq 0x480(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x8a0(%rsp), %rdi
leaq 0x480(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1448(%rsp), %rcx
leaq 0x13f0(%rsp), %r8
leaq 0x8a0(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x8a8(%rsp), %rdi
callq 0x51b0
leaq 0x480(%rsp), %rdi
callq 0x51b0
leaq 0x13f0(%rsp), %rdi
callq 0x979a
leaq 0x1448(%rsp), %rdi
callq 0x979a
leaq 0x1398(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1340(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x205c(%rip), %rsi      # 0x290b5
leaq 0x460(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x870(%rsp), %rdi
leaq 0x460(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1398(%rsp), %rcx
leaq 0x1340(%rsp), %r8
leaq 0x870(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x878(%rsp), %rdi
callq 0x51b0
leaq 0x460(%rsp), %rdi
callq 0x51b0
leaq 0x1340(%rsp), %rdi
callq 0x979a
leaq 0x1398(%rsp), %rdi
callq 0x979a
leaq 0x12e8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x1290(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x1fa3(%rip), %rsi      # 0x290bb
leaq 0x440(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x840(%rsp), %rdi
leaq 0x440(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x12e8(%rsp), %rcx
leaq 0x1290(%rsp), %r8
leaq 0x840(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x848(%rsp), %rdi
callq 0x51b0
leaq 0x440(%rsp), %rdi
callq 0x51b0
leaq 0x1290(%rsp), %rdi
callq 0x979a
leaq 0x12e8(%rsp), %rdi
callq 0x979a
leaq 0x1238(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x12676
leaq 0x11e0(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x12676
leaq 0x1ee7(%rip), %rsi      # 0x290be
leaq 0x420(%rsp), %rdi
leaq 0xb8(%rsp), %rdx
callq 0x96e6
leaq 0x810(%rsp), %rdi
leaq 0x420(%rsp), %rsi
movl 0x14(%rsp), %edx
callq 0xf280
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1238(%rsp), %rcx
leaq 0x11e0(%rsp), %r8
leaq 0x810(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x27faa
leaq 0x818(%rsp), %rdi
callq 0x51b0
leaq 0x420(%rsp), %rdi
callq 0x51b0
leaq 0x11e0(%rsp), %rdi
callq 0x979a
leaq 0x1238(%rsp), %rdi
callq 0x979a
movq 0x20(%rsp), %rbp
movq 0x28(%rsp), %rax
movq %rax, 0x58(%rsp)
xorl %ecx, %ecx
movl 0x40(%rsp), %eax
cmpl $0x3, %eax
sete %cl
addl %r15d, %ecx
movl %ecx, 0x54(%rsp)
incl %eax
andl $0x3, %eax
movl %eax, 0x40(%rsp)
leaq 0x1a8(%rsp), %r14
leaq 0x23c0(%rsp), %rbx
leaq 0x110(%rsp), %r15
leaq 0x7e0(%rsp), %r12
cmpq 0x58(%rsp), %rbp
je 0x27454
movq %r14, %rdi
movq %rbp, %rsi
callq 0x97b4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x12676
movq %r12, %rdi
movq %r14, %rsi
callq 0x97b4
leaq 0xb8(%rsp), %rdi
movq %rbx, %rsi
movq %r12, %rdx
callq 0xf750
leaq 0x7e8(%rsp), %rdi
callq 0x51b0
movq %rbx, %rdi
callq 0x979a
movl 0xb8(%rsp), %eax
cltd
pushq $0x4
popq %rcx
idivl %ecx
movl %eax, 0xb8(%rsp)
leaq 0x2208(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x12676
leaq 0x2368(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
callq 0x12676
leaq 0x260(%rsp), %rdi
leaq 0x2208(%rsp), %r12
movq %r12, %rsi
movq %r13, %rdx
callq 0xf41a
movq %rbx, %r15
movq %r14, %rbx
movq %r13, %rdi
callq 0x979a
movq %r12, %rdi
callq 0x979a
movl 0x1a8(%rsp), %eax
xorl %r13d, %r13d
cmpl 0x1d8(%rsp), %eax
jne 0x273a2
pushq $-0x1
popq %r13
cmpl $0x3, %eax
je 0x273a2
cmpl $0x6, %eax
je 0x273a2
xorl %r13d, %r13d
cmpl $0xa, %eax
sete %r13b
negl %r13d
leaq 0x260(%rsp), %rdi
callq 0xf856
addl 0x4c(%rsp), %r13d
xorb 0x48(%rsp), %al
movzbl %al, %eax
movl 0x50(%rsp), %r14d
subl %eax, %r14d
movl %r14d, %eax
orl %r13d, %eax
pushq $0x3
popq %r12
js 0x27413
movq 0x18(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x986e
movl 0x54(%rsp), %edi
movl 0x40(%rsp), %esi
movl %r13d, %edx
movl %r14d, %ecx
movl 0x14(%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0x25386
pushq $0x1
popq %r12
testb %al, %al
jne 0x27413
movq 0x18(%rsp), %rdi
callq 0xc42c
xorl %r12d, %r12d
leaq 0x268(%rsp), %rdi
callq 0x51b0
leaq 0xb8(%rsp), %rdi
callq 0x979a
leaq 0x1b0(%rsp), %rdi
callq 0x51b0
cmpl $0x3, %r12d
je 0x27445
testl %r12d, %r12d
jne 0x27458
addq $0x30, %rbp
movq %rbx, %r14
movq %r15, %rbx
jmp 0x272a3
pushq $0x2
popq %r12
leaq 0x168(%rsp), %rdi
callq 0x51b0
leaq 0x1e0(%rsp), %rdi
callq 0x51b0
leaq 0x298(%rsp), %rdi
callq 0x51b0
leaq 0x208(%rsp), %rdi
callq 0x979a
leaq 0x60(%rsp), %rdi
callq 0x979a
movb $0x1, %bl
testb $0x1, %r12b
jne 0x27504
leaq 0x60(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x17d60
leaq 0x60(%rsp), %rdi
imulq $0x1081c8, 0x188(%rsp), %rax # imm = 0x1081C8
addq 0x12ab3(%rip), %rax     # 0x39f78
movslq 0x4c(%rdi), %rcx
imulq $0x42072, 0x190(%rsp), %rdx # imm = 0x42072
addq %rax, %rdx
imulq $0xbbd, %rcx, %rax      # imm = 0xBBD
imulq $0x259, 0x198(%rsp), %rcx # imm = 0x259
addq %rdx, %rcx
addq %rax, %rcx
movq 0x1a0(%rsp), %rax
movb $0x0, (%rax,%rcx)
callq 0x979a
xorl %ebx, %ebx
leaq 0x110(%rsp), %rdi
callq 0x979a
leaq 0x20(%rsp), %rdi
callq 0x98a8
movl %ebx, %eax
addq $0x2418, %rsp           # imm = 0x2418
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x818(%rsp), %rdi
callq 0x51b0
jmp 0x27544
movq %rax, %rbx
leaq 0x420(%rsp), %rdi
callq 0x51b0
jmp 0x27556
movq %rax, %rbx
leaq 0x11e0(%rsp), %rdi
callq 0x979a
jmp 0x27568
movq %rax, %rbx
leaq 0x1238(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x848(%rsp), %rdi
callq 0x51b0
jmp 0x2758a
movq %rax, %rbx
leaq 0x440(%rsp), %rdi
callq 0x51b0
jmp 0x2759c
movq %rax, %rbx
leaq 0x1290(%rsp), %rdi
callq 0x979a
jmp 0x275ae
movq %rax, %rbx
leaq 0x12e8(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x878(%rsp), %rdi
callq 0x51b0
jmp 0x275d0
movq %rax, %rbx
leaq 0x460(%rsp), %rdi
callq 0x51b0
jmp 0x275e2
movq %rax, %rbx
leaq 0x1340(%rsp), %rdi
callq 0x979a
jmp 0x275f4
movq %rax, %rbx
leaq 0x1398(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x8a8(%rsp), %rdi
callq 0x51b0
jmp 0x27616
movq %rax, %rbx
leaq 0x480(%rsp), %rdi
callq 0x51b0
jmp 0x27628
movq %rax, %rbx
leaq 0x13f0(%rsp), %rdi
callq 0x979a
jmp 0x2763a
movq %rax, %rbx
leaq 0x1448(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x8d8(%rsp), %rdi
callq 0x51b0
jmp 0x2765c
movq %rax, %rbx
leaq 0x4a0(%rsp), %rdi
callq 0x51b0
jmp 0x2766e
movq %rax, %rbx
leaq 0x14a0(%rsp), %rdi
callq 0x979a
jmp 0x27680
movq %rax, %rbx
leaq 0x14f8(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0xa28(%rsp), %rdi
callq 0x51b0
jmp 0x276a2
movq %rax, %rbx
leaq 0x580(%rsp), %rdi
callq 0x51b0
jmp 0x276b4
movq %rax, %rbx
leaq 0x1970(%rsp), %rdi
callq 0x979a
jmp 0x276c6
movq %rax, %rbx
leaq 0x19c8(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0xa58(%rsp), %rdi
callq 0x51b0
jmp 0x276e8
movq %rax, %rbx
leaq 0x5a0(%rsp), %rdi
callq 0x51b0
jmp 0x276fa
movq %rax, %rbx
leaq 0x1a20(%rsp), %rdi
callq 0x979a
jmp 0x2770c
movq %rax, %rbx
leaq 0x1a78(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0xba8(%rsp), %rdi
callq 0x51b0
jmp 0x2772e
movq %rax, %rbx
leaq 0x680(%rsp), %rdi
callq 0x51b0
jmp 0x27740
movq %rax, %rbx
leaq 0x1ef0(%rsp), %rdi
callq 0x979a
jmp 0x27752
movq %rax, %rbx
leaq 0x1f48(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0xbd8(%rsp), %rdi
callq 0x51b0
jmp 0x27774
movq %rax, %rbx
leaq 0x6a0(%rsp), %rdi
callq 0x51b0
jmp 0x27786
movq %rax, %rbx
leaq 0x1fa0(%rsp), %rdi
callq 0x979a
jmp 0x27798
movq %rax, %rbx
leaq 0x1ff8(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x6c8(%rsp), %rdi
callq 0x51b0
jmp 0x277ba
movq %rax, %rbx
leaq 0x340(%rsp), %rdi
callq 0x51b0
jmp 0x277cc
movq %rax, %rbx
leaq 0xc60(%rsp), %rdi
callq 0x979a
jmp 0x277de
movq %rax, %rbx
leaq 0xcb8(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x6f8(%rsp), %rdi
callq 0x51b0
jmp 0x27800
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
callq 0x51b0
jmp 0x27812
movq %rax, %rbx
leaq 0xd10(%rsp), %rdi
callq 0x979a
jmp 0x27824
movq %rax, %rbx
leaq 0xd68(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x758(%rsp), %rdi
callq 0x51b0
jmp 0x27846
movq %rax, %rbx
leaq 0x3a0(%rsp), %rdi
callq 0x51b0
jmp 0x27858
movq %rax, %rbx
leaq 0xe70(%rsp), %rdi
callq 0x979a
jmp 0x2786a
movq %rax, %rbx
leaq 0xec8(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x788(%rsp), %rdi
callq 0x51b0
jmp 0x2788c
movq %rax, %rbx
leaq 0x3c0(%rsp), %rdi
callq 0x51b0
jmp 0x2789e
movq %rax, %rbx
leaq 0xf20(%rsp), %rdi
callq 0x979a
jmp 0x278b0
movq %rax, %rbx
leaq 0xf78(%rsp), %rdi
jmp 0x27ccc
jmp 0x27efa
movq %rax, %rbx
leaq 0x908(%rsp), %rdi
callq 0x51b0
jmp 0x278d7
movq %rax, %rbx
leaq 0x4c0(%rsp), %rdi
callq 0x51b0
jmp 0x278e9
movq %rax, %rbx
leaq 0x1550(%rsp), %rdi
callq 0x979a
jmp 0x278fb
movq %rax, %rbx
leaq 0x15a8(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x938(%rsp), %rdi
callq 0x51b0
jmp 0x2791d
movq %rax, %rbx
leaq 0x4e0(%rsp), %rdi
callq 0x51b0
jmp 0x2792f
movq %rax, %rbx
leaq 0x1600(%rsp), %rdi
callq 0x979a
jmp 0x27941
movq %rax, %rbx
leaq 0x1658(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x968(%rsp), %rdi
callq 0x51b0
jmp 0x27963
movq %rax, %rbx
leaq 0x500(%rsp), %rdi
callq 0x51b0
jmp 0x27975
movq %rax, %rbx
leaq 0x16b0(%rsp), %rdi
callq 0x979a
jmp 0x27987
movq %rax, %rbx
leaq 0x1708(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x998(%rsp), %rdi
callq 0x51b0
jmp 0x279a9
movq %rax, %rbx
leaq 0x520(%rsp), %rdi
callq 0x51b0
jmp 0x279bb
movq %rax, %rbx
leaq 0x1760(%rsp), %rdi
callq 0x979a
jmp 0x279cd
movq %rax, %rbx
leaq 0x17b8(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x9c8(%rsp), %rdi
callq 0x51b0
jmp 0x279ef
movq %rax, %rbx
leaq 0x540(%rsp), %rdi
callq 0x51b0
jmp 0x27a01
movq %rax, %rbx
leaq 0x1810(%rsp), %rdi
callq 0x979a
jmp 0x27a13
movq %rax, %rbx
leaq 0x1868(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x9f8(%rsp), %rdi
callq 0x51b0
jmp 0x27a35
movq %rax, %rbx
leaq 0x560(%rsp), %rdi
callq 0x51b0
jmp 0x27a47
movq %rax, %rbx
leaq 0x18c0(%rsp), %rdi
callq 0x979a
jmp 0x27a59
movq %rax, %rbx
leaq 0x1918(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0xa88(%rsp), %rdi
callq 0x51b0
jmp 0x27a7b
movq %rax, %rbx
leaq 0x5c0(%rsp), %rdi
callq 0x51b0
jmp 0x27a8d
movq %rax, %rbx
leaq 0x1ad0(%rsp), %rdi
callq 0x979a
jmp 0x27a9f
movq %rax, %rbx
leaq 0x1b28(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0xab8(%rsp), %rdi
callq 0x51b0
jmp 0x27ac1
movq %rax, %rbx
leaq 0x5e0(%rsp), %rdi
callq 0x51b0
jmp 0x27ad3
movq %rax, %rbx
leaq 0x1b80(%rsp), %rdi
callq 0x979a
jmp 0x27ae5
movq %rax, %rbx
leaq 0x1bd8(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0xae8(%rsp), %rdi
callq 0x51b0
jmp 0x27b07
movq %rax, %rbx
leaq 0x600(%rsp), %rdi
callq 0x51b0
jmp 0x27b19
movq %rax, %rbx
leaq 0x1c30(%rsp), %rdi
callq 0x979a
jmp 0x27b2b
movq %rax, %rbx
leaq 0x1c88(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0xb18(%rsp), %rdi
callq 0x51b0
jmp 0x27b4d
movq %rax, %rbx
leaq 0x620(%rsp), %rdi
callq 0x51b0
jmp 0x27b5f
movq %rax, %rbx
leaq 0x1ce0(%rsp), %rdi
callq 0x979a
jmp 0x27b71
movq %rax, %rbx
leaq 0x1d38(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0xb48(%rsp), %rdi
callq 0x51b0
jmp 0x27b93
movq %rax, %rbx
leaq 0x640(%rsp), %rdi
callq 0x51b0
jmp 0x27ba5
movq %rax, %rbx
leaq 0x1d90(%rsp), %rdi
callq 0x979a
jmp 0x27bb7
movq %rax, %rbx
leaq 0x1de8(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0xb78(%rsp), %rdi
callq 0x51b0
jmp 0x27bd9
movq %rax, %rbx
leaq 0x660(%rsp), %rdi
callq 0x51b0
jmp 0x27beb
movq %rax, %rbx
leaq 0x1e40(%rsp), %rdi
callq 0x979a
jmp 0x27bfd
movq %rax, %rbx
leaq 0x1e98(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x51b0
jmp 0x27c1f
movq %rax, %rbx
leaq 0x400(%rsp), %rdi
jmp 0x27f47
jmp 0x27efa
jmp 0x27efa
movq %rax, %rbx
leaq 0x728(%rsp), %rdi
callq 0x51b0
jmp 0x27c4b
movq %rax, %rbx
leaq 0x380(%rsp), %rdi
callq 0x51b0
jmp 0x27c5d
movq %rax, %rbx
leaq 0xdc0(%rsp), %rdi
callq 0x979a
jmp 0x27c6f
movq %rax, %rbx
leaq 0xe18(%rsp), %rdi
jmp 0x27ccc
movq %rax, %rbx
leaq 0x7b8(%rsp), %rdi
callq 0x51b0
jmp 0x27c8e
movq %rax, %rbx
leaq 0x3e0(%rsp), %rdi
callq 0x51b0
jmp 0x27ca0
movq %rax, %rbx
leaq 0xfd0(%rsp), %rdi
callq 0x979a
jmp 0x27cc4
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x51b0
jmp 0x27cd9
movq %rax, %rbx
leaq 0x1028(%rsp), %rdi
callq 0x979a
jmp 0x27f4c
movq %rax, %rbx
leaq 0x320(%rsp), %rdi
jmp 0x27f47
jmp 0x27efa
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x51b0
jmp 0x27cfd
movq %rax, %rbx
leaq 0x2c0(%rsp), %rdi
jmp 0x27f19
jmp 0x27e39
jmp 0x27d65
movq %rax, %rbx
leaq 0x2050(%rsp), %rdi
callq 0x979a
jmp 0x27d26
movq %rax, %rbx
leaq 0x20a8(%rsp), %rdi
jmp 0x27d8a
jmp 0x27da5
jmp 0x27da5
movq %rax, %rbx
leaq 0x2100(%rsp), %rdi
callq 0x979a
jmp 0x27d49
movq %rax, %rbx
leaq 0x2158(%rsp), %rdi
jmp 0x27ddc
jmp 0x27df5
jmp 0x27e0d
jmp 0x27e39
movq %rax, %rbx
jmp 0x27f59
movq %rax, %rbx
leaq 0x1080(%rsp), %rdi
callq 0x979a
jmp 0x27d82
movq %rax, %rbx
leaq 0x10d8(%rsp), %rdi
callq 0x979a
jmp 0x27f66
jmp 0x27da5
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x51b0
jmp 0x27db0
movq %rax, %rbx
jmp 0x27f66
movq %rax, %rbx
leaq 0x2e0(%rsp), %rdi
jmp 0x27f19
movq %rax, %rbx
leaq 0x1130(%rsp), %rdi
callq 0x979a
jmp 0x27dd4
jmp 0x27e39
movq %rax, %rbx
leaq 0x1188(%rsp), %rdi
callq 0x979a
jmp 0x27f73
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x51b0
jmp 0x27e00
movq %rax, %rbx
jmp 0x27f73
movq %rax, %rbx
leaq 0x300(%rsp), %rdi
jmp 0x27f19
movq %rax, %rbx
jmp 0x27f80
jmp 0x27e39
jmp 0x27e39
jmp 0x27e39
jmp 0x27efa
movq %rax, %rbx
jmp 0x27f97
jmp 0x27efa
jmp 0x27e39
jmp 0x27efa
jmp 0x27efa
movq %rax, %rbx
jmp 0x27f8a
movq %rax, %rbx
jmp 0x27e5e
movq %rax, %rbx
jmp 0x27f11
movq %rax, %rbx
leaq 0xc08(%rsp), %rdi
callq 0x51b0
leaq 0x2260(%rsp), %rdi
jmp 0x27f0c
movq %rax, %rbx
jmp 0x27e80
movq %rax, %rbx
leaq 0x7e8(%rsp), %rdi
callq 0x51b0
leaq 0x23c0(%rsp), %rdi
jmp 0x27f3a
jmp 0x27ed1
movq %rax, %rbx
jmp 0x27ea4
movq %rax, %rbx
leaq 0x2368(%rsp), %rdi
callq 0x979a
leaq 0x2208(%rsp), %rdi
jmp 0x27ef3
jmp 0x27efa
jmp 0x27eff
movq %rax, %rbx
jmp 0x27ec7
movq %rax, %rbx
leaq 0xc38(%rsp), %rdi
callq 0x51b0
leaq 0x21b0(%rsp), %rdi
jmp 0x27f3a
movq %rax, %rbx
jmp 0x27f32
movq %rax, %rbx
jmp 0x27eeb
movq %rax, %rbx
leaq 0x22b8(%rsp), %rdi
callq 0x979a
leaq 0x2310(%rsp), %rdi
callq 0x979a
jmp 0x27f32
movq %rax, %rbx
jmp 0x27f4c
movq %rax, %rbx
jmp 0x27f3f
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x979a
leaq 0x210(%rsp), %rdi
callq 0x51b0
jmp 0x27f8a
jmp 0x27f22
movq %rax, %rbx
leaq 0x268(%rsp), %rdi
callq 0x51b0
leaq 0xb8(%rsp), %rdi
callq 0x979a
leaq 0x1b0(%rsp), %rdi
callq 0x51b0
leaq 0x168(%rsp), %rdi
callq 0x51b0
leaq 0x1e0(%rsp), %rdi
callq 0x51b0
leaq 0x298(%rsp), %rdi
callq 0x51b0
leaq 0x208(%rsp), %rdi
callq 0x979a
leaq 0x60(%rsp), %rdi
callq 0x979a
leaq 0x110(%rsp), %rdi
callq 0x979a
leaq 0x20(%rsp), %rdi
callq 0x98a8
movq %rbx, %rdi
callq 0x55d0
nop