// File: /workspace/github_c_makefile_star2_O3/icebert[P]pblat/blatSrc/blat.c
// Function: performBigblat
void* performBigblat(void* args)
{
    int             id=*((int*)(((void**)args)[0]));
    int             queryCount=*((int*)(((void**)args)[1]));
    char            **queryFiles=(char**)(((void**)args)[2]);
    struct lineFile *lf=(struct lineFile *)(((void**)args)[3]);
    struct genoFind **gfs=(struct genoFind**)(((void**)args)[4]);
    struct hash     *t3Hash=(struct hash*)(((void**)args)[5]);
    int             isRc=*((int*)(((void**)args)[6]));
    boolean         qIsDna=*((boolean*)(((void**)args)[7]));
    FILE            *out=(FILE*)(((void**)args)[8]);
    boolean         transQuery=*((boolean*)(((void**)args)[9]));
    boolean         forceLower=*((boolean*)(((void**)args)[10]));
    boolean         forceUpper=*((boolean*)(((void**)args)[11]));
    boolean         maskUpper=*((boolean*)(((void**)args)[12]));
    boolean         toggle=*((boolean*)(((void**)args)[13]));
    struct gfOutput *gvo=(struct gfOutput *)(((void**)args)[14]);

    int             i;
    struct dnaSeq   trimmedSeq;

    unsigned        faFastBufSize = 0;
    DNA             *faFastBuf = NULL;

    ZeroVar(&trimmedSeq);
//for (i=0; i<queryCount; ++i)
    {
        aaSeq qSeq;
        qSeq.name=(char*)malloc(sizeof(char)*512);

        while (queryCount-- && faMixedSpeedReadNext(lf, &qSeq.dna, &qSeq.size, &qSeq.name, &faFastBuf, &faFastBufSize))
        {
            dotOut();
            /* Put it into right case and optionally mask on case. */
            if (forceLower)
                toLowerN(qSeq.dna, qSeq.size);
            else if (forceUpper)
                toUpperN(qSeq.dna, qSeq.size);
            else if (maskUpper)
            {
                if (toggle)
                    toggleCase(qSeq.dna, qSeq.size);
                upperToN(qSeq.dna, qSeq.size);
            }
            if (qSeq.size > qWarnSize)
            {
                warn("Query sequence %s has size %d, it might take a while.",
                     qSeq.name, qSeq.size);
            }
            trimSeq(&qSeq, &trimmedSeq);
            if (transQuery)
                transTripleSearch(&trimmedSeq, gfs, t3Hash, isRc, qIsDna, out, gvo);
            else
                tripleSearch(&trimmedSeq, gfs, t3Hash, isRc, out, gvo);
            gfOutputQuery(gvo, out);
        }
        free(qSeq.name);
        faFreeFastBuf(&faFastBuf, &faFastBufSize);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq 0x8(%rdi), %rax
movq 0x18(%rdi), %rcx
movq %rcx, 0x68(%rsp)
movl (%rax), %r15d
movq 0x20(%rdi), %rax
movq %rax, 0x58(%rsp)
movq 0x28(%rdi), %rax
movq %rax, 0x50(%rsp)
movq 0x30(%rdi), %rax
movl (%rax), %eax
movl %eax, 0x10(%rsp)
movq 0x38(%rdi), %rax
movl (%rax), %eax
movl %eax, 0x24(%rsp)
movq 0x40(%rdi), %r13
movq 0x48(%rdi), %rax
movl (%rax), %ebp
movq 0x50(%rdi), %rax
movl (%rax), %ebx
movq 0x58(%rdi), %rax
movl (%rax), %eax
movl %eax, 0x20(%rsp)
movq 0x60(%rdi), %rax
movl (%rax), %eax
movl %eax, 0x1c(%rsp)
movq 0x68(%rdi), %rax
movl (%rax), %eax
movl %eax, 0x18(%rsp)
movq 0x70(%rdi), %r12
movl $0x0, 0x14(%rsp)
xorl %eax, %eax
movq %rax, 0x60(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x70(%rsp)
movaps %xmm0, 0x80(%rsp)
movq %rax, 0x90(%rsp)
movl $0x200, %edi            # imm = 0x200
callq 0x69d0
movq %rax, 0x30(%rsp)
testl %r15d, %r15d
je 0x9331
leaq 0x70(%rsp), %r14
movq 0x68(%rsp), %rdi
leaq 0x38(%rsp), %rsi
leaq 0x40(%rsp), %rdx
leaq 0x30(%rsp), %rcx
leaq 0x60(%rsp), %r8
leaq 0x14(%rsp), %r9
callq 0x27c4e
testl %eax, %eax
je 0x932c
callq 0x889d
testl %ebx, %ebx
je 0x925a
movq 0x38(%rsp), %rdi
movl 0x40(%rsp), %esi
callq 0x21fca
jmp 0x929b
cmpl $0x0, 0x20(%rsp)
je 0x9271
movq 0x38(%rsp), %rdi
movl 0x40(%rsp), %esi
callq 0x21f96
jmp 0x929b
cmpl $0x0, 0x1c(%rsp)
je 0x929b
cmpl $0x0, 0x18(%rsp)
je 0x928d
movq 0x38(%rsp), %rdi
movl 0x40(%rsp), %esi
callq 0x21ffe
movq 0x38(%rsp), %rdi
movl 0x40(%rsp), %esi
callq 0x258eb
movl 0x40(%rsp), %edx
cmpl $0x4c4b41, %edx         # imm = 0x4C4B41
jl 0x92ba
movq 0x30(%rsp), %rsi
leaq 0x8428a(%rip), %rdi     # 0x8d53d
xorl %eax, %eax
callq 0x26bea
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0x8988
testl %ebp, %ebp
je 0x92ec
movq %r12, (%rsp)
movq %r14, %rdi
movq 0x58(%rsp), %rsi
movq 0x50(%rsp), %rdx
movl 0x10(%rsp), %ecx
movl 0x24(%rsp), %r8d
callq 0x90c9
jmp 0x9315
movl $0x1, 0x28(%r12)
movl 0xb6470(%rip), %r8d     # 0xbf76c
movq 0x58(%rsp), %rdi
movq %r14, %rsi
movq 0x50(%rsp), %rdx
movl 0x10(%rsp), %ecx
movq %r12, %r9
callq 0x1078b
decl %r15d
movq %r12, %rdi
movq %r13, %rsi
callq 0x147bc
testl %r15d, %r15d
jne 0x9216
movq 0x30(%rsp), %rax
movq %rax, %rdi
callq 0x68a0
leaq 0x60(%rsp), %rdi
leaq 0x14(%rsp), %rsi
callq 0x27927
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq