// File: /workspace/github_cpp_makefile_star2_O1/joao18araujo[P]pierluigi/src/main.cpp
// Function: main
int main(int argc, char *argv[]){

  if(argc < 4){
    cerr << "Missing parameters: prog input species ascendant" << endl;
    return -1;
  }

  string input_path(argv[1]);
  string simple_input_path = "public/simple_input.ly";
  int species = atoi(argv[2]);
  bool ascendant = (string(argv[3]) == "true");
  printf("[%s] [%d] [%d]\n", input_path.c_str(), species, ascendant);

  LyParser::convert_file_to_simple_format(input_path, simple_input_path);
  Song song = LyParser::read_file(simple_input_path);

  Song counterpoint, second_counterpoint, third_counterpoint, fourth_counterpoint;
  switch (species) {
    case 1:
      cout << "\nGenerating first species counterpoint...\n";
      counterpoint = FirstSpeciesCounterpoint::dfs_generate_counterpoint(song, ascendant, 4, song.size());
    break;

    case 2:
      cout << "\nGenerating second species counterpoint...\n";
      counterpoint = SecondSpeciesCounterpoint::dfs_generate_counterpoint(song, ascendant, 4, song.size() * 2);
    break;

    case 3:
      cout << "\nGenerating third species counterpoint...\n";
      counterpoint = ThirdSpeciesCounterpoint::dfs_generate_counterpoint(song, ascendant, 4, song.size() * 4);
    break;

    case 4:
      cout << "\nGenerating fourth species counterpoint...\n";
      counterpoint = FourthSpeciesCounterpoint::dfs_generate_counterpoint(song, ascendant, 4, song.size() * 2);
    break;

    default:
      cout << "\nGenerating counterpoints...\n";
      counterpoint = FirstSpeciesCounterpoint::dfs_generate_counterpoint(song, ascendant, 4, song.size());
      second_counterpoint = SecondSpeciesCounterpoint::dfs_generate_counterpoint(song, ascendant, 4, song.size() * 2);
      third_counterpoint = ThirdSpeciesCounterpoint::dfs_generate_counterpoint(song, ascendant, 4, song.size() * 4);
      fourth_counterpoint = FourthSpeciesCounterpoint::dfs_generate_counterpoint(song, ascendant, 4, song.size() * 2);
    break;
  }

  if(counterpoint.size())
    LyParser::add_counterpoint_to_lilypond(counterpoint, input_path, "public/counterpoint.ly");

  if(second_counterpoint.size())
    LyParser::add_counterpoint_to_lilypond(second_counterpoint, input_path, "public/counterpoint_2.ly");

  if(third_counterpoint.size())
    LyParser::add_counterpoint_to_lilypond(third_counterpoint, input_path, "public/counterpoint_3.ly");

  if(fourth_counterpoint.size())
    LyParser::add_counterpoint_to_lilypond(fourth_counterpoint, input_path, "public/counterpoint_4.ly");


  if(counterpoint.size() == 0){
    cout << "Couldn't generate counterpoint\n";
    return -2;
  }

  int size = min(song.size(), counterpoint.size());
  for(int i = 0; i < size; ++i){
    Interval in(song.notes[i], counterpoint.notes[i]);
    cout << song.notes[i].full_note_with_octave() << " " << counterpoint.notes[i].full_note_with_octave() << " " << in.description() << endl;
  }

  cout << endl;

  cout << "First Species Counterpoint\n";
  for(auto & c : counterpoint.notes){
    cout << SongReader::note_to_string(c) << " ";
  }
  cout << endl;
  printf("Size: %d\n", (int) counterpoint.size());

  cout << endl;
  cout << "Second Species Counterpoint\n";
  for(auto & c : second_counterpoint.notes){
    cout << SongReader::note_to_string(c) << " ";
  }
  cout << endl;
  printf("Size: %d\n", (int) second_counterpoint.size());

  cout << endl;
  cout << "Third Species Counterpoint\n";
  for(auto & c : third_counterpoint.notes){
    cout << SongReader::note_to_string(c) << " ";
  }
  cout << endl;
  printf("Size: %d\n", (int) third_counterpoint.size());

  cout << endl;
  cout << "Fourth Species Counterpoint\n";
  for(auto & c : fourth_counterpoint.notes){
    cout << SongReader::note_to_string(c) << " ";
  }
  cout << endl;
  printf("Size: %d\n", (int) fourth_counterpoint.size());

	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x908, %rsp            # imm = 0x908
cmpl $0x3, %edi
jg 0x1890e
movq 0x3071f(%rip), %rbx     # 0x48fe8
leaq 0x22a14(%rip), %rsi     # 0x3b2e4
movl $0x30, %edx
movq %rbx, %rdi
callq 0x53d0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x19d83
movq %rsi, %rbx
movq 0x8(%rsi), %rsi
leaq 0x128(%rsp), %rdi
leaq 0x3b8(%rsp), %rdx
callq 0x1a7d6
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x229db(%rip), %rsi     # 0x3b315
leaq 0x229ea(%rip), %rdx     # 0x3b32b
leaq 0x8(%rsp), %rdi
callq 0xb62c
movq 0x10(%rbx), %rdi
callq 0x5520
movl %eax, %ebp
movq 0x18(%rbx), %rsi
leaq 0x3b8(%rsp), %rdi
leaq 0x188(%rsp), %rdx
callq 0x1a7d6
leaq 0x229b6(%rip), %rsi     # 0x3b32c
leaq 0x3b8(%rsp), %r14
movq %r14, %rdi
callq 0x5100
movl %eax, %ebx
movq (%r14), %rdi
leaq 0x3c8(%rsp), %rax
cmpq %rax, %rdi
je 0x189a8
movq 0x3c8(%rsp), %rsi
incq %rsi
callq 0x5360
xorl %ecx, %ecx
movl %ebx, 0x2c(%rsp)
testl %ebx, %ebx
sete %cl
movq 0x128(%rsp), %rsi
leaq 0x2296f(%rip), %rdi     # 0x3b331
movl %ebp, %edx
xorl %eax, %eax
callq 0x5070
leaq 0x3a8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
addq %rsi, %rdx
leaq 0x398(%rsp), %rdi
callq 0xb544
leaq 0x388(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x378(%rsp), %rdi
callq 0xb544
leaq 0x398(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0x16e6c
movq 0x378(%rsp), %rdi
cmpq %r15, %rdi
je 0x18a4f
movq 0x388(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x398(%rsp), %rdi
cmpq %rbx, %rdi
je 0x18a6c
movq 0x3a8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x368(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x358(%rsp), %rdi
callq 0xb544
leaq 0x3b8(%rsp), %rdi
leaq 0x358(%rsp), %rsi
movl $0x1, %edx
callq 0x16044
movq 0x358(%rsp), %rdi
cmpq %rbx, %rdi
je 0x18ac9
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x188(%rsp), %r14
movq %r14, %rdi
callq 0xfabe
movl 0x2c(%rsp), %ebx
leaq 0x680(%rsp), %r13
movq %r13, %rdi
callq 0xfabe
leaq 0x5b0(%rsp), %r12
movq %r12, %rdi
callq 0xfabe
leaq 0x488(%rsp), %rdi
callq 0xfabe
decl %ebp
cmpl $0x3, %ebp
ja 0x19d97
leaq 0x227b8(%rip), %rax     # 0x3b2d4
movslq (%rax,%rbp,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x30484(%rip), %rdi     # 0x48fb0
leaq 0x2280e(%rip), %rsi     # 0x3b341
movl $0x2a, %edx
callq 0x53d0
leaq 0x3b8(%rsp), %rdi
callq 0x24288
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
leaq 0x30(%rsp), %r15
leaq 0x3b8(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0xbd00
xorps %xmm0, %xmm0
leaq 0x100(%rsp), %rdi
movaps %xmm0, (%rdi)
leaq 0x1a0(%rsp), %r12
movups -0x18(%r12), %xmm0
movq -0x8(%r12), %rax
leaq 0x48(%rsp), %rbx
movups -0x18(%rbx), %xmm1
movups %xmm1, -0x18(%r12)
movq -0x8(%rbx), %rcx
movq %rcx, -0x8(%r12)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, -0x18(%rbx)
movq $0x0, -0x8(%rbx)
callq 0xb1d6
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x1e0(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x200(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
jmp 0x18ea3
movq 0x303a5(%rip), %rdi     # 0x48fb0
leaq 0x22786(%rip), %rsi     # 0x3b398
movl $0x2a, %edx
callq 0x53d0
leaq 0x3b8(%rsp), %rdi
callq 0x24288
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
shll $0x2, %eax
leaq 0x30(%rsp), %r15
leaq 0x3b8(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0x343ac
xorps %xmm0, %xmm0
leaq 0x100(%rsp), %rdi
movaps %xmm0, (%rdi)
leaq 0x1a0(%rsp), %r12
movups -0x18(%r12), %xmm0
movq -0x8(%r12), %rax
leaq 0x48(%rsp), %rbx
movups -0x18(%rbx), %xmm1
movups %xmm1, -0x18(%r12)
movq -0x8(%rbx), %rcx
movq %rcx, -0x8(%r12)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, -0x18(%rbx)
movq $0x0, -0x8(%rbx)
callq 0xb1d6
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x1e0(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x200(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
jmp 0x18ea3
movq 0x302c3(%rip), %rdi     # 0x48fb0
leaq 0x226cf(%rip), %rsi     # 0x3b3c3
movl $0x2b, %edx
callq 0x53d0
leaq 0x3b8(%rsp), %rdi
callq 0x24288
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
addl %eax, %eax
leaq 0x30(%rsp), %r15
leaq 0x3b8(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0xfd9c
xorps %xmm0, %xmm0
leaq 0x100(%rsp), %rdi
movaps %xmm0, (%rdi)
leaq 0x1a0(%rsp), %r12
movups -0x18(%r12), %xmm0
movq -0x8(%r12), %rax
leaq 0x48(%rsp), %rbx
movups -0x18(%rbx), %xmm1
movups %xmm1, -0x18(%r12)
movq -0x8(%rbx), %rcx
movq %rcx, -0x8(%r12)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, -0x18(%rbx)
movq $0x0, -0x8(%rbx)
callq 0xb1d6
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x1e0(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x200(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
jmp 0x18ea3
movq 0x301e2(%rip), %rdi     # 0x48fb0
leaq 0x22597(%rip), %rsi     # 0x3b36c
movl $0x2b, %edx
callq 0x53d0
leaq 0x3b8(%rsp), %rdi
callq 0x24288
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
addl %eax, %eax
leaq 0x30(%rsp), %r15
leaq 0x3b8(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0x1e580
xorps %xmm0, %xmm0
leaq 0x100(%rsp), %rdi
movaps %xmm0, (%rdi)
leaq 0x1a0(%rsp), %r12
movups -0x18(%r12), %xmm0
movq -0x8(%r12), %rax
leaq 0x48(%rsp), %rbx
movups -0x18(%rbx), %xmm1
movups %xmm1, -0x18(%r12)
movq -0x8(%rbx), %rcx
movq %rcx, -0x8(%r12)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, -0x18(%rbx)
movq $0x0, -0x8(%rbx)
callq 0xb1d6
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x1e0(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x200(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
leaq 0xe8(%rsp), %r12
movq -0x20(%r12), %rax
movq -0x1a(%r12), %rcx
movq %rcx, 0x226(%rsp)
movq %rax, 0x220(%rsp)
movl $0xa8, %eax
addq %rax, %r14
addq %rax, %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x5420
movq -0x10(%r12), %rdi
movq 0x10(%r12), %rax
movq %rax, 0x250(%rsp)
cmpq %r12, %rdi
je 0x18f02
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18f23
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18f44
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
movq %rbx, %rdi
callq 0xb51e
leaq 0x30(%rsp), %rdi
callq 0xb1d6
leaq 0x188(%rsp), %rdi
callq 0x24288
testl %eax, %eax
je 0x19015
leaq 0x348(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
addq %rsi, %rdx
leaq 0x338(%rsp), %rdi
callq 0xb544
leaq 0x328(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x22463(%rip), %rsi     # 0x3b40d
leaq 0x22472(%rip), %rdx     # 0x3b423
leaq 0x318(%rsp), %rdi
callq 0xb62c
leaq 0x188(%rsp), %rdi
leaq 0x338(%rsp), %rsi
leaq 0x318(%rsp), %rdx
callq 0x17f16
movq 0x318(%rsp), %rdi
cmpq %r15, %rdi
je 0x18ff8
movq 0x328(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x338(%rsp), %rdi
cmpq %rbx, %rdi
je 0x19015
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x680(%rsp), %rdi
callq 0x24288
testl %eax, %eax
je 0x190d4
leaq 0x308(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2f8(%rsp), %rdi
callq 0xb544
leaq 0x2e8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x223bb(%rip), %rsi     # 0x3b424
leaq 0x223cc(%rip), %rdx     # 0x3b43c
leaq 0x2d8(%rsp), %rdi
callq 0xb62c
leaq 0x680(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
leaq 0x2d8(%rsp), %rdx
callq 0x17f16
movq 0x2d8(%rsp), %rdi
cmpq %r15, %rdi
je 0x190b7
movq 0x2e8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x2f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x190d4
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x5b0(%rsp), %rdi
callq 0x24288
testl %eax, %eax
je 0x19193
leaq 0x2c8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2b8(%rsp), %rdi
callq 0xb544
leaq 0x2a8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x22315(%rip), %rsi     # 0x3b43d
leaq 0x22326(%rip), %rdx     # 0x3b455
leaq 0x298(%rsp), %rdi
callq 0xb62c
leaq 0x5b0(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
leaq 0x298(%rsp), %rdx
callq 0x17f16
movq 0x298(%rsp), %rdi
cmpq %r15, %rdi
je 0x19176
movq 0x2a8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x2b8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x19193
movq 0x2c8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x488(%rsp), %rdi
callq 0x24288
testl %eax, %eax
je 0x19252
leaq 0x288(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
addq %rsi, %rdx
leaq 0x278(%rsp), %rdi
callq 0xb544
leaq 0x268(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2226f(%rip), %rsi     # 0x3b456
leaq 0x22280(%rip), %rdx     # 0x3b46e
leaq 0x258(%rsp), %rdi
callq 0xb62c
leaq 0x488(%rsp), %rdi
leaq 0x278(%rsp), %rsi
leaq 0x258(%rsp), %rdx
callq 0x17f16
movq 0x258(%rsp), %rdi
cmpq %r15, %rdi
je 0x19235
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x278(%rsp), %rdi
cmpq %rbx, %rdi
je 0x19252
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x188(%rsp), %rdi
callq 0x24288
testl %eax, %eax
je 0x19ab8
leaq 0x3b8(%rsp), %rdi
callq 0x24288
movl %eax, %ebx
leaq 0x188(%rsp), %rdi
callq 0x24288
cmpl %ebx, %eax
cmovbl %eax, %ebx
testl %ebx, %ebx
jle 0x194ef
movl %ebx, %r13d
xorl %ebx, %ebx
leaq 0x8b0(%rsp), %r14
leaq 0x30(%rsp), %r15
leaq 0x21f53(%rip), %rbp     # 0x3b1fc
movq 0x3b8(%rsp), %rsi
addq %rbx, %rsi
leaq 0x558(%rsp), %rdi
callq 0x1a9c6
movq 0x188(%rsp), %rsi
addq %rbx, %rsi
movq %r14, %rdi
callq 0x1a9c6
movq %r15, %rdi
leaq 0x558(%rsp), %rsi
movq %r14, %rdx
callq 0x15216
movq 0x8d8(%rsp), %rdi
leaq 0x8e8(%rsp), %rax
cmpq %rax, %rdi
je 0x1930c
movq 0x8e8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x8b8(%rsp), %rdi
leaq 0x8c8(%rsp), %rax
cmpq %rax, %rdi
je 0x19331
movq 0x8c8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x580(%rsp), %rdi
leaq 0x590(%rsp), %rax
cmpq %rax, %rdi
je 0x19356
movq 0x590(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x560(%rsp), %rdi
leaq 0x570(%rsp), %rax
cmpq %rax, %rdi
je 0x1937b
movq 0x570(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x3b8(%rsp), %rsi
addq %rbx, %rsi
leaq 0x100(%rsp), %rdi
callq 0x1aec0
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq 0x2fc06(%rip), %rdi     # 0x48fb0
callq 0x53d0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x53d0
movq 0x188(%rsp), %rsi
addq %rbx, %rsi
leaq 0x168(%rsp), %rdi
callq 0x1aec0
movq 0x168(%rsp), %rsi
movq 0x170(%rsp), %rdx
movq %r12, %rdi
callq 0x53d0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x53d0
leaq 0x148(%rsp), %rdi
movq %r15, %rsi
callq 0x1539c
movq 0x148(%rsp), %rsi
movq 0x150(%rsp), %rdx
movq %r12, %rdi
callq 0x53d0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq %r12, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x1947c
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x194a1
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x194c6
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x194e2
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x58, %rbx
decq %r13
jne 0x192a9
movq 0x2faba(%rip), %rdi     # 0x48fb0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2fa9f(%rip), %rdi     # 0x48fb0
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq 0x2fa8b(%rip), %rdi     # 0x48fb0
leaq 0x21f63(%rip), %rsi     # 0x3b48f
movl $0x1b, %edx
callq 0x53d0
movq 0x188(%rsp), %r14
movq 0x190(%rsp), %rbx
cmpq %rbx, %r14
je 0x19615
leaq 0x858(%rsp), %r15
leaq 0x30(%rsp), %r12
movq 0x2fa4d(%rip), %r13     # 0x48fb0
leaq 0x21c92(%rip), %rbp     # 0x3b1fc
movq %r15, %rdi
movq %r14, %rsi
callq 0x1a9c6
movq %r12, %rdi
movq %r15, %rsi
callq 0x248dc
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movq %r13, %rdi
callq 0x53d0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x53d0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x195be
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x880(%rsp), %rdi
leaq 0x890(%rsp), %rax
cmpq %rax, %rdi
je 0x195e3
movq 0x890(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x860(%rsp), %rdi
leaq 0x870(%rsp), %rax
cmpq %rax, %rdi
je 0x19608
movq 0x870(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x58, %r14
cmpq %rbx, %r14
jne 0x1956a
movq 0x2f994(%rip), %rdi     # 0x48fb0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2f979(%rip), %rbx     # 0x48fb0
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq 0x188(%rsp), %rdi
callq 0x24288
leaq 0x21e50(%rip), %rdi     # 0x3b4ab
movl %eax, %esi
xorl %eax, %eax
callq 0x5070
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2f92e(%rip), %rdi     # 0x48fb0
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq 0x2f91a(%rip), %rdi     # 0x48fb0
leaq 0x21e18(%rip), %rsi     # 0x3b4b5
movl $0x1c, %edx
callq 0x53d0
movq 0x680(%rsp), %r14
movq 0x688(%rsp), %rbx
cmpq %rbx, %r14
je 0x19786
leaq 0x800(%rsp), %r15
leaq 0x30(%rsp), %r12
movq 0x2f8dc(%rip), %r13     # 0x48fb0
leaq 0x21b21(%rip), %rbp     # 0x3b1fc
movq %r15, %rdi
movq %r14, %rsi
callq 0x1a9c6
movq %r12, %rdi
movq %r15, %rsi
callq 0x248dc
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movq %r13, %rdi
callq 0x53d0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x53d0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1972f
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x828(%rsp), %rdi
leaq 0x838(%rsp), %rax
cmpq %rax, %rdi
je 0x19754
movq 0x838(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x808(%rsp), %rdi
leaq 0x818(%rsp), %rax
cmpq %rax, %rdi
je 0x19779
movq 0x818(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x58, %r14
cmpq %rbx, %r14
jne 0x196db
movq 0x2f823(%rip), %rdi     # 0x48fb0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2f808(%rip), %rbx     # 0x48fb0
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq 0x680(%rsp), %rdi
callq 0x24288
leaq 0x21cdf(%rip), %rdi     # 0x3b4ab
movl %eax, %esi
xorl %eax, %eax
callq 0x5070
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2f7bd(%rip), %rdi     # 0x48fb0
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq 0x2f7a9(%rip), %rdi     # 0x48fb0
leaq 0x21cc4(%rip), %rsi     # 0x3b4d2
movl $0x1b, %edx
callq 0x53d0
movq 0x5b0(%rsp), %r14
movq 0x5b8(%rsp), %rbx
cmpq %rbx, %r14
je 0x198f7
leaq 0x7a8(%rsp), %r15
leaq 0x30(%rsp), %r12
movq 0x2f76b(%rip), %r13     # 0x48fb0
leaq 0x219b0(%rip), %rbp     # 0x3b1fc
movq %r15, %rdi
movq %r14, %rsi
callq 0x1a9c6
movq %r12, %rdi
movq %r15, %rsi
callq 0x248dc
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movq %r13, %rdi
callq 0x53d0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x53d0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x198a0
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x7d0(%rsp), %rdi
leaq 0x7e0(%rsp), %rax
cmpq %rax, %rdi
je 0x198c5
movq 0x7e0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x7b0(%rsp), %rdi
leaq 0x7c0(%rsp), %rax
cmpq %rax, %rdi
je 0x198ea
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x58, %r14
cmpq %rbx, %r14
jne 0x1984c
movq 0x2f6b2(%rip), %rdi     # 0x48fb0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2f697(%rip), %rbx     # 0x48fb0
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq 0x5b0(%rsp), %rdi
callq 0x24288
leaq 0x21b6e(%rip), %rdi     # 0x3b4ab
movl %eax, %esi
xorl %eax, %eax
callq 0x5070
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2f64c(%rip), %rdi     # 0x48fb0
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq 0x2f638(%rip), %rdi     # 0x48fb0
leaq 0x21b6f(%rip), %rsi     # 0x3b4ee
movl $0x1c, %edx
callq 0x53d0
movq 0x488(%rsp), %r14
movq 0x490(%rsp), %rbx
cmpq %rbx, %r14
je 0x19a68
leaq 0x750(%rsp), %r15
leaq 0x30(%rsp), %r12
movq 0x2f5fa(%rip), %r13     # 0x48fb0
leaq 0x2183f(%rip), %rbp     # 0x3b1fc
movq %r15, %rdi
movq %r14, %rsi
callq 0x1a9c6
movq %r12, %rdi
movq %r15, %rsi
callq 0x248dc
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movq %r13, %rdi
callq 0x53d0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x53d0
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x19a11
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x778(%rsp), %rdi
leaq 0x788(%rsp), %rax
cmpq %rax, %rdi
je 0x19a36
movq 0x788(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x758(%rsp), %rdi
leaq 0x768(%rsp), %rax
cmpq %rax, %rdi
je 0x19a5b
movq 0x768(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x58, %r14
cmpq %rbx, %r14
jne 0x199bd
movq 0x2f541(%rip), %rdi     # 0x48fb0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2f526(%rip), %rdi     # 0x48fb0
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq 0x488(%rsp), %rdi
callq 0x24288
leaq 0x21a00(%rip), %rdi     # 0x3b4ab
xorl %ebx, %ebx
movl %eax, %esi
xorl %eax, %eax
callq 0x5070
jmp 0x19ad5
movl $0xfffffffe, %ebx       # imm = 0xFFFFFFFE
movq 0x2f4ec(%rip), %rdi     # 0x48fb0
leaq 0x219a4(%rip), %rsi     # 0x3b46f
movl $0x1f, %edx
callq 0x53d0
leaq 0x540(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19af6
movq 0x540(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x510(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19b17
movq 0x510(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x4f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19b38
movq 0x4f0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x4a0(%rsp), %rdi
callq 0xb51e
leaq 0x488(%rsp), %rdi
callq 0xb1d6
leaq 0x668(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19b73
movq 0x668(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x638(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19b94
movq 0x638(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x618(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19bb5
movq 0x618(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x5c8(%rsp), %rdi
callq 0xb51e
leaq 0x5b0(%rsp), %rdi
callq 0xb1d6
leaq 0x738(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19bf0
movq 0x738(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x708(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19c11
movq 0x708(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x6e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19c32
movq 0x6e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x698(%rsp), %rdi
callq 0xb51e
leaq 0x680(%rsp), %rdi
callq 0xb1d6
leaq 0x240(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19c6d
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x210(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19c8e
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19caf
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1a0(%rsp), %rdi
callq 0xb51e
leaq 0x188(%rsp), %rdi
callq 0xb1d6
leaq 0x470(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19cea
movq 0x470(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x440(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19d0b
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x420(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19d2c
movq 0x420(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x3d0(%rsp), %rdi
callq 0xb51e
leaq 0x3b8(%rsp), %rdi
callq 0xb1d6
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x19d62
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19d83
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5360
movl %ebx, %eax
addq $0x908, %rsp            # imm = 0x908
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x2f212(%rip), %rdi     # 0x48fb0
leaq 0x2164a(%rip), %rsi     # 0x3b3ef
movl $0x1d, %edx
callq 0x53d0
leaq 0x3b8(%rsp), %rdi
callq 0x24288
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
leaq 0x30(%rsp), %r15
leaq 0x3b8(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0xbd00
xorps %xmm0, %xmm0
leaq 0x100(%rsp), %rdi
movaps %xmm0, (%rdi)
leaq 0x1a0(%rsp), %rbx
movups -0x18(%rbx), %xmm0
movq -0x8(%rbx), %rax
leaq 0x48(%rsp), %rbp
movups -0x18(%rbp), %xmm1
movups %xmm1, -0x18(%rbx)
movq -0x8(%rbp), %rcx
movq %rcx, -0x8(%rbx)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, -0x18(%rbp)
movq $0x0, -0x8(%rbp)
callq 0xb1d6
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x1e0(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x200(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
leaq 0xe8(%rsp), %rbx
movq -0x20(%rbx), %rax
movq -0x1a(%rbx), %rcx
movq %rcx, 0x226(%rsp)
movq %rax, 0x220(%rsp)
movl $0xa8, %eax
addq %rax, %r14
addq %rax, %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x5420
movq -0x10(%rbx), %rdi
movq 0x10(%rbx), %rax
movq %rax, 0x250(%rsp)
cmpq %rbx, %rdi
movl 0x2c(%rsp), %ebx
je 0x19eca
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19eeb
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19f0c
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
movq %rbp, %rdi
callq 0xb51e
leaq 0x30(%rsp), %rdi
callq 0xb1d6
leaq 0x3b8(%rsp), %rdi
callq 0x24288
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
addl %eax, %eax
leaq 0x30(%rsp), %r15
leaq 0x3b8(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0x1e580
xorps %xmm0, %xmm0
leaq 0x100(%rsp), %rdi
movaps %xmm0, (%rdi)
leaq 0x698(%rsp), %rbx
movups -0x18(%rbx), %xmm0
movq -0x8(%rbx), %rax
leaq 0x48(%rsp), %r14
movups -0x18(%r14), %xmm1
movups %xmm1, -0x18(%rbx)
movq -0x8(%r14), %rcx
movq %rcx, -0x8(%rbx)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, -0x18(%r14)
movq $0x0, -0x8(%r14)
callq 0xb1d6
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5834
leaq 0xb8(%rsp), %rbp
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x6d8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x6f8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
movq 0xc8(%rsp), %rax
movq 0xce(%rsp), %rcx
movq %rcx, 0x71e(%rsp)
movq %rax, 0x718(%rsp)
movl $0xa8, %eax
addq %rax, %r13
addq %rax, %r15
movq %r13, %rdi
movq %r15, %rsi
callq 0x5420
movq 0xd8(%rsp), %rdi
movq 0xf8(%rsp), %rax
movq %rax, 0x748(%rsp)
leaq 0xe8(%rsp), %r13
cmpq %r13, %rdi
movl 0x2c(%rsp), %ebx
je 0x1a055
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1a072
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x1a097
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r14, %rdi
callq 0xb51e
leaq 0x30(%rsp), %rdi
callq 0xb1d6
leaq 0x3b8(%rsp), %rdi
callq 0x24288
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
shll $0x2, %eax
leaq 0x30(%rsp), %r15
leaq 0x3b8(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0x343ac
xorps %xmm0, %xmm0
leaq 0x100(%rsp), %rdi
movaps %xmm0, (%rdi)
leaq 0x5c8(%rsp), %rbx
movups -0x18(%rbx), %xmm0
movq -0x8(%rbx), %rax
leaq 0x48(%rsp), %r14
movups -0x18(%r14), %xmm1
movups %xmm1, -0x18(%rbx)
movq -0x8(%r14), %rcx
movq %rcx, -0x8(%rbx)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, -0x18(%r14)
movq $0x0, -0x8(%r14)
callq 0xb1d6
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x608(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x628(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
movq 0xc8(%rsp), %rax
movq 0xce(%rsp), %rcx
movq %rcx, 0x64e(%rsp)
movq %rax, 0x648(%rsp)
movl $0xa8, %eax
addq %rax, %r12
addq %rax, %r15
movq %r12, %rdi
movq %r15, %rsi
callq 0x5420
movq 0xd8(%rsp), %rdi
movq 0xf8(%rsp), %rax
movq %rax, 0x678(%rsp)
cmpq %r13, %rdi
movl 0x2c(%rsp), %ebx
je 0x1a1d1
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1a1ee
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x1a213
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r14, %rdi
callq 0xb51e
leaq 0x30(%rsp), %rdi
callq 0xb1d6
leaq 0x3b8(%rsp), %rdi
callq 0x24288
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
addl %eax, %eax
leaq 0x30(%rsp), %r14
leaq 0x3b8(%rsp), %rsi
movq %r14, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0xfd9c
xorps %xmm0, %xmm0
leaq 0x100(%rsp), %rdi
movaps %xmm0, (%rdi)
leaq 0x4a0(%rsp), %r15
movups -0x18(%r15), %xmm0
movq -0x8(%r15), %rax
leaq 0x48(%rsp), %rbx
movups -0x18(%rbx), %xmm1
movups %xmm1, -0x18(%r15)
movq -0x8(%rbx), %rcx
movq %rcx, -0x8(%r15)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, -0x18(%rbx)
movq $0x0, -0x8(%rbx)
callq 0xb1d6
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x4e0(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x488(%rsp), %r15
leaq 0x500(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
movq 0xc8(%rsp), %rax
movq 0xce(%rsp), %rcx
movq %rcx, 0x526(%rsp)
movq %rax, 0x520(%rsp)
movl $0xa8, %eax
addq %rax, %r15
addq %rax, %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0x5420
movq 0xd8(%rsp), %rdi
movq 0xf8(%rsp), %rax
movq %rax, 0x550(%rsp)
cmpq %r13, %rdi
je 0x1a350
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1a36d
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
jmp 0x18f2f
jmp 0x1a390
jmp 0x1a390
jmp 0x1a390
jmp 0x1a390
jmp 0x1a390
jmp 0x1a390
jmp 0x1a390
movq %rax, %rdi
callq 0xb2c6
jmp 0x1a3b5
jmp 0x1a5fe
jmp 0x1a3b5
jmp 0x1a5fe
jmp 0x1a3b5
jmp 0x1a5fe
jmp 0x1a3b5
jmp 0x1a3b5
jmp 0x1a3b5
jmp 0x1a3b5
movq %rax, %r14
leaq 0x30(%rsp), %rdi
callq 0xfb08
jmp 0x1a750
jmp 0x1a5fe
jmp 0x1a5fe
jmp 0x1a5fe
jmp 0x1a5fe
jmp 0x1a5fe
jmp 0x1a5fe
jmp 0x1a5fe
movq %rax, %r14
movq 0x258(%rsp), %rdi
cmpq %r15, %rdi
je 0x1a40f
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a40f
movq %rax, %r14
movq 0x278(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a750
movq 0x288(%rsp), %rsi
jmp 0x1a748
movq %rax, %r14
movq 0x298(%rsp), %rdi
cmpq %r15, %rdi
je 0x1a452
movq 0x2a8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a452
movq %rax, %r14
movq 0x2b8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a750
movq 0x2c8(%rsp), %rsi
jmp 0x1a748
movq %rax, %r14
movq 0x2d8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1a495
movq 0x2e8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a495
movq %rax, %r14
movq 0x2f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a750
movq 0x308(%rsp), %rsi
jmp 0x1a748
movq %rax, %r14
movq 0x318(%rsp), %rdi
cmpq %r15, %rdi
je 0x1a4d8
movq 0x328(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a4d8
movq %rax, %r14
movq 0x338(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a750
movq 0x348(%rsp), %rsi
jmp 0x1a748
movq %rax, %r14
leaq 0x18(%rsp), %rbx
jmp 0x1a762
movq %rax, %r14
leaq 0x18(%rsp), %rbx
jmp 0x1a76f
movq %rax, %r14
leaq 0x18(%rsp), %rbx
jmp 0x1a77c
movq %rax, %r14
leaq 0x18(%rsp), %rbx
jmp 0x1a789
movq %rax, %r14
movq 0x358(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a58f
movq 0x368(%rsp), %rsi
jmp 0x1a580
jmp 0x1a58c
movq %rax, %r14
movq 0x378(%rsp), %rdi
cmpq %r15, %rdi
je 0x1a56b
movq 0x388(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a56b
movq %rax, %r14
movq 0x398(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a58f
movq 0x3a8(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a58f
jmp 0x1a58c
movq %rax, %r14
leaq 0x18(%rsp), %rbx
jmp 0x1a796
movq %rax, %r14
jmp 0x1a7ad
jmp 0x1a5fe
jmp 0x1a5fe
movq %rax, %r14
jmp 0x1a625
jmp 0x1a5fe
movq %rax, %r14
jmp 0x1a651
jmp 0x1a5fe
movq %rax, %r14
jmp 0x1a67a
jmp 0x1a5fe
movq %rax, %r14
jmp 0x1a5d5
movq %rax, %r14
leaq 0x8b0(%rsp), %rdi
callq 0xb116
leaq 0x558(%rsp), %rdi
jmp 0x1a6b8
movq %rax, %r14
jmp 0x1a734
jmp 0x1a684
jmp 0x1a68c
jmp 0x1a5fe
movq %rax, %r14
jmp 0x1a6b0
movq %rax, %r14
jmp 0x1a750
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a625
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x750(%rsp), %rdi
jmp 0x1a6b8
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a651
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x7a8(%rsp), %rdi
jmp 0x1a6b8
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a67a
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x800(%rsp), %rdi
jmp 0x1a6b8
movq %rax, %r14
jmp 0x1a70f
movq %rax, %r14
jmp 0x1a6ea
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a6b0
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x858(%rsp), %rdi
callq 0xb116
jmp 0x1a750
movq %rax, %r14
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x1a6ea
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x1a70f
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x1a734
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x1a750
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x18(%rsp), %rbx
leaq 0x488(%rsp), %rdi
callq 0xfb08
leaq 0x5b0(%rsp), %rdi
callq 0xfb08
leaq 0x680(%rsp), %rdi
callq 0xfb08
leaq 0x188(%rsp), %rdi
callq 0xfb08
leaq 0x3b8(%rsp), %rdi
callq 0xfb08
movq 0x8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a7ad
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x138(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1a7ce
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r14, %rdi
callq 0x55e0