// File: BenLangmead[P]bowtie/./filebuf.h
// Function: void FileBuf::parseFastaRecord<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, SString<char>>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, SString<char>&, bool)
void parseFastaRecord(
		TNameStr& name,
		TSeqStr&  seq,
		bool      gotCaret = false)
	{
		int c;
		if(!gotCaret) {
			// Skip over caret and non-newline whitespace
			c = peek();
			while(isspace_notnl(c) || c == '>') { get(); c = peek(); }
		} else {
			// Skip over non-newline whitespace
			c = peek();
			while(isspace_notnl(c)) { get(); c = peek(); }
		}
		size_t namecur = 0, seqcur = 0;
		// c is the first character of the fasta name record, or is the first
		// newline character if the name record is empty
		while(!isnewline(c) && c != -1) {
			name[namecur++] = c; get(); c = peek();
		}
		// sequence consists of all the non-whitespace characters between here
		// and the next caret
		while(true) {
			// skip over whitespace
			while(isspace(c)) { get(); c = peek(); }
			// if we see caret or EOF, break
			if(c == '>' || c == -1) break;
			// append and continue
			seq[seqcur++] = asc2dna[c];
			get(); c = peek();
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movb %cl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
testb $0x1, -0x19(%rbp)
jne 0x2e915
movq -0x38(%rbp), %rdi
callq 0x2efe0
movl %eax, -0x20(%rbp)
movl -0x20(%rbp), %edi
callq 0x132f0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x39(%rbp)
jne 0x2e8f3
cmpl $0x3e, -0x20(%rbp)
sete %al
movb %al, -0x39(%rbp)
movb -0x39(%rbp), %al
testb $0x1, %al
jne 0x2e8fc
jmp 0x2e913
movq -0x38(%rbp), %rdi
callq 0x2f2b0
movq -0x38(%rbp), %rdi
callq 0x2efe0
movl %eax, -0x20(%rbp)
jmp 0x2e8d5
jmp 0x2e948
movq -0x38(%rbp), %rdi
callq 0x2efe0
movl %eax, -0x20(%rbp)
movl -0x20(%rbp), %edi
callq 0x132f0
testb $0x1, %al
jne 0x2e92f
jmp 0x2e946
movq -0x38(%rbp), %rdi
callq 0x2f2b0
movq -0x38(%rbp), %rdi
callq 0x2efe0
movl %eax, -0x20(%rbp)
jmp 0x2e921
jmp 0x2e948
movq $0x0, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movl -0x20(%rbp), %edi
callq 0x13330
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x3a(%rbp)
jne 0x2e976
cmpl $-0x1, -0x20(%rbp)
setne %al
movb %al, -0x3a(%rbp)
movb -0x3a(%rbp), %al
testb $0x1, %al
jne 0x2e97f
jmp 0x2e9b9
movl -0x20(%rbp), %eax
movb %al, -0x3b(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq %rsi, %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
callq 0x5860
movb -0x3b(%rbp), %cl
movq -0x38(%rbp), %rdi
movb %cl, (%rax)
callq 0x2f2b0
movq -0x38(%rbp), %rdi
callq 0x2efe0
movl %eax, -0x20(%rbp)
jmp 0x2e958
jmp 0x2e9bb
jmp 0x2e9bd
movl -0x20(%rbp), %edi
callq 0x5060
cmpl $0x0, %eax
je 0x2e9e1
movq -0x38(%rbp), %rdi
callq 0x2f2b0
movq -0x38(%rbp), %rdi
callq 0x2efe0
movl %eax, -0x20(%rbp)
jmp 0x2e9bd
cmpl $0x3e, -0x20(%rbp)
je 0x2e9ed
cmpl $-0x1, -0x20(%rbp)
jne 0x2e9ef
jmp 0x2ea34
movslq -0x20(%rbp), %rcx
leaq 0x1d026(%rip), %rax     # 0x4ba20
movb (%rax,%rcx), %al
movb %al, -0x3c(%rbp)
movq -0x18(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq %rsi, %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
callq 0x18f90
movb -0x3c(%rbp), %cl
movq -0x38(%rbp), %rdi
movb %cl, (%rax)
callq 0x2f2b0
movq -0x38(%rbp), %rdi
callq 0x2efe0
movl %eax, -0x20(%rbp)
jmp 0x2e9bb
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)