// File: /workspace/github_c_makefile_star2_O0/icebert[P]pblat/jkOwnLib/genoFind.c
// Function: gfNewEmpty
static struct genoFind *gfNewEmpty(int minMatch, int maxGap, 
	int tileSize, int stepSize, int maxPat,
	char *oocFile, boolean isPep, boolean allowOneMismatch)
/* Return an empty pattern space. oocFile parameter may be NULL*/
{
struct genoFind *gf;
int tileSpaceSize;
int segSize = 0;

gfCheckTileSize(tileSize, isPep);
if (stepSize == 0)
    stepSize = tileSize;
AllocVar(gf);
if (isPep)
    {
    if (tileSize > 5)
        {
	segSize = tileSize - 5;
	}
    tileSpaceSize = gf->tileSpaceSize = gfPowerOf20(tileSize-segSize);
    }
else
    {
    int seedBitSize;
    if (tileSize > 12)
        {
	segSize = tileSize - 12;
	}
    seedBitSize = (tileSize-segSize)*2;
    tileSpaceSize = gf->tileSpaceSize = (1<<seedBitSize);
    gf->tileMask = tileSpaceSize-1;
    }
gf->segSize = segSize;
gf->tileSize = tileSize;
gf->stepSize = stepSize;
gf->isPep = isPep;
gf->allowOneMismatch = allowOneMismatch;
if (segSize > 0)
    {
    gf->endLists = needHugeZeroedMem(tileSpaceSize * sizeof(gf->endLists[0]));
    maxPat = BIGNUM;	/* Don't filter out overused on the big ones.  It is
                         * unnecessary and would be quite complex. */
    }
else
    {
    gf->lists = needHugeZeroedMem(tileSpaceSize * sizeof(gf->lists[0]));
    }
gf->listSizes = needHugeZeroedMem(tileSpaceSize * sizeof(gf->listSizes[0]));
gf->minMatch = minMatch;
gf->maxGap = maxGap;
gf->maxPat = maxPat;
if (oocFile != NULL)
    {
    if (segSize > 0)
        errAbort("Don't yet support ooc on large tile sizes");
    oocMaskCounts(oocFile, gf->listSizes, tileSize, maxPat);
    oocMaskSimpleRepeats(gf->listSizes, tileSize, maxPat);
    }
return gf;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movl 0x18(%rbp), %eax
movl 0x10(%rbp), %eax
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movl %edx, -0xc(%rbp)
movl %ecx, -0x10(%rbp)
movl %r8d, -0x14(%rbp)
movq %r9, -0x20(%rbp)
movl $0x0, -0x30(%rbp)
movl -0xc(%rbp), %edi
movl 0x10(%rbp), %esi
callq 0xcbf0
cmpl $0x0, -0x10(%rbp)
jne 0xd100
movl -0xc(%rbp), %eax
movl %eax, -0x10(%rbp)
movl $0x58, %edi
callq 0x40c50
movq %rax, -0x28(%rbp)
cmpl $0x0, 0x10(%rbp)
je 0xd13a
cmpl $0x5, -0xc(%rbp)
jle 0xd123
movl -0xc(%rbp), %eax
subl $0x5, %eax
movl %eax, -0x30(%rbp)
movl -0xc(%rbp), %edi
subl -0x30(%rbp), %edi
callq 0xcbc0
movq -0x28(%rbp), %rcx
movl %eax, 0x14(%rcx)
movl %eax, -0x2c(%rbp)
jmp 0xd175
cmpl $0xc, -0xc(%rbp)
jle 0xd149
movl -0xc(%rbp), %eax
subl $0xc, %eax
movl %eax, -0x30(%rbp)
movl -0xc(%rbp), %eax
subl -0x30(%rbp), %eax
shll %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
movq -0x28(%rbp), %rcx
movl %eax, 0x14(%rcx)
movl %eax, -0x2c(%rbp)
movl -0x2c(%rbp), %ecx
subl $0x1, %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x18(%rax)
movl -0x30(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x2c(%rax)
movl -0xc(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x10(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x10(%rax)
movl 0x10(%rbp), %eax
movb %al, %cl
movq -0x28(%rbp), %rax
movb %cl, 0x28(%rax)
movl 0x18(%rbp), %eax
movb %al, %cl
movq -0x28(%rbp), %rax
movb %cl, 0x29(%rax)
cmpl $0x0, -0x30(%rbp)
jle 0xd1d2
movslq -0x2c(%rbp), %rdi
shlq $0x3, %rdi
callq 0x40b60
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x50(%rax)
movl $0x3fffffff, -0x14(%rbp) # imm = 0x3FFFFFFF
jmp 0xd1ea
movslq -0x2c(%rbp), %rdi
shlq $0x3, %rdi
callq 0x40b60
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x48(%rax)
movslq -0x2c(%rbp), %rdi
shlq $0x2, %rdi
callq 0x40b60
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x38(%rax)
movl -0x4(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x8(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0x14(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, (%rax)
cmpq $0x0, -0x20(%rbp)
je 0xd264
cmpl $0x0, -0x30(%rbp)
jle 0xd23a
leaq 0xca963(%rip), %rdi     # 0xd7b96
movb $0x0, %al
callq 0x35d40
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x38(%rax), %rsi
movl -0xc(%rbp), %edx
movl -0x14(%rbp), %ecx
callq 0x18100
movq -0x28(%rbp), %rax
movq 0x38(%rax), %rdi
movl -0xc(%rbp), %esi
movl -0x14(%rbp), %edx
callq 0x18250
movq -0x28(%rbp), %rax
addq $0x40, %rsp
popq %rbp
retq
nop