// File: /workspace/github_c_makefile_star2_O0/fukunagatsu[P]RIblast/db_construction.cpp
// Function: DbConstruction::Run(DbConstructionParameters)
void DbConstruction::Run(const DbConstructionParameters parameters){
  vector<string> sequences; sequences.reserve(10);
  vector<unsigned char> encoded_sequences;
  vector<int> suffix_array;
  vector<vector <int> > start_hash; start_hash.reserve(parameters.GetHashSize());
  vector<vector <int> > end_hash; start_hash.reserve(parameters.GetHashSize());

  ReadFastaFile(parameters, sequences);
  CalculateAccessibility(parameters,sequences);
  ConstructSuffixArray(parameters, sequences,encoded_sequences,suffix_array);
  ConstructHashForShortSubstring(parameters, encoded_sequences, suffix_array, start_hash, end_hash);

  SaveIndexData(parameters.GetDbFilename(), suffix_array, start_hash, end_hash);
  SaveSequenceData(parameters.GetDbFilename(), sequences, encoded_sequences);
  
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x240, %rsp            # imm = 0x240
movq %rsi, -0x230(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x228(%rbp)
leaq -0x28(%rbp), %rdi
movq %rdi, -0x220(%rbp)
callq 0x4700
movq -0x220(%rbp), %rdi
movl $0xa, %esi
callq 0xb070
jmp 0x9a98
leaq -0x50(%rbp), %rdi
callq 0x4740
leaq -0x68(%rbp), %rdi
callq 0x4720
leaq -0x80(%rbp), %rdi
callq 0x4760
movq -0x230(%rbp), %rdi
callq 0xb170
movl %eax, -0x234(%rbp)
jmp 0x9ac7
movl -0x234(%rbp), %eax
movslq %eax, %rsi
leaq -0x80(%rbp), %rdi
callq 0x4780
jmp 0x9adb
leaq -0x98(%rbp), %rdi
callq 0x4760
movq -0x230(%rbp), %rdi
callq 0xb170
movl %eax, -0x238(%rbp)
jmp 0x9afb
movl -0x238(%rbp), %eax
movslq %eax, %rsi
leaq -0x80(%rbp), %rdi
callq 0x4780
jmp 0x9b0f
movq -0x230(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x40a0
jmp 0x9b24
movq -0x228(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x9de0
jmp 0x9b3d
leaq -0xe8(%rbp), %rdi
callq 0x4120
movq -0x230(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0x40a0
jmp 0x9b5e
movq -0x228(%rbp), %rdi
leaq -0x138(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x9f10
jmp 0x9b77
leaq -0x138(%rbp), %rdi
callq 0x4120
movq -0x230(%rbp), %rsi
leaq -0x188(%rbp), %rdi
callq 0x40a0
jmp 0x9b98
movq -0x228(%rbp), %rdi
leaq -0x188(%rbp), %rsi
leaq -0x28(%rbp), %rdx
leaq -0x50(%rbp), %rcx
leaq -0x68(%rbp), %r8
callq 0xa060
jmp 0x9bb9
leaq -0x188(%rbp), %rdi
callq 0x4120
movq -0x230(%rbp), %rsi
leaq -0x1d8(%rbp), %rdi
callq 0x40a0
jmp 0x9bda
movq -0x228(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
leaq -0x50(%rbp), %rdx
leaq -0x68(%rbp), %rcx
leaq -0x80(%rbp), %r8
leaq -0x98(%rbp), %r9
callq 0xa130
jmp 0x9c02
leaq -0x1d8(%rbp), %rdi
callq 0x4120
movq -0x230(%rbp), %rsi
leaq -0x1f8(%rbp), %rdi
callq 0xb190
jmp 0x9c23
movq -0x228(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
leaq -0x68(%rbp), %rdx
leaq -0x80(%rbp), %rcx
leaq -0x98(%rbp), %r8
callq 0xa440
jmp 0x9c47
leaq -0x1f8(%rbp), %rdi
callq 0x3190
movq -0x230(%rbp), %rsi
leaq -0x218(%rbp), %rdi
callq 0xb190
jmp 0x9c68
movq -0x228(%rbp), %rdi
leaq -0x218(%rbp), %rsi
leaq -0x28(%rbp), %rdx
leaq -0x50(%rbp), %rcx
callq 0xa7d0
jmp 0x9c85
leaq -0x218(%rbp), %rdi
callq 0x3190
leaq -0x98(%rbp), %rdi
callq 0x4a30
leaq -0x80(%rbp), %rdi
callq 0x4a30
leaq -0x68(%rbp), %rdi
callq 0x49d0
leaq -0x50(%rbp), %rdi
callq 0x4a90
leaq -0x28(%rbp), %rdi
callq 0x4af0
addq $0x240, %rsp            # imm = 0x240
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x9dc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x9da6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x9d9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x4120
jmp 0x9d9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x4120
jmp 0x9d9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x4120
jmp 0x9d9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x4120
jmp 0x9d9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x3190
jmp 0x9d9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x3190
leaq -0x98(%rbp), %rdi
callq 0x4a30
leaq -0x80(%rbp), %rdi
callq 0x4a30
leaq -0x68(%rbp), %rdi
callq 0x49d0
leaq -0x50(%rbp), %rdi
callq 0x4a90
leaq -0x28(%rbp), %rdi
callq 0x4af0
movq -0x30(%rbp), %rdi
callq 0x34d0
nopw %cs:(%rax,%rax)