// File: /workspace/github_cpp_makefile_star2_O3/IHorvalds[P]RomAna/gui.cpp
// Function: main
int main(int argc, char** argv) {
  if (argc < 3) {
    std::cout << "The following options are available: 0(BUILD_TRIE) or 1 (PROCESS_TEXT) or 2 (UPDATE_DICT) or 3 (PROCESS_POET) or 4 (GINIFY_POET) or 5 (ESSENCE_POET) or 6 (COMPUTE_SIMILARITY)" << std::endl;
    std::cout << "You should insert one of the following schemas: " << std::endl;
    std::cout << "BUILD_TRIE: " << argv[0] << " 0 [file to read the inflections from] [file in which to save the dictionary]" << std::endl;
    std::cout << "PROCESS_TEXT: " << argv[0] << " 1 [dictionary file name] [input file name] [output file name]" << std::endl;
    std::cout << "UPDATE_DICT: " << argv[0] << " 2 [dictionary file name] [input file name] [output file name] [new dictionary file name]" << std::endl;
    std::cout << "ANALYZE_POET: " << argv[0] << " 3 [poet name from poets.txt]" << std::endl;
    std::cout << "GINIFY_POET: " << argv[0] << " 4 [poet name from poets.txt]" << std::endl;
    std::cout << "ESSENCE_POET: " << argv[0] << " 5 [poet name from poets.txt] [distribution type - richness or relative] [sortValues - if the ratios should be sorted]" << std::endl;
    std::cout << "COMPUTE_SIMILARITY: " << argv[0] << " 6 [poet name from poets.txt]" << std::endl;
    return -1;
  }
  
  uint32_t option = atoi(argv[1]);
  switch (option) {
    case BUILD_TRIE : {
      errorArgs(BUILD_TRIE, argc, 4); 
      
      const char* filename = argv[2];
      const char* saveInto = argv[3];
      
      // Create the latin file with python
      std::string tmp = filename;
      std::string pythonCommand = "python3 processing/convert_into_latin.py " + tmp;
      int warning = system(pythonCommand.data());
      size_t pos = tmp.find_last_of("/");
      if (pos == std::string::npos)
        tmp = "latin_" + tmp;
      else
        tmp = tmp.substr(0, pos) + "/latin_" + tmp.substr(pos + 1, tmp.size());
      const char* latinFilename = tmp.data();
      
      // Alloc the dictionary
      InflexEngine A(InflexEngine::Build, filename, latinFilename);
      
      std::cerr << "Size of InflexEngine = " << A.getSize() << std::endl;
      
      // And save the InflexEngine
      A.saveExternal(saveInto);
      
      // Erase the temporary latin file
      std::string eraseCommand = "rm " + tmp;
      warning = system(eraseCommand.data());
      break;
    }
    case PROCESS_TEXT : {
      errorArgs(PROCESS_TEXT, argc, 5); 
      
      // Use the InflexEngine while parsing the text
      std::string dictName = argv[2];
      InflexEngine dict(InflexEngine::Load, dictName.data());
      dictionaryTask(dict, argv[3]);
     
      // Print the frequencies obtained
      dict.showFreqs(argv[4]);
      break;
    }
    case UPDATE_DICT : {
      errorArgs(UPDATE_DICT, argc, 6); 
      
      // Use the InflexEngine while parsing the text
      std::string dictName = argv[2];
      InflexEngine dict(InflexEngine::Load, dictName.data()); 
      
      dictionaryTask(dict, argv[3]);
      
      // Print the frequencies obtained
      dict.showFreqs(argv[4]);
    
      // Save the new obtained dictionary
      dict.saveExternal(argv[5]);
      break;
    }
    case ANALYZE_POET : {
      errorArgs(ANALYZE_POET, argc, 3);
      
      // Compute the local frequencies of each word
      std::string poetName = argv[2];  
      PoetAnalyzer analyzer(poetName);
      analyzer.saveFrequencies();
      break;
    }
    case GINIFY_POET : {
      errorArgs(GINIFY_POET, argc, 3);
      
      // Ginify the poet, i.e, compute the local ginis
      std::string poetName = argv[2];
      LocalGiniGenerator gini(poetName);
      gini.save();
      break;
    }
    case ESSENCE_POET : {
      errorArgs(ESSENCE_POET, argc, 5);
      
      // Ginify the poet, i.e, compute the gini coefficient for each word
      std::string poetName = argv[2];
      std::string distributionType = argv[3];
      bool sortValues = atoi(argv[4]);
      EssenceGenerator essence(poetName, distributionType, sortValues);
      essence.save();
      break;
    }
    case COMPUTE_SIMILARITY : {
      errorArgs(COMPUTE_SIMILARITY, argc, 3);
      
      // Ginify the poet, i.e, compute the gini coefficient for each word
      std::string poetName = argv[2];
      SimilarityGenerator cmp(poetName);
      cmp.save();
      break;
    }
    default : {
      std::cout << "The option " << argv[1] << " is not (yet) available!" << std::endl;
    }
  }
  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x200, %rsp            # imm = 0x200
movq %rsi, %rbx
cmpl $0x2, %edi
jg 0x6978
movq 0x970d(%rip), %r14      # 0xffd0
leaq 0x591e(%rip), %rsi      # 0xc1e8
movl $0xae, %edx
movq %r14, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x5992(%rip), %rsi      # 0xc297
movl $0x30, %edx
movq %r14, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x5988(%rip), %rsi      # 0xc2c8
movl $0xc, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6a70
movq %r15, %rdi
callq 0x3130
movq 0x9668(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6a88
movl %edi, %ebp
movq 0x8(%rbx), %rdi
callq 0x33f0
cmpl $0x6, %eax
ja 0x7032
movl %eax, %eax
leaq 0x568b(%rip), %rcx      # 0xc020
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %edi, %edi
movl %ebp, %esi
movl $0x4, %edx
callq 0x6356
movq 0x10(%rbx), %r14
movq 0x18(%rbx), %rbx
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
movq %r14, %rsi
callq 0x8136
leaq 0x57e9(%rip), %rsi      # 0xc1b6
leaq 0xc0(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x82ba
movq 0xc0(%rsp), %rdi
callq 0x3220
leaq 0x5bfa(%rip), %rsi      # 0xc5ed
leaq 0x8(%rsp), %rdi
movl $0x1, %ecx
movq $-0x1, %rdx
callq 0x3520
cmpq $-0x1, %rax
je 0x7387
movq %rax, %r15
leaq 0x1e0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x32b0
leaq 0x5ab7(%rip), %rsi      # 0xc4eb
leaq 0x1e0(%rsp), %rdi
callq 0x34f0
leaq 0x38(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x73ca
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x73d2
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x5846(%rip), %rsi      # 0xc2d5
movl $0x4d, %edx
movq %r14, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x5859(%rip), %rsi      # 0xc323
movl $0xe, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6afb
movq %r15, %rdi
callq 0x3130
movq 0x94e2(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6b13
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x5818(%rip), %rsi      # 0xc332
movl $0x3e, %edx
movq %r14, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x581c(%rip), %rsi      # 0xc371
movl $0xd, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6b86
movq %r15, %rdi
callq 0x3130
movq 0x9457(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6b9e
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x57da(%rip), %rsi      # 0xc37f
movl $0x59, %edx
movq %r14, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x57f9(%rip), %rsi      # 0xc3d9
movl $0xe, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6c11
movq %r15, %rdi
callq 0x3130
movq 0x93cc(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6c29
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x57b8(%rip), %rsi      # 0xc3e8
movl $0x1d, %edx
movq %r14, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x579b(%rip), %rsi      # 0xc406
movl $0xd, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6c9c
movq %r15, %rdi
callq 0x3130
movq 0x9341(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6cb4
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x5759(%rip), %rsi      # 0xc414
movl $0x1d, %edx
movq %r14, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x573c(%rip), %rsi      # 0xc432
movl $0xe, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6d27
movq %r15, %rdi
callq 0x3130
movq 0x92b6(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6d3f
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x56fb(%rip), %rsi      # 0xc441
movl $0x76, %edx
movq %r14, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x5737(%rip), %rsi      # 0xc4b8
movl $0x14, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x6db2
movq %rbx, %rdi
callq 0x3130
movq 0x922b(%rip), %rdi      # 0xffd0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6dca
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x56fc(%rip), %rsi      # 0xc4cd
movl $0x1d, %edx
movq %r14, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x763b
movl $0x4, %edi
movl %ebp, %esi
movl $0x3, %edx
callq 0x6356
movq 0x10(%rbx), %rsi
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x8136
leaq 0x130(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
addq %rsi, %rdx
leaq 0x120(%rsp), %rdi
callq 0xafec
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0xafec
movq 0x120(%rsp), %rdi
cmpq %r15, %rdi
je 0x6e9c
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x8(%rsp), %rdi
callq 0x8918
jmp 0x72fc
movl $0x2, %edi
movl %ebp, %esi
movl $0x6, %edx
callq 0x6356
movq 0x10(%rbx), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x8136
movq 0x8(%rsp), %rsi
leaq 0x48(%rsp), %rdi
movl $0x1, (%rdi)
movl $0x0, 0x1c(%rdi)
movq $0x0, 0x10(%rdi)
callq 0x47bc
movq 0x18(%rbx), %rsi
leaq 0x48(%rsp), %rdi
callq 0x63b6
movq 0x20(%rbx), %rsi
leaq 0x1a0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x8136
leaq 0x48(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x610e
leaq 0x1b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6f4d
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x28(%rbx), %rsi
leaq 0x48(%rsp), %rdi
callq 0x5cc6
leaq 0x48(%rsp), %rdi
callq 0x55a0
jmp 0x761e
movl $0x3, %edi
movl %ebp, %esi
movl $0x3, %edx
callq 0x6356
movq 0x10(%rbx), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x8136
leaq 0x190(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x180(%rsp), %rdi
callq 0xafec
leaq 0x48(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x8464
movq 0x180(%rsp), %rdi
cmpq %r14, %rdi
je 0x6fe3
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x48(%rsp), %rdi
callq 0x84ba
leaq 0x90(%rsp), %rbx
movq %rbx, %rdi
callq 0xaf26
movq -0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x7016
movq 0x88(%rsp), %rsi
subq %rdi, %rsi
callq 0x3290
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x761e
movq 0x68(%rsp), %rsi
jmp 0x7616
movq 0x8f97(%rip), %r14      # 0xffd0
leaq 0x54cf(%rip), %rsi      # 0xc50f
movl $0xb, %edx
movq %r14, %rdi
callq 0x32f0
movq 0x8(%rbx), %rbx
testq %rbx, %rbx
je 0x732f
movq %rbx, %rdi
callq 0x3130
movq 0x8f67(%rip), %rdi      # 0xffd0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x7347
movl $0x1, %edi
movl %ebp, %esi
movl $0x5, %edx
callq 0x6356
movq 0x10(%rbx), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x8136
movq 0x8(%rsp), %rsi
leaq 0x48(%rsp), %rdi
movl $0x1, (%rdi)
movl $0x0, 0x1c(%rdi)
movq $0x0, 0x10(%rdi)
callq 0x47bc
movq 0x18(%rbx), %rsi
leaq 0x48(%rsp), %rdi
callq 0x63b6
movq 0x20(%rbx), %rsi
leaq 0x1c0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x8136
leaq 0x48(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x610e
leaq 0x1d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x711b
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x48(%rsp), %rdi
callq 0x55a0
jmp 0x761e
movl $0x5, %edi
movl %ebp, %esi
movl $0x5, %edx
callq 0x6356
movq 0x10(%rbx), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x8136
movq 0x18(%rbx), %rsi
leaq 0xc0(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x8136
movq 0x20(%rbx), %rdi
callq 0x33f0
movl %eax, %ebx
leaq 0x170(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x160(%rsp), %rdi
callq 0xafec
leaq 0x150(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x140(%rsp), %rdi
callq 0xafec
xorl %ecx, %ecx
testl %ebx, %ebx
setne %cl
leaq 0x48(%rsp), %rdi
leaq 0x160(%rsp), %rsi
leaq 0x140(%rsp), %rdx
callq 0x89e6
movq 0x140(%rsp), %rdi
cmpq %r15, %rdi
je 0x71ff
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x160(%rsp), %rdi
cmpq %r14, %rdi
je 0x721c
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x48(%rsp), %rdi
callq 0x8a56
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7241
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x75fd
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x75fd
movl $0x6, %edi
movl %ebp, %esi
movl $0x3, %edx
callq 0x6356
movq 0x10(%rbx), %rsi
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x8136
leaq 0x110(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
addq %rsi, %rdx
leaq 0x100(%rsp), %rdi
callq 0xafec
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0xafec
movq 0x100(%rsp), %rdi
cmpq %r15, %rdi
je 0x72f2
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x8(%rsp), %rdi
callq 0x8ef6
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x7313
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7639
movq 0x58(%rsp), %rsi
jmp 0x7631
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x51cd(%rip), %rsi      # 0xc51b
movl $0x18, %edx
movq %r14, %rdi
callq 0x32f0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
jmp 0x7639
leaq 0x515e(%rip), %rsi      # 0xc4ec
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x82ba
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %r15
movq %r15, %rsi
callq 0x3320
movq (%r15), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x7540
movq 0x58(%rsp), %rsi
jmp 0x7538
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x30(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
incq %r15
leaq 0x8(%rsp), %rsi
movq 0x8(%rsi), %rcx
leaq 0xe0(%rsp), %rdi
movq %r15, %rdx
callq 0x32b0
movq 0x28(%rsp), %rcx
movq 0x30(%rsp), %r8
movq 0xe8(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
cmpq %r12, %rcx
je 0x742b
movq 0x38(%rsp), %rdi
movq 0xe0(%rsp), %rsi
cmpq %rdi, %rax
jbe 0x7457
leaq 0xf0(%rsp), %r9
movl $0xf, %edi
cmpq %r9, %rsi
je 0x7452
movq 0xf0(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x7463
leaq 0x28(%rsp), %rdi
callq 0x30f0
jmp 0x7474
leaq 0xe0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x32d0
leaq 0x58(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x7498
movq %rsi, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
jmp 0x749e
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x50(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %r15
movq %r15, %rsi
callq 0x3320
movq (%r15), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x74e7
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7508
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x751f
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x1f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7540
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x8(%rsp), %rcx
leaq 0x48(%rsp), %rdi
movl $0x2, %esi
movq %r14, %rdx
callq 0x466e
movq 0x8a92(%rip), %rdi      # 0xfff0
leaq 0x4f8e(%rip), %rsi      # 0xc4f3
movl $0x17, %edx
callq 0x32f0
movl 0x70(%rsp), %esi
incl %esi
movq 0x8a74(%rip), %rdi      # 0xfff0
callq 0x31a0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3260
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0x5cc6
leaq 0x4f4c(%rip), %rsi      # 0xc50b
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x82ba
movq 0x28(%rsp), %rdi
callq 0x3220
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x75f3
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x48(%rsp), %rdi
callq 0x55a0
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x761e
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7639
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
xorl %eax, %eax
addq $0x200, %rsp            # imm = 0x200
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x7814
movq %rax, %rbx
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7679
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x7679
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x7695
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x7695
movq %rax, %rbx
leaq 0x1f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x78b7
movq 0x1f0(%rsp), %rsi
jmp 0x77a8
jmp 0x7814
jmp 0x78fb
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x78ad
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x78ad
jmp 0x78aa
jmp 0x78fb
jmp 0x7814
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x8ec0
jmp 0x78b7
jmp 0x78fb
movq %rax, %rbx
movq 0x140(%rsp), %rdi
cmpq %r15, %rdi
je 0x778f
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x778f
movq %rax, %rbx
leaq 0x1d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7805
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x7805
movq %rax, %rbx
leaq 0x1b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x789c
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x789c
jmp 0x77ce
movq %rax, %rbx
movq 0x160(%rsp), %rdi
cmpq %r14, %rdi
je 0x78b7
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x78b7
jmp 0x7802
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x88da
jmp 0x78d8
jmp 0x7899
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x7871
movq 0x18(%rsp), %rsi
jmp 0x7855
movq %rax, %rbx
movq 0x100(%rsp), %rdi
cmpq %r15, %rdi
je 0x7871
movq 0x110(%rsp), %rsi
jmp 0x7855
jmp 0x7814
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x55a0
jmp 0x78d8
movq %rax, %rbx
jmp 0x78b7
movq %rax, %rbx
movq 0x180(%rsp), %rdi
cmpq %r14, %rdi
je 0x78d8
movq 0x190(%rsp), %rsi
jmp 0x78d0
movq %rax, %rbx
movq 0x120(%rsp), %rdi
cmpq %r15, %rdi
je 0x7871
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x7871
jmp 0x786e
jmp 0x7869
jmp 0x7869
jmp 0x7869
jmp 0x7869
movq %rax, %rbx
jmp 0x78d8
movq %rax, %rbx
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x78f3
movq 0x58(%rsp), %rsi
jmp 0x78eb
jmp 0x7892
jmp 0x7892
jmp 0x7892
jmp 0x7892
jmp 0x7892
jmp 0x7892
movq %rax, %rbx
jmp 0x78f3
jmp 0x78fb
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x55a0
jmp 0x78d8
jmp 0x78fb
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x55a0
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x78d8
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x78f3
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbx, %rdi
callq 0x34b0
movq %rax, %rdi
callq 0x8173