// File: /workspace/github_c_makefile_star2_O0/icebert[P]pblat/lib/chain.c
// Function: chainReadChainLine
struct chain *chainReadChainLine(struct lineFile *lf)
/* Read line that starts with chain.  Allocate memory
 * and fill in values.  However don't read link lines. */
{
char *row[13];
int wordCount;
struct chain *chain;

wordCount = lineFileChop(lf, row);
if (wordCount == 0)
    return NULL;
if (wordCount < 12)
    errAbort("Expecting at least 12 words line %d of %s", 
    	lf->lineIx, lf->fileName);
if (!sameString(row[0], "chain"))
    errAbort("Expecting 'chain' line %d of %s", lf->lineIx, lf->fileName);
AllocVar(chain);
chain->score = atof(row[1]);
chain->tName = cloneString(row[2]);
chain->tSize = lineFileNeedNum(lf, row, 3);
if (wordCount >= 13)
    chain->id = lineFileNeedNum(lf, row, 12);
else
    chainIdNext(chain);

/* skip tStrand for now, always implicitly + */
chain->tStart = lineFileNeedNum(lf, row, 5);
chain->tEnd = lineFileNeedNum(lf, row, 6);
chain->qName = cloneString(row[7]);
chain->qSize = lineFileNeedNum(lf, row, 8);
chain->qStrand = row[9][0];
chain->qStart = lineFileNeedNum(lf, row, 10);
chain->qEnd = lineFileNeedNum(lf, row, 11);
if (chain->qStart >= chain->qEnd || chain->tStart >= chain->tEnd)
    errAbort("End before start line %d of %s", lf->lineIx, lf->fileName);
if (chain->qStart < 0 || chain->tStart < 0)
    errAbort("Start before zero line %d of %s", lf->lineIx, lf->fileName);
if (chain->qEnd > chain->qSize || chain->tEnd > chain->tSize)
    errAbort("Past end of sequence line %d of %s", lf->lineIx, lf->fileName);
return chain;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0xd, %edx
callq 0x3c920
movl %eax, -0x84(%rbp)
cmpl $0x0, -0x84(%rbp)
jne 0x2851d
movq $0x0, -0x8(%rbp)
jmp 0x28796
cmpl $0xc, -0x84(%rbp)
jge 0x28543
movq -0x10(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xb14d5(%rip), %rdi     # 0xd9a11
movb $0x0, %al
callq 0x35d40
movq -0x80(%rbp), %rdi
leaq 0xb14ed(%rip), %rsi     # 0xd9a3b
callq 0x6a40
cmpl $0x0, %eax
je 0x28575
movq -0x10(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xb14d3(%rip), %rdi     # 0xd9a41
movb $0x0, %al
callq 0x35d40
movl $0x50, %edi
callq 0x40c50
movq %rax, -0x90(%rbp)
movq -0x78(%rbp), %rdi
callq 0x6900
movq -0x90(%rbp), %rax
movsd %xmm0, 0x10(%rax)
movq -0x70(%rbp), %rdi
callq 0x2a450
movq %rax, %rcx
movq -0x90(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x3, %edx
callq 0x3cc60
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x20(%rax)
cmpl $0xd, -0x84(%rbp)
jl 0x285f9
movq -0x10(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0xc, %edx
callq 0x3cc60
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x48(%rax)
jmp 0x28605
movq -0x90(%rbp), %rdi
callq 0x28200
movq -0x10(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x5, %edx
callq 0x3cc60
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x24(%rax)
movq -0x10(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x6, %edx
callq 0x3cc60
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x48(%rbp), %rdi
callq 0x2a450
movq %rax, %rcx
movq -0x90(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x8, %edx
callq 0x3cc60
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x38(%rax)
movq -0x38(%rbp), %rax
movb (%rax), %cl
movq -0x90(%rbp), %rax
movb %cl, 0x3c(%rax)
movq -0x10(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0xa, %edx
callq 0x3cc60
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x40(%rax)
movq -0x10(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0xb, %edx
callq 0x3cc60
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x44(%rax)
movq -0x90(%rbp), %rax
movl 0x40(%rax), %eax
movq -0x90(%rbp), %rcx
cmpl 0x44(%rcx), %eax
jge 0x286ee
movq -0x90(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x90(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jl 0x2870b
movq -0x10(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xb135d(%rip), %rdi     # 0xd9a61
movb $0x0, %al
callq 0x35d40
movq -0x90(%rbp), %rax
cmpl $0x0, 0x40(%rax)
jl 0x28725
movq -0x90(%rbp), %rax
cmpl $0x0, 0x24(%rax)
jge 0x28742
movq -0x10(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xb1345(%rip), %rdi     # 0xd9a80
movb $0x0, %al
callq 0x35d40
movq -0x90(%rbp), %rax
movl 0x44(%rax), %eax
movq -0x90(%rbp), %rcx
cmpl 0x38(%rcx), %eax
jg 0x2876e
movq -0x90(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x90(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jle 0x2878b
movq -0x10(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xb131c(%rip), %rdi     # 0xd9aa0
movb $0x0, %al
callq 0x35d40
movq -0x90(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)