// File: BenLangmead[P]bowtie/ebwt_search.cpp
// Function: patsrcFromStrings(int, EList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 128> const&, EList<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 128> const*)
static PatternSource*
patsrcFromStrings(int format,
                  const EList<string>& reads,
                  const EList<string>* quals)
{
	switch(format) {
		case FASTA:
			return new FastaPatternSource (reads, quals,
			                               trim3, trim5);
		case FASTA_CONT:
			return new FastaContinuousPatternSource (
			                               reads, fastaContLen,
			                               fastaContFreq);
		case RAW:
			return new RawPatternSource   (reads, trim3, trim5);
		case FASTQ:
			return new FastqPatternSource (reads, trim3, trim5,
			                               solexaQuals, phred64Quals,
			                               integerQuals);
		case INTERLEAVED:
			return new FastqPatternSource (reads, trim3, trim5,
			                               solexaQuals, phred64Quals,
			                               integerQuals, true /* is interleaved */);
		case TAB_MATE:
			return new TabbedPatternSource(reads, false, trim3, trim5);
		case CMDLINE:
			return new VectorPatternSource(reads, trim3, trim5);
		default: {
			cerr << "Internal error; bad patsrc format: " << format << endl;
			throw 1;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movl %edi, -0xc(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movl -0xc(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x38(%rbp)
subl $0x6, %eax
ja 0x188b7
movq -0x38(%rbp), %rax
leaq 0x70f8f(%rip), %rcx     # 0x89554
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x200a8, %edi          # imm = 0x200A8
callq 0xa5f0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movl 0x92dd0(%rip), %ecx     # 0xab3c0
movl 0x92dc5(%rip), %r8d     # 0xab3bc
callq 0x2b680
jmp 0x185fe
movq -0x40(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x18907
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x200a8, %esi          # imm = 0x200A8
callq 0xa600
jmp 0x18914
movl $0x20518, %edi          # imm = 0x20518
callq 0xa5f0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rsi
movq 0x92e27(%rip), %rdx     # 0xab470
movq 0x92e28(%rip), %rcx     # 0xab478
callq 0x2b6e0
jmp 0x18657
movq -0x48(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x18907
movq -0x48(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x20518, %esi          # imm = 0x20518
callq 0xa600
jmp 0x18914
movl $0x200a8, %edi          # imm = 0x200A8
callq 0xa5f0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rsi
movl 0x92d1f(%rip), %edx     # 0xab3c0
movl 0x92d15(%rip), %ecx     # 0xab3bc
callq 0x2b7c0
jmp 0x186ae
movq -0x50(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x18907
movq -0x50(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x200a8, %esi          # imm = 0x200A8
callq 0xa600
jmp 0x18914
movl $0x200a8, %edi          # imm = 0x200A8
callq 0xa5f0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x58(%rbp)
movq -0x18(%rbp), %rsi
movl 0x92cc8(%rip), %edx     # 0xab3c0
movl 0x92cbe(%rip), %ecx     # 0xab3bc
movzbl 0x92ccf(%rip), %r9d     # 0xab3d5
movzbl 0x92cc6(%rip), %r8d     # 0xab3d4
movzbl 0x92cc0(%rip), %r10d    # 0xab3d6
andl $0x1, %r10d
movq %rsp, %rax
movl %r10d, (%rax)
movl $0x0, 0x10(%rax)
movl $0x0, 0x8(%rax)
andl $0x1, %r8d
andl $0x1, %r9d
callq 0x2b820
jmp 0x1873d
movq -0x58(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x18907
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x200a8, %esi          # imm = 0x200A8
callq 0xa600
jmp 0x18914
movl $0x200a8, %edi          # imm = 0x200A8
callq 0xa5f0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rsi
movl 0x92c39(%rip), %edx     # 0xab3c0
movl 0x92c2f(%rip), %ecx     # 0xab3bc
movzbl 0x92c40(%rip), %r9d     # 0xab3d5
movzbl 0x92c37(%rip), %r8d     # 0xab3d4
movzbl 0x92c31(%rip), %r10d    # 0xab3d6
andl $0x1, %r10d
movq %rsp, %rax
movl %r10d, (%rax)
movl $0x0, 0x10(%rax)
movl $0x1, 0x8(%rax)
andl $0x1, %r8d
andl $0x1, %r9d
callq 0x2b820
jmp 0x187cc
movq -0x60(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x18907
movq -0x60(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x200a8, %esi          # imm = 0x200A8
callq 0xa600
jmp 0x18914
movl $0x200a8, %edi          # imm = 0x200A8
callq 0xa5f0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rsi
movl 0x92baa(%rip), %ecx     # 0xab3c0
movl 0x92b9f(%rip), %r8d     # 0xab3bc
movq %rsp, %rax
movl $0x0, 0x8(%rax)
movl $0x0, (%rax)
xorl %r9d, %r9d
movl %r9d, %edx
callq 0x2b8f0
jmp 0x1883a
movq -0x68(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x18907
movq -0x68(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x200a8, %esi          # imm = 0x200A8
callq 0xa600
jmp 0x18914
movl $0x88, %edi
callq 0xa5f0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x70(%rbp)
movq -0x18(%rbp), %rsi
movl 0x92b3c(%rip), %edx     # 0xab3c0
movl 0x92b32(%rip), %ecx     # 0xab3bc
callq 0x7f680
jmp 0x18891
movq -0x70(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x18907
movq -0x70(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl $0x88, %esi
callq 0xa600
jmp 0x18914
movq 0x8f732(%rip), %rdi     # 0xa7ff0
leaq 0x73d90(%rip), %rsi     # 0x8c655
callq 0xa5d0
movq %rax, %rdi
movl -0xc(%rbp), %esi
callq 0xab40
movq %rax, %rdi
movq 0x8f689(%rip), %rsi     # 0xa7f68
callq 0xa640
movl $0x4, %edi
callq 0xa290
movq %rax, %rdi
movl $0x1, (%rdi)
movq 0x8f652(%rip), %rsi     # 0xa7f50
xorl %eax, %eax
movl %eax, %edx
callq 0xab10
movq -0x8(%rbp), %rax
addq $0x90, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0xab60
nopl (%rax)