// File: /workspace/github_cpp_makefile_star2_O3/zeeev[P]DASVC/bamtools/src/toolkit/bamtools_convert.cpp
// Function: BamTools::ConvertTool::ConvertToolPrivate::PrintFastq(BamTools::BamAlignment const&)
void ConvertTool::ConvertToolPrivate::PrintFastq(const BamAlignment& a) { 
  
    // @BamAlignment.Name
    // BamAlignment.QueryBases
    // +
    // BamAlignment.Qualities
    //
    // N.B. - QueryBases are reverse-complemented (& Qualities reversed) if aligned to reverse strand .
    //        Name is appended "/1" or "/2" if paired-end, to reflect which mate this entry is.
  
    // handle paired-end alignments
    string name = a.Name;
    if ( a.IsPaired() )
        name.append( (a.IsFirstMate() ? "/1" : "/2") );
  
    // handle reverse strand alignment - bases & qualities
    string qualities = a.Qualities;
    string sequence  = a.QueryBases;
    if ( a.IsReverseStrand() ) {
        Utilities::Reverse(qualities);
        Utilities::ReverseComplement(sequence);
    }
  
    // write to output stream
    m_out << "@" << name << endl
          << sequence    << endl
          << "+"         << endl
          << qualities   << endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x60, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x50(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rsi), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x40(%rsp), %rdi
callq 0x2f10a
movq %r14, %rdi
callq 0x27330
testb %al, %al
je 0x2b5da
movq %r14, %rdi
callq 0x272e0
leaq 0x45d2f(%rip), %rcx     # 0x712f2
leaq 0x45d2b(%rip), %rsi     # 0x712f5
testb %al, %al
cmovneq %rcx, %rsi
leaq 0x40(%rsp), %rdi
callq 0x27c00
leaq 0x30(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x68(%r14), %rsi
movq 0x70(%r14), %rdx
addq %rsi, %rdx
leaq 0x20(%rsp), %rdi
callq 0x2f10a
leaq 0x10(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x28(%r14), %rsi
movq 0x30(%r14), %rdx
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x2f10a
movq %r14, %rdi
callq 0x277f0
testb %al, %al
je 0x2b633
leaq 0x20(%rsp), %rdi
callq 0x667d6
movq %rsp, %rdi
callq 0x66818
addq $0x20, %rbx
leaq 0x45cba(%rip), %rsi     # 0x712f8
movl $0x1, %edx
movq %rbx, %rdi
callq 0x276b0
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %rbx, %rdi
callq 0x276b0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x27590
movsbl %al, %esi
movq %rbx, %rdi
callq 0x27040
movq %rax, %rdi
callq 0x27410
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rax, %rdi
callq 0x276b0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x27590
movsbl %al, %esi
movq %rbx, %rdi
callq 0x27040
movq %rax, %rdi
callq 0x27410
movq %rax, %rbx
leaq 0x45c24(%rip), %rsi     # 0x712f0
movl $0x1, %edx
movq %rax, %rdi
callq 0x276b0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x27590
movsbl %al, %esi
movq %rbx, %rdi
callq 0x27040
movq %rax, %rdi
callq 0x27410
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %rax, %rdi
callq 0x276b0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x27590
movsbl %al, %esi
movq %rbx, %rdi
callq 0x27040
movq %rax, %rdi
callq 0x27410
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x2b74a
callq 0x27560
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
je 0x2b759
callq 0x27560
movq 0x40(%rsp), %rdi
cmpq %r15, %rdi
je 0x2b768
callq 0x27560
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rax, %rbx
jmp 0x2b793
jmp 0x2b77d
movq %rax, %rbx
jmp 0x2b7a2
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x2b793
callq 0x27560
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
je 0x2b7a2
callq 0x27560
movq 0x40(%rsp), %rdi
cmpq %r15, %rdi
je 0x2b7b1
callq 0x27560
movq %rbx, %rdi
callq 0x27b10
nop