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

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

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

  vector<Interval> possible_intervals;

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

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

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

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

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

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

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

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

      // FIXME confirmar regra de sextas paralelas
      par = paralels - (interval.quantitative == previous_interval.quantitative and (interval.quantitative == 3 || interval.quantitative == 6 || interval.quantitative == 10)); //TODO: criar método retornando qualidade
      sm = same_movements - (melodic_interval.ascendant() != melodic_ascendant);
      if(par < 0 || sm < 0) continue;
      counterpoint.notes.push_back(c_note);
      if(solve(position + 1, par, sm, counterpoint, ascendant)) return true;
      counterpoint.notes.pop_back();
    }
  }else{
    possible_intervals.push_back(Interval("P1", ascendant));
    possible_intervals.push_back(Interval("P8", ascendant));
    if(ascendant) possible_intervals.push_back(Interval("P5", ascendant));
    random_shuffle(possible_intervals.begin(), possible_intervals.end());

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

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18a8, %rsp           # imm = 0x18A8
movl %r8d, %ebp
movq %rcx, %r15
movl %edx, 0x3c(%rsp)
movl %esi, 0x38(%rsp)
movl %edi, %r13d
testl %edi, %edi
jne 0xc072
leaq 0x3d759(%rip), %rdi     # 0x497b0
movl $0x9bc8cf8, %edx        # imm = 0x9BC8CF8
movl $0x1, %esi
callq 0x51f0
callq 0x5240
movl %eax, %edi
callq 0x5310
leaq 0x9c0642f(%rip), %rax   # 0x9c124a8
movq (%rax), %rdi
callq 0x24288
movb $0x1, %bl
cmpl %r13d, %eax
jbe 0xea5d
movl %r13d, %r12d
testl %r13d, %r13d
je 0xc0df
imulq $0x1081c8, %r12, %r14   # imm = 0x1081C8
addq 0x3cece(%rip), %r14     # 0x48f70
leaq 0x1850(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x24316
movslq 0x4c(%rbx), %rax
movslq 0x38(%rsp), %rcx
movslq 0x3c(%rsp), %rdx
imulq $0xbbd, %rax, %rax      # imm = 0xBBD
imulq $0x259, %rcx, %rcx      # imm = 0x259
addq %r14, %rcx
addq %rax, %rcx
movb (%rdx,%rcx), %bl
xorb $0x1, %bl
jmp 0xc0e1
xorl %ebx, %ebx
testl %r13d, %r13d
je 0xc128
leaq 0x1888(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc107
movq 0x1888(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1868(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc128
movq 0x1868(%rsp), %rsi
incq %rsi
callq 0x5360
testb %bl, %bl
je 0xc133
xorl %ebx, %ebx
jmp 0xea5d
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
leaq 0x9c0635d(%rip), %rax   # 0x9c124a8
movq (%rax), %rax
imulq $0x58, %r12, %rsi
addq (%rax), %rsi
leaq 0x170(%rsp), %rdi
callq 0x1a9c6
testl %r13d, %r13d
movq %r15, 0x40(%rsp)
movq %r12, 0x218(%rsp)
je 0xc428
leaq 0x9c06329(%rip), %rax   # 0x9c124a8
movq (%rax), %rax
leal -0x1(%r13), %ecx
imulq $0x58, %rcx, %rsi
addq (%rax), %rsi
leaq 0x50(%rsp), %rdi
callq 0x1a9c6
leaq 0xc0(%rsp), %rdi
movq %r15, %rsi
callq 0x24316
leaq 0x1698(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x1a9c6
leaq 0x1640(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x900(%rsp), %rdi
leaq 0x1698(%rsp), %rsi
leaq 0x1640(%rsp), %rdx
callq 0x15216
leaq 0x1678(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc20c
movq 0x1678(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1658(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc22d
movq 0x1658(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x16d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc24e
movq 0x16d0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x16b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc26f
movq 0x16b0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x900(%rsp), %rdi
callq 0x15b78
movl %eax, %r15d
leaq 0x15e8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x1a9c6
leaq 0x1590(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0x570(%rsp), %rdi
leaq 0x15e8(%rsp), %rsi
leaq 0x1590(%rsp), %rdx
callq 0x15216
leaq 0x15c8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc2e4
movq 0x15c8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x15a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc305
movq 0x15a8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1620(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc326
movq 0x1620(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1600(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc347
movq 0x1600(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1f8(%rsp), %rdi
leaq 0x570(%rsp), %rsi
callq 0x1539c
leaq 0x170(%rsp), %rdi
callq 0x1c186
movl %r15d, %ebx
xorb $0x1, %bl
movzbl %bpl, %ecx
movl %ecx, 0xc(%rsp)
testb %al, %al
movq %r13, 0xa8(%rsp)
movb %bl, 0xb0(%rsp)
je 0xc929
leaq 0x2c0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2ec7f(%rip), %rsi     # 0x3b020
leaq 0x2ec7a(%rip), %rdx     # 0x3b022
leaq 0x2b0(%rsp), %rdi
callq 0xb62c
leaq 0x118(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
movl $0x1, %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0xfbea
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc402
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x2b0(%rsp), %rdi
cmpq %r14, %rdi
je 0xe4df
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xe4df
leaq 0x2a0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2ebe5(%rip), %rsi     # 0x3b020
leaq 0x2ebe0(%rip), %rdx     # 0x3b022
leaq 0x290(%rsp), %rdi
callq 0xb62c
movzbl %bpl, %edx
leaq 0x50(%rsp), %rdi
leaq 0x290(%rsp), %rsi
movl %edx, 0xc(%rsp)
callq 0x14f5c
leaq 0x20(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xfbea
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc493
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x290(%rsp), %rdi
cmpq %r14, %rdi
je 0xc4b0
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x280(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2eb60(%rip), %rsi     # 0x3b023
leaq 0x2eb5b(%rip), %rdx     # 0x3b025
leaq 0x270(%rsp), %rdi
callq 0xb62c
leaq 0x50(%rsp), %rdi
leaq 0x270(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xfbea
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xc518
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x270(%rsp), %rdi
cmpq %r14, %rdi
je 0xc535
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x5360
testb %bpl, %bpl
leaq 0x68(%rsp), %r14
je 0xc5ce
leaq 0x260(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2ead0(%rip), %rsi     # 0x3b026
leaq 0x2eacb(%rip), %rdx     # 0x3b028
leaq 0x250(%rsp), %rdi
callq 0xb62c
leaq 0x50(%rsp), %rdi
leaq 0x250(%rsp), %rsi
movl $0x1, %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xfbea
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xc5ac
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x250(%rsp), %rdi
cmpq %r14, %rdi
je 0xc5c9
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x68(%rsp), %r14
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
movq %rax, 0xb0(%rsp)
movq %rcx, 0x10(%rsp)
cmpq %rcx, %rax
je 0xc721
movq 0xb0(%rsp), %rax
leaq 0x30(%rax), %r13
cmpq 0x10(%rsp), %r13
je 0xc721
leaq 0x58(%rsp), %rbx
movl $0x30, %ebp
callq 0x50e0
cltq
movq %rbp, %rcx
sarq $0x4, %rcx
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rcx
incq %rcx
cqto
idivq %rcx
leaq (%rdx,%rdx,2), %r15
shlq $0x4, %r15
addq 0xb0(%rsp), %r15
cmpq %r15, %r13
je 0xc70e
movl (%r13), %eax
movl %eax, 0x50(%rsp)
movq %r14, 0x58(%rsp)
movq 0x8(%r13), %rcx
leaq 0x18(%r13), %rax
cmpq %rcx, %rax
je 0xc675
movq %rcx, 0x58(%rsp)
movq (%rax), %rcx
movq %rcx, 0x68(%rsp)
jmp 0xc67c
movups (%rax), %xmm0
movups %xmm0, (%r14)
movq %r14, %r12
leaq 0x8(%r13), %rdi
movq 0x10(%r13), %rcx
movq %rcx, 0x60(%rsp)
movq %rax, 0x8(%r13)
movq $0x0, 0x10(%r13)
movb $0x0, 0x18(%r13)
movzwl 0x2c(%r13), %eax
movw %ax, 0x24(%rbx)
movl 0x28(%r13), %eax
movl %eax, 0x20(%rbx)
movl (%r15), %eax
movl %eax, (%r13)
leaq 0x8(%r15), %r14
movq %r14, %rsi
callq 0x5420
movl 0x28(%r15), %eax
movl %eax, 0x28(%r13)
movzwl 0x2c(%r15), %eax
movw %ax, 0x2c(%r13)
movl 0x50(%rsp), %eax
movl %eax, (%r15)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5420
movzwl 0x24(%rbx), %eax
movw %ax, 0x2c(%r15)
movl 0x20(%rbx), %eax
movl %eax, 0x28(%r15)
movq 0x58(%rsp), %rdi
cmpq %r12, %rdi
movq %r12, %r14
je 0xc70e
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %r13
addq $0x30, %rbp
cmpq 0x10(%rsp), %r13
jne 0xc60f
movq 0x20(%rsp), %r13
movq 0x28(%rsp), %r15
cmpq %r15, %r13
je 0xe98b
leaq 0xc8(%rsp), %rbx
leaq 0x228(%rsp), %r14
leaq 0x50(%rsp), %rbp
movq 0x40(%rsp), %r12
movl (%r13), %eax
movl %eax, 0xc0(%rsp)
leaq 0xd8(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0x8(%r13), %rsi
movq 0x10(%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0xb544
movzwl 0x2c(%r13), %eax
movw %ax, 0x24(%rbx)
movl 0x28(%r13), %eax
movl %eax, 0x20(%rbx)
leaq 0x930(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
movl 0xc0(%rsp), %eax
movl %eax, 0x220(%rsp)
leaq 0x238(%rsp), %rax
movq %rax, 0x228(%rsp)
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0xb544
movzwl 0x24(%rbx), %eax
movw %ax, 0x24(%r14)
movl 0x20(%rbx), %eax
movl %eax, 0x20(%r14)
movq %rbp, %rdi
leaq 0x930(%rsp), %rsi
leaq 0x220(%rsp), %rdx
callq 0x15a46
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0xc827
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x958(%rsp), %rdi
leaq 0x968(%rsp), %rax
cmpq %rax, %rdi
je 0xc84c
movq 0x968(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x938(%rsp), %rdi
leaq 0x948(%rsp), %rax
cmpq %rax, %rdi
je 0xc871
movq 0x948(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r12, %rdi
movq %rbp, %rsi
callq 0xb14e
movl $0x1, %edi
movl 0x38(%rsp), %esi
movl 0x3c(%rsp), %edx
movq %r12, %rcx
movl 0xc(%rsp), %r8d
callq 0xc02a
testb %al, %al
jne 0xea71
movq 0x40(%rsp), %rdi
movq 0x8(%rdi), %rsi
addq $-0x58, %rsi
movq %rsi, 0x8(%rdi)
callq 0xba7e
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0xc8d6
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xc8f2
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0xc917
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %r13
cmpq %r15, %r13
jne 0xc74e
jmp 0xe98b
leaq 0x2e6f3(%rip), %rsi     # 0x3b023
leaq 0x1f8(%rsp), %rdi
callq 0x5100
movzbl %bl, %ecx
movl %ecx, 0x10(%rsp)
testl %eax, %eax
je 0xcaa3
leaq 0x1538(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0x14e0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x500(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2e69a(%rip), %rsi     # 0x3b023
leaq 0x2e695(%rip), %rdx     # 0x3b025
leaq 0x4f0(%rsp), %rdi
callq 0xb62c
leaq 0x8d0(%rsp), %rdi
leaq 0x4f0(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0x1538(%rsp), %rcx
leaq 0x14e0(%rsp), %r8
leaq 0x8d0(%rsp), %r9
movl $0x1, %edi
movl 0x10(%rsp), %esi
callq 0xf5d2
leaq 0x8e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xca02
movq 0x8e8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x4f0(%rsp), %rdi
cmpq %r14, %rdi
je 0xca1f
movq 0x500(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1518(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xca40
movq 0x1518(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x14f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xca61
movq 0x14f8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1570(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xca82
movq 0x1570(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1550(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcaa3
movq 0x1550(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x2e57c(%rip), %rsi     # 0x3b026
leaq 0x1f8(%rsp), %rdi
callq 0x5100
testl %eax, %eax
sete %al
xorb $0x1, %bpl
orb %bpl, %al
jne 0xcc21
leaq 0x1488(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0x1430(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x4e0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2e520(%rip), %rsi     # 0x3b026
leaq 0x2e51b(%rip), %rdx     # 0x3b028
leaq 0x4d0(%rsp), %rdi
callq 0xb62c
leaq 0x8a0(%rsp), %rdi
leaq 0x4d0(%rsp), %rsi
movl $0x1, %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0x1488(%rsp), %rcx
leaq 0x1430(%rsp), %r8
leaq 0x8a0(%rsp), %r9
movl $0x1, %edi
movl 0x10(%rsp), %esi
callq 0xf5d2
leaq 0x8b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcb80
movq 0x8b8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x4d0(%rsp), %rdi
cmpq %r14, %rdi
je 0xcb9d
movq 0x4e0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1468(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcbbe
movq 0x1468(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1448(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcbdf
movq 0x1448(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x14c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcc00
movq 0x14c0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x14a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcc21
movq 0x14a0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x9c05880(%rip), %rax   # 0x9c124a8
movq (%rax), %rdi
callq 0x24288
decl %eax
cmpl %r13d, %eax
movl %ebp, 0xbc(%rsp)
movb %r15b, 0x1f(%rsp)
jne 0xcd8a
leaq 0x17f8(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0x13d8(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x4c0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2e39c(%rip), %rsi     # 0x3b020
leaq 0x2e397(%rip), %rdx     # 0x3b022
leaq 0x4b0(%rsp), %rdi
callq 0xb62c
leaq 0x870(%rsp), %rdi
leaq 0x4b0(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0x17f8(%rsp), %rcx
leaq 0x13d8(%rsp), %r8
leaq 0x870(%rsp), %r9
movl $0x1, %edi
movl 0x10(%rsp), %esi
callq 0xf5d2
leaq 0x888(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xccfd
movq 0x888(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x4b0(%rsp), %rdi
cmpq %r14, %rdi
je 0xcd1a
movq 0x4c0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1410(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcd3b
movq 0x1410(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x13f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcd5c
movq 0x13f0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1830(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcd7d
movq 0x1830(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1810(%rsp), %rax
jmp 0xd57b
leaq 0x1380(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0x1328(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x4a0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2e262(%rip), %rsi     # 0x3b029
leaq 0x2e25d(%rip), %rdx     # 0x3b02b
leaq 0x490(%rsp), %rdi
callq 0xb62c
leaq 0x840(%rsp), %rdi
leaq 0x490(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0x1380(%rsp), %rcx
leaq 0x1328(%rsp), %r8
leaq 0x840(%rsp), %r9
movl $0x1, %edi
movl 0x10(%rsp), %esi
callq 0xf5d2
leaq 0x858(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xce40
movq 0x858(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x490(%rsp), %rdi
cmpq %r14, %rdi
je 0xce5d
movq 0x4a0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1360(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xce7e
movq 0x1360(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1340(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xce9f
movq 0x1340(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x13b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcec0
movq 0x13b8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1398(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcee1
movq 0x1398(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x12d0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0x1278(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x480(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2e10e(%rip), %rsi     # 0x3b02c
leaq 0x2e109(%rip), %rdx     # 0x3b02e
leaq 0x470(%rsp), %rdi
callq 0xb62c
leaq 0x810(%rsp), %rdi
leaq 0x470(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0x12d0(%rsp), %rcx
leaq 0x1278(%rsp), %r8
leaq 0x810(%rsp), %r9
movl $0x1, %edi
movl 0x10(%rsp), %esi
callq 0xf5d2
leaq 0x828(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcf97
movq 0x828(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x470(%rsp), %rdi
cmpq %r14, %rdi
je 0xcfb4
movq 0x480(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x12b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcfd5
movq 0x12b0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1290(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcff6
movq 0x1290(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1308(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd017
movq 0x1308(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x12e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd038
movq 0x12e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1220(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0x11c8(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x460(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2dfba(%rip), %rsi     # 0x3b02f
leaq 0x2dfb5(%rip), %rdx     # 0x3b031
leaq 0x450(%rsp), %rdi
callq 0xb62c
leaq 0x7e0(%rsp), %rdi
leaq 0x450(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0x1220(%rsp), %rcx
leaq 0x11c8(%rsp), %r8
leaq 0x7e0(%rsp), %r9
movl $0x1, %edi
movl 0x10(%rsp), %esi
callq 0xf5d2
leaq 0x7f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd0ee
movq 0x7f8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x450(%rsp), %rdi
cmpq %r14, %rdi
je 0xd10b
movq 0x460(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1200(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd12c
movq 0x1200(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x11e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd14d
movq 0x11e0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1258(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd16e
movq 0x1258(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1238(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd18f
movq 0x1238(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1170(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0x1118(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x440(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2de66(%rip), %rsi     # 0x3b032
leaq 0x2de61(%rip), %rdx     # 0x3b034
leaq 0x430(%rsp), %rdi
callq 0xb62c
leaq 0x7b0(%rsp), %rdi
leaq 0x430(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0x1170(%rsp), %rcx
leaq 0x1118(%rsp), %r8
leaq 0x7b0(%rsp), %r9
movl $0x1, %edi
movl 0x10(%rsp), %esi
callq 0xf5d2
leaq 0x7c8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd245
movq 0x7c8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x430(%rsp), %rdi
cmpq %r14, %rdi
je 0xd262
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1150(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd283
movq 0x1150(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd2a4
movq 0x1130(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x11a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd2c5
movq 0x11a8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1188(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd2e6
movq 0x1188(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x10c0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0x1068(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x420(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2dd12(%rip), %rsi     # 0x3b035
leaq 0x2dd0e(%rip), %rdx     # 0x3b038
leaq 0x410(%rsp), %rdi
callq 0xb62c
leaq 0x780(%rsp), %rdi
leaq 0x410(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0x10c0(%rsp), %rcx
leaq 0x1068(%rsp), %r8
leaq 0x780(%rsp), %r9
movl $0x1, %edi
movl 0x10(%rsp), %esi
callq 0xf5d2
leaq 0x798(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd39c
movq 0x798(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x410(%rsp), %rdi
cmpq %r14, %rdi
je 0xd3b9
movq 0x420(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x10a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd3da
movq 0x10a0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1080(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd3fb
movq 0x1080(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x10f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd41c
movq 0x10f8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x10d8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd43d
movq 0x10d8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x17a0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0x1010(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x400(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2dbbf(%rip), %rsi     # 0x3b039
leaq 0x2dbbb(%rip), %rdx     # 0x3b03c
leaq 0x3f0(%rsp), %rdi
callq 0xb62c
leaq 0x750(%rsp), %rdi
leaq 0x3f0(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0x17a0(%rsp), %rcx
leaq 0x1010(%rsp), %r8
leaq 0x750(%rsp), %r9
movl $0x1, %edi
movl 0x10(%rsp), %esi
callq 0xf5d2
leaq 0x768(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd4f3
movq 0x768(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x3f0(%rsp), %rdi
cmpq %r14, %rdi
je 0xd510
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1048(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd531
movq 0x1048(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1028(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd552
movq 0x1028(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x17d8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd573
movq 0x17d8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x17b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd58f
movq (%rax), %rsi
incq %rsi
callq 0x5360
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
movq %rax, 0x10(%rsp)
movq %rcx, 0x48(%rsp)
cmpq %rcx, %rax
je 0xd703
movq 0x10(%rsp), %rax
leaq 0x30(%rax), %r12
cmpq 0x48(%rsp), %r12
je 0xd703
leaq 0x120(%rsp), %rbx
leaq 0x130(%rsp), %r15
movl $0x30, %ebp
callq 0x50e0
cltq
movq %rbp, %rcx
sarq $0x4, %rcx
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rcx
incq %rcx
cqto
idivq %rcx
leaq (%rdx,%rdx,2), %r13
shlq $0x4, %r13
addq 0x10(%rsp), %r13
cmpq %r13, %r12
je 0xd6f0
movl (%r12), %eax
movl %eax, 0x118(%rsp)
movq %r15, 0x120(%rsp)
movq 0x8(%r12), %rcx
leaq 0x18(%r12), %rax
cmpq %rcx, %rax
je 0xd646
movq %rcx, 0x120(%rsp)
movq (%rax), %rcx
movq %rcx, 0x130(%rsp)
jmp 0xd64d
movups (%rax), %xmm0
movups %xmm0, (%r15)
leaq 0x8(%r12), %rdi
movq 0x10(%r12), %rcx
movq %rcx, 0x128(%rsp)
movq %rax, 0x8(%r12)
movq $0x0, 0x10(%r12)
movb $0x0, 0x18(%r12)
movzwl 0x2c(%r12), %eax
movw %ax, 0x24(%rbx)
movl 0x28(%r12), %eax
movl %eax, 0x20(%rbx)
movl (%r13), %eax
movl %eax, (%r12)
leaq 0x8(%r13), %r14
movq %r14, %rsi
callq 0x5420
movl 0x28(%r13), %eax
movl %eax, 0x28(%r12)
movzwl 0x2c(%r13), %eax
movw %ax, 0x2c(%r12)
movl 0x118(%rsp), %eax
movl %eax, (%r13)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5420
movzwl 0x24(%rbx), %eax
movw %ax, 0x2c(%r13)
movl 0x20(%rbx), %eax
movl %eax, 0x28(%r13)
movq 0x120(%rsp), %rdi
cmpq %r15, %rdi
je 0xd6f0
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %r12
addq $0x30, %rbp
cmpq 0x48(%rsp), %r12
jne 0xd5d5
movq 0x28(%rsp), %rbx
subq 0x20(%rsp), %rbx
leaq 0x2d90f(%rip), %rsi     # 0x3b023
leaq 0x1f8(%rsp), %rdi
callq 0x5100
movzbl 0x1f(%rsp), %r13d
testl %eax, %eax
movq 0xa8(%rsp), %r15
movl 0xbc(%rsp), %ebp
leaq 0x9c04d69(%rip), %r12   # 0x9c124a8
je 0xd898
leaq 0xfb8(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0xf60(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x3e0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d8a1(%rip), %rsi     # 0x3b023
leaq 0x2d89c(%rip), %rdx     # 0x3b025
leaq 0x3d0(%rsp), %rdi
callq 0xb62c
leaq 0x720(%rsp), %rdi
leaq 0x3d0(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0xfb8(%rsp), %rcx
leaq 0xf60(%rsp), %r8
leaq 0x720(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0xf5d2
leaq 0x738(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd7f7
movq 0x738(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x3d0(%rsp), %rdi
cmpq %r14, %rdi
je 0xd814
movq 0x3e0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xf98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd835
movq 0xf98(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xf78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd856
movq 0xf78(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xff0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd877
movq 0xff0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xfd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd898
movq 0xfd0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x2d787(%rip), %rsi     # 0x3b026
leaq 0x1f8(%rsp), %rdi
callq 0x5100
testl %eax, %eax
sete %al
orb %bpl, %al
jne 0xda0e
leaq 0xf08(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0xeb0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x3c0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d72f(%rip), %rsi     # 0x3b026
leaq 0x2d72a(%rip), %rdx     # 0x3b028
leaq 0x3b0(%rsp), %rdi
callq 0xb62c
leaq 0x6f0(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
movl $0x1, %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0xf08(%rsp), %rcx
leaq 0xeb0(%rsp), %r8
leaq 0x6f0(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0xf5d2
leaq 0x708(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd96d
movq 0x708(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x3b0(%rsp), %rdi
cmpq %r14, %rdi
je 0xd98a
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xee8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9ab
movq 0xee8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xec8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9cc
movq 0xec8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xf40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9ed
movq 0xf40(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xf20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xda0e
movq 0xf20(%rsp), %rsi
incq %rsi
callq 0x5360
movq (%r12), %rdi
callq 0x24288
decl %eax
cmpl %r15d, %eax
jne 0xdb61
leaq 0x1748(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0xe58(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x3a0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d5c1(%rip), %rsi     # 0x3b020
leaq 0x2d5bc(%rip), %rdx     # 0x3b022
leaq 0x390(%rsp), %rdi
callq 0xb62c
leaq 0x6c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0x1748(%rsp), %rcx
leaq 0xe58(%rsp), %r8
leaq 0x6c0(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0xf5d2
leaq 0x6d8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdad4
movq 0x6d8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x390(%rsp), %rdi
cmpq %r14, %rdi
je 0xdaf1
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xe90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdb12
movq 0xe90(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xe70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdb33
movq 0xe70(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1780(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdb54
movq 0x1780(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1760(%rsp), %rax
jmp 0xe33a
leaq 0xe00(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0xda8(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x380(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d48b(%rip), %rsi     # 0x3b029
leaq 0x2d486(%rip), %rdx     # 0x3b02b
leaq 0x370(%rsp), %rdi
callq 0xb62c
leaq 0x690(%rsp), %rdi
leaq 0x370(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0xe00(%rsp), %rcx
leaq 0xda8(%rsp), %r8
leaq 0x690(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0xf5d2
leaq 0x6a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdc13
movq 0x6a8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x370(%rsp), %rdi
cmpq %r14, %rdi
je 0xdc30
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xde0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdc51
movq 0xde0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xdc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdc72
movq 0xdc0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xe38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdc93
movq 0xe38(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xe18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdcb4
movq 0xe18(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd50(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0xcf8(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x360(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d33b(%rip), %rsi     # 0x3b02c
leaq 0x2d336(%rip), %rdx     # 0x3b02e
leaq 0x350(%rsp), %rdi
callq 0xb62c
leaq 0x660(%rsp), %rdi
leaq 0x350(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0xd50(%rsp), %rcx
leaq 0xcf8(%rsp), %r8
leaq 0x660(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0xf5d2
leaq 0x678(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdd66
movq 0x678(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x350(%rsp), %rdi
cmpq %r14, %rdi
je 0xdd83
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdda4
movq 0xd30(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xddc5
movq 0xd10(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdde6
movq 0xd88(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xde07
movq 0xd68(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xca0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0xc48(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x340(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d1eb(%rip), %rsi     # 0x3b02f
leaq 0x2d1e6(%rip), %rdx     # 0x3b031
leaq 0x330(%rsp), %rdi
callq 0xb62c
leaq 0x630(%rsp), %rdi
leaq 0x330(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0xca0(%rsp), %rcx
leaq 0xc48(%rsp), %r8
leaq 0x630(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0xf5d2
leaq 0x648(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdeb9
movq 0x648(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x330(%rsp), %rdi
cmpq %r14, %rdi
je 0xded6
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xc80(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdef7
movq 0xc80(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xc60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdf18
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xcd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdf39
movq 0xcd8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xcb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdf5a
movq 0xcb8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xbf0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0xb98(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x320(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d09b(%rip), %rsi     # 0x3b032
leaq 0x2d096(%rip), %rdx     # 0x3b034
leaq 0x310(%rsp), %rdi
callq 0xb62c
leaq 0x600(%rsp), %rdi
leaq 0x310(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0xbf0(%rsp), %rcx
leaq 0xb98(%rsp), %r8
leaq 0x600(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0xf5d2
leaq 0x618(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe00c
movq 0x618(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x310(%rsp), %rdi
cmpq %r14, %rdi
je 0xe029
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xbd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe04a
movq 0xbd0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xbb0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe06b
movq 0xbb0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xc28(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe08c
movq 0xc28(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xc08(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe0ad
movq 0xc08(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb40(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0xae8(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x300(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2cf4b(%rip), %rsi     # 0x3b035
leaq 0x2cf47(%rip), %rdx     # 0x3b038
leaq 0x2f0(%rsp), %rdi
callq 0xb62c
leaq 0x5d0(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0xb40(%rsp), %rcx
leaq 0xae8(%rsp), %r8
leaq 0x5d0(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0xf5d2
leaq 0x5e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe15f
movq 0x5e8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x2f0(%rsp), %rdi
cmpq %r14, %rdi
je 0xe17c
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe19d
movq 0xb20(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb00(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe1be
movq 0xb00(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe1df
movq 0xb78(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe200
movq 0xb58(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x16f0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0xa90(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x2e0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2cdfc(%rip), %rsi     # 0x3b039
leaq 0x2cdf8(%rip), %rdx     # 0x3b03c
leaq 0x2d0(%rsp), %rdi
callq 0xb62c
leaq 0x5a0(%rsp), %rdi
leaq 0x2d0(%rsp), %rsi
movl 0xc(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdx
leaq 0x16f0(%rsp), %rcx
leaq 0xa90(%rsp), %r8
leaq 0x5a0(%rsp), %r9
xorl %edi, %edi
movl %r13d, %esi
callq 0xf5d2
leaq 0x5b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe2b2
movq 0x5b8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x2d0(%rsp), %rdi
cmpq %r14, %rdi
je 0xe2cf
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xac8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe2f0
movq 0xac8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xaa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe311
movq 0xaa8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1728(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe332
movq 0x1728(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1708(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe34e
movq (%rax), %rsi
incq %rsi
callq 0x5360
sarq $0x4, %rbx
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %rbx
movslq %ebx, %rax
leaq (%rax,%rax,2), %rcx
shlq $0x4, %rcx
addq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %rcx, 0x48(%rsp)
cmpq %rax, %rcx
je 0xe4df
movq 0x48(%rsp), %rax
leaq 0x30(%rax), %r12
cmpq 0x10(%rsp), %r12
je 0xe4df
leaq 0x120(%rsp), %rbx
leaq 0x130(%rsp), %r15
movl $0x30, %ebp
callq 0x50e0
cltq
movq %rbp, %rcx
sarq $0x4, %rcx
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rcx
incq %rcx
cqto
idivq %rcx
leaq (%rdx,%rdx,2), %r13
shlq $0x4, %r13
addq 0x48(%rsp), %r13
cmpq %r13, %r12
je 0xe4cc
movl (%r12), %eax
movl %eax, 0x118(%rsp)
movq %r15, 0x120(%rsp)
movq 0x8(%r12), %rcx
leaq 0x18(%r12), %rax
cmpq %rcx, %rax
je 0xe422
movq %rcx, 0x120(%rsp)
movq (%rax), %rcx
movq %rcx, 0x130(%rsp)
jmp 0xe429
movups (%rax), %xmm0
movups %xmm0, (%r15)
leaq 0x8(%r12), %rdi
movq 0x10(%r12), %rcx
movq %rcx, 0x128(%rsp)
movq %rax, 0x8(%r12)
movq $0x0, 0x10(%r12)
movb $0x0, 0x18(%r12)
movzwl 0x2c(%r12), %eax
movw %ax, 0x24(%rbx)
movl 0x28(%r12), %eax
movl %eax, 0x20(%rbx)
movl (%r13), %eax
movl %eax, (%r12)
leaq 0x8(%r13), %r14
movq %r14, %rsi
callq 0x5420
movl 0x28(%r13), %eax
movl %eax, 0x28(%r12)
movzwl 0x2c(%r13), %eax
movw %ax, 0x2c(%r12)
movl 0x118(%rsp), %eax
movl %eax, (%r13)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5420
movzwl 0x24(%rbx), %eax
movw %ax, 0x2c(%r13)
movl 0x20(%rbx), %eax
movl %eax, 0x28(%r13)
movq 0x120(%rsp), %rdi
cmpq %r15, %rdi
je 0xe4cc
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %r12
addq $0x30, %rbp
cmpq 0x10(%rsp), %r12
jne 0xe3b1
movq 0x20(%rsp), %r15
movq 0x28(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq %rax, %r15
je 0xe89c
leaq 0x1d0(%rsp), %r13
leaq 0x518(%rsp), %r12
leaq 0x528(%rsp), %r14
movq 0xa8(%rsp), %rax
incl %eax
movq %rax, 0xa8(%rsp)
leaq 0xa38(%rsp), %rbx
leaq 0x170(%rsp), %rbp
movl (%r15), %eax
movl %eax, 0x1c8(%rsp)
leaq 0x1e0(%rsp), %rax
movq %rax, 0x1d0(%rsp)
movq 0x8(%r15), %rsi
movq 0x10(%r15), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0xb544
movzwl 0x2c(%r15), %eax
movw %ax, 0x24(%r13)
movl 0x28(%r15), %eax
movl %eax, 0x20(%r13)
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x1a9c6
movl 0x1c8(%rsp), %eax
movl %eax, 0x510(%rsp)
movq %r14, 0x518(%rsp)
movq 0x1d0(%rsp), %rsi
movq 0x1d8(%rsp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xb544
movzwl 0x24(%r13), %eax
movw %ax, 0x24(%r12)
movl 0x20(%r13), %eax
movl %eax, 0x20(%r12)
leaq 0x118(%rsp), %rdi
movq %rbx, %rsi
leaq 0x510(%rsp), %rdx
callq 0x15a46
movq 0x518(%rsp), %rdi
cmpq %r14, %rdi
je 0xe5f5
movq 0x528(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xa60(%rsp), %rdi
leaq 0xa70(%rsp), %rax
cmpq %rax, %rdi
je 0xe61a
movq 0xa70(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xa40(%rsp), %rdi
leaq 0xa50(%rsp), %rax
cmpq %rax, %rdi
je 0xe63f
movq 0xa50(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x988(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x1a9c6
leaq 0x9e0(%rsp), %r13
movq %r13, %rdi
movq %rbp, %rsi
callq 0x1a9c6
leaq 0x540(%rsp), %rdi
leaq 0x988(%rsp), %rsi
movq %r13, %rdx
callq 0x15216
movq 0xa08(%rsp), %rdi
leaq 0xa18(%rsp), %rax
cmpq %rax, %rdi
je 0xe6a4
movq 0xa18(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r12, %r13
movq 0x9e8(%rsp), %rdi
leaq 0x9f8(%rsp), %rax
cmpq %rax, %rdi
je 0xe6cc
movq 0x9f8(%rsp), %rsi
incq %rsi
callq 0x5360
movq %rbx, %r12
movq 0x9b0(%rsp), %rdi
leaq 0x9c0(%rsp), %rax
cmpq %rax, %rdi
je 0xe6f4
movq 0x9c0(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r14, %rbx
movq 0x990(%rsp), %rdi
leaq 0x9a0(%rsp), %rax
cmpq %rax, %rdi
je 0xe71c
movq 0x9a0(%rsp), %rsi
incq %rsi
callq 0x5360
movl 0x1c8(%rsp), %eax
xorl %ebp, %ebp
cmpl 0x570(%rsp), %eax
jne 0xe748
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
cmpl $0x3, %eax
je 0xe748
cmpl $0x6, %eax
je 0xe748
xorl %ebp, %ebp
cmpl $0xa, %eax
sete %bpl
negl %ebp
leaq 0x540(%rsp), %rdi
callq 0x15b78
addl 0x38(%rsp), %ebp
xorb 0xb0(%rsp), %al
movzbl %al, %eax
movl 0x3c(%rsp), %r14d
subl %eax, %r14d
movl %r14d, %eax
orl %ebp, %eax
js 0xe7c3
movq 0x40(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0xb14e
movq 0xa8(%rsp), %rdi
movl %ebp, %esi
movl %r14d, %edx
movq 0x40(%rsp), %rcx
movl 0xc(%rsp), %r8d
callq 0xc02a
movl $0x1, %ebp
testb %al, %al
jne 0xe7c8
movq 0x40(%rsp), %rdi
movq 0x8(%rdi), %rsi
addq $-0x58, %rsi
movq %rsi, 0x8(%rdi)
callq 0xba7e
xorl %ebp, %ebp
jmp 0xe7c8
movl $0x3, %ebp
movq 0x548(%rsp), %rdi
leaq 0x558(%rsp), %rax
cmpq %rax, %rdi
je 0xe7ed
movq 0x558(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0xe812
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
je 0xe837
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x1d0(%rsp), %rdi
leaq 0x1e0(%rsp), %rax
cmpq %rax, %rdi
je 0xe85c
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x5360
cmpl $0x3, %ebp
je 0xe865
testl %ebp, %ebp
jne 0xe892
addq $0x30, %r15
cmpq 0x10(%rsp), %r15
movq %rbx, %r14
movq %r12, %rbx
movq %r13, %r12
leaq 0x1d0(%rsp), %r13
leaq 0x170(%rsp), %rbp
jne 0xe531
movl $0x2, %ebp
testb $0x1, %bpl
sete %bpl
jmp 0xe89f
movb $0x1, %bpl
leaq 0x208(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe8c0
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x588(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe8e1
movq 0x588(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x918(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe902
movq 0x918(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xf8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe923
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe944
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe965
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe980
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5360
movb $0x1, %bl
testb %bpl, %bpl
je 0xea11
leaq 0x50(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x24316
imulq $0x1081c8, 0x218(%rsp), %rax # imm = 0x1081C8
addq 0x3a5c3(%rip), %rax     # 0x48f70
leaq 0x88(%rsp), %rcx
movslq 0x14(%rcx), %rdx
movslq 0x38(%rsp), %rsi
movslq 0x3c(%rsp), %rdi
imulq $0xbbd, %rdx, %rdx      # imm = 0xBBD
imulq $0x259, %rsi, %rsi      # imm = 0x259
addq %rax, %rsi
addq %rdx, %rsi
movb $0x0, (%rdi,%rsi)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0xe9f4
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xea0f
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5360
xorl %ebx, %ebx
leaq 0x1a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xea32
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x188(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xea53
movq 0x188(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x20(%rsp), %rdi
callq 0xb17a
movl %ebx, %eax
addq $0x18a8, %rsp           # imm = 0x18A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0xea93
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xeaaf
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0xead4
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
movb $0x1, %bl
jmp 0xea11
movq %rax, %rbx
leaq 0x5b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xeb04
movq 0x5b8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeb04
movq %rax, %rbx
movq 0x2d0(%rsp), %rdi
cmpq %r14, %rdi
je 0xeb26
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeb26
movq %rax, %rbx
leaq 0xa90(%rsp), %rdi
callq 0xb116
jmp 0xeb38
movq %rax, %rbx
leaq 0x16f0(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x5e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xeb6e
movq 0x5e8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeb6e
movq %rax, %rbx
movq 0x2f0(%rsp), %rdi
cmpq %r14, %rdi
je 0xeb90
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeb90
movq %rax, %rbx
leaq 0xae8(%rsp), %rdi
callq 0xb116
jmp 0xeba2
movq %rax, %rbx
leaq 0xb40(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x618(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xebd8
movq 0x618(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xebd8
movq %rax, %rbx
movq 0x310(%rsp), %rdi
cmpq %r14, %rdi
je 0xebfa
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xebfa
movq %rax, %rbx
leaq 0xb98(%rsp), %rdi
callq 0xb116
jmp 0xec0c
movq %rax, %rbx
leaq 0xbf0(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x648(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xec42
movq 0x648(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xec42
movq %rax, %rbx
movq 0x330(%rsp), %rdi
cmpq %r14, %rdi
je 0xec64
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xec64
movq %rax, %rbx
leaq 0xc48(%rsp), %rdi
callq 0xb116
jmp 0xec76
movq %rax, %rbx
leaq 0xca0(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x678(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xecac
movq 0x678(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xecac
movq %rax, %rbx
movq 0x350(%rsp), %rdi
cmpq %r14, %rdi
je 0xecce
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xecce
movq %rax, %rbx
leaq 0xcf8(%rsp), %rdi
callq 0xb116
jmp 0xece0
movq %rax, %rbx
leaq 0xd50(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x768(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xed62
movq 0x768(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xed62
movq %rax, %rbx
leaq 0x6a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xed84
movq 0x6a8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xed84
movq %rax, %rbx
leaq 0x6d8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xeda6
movq 0x6d8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeda6
movq %rax, %rbx
movq 0x3f0(%rsp), %rdi
cmpq %r14, %rdi
je 0xedc8
movq 0x400(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xedc8
movq %rax, %rbx
movq 0x370(%rsp), %rdi
cmpq %r14, %rdi
je 0xedda
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xedda
movq %rax, %rbx
movq 0x390(%rsp), %rdi
cmpq %r14, %rdi
je 0xedec
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xedec
movq %rax, %rbx
leaq 0x1010(%rsp), %rdi
callq 0xb116
jmp 0xedfe
movq %rax, %rbx
leaq 0xda8(%rsp), %rdi
callq 0xb116
jmp 0xee0e
movq %rax, %rbx
leaq 0xe58(%rsp), %rdi
callq 0xb116
jmp 0xee1e
movq %rax, %rbx
leaq 0x17a0(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0xe00(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x1748(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x708(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xee7a
movq 0x708(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xee7a
movq %rax, %rbx
leaq 0x798(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xee9c
movq 0x798(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xee9c
movq %rax, %rbx
movq 0x3b0(%rsp), %rdi
cmpq %r14, %rdi
je 0xeebe
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeebe
movq %rax, %rbx
movq 0x410(%rsp), %rdi
cmpq %r14, %rdi
je 0xeed0
movq 0x420(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeed0
movq %rax, %rbx
leaq 0xeb0(%rsp), %rdi
callq 0xb116
jmp 0xeee2
movq %rax, %rbx
leaq 0x1068(%rsp), %rdi
callq 0xb116
jmp 0xeef2
movq %rax, %rbx
leaq 0xf08(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x10c0(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x7c8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xef28
movq 0x7c8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xef28
movq %rax, %rbx
movq 0x430(%rsp), %rdi
cmpq %r14, %rdi
je 0xef4a
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xef4a
movq %rax, %rbx
leaq 0x1118(%rsp), %rdi
callq 0xb116
jmp 0xef5c
movq %rax, %rbx
leaq 0x1170(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x7f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xef92
movq 0x7f8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xef92
movq %rax, %rbx
movq 0x450(%rsp), %rdi
cmpq %r14, %rdi
je 0xefb4
movq 0x460(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xefb4
movq %rax, %rbx
leaq 0x11c8(%rsp), %rdi
callq 0xb116
jmp 0xefc6
movq %rax, %rbx
leaq 0x1220(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x828(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xeffc
movq 0x828(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeffc
movq %rax, %rbx
movq 0x470(%rsp), %rdi
cmpq %r14, %rdi
je 0xf01e
movq 0x480(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf01e
movq %rax, %rbx
leaq 0x1278(%rsp), %rdi
callq 0xb116
jmp 0xf030
movq %rax, %rbx
leaq 0x12d0(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x858(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf08c
movq 0x858(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf08c
movq %rax, %rbx
leaq 0x888(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf0ae
movq 0x888(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf0ae
movq %rax, %rbx
movq 0x490(%rsp), %rdi
cmpq %r14, %rdi
je 0xf0d0
movq 0x4a0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf0d0
movq %rax, %rbx
movq 0x4b0(%rsp), %rdi
cmpq %r14, %rdi
je 0xf0e2
movq 0x4c0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf0e2
movq %rax, %rbx
leaq 0x1328(%rsp), %rdi
callq 0xb116
jmp 0xf0f4
movq %rax, %rbx
leaq 0x13d8(%rsp), %rdi
callq 0xb116
jmp 0xf104
movq %rax, %rbx
leaq 0x1380(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x17f8(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x8b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf13a
movq 0x8b8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf13a
movq %rax, %rbx
movq 0x4d0(%rsp), %rdi
cmpq %r14, %rdi
je 0xf15c
movq 0x4e0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf15c
movq %rax, %rbx
leaq 0x1430(%rsp), %rdi
callq 0xb116
jmp 0xf16e
movq %rax, %rbx
leaq 0x1488(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xf19f
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf19f
movq %rax, %rbx
movq 0x250(%rsp), %rdi
cmpq %r14, %rdi
je 0xf5b2
movq 0x260(%rsp), %rsi
jmp 0xf469
jmp 0xf3fc
movq %rax, %rbx
leaq 0x738(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf1eb
movq 0x738(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf1eb
movq %rax, %rbx
movq 0x3d0(%rsp), %rdi
cmpq %r14, %rdi
je 0xf20d
movq 0x3e0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf20d
movq %rax, %rbx
leaq 0xf60(%rsp), %rdi
callq 0xb116
jmp 0xf21f
movq %rax, %rbx
leaq 0xfb8(%rsp), %rdi
jmp 0xf28e
movq %rax, %rbx
leaq 0x8e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf252
movq 0x8e8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf252
movq %rax, %rbx
movq 0x4f0(%rsp), %rdi
cmpq %r14, %rdi
je 0xf274
movq 0x500(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf274
movq %rax, %rbx
leaq 0x14e0(%rsp), %rdi
callq 0xb116
jmp 0xf286
movq %rax, %rbx
leaq 0x1538(%rsp), %rdi
callq 0xb116
jmp 0xf538
movq %rax, %rbx
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf2c1
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf2c1
movq %rax, %rbx
movq 0x2b0(%rsp), %rdi
cmpq %r14, %rdi
je 0xf538
movq 0x2c0(%rsp), %rsi
jmp 0xf530
jmp 0xf476
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xf308
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf308
movq %rax, %rbx
movq 0x270(%rsp), %rdi
cmpq %r14, %rdi
je 0xf5b2
movq 0x280(%rsp), %rsi
jmp 0xf469
jmp 0xf3fc
movq %rax, %rbx
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf34e
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf34e
movq %rax, %rbx
movq 0x290(%rsp), %rdi
cmpq %r14, %rdi
je 0xf5b2
movq 0x2a0(%rsp), %rsi
jmp 0xf469
jmp 0xf3fc
jmp 0xf3fc
movq %rax, %rbx
jmp 0xf559
movq %rax, %rbx
leaq 0x1590(%rsp), %rdi
callq 0xb116
jmp 0xf393
movq %rax, %rbx
leaq 0x15e8(%rsp), %rdi
callq 0xb116
jmp 0xf57a
jmp 0xf3a7
movq %rax, %rbx
jmp 0xf57a
movq %rax, %rbx
leaq 0x1640(%rsp), %rdi
callq 0xb116
jmp 0xf3c4
movq %rax, %rbx
leaq 0x1698(%rsp), %rdi
callq 0xb116
jmp 0xf59b
movq %rax, %rbx
jmp 0xf59b
movq %rax, %rbx
jmp 0xf5a8
jmp 0xf3fc
movq %rax, %rbx
jmp 0xf5bf
jmp 0xf476
jmp 0xf476
movq %rax, %rbx
jmp 0xf42c
movq %rax, %rbx
jmp 0xf5b2
movq %rax, %rbx
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0xf42c
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x930(%rsp), %rdi
jmp 0xf443
movq %rax, %rbx
jmp 0xf448
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb116
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0xf5b2
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf5b2
movq %rax, %rbx
jmp 0xf538
movq %rax, %rbx
jmp 0xf513
movq %rax, %rbx
jmp 0xf4ab
movq %rax, %rbx
movq 0x518(%rsp), %rdi
cmpq %r14, %rdi
je 0xf4ab
movq 0x528(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xa38(%rsp), %rdi
jmp 0xf50e
movq %rax, %rbx
jmp 0xf506
movq %rax, %rbx
jmp 0xf4cf
movq %rax, %rbx
leaq 0x9e0(%rsp), %rdi
callq 0xb116
leaq 0x988(%rsp), %rdi
callq 0xb116
jmp 0xf506
movq %rax, %rbx
movq 0x548(%rsp), %rdi
leaq 0x558(%rsp), %rax
cmpq %rax, %rdi
je 0xf506
movq 0x558(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x118(%rsp), %rdi
callq 0xb116
movq 0x1d0(%rsp), %rdi
leaq 0x1e0(%rsp), %rax
cmpq %rax, %rdi
je 0xf538
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x208(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf559
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x588(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf57a
movq 0x588(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x918(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf59b
movq 0x918(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xc0(%rsp), %rdi
callq 0xb116
leaq 0x50(%rsp), %rdi
callq 0xb116
leaq 0x170(%rsp), %rdi
callq 0xb116
leaq 0x20(%rsp), %rdi
callq 0xb17a
movq %rbx, %rdi
callq 0x55e0
nop