// File: /workspace/github_c_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %rbx
subq $0x68, %rsp
movq %rdi, %rbx
movq %rsp, %rsi
pushq $0xd
popq %rdx
callq 0x2619f
testl %eax, %eax
je 0x1b1c6
movl %eax, %ebp
cmpl $0xb, %eax
jg 0x1b14c
movl 0x28(%rbx), %esi
movq 0x8(%rbx), %rdx
leaq 0x63a44(%rip), %rdi     # 0x7eb89
xorl %eax, %eax
callq 0x223fb
movq (%rsp), %rdi
leaq 0x63a5c(%rip), %rsi     # 0x7ebb3
callq 0x6a50
testl %eax, %eax
je 0x1b175
movl 0x28(%rbx), %esi
movq 0x8(%rbx), %rdx
leaq 0x63a4b(%rip), %rdi     # 0x7ebb9
xorl %eax, %eax
callq 0x223fb
pushq $0x50
popq %rdi
callq 0x28bb0
movq %rax, %r14
movq %rsp, %r15
movq 0x8(%r15), %rdi
callq 0x6920
movsd %xmm0, 0x10(%r14)
movq 0x10(%r15), %rdi
callq 0x1c306
movq %rax, 0x18(%r14)
pushq $0x3
popq %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x263ca
movl %eax, 0x20(%r14)
cmpl $0xd, %ebp
jl 0x1b1ce
movq %rsp, %rsi
pushq $0xc
popq %rdx
movq %rbx, %rdi
callq 0x263ca
jmp 0x1b1dd
xorl %r14d, %r14d
jmp 0x1b2c9
movl 0x99438(%rip), %eax     # 0xb460c
leal 0x1(%rax), %ecx
movl %ecx, 0x9942f(%rip)     # 0xb460c
movl %eax, 0x48(%r14)
movq %rsp, %r15
pushq $0x5
popq %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x263ca
movl %eax, 0x24(%r14)
pushq $0x6
popq %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x263ca
movl %eax, 0x28(%r14)
movq 0x38(%r15), %rdi
callq 0x1c306
movq %rax, 0x30(%r14)
pushq $0x8
popq %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x263ca
movl %eax, 0x38(%r14)
movq 0x48(%r15), %rax
movb (%rax), %al
movb %al, 0x3c(%r14)
pushq $0xa
popq %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x263ca
movl %eax, 0x40(%r14)
pushq $0xb
popq %rdx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x263ca
movl %eax, 0x44(%r14)
movl 0x40(%r14), %ecx
cmpl %eax, %ecx
jge 0x1b267
movl 0x24(%r14), %eax
cmpl 0x28(%r14), %eax
jl 0x1b280
movl 0x28(%rbx), %esi
movq 0x8(%rbx), %rdx
leaq 0x63964(%rip), %rdi     # 0x7ebd9
xorl %eax, %eax
callq 0x223fb
movl 0x40(%r14), %ecx
testl %ecx, %ecx
js 0x1b28b
cmpl $0x0, 0x24(%r14)
jns 0x1b2a0
movl 0x28(%rbx), %esi
movq 0x8(%rbx), %rdx
leaq 0x6395f(%rip), %rdi     # 0x7ebf8
xorl %eax, %eax
callq 0x223fb
movl 0x44(%r14), %eax
cmpl 0x38(%r14), %eax
jg 0x1b2b4
movl 0x28(%r14), %eax
cmpl 0x20(%r14), %eax
jle 0x1b2c9
movl 0x28(%rbx), %esi
movq 0x8(%rbx), %rdx
leaq 0x63956(%rip), %rdi     # 0x7ec18
xorl %eax, %eax
callq 0x223fb
movq %r14, %rax
addq $0x68, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq