// File: /workspace/github_c_makefile_star2_O0/icebert[P]pblat/lib/chain.c
// Function: chainReadBlocks
void chainReadBlocks(struct lineFile *lf, struct chain *chain)
/* Read in chain blocks from file. */
{
char *row[3];
int q,t;

/* Now read in block list. */
q = chain->qStart;
t = chain->tStart;
for (;;)
    {
    int wordCount = lineFileChop(lf, row);
    int size = lineFileNeedNum(lf, row, 0);
    struct cBlock *b;
    AllocVar(b);
    slAddHead(&chain->blockList, b);
    b->qStart = q;
    b->tStart = t;
    q += size;
    t += size;
    b->qEnd = q;
    b->tEnd = t;
    if (wordCount == 1)
        break;
    else if (wordCount < 3)
        errAbort("Expecting 1 or 3 words line %d of %s\n", 
		lf->lineIx, lf->fileName);
    t += lineFileNeedNum(lf, row, 1);
    q += lineFileNeedNum(lf, row, 2);
    }
if (q != chain->qEnd)
    errAbort("q end mismatch %d vs %d line %d of %s\n", 
    	q, chain->qEnd, lf->lineIx, lf->fileName);
if (t != chain->tEnd)
    errAbort("t end mismatch %d vs %d line %d of %s\n", 
    	t, chain->tEnd, lf->lineIx, lf->fileName);
slReverse(&chain->blockList);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0x40(%rax), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0x38(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x3, %edx
callq 0x3c920
movl %eax, -0x3c(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
xorl %edx, %edx
callq 0x3cc60
movl %eax, -0x40(%rbp)
movl $0x28, %edi
callq 0x40c50
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
movq -0x48(%rbp), %rsi
callq 0x27ff0
movl -0x34(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, 0x10(%rax)
movl -0x38(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, 0x8(%rax)
movl -0x40(%rbp), %eax
addl -0x34(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x40(%rbp), %eax
addl -0x38(%rbp), %eax
movl %eax, -0x38(%rbp)
movl -0x34(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, 0x14(%rax)
movl -0x38(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, 0xc(%rax)
cmpl $0x1, -0x3c(%rbp)
jne 0x2885c
jmp 0x288b6
cmpl $0x3, -0x3c(%rbp)
jge 0x2887f
movq -0x8(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xb124b(%rip), %rdi     # 0xd9ac3
movb $0x0, %al
callq 0x35d40
jmp 0x28881
movq -0x8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x1, %edx
callq 0x3cc60
addl -0x38(%rbp), %eax
movl %eax, -0x38(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
movl $0x2, %edx
callq 0x3cc60
addl -0x34(%rbp), %eax
movl %eax, -0x34(%rbp)
jmp 0x287d4
movl -0x34(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x44(%rcx), %eax
je 0x288e9
movl -0x34(%rbp), %esi
movq -0x10(%rbp), %rax
movl 0x44(%rax), %edx
movq -0x8(%rbp), %rax
movl 0x28(%rax), %ecx
movq -0x8(%rbp), %rax
movq 0x8(%rax), %r8
leaq 0xb1207(%rip), %rdi     # 0xd9ae9
movb $0x0, %al
callq 0x35d40
movl -0x38(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x28(%rcx), %eax
je 0x2891c
movl -0x38(%rbp), %esi
movq -0x10(%rbp), %rax
movl 0x28(%rax), %edx
movq -0x8(%rbp), %rax
movl 0x28(%rax), %ecx
movq -0x8(%rbp), %rax
movq 0x8(%rax), %r8
leaq 0xb11fb(%rip), %rdi     # 0xd9b10
movb $0x0, %al
callq 0x35d40
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x2aad0
addq $0x50, %rsp
popq %rbp
retq
nop