// File: /workspace/github_cpp_makefile_star2_O1/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 0x69a4
movq 0x96e1(%rip), %r14      # 0xffd0
leaq 0x58f2(%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 0x5966(%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 0x595c(%rip), %rsi      # 0xc2c8
movl $0xc, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6a9c
movq %r15, %rdi
callq 0x3130
movq 0x963c(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6ab4
movl %edi, %ebp
movq 0x8(%rbx), %rdi
callq 0x33f0
cmpl $0x6, %eax
ja 0x705e
movl %eax, %eax
leaq 0x565f(%rip), %rcx      # 0xc020
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorl %edi, %edi
movl %ebp, %esi
movl $0x4, %edx
callq 0x6382
movq 0x10(%rbx), %r14
movq 0x18(%rbx), %rbx
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
movq %r14, %rsi
callq 0x81c2
leaq 0x57bd(%rip), %rsi      # 0xc1b6
leaq 0xc0(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x8342
movq 0xc0(%rsp), %rdi
callq 0x3220
leaq 0x5bce(%rip), %rsi      # 0xc5ed
leaq 0x8(%rsp), %rdi
movl $0x1, %ecx
movq $-0x1, %rdx
callq 0x3520
cmpq $-0x1, %rax
je 0x73b3
movq %rax, %r15
leaq 0x1e0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x32b0
leaq 0x5a8b(%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 0x73f6
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x73fe
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x581a(%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 0x582d(%rip), %rsi      # 0xc323
movl $0xe, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6b27
movq %r15, %rdi
callq 0x3130
movq 0x94b6(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6b3f
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x57ec(%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 0x57f0(%rip), %rsi      # 0xc371
movl $0xd, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6bb2
movq %r15, %rdi
callq 0x3130
movq 0x942b(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6bca
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x57ae(%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 0x57cd(%rip), %rsi      # 0xc3d9
movl $0xe, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6c3d
movq %r15, %rdi
callq 0x3130
movq 0x93a0(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6c55
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x578c(%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 0x576f(%rip), %rsi      # 0xc406
movl $0xd, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6cc8
movq %r15, %rdi
callq 0x3130
movq 0x9315(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6ce0
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x572d(%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 0x5710(%rip), %rsi      # 0xc432
movl $0xe, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %r15
testq %r15, %r15
je 0x6d53
movq %r15, %rdi
callq 0x3130
movq 0x928a(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6d6b
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x56cf(%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 0x570b(%rip), %rsi      # 0xc4b8
movl $0x14, %edx
movq %r14, %rdi
callq 0x32f0
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x6dde
movq %rbx, %rdi
callq 0x3130
movq 0x91ff(%rip), %rdi      # 0xffd0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x6df6
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x56d0(%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 0x7668
movl $0x4, %edi
movl %ebp, %esi
movl $0x3, %edx
callq 0x6382
movq 0x10(%rbx), %rsi
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x81c2
leaq 0x130(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
addq %rsi, %rdx
leaq 0x120(%rsp), %rdi
callq 0xb0ae
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0xb0ae
movq 0x120(%rsp), %rdi
cmpq %r15, %rdi
je 0x6ec8
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x8(%rsp), %rdi
callq 0x89a0
jmp 0x7328
movl $0x2, %edi
movl %ebp, %esi
movl $0x6, %edx
callq 0x6382
movq 0x10(%rbx), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x81c2
movq 0x8(%rsp), %rsi
leaq 0x48(%rsp), %rdi
movl $0x1, (%rdi)
movl $0x0, 0x1c(%rdi)
movq $0x0, 0x10(%rdi)
callq 0x47f6
movq 0x18(%rbx), %rsi
leaq 0x48(%rsp), %rdi
callq 0x63e2
movq 0x20(%rbx), %rsi
leaq 0x1a0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x81c2
leaq 0x48(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x6148
leaq 0x1b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6f79
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x28(%rbx), %rsi
leaq 0x48(%rsp), %rdi
callq 0x5d00
leaq 0x48(%rsp), %rdi
callq 0x55de
jmp 0x764b
movl $0x3, %edi
movl %ebp, %esi
movl $0x3, %edx
callq 0x6382
movq 0x10(%rbx), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x81c2
leaq 0x190(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x180(%rsp), %rdi
callq 0xb0ae
leaq 0x48(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x84ec
movq 0x180(%rsp), %rdi
cmpq %r14, %rdi
je 0x700f
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x48(%rsp), %rdi
callq 0x8542
leaq 0x90(%rsp), %rbx
movq %rbx, %rdi
callq 0xafe8
movq -0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x7042
movq 0x88(%rsp), %rsi
subq %rdi, %rsi
callq 0x3290
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x764b
movq 0x68(%rsp), %rsi
jmp 0x7643
movq 0x8f6b(%rip), %r14      # 0xffd0
leaq 0x54a3(%rip), %rsi      # 0xc50f
movl $0xb, %edx
movq %r14, %rdi
callq 0x32f0
movq 0x8(%rbx), %rbx
testq %rbx, %rbx
je 0x735b
movq %rbx, %rdi
callq 0x3130
movq 0x8f3b(%rip), %rdi      # 0xffd0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x32f0
jmp 0x7373
movl $0x1, %edi
movl %ebp, %esi
movl $0x5, %edx
callq 0x6382
movq 0x10(%rbx), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x81c2
movq 0x8(%rsp), %rsi
leaq 0x48(%rsp), %rdi
movl $0x1, (%rdi)
movl $0x0, 0x1c(%rdi)
movq $0x0, 0x10(%rdi)
callq 0x47f6
movq 0x18(%rbx), %rsi
leaq 0x48(%rsp), %rdi
callq 0x63e2
movq 0x20(%rbx), %rsi
leaq 0x1c0(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x81c2
leaq 0x48(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x6148
leaq 0x1d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7147
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x48(%rsp), %rdi
callq 0x55de
jmp 0x764b
movl $0x5, %edi
movl %ebp, %esi
movl $0x5, %edx
callq 0x6382
movq 0x10(%rbx), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x81c2
movq 0x18(%rbx), %rsi
leaq 0xc0(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x81c2
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 0xb0ae
leaq 0x150(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0xc0(%rsp), %rsi
movq 0xc8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x140(%rsp), %rdi
callq 0xb0ae
xorl %ecx, %ecx
testl %ebx, %ebx
setne %cl
leaq 0x48(%rsp), %rdi
leaq 0x160(%rsp), %rsi
leaq 0x140(%rsp), %rdx
callq 0x8a6e
movq 0x140(%rsp), %rdi
cmpq %r15, %rdi
je 0x722b
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x160(%rsp), %rdi
cmpq %r14, %rdi
je 0x7248
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x48(%rsp), %rdi
callq 0x8ade
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x726d
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x762a
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x762a
movl $0x6, %edi
movl %ebp, %esi
movl $0x3, %edx
callq 0x6382
movq 0x10(%rbx), %rsi
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x81c2
leaq 0x110(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
addq %rsi, %rdx
leaq 0x100(%rsp), %rdi
callq 0xb0ae
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0xb0ae
movq 0x100(%rsp), %rdi
cmpq %r15, %rdi
je 0x731e
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x8(%rsp), %rdi
callq 0x8f7a
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x733f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7666
movq 0x58(%rsp), %rsi
jmp 0x765e
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3450
leaq 0x51a1(%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 0x7666
leaq 0x5132(%rip), %rsi      # 0xc4ec
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x8342
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %r15
movq %r15, %rsi
callq 0x3320
movq (%r15), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x756d
movq 0x58(%rsp), %rsi
jmp 0x7565
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, %esi
cmpq %r12, %rcx
je 0x7457
movq 0x38(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x747c
leaq 0xf0(%rsp), %rdi
movl $0xf, %esi
cmpq %rdi, -0x10(%rdi)
je 0x7477
movq 0xf0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x7490
movq 0xe0(%rsp), %rsi
leaq 0x28(%rsp), %rdi
callq 0x30f0
jmp 0x74a1
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 0x74c5
movq %rsi, 0x48(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x58(%rsp)
jmp 0x74cb
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 0x7514
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7535
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x754c
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x1f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x756d
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x3290
movq 0x8(%rsp), %rcx
leaq 0x48(%rsp), %rdi
movl $0x2, %esi
movq %r14, %rdx
callq 0x46a8
movq 0x8a65(%rip), %rdi      # 0xfff0
leaq 0x4f61(%rip), %rsi      # 0xc4f3
movl $0x17, %edx
callq 0x32f0
movl 0x70(%rsp), %esi
incl %esi
movq 0x8a47(%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 0x5d00
leaq 0x4f1f(%rip), %rsi      # 0xc50b
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x8342
movq 0x28(%rsp), %rdi
callq 0x3220
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7620
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x48(%rsp), %rdi
callq 0x55de
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x764b
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7666
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 0x7841
movq %rax, %rbx
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x76a6
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x76a6
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x76c2
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x76c2
movq %rax, %rbx
leaq 0x1f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x78e4
movq 0x1f0(%rsp), %rsi
jmp 0x77d5
jmp 0x7841
jmp 0x7928
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x78da
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x78da
jmp 0x78d7
jmp 0x7928
jmp 0x7841
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x8f44
jmp 0x78e4
jmp 0x7928
movq %rax, %rbx
movq 0x140(%rsp), %rdi
cmpq %r15, %rdi
je 0x77bc
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x77bc
movq %rax, %rbx
leaq 0x1d0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7832
movq 0x1d0(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x7832
movq %rax, %rbx
leaq 0x1b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x78c9
movq 0x1b0(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x78c9
jmp 0x77fb
movq %rax, %rbx
movq 0x160(%rsp), %rdi
cmpq %r14, %rdi
je 0x78e4
movq 0x170(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x78e4
jmp 0x782f
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x8962
jmp 0x7905
jmp 0x78c6
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x789e
movq 0x18(%rsp), %rsi
jmp 0x7882
movq %rax, %rbx
movq 0x100(%rsp), %rdi
cmpq %r15, %rdi
je 0x789e
movq 0x110(%rsp), %rsi
jmp 0x7882
jmp 0x7841
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x55de
jmp 0x7905
movq %rax, %rbx
jmp 0x78e4
movq %rax, %rbx
movq 0x180(%rsp), %rdi
cmpq %r14, %rdi
je 0x7905
movq 0x190(%rsp), %rsi
jmp 0x78fd
movq %rax, %rbx
movq 0x120(%rsp), %rdi
cmpq %r15, %rdi
je 0x789e
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x3290
jmp 0x789e
jmp 0x789b
jmp 0x7896
jmp 0x7896
jmp 0x7896
jmp 0x7896
movq %rax, %rbx
jmp 0x7905
movq %rax, %rbx
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7920
movq 0x58(%rsp), %rsi
jmp 0x7918
jmp 0x78bf
jmp 0x78bf
jmp 0x78bf
jmp 0x78bf
jmp 0x78bf
jmp 0x78bf
movq %rax, %rbx
jmp 0x7920
jmp 0x7928
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x55de
jmp 0x7905
jmp 0x7928
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x55de
leaq 0xd0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7905
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x3290
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7920
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3290
movq %rbx, %rdi
callq 0x34b0
movq %rax, %rdi
callq 0x81ff