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

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

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

  vector<Interval> possible_intervals;

  Note note = song->notes[position];

  if((position || compass_position) && (position < song->size_without_rest() - 1)){
    auto previous_note = song->notes[position - 1 + (compass_position != 0)];
    auto previous_counterpoint_note = counterpoint.notes.back();
    auto melodic_cantus_interval = Interval(previous_note, note);
    bool melodic_ascendant = !melodic_cantus_interval.ascendant(); // XOR with true
    auto previous_interval = Interval(previous_note, previous_counterpoint_note);
    string previous = previous_interval.description();

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

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

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

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

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

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

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

      if(!is_thesis(note, (note.duration / 4) * compass_position)){
        //Tempo fraco
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("P4", ascendant), &counterpoint);
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("m2", ascendant), &counterpoint);
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("M2", ascendant), &counterpoint);
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("m7", ascendant), &counterpoint);
        analyse_and_add_interval(false, !melodic_ascendant, possible_intervals, previous_note, note, Interval("M7", ascendant), &counterpoint);
        // TODO: m9?
      }
    }else{
      possible_intervals.push_back(Interval("P1"));
    }

    // printf("[%u][%u][%d][%d][%d]\n", position - 1 + compass_position, compass_position, song->notes[position - 1 + compass_position].midi_number, paralels, same_movements);

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

      par = paralels - (interval.quantitative == previous_interval.quantitative and (interval.quantitative == 3 || interval.quantitative == 6 || interval.quantitative == 10)); //TODO: criar método retornando qualidade
      sm = same_movements - (melodic_interval.ascendant() != melodic_ascendant);
      if(par < 0 || sm < 0) continue;
      counterpoint.notes.push_back(c_note);
      if(solve(position + (compass_position == 3), (compass_position + 1)%4, par, sm, ascendant, counterpoint)) return true;
      counterpoint.notes.pop_back();
    }

  }else if(position == song->size_without_rest() - 1){
    //Última nota
    auto previous_note = song->notes[position - 1];
    auto previous_counterpoint_note = counterpoint.notes.back();
    auto melodic_cantus_interval = Interval(previous_note, note);
    bool melodic_ascendant = !melodic_cantus_interval.ascendant(); // XOR with true
    auto previous_interval = Interval(previous_note, previous_counterpoint_note);
    string previous = previous_interval.description();

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

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

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

      random_shuffle(possible_intervals.begin() + size, possible_intervals.end());
    }else{
      possible_intervals.push_back(Interval("P1"));
    }

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

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

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

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2468, %rsp           # imm = 0x2468
movq %r9, %r12
movl %r8d, 0x18(%rsp)
movl %ecx, 0x54(%rsp)
movl %edx, 0x50(%rsp)
movl %esi, %r13d
movl %edi, %r14d
movl %esi, %ebp
negl %ebp
cmpl %edi, %ebp
jne 0x34733
leaq 0x15098(%rip), %rdi     # 0x497b0
movl $0x9bc8cf8, %edx        # imm = 0x9BC8CF8
movl $0x1, %esi
callq 0x51f0
callq 0x5240
movl %eax, %edi
callq 0x5310
leaq 0x9bddd6e(%rip), %r15   # 0x9c124a8
movq (%r15), %rdi
callq 0x2429a
movb $0x1, %bl
cmpl %r14d, %eax
jbe 0x38406
cmpl %r14d, %ebp
movq %r12, 0x38(%rsp)
movq %r14, 0x48(%rsp)
jne 0x34760
xorl %ebx, %ebx
jmp 0x347c7
movl 0x48(%rsp), %r14d
movl %r13d, %r12d
leaq 0x1de0(%rsp), %rbx
movq %rbx, %rdi
movq 0x38(%rsp), %rsi
callq 0x24316
movslq 0x4c(%rbx), %rax
movslq 0x50(%rsp), %rcx
movslq 0x54(%rsp), %rdx
imulq $0x1081c8, %r14, %rsi   # imm = 0x1081C8
movq 0x48(%rsp), %r14
addq 0x147d2(%rip), %rsi     # 0x48f70
imulq $0x42072, %r12, %rdi    # imm = 0x42072
movq 0x38(%rsp), %r12
addq %rdi, %rsi
imulq $0xbbd, %rax, %rax      # imm = 0xBBD
addq %rsi, %rax
imulq $0x259, %rcx, %rcx      # imm = 0x259
addq %rax, %rcx
movb (%rdx,%rcx), %bl
xorb $0x1, %bl
cmpl %r14d, %ebp
je 0x3480e
leaq 0x1e18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x347ed
movq 0x1e18(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1df8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3480e
movq 0x1df8(%rsp), %rsi
incq %rsi
callq 0x5360
testb %bl, %bl
je 0x34819
xorl %ebx, %ebx
jmp 0x38406
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movq (%r15), %rax
movl %r14d, %ebp
imulq $0x58, %rbp, %rsi
addq (%rax), %rsi
leaq 0x170(%rsp), %rdi
callq 0x1a9c6
movl %r13d, %eax
orl %r14d, %eax
movzbl 0x18(%rsp), %eax
movl %eax, 0x10(%rsp)
movq %r13, 0x118(%rsp)
movq %rbp, 0x280(%rsp)
je 0x34b20
movq (%r15), %rdi
callq 0x2429a
decl %eax
cmpl %r14d, %eax
jbe 0x34b20
movq (%r15), %rax
cmpl $0x1, %r13d
movl %r14d, %ecx
sbbl $-0x1, %ecx
decl %ecx
imulq $0x58, %rcx, %rsi
addq (%rax), %rsi
leaq 0x60(%rsp), %rdi
callq 0x1a9c6
movq 0x8(%r12), %rsi
addq $-0x58, %rsi
leaq 0x1c8(%rsp), %rdi
callq 0x1a9c6
leaq 0x1d88(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1d30(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x288(%rsp), %rdi
leaq 0x1d88(%rsp), %rsi
leaq 0x1d30(%rsp), %rdx
callq 0x15216
leaq 0x1d68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34917
movq 0x1d68(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1d48(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34938
movq 0x1d48(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1dc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34959
movq 0x1dc0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1da0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3497a
movq 0x1da0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x288(%rsp), %rdi
callq 0x15b78
movl %eax, %r15d
leaq 0x1cd8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1c80(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x1a9c6
leaq 0x250(%rsp), %rdi
leaq 0x1cd8(%rsp), %rsi
leaq 0x1c80(%rsp), %rdx
callq 0x15216
leaq 0x1cb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x349ef
movq 0x1cb8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1c98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34a10
movq 0x1c98(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1d10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34a31
movq 0x1d10(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1cf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34a52
movq 0x1cf0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x150(%rsp), %rdi
leaq 0x250(%rsp), %rsi
callq 0x1539c
leaq 0x170(%rsp), %rdi
callq 0x1c186
movl %r15d, %ebx
xorb $0x1, %bl
testb %al, %al
movb %bl, 0x58(%rsp)
je 0x36245
leaq 0x438(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x6587(%rip), %rsi      # 0x3b020
leaq 0x6582(%rip), %rdx      # 0x3b022
leaq 0x428(%rsp), %rdi
callq 0xb62c
leaq 0xc0(%rsp), %rdi
leaq 0x428(%rsp), %rsi
movl $0x1, %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xfbea
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34afa
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x428(%rsp), %rdi
cmpq %r14, %rdi
je 0x37e6c
movq 0x438(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x37e6c
movq (%r15), %rdi
callq 0x2429a
decl %eax
cmpl %r14d, %eax
jne 0x34dcf
movq (%r15), %rax
leal -0x1(%r14), %ecx
imulq $0x58, %rcx, %rsi
addq (%rax), %rsi
leaq 0x60(%rsp), %rdi
callq 0x1a9c6
movq 0x8(%r12), %rsi
addq $-0x58, %rsi
leaq 0x1c8(%rsp), %rdi
callq 0x1a9c6
leaq 0x13e8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1390(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x288(%rsp), %rdi
leaq 0x13e8(%rsp), %rsi
leaq 0x1390(%rsp), %rdx
callq 0x15216
leaq 0x13c8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34bc6
movq 0x13c8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x13a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34be7
movq 0x13a8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1420(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34c08
movq 0x1420(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1400(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34c29
movq 0x1400(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x288(%rsp), %rdi
callq 0x15b78
movl %eax, %r15d
leaq 0x1338(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x12e0(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x1a9c6
leaq 0x250(%rsp), %rdi
leaq 0x1338(%rsp), %rsi
leaq 0x12e0(%rsp), %rdx
callq 0x15216
leaq 0x1318(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34c9e
movq 0x1318(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x12f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34cbf
movq 0x12f8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1370(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34ce0
movq 0x1370(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1350(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34d01
movq 0x1350(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x150(%rsp), %rdi
leaq 0x250(%rsp), %rsi
callq 0x1539c
leaq 0x170(%rsp), %rdi
callq 0x1c186
movl %r15d, %ecx
xorb $0x1, %cl
movb %cl, 0x58(%rsp)
testb %al, %al
je 0x35300
leaq 0x358(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x62d8(%rip), %rsi      # 0x3b020
leaq 0x62d3(%rip), %rdx      # 0x3b022
leaq 0x348(%rsp), %rdi
callq 0xb62c
leaq 0xc0(%rsp), %rdi
leaq 0x348(%rsp), %rsi
movl $0x1, %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xfbea
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34da9
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x348(%rsp), %rdi
cmpq %r14, %rdi
je 0x35e96
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x35e96
leaq 0x338(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x623e(%rip), %rsi      # 0x3b020
leaq 0x6239(%rip), %rdx      # 0x3b022
leaq 0x328(%rsp), %rdi
callq 0xb62c
leaq 0x60(%rsp), %rdi
leaq 0x328(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xfbea
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34e36
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x328(%rsp), %rdi
cmpq %r14, %rdi
je 0x34e53
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x318(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x61bd(%rip), %rsi      # 0x3b023
leaq 0x61b8(%rip), %rdx      # 0x3b025
leaq 0x308(%rsp), %rdi
callq 0xb62c
leaq 0x60(%rsp), %rdi
leaq 0x308(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xfbea
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x34ebb
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x308(%rsp), %rdi
cmpq %r14, %rdi
je 0x34ed8
movq 0x318(%rsp), %rsi
incq %rsi
callq 0x5360
cmpb $0x0, 0x18(%rsp)
leaq 0x78(%rsp), %r12
je 0x34f73
leaq 0x2f8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x612b(%rip), %rsi      # 0x3b026
leaq 0x6126(%rip), %rdx      # 0x3b028
leaq 0x2e8(%rsp), %rdi
callq 0xb62c
leaq 0x60(%rsp), %rdi
leaq 0x2e8(%rsp), %rsi
movl $0x1, %edx
callq 0x14f5c
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xfbea
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x34f51
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x2e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x34f6e
movq 0x2f8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x78(%rsp), %r12
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
movq %rax, 0x18(%rsp)
movq %rcx, 0x58(%rsp)
cmpq %rcx, %rax
je 0x350b8
movq 0x18(%rsp), %rax
leaq 0x30(%rax), %r13
cmpq 0x58(%rsp), %r13
je 0x350b8
leaq 0x68(%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 0x18(%rsp), %r15
cmpq %r15, %r13
je 0x350a5
movl (%r13), %eax
movl %eax, 0x60(%rsp)
movq %r12, 0x68(%rsp)
movq 0x8(%r13), %rcx
leaq 0x18(%r13), %rax
cmpq %rcx, %rax
je 0x35011
movq %rcx, 0x68(%rsp)
movq (%rax), %rcx
movq %rcx, 0x78(%rsp)
jmp 0x35019
movups (%rax), %xmm0
movups %xmm0, (%r12)
leaq 0x8(%r13), %rdi
movq 0x10(%r13), %rcx
movq %rcx, 0x70(%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 0x60(%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 0x68(%rsp), %rdi
cmpq %r12, %rdi
je 0x350a5
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %r13
addq $0x30, %rbp
cmpq 0x58(%rsp), %r13
jne 0x34fae
movq 0x20(%rsp), %r12
movq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq %rax, %r12
je 0x38323
leaq 0x1d0(%rsp), %rbx
leaq 0x6f0(%rsp), %r14
leaq 0x700(%rsp), %r13
xorl %ecx, %ecx
movq 0x118(%rsp), %rax
cmpl $0x3, %eax
sete %cl
addl 0x48(%rsp), %ecx
movl %ecx, 0x58(%rsp)
incl %eax
andl $0x3, %eax
movl %eax, 0x48(%rsp)
leaq 0xd08(%rsp), %rbp
movl (%r12), %eax
movl %eax, 0x1c8(%rsp)
leaq 0x1e0(%rsp), %rax
movq %rax, 0x1d0(%rsp)
movq 0x8(%r12), %rsi
movq 0x10(%r12), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0xb544
movzwl 0x2c(%r12), %eax
movw %ax, 0x24(%rbx)
movl 0x28(%r12), %eax
movl %eax, 0x20(%rbx)
movq %rbp, %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
movl 0x1c8(%rsp), %eax
movl %eax, 0x6e8(%rsp)
movq %r13, 0x6f0(%rsp)
movq 0x1d0(%rsp), %rsi
movq 0x1d8(%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)
leaq 0x60(%rsp), %rdi
movq %rbp, %rsi
leaq 0x6e8(%rsp), %rdx
callq 0x15a46
movq 0x6f0(%rsp), %rdi
cmpq %r13, %rdi
je 0x351d6
movq 0x700(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xd30(%rsp), %rdi
leaq 0xd40(%rsp), %rax
cmpq %rax, %rdi
je 0x351fb
movq 0xd40(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r13, %r15
movq 0xd10(%rsp), %rdi
leaq 0xd20(%rsp), %rax
cmpq %rax, %rdi
je 0x35223
movq 0xd20(%rsp), %rsi
incq %rsi
callq 0x5360
movl 0x60(%rsp), %eax
leal 0x3(%rax), %ecx
testl %eax, %eax
cmovnsl %eax, %ecx
sarl $0x2, %ecx
movl %ecx, 0x60(%rsp)
movq 0x38(%rsp), %r13
movq %r13, %rdi
leaq 0x60(%rsp), %rsi
callq 0xb14e
movl 0x58(%rsp), %edi
movl 0x48(%rsp), %esi
movl 0x50(%rsp), %edx
movl 0x54(%rsp), %ecx
movl 0x10(%rsp), %r8d
movq %r13, %r9
callq 0x346e2
testb %al, %al
jne 0x3841a
movq 0x38(%rsp), %rdi
movq 0x8(%rdi), %rsi
addq $-0x58, %rsi
movq %rsi, 0x8(%rdi)
callq 0xba7e
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x352a8
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
movq %r15, %r13
je 0x352c7
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x1d0(%rsp), %rdi
leaq 0x1e0(%rsp), %rax
cmpq %rax, %rdi
je 0x352ec
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %r12
cmpq 0x18(%rsp), %r12
jne 0x35111
jmp 0x38323
leaq 0x1288(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1230(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x418(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x5ce6(%rip), %rsi      # 0x3b020
leaq 0x5ce1(%rip), %rdx      # 0x3b022
leaq 0x408(%rsp), %rdi
callq 0xb62c
leaq 0x838(%rsp), %rdi
leaq 0x408(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r12, (%rsp)
movzbl 0x58(%rsp), %ebx
leaq 0x20(%rsp), %rdx
leaq 0x1288(%rsp), %rcx
leaq 0x1230(%rsp), %r8
leaq 0x838(%rsp), %r9
movl $0x1, %edi
movl %ebx, %esi
callq 0x39450
leaq 0x850(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x353ba
movq 0x850(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x408(%rsp), %rdi
cmpq %r14, %rdi
je 0x353d7
movq 0x418(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1268(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x353f8
movq 0x1268(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1248(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35419
movq 0x1248(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x12c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3543a
movq 0x12c0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x12a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3545b
movq 0x12a0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x5bc1(%rip), %rsi      # 0x3b023
leaq 0x150(%rsp), %rdi
callq 0x5100
testl %eax, %eax
je 0x355cd
leaq 0x11d8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1180(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x3f8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x5b72(%rip), %rsi      # 0x3b023
leaq 0x5b6d(%rip), %rdx      # 0x3b025
leaq 0x3e8(%rsp), %rdi
callq 0xb62c
leaq 0x808(%rsp), %rdi
leaq 0x3e8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x11d8(%rsp), %rcx
leaq 0x1180(%rsp), %r8
leaq 0x808(%rsp), %r9
movl $0x1, %edi
movl %ebx, %esi
callq 0x39450
leaq 0x820(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3552c
movq 0x820(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x3e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x35549
movq 0x3f8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x11b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3556a
movq 0x11b8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1198(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3558b
movq 0x1198(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1210(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x355ac
movq 0x1210(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x11f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x355cd
movq 0x11f0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x5a52(%rip), %rsi      # 0x3b026
leaq 0x150(%rsp), %rdi
callq 0x5100
testl %eax, %eax
sete %al
movl 0x18(%rsp), %ecx
xorb $0x1, %cl
movl %ecx, 0x18(%rsp)
orb %cl, %al
jne 0x35750
leaq 0x1128(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x10d0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x3d8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x59f3(%rip), %rsi      # 0x3b026
leaq 0x59ee(%rip), %rdx      # 0x3b028
leaq 0x3c8(%rsp), %rdi
callq 0xb62c
leaq 0x7d8(%rsp), %rdi
leaq 0x3c8(%rsp), %rsi
movl $0x1, %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1128(%rsp), %rcx
leaq 0x10d0(%rsp), %r8
leaq 0x7d8(%rsp), %r9
movl $0x1, %edi
movl %ebx, %esi
callq 0x39450
leaq 0x7f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x356af
movq 0x7f0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x3c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x356cc
movq 0x3d8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1108(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x356ed
movq 0x1108(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x10e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3570e
movq 0x10e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1160(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3572f
movq 0x1160(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1140(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35750
movq 0x1140(%rsp), %rsi
incq %rsi
callq 0x5360
movb %r15b, 0x17(%rsp)
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
movq %rax, 0x40(%rsp)
movq %rcx, 0xb8(%rsp)
cmpq %rcx, %rax
je 0x358c7
movq 0x40(%rsp), %rax
leaq 0x30(%rax), %rbp
cmpq 0xb8(%rsp), %rbp
je 0x358c7
leaq 0xc8(%rsp), %rbx
leaq 0xd8(%rsp), %r13
movl $0x30, %r14d
callq 0x50e0
cltq
movq %r14, %rcx
sarq $0x4, %rcx
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rcx
incq %rcx
cqto
idivq %rcx
leaq (%rdx,%rdx,2), %r12
shlq $0x4, %r12
addq 0x40(%rsp), %r12
cmpq %r12, %rbp
je 0x358b1
movl (%rbp), %eax
movl %eax, 0xc0(%rsp)
movq %r13, 0xc8(%rsp)
movq 0x8(%rbp), %rcx
leaq 0x18(%rbp), %rax
cmpq %rcx, %rax
je 0x35810
movq %rcx, 0xc8(%rsp)
movq (%rax), %rcx
movq %rcx, 0xd8(%rsp)
jmp 0x35818
movups (%rax), %xmm0
movups %xmm0, (%r13)
leaq 0x8(%rbp), %rdi
movq 0x10(%rbp), %rcx
movq %rcx, 0xd0(%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 (%r12), %eax
movl %eax, (%rbp)
leaq 0x8(%r12), %r15
movq %r15, %rsi
callq 0x5420
movl 0x28(%r12), %eax
movl %eax, 0x28(%rbp)
movzwl 0x2c(%r12), %eax
movw %ax, 0x2c(%rbp)
movl 0xc0(%rsp), %eax
movl %eax, (%r12)
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5420
movzwl 0x24(%rbx), %eax
movw %ax, 0x2c(%r12)
movl 0x20(%rbx), %eax
movl %eax, 0x28(%r12)
movq 0xc8(%rsp), %rdi
cmpq %r13, %rdi
je 0x358b1
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %rbp
addq $0x30, %r14
cmpq 0xb8(%rsp), %rbp
jne 0x357a2
movq 0x28(%rsp), %r15
subq 0x20(%rsp), %r15
leaq 0x1078(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
movq 0x38(%rsp), %r12
leaq 0x1020(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
movb 0x17(%rsp), %bl
leaq 0x3b8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x570c(%rip), %rsi      # 0x3b020
leaq 0x5707(%rip), %rdx      # 0x3b022
leaq 0x3a8(%rsp), %rdi
callq 0xb62c
leaq 0x7a8(%rsp), %rdi
leaq 0x3a8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r12, (%rsp)
movzbl %bl, %ebx
leaq 0x20(%rsp), %rdx
leaq 0x1078(%rsp), %rcx
leaq 0x1020(%rsp), %r8
leaq 0x7a8(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x39450
leaq 0x7c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3598f
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x3a8(%rsp), %rdi
cmpq %r14, %rdi
je 0x359ac
movq 0x3b8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1058(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x359cd
movq 0x1058(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1038(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x359ee
movq 0x1038(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x10b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35a0f
movq 0x10b0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1090(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35a30
movq 0x1090(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x55ec(%rip), %rsi      # 0x3b023
leaq 0x150(%rsp), %rdi
callq 0x5100
testl %eax, %eax
je 0x35b9f
leaq 0xfc8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0xf70(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x398(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x559d(%rip), %rsi      # 0x3b023
leaq 0x5598(%rip), %rdx      # 0x3b025
leaq 0x388(%rsp), %rdi
callq 0xb62c
leaq 0x778(%rsp), %rdi
leaq 0x388(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0xfc8(%rsp), %rcx
leaq 0xf70(%rsp), %r8
leaq 0x778(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x39450
leaq 0x790(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35afe
movq 0x790(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x388(%rsp), %rdi
cmpq %r14, %rdi
je 0x35b1b
movq 0x398(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xfa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35b3c
movq 0xfa8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xf88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35b5d
movq 0xf88(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1000(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35b7e
movq 0x1000(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xfe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35b9f
movq 0xfe0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x5480(%rip), %rsi      # 0x3b026
leaq 0x150(%rsp), %rdi
callq 0x5100
testl %eax, %eax
sete %al
orb 0x18(%rsp), %al
jne 0x35d16
leaq 0xf18(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0xec0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x378(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x542a(%rip), %rsi      # 0x3b026
leaq 0x5425(%rip), %rdx      # 0x3b028
leaq 0x368(%rsp), %rdi
callq 0xb62c
leaq 0x748(%rsp), %rdi
leaq 0x368(%rsp), %rsi
movl $0x1, %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0xf18(%rsp), %rcx
leaq 0xec0(%rsp), %r8
leaq 0x748(%rsp), %r9
xorl %edi, %edi
movl %ebx, %esi
callq 0x39450
leaq 0x760(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35c75
movq 0x760(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x368(%rsp), %rdi
cmpq %r14, %rdi
je 0x35c92
movq 0x378(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xef8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35cb3
movq 0xef8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xed8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35cd4
movq 0xed8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xf50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35cf5
movq 0xf50(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xf30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x35d16
movq 0xf30(%rsp), %rsi
incq %rsi
callq 0x5360
sarq $0x4, %r15
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %r15
movslq %r15d, %rax
leaq (%rax,%rax,2), %rcx
shlq $0x4, %rcx
addq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq %rcx, 0x40(%rsp)
cmpq %rax, %rcx
je 0x35e96
movq 0x40(%rsp), %rax
leaq 0x30(%rax), %rbp
cmpq 0x18(%rsp), %rbp
je 0x35e96
leaq 0xc8(%rsp), %rbx
leaq 0xd8(%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 0x40(%rsp), %r13
cmpq %r13, %rbp
je 0x35e83
movl (%rbp), %eax
movl %eax, 0xc0(%rsp)
movq %r15, 0xc8(%rsp)
movq 0x8(%rbp), %rcx
leaq 0x18(%rbp), %rax
cmpq %rcx, %rax
je 0x35de8
movq %rcx, 0xc8(%rsp)
movq (%rax), %rcx
movq %rcx, 0xd8(%rsp)
jmp 0x35def
movups (%rax), %xmm0
movups %xmm0, (%r15)
leaq 0x8(%rbp), %rdi
movq 0x10(%rbp), %rcx
movq %rcx, 0xd0(%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 0xc0(%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 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0x35e83
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %rbp
addq $0x30, %r12
cmpq 0x18(%rsp), %rbp
jne 0x35d7a
movq 0x20(%rsp), %rbp
movq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq %rax, %rbp
je 0x38234
leaq 0x128(%rsp), %rbx
leaq 0x720(%rsp), %r14
leaq 0x730(%rsp), %r12
movq 0x48(%rsp), %rax
incl %eax
movq %rax, 0x48(%rsp)
leaq 0xe10(%rsp), %r15
movl (%rbp), %eax
movl %eax, 0x120(%rsp)
leaq 0x138(%rsp), %rax
movq %rax, 0x128(%rsp)
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0xb544
movzwl 0x2c(%rbp), %eax
movw %ax, 0x24(%rbx)
movl 0x28(%rbp), %eax
movl %eax, 0x20(%rbx)
movq %r15, %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
movl 0x120(%rsp), %eax
movl %eax, 0x718(%rsp)
movq %r12, 0x720(%rsp)
movq 0x128(%rsp), %rsi
movq 0x130(%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)
leaq 0xc0(%rsp), %rdi
movq %r15, %rsi
leaq 0x718(%rsp), %rdx
callq 0x15a46
movq 0x720(%rsp), %rdi
cmpq %r12, %rdi
leaq 0xdb8(%rsp), %rbx
je 0x35fa3
movq 0x730(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xe38(%rsp), %rdi
leaq 0xe48(%rsp), %rax
cmpq %rax, %rdi
je 0x35fc8
movq 0xe48(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xe18(%rsp), %rdi
leaq 0xe28(%rsp), %rax
cmpq %rax, %rdi
je 0x35fed
movq 0xe28(%rsp), %rsi
incq %rsi
callq 0x5360
movq %rbx, %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x1a9c6
leaq 0xd60(%rsp), %r13
movq %r13, %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x220(%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x15216
movq 0xd88(%rsp), %rdi
leaq 0xd98(%rsp), %rax
cmpq %rax, %rdi
je 0x3604d
movq 0xd98(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r14, %rbx
movq 0xd68(%rsp), %rdi
leaq 0xd78(%rsp), %rax
cmpq %rax, %rdi
je 0x36075
movq 0xd78(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r15, %r14
movq 0xde0(%rsp), %rdi
leaq 0xdf0(%rsp), %rax
cmpq %rax, %rdi
je 0x3609d
movq 0xdf0(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r12, %r15
movq 0xdc0(%rsp), %rdi
leaq 0xdd0(%rsp), %rax
cmpq %rax, %rdi
je 0x360c5
movq 0xdd0(%rsp), %rsi
incq %rsi
callq 0x5360
movl 0x120(%rsp), %eax
xorl %r12d, %r12d
cmpl 0x250(%rsp), %eax
jne 0x360f5
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
cmpl $0x3, %eax
je 0x360f5
cmpl $0x6, %eax
je 0x360f5
xorl %r12d, %r12d
cmpl $0xa, %eax
sete %r12b
negl %r12d
leaq 0x220(%rsp), %rdi
callq 0x15b78
addl 0x50(%rsp), %r12d
xorb 0x58(%rsp), %al
movzbl %al, %eax
movl 0x54(%rsp), %r13d
subl %eax, %r13d
movl %r13d, %eax
orl %r12d, %eax
js 0x36171
movq 0x38(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xb14e
movq 0x48(%rsp), %rdi
xorl %esi, %esi
movl %r12d, %edx
movl %r13d, %ecx
movl 0x10(%rsp), %r8d
movq 0x38(%rsp), %r9
callq 0x346e2
movl $0x1, %r12d
testb %al, %al
jne 0x36177
movq 0x38(%rsp), %rdi
movq 0x8(%rdi), %rsi
addq $-0x58, %rsi
movq %rsi, 0x8(%rdi)
callq 0xba7e
xorl %r12d, %r12d
jmp 0x36177
movl $0x5, %r12d
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0x3619c
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x361c1
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x361e6
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x3620b
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5360
cmpl $0x5, %r12d
je 0x36216
testl %r12d, %r12d
jne 0x3623c
addq $0x30, %rbp
cmpq 0x18(%rsp), %rbp
movq %r15, %r12
movq %r14, %r15
movq %rbx, %r14
leaq 0x128(%rsp), %rbx
jne 0x35eda
movl $0x4, %r12d
testb $0x3, %r12b
jmp 0x3822e
leaq 0x4dd7(%rip), %rsi      # 0x3b023
leaq 0x150(%rsp), %rdi
callq 0x5100
movzbl %bl, %r13d
testl %eax, %eax
je 0x36352
leaq 0x2410(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x23b8(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x6d8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x4d84(%rip), %rsi      # 0x3b023
leaq 0x4d7f(%rip), %rdx      # 0x3b025
leaq 0x6c8(%rsp), %rdi
callq 0xb62c
leaq 0xc28(%rsp), %rdi
leaq 0x6c8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x2410(%rsp), %rcx
leaq 0x23b8(%rsp), %r8
leaq 0xc28(%rsp), %r9
movl $0x1, %edi
movl %r13d, %esi
callq 0x39450
leaq 0xc40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3631b
movq 0xc40(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x6c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x36338
movq 0x6d8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x23b8(%rsp), %rdi
callq 0xb116
leaq 0x2410(%rsp), %rdi
callq 0xb116
leaq 0x4ccd(%rip), %rsi      # 0x3b026
leaq 0x150(%rsp), %rdi
callq 0x5100
testl %eax, %eax
sete %al
movl 0x18(%rsp), %ecx
xorb $0x1, %cl
movl %ecx, 0x18(%rsp)
orb %cl, %al
jne 0x3646c
leaq 0x2360(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x2308(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x6b8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x4c6e(%rip), %rsi      # 0x3b026
leaq 0x4c69(%rip), %rdx      # 0x3b028
leaq 0x6a8(%rsp), %rdi
callq 0xb62c
leaq 0xbf8(%rsp), %rdi
leaq 0x6a8(%rsp), %rsi
movl $0x1, %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x2360(%rsp), %rcx
leaq 0x2308(%rsp), %r8
leaq 0xbf8(%rsp), %r9
movl $0x1, %edi
movl %r13d, %esi
callq 0x39450
leaq 0xc10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36435
movq 0xc10(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x6a8(%rsp), %rdi
cmpq %r14, %rdi
je 0x36452
movq 0x6b8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x2308(%rsp), %rdi
callq 0xb116
leaq 0x2360(%rsp), %rdi
callq 0xb116
leaq 0x1c28(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1bd0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x698(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x4b83(%rip), %rsi      # 0x3b029
leaq 0x4b7e(%rip), %rdx      # 0x3b02b
leaq 0x688(%rsp), %rdi
callq 0xb62c
leaq 0xbc8(%rsp), %rdi
leaq 0x688(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1c28(%rsp), %rcx
leaq 0x1bd0(%rsp), %r8
leaq 0xbc8(%rsp), %r9
movl $0x1, %edi
movl %r13d, %esi
callq 0x39450
leaq 0xbe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36522
movq 0xbe0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x688(%rsp), %rdi
cmpq %r14, %rdi
je 0x3653f
movq 0x698(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1c08(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36560
movq 0x1c08(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1be8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36581
movq 0x1be8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1c60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x365a2
movq 0x1c60(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1c40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x365c3
movq 0x1c40(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1b78(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1b20(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x678(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x4a2f(%rip), %rsi      # 0x3b02c
leaq 0x4a2a(%rip), %rdx      # 0x3b02e
leaq 0x668(%rsp), %rdi
callq 0xb62c
leaq 0xb98(%rsp), %rdi
leaq 0x668(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1b78(%rsp), %rcx
leaq 0x1b20(%rsp), %r8
leaq 0xb98(%rsp), %r9
movl $0x1, %edi
movl %r13d, %esi
callq 0x39450
leaq 0xbb0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36679
movq 0xbb0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x668(%rsp), %rdi
cmpq %r14, %rdi
je 0x36696
movq 0x678(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1b58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x366b7
movq 0x1b58(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1b38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x366d8
movq 0x1b38(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1bb0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x366f9
movq 0x1bb0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1b90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3671a
movq 0x1b90(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1ac8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1a70(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x658(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x48db(%rip), %rsi      # 0x3b02f
leaq 0x48d6(%rip), %rdx      # 0x3b031
leaq 0x648(%rsp), %rdi
callq 0xb62c
leaq 0xb68(%rsp), %rdi
leaq 0x648(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1ac8(%rsp), %rcx
leaq 0x1a70(%rsp), %r8
leaq 0xb68(%rsp), %r9
movl $0x1, %edi
movl %r13d, %esi
callq 0x39450
leaq 0xb80(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x367d0
movq 0xb80(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x648(%rsp), %rdi
cmpq %r14, %rdi
je 0x367ed
movq 0x658(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1aa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3680e
movq 0x1aa8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1a88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3682f
movq 0x1a88(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1b00(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36850
movq 0x1b00(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1ae0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36871
movq 0x1ae0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1a18(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x19c0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x638(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x4787(%rip), %rsi      # 0x3b032
leaq 0x4782(%rip), %rdx      # 0x3b034
leaq 0x628(%rsp), %rdi
callq 0xb62c
leaq 0xb38(%rsp), %rdi
leaq 0x628(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1a18(%rsp), %rcx
leaq 0x19c0(%rsp), %r8
leaq 0xb38(%rsp), %r9
movl $0x1, %edi
movl %r13d, %esi
callq 0x39450
leaq 0xb50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36927
movq 0xb50(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x628(%rsp), %rdi
cmpq %r14, %rdi
je 0x36944
movq 0x638(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x19f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36965
movq 0x19f8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x19d8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36986
movq 0x19d8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1a50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x369a7
movq 0x1a50(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1a30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x369c8
movq 0x1a30(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1968(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1910(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x618(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x4633(%rip), %rsi      # 0x3b035
leaq 0x462f(%rip), %rdx      # 0x3b038
leaq 0x608(%rsp), %rdi
callq 0xb62c
leaq 0xb08(%rsp), %rdi
leaq 0x608(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1968(%rsp), %rcx
leaq 0x1910(%rsp), %r8
leaq 0xb08(%rsp), %r9
movl $0x1, %edi
movl %r13d, %esi
callq 0x39450
leaq 0xb20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36a7e
movq 0xb20(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x608(%rsp), %rdi
cmpq %r14, %rdi
je 0x36a9b
movq 0x618(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1948(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36abc
movq 0x1948(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1928(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36add
movq 0x1928(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x19a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36afe
movq 0x19a0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1980(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36b1f
movq 0x1980(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x18b8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1860(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x5f8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x44e0(%rip), %rsi      # 0x3b039
leaq 0x44dc(%rip), %rdx      # 0x3b03c
leaq 0x5e8(%rsp), %rdi
callq 0xb62c
leaq 0xad8(%rsp), %rdi
leaq 0x5e8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r12, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x18b8(%rsp), %rcx
leaq 0x1860(%rsp), %r8
leaq 0xad8(%rsp), %r9
movl $0x1, %edi
movl %r13d, %esi
callq 0x39450
leaq 0xaf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36bd5
movq 0xaf0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x5e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x36bf2
movq 0x5f8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1898(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36c13
movq 0x1898(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1878(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36c34
movq 0x1878(%rsp), %rsi
incq %rsi
callq 0x5360
movb %r15b, 0x17(%rsp)
leaq 0x18f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36c5a
movq 0x18f0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x18d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36c7b
movq 0x18d0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
movq %rax, 0x40(%rsp)
movq %rcx, 0xb8(%rsp)
cmpq %rcx, %rax
je 0x36df9
movq 0x40(%rsp), %rax
leaq 0x30(%rax), %r12
cmpq 0xb8(%rsp), %r12
je 0x36df9
leaq 0xc8(%rsp), %rbx
leaq 0xd8(%rsp), %rbp
movl $0x30, %r14d
callq 0x50e0
cltq
movq %r14, %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 0x40(%rsp), %r13
cmpq %r13, %r12
je 0x36de3
movl (%r12), %eax
movl %eax, 0xc0(%rsp)
movq %rbp, 0xc8(%rsp)
movq 0x8(%r12), %rcx
leaq 0x18(%r12), %rax
cmpq %rcx, %rax
je 0x36d39
movq %rcx, 0xc8(%rsp)
movq (%rax), %rcx
movq %rcx, 0xd8(%rsp)
jmp 0x36d40
movups (%rax), %xmm0
movups %xmm0, (%rbp)
leaq 0x8(%r12), %rdi
movq 0x10(%r12), %rcx
movq %rcx, 0xd0(%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), %r15
movq %r15, %rsi
callq 0x5420
movl 0x28(%r13), %eax
movl %eax, 0x28(%r12)
movzwl 0x2c(%r13), %eax
movw %ax, 0x2c(%r12)
movl 0xc0(%rsp), %eax
movl %eax, (%r13)
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5420
movzwl 0x24(%rbx), %eax
movw %ax, 0x2c(%r13)
movl 0x20(%rbx), %eax
movl %eax, 0x28(%r13)
movq 0xc8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x36de3
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %r12
addq $0x30, %r14
cmpq 0xb8(%rsp), %r12
jne 0x36cc8
movq 0x28(%rsp), %rbx
subq 0x20(%rsp), %rbx
leaq 0x4219(%rip), %rsi      # 0x3b023
leaq 0x150(%rsp), %rdi
callq 0x5100
movzbl 0x17(%rsp), %ebp
testl %eax, %eax
movq 0x38(%rsp), %r15
je 0x36f12
leaq 0x22b0(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x2258(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x5d8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x41c0(%rip), %rsi      # 0x3b023
leaq 0x41bb(%rip), %rdx      # 0x3b025
leaq 0x5c8(%rsp), %rdi
callq 0xb62c
leaq 0xaa8(%rsp), %rdi
leaq 0x5c8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r15, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x22b0(%rsp), %rcx
leaq 0x2258(%rsp), %r8
leaq 0xaa8(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0xac0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36edb
movq 0xac0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x5c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x36ef8
movq 0x5d8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x2258(%rsp), %rdi
callq 0xb116
leaq 0x22b0(%rsp), %rdi
callq 0xb116
leaq 0x410d(%rip), %rsi      # 0x3b026
leaq 0x150(%rsp), %rdi
callq 0x5100
testl %eax, %eax
sete %al
orb 0x18(%rsp), %al
jne 0x3701f
leaq 0x2200(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x21a8(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x5b8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x40b7(%rip), %rsi      # 0x3b026
leaq 0x40b2(%rip), %rdx      # 0x3b028
leaq 0x5a8(%rsp), %rdi
callq 0xb62c
leaq 0xa78(%rsp), %rdi
leaq 0x5a8(%rsp), %rsi
movl $0x1, %edx
callq 0x14f5c
movq %r15, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x2200(%rsp), %rcx
leaq 0x21a8(%rsp), %r8
leaq 0xa78(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0xa90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x36fe8
movq 0xa90(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x5a8(%rsp), %rdi
cmpq %r14, %rdi
je 0x37005
movq 0x5b8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x21a8(%rsp), %rdi
callq 0xb116
leaq 0x2200(%rsp), %rdi
callq 0xb116
leaq 0x1808(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x17b0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x598(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3fd0(%rip), %rsi      # 0x3b029
leaq 0x3fcb(%rip), %rdx      # 0x3b02b
leaq 0x588(%rsp), %rdi
callq 0xb62c
leaq 0xa48(%rsp), %rdi
leaq 0x588(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r15, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1808(%rsp), %rcx
leaq 0x17b0(%rsp), %r8
leaq 0xa48(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0xa60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x370d1
movq 0xa60(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x588(%rsp), %rdi
cmpq %r14, %rdi
je 0x370ee
movq 0x598(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x17e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3710f
movq 0x17e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x17c8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37130
movq 0x17c8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1840(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37151
movq 0x1840(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1820(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37172
movq 0x1820(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1758(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1700(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x578(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3e80(%rip), %rsi      # 0x3b02c
leaq 0x3e7b(%rip), %rdx      # 0x3b02e
leaq 0x568(%rsp), %rdi
callq 0xb62c
leaq 0xa18(%rsp), %rdi
leaq 0x568(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r15, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1758(%rsp), %rcx
leaq 0x1700(%rsp), %r8
leaq 0xa18(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0xa30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37224
movq 0xa30(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x568(%rsp), %rdi
cmpq %r14, %rdi
je 0x37241
movq 0x578(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1738(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37262
movq 0x1738(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1718(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37283
movq 0x1718(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1790(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x372a4
movq 0x1790(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1770(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x372c5
movq 0x1770(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x16a8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1650(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x558(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3d30(%rip), %rsi      # 0x3b02f
leaq 0x3d2b(%rip), %rdx      # 0x3b031
leaq 0x548(%rsp), %rdi
callq 0xb62c
leaq 0x9e8(%rsp), %rdi
leaq 0x548(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r15, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x16a8(%rsp), %rcx
leaq 0x1650(%rsp), %r8
leaq 0x9e8(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0xa00(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37377
movq 0xa00(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x548(%rsp), %rdi
cmpq %r14, %rdi
je 0x37394
movq 0x558(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1688(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x373b5
movq 0x1688(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1668(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x373d6
movq 0x1668(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x16e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x373f7
movq 0x16e0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x16c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37418
movq 0x16c0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x15f8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x15a0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x538(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3be0(%rip), %rsi      # 0x3b032
leaq 0x3bdb(%rip), %rdx      # 0x3b034
leaq 0x528(%rsp), %rdi
callq 0xb62c
leaq 0x9b8(%rsp), %rdi
leaq 0x528(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r15, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x15f8(%rsp), %rcx
leaq 0x15a0(%rsp), %r8
leaq 0x9b8(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0x9d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x374ca
movq 0x9d0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x528(%rsp), %rdi
cmpq %r14, %rdi
je 0x374e7
movq 0x538(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x15d8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37508
movq 0x15d8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x15b8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37529
movq 0x15b8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1630(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3754a
movq 0x1630(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1610(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3756b
movq 0x1610(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1548(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x14f0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x518(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3a90(%rip), %rsi      # 0x3b035
leaq 0x3a8c(%rip), %rdx      # 0x3b038
leaq 0x508(%rsp), %rdi
callq 0xb62c
leaq 0x988(%rsp), %rdi
leaq 0x508(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r15, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1548(%rsp), %rcx
leaq 0x14f0(%rsp), %r8
leaq 0x988(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0x9a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3761d
movq 0x9a0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x508(%rsp), %rdi
cmpq %r14, %rdi
je 0x3763a
movq 0x518(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1528(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3765b
movq 0x1528(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1508(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3767c
movq 0x1508(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1580(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3769d
movq 0x1580(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1560(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x376be
movq 0x1560(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1498(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1440(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x4f8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3941(%rip), %rsi      # 0x3b039
leaq 0x393d(%rip), %rdx      # 0x3b03c
leaq 0x4e8(%rsp), %rdi
callq 0xb62c
leaq 0x958(%rsp), %rdi
leaq 0x4e8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %r15, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1498(%rsp), %rcx
leaq 0x1440(%rsp), %r8
leaq 0x958(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0x970(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37770
movq 0x970(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x4e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x3778d
movq 0x4f8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1478(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x377ae
movq 0x1478(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1458(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x377cf
movq 0x1458(%rsp), %rsi
incq %rsi
callq 0x5360
sarq $0x4, %rbx
leaq 0x14d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x377f4
movq 0x14d0(%rsp), %rsi
incq %rsi
callq 0x5360
movl %ebp, 0xb8(%rsp)
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %rbx
leaq 0x14b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3782a
movq 0x14b0(%rsp), %rsi
incq %rsi
callq 0x5360
movslq %ebx, %rax
leaq (%rax,%rax,2), %rcx
shlq $0x4, %rcx
addq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq %rcx, 0x40(%rsp)
cmpq %rax, %rcx
je 0x379a9
movq 0x40(%rsp), %rax
leaq 0x30(%rax), %r12
cmpq 0x18(%rsp), %r12
je 0x379a9
leaq 0xc8(%rsp), %rbx
leaq 0xd8(%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 0x40(%rsp), %r13
cmpq %r13, %r12
je 0x37996
movl (%r12), %eax
movl %eax, 0xc0(%rsp)
movq %r15, 0xc8(%rsp)
movq 0x8(%r12), %rcx
leaq 0x18(%r12), %rax
cmpq %rcx, %rax
je 0x378ec
movq %rcx, 0xc8(%rsp)
movq (%rax), %rcx
movq %rcx, 0xd8(%rsp)
jmp 0x378f3
movups (%rax), %xmm0
movups %xmm0, (%r15)
leaq 0x8(%r12), %rdi
movq 0x10(%r12), %rcx
movq %rcx, 0xd0(%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 0xc0(%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 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0x37996
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x30, %r12
addq $0x30, %rbp
cmpq 0x18(%rsp), %r12
jne 0x3787b
leaq 0x170(%rsp), %rdi
movl (%rdi), %eax
leal 0x3(%rax), %esi
testl %eax, %eax
cmovnsl %eax, %esi
sarl $0x2, %esi
imull 0x118(%rsp), %esi
callq 0xafce
movq 0x38(%rsp), %rbx
movl 0xb8(%rsp), %ebp
testb %al, %al
jne 0x37e6c
leaq 0x2150(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x20f8(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x4d8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x369f(%rip), %rsi      # 0x3b0b8
leaq 0x369a(%rip), %rdx      # 0x3b0ba
leaq 0x4c8(%rsp), %rdi
callq 0xb62c
leaq 0x928(%rsp), %rdi
leaq 0x4c8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %rbx, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x2150(%rsp), %rcx
leaq 0x20f8(%rsp), %r8
leaq 0x928(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0x940(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37a91
movq 0x940(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x4c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x37aae
movq 0x4d8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x20f8(%rsp), %rdi
callq 0xb116
leaq 0x2150(%rsp), %rdi
callq 0xb116
leaq 0x20a0(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x2048(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x4b8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x35b0(%rip), %rsi      # 0x3b0b2
leaq 0x35ab(%rip), %rdx      # 0x3b0b4
leaq 0x4a8(%rsp), %rdi
callq 0xb62c
leaq 0x8f8(%rsp), %rdi
leaq 0x4a8(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %rbx, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x20a0(%rsp), %rcx
leaq 0x2048(%rsp), %r8
leaq 0x8f8(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0x910(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37b7a
movq 0x910(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x4a8(%rsp), %rdi
cmpq %r14, %rdi
je 0x37b97
movq 0x4b8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x2048(%rsp), %rdi
callq 0xb116
leaq 0x20a0(%rsp), %rdi
callq 0xb116
leaq 0x1ff0(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1f98(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x498(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x34ca(%rip), %rsi      # 0x3b0b5
leaq 0x34c5(%rip), %rdx      # 0x3b0b7
leaq 0x488(%rsp), %rdi
callq 0xb62c
leaq 0x8c8(%rsp), %rdi
leaq 0x488(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %rbx, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1ff0(%rsp), %rcx
leaq 0x1f98(%rsp), %r8
leaq 0x8c8(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0x8e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37c63
movq 0x8e0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x488(%rsp), %rdi
cmpq %r14, %rdi
je 0x37c80
movq 0x498(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1f98(%rsp), %rdi
callq 0xb116
leaq 0x1ff0(%rsp), %rdi
callq 0xb116
leaq 0x1f40(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1ee8(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x478(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x33e7(%rip), %rsi      # 0x3b0bb
leaq 0x33e2(%rip), %rdx      # 0x3b0bd
leaq 0x468(%rsp), %rdi
callq 0xb62c
leaq 0x898(%rsp), %rdi
leaq 0x468(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %rbx, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1f40(%rsp), %rcx
leaq 0x1ee8(%rsp), %r8
leaq 0x898(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0x8b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37d4c
movq 0x8b0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x468(%rsp), %rdi
cmpq %r14, %rdi
je 0x37d69
movq 0x478(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1ee8(%rsp), %rdi
callq 0xb116
leaq 0x1f40(%rsp), %rdi
callq 0xb116
leaq 0x1e90(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1a9c6
leaq 0x1e38(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x458(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x3301(%rip), %rsi      # 0x3b0be
leaq 0x32fc(%rip), %rdx      # 0x3b0c0
leaq 0x448(%rsp), %rdi
callq 0xb62c
leaq 0x868(%rsp), %rdi
leaq 0x448(%rsp), %rsi
movl 0x10(%rsp), %edx
callq 0x14f5c
movq %rbx, (%rsp)
leaq 0x20(%rsp), %rdx
leaq 0x1e90(%rsp), %rcx
leaq 0x1e38(%rsp), %r8
leaq 0x868(%rsp), %r9
xorl %edi, %edi
movl %ebp, %esi
callq 0x39450
leaq 0x880(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x37e35
movq 0x880(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x448(%rsp), %rdi
cmpq %r14, %rdi
je 0x37e52
movq 0x458(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1e38(%rsp), %rdi
callq 0xb116
leaq 0x1e90(%rsp), %rdi
callq 0xb116
movq 0x20(%rsp), %r13
movq 0x28(%rsp), %rbp
cmpq %rbp, %r13
je 0x38234
leaq 0x128(%rsp), %r14
leaq 0x2c0(%rsp), %r12
xorl %ecx, %ecx
movq 0x118(%rsp), %rax
cmpl $0x3, %eax
sete %cl
addl 0x48(%rsp), %ecx
movl %ecx, 0x48(%rsp)
incl %eax
andl $0x3, %eax
movl %eax, 0x18(%rsp)
movl (%r13), %eax
movl %eax, 0x120(%rsp)
leaq 0x138(%rsp), %rax
movq %rax, 0x128(%rsp)
movq 0x8(%r13), %rsi
movq 0x10(%r13), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0xb544
movzwl 0x2c(%r13), %eax
movw %ax, 0x24(%r14)
movl 0x28(%r13), %eax
movl %eax, 0x20(%r14)
leaq 0xcb0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
movl 0x120(%rsp), %eax
movl %eax, 0x2b8(%rsp)
leaq 0x2d0(%rsp), %rax
movq %rax, 0x2c0(%rsp)
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xb544
movzwl 0x24(%r14), %eax
movw %ax, 0x24(%r12)
movl 0x20(%r14), %eax
movl %eax, 0x20(%r12)
leaq 0xc0(%rsp), %rdi
leaq 0xcb0(%rsp), %rsi
leaq 0x2b8(%rsp), %rdx
callq 0x15a46
movq 0x2c0(%rsp), %rdi
leaq 0x2d0(%rsp), %rax
cmpq %rax, %rdi
je 0x37f94
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xcd8(%rsp), %rdi
leaq 0xce8(%rsp), %rax
cmpq %rax, %rdi
je 0x37fb9
movq 0xce8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xcb8(%rsp), %rdi
leaq 0xcc8(%rsp), %rax
cmpq %rax, %rdi
je 0x37fde
movq 0xcc8(%rsp), %rsi
incq %rsi
callq 0x5360
movl 0xc0(%rsp), %eax
leal 0x3(%rax), %ecx
testl %eax, %eax
cmovnsl %eax, %ecx
sarl $0x2, %ecx
movl %ecx, 0xc0(%rsp)
leaq 0xc58(%rsp), %rdi
leaq 0x1c8(%rsp), %rsi
callq 0x1a9c6
leaq 0xe68(%rsp), %rbx
movq %rbx, %rdi
leaq 0x170(%rsp), %rsi
callq 0x1a9c6
leaq 0x220(%rsp), %rdi
leaq 0xc58(%rsp), %rsi
movq %rbx, %rdx
callq 0x15216
movq 0xe90(%rsp), %rdi
leaq 0xea0(%rsp), %rax
cmpq %rax, %rdi
je 0x38061
movq 0xea0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xe70(%rsp), %rdi
leaq 0xe80(%rsp), %rax
cmpq %rax, %rdi
je 0x38086
movq 0xe80(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xc80(%rsp), %rdi
leaq 0xc90(%rsp), %rax
cmpq %rax, %rdi
je 0x380ab
movq 0xc90(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xc60(%rsp), %rdi
leaq 0xc70(%rsp), %rax
cmpq %rax, %rdi
je 0x380d0
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x5360
movl 0x120(%rsp), %eax
xorl %r15d, %r15d
cmpl 0x250(%rsp), %eax
jne 0x38100
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
cmpl $0x3, %eax
je 0x38100
cmpl $0x6, %eax
je 0x38100
xorl %r15d, %r15d
cmpl $0xa, %eax
sete %r15b
negl %r15d
leaq 0x220(%rsp), %rdi
callq 0x15b78
addl 0x50(%rsp), %r15d
xorb 0x58(%rsp), %al
movzbl %al, %eax
movl 0x54(%rsp), %ebx
subl %eax, %ebx
movl %ebx, %eax
orl %r15d, %eax
js 0x38177
movq 0x38(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xb14e
movl 0x48(%rsp), %edi
movl 0x18(%rsp), %esi
movl %r15d, %edx
movl %ebx, %ecx
movl 0x10(%rsp), %r8d
movq 0x38(%rsp), %r9
callq 0x346e2
movl $0x1, %ebx
testb %al, %al
jne 0x3817c
movq 0x38(%rsp), %rdi
movq 0x8(%rdi), %rsi
addq $-0x58, %rsi
movq %rsi, 0x8(%rdi)
callq 0xba7e
xorl %ebx, %ebx
jmp 0x3817c
movl $0x3, %ebx
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0x381a1
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x381c6
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x381eb
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x38210
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5360
cmpl $0x3, %ebx
je 0x38219
testl %ebx, %ebx
jne 0x3822b
addq $0x30, %r13
cmpq %rbp, %r13
jne 0x37eb0
movl $0x2, %ebx
testb $0x1, %bl
sete %bpl
jmp 0x38237
movb $0x1, %bpl
leaq 0x160(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38258
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x268(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38279
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x2a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3829a
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x200(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x382bb
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x382dc
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x382fd
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38318
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5360
movb $0x1, %bl
testb %bpl, %bpl
je 0x383ba
leaq 0x60(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0x24316
movl 0x118(%rsp), %eax
leaq 0x98(%rsp), %rcx
movslq 0x14(%rcx), %rdx
movslq 0x50(%rsp), %rsi
movslq 0x54(%rsp), %rdi
imulq $0x1081c8, 0x280(%rsp), %r8 # imm = 0x1081C8
addq 0x10c0e(%rip), %r8      # 0x48f70
imulq $0x42072, %rax, %rax    # imm = 0x42072
addq %r8, %rax
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 0x3839d
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x383b8
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5360
xorl %ebx, %ebx
leaq 0x1a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x383db
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x188(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x383fc
movq 0x188(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x20(%rsp), %rdi
callq 0xb17a
movl %ebx, %eax
addq $0x2468, %rsp           # imm = 0x2468
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x3843f
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x3845b
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x1d0(%rsp), %rdi
leaq 0x1e0(%rsp), %rax
cmpq %rax, %rdi
je 0x38480
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x5360
movb $0x1, %bl
jmp 0x383ba
movq %rax, %rbx
leaq 0x880(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x384b0
movq 0x880(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x384b0
movq %rax, %rbx
movq 0x448(%rsp), %rdi
cmpq %r14, %rdi
je 0x384d2
movq 0x458(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x384d2
movq %rax, %rbx
leaq 0x1e38(%rsp), %rdi
callq 0xb116
jmp 0x384e4
movq %rax, %rbx
leaq 0x1e90(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x8b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3851a
movq 0x8b0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x3851a
movq %rax, %rbx
movq 0x468(%rsp), %rdi
cmpq %r14, %rdi
je 0x3853c
movq 0x478(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x3853c
movq %rax, %rbx
leaq 0x1ee8(%rsp), %rdi
callq 0xb116
jmp 0x3854e
movq %rax, %rbx
leaq 0x1f40(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x8e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38584
movq 0x8e0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38584
movq %rax, %rbx
movq 0x488(%rsp), %rdi
cmpq %r14, %rdi
je 0x385a6
movq 0x498(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x385a6
movq %rax, %rbx
leaq 0x1f98(%rsp), %rdi
callq 0xb116
jmp 0x385b8
movq %rax, %rbx
leaq 0x1ff0(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x910(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x385ee
movq 0x910(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x385ee
movq %rax, %rbx
movq 0x4a8(%rsp), %rdi
cmpq %r14, %rdi
je 0x38610
movq 0x4b8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38610
movq %rax, %rbx
leaq 0x2048(%rsp), %rdi
callq 0xb116
jmp 0x38622
movq %rax, %rbx
leaq 0x20a0(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x940(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38658
movq 0x940(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38658
movq %rax, %rbx
movq 0x4c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x3867a
movq 0x4d8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x3867a
movq %rax, %rbx
leaq 0x20f8(%rsp), %rdi
callq 0xb116
jmp 0x3868c
movq %rax, %rbx
leaq 0x2150(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xa90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x386c2
movq 0xa90(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x386c2
movq %rax, %rbx
movq 0x5a8(%rsp), %rdi
cmpq %r14, %rdi
je 0x386e4
movq 0x5b8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x386e4
movq %rax, %rbx
leaq 0x21a8(%rsp), %rdi
callq 0xb116
jmp 0x386f6
movq %rax, %rbx
leaq 0x2200(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xc10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3872c
movq 0xc10(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x3872c
movq %rax, %rbx
movq 0x6a8(%rsp), %rdi
cmpq %r14, %rdi
je 0x3874e
movq 0x6b8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x3874e
movq %rax, %rbx
leaq 0x2308(%rsp), %rdi
callq 0xb116
jmp 0x38760
movq %rax, %rbx
leaq 0x2360(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x760(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38796
movq 0x760(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38796
movq %rax, %rbx
movq 0x368(%rsp), %rdi
cmpq %r14, %rdi
je 0x387b8
movq 0x378(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x387b8
movq %rax, %rbx
leaq 0xec0(%rsp), %rdi
callq 0xb116
jmp 0x387ca
movq %rax, %rbx
leaq 0xf18(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x7f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38800
movq 0x7f0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38800
movq %rax, %rbx
movq 0x3c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x38822
movq 0x3d8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38822
movq %rax, %rbx
leaq 0x10d0(%rsp), %rdi
callq 0xb116
jmp 0x38834
movq %rax, %rbx
leaq 0x1128(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xac0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3886a
movq 0xac0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x3886a
movq %rax, %rbx
movq 0x5c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x3888c
movq 0x5d8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x3888c
movq %rax, %rbx
leaq 0x2258(%rsp), %rdi
callq 0xb116
jmp 0x3889e
movq %rax, %rbx
leaq 0x22b0(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xc40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x388d4
movq 0xc40(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x388d4
movq %rax, %rbx
movq 0x6c8(%rsp), %rdi
cmpq %r14, %rdi
je 0x388f6
movq 0x6d8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x388f6
movq %rax, %rbx
leaq 0x23b8(%rsp), %rdi
callq 0xb116
jmp 0x38908
movq %rax, %rbx
leaq 0x2410(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x790(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3893e
movq 0x790(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x3893e
movq %rax, %rbx
movq 0x388(%rsp), %rdi
cmpq %r14, %rdi
je 0x38960
movq 0x398(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38960
movq %rax, %rbx
leaq 0xf70(%rsp), %rdi
callq 0xb116
jmp 0x38972
movq %rax, %rbx
leaq 0xfc8(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x820(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x389a8
movq 0x820(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x389a8
movq %rax, %rbx
movq 0x3e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x389ca
movq 0x3f8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x389ca
movq %rax, %rbx
leaq 0x1180(%rsp), %rdi
callq 0xb116
jmp 0x389dc
movq %rax, %rbx
leaq 0x11d8(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x970(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38a12
movq 0x970(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38a12
movq %rax, %rbx
movq 0x4e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x38a34
movq 0x4f8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38a34
movq %rax, %rbx
leaq 0x1440(%rsp), %rdi
callq 0xb116
jmp 0x38a46
movq %rax, %rbx
leaq 0x1498(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x9a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38a7c
movq 0x9a0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38a7c
movq %rax, %rbx
movq 0x508(%rsp), %rdi
cmpq %r14, %rdi
je 0x38a9e
movq 0x518(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38a9e
movq %rax, %rbx
leaq 0x14f0(%rsp), %rdi
callq 0xb116
jmp 0x38ab0
movq %rax, %rbx
leaq 0x1548(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x9d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38ae6
movq 0x9d0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38ae6
movq %rax, %rbx
movq 0x528(%rsp), %rdi
cmpq %r14, %rdi
je 0x38b08
movq 0x538(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38b08
movq %rax, %rbx
leaq 0x15a0(%rsp), %rdi
callq 0xb116
jmp 0x38b1a
movq %rax, %rbx
leaq 0x15f8(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xa00(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38b50
movq 0xa00(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38b50
movq %rax, %rbx
movq 0x548(%rsp), %rdi
cmpq %r14, %rdi
je 0x38b72
movq 0x558(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38b72
movq %rax, %rbx
leaq 0x1650(%rsp), %rdi
callq 0xb116
jmp 0x38b84
movq %rax, %rbx
leaq 0x16a8(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xa30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38bba
movq 0xa30(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38bba
movq %rax, %rbx
movq 0x568(%rsp), %rdi
cmpq %r14, %rdi
je 0x38bdc
movq 0x578(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38bdc
movq %rax, %rbx
leaq 0x1700(%rsp), %rdi
callq 0xb116
jmp 0x38bee
movq %rax, %rbx
leaq 0x1758(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xa60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38c24
movq 0xa60(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38c24
movq %rax, %rbx
movq 0x588(%rsp), %rdi
cmpq %r14, %rdi
je 0x38c46
movq 0x598(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38c46
movq %rax, %rbx
leaq 0x17b0(%rsp), %rdi
callq 0xb116
jmp 0x38c58
movq %rax, %rbx
leaq 0x1808(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xaf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38c8e
movq 0xaf0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38c8e
movq %rax, %rbx
movq 0x5e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x38cb0
movq 0x5f8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38cb0
movq %rax, %rbx
leaq 0x1860(%rsp), %rdi
callq 0xb116
jmp 0x38cc2
movq %rax, %rbx
leaq 0x18b8(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xb20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38cf8
movq 0xb20(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38cf8
movq %rax, %rbx
movq 0x608(%rsp), %rdi
cmpq %r14, %rdi
je 0x38d1a
movq 0x618(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38d1a
movq %rax, %rbx
leaq 0x1910(%rsp), %rdi
callq 0xb116
jmp 0x38d2c
movq %rax, %rbx
leaq 0x1968(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xb50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38d62
movq 0xb50(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38d62
movq %rax, %rbx
movq 0x628(%rsp), %rdi
cmpq %r14, %rdi
je 0x38d84
movq 0x638(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38d84
movq %rax, %rbx
leaq 0x19c0(%rsp), %rdi
callq 0xb116
jmp 0x38d96
movq %rax, %rbx
leaq 0x1a18(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xb80(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38dcc
movq 0xb80(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38dcc
movq %rax, %rbx
movq 0x648(%rsp), %rdi
cmpq %r14, %rdi
je 0x38dee
movq 0x658(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38dee
movq %rax, %rbx
leaq 0x1a70(%rsp), %rdi
callq 0xb116
jmp 0x38e00
movq %rax, %rbx
leaq 0x1ac8(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xbb0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38e36
movq 0xbb0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38e36
movq %rax, %rbx
movq 0x668(%rsp), %rdi
cmpq %r14, %rdi
je 0x38e58
movq 0x678(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38e58
movq %rax, %rbx
leaq 0x1b20(%rsp), %rdi
callq 0xb116
jmp 0x38e6a
movq %rax, %rbx
leaq 0x1b78(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xbe0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38ea0
movq 0xbe0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38ea0
movq %rax, %rbx
movq 0x688(%rsp), %rdi
cmpq %r14, %rdi
je 0x38ec2
movq 0x698(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38ec2
movq %rax, %rbx
leaq 0x1bd0(%rsp), %rdi
callq 0xb116
jmp 0x38ed4
movq %rax, %rbx
leaq 0x1c28(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38f0a
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38f0a
movq %rax, %rbx
movq 0x428(%rsp), %rdi
cmpq %r14, %rdi
je 0x393b7
movq 0x438(%rsp), %rsi
jmp 0x393af
jmp 0x392b2
movq %rax, %rbx
leaq 0x7c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38f56
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38f56
movq %rax, %rbx
movq 0x3a8(%rsp), %rdi
cmpq %r14, %rdi
je 0x38f78
movq 0x3b8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38f78
movq %rax, %rbx
leaq 0x1020(%rsp), %rdi
callq 0xb116
jmp 0x38f8a
movq %rax, %rbx
leaq 0x1078(%rsp), %rdi
jmp 0x39022
movq %rax, %rbx
leaq 0x850(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x38fc0
movq 0x850(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38fc0
movq %rax, %rbx
movq 0x408(%rsp), %rdi
cmpq %r14, %rdi
je 0x38fe2
movq 0x418(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x38fe2
movq %rax, %rbx
leaq 0x1230(%rsp), %rdi
callq 0xb116
jmp 0x3901a
movq %rax, %rbx
leaq 0xd8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3902f
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x3902f
movq %rax, %rbx
leaq 0x1288(%rsp), %rdi
callq 0xb116
jmp 0x393b7
movq %rax, %rbx
movq 0x348(%rsp), %rdi
cmpq %r14, %rdi
je 0x393b7
movq 0x358(%rsp), %rsi
jmp 0x393af
jmp 0x392b2
movq %rax, %rbx
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x39076
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x39076
movq %rax, %rbx
movq 0x2e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x39431
movq 0x2f8(%rsp), %rsi
jmp 0x3934e
jmp 0x39216
jmp 0x390f5
movq %rax, %rbx
leaq 0x1c80(%rsp), %rdi
callq 0xb116
jmp 0x390b0
movq %rax, %rbx
leaq 0x1cd8(%rsp), %rdi
jmp 0x3911a
jmp 0x39147
jmp 0x39147
movq %rax, %rbx
leaq 0x1d30(%rsp), %rdi
callq 0xb116
jmp 0x390d9
movq %rax, %rbx
leaq 0x1d88(%rsp), %rdi
jmp 0x39192
jmp 0x391bc
jmp 0x391e5
jmp 0x39216
movq %rax, %rbx
jmp 0x393d8
movq %rax, %rbx
leaq 0x12e0(%rsp), %rdi
callq 0xb116
jmp 0x39112
movq %rax, %rbx
leaq 0x1338(%rsp), %rdi
callq 0xb116
jmp 0x393f9
jmp 0x39147
movq %rax, %rbx
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x39152
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x39152
movq %rax, %rbx
jmp 0x393f9
movq %rax, %rbx
movq 0x308(%rsp), %rdi
cmpq %r14, %rdi
je 0x39431
movq 0x318(%rsp), %rsi
jmp 0x3934e
movq %rax, %rbx
leaq 0x1390(%rsp), %rdi
callq 0xb116
jmp 0x3918a
jmp 0x39216
movq %rax, %rbx
leaq 0x13e8(%rsp), %rdi
callq 0xb116
jmp 0x3941a
movq %rax, %rbx
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x391c7
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x391c7
movq %rax, %rbx
jmp 0x3941a
movq %rax, %rbx
movq 0x328(%rsp), %rdi
cmpq %r14, %rdi
je 0x39431
movq 0x338(%rsp), %rsi
jmp 0x3934e
movq %rax, %rbx
jmp 0x39427
jmp 0x39216
jmp 0x39216
jmp 0x392b2
jmp 0x39216
jmp 0x392b2
movq %rax, %rbx
jmp 0x3943e
jmp 0x39216
jmp 0x392b2
jmp 0x392b2
movq %rax, %rbx
jmp 0x3923e
movq %rax, %rbx
jmp 0x39431
movq %rax, %rbx
movq 0x6f0(%rsp), %rdi
cmpq %r13, %rdi
je 0x3923e
movq 0x700(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xd08(%rsp), %rdi
jmp 0x39328
movq %rax, %rbx
jmp 0x3932d
jmp 0x392b2
jmp 0x392ba
movq %rax, %rbx
jmp 0x39284
movq %rax, %rbx
movq 0x2c0(%rsp), %rdi
leaq 0x2d0(%rsp), %rax
cmpq %rax, %rdi
je 0x39284
movq 0x2d0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xcb0(%rsp), %rdi
jmp 0x3938d
jmp 0x392f4
movq %rax, %rbx
jmp 0x392a8
movq %rax, %rbx
leaq 0xe68(%rsp), %rdi
callq 0xb116
leaq 0xc58(%rsp), %rdi
jmp 0x39319
movq %rax, %rbx
jmp 0x393b7
movq %rax, %rbx
jmp 0x39392
movq %rax, %rbx
jmp 0x392e7
movq %rax, %rbx
movq 0x720(%rsp), %rdi
cmpq %r12, %rdi
je 0x392e7
movq 0x730(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xe10(%rsp), %rdi
jmp 0x3938d
movq %rax, %rbx
jmp 0x39385
movq %rax, %rbx
jmp 0x39311
movq %rax, %rbx
leaq 0xd60(%rsp), %rdi
callq 0xb116
leaq 0xdb8(%rsp), %rdi
callq 0xb116
jmp 0x39385
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0xb116
movq 0x1d0(%rsp), %rdi
leaq 0x1e0(%rsp), %rax
cmpq %rax, %rdi
je 0x39431
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x39431
jmp 0x3935d
movq %rax, %rbx
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0x39385
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xc0(%rsp), %rdi
callq 0xb116
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x393b7
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x160(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x393d8
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x268(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x393f9
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x2a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3941a
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1c8(%rsp), %rdi
callq 0xb116
leaq 0x60(%rsp), %rdi
callq 0xb116
leaq 0x170(%rsp), %rdi
callq 0xb116
leaq 0x20(%rsp), %rdi
callq 0xb17a
movq %rbx, %rdi
callq 0x55e0