// File: /workspace/github_c_makefile_star2_O3/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 0x79d2e(%rip), %rsi     # 0x8e2fb
cmoveq %rsi, %r14
movq %r14, %rdi
callq 0x209d6
testl %eax, %eax
je 0x146a2
leaq 0x79c94(%rip), %rsi     # 0x8e27c
movq %r14, %rdi
callq 0x209d6
testl %eax, %eax
je 0x146b1
leaq 0x79c82(%rip), %rsi     # 0x8e281
movq %r14, %rdi
callq 0x209d6
testl %eax, %eax
je 0x146d7
leaq 0xab77a(%rip), %rsi     # 0xbfd90
movq %r14, %rdi
movl $0x5, %edx
callq 0x22f6f
testl %eax, %eax
js 0x146f6
movl $0x50, %edi
callq 0x2dff4
movq %rax, %r13
movl %r15d, 0x38(%rax)
movl %ebp, 0x3c(%rax)
movl %ebx, 0x40(%rax)
movl $0x30, %edi
callq 0x2dff4
leaq -0x9b0(%rip), %rcx      # 0x13ca3
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      # 0x1454a
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 0x146c1
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 0x13638
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 0x14220
leaq 0x79b89(%rip), %rsi     # 0x8e286
movq %r14, %rdi
callq 0x209d6
testl %eax, %eax
je 0x14735
leaq 0x7d2fc(%rip), %rsi     # 0x91a0c
movq %r14, %rdi
callq 0x209d6
testl %eax, %eax
je 0x14771
leaq 0x79b67(%rip), %rdi     # 0x8e28a
xorl %r13d, %r13d
movq %r14, %rsi
xorl %eax, %eax
callq 0x26e94
jmp 0x14690
movl $0x50, %edi
callq 0x2dff4
movq %rax, %r13
movl %r15d, 0x38(%rax)
movl %ebp, 0x3c(%rax)
movl %ebx, 0x40(%rax)
movl $0x30, %edi
callq 0x2dff4
leaq -0xaba(%rip), %rcx      # 0x13ca3
movq %rcx, 0x10(%r13)
movq %rax, 0x8(%r13)
leaq -0x677(%rip), %rax      # 0x140f5
jmp 0x1468c
movl $0x50, %edi
callq 0x2dff4
movq %rax, %r13
movl %r15d, 0x38(%rax)
movl %ebp, 0x3c(%rax)
movl %ebx, 0x40(%rax)
movl $0x30, %edi
callq 0x2dff4
leaq -0xaf6(%rip), %rcx      # 0x13ca3
movq %rcx, 0x10(%r13)
movq %rax, 0x8(%r13)
leaq -0x604(%rip), %rax      # 0x141a4
movq %rax, 0x18(%r13)
leaq -0x5a2(%rip), %rax      # 0x14211
movq %rax, 0x20(%r13)
jmp 0x14690