// File: /workspace/github_cpp_makefile_star2_O3/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 $0x1858, %rsp           # imm = 0x1858
movl %r8d, %r12d
movq %rcx, %r13
movl %edx, 0x4c(%rsp)
movl %esi, 0x48(%rsp)
movl %edi, %r15d
testl %edi, %edi
je 0xc0ba
leaq 0x9c064a9(%rip), %rax   # 0x9c124a8
movq (%rax), %rdi
callq 0x242b0
movb $0x1, %bl
cmpl %r15d, %eax
jbe 0xea6b
movq %r13, %rsi
movq %r15, 0x40(%rsp)
movl %r15d, %eax
movq %rax, %r15
imulq $0x1081c8, %rax, %r14   # imm = 0x1081C8
addq 0x3cf42(%rip), %r14     # 0x48f70
leaq 0x178(%rsp), %rbx
movq %rbx, %rdi
callq 0x2433e
movslq 0x4c(%rbx), %rax
movslq 0x48(%rsp), %rcx
movslq 0x4c(%rsp), %rdx
imulq $0xbbd, %rax, %rax      # imm = 0xBBD
imulq $0x259, %rcx, %rcx      # imm = 0x259
addq %r14, %rcx
addq %rax, %rcx
movb (%rdx,%rcx), %bpl
movq 0x28(%rbx), %rdi
leaq 0x1b0(%rsp), %rax
cmpq %rax, %rdi
je 0xc085
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x190(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc0a6
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x5360
testb %bpl, %bpl
movq %r15, %rbp
movq 0x40(%rsp), %r15
jne 0xc0f5
xorl %ebx, %ebx
jmp 0xea6b
leaq 0x3d6ef(%rip), %rdi     # 0x497b0
movl $0x9bc8cf8, %edx        # imm = 0x9BC8CF8
movl $0x1, %esi
callq 0x51f0
callq 0x5240
movl %eax, %edi
callq 0x5310
leaq 0x9c063c5(%rip), %rax   # 0x9c124a8
movq (%rax), %rdi
callq 0x242b0
testl %eax, %eax
je 0xc91a
xorl %ebp, %ebp
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
leaq 0x9c0639b(%rip), %rbx   # 0x9c124a8
movq (%rbx), %rax
imulq $0x58, %rbp, %rsi
addq (%rax), %rsi
leaq 0x178(%rsp), %rdi
callq 0x1aa22
testl %r15d, %r15d
movq %rbp, 0x220(%rsp)
je 0xc3df
movq (%rbx), %rax
leal -0x1(%r15), %ecx
imulq $0x58, %rcx, %rsi
addq (%rax), %rsi
leaq 0x68(%rsp), %rdi
callq 0x1aa22
leaq 0xc8(%rsp), %rdi
movq %r13, %rsi
callq 0x2433e
leaq 0x16a0(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1aa22
leaq 0x1648(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x908(%rsp), %rdi
leaq 0x16a0(%rsp), %rsi
leaq 0x1648(%rsp), %rdx
callq 0x1528a
leaq 0x1680(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc1c2
movq 0x1680(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1660(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc1e3
movq 0x1660(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x16d8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc204
movq 0x16d8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x16b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc225
movq 0x16b8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x908(%rsp), %rdi
callq 0x15be4
movb %al, 0x14(%rsp)
leaq 0x15f0(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x1aa22
leaq 0x1598(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0x578(%rsp), %rdi
leaq 0x15f0(%rsp), %rsi
leaq 0x1598(%rsp), %rdx
callq 0x1528a
leaq 0x15d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc29b
movq 0x15d0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x15b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc2bc
movq 0x15b0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1628(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc2dd
movq 0x1628(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1608(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc2fe
movq 0x1608(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x200(%rsp), %rdi
leaq 0x578(%rsp), %rsi
callq 0x15418
leaq 0x178(%rsp), %rdi
callq 0x1c1fa
movb 0x14(%rsp), %bl
xorb $0x1, %bl
movzbl %r12b, %ecx
movl %ecx, 0x10(%rsp)
testb %al, %al
movq %r13, 0x60(%rsp)
movq %r15, 0x40(%rsp)
movb %bl, 0x58(%rsp)
je 0xc921
leaq 0x2c8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2ecc8(%rip), %rsi     # 0x3b020
leaq 0x2ecc3(%rip), %rdx     # 0x3b022
leaq 0x2b8(%rsp), %rdi
callq 0xb5f8
leaq 0x120(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
movl $0x1, %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0xfc0e
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc3b9
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x2b8(%rsp), %rdi
cmpq %r14, %rdi
je 0xe4ea
movq 0x2c8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xe4ea
leaq 0x2a8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2ec2e(%rip), %rsi     # 0x3b020
leaq 0x2ec29(%rip), %rdx     # 0x3b022
leaq 0x298(%rsp), %rdi
callq 0xb5f8
movzbl %r12b, %edx
leaq 0x68(%rsp), %rdi
leaq 0x298(%rsp), %rsi
movl %edx, 0x18(%rsp)
callq 0x14fd4
leaq 0x20(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xfc0e
leaq 0x80(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc450
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x298(%rsp), %rdi
cmpq %r14, %rdi
je 0xc46d
movq 0x2a8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x288(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2eba3(%rip), %rsi     # 0x3b023
leaq 0x2eb9e(%rip), %rdx     # 0x3b025
leaq 0x278(%rsp), %rdi
callq 0xb5f8
leaq 0x68(%rsp), %rdi
leaq 0x278(%rsp), %rsi
movl 0x18(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xfc0e
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xc4db
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r13, %rbp
movq 0x278(%rsp), %rdi
cmpq %r14, %rdi
je 0xc4fb
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x5360
testb %r12b, %r12b
je 0xc590
leaq 0x268(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2eb0f(%rip), %rsi     # 0x3b026
leaq 0x2eb0a(%rip), %rdx     # 0x3b028
leaq 0x258(%rsp), %rdi
callq 0xb5f8
leaq 0x68(%rsp), %rdi
leaq 0x258(%rsp), %rsi
movl $0x1, %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0xfc0e
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xc573
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x258(%rsp), %rdi
cmpq %r14, %rdi
je 0xc590
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x20(%rsp), %r15
movq 0x28(%rsp), %rax
movq %rax, 0x58(%rsp)
cmpq %rax, %r15
je 0xe995
leaq 0x30(%r15), %r12
movq 0x58(%rsp), %rbx
cmpq %rbx, %r12
je 0xc711
movq %rbp, 0x60(%rsp)
movl $0x30, %ebp
leaq 0x80(%rsp), %r14
movq %r15, 0x40(%rsp)
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 %r15, %r13
cmpq %r13, %r12
je 0xc6f1
movl (%r12), %eax
movl %eax, 0x68(%rsp)
movq %r14, 0x70(%rsp)
movq 0x8(%r12), %rcx
leaq 0x18(%r12), %rax
cmpq %rcx, %rax
je 0xc637
movq %rcx, 0x70(%rsp)
movq (%rax), %rcx
movq %rcx, 0x80(%rsp)
jmp 0xc63e
movups (%rax), %xmm0
movups %xmm0, (%r14)
movq %r14, %rbx
leaq 0x8(%r12), %rdi
movq 0x10(%r12), %rcx
movq %rcx, 0x78(%rsp)
movq %rax, 0x8(%r12)
movq $0x0, 0x10(%r12)
movb $0x0, 0x18(%r12)
movzwl 0x2c(%r12), %eax
leaq 0x70(%rsp), %r15
movw %ax, 0x24(%r15)
movl 0x28(%r12), %eax
movl %eax, 0x20(%r15)
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 0x68(%rsp), %eax
movl %eax, (%r13)
movq %r14, %rdi
movq %r15, %rsi
callq 0x5420
movzwl 0x24(%r15), %eax
movw %ax, 0x2c(%r13)
movl 0x20(%r15), %eax
movl %eax, 0x28(%r13)
movq 0x70(%rsp), %rdi
cmpq %rbx, %rdi
movq %rbx, %r14
je 0xc6e7
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x58(%rsp), %rbx
movq 0x40(%rsp), %r15
addq $0x30, %r12
addq $0x30, %rbp
cmpq %rbx, %r12
jne 0xc5d1
movq 0x20(%rsp), %r15
movq 0x28(%rsp), %rbx
movq 0x60(%rsp), %rbp
movq %rbx, 0x58(%rsp)
cmpq %rbx, %r15
je 0xe995
leaq 0xd0(%rsp), %rbx
leaq 0x230(%rsp), %r14
leaq 0x68(%rsp), %r12
movl (%r15), %eax
movl %eax, 0xc8(%rsp)
leaq 0xe0(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq 0x8(%r15), %rsi
movq 0x10(%r15), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0xb50a
movzwl 0x2c(%r15), %eax
movw %ax, 0x24(%rbx)
movl 0x28(%r15), %eax
movl %eax, 0x20(%rbx)
leaq 0x938(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
movl 0xc8(%rsp), %eax
movl %eax, 0x228(%rsp)
leaq 0x240(%rsp), %rax
movq %rax, 0x230(%rsp)
movq 0xd0(%rsp), %rsi
movq 0xd8(%rsp), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0xb50a
movzwl 0x24(%rbx), %eax
movw %ax, 0x24(%r14)
movl 0x20(%rbx), %eax
movl %eax, 0x20(%r14)
movq %r12, %rdi
leaq 0x938(%rsp), %rsi
leaq 0x228(%rsp), %rdx
callq 0x15ab2
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0xc80c
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x960(%rsp), %rdi
leaq 0x970(%rsp), %rax
cmpq %rax, %rdi
je 0xc831
movq 0x970(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x940(%rsp), %rdi
leaq 0x950(%rsp), %rax
cmpq %rax, %rdi
je 0xc856
movq 0x950(%rsp), %rsi
incq %rsi
callq 0x5360
movq %rbp, %r13
movq %rbp, %rdi
movq %r12, %rsi
callq 0xb118
movl $0x1, %edi
movl 0x48(%rsp), %esi
movl 0x4c(%rsp), %edx
movq %r13, %rcx
movl 0x18(%rsp), %r8d
callq 0xbfce
testb %al, %al
jne 0xea7f
movq %rbp, %rdi
movq 0x8(%rbp), %rsi
addq $-0x58, %rsi
movq %rsi, 0x8(%rbp)
callq 0xba60
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xc8bf
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xc8e1
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0xc906
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %r15
cmpq 0x58(%rsp), %r15
jne 0xc734
jmp 0xe995
movb $0x1, %bl
jmp 0xea6b
leaq 0x2e6fb(%rip), %rsi     # 0x3b023
leaq 0x200(%rsp), %rdi
callq 0x5100
movzbl %bl, %ecx
movl %ecx, 0x18(%rsp)
testl %eax, %eax
je 0xca9b
leaq 0x1540(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0x14e8(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x508(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2e6a2(%rip), %rsi     # 0x3b023
leaq 0x2e69d(%rip), %rdx     # 0x3b025
leaq 0x4f8(%rsp), %rdi
callq 0xb5f8
leaq 0x8d8(%rsp), %rdi
leaq 0x4f8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0x1540(%rsp), %rcx
leaq 0x14e8(%rsp), %r8
leaq 0x8d8(%rsp), %r9
movl $0x1, %edi
movl 0x18(%rsp), %esi
callq 0xf5fa
leaq 0x8f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc9fa
movq 0x8f0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x4f8(%rsp), %rdi
cmpq %r14, %rdi
je 0xca17
movq 0x508(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1520(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xca38
movq 0x1520(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1500(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xca59
movq 0x1500(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1578(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xca7a
movq 0x1578(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1558(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xca9b
movq 0x1558(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x2e584(%rip), %rsi     # 0x3b026
leaq 0x200(%rsp), %rdi
callq 0x5100
testl %eax, %eax
sete %al
xorb $0x1, %r12b
orb %r12b, %al
jne 0xcc19
leaq 0x1490(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0x1438(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x4e8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2e528(%rip), %rsi     # 0x3b026
leaq 0x2e523(%rip), %rdx     # 0x3b028
leaq 0x4d8(%rsp), %rdi
callq 0xb5f8
leaq 0x8a8(%rsp), %rdi
leaq 0x4d8(%rsp), %rsi
movl $0x1, %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0x1490(%rsp), %rcx
leaq 0x1438(%rsp), %r8
leaq 0x8a8(%rsp), %r9
movl $0x1, %edi
movl 0x18(%rsp), %esi
callq 0xf5fa
leaq 0x8c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcb78
movq 0x8c0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x4d8(%rsp), %rdi
cmpq %r14, %rdi
je 0xcb95
movq 0x4e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1470(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcbb6
movq 0x1470(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1450(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcbd7
movq 0x1450(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x14c8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcbf8
movq 0x14c8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x14a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcc19
movq 0x14a8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x9c05888(%rip), %rax   # 0x9c124a8
movq (%rax), %rdi
callq 0x242b0
decl %eax
cmpl %r15d, %eax
jne 0xcd79
leaq 0x1800(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0x13e0(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x4c8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2e3b0(%rip), %rsi     # 0x3b020
leaq 0x2e3ab(%rip), %rdx     # 0x3b022
leaq 0x4b8(%rsp), %rdi
callq 0xb5f8
leaq 0x878(%rsp), %rdi
leaq 0x4b8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0x1800(%rsp), %rcx
leaq 0x13e0(%rsp), %r8
leaq 0x878(%rsp), %r9
movl $0x1, %edi
movl 0x18(%rsp), %esi
callq 0xf5fa
leaq 0x890(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcce9
movq 0x890(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x4b8(%rsp), %rdi
cmpq %r14, %rdi
je 0xcd06
movq 0x4c8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1418(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcd27
movq 0x1418(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x13f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcd48
movq 0x13f8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1838(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcd69
movq 0x1838(%rsp), %rsi
incq %rsi
callq 0x5360
movl %r12d, %ebx
leaq 0x1818(%rsp), %rax
jmp 0xd56d
leaq 0x1388(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0x1330(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x4a8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2e273(%rip), %rsi     # 0x3b029
leaq 0x2e26e(%rip), %rdx     # 0x3b02b
leaq 0x498(%rsp), %rdi
callq 0xb5f8
leaq 0x848(%rsp), %rdi
leaq 0x498(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0x1388(%rsp), %rcx
leaq 0x1330(%rsp), %r8
leaq 0x848(%rsp), %r9
movl $0x1, %edi
movl 0x18(%rsp), %esi
callq 0xf5fa
leaq 0x860(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xce2f
movq 0x860(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x498(%rsp), %rdi
cmpq %r14, %rdi
je 0xce4c
movq 0x4a8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1368(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xce6d
movq 0x1368(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1348(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xce8e
movq 0x1348(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x13c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xceaf
movq 0x13c0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x13a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xced0
movq 0x13a0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x12d8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0x1280(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x488(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2e11f(%rip), %rsi     # 0x3b02c
leaq 0x2e11a(%rip), %rdx     # 0x3b02e
leaq 0x478(%rsp), %rdi
callq 0xb5f8
leaq 0x818(%rsp), %rdi
leaq 0x478(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0x12d8(%rsp), %rcx
leaq 0x1280(%rsp), %r8
leaq 0x818(%rsp), %r9
movl $0x1, %edi
movl 0x18(%rsp), %esi
callq 0xf5fa
leaq 0x830(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcf86
movq 0x830(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x478(%rsp), %rdi
cmpq %r14, %rdi
je 0xcfa3
movq 0x488(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x12b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcfc4
movq 0x12b8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1298(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcfe5
movq 0x1298(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1310(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd006
movq 0x1310(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x12f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd027
movq 0x12f0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1228(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0x11d0(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x468(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2dfcb(%rip), %rsi     # 0x3b02f
leaq 0x2dfc6(%rip), %rdx     # 0x3b031
leaq 0x458(%rsp), %rdi
callq 0xb5f8
leaq 0x7e8(%rsp), %rdi
leaq 0x458(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0x1228(%rsp), %rcx
leaq 0x11d0(%rsp), %r8
leaq 0x7e8(%rsp), %r9
movl $0x1, %edi
movl 0x18(%rsp), %esi
callq 0xf5fa
leaq 0x800(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd0dd
movq 0x800(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x458(%rsp), %rdi
cmpq %r14, %rdi
je 0xd0fa
movq 0x468(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1208(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd11b
movq 0x1208(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x11e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd13c
movq 0x11e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1260(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd15d
movq 0x1260(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1240(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd17e
movq 0x1240(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1178(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0x1120(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x448(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2de77(%rip), %rsi     # 0x3b032
leaq 0x2de72(%rip), %rdx     # 0x3b034
leaq 0x438(%rsp), %rdi
callq 0xb5f8
leaq 0x7b8(%rsp), %rdi
leaq 0x438(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0x1178(%rsp), %rcx
leaq 0x1120(%rsp), %r8
leaq 0x7b8(%rsp), %r9
movl $0x1, %edi
movl 0x18(%rsp), %esi
callq 0xf5fa
leaq 0x7d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd234
movq 0x7d0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x438(%rsp), %rdi
cmpq %r14, %rdi
je 0xd251
movq 0x448(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1158(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd272
movq 0x1158(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd293
movq 0x1138(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x11b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd2b4
movq 0x11b0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1190(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd2d5
movq 0x1190(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x10c8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0x1070(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x428(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2dd23(%rip), %rsi     # 0x3b035
leaq 0x2dd1f(%rip), %rdx     # 0x3b038
leaq 0x418(%rsp), %rdi
callq 0xb5f8
leaq 0x788(%rsp), %rdi
leaq 0x418(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0x10c8(%rsp), %rcx
leaq 0x1070(%rsp), %r8
leaq 0x788(%rsp), %r9
movl $0x1, %edi
movl 0x18(%rsp), %esi
callq 0xf5fa
leaq 0x7a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd38b
movq 0x7a0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x418(%rsp), %rdi
cmpq %r14, %rdi
je 0xd3a8
movq 0x428(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x10a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd3c9
movq 0x10a8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1088(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd3ea
movq 0x1088(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1100(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd40b
movq 0x1100(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x10e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd42c
movq 0x10e0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x17a8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0x1018(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x408(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2dbd0(%rip), %rsi     # 0x3b039
leaq 0x2dbcc(%rip), %rdx     # 0x3b03c
leaq 0x3f8(%rsp), %rdi
callq 0xb5f8
leaq 0x758(%rsp), %rdi
leaq 0x3f8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0x17a8(%rsp), %rcx
leaq 0x1018(%rsp), %r8
leaq 0x758(%rsp), %r9
movl $0x1, %edi
movl 0x18(%rsp), %esi
callq 0xf5fa
leaq 0x770(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd4e2
movq 0x770(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x3f8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd4ff
movq 0x408(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1050(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd520
movq 0x1050(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1030(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd541
movq 0x1030(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x17e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd562
movq 0x17e0(%rsp), %rsi
incq %rsi
callq 0x5360
movl %r12d, %ebx
leaq 0x17c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd581
movq (%rax), %rsi
incq %rsi
callq 0x5360
movq 0x20(%rsp), %r12
movq 0x28(%rsp), %r14
cmpq %r14, %r12
movq %r12, 0x18(%rsp)
je 0xd70e
leaq 0x30(%r12), %r13
cmpq %r14, %r13
je 0xd711
movl %ebx, 0xc4(%rsp)
leaq 0x128(%rsp), %r12
movl $0x30, %r15d
movq %r14, 0x50(%rsp)
callq 0x50e0
cltq
movq %r15, %rcx
sarq $0x4, %rcx
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rcx
incq %rcx
cqto
idivq %rcx
leaq (%rdx,%rdx,2), %rbp
shlq $0x4, %rbp
addq 0x18(%rsp), %rbp
cmpq %rbp, %r13
je 0xd6df
movl (%r13), %eax
movl %eax, 0x120(%rsp)
leaq 0x138(%rsp), %rbx
movq %rbx, 0x128(%rsp)
movq 0x8(%r13), %rcx
leaq 0x18(%r13), %rax
cmpq %rcx, %rax
je 0xd638
movq %rcx, 0x128(%rsp)
movq (%rax), %rcx
movq %rcx, 0x138(%rsp)
jmp 0xd63e
movups (%rax), %xmm0
movups %xmm0, (%rbx)
leaq 0x8(%r13), %rdi
movq 0x10(%r13), %rcx
movq %rcx, 0x130(%rsp)
movq %rax, 0x8(%r13)
movq $0x0, 0x10(%r13)
movb $0x0, 0x18(%r13)
movzwl 0x2c(%r13), %eax
movw %ax, 0x24(%r12)
movl 0x28(%r13), %eax
movl %eax, 0x20(%r12)
movl (%rbp), %eax
movl %eax, (%r13)
leaq 0x8(%rbp), %r14
movq %r14, %rsi
callq 0x5420
movl 0x28(%rbp), %eax
movl %eax, 0x28(%r13)
movzwl 0x2c(%rbp), %eax
movw %ax, 0x2c(%r13)
movl 0x120(%rsp), %eax
movl %eax, (%rbp)
movq %r14, %rdi
movq %r12, %rsi
callq 0x5420
movzwl 0x24(%r12), %eax
movw %ax, 0x2c(%rbp)
movl 0x20(%r12), %eax
movl %eax, 0x28(%rbp)
movq 0x128(%rsp), %rdi
cmpq %rbx, %rdi
je 0xd6da
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x50(%rsp), %r14
addq $0x30, %r13
addq $0x30, %r15
cmpq %r14, %r13
jne 0xd5c1
movq 0x20(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x28(%rsp), %r14
movq 0x40(%rsp), %r15
movl 0xc4(%rsp), %r12d
jmp 0xd719
movq %r12, %r14
movl %ebx, %r12d
movq 0x40(%rsp), %r15
movq %r14, 0x50(%rsp)
leaq 0x2d8fe(%rip), %rsi     # 0x3b023
leaq 0x200(%rsp), %rdi
callq 0x5100
movzbl 0x14(%rsp), %ecx
movl %ecx, 0x14(%rsp)
testl %eax, %eax
je 0xd897
leaq 0xfc0(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0xf68(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x3e8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d8a3(%rip), %rsi     # 0x3b023
leaq 0x2d89e(%rip), %rdx     # 0x3b025
leaq 0x3d8(%rsp), %rdi
callq 0xb5f8
leaq 0x728(%rsp), %rdi
leaq 0x3d8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0xfc0(%rsp), %rcx
leaq 0xf68(%rsp), %r8
leaq 0x728(%rsp), %r9
xorl %edi, %edi
movl 0x14(%rsp), %esi
callq 0xf5fa
leaq 0x740(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd7f6
movq 0x740(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x3d8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd813
movq 0x3e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xfa0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd834
movq 0xfa0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xf80(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd855
movq 0xf80(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xff8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd876
movq 0xff8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xfd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd897
movq 0xfd8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x2d788(%rip), %rsi     # 0x3b026
leaq 0x200(%rsp), %rdi
callq 0x5100
testl %eax, %eax
sete %al
orb %r12b, %al
jne 0xda0e
leaq 0xf10(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0xeb8(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x3c8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d730(%rip), %rsi     # 0x3b026
leaq 0x2d72b(%rip), %rdx     # 0x3b028
leaq 0x3b8(%rsp), %rdi
callq 0xb5f8
leaq 0x6f8(%rsp), %rdi
leaq 0x3b8(%rsp), %rsi
movl $0x1, %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0xf10(%rsp), %rcx
leaq 0xeb8(%rsp), %r8
leaq 0x6f8(%rsp), %r9
xorl %edi, %edi
movl 0x14(%rsp), %esi
callq 0xf5fa
leaq 0x710(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd96d
movq 0x710(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x3b8(%rsp), %rdi
cmpq %r14, %rdi
je 0xd98a
movq 0x3c8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xef0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9ab
movq 0xef0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xed0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9cc
movq 0xed0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xf48(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xd9ed
movq 0xf48(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xf28(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xda0e
movq 0xf28(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x9c04a93(%rip), %rax   # 0x9c124a8
movq (%rax), %rdi
callq 0x242b0
decl %eax
cmpl %r15d, %eax
jne 0xdb6d
leaq 0x1750(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0xe60(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x3a8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d5bb(%rip), %rsi     # 0x3b020
leaq 0x2d5b6(%rip), %rdx     # 0x3b022
leaq 0x398(%rsp), %rdi
callq 0xb5f8
leaq 0x6c8(%rsp), %rdi
leaq 0x398(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0x1750(%rsp), %rcx
leaq 0xe60(%rsp), %r8
leaq 0x6c8(%rsp), %r9
xorl %edi, %edi
movl 0x14(%rsp), %esi
callq 0xf5fa
leaq 0x6e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdadb
movq 0x6e0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x398(%rsp), %rdi
cmpq %r14, %rdi
je 0xdaf8
movq 0x3a8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xe98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
movq 0x50(%rsp), %r14
je 0xdb1e
movq 0xe98(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xe78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdb3f
movq 0xe78(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1788(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdb60
movq 0x1788(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1768(%rsp), %rax
jmp 0xe351
leaq 0xe08(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0xdb0(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x388(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d47f(%rip), %rsi     # 0x3b029
leaq 0x2d47a(%rip), %rdx     # 0x3b02b
leaq 0x378(%rsp), %rdi
callq 0xb5f8
leaq 0x698(%rsp), %rdi
leaq 0x378(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0xe08(%rsp), %rcx
leaq 0xdb0(%rsp), %r8
leaq 0x698(%rsp), %r9
xorl %edi, %edi
movl 0x14(%rsp), %esi
callq 0xf5fa
leaq 0x6b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdc20
movq 0x6b0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x378(%rsp), %rdi
cmpq %r14, %rdi
je 0xdc3d
movq 0x388(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xde8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdc5e
movq 0xde8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xdc8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdc7f
movq 0xdc8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xe40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdca0
movq 0xe40(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xe20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdcc1
movq 0xe20(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd58(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0xd00(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x368(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d32e(%rip), %rsi     # 0x3b02c
leaq 0x2d329(%rip), %rdx     # 0x3b02e
leaq 0x358(%rsp), %rdi
callq 0xb5f8
leaq 0x668(%rsp), %rdi
leaq 0x358(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0xd58(%rsp), %rcx
leaq 0xd00(%rsp), %r8
leaq 0x668(%rsp), %r9
xorl %edi, %edi
movl 0x14(%rsp), %esi
callq 0xf5fa
leaq 0x680(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdd74
movq 0x680(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x358(%rsp), %rdi
cmpq %r14, %rdi
je 0xdd91
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xddb2
movq 0xd38(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xddd3
movq 0xd18(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xddf4
movq 0xd90(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xde15
movq 0xd70(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xca8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0xc50(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x348(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d1dd(%rip), %rsi     # 0x3b02f
leaq 0x2d1d8(%rip), %rdx     # 0x3b031
leaq 0x338(%rsp), %rdi
callq 0xb5f8
leaq 0x638(%rsp), %rdi
leaq 0x338(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0xca8(%rsp), %rcx
leaq 0xc50(%rsp), %r8
leaq 0x638(%rsp), %r9
xorl %edi, %edi
movl 0x14(%rsp), %esi
callq 0xf5fa
leaq 0x650(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdec8
movq 0x650(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x338(%rsp), %rdi
cmpq %r14, %rdi
je 0xdee5
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xc88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdf06
movq 0xc88(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xc68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdf27
movq 0xc68(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xce0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdf48
movq 0xce0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xcc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xdf69
movq 0xcc0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xbf8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0xba0(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x328(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2d08c(%rip), %rsi     # 0x3b032
leaq 0x2d087(%rip), %rdx     # 0x3b034
leaq 0x318(%rsp), %rdi
callq 0xb5f8
leaq 0x608(%rsp), %rdi
leaq 0x318(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0xbf8(%rsp), %rcx
leaq 0xba0(%rsp), %r8
leaq 0x608(%rsp), %r9
xorl %edi, %edi
movl 0x14(%rsp), %esi
callq 0xf5fa
leaq 0x620(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe01c
movq 0x620(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x318(%rsp), %rdi
cmpq %r14, %rdi
je 0xe039
movq 0x328(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xbd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe05a
movq 0xbd8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xbb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe07b
movq 0xbb8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xc30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe09c
movq 0xc30(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xc10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe0bd
movq 0xc10(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb48(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0xaf0(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x308(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2cf3b(%rip), %rsi     # 0x3b035
leaq 0x2cf37(%rip), %rdx     # 0x3b038
leaq 0x2f8(%rsp), %rdi
callq 0xb5f8
leaq 0x5d8(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0xb48(%rsp), %rcx
leaq 0xaf0(%rsp), %r8
leaq 0x5d8(%rsp), %r9
xorl %edi, %edi
movl 0x14(%rsp), %esi
callq 0xf5fa
leaq 0x5f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe170
movq 0x5f0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x2f8(%rsp), %rdi
cmpq %r14, %rdi
je 0xe18d
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb28(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe1ae
movq 0xb28(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb08(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe1cf
movq 0xb08(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb80(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe1f0
movq 0xb80(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe211
movq 0xb60(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x16f8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0xa98(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0x1aa22
leaq 0x2e8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2cdeb(%rip), %rsi     # 0x3b039
leaq 0x2cde7(%rip), %rdx     # 0x3b03c
leaq 0x2d8(%rsp), %rdi
callq 0xb5f8
leaq 0x5a8(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14fd4
leaq 0x20(%rsp), %rdx
leaq 0x16f8(%rsp), %rcx
leaq 0xa98(%rsp), %r8
leaq 0x5a8(%rsp), %r9
xorl %edi, %edi
movl 0x14(%rsp), %esi
callq 0xf5fa
leaq 0x5c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe2c4
movq 0x5c0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x2d8(%rsp), %rdi
cmpq %r14, %rdi
je 0xe2e1
movq 0x2e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xad0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
movq 0x50(%rsp), %r14
je 0xe307
movq 0xad0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xab0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe328
movq 0xab0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1730(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe349
movq 0x1730(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1710(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe365
movq (%rax), %rsi
incq %rsi
callq 0x5360
subq 0x18(%rsp), %r14
sarq $0x4, %r14
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %r14
movslq %r14d, %rax
leaq (%rax,%rax,2), %rcx
shlq $0x4, %rcx
addq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq %rcx, 0x50(%rsp)
cmpq %rax, %rcx
je 0xe4ea
movq 0x50(%rsp), %rax
leaq 0x30(%rax), %rbp
cmpq 0x18(%rsp), %rbp
je 0xe4ea
leaq 0x128(%rsp), %rbx
leaq 0x138(%rsp), %r15
movl $0x30, %r12d
callq 0x50e0
cltq
movq %r12, %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 0x50(%rsp), %r13
cmpq %r13, %rbp
je 0xe4d7
movl (%rbp), %eax
movl %eax, 0x120(%rsp)
movq %r15, 0x128(%rsp)
movq 0x8(%rbp), %rcx
leaq 0x18(%rbp), %rax
cmpq %rcx, %rax
je 0xe43c
movq %rcx, 0x128(%rsp)
movq (%rax), %rcx
movq %rcx, 0x138(%rsp)
jmp 0xe443
movups (%rax), %xmm0
movups %xmm0, (%r15)
leaq 0x8(%rbp), %rdi
movq 0x10(%rbp), %rcx
movq %rcx, 0x130(%rsp)
movq %rax, 0x8(%rbp)
movq $0x0, 0x10(%rbp)
movb $0x0, 0x18(%rbp)
movzwl 0x2c(%rbp), %eax
movw %ax, 0x24(%rbx)
movl 0x28(%rbp), %eax
movl %eax, 0x20(%rbx)
movl (%r13), %eax
movl %eax, (%rbp)
leaq 0x8(%r13), %r14
movq %r14, %rsi
callq 0x5420
movl 0x28(%r13), %eax
movl %eax, 0x28(%rbp)
movzwl 0x2c(%r13), %eax
movw %ax, 0x2c(%rbp)
movl 0x120(%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 0x128(%rsp), %rdi
cmpq %r15, %rdi
je 0xe4d7
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %rbp
addq $0x30, %r12
cmpq 0x18(%rsp), %rbp
jne 0xe3ce
movq 0x20(%rsp), %r15
movq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq %rax, %r15
je 0xe89b
leaq 0x1d8(%rsp), %r13
leaq 0x520(%rsp), %r12
leaq 0x530(%rsp), %r14
movq 0x40(%rsp), %rax
incl %eax
movq %rax, 0x40(%rsp)
leaq 0xa40(%rsp), %rbx
leaq 0x178(%rsp), %rbp
movl (%r15), %eax
movl %eax, 0x1d0(%rsp)
leaq 0x1e8(%rsp), %rax
movq %rax, 0x1d8(%rsp)
movq 0x8(%r15), %rsi
movq 0x10(%r15), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0xb50a
movzwl 0x2c(%r15), %eax
movw %ax, 0x24(%r13)
movl 0x28(%r15), %eax
movl %eax, 0x20(%r13)
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x1aa22
movl 0x1d0(%rsp), %eax
movl %eax, 0x518(%rsp)
movq %r14, 0x520(%rsp)
movq 0x1d8(%rsp), %rsi
movq 0x1e0(%rsp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xb50a
movzwl 0x24(%r13), %eax
movw %ax, 0x24(%r12)
movl 0x20(%r13), %eax
movl %eax, 0x20(%r12)
leaq 0x120(%rsp), %rdi
movq %rbx, %rsi
leaq 0x518(%rsp), %rdx
callq 0x15ab2
movq 0x520(%rsp), %rdi
cmpq %r14, %rdi
je 0xe5fa
movq 0x530(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xa68(%rsp), %rdi
leaq 0xa78(%rsp), %rax
cmpq %rax, %rdi
je 0xe61f
movq 0xa78(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xa48(%rsp), %rdi
leaq 0xa58(%rsp), %rax
cmpq %rax, %rdi
je 0xe644
movq 0xa58(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x990(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x1aa22
leaq 0x9e8(%rsp), %r13
movq %r13, %rdi
movq %rbp, %rsi
callq 0x1aa22
leaq 0x548(%rsp), %rdi
leaq 0x990(%rsp), %rsi
movq %r13, %rdx
callq 0x1528a
movq 0xa10(%rsp), %rdi
leaq 0xa20(%rsp), %rax
cmpq %rax, %rdi
je 0xe6a9
movq 0xa20(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r12, %r13
movq 0x9f0(%rsp), %rdi
leaq 0xa00(%rsp), %rax
cmpq %rax, %rdi
je 0xe6d1
movq 0xa00(%rsp), %rsi
incq %rsi
callq 0x5360
movq %rbx, %r12
movq 0x9b8(%rsp), %rdi
leaq 0x9c8(%rsp), %rax
cmpq %rax, %rdi
je 0xe6f9
movq 0x9c8(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r14, %rbx
movq 0x998(%rsp), %rdi
leaq 0x9a8(%rsp), %rax
cmpq %rax, %rdi
je 0xe721
movq 0x9a8(%rsp), %rsi
incq %rsi
callq 0x5360
movl 0x1d0(%rsp), %eax
xorl %ebp, %ebp
cmpl 0x578(%rsp), %eax
jne 0xe74d
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
cmpl $0x3, %eax
je 0xe74d
cmpl $0x6, %eax
je 0xe74d
xorl %ebp, %ebp
cmpl $0xa, %eax
sete %bpl
negl %ebp
leaq 0x548(%rsp), %rdi
callq 0x15be4
addl 0x48(%rsp), %ebp
xorb 0x58(%rsp), %al
movzbl %al, %eax
movl 0x4c(%rsp), %r14d
subl %eax, %r14d
movl %r14d, %eax
orl %ebp, %eax
js 0xe7c2
movq 0x60(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0xb118
movq 0x40(%rsp), %rdi
movl %ebp, %esi
movl %r14d, %edx
movq 0x60(%rsp), %rcx
movl 0x10(%rsp), %r8d
callq 0xbfce
movl $0x1, %ebp
testb %al, %al
jne 0xe7c7
movq 0x60(%rsp), %rdi
movq 0x8(%rdi), %rsi
addq $-0x58, %rsi
movq %rsi, 0x8(%rdi)
callq 0xba60
xorl %ebp, %ebp
jmp 0xe7c7
movl $0x3, %ebp
movq 0x550(%rsp), %rdi
leaq 0x560(%rsp), %rax
cmpq %rax, %rdi
je 0xe7ec
movq 0x560(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0xe811
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0xe836
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0xe85b
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x5360
cmpl $0x3, %ebp
je 0xe864
testl %ebp, %ebp
jne 0xe891
addq $0x30, %r15
cmpq 0x18(%rsp), %r15
movq %rbx, %r14
movq %r12, %rbx
movq %r13, %r12
leaq 0x1d8(%rsp), %r13
leaq 0x178(%rsp), %rbp
jne 0xe536
movl $0x2, %ebp
testb $0x1, %bpl
sete %r14b
jmp 0xe89e
movb $0x1, %r14b
leaq 0x210(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
movq 0x60(%rsp), %rbp
je 0xe8c4
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x590(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe8e5
movq 0x590(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x920(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe906
movq 0x920(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x100(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe927
movq 0x100(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe948
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xa0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe969
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x80(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xe98a
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5360
movb $0x1, %bl
testb %r14b, %r14b
je 0xea1f
leaq 0x68(%rsp), %rdi
movq %rbp, %rsi
callq 0x2433e
imulq $0x1081c8, 0x220(%rsp), %rax # imm = 0x1081C8
addq 0x3a5bb(%rip), %rax     # 0x48f70
leaq 0xa0(%rsp), %rcx
movslq 0x14(%rcx), %rdx
movslq 0x48(%rsp), %rsi
movslq 0x4c(%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 0xe9fc
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x80(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xea1d
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5360
xorl %ebx, %ebx
leaq 0x1b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xea40
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x190(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xea61
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x20(%rsp), %rdi
callq 0xb144
movl %ebx, %eax
addq $0x1858, %rsp           # imm = 0x1858
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0xeaa4
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xeac6
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0xeaeb
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x5360
movb $0x1, %bl
jmp 0xea1f
movq %rax, %rbx
leaq 0x5c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xeb1b
movq 0x5c0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeb1b
movq %rax, %rbx
movq 0x2d8(%rsp), %rdi
cmpq %r14, %rdi
je 0xeb3d
movq 0x2e8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeb3d
movq %rax, %rbx
leaq 0xa98(%rsp), %rdi
callq 0xb0e0
jmp 0xeb4f
movq %rax, %rbx
leaq 0x16f8(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x5f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xeb85
movq 0x5f0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeb85
movq %rax, %rbx
movq 0x2f8(%rsp), %rdi
cmpq %r14, %rdi
je 0xeba7
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeba7
movq %rax, %rbx
leaq 0xaf0(%rsp), %rdi
callq 0xb0e0
jmp 0xebb9
movq %rax, %rbx
leaq 0xb48(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x620(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xebef
movq 0x620(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xebef
movq %rax, %rbx
movq 0x318(%rsp), %rdi
cmpq %r14, %rdi
je 0xec11
movq 0x328(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xec11
movq %rax, %rbx
leaq 0xba0(%rsp), %rdi
callq 0xb0e0
jmp 0xec23
movq %rax, %rbx
leaq 0xbf8(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x650(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xec59
movq 0x650(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xec59
movq %rax, %rbx
movq 0x338(%rsp), %rdi
cmpq %r14, %rdi
je 0xec7b
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xec7b
movq %rax, %rbx
leaq 0xc50(%rsp), %rdi
callq 0xb0e0
jmp 0xec8d
movq %rax, %rbx
leaq 0xca8(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x680(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xecc3
movq 0x680(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xecc3
movq %rax, %rbx
movq 0x358(%rsp), %rdi
cmpq %r14, %rdi
je 0xece5
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xece5
movq %rax, %rbx
leaq 0xd00(%rsp), %rdi
callq 0xb0e0
jmp 0xecf7
movq %rax, %rbx
leaq 0xd58(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x770(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xed79
movq 0x770(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xed79
movq %rax, %rbx
leaq 0x6b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xed9b
movq 0x6b0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xed9b
movq %rax, %rbx
leaq 0x6e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xedbd
movq 0x6e0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xedbd
movq %rax, %rbx
movq 0x3f8(%rsp), %rdi
cmpq %r14, %rdi
je 0xeddf
movq 0x408(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeddf
movq %rax, %rbx
movq 0x378(%rsp), %rdi
cmpq %r14, %rdi
je 0xedf1
movq 0x388(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xedf1
movq %rax, %rbx
movq 0x398(%rsp), %rdi
cmpq %r14, %rdi
je 0xee03
movq 0x3a8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xee03
movq %rax, %rbx
leaq 0x1018(%rsp), %rdi
callq 0xb0e0
jmp 0xee15
movq %rax, %rbx
leaq 0xdb0(%rsp), %rdi
callq 0xb0e0
jmp 0xee25
movq %rax, %rbx
leaq 0xe60(%rsp), %rdi
callq 0xb0e0
jmp 0xee35
movq %rax, %rbx
leaq 0x17a8(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0xe08(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x1750(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x710(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xee91
movq 0x710(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xee91
movq %rax, %rbx
leaq 0x7a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xeeb3
movq 0x7a0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeeb3
movq %rax, %rbx
movq 0x3b8(%rsp), %rdi
cmpq %r14, %rdi
je 0xeed5
movq 0x3c8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeed5
movq %rax, %rbx
movq 0x418(%rsp), %rdi
cmpq %r14, %rdi
je 0xeee7
movq 0x428(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xeee7
movq %rax, %rbx
leaq 0xeb8(%rsp), %rdi
callq 0xb0e0
jmp 0xeef9
movq %rax, %rbx
leaq 0x1070(%rsp), %rdi
callq 0xb0e0
jmp 0xef09
movq %rax, %rbx
leaq 0xf10(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x10c8(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x7d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xef3f
movq 0x7d0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xef3f
movq %rax, %rbx
movq 0x438(%rsp), %rdi
cmpq %r14, %rdi
je 0xef61
movq 0x448(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xef61
movq %rax, %rbx
leaq 0x1120(%rsp), %rdi
callq 0xb0e0
jmp 0xef73
movq %rax, %rbx
leaq 0x1178(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x800(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xefa9
movq 0x800(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xefa9
movq %rax, %rbx
movq 0x458(%rsp), %rdi
cmpq %r14, %rdi
je 0xefcb
movq 0x468(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xefcb
movq %rax, %rbx
leaq 0x11d0(%rsp), %rdi
callq 0xb0e0
jmp 0xefdd
movq %rax, %rbx
leaq 0x1228(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x830(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf013
movq 0x830(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf013
movq %rax, %rbx
movq 0x478(%rsp), %rdi
cmpq %r14, %rdi
je 0xf035
movq 0x488(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf035
movq %rax, %rbx
leaq 0x1280(%rsp), %rdi
callq 0xb0e0
jmp 0xf047
movq %rax, %rbx
leaq 0x12d8(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x860(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf0a3
movq 0x860(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf0a3
movq %rax, %rbx
leaq 0x890(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf0c5
movq 0x890(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf0c5
movq %rax, %rbx
movq 0x498(%rsp), %rdi
cmpq %r14, %rdi
je 0xf0e7
movq 0x4a8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf0e7
movq %rax, %rbx
movq 0x4b8(%rsp), %rdi
cmpq %r14, %rdi
je 0xf0f9
movq 0x4c8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf0f9
movq %rax, %rbx
leaq 0x1330(%rsp), %rdi
callq 0xb0e0
jmp 0xf10b
movq %rax, %rbx
leaq 0x13e0(%rsp), %rdi
callq 0xb0e0
jmp 0xf11b
movq %rax, %rbx
leaq 0x1388(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x1800(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x8c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf151
movq 0x8c0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf151
movq %rax, %rbx
movq 0x4d8(%rsp), %rdi
cmpq %r14, %rdi
je 0xf173
movq 0x4e8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf173
movq %rax, %rbx
leaq 0x1438(%rsp), %rdi
callq 0xb0e0
jmp 0xf185
movq %rax, %rbx
leaq 0x1490(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xf1bc
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf1bc
movq %rax, %rbx
movq 0x258(%rsp), %rdi
cmpq %r14, %rdi
je 0xf5db
movq 0x268(%rsp), %rsi
jmp 0xf492
jmp 0xf423
movq %rax, %rbx
leaq 0x740(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf208
movq 0x740(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf208
movq %rax, %rbx
movq 0x3d8(%rsp), %rdi
cmpq %r14, %rdi
je 0xf22a
movq 0x3e8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf22a
movq %rax, %rbx
leaq 0xf68(%rsp), %rdi
callq 0xb0e0
jmp 0xf23c
movq %rax, %rbx
leaq 0xfc0(%rsp), %rdi
jmp 0xf2ab
movq %rax, %rbx
leaq 0x8f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf26f
movq 0x8f0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf26f
movq %rax, %rbx
movq 0x4f8(%rsp), %rdi
cmpq %r14, %rdi
je 0xf291
movq 0x508(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf291
movq %rax, %rbx
leaq 0x14e8(%rsp), %rdi
callq 0xb0e0
jmp 0xf2a3
movq %rax, %rbx
leaq 0x1540(%rsp), %rdi
callq 0xb0e0
jmp 0xf561
movq %rax, %rbx
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf2de
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf2de
movq %rax, %rbx
movq 0x2b8(%rsp), %rdi
cmpq %r14, %rdi
je 0xf561
movq 0x2c8(%rsp), %rsi
jmp 0xf559
jmp 0xf49f
movq %rax, %rbx
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0xf32b
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf32b
movq %rax, %rbx
movq 0x278(%rsp), %rdi
cmpq %r14, %rdi
je 0xf5db
movq 0x288(%rsp), %rsi
jmp 0xf492
jmp 0xf423
movq %rax, %rbx
leaq 0x80(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf377
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf377
movq %rax, %rbx
movq 0x298(%rsp), %rdi
cmpq %r14, %rdi
je 0xf5db
movq 0x2a8(%rsp), %rsi
jmp 0xf492
jmp 0xf423
jmp 0xf423
movq %rax, %rbx
jmp 0xf582
movq %rax, %rbx
leaq 0x1598(%rsp), %rdi
callq 0xb0e0
jmp 0xf3bc
movq %rax, %rbx
leaq 0x15f0(%rsp), %rdi
callq 0xb0e0
jmp 0xf5a3
jmp 0xf3d0
movq %rax, %rbx
jmp 0xf5a3
movq %rax, %rbx
leaq 0x1648(%rsp), %rdi
callq 0xb0e0
jmp 0xf3ed
movq %rax, %rbx
leaq 0x16a0(%rsp), %rdi
callq 0xb0e0
jmp 0xf5c4
movq %rax, %rbx
jmp 0xf5c4
movq %rax, %rbx
jmp 0xf5d1
jmp 0xf423
movq %rax, %rbx
jmp 0xf5e8
jmp 0xf49f
movq %rax, %rbx
jmp 0xf453
movq %rax, %rbx
jmp 0xf5db
movq %rax, %rbx
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0xf453
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x938(%rsp), %rdi
jmp 0xf46c
movq %rax, %rbx
jmp 0xf471
jmp 0xf49f
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0xb0e0
movq 0xd0(%rsp), %rdi
leaq 0xe0(%rsp), %rax
cmpq %rax, %rdi
je 0xf5db
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0xf5db
movq %rax, %rbx
jmp 0xf561
movq %rax, %rbx
jmp 0xf53c
movq %rax, %rbx
jmp 0xf4d4
movq %rax, %rbx
movq 0x520(%rsp), %rdi
cmpq %r14, %rdi
je 0xf4d4
movq 0x530(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xa40(%rsp), %rdi
jmp 0xf537
movq %rax, %rbx
jmp 0xf52f
movq %rax, %rbx
jmp 0xf4f8
movq %rax, %rbx
leaq 0x9e8(%rsp), %rdi
callq 0xb0e0
leaq 0x990(%rsp), %rdi
callq 0xb0e0
jmp 0xf52f
movq %rax, %rbx
movq 0x550(%rsp), %rdi
leaq 0x560(%rsp), %rax
cmpq %rax, %rdi
je 0xf52f
movq 0x560(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x120(%rsp), %rdi
callq 0xb0e0
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0xf561
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x210(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf582
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x590(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf5a3
movq 0x590(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x920(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf5c4
movq 0x920(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xc8(%rsp), %rdi
callq 0xb0e0
leaq 0x68(%rsp), %rdi
callq 0xb0e0
leaq 0x178(%rsp), %rdi
callq 0xb0e0
leaq 0x20(%rsp), %rdi
callq 0xb144
movq %rbx, %rdi
callq 0x55e0