// File: /workspace/github_c_makefile_star2_O1/icebert[P]pblat/jkOwnLib/gfOut.c
// Function: gfOutputAny
struct gfOutput *gfOutputAny(char *format, 
	int goodPpt, boolean qIsProt, boolean tIsProt, 
	boolean noHead, char *databaseName,
	int databaseSeqCount, double databaseLetters,
	double minIdentity,
	FILE *f)
/* Initialize output in a variety of formats in file or memory. 
 * Parameters:
 *    format - either 'psl', 'pslx', 'sim4', 'blast', 'wublast', 'axt', 'xml'
 *    goodPpt - minimum identity of alignments to output in parts per thousand
 *    qIsProt - true if query side is a protein.
 *    tIsProt - true if target (database) side is a protein.
 *    noHead - if true suppress header in psl/pslx output.
 *    databaseName - name of database.  Only used for blast output
 *    databaseSeq - number of sequences in database - only for blast
 *    databaseLetters - number of bases/aas in database - only blast
 *    minIdentity - minimum identity - only blast
 *    FILE *f - file.  
 */
{
struct gfOutput *out = NULL;
static char *blastTypes[] = {"blast", "wublast", "blast8", "blast9", "xml"};

if (format == NULL)
    format = "psl";
if (sameWord(format, "psl"))
    out = gfOutputPsl(goodPpt, qIsProt, tIsProt, f, FALSE, noHead);
else if (sameWord(format, "pslx"))
    out = gfOutputPsl(goodPpt, qIsProt, tIsProt, f, TRUE, noHead);
else if (sameWord(format, "sim4"))
    out = gfOutputSim4(goodPpt, qIsProt, tIsProt, databaseName);
else if (stringArrayIx(format, blastTypes, ArraySize(blastTypes)) >= 0)
    out = gfOutputBlast(goodPpt, qIsProt, tIsProt, 
	    databaseName, databaseSeqCount, databaseLetters, format, 
	    minIdentity, f);
else if (sameWord(format, "axt"))
    out = gfOutputAxt(goodPpt, qIsProt, tIsProt, f);
else if (sameWord(format, "maf"))
    out = gfOutputMaf(goodPpt, qIsProt, tIsProt, f);
else
    errAbort("Unrecognized output format '%s'", format);
return out;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movsd %xmm1, 0x20(%rsp)
movsd %xmm0, 0x18(%rsp)
movq %r9, 0x10(%rsp)
movl %r8d, %r13d
movl %ecx, %ebx
movl %edx, %ebp
movl %esi, %r15d
movq %rdi, %r14
movq 0x68(%rsp), %r12
movl 0x60(%rsp), %eax
movl %eax, 0xc(%rsp)
testq %rdi, %rdi
leaq 0x79d98(%rip), %rsi     # 0x8e2bb
cmoveq %rsi, %r14
movq %r14, %rdi
callq 0x2054a
testl %eax, %eax
je 0x145f8
leaq 0x79cfe(%rip), %rsi     # 0x8e23c
movq %r14, %rdi
callq 0x2054a
testl %eax, %eax
je 0x14607
leaq 0x79cec(%rip), %rsi     # 0x8e241
movq %r14, %rdi
callq 0x2054a
testl %eax, %eax
je 0x1462d
leaq 0xab824(%rip), %rsi     # 0xbfd90
movq %r14, %rdi
movl $0x5, %edx
callq 0x22c43
testl %eax, %eax
js 0x1464c
movl $0x50, %edi
callq 0x2dc95
movq %rax, %r13
movl %r15d, 0x38(%rax)
movl %ebp, 0x3c(%rax)
movl %ebx, 0x40(%rax)
movl $0x30, %edi
callq 0x2dc95
leaq -0x996(%rip), %rcx      # 0x13c13
movq %rcx, 0x10(%r13)
movq %rax, 0x8(%r13)
movq 0x10(%rsp), %rcx
movq %rcx, 0x8(%rax)
movl 0xc(%rsp), %ecx
movl %ecx, 0x10(%rax)
movsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x18(%rax)
movq %r14, 0x20(%rax)
movsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x28(%rax)
leaq -0x142(%rip), %rax      # 0x144a0
movq %rax, 0x18(%r13)
movq %r13, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl %r15d, %edi
movl %ebp, %esi
movl %ebx, %edx
movq %r12, %rcx
xorl %r8d, %r8d
jmp 0x14617
movl %r15d, %edi
movl %ebp, %esi
movl %ebx, %edx
movq %r12, %rcx
movl $0x1, %r8d
movl %r13d, %r9d
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x134e0
movl %r15d, %edi
movl %ebp, %esi
movl %ebx, %edx
movq 0x10(%rsp), %rcx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x14165
leaq 0x79bf3(%rip), %rsi     # 0x8e246
movq %r14, %rdi
callq 0x2054a
testl %eax, %eax
je 0x1468b
leaq 0x7d2b6(%rip), %rsi     # 0x9191c
movq %r14, %rdi
callq 0x2054a
testl %eax, %eax
je 0x146c7
leaq 0x79bd1(%rip), %rdi     # 0x8e24a
xorl %r13d, %r13d
movq %r14, %rsi
xorl %eax, %eax
callq 0x26b6f
jmp 0x145e6
movl $0x50, %edi
callq 0x2dc95
movq %rax, %r13
movl %r15d, 0x38(%rax)
movl %ebp, 0x3c(%rax)
movl %ebx, 0x40(%rax)
movl $0x30, %edi
callq 0x2dc95
leaq -0xaa0(%rip), %rcx      # 0x13c13
movq %rcx, 0x10(%r13)
movq %rax, 0x8(%r13)
leaq -0x688(%rip), %rax      # 0x1403a
jmp 0x145e2
movl $0x50, %edi
callq 0x2dc95
movq %rax, %r13
movl %r15d, 0x38(%rax)
movl %ebp, 0x3c(%rax)
movl %ebx, 0x40(%rax)
movl $0x30, %edi
callq 0x2dc95
leaq -0xadc(%rip), %rcx      # 0x13c13
movq %rcx, 0x10(%r13)
movq %rax, 0x8(%r13)
leaq -0x615(%rip), %rax      # 0x140e9
movq %rax, 0x18(%r13)
leaq -0x5b3(%rip), %rax      # 0x14156
movq %rax, 0x20(%r13)
jmp 0x145e6