// File: /workspace/github_cpp_makefile_star2_O3/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 0x1899a
movq 0x30693(%rip), %rbx     # 0x48fe8
leaq 0x22988(%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 0x19df7
movq %rsi, %rbx
movq 0x8(%rsi), %rsi
leaq 0x120(%rsp), %rdi
leaq 0x3b0(%rsp), %rdx
callq 0x1a832
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2294f(%rip), %rsi     # 0x3b315
leaq 0x2295e(%rip), %rdx     # 0x3b32b
leaq 0x8(%rsp), %rdi
callq 0xb5f8
movq 0x10(%rbx), %rdi
callq 0x5520
movl %eax, %ebp
movq 0x18(%rbx), %rsi
leaq 0x3b0(%rsp), %rdi
leaq 0x180(%rsp), %rdx
callq 0x1a832
leaq 0x2292a(%rip), %rsi     # 0x3b32c
leaq 0x3b0(%rsp), %r14
movq %r14, %rdi
callq 0x5100
movl %eax, %ebx
movq (%r14), %rdi
leaq 0x3c0(%rsp), %rax
cmpq %rax, %rdi
je 0x18a34
movq 0x3c0(%rsp), %rsi
incq %rsi
callq 0x5360
xorl %ecx, %ecx
movl %ebx, 0x2c(%rsp)
testl %ebx, %ebx
sete %cl
movq 0x120(%rsp), %rsi
leaq 0x228e3(%rip), %rdi     # 0x3b331
movl %ebp, %edx
xorl %eax, %eax
callq 0x5070
leaq 0x3a0(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rdx
addq %rsi, %rdx
leaq 0x390(%rsp), %rdi
callq 0xb50a
leaq 0x380(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x370(%rsp), %rdi
callq 0xb50a
leaq 0x390(%rsp), %rdi
leaq 0x370(%rsp), %rsi
callq 0x16efa
movq 0x370(%rsp), %rdi
cmpq %r15, %rdi
je 0x18adb
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x390(%rsp), %rdi
cmpq %rbx, %rdi
je 0x18af8
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x360(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x350(%rsp), %rdi
callq 0xb50a
leaq 0x3b0(%rsp), %rdi
leaq 0x350(%rsp), %rsi
movl $0x1, %edx
callq 0x160d4
movq 0x350(%rsp), %rdi
cmpq %rbx, %rdi
je 0x18b55
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x180(%rsp), %r14
movq %r14, %rdi
callq 0xfae6
movl 0x2c(%rsp), %ebx
leaq 0x680(%rsp), %r13
movq %r13, %rdi
callq 0xfae6
leaq 0x5b0(%rsp), %r12
movq %r12, %rdi
callq 0xfae6
leaq 0x480(%rsp), %rdi
callq 0xfae6
decl %ebp
cmpl $0x3, %ebp
ja 0x19e0b
leaq 0x2272c(%rip), %rax     # 0x3b2d4
movslq (%rax,%rbp,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x303f8(%rip), %rdi     # 0x48fb0
leaq 0x22782(%rip), %rsi     # 0x3b341
movl $0x2a, %edx
callq 0x53d0
leaq 0x3b0(%rsp), %rdi
callq 0x242b0
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
leaq 0x30(%rsp), %r15
leaq 0x3b0(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0xbcac
leaq 0x198(%rsp), %r12
movq -0x8(%r12), %rax
leaq 0x48(%rsp), %rbx
movaps -0x18(%rbx), %xmm0
movq -0x8(%rbx), %rcx
movq %rcx, -0x8(%r12)
movaps -0x18(%r12), %xmm1
movaps %xmm0, -0x18(%r12)
leaq 0x100(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, -0x18(%rbx)
movq $0x0, -0x8(%rbx)
callq 0xb1a2
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x1d8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x1f8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
jmp 0x18f17
movq 0x3031f(%rip), %rdi     # 0x48fb0
leaq 0x22700(%rip), %rsi     # 0x3b398
movl $0x2a, %edx
callq 0x53d0
leaq 0x3b0(%rsp), %rdi
callq 0x242b0
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
shll $0x2, %eax
leaq 0x30(%rsp), %r15
leaq 0x3b0(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0x343b4
leaq 0x198(%rsp), %r12
movq -0x8(%r12), %rax
leaq 0x48(%rsp), %rbx
movaps -0x18(%rbx), %xmm0
movq -0x8(%rbx), %rcx
movq %rcx, -0x8(%r12)
movaps -0x18(%r12), %xmm1
movaps %xmm0, -0x18(%r12)
leaq 0x100(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, -0x18(%rbx)
movq $0x0, -0x8(%rbx)
callq 0xb1a2
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x1d8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x1f8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
jmp 0x18f17
movq 0x30243(%rip), %rdi     # 0x48fb0
leaq 0x2264f(%rip), %rsi     # 0x3b3c3
movl $0x2b, %edx
callq 0x53d0
leaq 0x3b0(%rsp), %rdi
callq 0x242b0
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
addl %eax, %eax
leaq 0x30(%rsp), %r15
leaq 0x3b0(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0xfdc8
leaq 0x198(%rsp), %r12
movq -0x8(%r12), %rax
leaq 0x48(%rsp), %rbx
movaps -0x18(%rbx), %xmm0
movq -0x8(%rbx), %rcx
movq %rcx, -0x8(%r12)
movaps -0x18(%r12), %xmm1
movaps %xmm0, -0x18(%r12)
leaq 0x100(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, -0x18(%rbx)
movq $0x0, -0x8(%rbx)
callq 0xb1a2
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x1d8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x1f8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
jmp 0x18f17
movq 0x30168(%rip), %rdi     # 0x48fb0
leaq 0x2251d(%rip), %rsi     # 0x3b36c
movl $0x2b, %edx
callq 0x53d0
leaq 0x3b0(%rsp), %rdi
callq 0x242b0
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
addl %eax, %eax
leaq 0x30(%rsp), %r15
leaq 0x3b0(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0x1e580
leaq 0x198(%rsp), %r12
movq -0x8(%r12), %rax
leaq 0x48(%rsp), %rbx
movaps -0x18(%rbx), %xmm0
movq -0x8(%rbx), %rcx
movq %rcx, -0x8(%r12)
movaps -0x18(%r12), %xmm1
movaps %xmm0, -0x18(%r12)
leaq 0x100(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, -0x18(%rbx)
movq $0x0, -0x8(%rbx)
callq 0xb1a2
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x1d8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x1f8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
leaq 0xe8(%rsp), %r12
movq -0x20(%r12), %rax
movq -0x1a(%r12), %rcx
movq %rcx, 0x21e(%rsp)
movq %rax, 0x218(%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, 0x248(%rsp)
cmpq %r12, %rdi
je 0x18f76
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18f97
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18fb8
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
movq %rbx, %rdi
callq 0xb4e4
leaq 0x30(%rsp), %rdi
callq 0xb1a2
leaq 0x180(%rsp), %rdi
callq 0x242b0
testl %eax, %eax
je 0x19089
leaq 0x340(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rdx
addq %rsi, %rdx
leaq 0x330(%rsp), %rdi
callq 0xb50a
leaq 0x320(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x223ef(%rip), %rsi     # 0x3b40d
leaq 0x223fe(%rip), %rdx     # 0x3b423
leaq 0x310(%rsp), %rdi
callq 0xb5f8
leaq 0x180(%rsp), %rdi
leaq 0x330(%rsp), %rsi
leaq 0x310(%rsp), %rdx
callq 0x17fa4
movq 0x310(%rsp), %rdi
cmpq %r15, %rdi
je 0x1906c
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x330(%rsp), %rdi
cmpq %rbx, %rdi
je 0x19089
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x680(%rsp), %rdi
callq 0x242b0
testl %eax, %eax
je 0x19148
leaq 0x300(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2f0(%rsp), %rdi
callq 0xb50a
leaq 0x2e0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x22347(%rip), %rsi     # 0x3b424
leaq 0x22358(%rip), %rdx     # 0x3b43c
leaq 0x2d0(%rsp), %rdi
callq 0xb5f8
leaq 0x680(%rsp), %rdi
leaq 0x2f0(%rsp), %rsi
leaq 0x2d0(%rsp), %rdx
callq 0x17fa4
movq 0x2d0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1912b
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x2f0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x19148
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x5b0(%rsp), %rdi
callq 0x242b0
testl %eax, %eax
je 0x19207
leaq 0x2c0(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2b0(%rsp), %rdi
callq 0xb50a
leaq 0x2a0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x222a1(%rip), %rsi     # 0x3b43d
leaq 0x222b2(%rip), %rdx     # 0x3b455
leaq 0x290(%rsp), %rdi
callq 0xb5f8
leaq 0x5b0(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
leaq 0x290(%rsp), %rdx
callq 0x17fa4
movq 0x290(%rsp), %rdi
cmpq %r15, %rdi
je 0x191ea
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x2b0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x19207
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x480(%rsp), %rdi
callq 0x242b0
testl %eax, %eax
je 0x192c6
leaq 0x280(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rdx
addq %rsi, %rdx
leaq 0x270(%rsp), %rdi
callq 0xb50a
leaq 0x260(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x221fb(%rip), %rsi     # 0x3b456
leaq 0x2220c(%rip), %rdx     # 0x3b46e
leaq 0x250(%rsp), %rdi
callq 0xb5f8
leaq 0x480(%rsp), %rdi
leaq 0x270(%rsp), %rsi
leaq 0x250(%rsp), %rdx
callq 0x17fa4
movq 0x250(%rsp), %rdi
cmpq %r15, %rdi
je 0x192a9
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x270(%rsp), %rdi
cmpq %rbx, %rdi
je 0x192c6
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x180(%rsp), %rdi
callq 0x242b0
testl %eax, %eax
je 0x19b2c
leaq 0x3b0(%rsp), %rdi
callq 0x242b0
movl %eax, %ebx
leaq 0x180(%rsp), %rdi
callq 0x242b0
cmpl %ebx, %eax
cmovbl %eax, %ebx
testl %ebx, %ebx
jle 0x19563
movl %ebx, %r13d
xorl %ebx, %ebx
leaq 0x8b0(%rsp), %r14
leaq 0x30(%rsp), %r15
leaq 0x21edf(%rip), %rbp     # 0x3b1fc
movq 0x3b0(%rsp), %rsi
addq %rbx, %rsi
leaq 0x558(%rsp), %rdi
callq 0x1aa22
movq 0x180(%rsp), %rsi
addq %rbx, %rsi
movq %r14, %rdi
callq 0x1aa22
movq %r15, %rdi
leaq 0x558(%rsp), %rsi
movq %r14, %rdx
callq 0x1528a
movq 0x8d8(%rsp), %rdi
leaq 0x8e8(%rsp), %rax
cmpq %rax, %rdi
je 0x19380
movq 0x8e8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x8b8(%rsp), %rdi
leaq 0x8c8(%rsp), %rax
cmpq %rax, %rdi
je 0x193a5
movq 0x8c8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x580(%rsp), %rdi
leaq 0x590(%rsp), %rax
cmpq %rax, %rdi
je 0x193ca
movq 0x590(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x560(%rsp), %rdi
leaq 0x570(%rsp), %rax
cmpq %rax, %rdi
je 0x193ef
movq 0x570(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x3b0(%rsp), %rsi
addq %rbx, %rsi
leaq 0x100(%rsp), %rdi
callq 0x1af12
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq 0x2fb92(%rip), %rdi     # 0x48fb0
callq 0x53d0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x53d0
movq 0x180(%rsp), %rsi
addq %rbx, %rsi
leaq 0x160(%rsp), %rdi
callq 0x1af12
movq 0x160(%rsp), %rsi
movq 0x168(%rsp), %rdx
movq %r12, %rdi
callq 0x53d0
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x53d0
leaq 0x140(%rsp), %rdi
movq %r15, %rsi
callq 0x15418
movq 0x140(%rsp), %rsi
movq 0x148(%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 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0x194f0
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x160(%rsp), %rdi
leaq 0x170(%rsp), %rax
cmpq %rax, %rdi
je 0x19515
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x1953a
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x19556
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x58, %rbx
decq %r13
jne 0x1931d
movq 0x2fa46(%rip), %rdi     # 0x48fb0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2fa2b(%rip), %rdi     # 0x48fb0
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq 0x2fa17(%rip), %rdi     # 0x48fb0
leaq 0x21eef(%rip), %rsi     # 0x3b48f
movl $0x1b, %edx
callq 0x53d0
movq 0x180(%rsp), %r14
movq 0x188(%rsp), %rbx
cmpq %rbx, %r14
je 0x19689
leaq 0x858(%rsp), %r15
leaq 0x30(%rsp), %r12
movq 0x2f9d9(%rip), %r13     # 0x48fb0
leaq 0x21c1e(%rip), %rbp     # 0x3b1fc
movq %r15, %rdi
movq %r14, %rsi
callq 0x1aa22
movq %r12, %rdi
movq %r15, %rsi
callq 0x248fc
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 0x19632
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x880(%rsp), %rdi
leaq 0x890(%rsp), %rax
cmpq %rax, %rdi
je 0x19657
movq 0x890(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x860(%rsp), %rdi
leaq 0x870(%rsp), %rax
cmpq %rax, %rdi
je 0x1967c
movq 0x870(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x58, %r14
cmpq %rbx, %r14
jne 0x195de
movq 0x2f920(%rip), %rdi     # 0x48fb0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2f905(%rip), %rbx     # 0x48fb0
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq 0x180(%rsp), %rdi
callq 0x242b0
leaq 0x21ddc(%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 0x2f8ba(%rip), %rdi     # 0x48fb0
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq 0x2f8a6(%rip), %rdi     # 0x48fb0
leaq 0x21da4(%rip), %rsi     # 0x3b4b5
movl $0x1c, %edx
callq 0x53d0
movq 0x680(%rsp), %r14
movq 0x688(%rsp), %rbx
cmpq %rbx, %r14
je 0x197fa
leaq 0x800(%rsp), %r15
leaq 0x30(%rsp), %r12
movq 0x2f868(%rip), %r13     # 0x48fb0
leaq 0x21aad(%rip), %rbp     # 0x3b1fc
movq %r15, %rdi
movq %r14, %rsi
callq 0x1aa22
movq %r12, %rdi
movq %r15, %rsi
callq 0x248fc
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 0x197a3
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x828(%rsp), %rdi
leaq 0x838(%rsp), %rax
cmpq %rax, %rdi
je 0x197c8
movq 0x838(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x808(%rsp), %rdi
leaq 0x818(%rsp), %rax
cmpq %rax, %rdi
je 0x197ed
movq 0x818(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x58, %r14
cmpq %rbx, %r14
jne 0x1974f
movq 0x2f7af(%rip), %rdi     # 0x48fb0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2f794(%rip), %rbx     # 0x48fb0
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq 0x680(%rsp), %rdi
callq 0x242b0
leaq 0x21c6b(%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 0x2f749(%rip), %rdi     # 0x48fb0
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq 0x2f735(%rip), %rdi     # 0x48fb0
leaq 0x21c50(%rip), %rsi     # 0x3b4d2
movl $0x1b, %edx
callq 0x53d0
movq 0x5b0(%rsp), %r14
movq 0x5b8(%rsp), %rbx
cmpq %rbx, %r14
je 0x1996b
leaq 0x7a8(%rsp), %r15
leaq 0x30(%rsp), %r12
movq 0x2f6f7(%rip), %r13     # 0x48fb0
leaq 0x2193c(%rip), %rbp     # 0x3b1fc
movq %r15, %rdi
movq %r14, %rsi
callq 0x1aa22
movq %r12, %rdi
movq %r15, %rsi
callq 0x248fc
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 0x19914
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x7d0(%rsp), %rdi
leaq 0x7e0(%rsp), %rax
cmpq %rax, %rdi
je 0x19939
movq 0x7e0(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x7b0(%rsp), %rdi
leaq 0x7c0(%rsp), %rax
cmpq %rax, %rdi
je 0x1995e
movq 0x7c0(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x58, %r14
cmpq %rbx, %r14
jne 0x198c0
movq 0x2f63e(%rip), %rdi     # 0x48fb0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2f623(%rip), %rbx     # 0x48fb0
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq 0x5b0(%rsp), %rdi
callq 0x242b0
leaq 0x21afa(%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 0x2f5d8(%rip), %rdi     # 0x48fb0
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq 0x2f5c4(%rip), %rdi     # 0x48fb0
leaq 0x21afb(%rip), %rsi     # 0x3b4ee
movl $0x1c, %edx
callq 0x53d0
movq 0x480(%rsp), %r14
movq 0x488(%rsp), %rbx
cmpq %rbx, %r14
je 0x19adc
leaq 0x750(%rsp), %r15
leaq 0x30(%rsp), %r12
movq 0x2f586(%rip), %r13     # 0x48fb0
leaq 0x217cb(%rip), %rbp     # 0x3b1fc
movq %r15, %rdi
movq %r14, %rsi
callq 0x1aa22
movq %r12, %rdi
movq %r15, %rsi
callq 0x248fc
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 0x19a85
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x778(%rsp), %rdi
leaq 0x788(%rsp), %rax
cmpq %rax, %rdi
je 0x19aaa
movq 0x788(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x758(%rsp), %rdi
leaq 0x768(%rsp), %rax
cmpq %rax, %rdi
je 0x19acf
movq 0x768(%rsp), %rsi
incq %rsi
callq 0x5360
addq $0x58, %r14
cmpq %rbx, %r14
jne 0x19a31
movq 0x2f4cd(%rip), %rdi     # 0x48fb0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x5320
movsbl %al, %esi
movq 0x2f4b2(%rip), %rdi     # 0x48fb0
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq 0x480(%rsp), %rdi
callq 0x242b0
leaq 0x2198c(%rip), %rdi     # 0x3b4ab
xorl %ebx, %ebx
movl %eax, %esi
xorl %eax, %eax
callq 0x5070
jmp 0x19b49
movl $0xfffffffe, %ebx       # imm = 0xFFFFFFFE
movq 0x2f478(%rip), %rdi     # 0x48fb0
leaq 0x21930(%rip), %rsi     # 0x3b46f
movl $0x1f, %edx
callq 0x53d0
leaq 0x538(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19b6a
movq 0x538(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x508(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19b8b
movq 0x508(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x4e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19bac
movq 0x4e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x498(%rsp), %rdi
callq 0xb4e4
leaq 0x480(%rsp), %rdi
callq 0xb1a2
leaq 0x668(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19be7
movq 0x668(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x638(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19c08
movq 0x638(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x618(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19c29
movq 0x618(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x5c8(%rsp), %rdi
callq 0xb4e4
leaq 0x5b0(%rsp), %rdi
callq 0xb1a2
leaq 0x738(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19c64
movq 0x738(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x708(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19c85
movq 0x708(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x6e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19ca6
movq 0x6e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x698(%rsp), %rdi
callq 0xb4e4
leaq 0x680(%rsp), %rdi
callq 0xb1a2
leaq 0x238(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19ce1
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x208(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19d02
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x1e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19d23
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x198(%rsp), %rdi
callq 0xb4e4
leaq 0x180(%rsp), %rdi
callq 0xb1a2
leaq 0x468(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19d5e
movq 0x468(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x438(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19d7f
movq 0x438(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x418(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19da0
movq 0x418(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x3c8(%rsp), %rdi
callq 0xb4e4
leaq 0x3b0(%rsp), %rdi
callq 0xb1a2
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x19dd6
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19df7
movq 0x130(%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 0x2f19e(%rip), %rdi     # 0x48fb0
leaq 0x215d6(%rip), %rsi     # 0x3b3ef
movl $0x1d, %edx
callq 0x53d0
leaq 0x3b0(%rsp), %rdi
callq 0x242b0
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
leaq 0x30(%rsp), %r15
leaq 0x3b0(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0xbcac
leaq 0x198(%rsp), %rbx
movq -0x8(%rbx), %rax
leaq 0x48(%rsp), %rbp
movaps -0x18(%rbp), %xmm0
movq -0x8(%rbp), %rcx
movq %rcx, -0x8(%rbx)
movaps -0x18(%rbx), %xmm1
movaps %xmm0, -0x18(%rbx)
leaq 0x100(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, -0x18(%rbp)
movq $0x0, -0x8(%rbp)
callq 0xb1a2
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x1d8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x1f8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
leaq 0xe8(%rsp), %rbx
movq -0x20(%rbx), %rax
movq -0x1a(%rbx), %rcx
movq %rcx, 0x21e(%rsp)
movq %rax, 0x218(%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, 0x248(%rsp)
cmpq %rbx, %rdi
movl 0x2c(%rsp), %ebx
je 0x19f38
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19f59
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x19f7a
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
movq %rbp, %rdi
callq 0xb4e4
leaq 0x30(%rsp), %rdi
callq 0xb1a2
leaq 0x3b0(%rsp), %rdi
callq 0x242b0
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
addl %eax, %eax
leaq 0x30(%rsp), %r15
leaq 0x3b0(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0x1e580
leaq 0x698(%rsp), %rbx
movq -0x8(%rbx), %rax
leaq 0x48(%rsp), %r14
movaps -0x18(%r14), %xmm0
movq -0x8(%r14), %rcx
movq %rcx, -0x8(%rbx)
movaps -0x18(%rbx), %xmm1
movaps %xmm0, -0x18(%rbx)
leaq 0x100(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, -0x18(%r14)
movq $0x0, -0x8(%r14)
callq 0xb1a2
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 0x1a0bd
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1a0da
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x1a0ff
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r14, %rdi
callq 0xb4e4
leaq 0x30(%rsp), %rdi
callq 0xb1a2
leaq 0x3b0(%rsp), %rdi
callq 0x242b0
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
shll $0x2, %eax
leaq 0x30(%rsp), %r15
leaq 0x3b0(%rsp), %rsi
movq %r15, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0x343b4
leaq 0x5c8(%rsp), %rbx
movq -0x8(%rbx), %rax
leaq 0x48(%rsp), %r14
movaps -0x18(%r14), %xmm0
movq -0x8(%r14), %rcx
movq %rcx, -0x8(%rbx)
movaps -0x18(%rbx), %xmm1
movaps %xmm0, -0x18(%rbx)
leaq 0x100(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, -0x18(%r14)
movq $0x0, -0x8(%r14)
callq 0xb1a2
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 0x1a233
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1a250
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x1a275
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r14, %rdi
callq 0xb4e4
leaq 0x30(%rsp), %rdi
callq 0xb1a2
leaq 0x3b0(%rsp), %rdi
callq 0x242b0
xorl %edx, %edx
testl %ebx, %ebx
sete %dl
addl %eax, %eax
leaq 0x30(%rsp), %r14
leaq 0x3b0(%rsp), %rsi
movq %r14, %rdi
movl $0x4, %ecx
movl %eax, %r8d
callq 0xfdc8
leaq 0x498(%rsp), %r15
movq -0x8(%r15), %rax
leaq 0x48(%rsp), %rbx
movaps -0x18(%rbx), %xmm0
movq -0x8(%rbx), %rcx
movq %rcx, -0x8(%r15)
movaps -0x18(%r15), %xmm1
movaps %xmm0, -0x18(%r15)
leaq 0x100(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, -0x18(%rbx)
movq $0x0, -0x8(%rbx)
callq 0xb1a2
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5834
leaq 0x88(%rsp), %rsi
movq -0x8(%rsi), %rax
leaq 0x4d8(%rsp), %rdi
movq %rax, -0x8(%rdi)
callq 0x51e0
leaq 0x480(%rsp), %r15
leaq 0x4f8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x51e0
movq 0xc8(%rsp), %rax
movq 0xce(%rsp), %rcx
movq %rcx, 0x51e(%rsp)
movq %rax, 0x518(%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, 0x548(%rsp)
cmpq %r13, %rdi
je 0x1a3ac
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0xa8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x1a3c9
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
jmp 0x18fa3
jmp 0x1a3ec
jmp 0x1a3ec
jmp 0x1a3ec
jmp 0x1a3ec
jmp 0x1a3ec
jmp 0x1a3ec
jmp 0x1a3ec
movq %rax, %rdi
callq 0xb292
jmp 0x1a411
jmp 0x1a65a
jmp 0x1a411
jmp 0x1a65a
jmp 0x1a411
jmp 0x1a65a
jmp 0x1a411
jmp 0x1a411
jmp 0x1a411
jmp 0x1a411
movq %rax, %r14
leaq 0x30(%rsp), %rdi
callq 0xfb30
jmp 0x1a7ac
jmp 0x1a65a
jmp 0x1a65a
jmp 0x1a65a
jmp 0x1a65a
jmp 0x1a65a
jmp 0x1a65a
jmp 0x1a65a
movq %rax, %r14
movq 0x250(%rsp), %rdi
cmpq %r15, %rdi
je 0x1a46b
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a46b
movq %rax, %r14
movq 0x270(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a7ac
movq 0x280(%rsp), %rsi
jmp 0x1a7a4
movq %rax, %r14
movq 0x290(%rsp), %rdi
cmpq %r15, %rdi
je 0x1a4ae
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a4ae
movq %rax, %r14
movq 0x2b0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a7ac
movq 0x2c0(%rsp), %rsi
jmp 0x1a7a4
movq %rax, %r14
movq 0x2d0(%rsp), %rdi
cmpq %r15, %rdi
je 0x1a4f1
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a4f1
movq %rax, %r14
movq 0x2f0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a7ac
movq 0x300(%rsp), %rsi
jmp 0x1a7a4
movq %rax, %r14
movq 0x310(%rsp), %rdi
cmpq %r15, %rdi
je 0x1a534
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a534
movq %rax, %r14
movq 0x330(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a7ac
movq 0x340(%rsp), %rsi
jmp 0x1a7a4
movq %rax, %r14
leaq 0x18(%rsp), %rbx
jmp 0x1a7be
movq %rax, %r14
leaq 0x18(%rsp), %rbx
jmp 0x1a7cb
movq %rax, %r14
leaq 0x18(%rsp), %rbx
jmp 0x1a7d8
movq %rax, %r14
leaq 0x18(%rsp), %rbx
jmp 0x1a7e5
movq %rax, %r14
movq 0x350(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a5eb
movq 0x360(%rsp), %rsi
jmp 0x1a5dc
jmp 0x1a5e8
movq %rax, %r14
movq 0x370(%rsp), %rdi
cmpq %r15, %rdi
je 0x1a5c7
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a5c7
movq %rax, %r14
movq 0x390(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a5eb
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x5360
jmp 0x1a5eb
jmp 0x1a5e8
movq %rax, %r14
leaq 0x18(%rsp), %rbx
jmp 0x1a7f2
movq %rax, %r14
jmp 0x1a809
jmp 0x1a65a
jmp 0x1a65a
movq %rax, %r14
jmp 0x1a681
jmp 0x1a65a
movq %rax, %r14
jmp 0x1a6ad
jmp 0x1a65a
movq %rax, %r14
jmp 0x1a6d6
jmp 0x1a65a
movq %rax, %r14
jmp 0x1a631
movq %rax, %r14
leaq 0x8b0(%rsp), %rdi
callq 0xb0e0
leaq 0x558(%rsp), %rdi
jmp 0x1a714
movq %rax, %r14
jmp 0x1a790
jmp 0x1a6e0
jmp 0x1a6e8
jmp 0x1a65a
movq %rax, %r14
jmp 0x1a70c
movq %rax, %r14
jmp 0x1a7ac
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a681
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x750(%rsp), %rdi
jmp 0x1a714
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a6ad
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x7a8(%rsp), %rdi
jmp 0x1a714
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a6d6
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x800(%rsp), %rdi
jmp 0x1a714
movq %rax, %r14
jmp 0x1a76b
movq %rax, %r14
jmp 0x1a746
movq %rax, %r14
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1a70c
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x858(%rsp), %rdi
callq 0xb0e0
jmp 0x1a7ac
movq %rax, %r14
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0x1a746
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x160(%rsp), %rdi
leaq 0x170(%rsp), %rax
cmpq %rax, %rdi
je 0x1a76b
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x1a790
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x5360
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x1a7ac
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x18(%rsp), %rbx
leaq 0x480(%rsp), %rdi
callq 0xfb30
leaq 0x5b0(%rsp), %rdi
callq 0xfb30
leaq 0x680(%rsp), %rdi
callq 0xfb30
leaq 0x180(%rsp), %rdi
callq 0xfb30
leaq 0x3b0(%rsp), %rdi
callq 0xfb30
movq 0x8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x1a809
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x5360
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1a82a
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5360
movq %r14, %rdi
callq 0x55e0