// File: /workspace/github_c_makefile_star2_O0/OpenGene[P]pecheck/src/fastqreader.cpp
// Function: FastqReader::read()
Read* FastqReader::read(){
	if (mZipped){
		if (mZipFile == NULL)
			return NULL;
	}

	if(mBufUsedLen >= mBufDataLen && eof()) {
		return NULL;
	}

	string name = getLine();
	string sequence = getLine();
	string strand = getLine();

	if(name.empty() || sequence.empty() || strand.empty())
		return NULL;

	// WAR for FQ with no quality
	if (!mHasQuality){
		string quality = string(sequence.length(), 'K');
		return new Read(name, sequence, strand, quality, mPhred64);
	}
	else {
		string quality = getLine();
		if(quality.empty())
			return NULL;
		return new Read(name, sequence, strand, quality, mPhred64);
	}

	return NULL;
}

// Assembly:
subq $0x208, %rsp            # imm = 0x208
movq %rdi, 0x1f8(%rsp)
movq 0x1f8(%rsp), %rax
movq %rax, 0x20(%rsp)
testb $0x1, 0x30(%rax)
je 0x54a1
movq 0x20(%rsp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x549f
movq $0x0, 0x200(%rsp)
jmp 0x5a8c
jmp 0x54a1
movq 0x20(%rsp), %rcx
movl 0x44(%rcx), %eax
cmpl 0x40(%rcx), %eax
jl 0x54cf
movq 0x20(%rsp), %rdi
callq 0x5400
testb $0x1, %al
jne 0x54be
jmp 0x54cf
movq $0x0, 0x200(%rsp)
jmp 0x5a8c
movq 0x20(%rsp), %rsi
leaq 0x1d8(%rsp), %rdi
callq 0x4fd0
movq 0x20(%rsp), %rsi
leaq 0x1b8(%rsp), %rdi
callq 0x4fd0
jmp 0x54f5
movq 0x20(%rsp), %rsi
leaq 0x188(%rsp), %rdi
callq 0x4fd0
jmp 0x5509
leaq 0x1d8(%rsp), %rdi
callq 0x4630
testb $0x1, %al
jne 0x553e
leaq 0x1b8(%rsp), %rdi
callq 0x4630
testb $0x1, %al
jne 0x553e
leaq 0x188(%rsp), %rdi
callq 0x4630
testb $0x1, %al
jne 0x553e
jmp 0x558c
movq $0x0, 0x200(%rsp)
movl $0x1, 0x184(%rsp)
jmp 0x5a3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x5a7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x5a70
movq 0x20(%rsp), %rax
testb $0x1, 0x31(%rax)
jne 0x5810
leaq 0x1b8(%rsp), %rdi
callq 0x4590
movq %rax, 0x10(%rsp)
leaq 0x15f(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x46b0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rcx
leaq 0x160(%rsp), %rdi
movl $0x4b, %edx
callq 0x6a60
jmp 0x55dd
leaq 0x15f(%rsp), %rdi
callq 0x43e0
movl $0x88, %edi
callq 0x4360
movq %rax, 0x8(%rsp)
jmp 0x55fb
movb $0x1, 0xd7(%rsp)
leaq 0x138(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x4180
jmp 0x561a
leaq 0x118(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x4180
jmp 0x5631
leaq 0xf8(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x4180
jmp 0x5648
leaq 0xd8(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x4180
jmp 0x565f
movq 0x8(%rsp), %rdi
movq 0x20(%rsp), %rax
movzbl 0x32(%rax), %r9d
andl $0x1, %r9d
leaq 0x138(%rsp), %rsi
leaq 0x118(%rsp), %rdx
leaq 0xf8(%rsp), %rcx
leaq 0xd8(%rsp), %r8
callq 0x11e30
jmp 0x5699
movq 0x8(%rsp), %rax
movb $0x0, 0xd7(%rsp)
movq %rax, 0x200(%rsp)
leaq 0xd8(%rsp), %rdi
callq 0x4758
leaq 0xf8(%rsp), %rdi
callq 0x4758
leaq 0x118(%rsp), %rdi
callq 0x4758
leaq 0x138(%rsp), %rdi
callq 0x4758
movl $0x1, 0x184(%rsp)
leaq 0x160(%rsp), %rdi
callq 0x4758
jmp 0x5a3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
leaq 0x15f(%rsp), %rdi
callq 0x43e0
jmp 0x5a63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x57fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x57e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x57d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x57c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x57ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
leaq 0xd8(%rsp), %rdi
callq 0x4758
leaq 0xf8(%rsp), %rdi
callq 0x4758
leaq 0x118(%rsp), %rdi
callq 0x4758
leaq 0x138(%rsp), %rdi
callq 0x4758
testb $0x1, 0xd7(%rsp)
jne 0x57ed
jmp 0x57fc
movq 0x8(%rsp), %rdi
movl $0x88, %esi
callq 0x4370
jmp 0x57fe
leaq 0x160(%rsp), %rdi
callq 0x4758
jmp 0x5a63
movq 0x20(%rsp), %rsi
leaq 0xb0(%rsp), %rdi
callq 0x4fd0
jmp 0x5824
leaq 0xb0(%rsp), %rdi
callq 0x4630
testb $0x1, %al
jne 0x5837
jmp 0x586c
movq $0x0, 0x200(%rsp)
movl $0x1, 0x184(%rsp)
jmp 0x5a1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x5a63
movl $0x88, %edi
callq 0x4360
movq %rax, (%rsp)
jmp 0x587c
movb $0x1, 0x2f(%rsp)
leaq 0x90(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x4180
jmp 0x5898
leaq 0x70(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x4180
jmp 0x58ac
leaq 0x50(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x4180
jmp 0x58c0
leaq 0x30(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x4180
jmp 0x58d4
movq (%rsp), %rdi
movq 0x20(%rsp), %rax
movzbl 0x32(%rax), %r9d
andl $0x1, %r9d
leaq 0x90(%rsp), %rsi
leaq 0x70(%rsp), %rdx
leaq 0x50(%rsp), %rcx
leaq 0x30(%rsp), %r8
callq 0x11e30
jmp 0x5904
movq (%rsp), %rax
movb $0x0, 0x2f(%rsp)
movq %rax, 0x200(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x4758
leaq 0x50(%rsp), %rdi
callq 0x4758
leaq 0x70(%rsp), %rdi
callq 0x4758
leaq 0x90(%rsp), %rdi
callq 0x4758
movl $0x1, 0x184(%rsp)
jmp 0x5a1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x5a2b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x5a03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x59f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x59ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
jmp 0x59e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b0(%rsp)
movl %eax, 0x1ac(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x4758
leaq 0x50(%rsp), %rdi
callq 0x4758
leaq 0x70(%rsp), %rdi
callq 0x4758
leaq 0x90(%rsp), %rdi
callq 0x4758
testb $0x1, 0x2f(%rsp)
jne 0x5a0c
jmp 0x5a1a
movq (%rsp), %rdi
movl $0x88, %esi
callq 0x4370
jmp 0x5a2b
leaq 0xb0(%rsp), %rdi
callq 0x4758
jmp 0x5a3a
leaq 0xb0(%rsp), %rdi
callq 0x4758
jmp 0x5a63
leaq 0x188(%rsp), %rdi
callq 0x4758
leaq 0x1b8(%rsp), %rdi
callq 0x4758
leaq 0x1d8(%rsp), %rdi
callq 0x4758
jmp 0x5a8c
leaq 0x188(%rsp), %rdi
callq 0x4758
leaq 0x1b8(%rsp), %rdi
callq 0x4758
leaq 0x1d8(%rsp), %rdi
callq 0x4758
jmp 0x5a9c
movq 0x200(%rsp), %rax
addq $0x208, %rsp            # imm = 0x208
retq
movq 0x1b0(%rsp), %rdi
callq 0x46a0
nopl (%rax)