// File: /workspace/github_c_makefile_star2_O2/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 0x6b960(%rip), %rsi     # 0x7d29b
cmoveq %rsi, %r14
movq %r14, %rdi
callq 0x1cd23
testl %eax, %eax
je 0x119b1
leaq 0x6b8ca(%rip), %rsi     # 0x7d21c
movq %r14, %rdi
callq 0x1cd23
testl %eax, %eax
je 0x119c0
leaq 0x6b8bc(%rip), %rsi     # 0x7d221
movq %r14, %rdi
callq 0x1cd23
testl %eax, %eax
je 0x119e4
leaq 0xa2418(%rip), %rsi     # 0xb3d90
pushq $0x5
popq %rdx
movq %r14, %rdi
callq 0x1ebb7
testl %eax, %eax
js 0x11a03
movl %r15d, %edi
movl %ebp, %esi
movl %ebx, %edx
movq 0x10(%rsp), %rcx
movl 0xc(%rsp), %r8d
movsd 0x18(%rsp), %xmm0
movq %r14, %r9
movsd 0x20(%rsp), %xmm1
callq 0x11861
jmp 0x11a5b
movl %r15d, %edi
movl %ebp, %esi
movl %ebx, %edx
movq %r12, %rcx
xorl %r8d, %r8d
jmp 0x119ce
pushq $0x1
popq %r8
movl %r15d, %edi
movl %ebp, %esi
movl %ebx, %edx
movq %r12, %rcx
movl %r13d, %r9d
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10b00
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 0x11677
leaq 0x6b81c(%rip), %rsi     # 0x7d226
movq %r14, %rdi
callq 0x1cd23
testl %eax, %eax
je 0x11a3e
leaq 0x6eeef(%rip), %rsi     # 0x8090c
movq %r14, %rdi
callq 0x1cd23
testl %eax, %eax
je 0x11a6a
leaq 0x6b7fa(%rip), %rdi     # 0x7d22a
xorl %ebx, %ebx
movq %r14, %rsi
xorl %eax, %eax
callq 0x223fb
jmp 0x11a58
movl %r15d, %edi
movl %ebp, %esi
movl %ebx, %edx
callq 0x11157
movq %rax, %rbx
leaq -0x4ba(%rip), %rax      # 0x1159a
movq %rax, 0x18(%rbx)
movq %rbx, %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
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x115e2