// File: /workspace/github_c_makefile_star2_O0/icebert[P]pblat/lib/psl.c
// Function: pslCheck2
int pslCheck2(unsigned opts, char *pslDesc, FILE* out, struct psl* psl)
/* Validate a PSL for consistency.  pslDesc is printed the error messages to
 * file out (open /dev/null to discard). Return count of errors.  Option
 * PSL_CHECK_IGNORE_INSERT_CNTS doesn't validate problems insert counts fields
 * in each PSL.  Useful because protein PSL doesn't seen to compute these in a
 * consistent way.
 */
{
static char* VALID_STRANDS[] = {
    "+", "-", "++", "+-", "-+", "--", NULL
};
int i, errCount = 0;
int tBlockSizeMult = pslIsProtein(psl) ? 3 : 1;

/* check strand value */
for (i = 0; VALID_STRANDS[i] != NULL; i++)
    {
    if (strcmp(psl->strand, VALID_STRANDS[i]) == 0)
        break;
    }
if (VALID_STRANDS[i] == NULL)
    chkError(pslDesc, out, psl, &errCount,
             "\tinvalid PSL strand: \"%s\"\n", psl->strand);

/* check query */
chkRanges(pslDesc, out, psl, psl->qName, "query", 'q', pslQStrand(psl), psl->qSize, psl->qStart, psl->qEnd,
          psl->qStarts, 1, &errCount);
if ((opts & PSL_CHECK_IGNORE_INSERT_CNTS) == 0)
    chkInsertCounts(pslDesc, out, psl, psl->qName, 'q', psl->qStarts, psl->qNumInsert, psl->qBaseInsert, &errCount);

/* check target */
chkRanges(pslDesc, out, psl, psl->tName, "target", 't', pslTStrand(psl), psl->tSize, psl->tStart, psl->tEnd,
          psl->tStarts, tBlockSizeMult, &errCount);
if ((opts & PSL_CHECK_IGNORE_INSERT_CNTS) == 0)
    chkInsertCounts(pslDesc, out, psl, psl->tName, 't', psl->tStarts, psl->tNumInsert, psl->tBaseInsert, &errCount);

return errCount;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xb0, %rsp
movl %edi, -0x24(%rbp)
movq %rsi, -0x30(%rbp)
movq %rdx, -0x38(%rbp)
movq %rcx, -0x40(%rbp)
movl $0x0, -0x48(%rbp)
movq -0x40(%rbp), %rdi
callq 0x4f750
movl %eax, %edx
movl $0x1, %eax
movl $0x3, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
movl %eax, -0x4c(%rbp)
movl $0x0, -0x44(%rbp)
movslq -0x44(%rbp), %rcx
leaq 0xb5b88(%rip), %rax     # 0x106e00
cmpq $0x0, (%rax,%rcx,8)
je 0x512af
movq -0x40(%rbp), %rdi
addq $0x28, %rdi
movslq -0x44(%rbp), %rcx
leaq 0xb5b6e(%rip), %rax     # 0x106e00
movq (%rax,%rcx,8), %rsi
callq 0x6a40
cmpl $0x0, %eax
jne 0x512a2
jmp 0x512af
jmp 0x512a4
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x5126d
movslq -0x44(%rbp), %rcx
leaq 0xb5b46(%rip), %rax     # 0x106e00
cmpq $0x0, (%rax,%rcx,8)
jne 0x512e7
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x40(%rbp), %r9
addq $0x28, %r9
leaq -0x48(%rbp), %rcx
leaq 0x8cb87(%rip), %r8      # 0xdde67
movb $0x0, %al
callq 0x514f0
movq -0x30(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x40(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x40(%rbp), %rdi
callq 0x517f0
movq -0x70(%rbp), %rdi
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq -0x58(%rbp), %rcx
movb %al, %r15b
movq -0x40(%rbp), %rax
movl 0x38(%rax), %r14d
movq -0x40(%rbp), %rax
movl 0x3c(%rax), %ebx
movq -0x40(%rbp), %rax
movl 0x40(%rax), %r11d
movq -0x40(%rbp), %rax
movq 0x68(%rax), %r10
leaq 0x869e0(%rip), %r8      # 0xd7d2d
movl $0x71, %r9d
leaq -0x48(%rbp), %rax
movsbl %r15b, %r15d
movl %r15d, (%rsp)
movl %r14d, 0x8(%rsp)
movl %ebx, 0x10(%rsp)
movl %r11d, 0x18(%rsp)
movq %r10, 0x20(%rsp)
movl $0x1, 0x28(%rsp)
movq %rax, 0x30(%rsp)
callq 0x515b0
movl -0x24(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x513d8
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x40(%rbp), %rax
movq 0x30(%rax), %rcx
movq -0x40(%rbp), %rax
movq 0x68(%rax), %r9
movq -0x40(%rbp), %rax
movl 0x18(%rax), %r11d
movq -0x40(%rbp), %rax
movl 0x1c(%rax), %r10d
movl $0x71, %r8d
leaq -0x48(%rbp), %rax
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x51810
movq -0x30(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x40(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x40(%rbp), %rdi
callq 0x51950
movq -0x90(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
movq -0x78(%rbp), %rcx
movb %al, %r12b
movq -0x40(%rbp), %rax
movl 0x50(%rax), %r15d
movq -0x40(%rbp), %rax
movl 0x54(%rax), %r14d
movq -0x40(%rbp), %rax
movl 0x58(%rax), %ebx
movq -0x40(%rbp), %rax
movq 0x70(%rax), %r11
movl -0x4c(%rbp), %r10d
leaq 0x8ca34(%rip), %r8      # 0xdde82
movl $0x74, %r9d
leaq -0x48(%rbp), %rax
movsbl %r12b, %r12d
movl %r12d, (%rsp)
movl %r15d, 0x8(%rsp)
movl %r14d, 0x10(%rsp)
movl %ebx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movl %r10d, 0x28(%rsp)
movq %rax, 0x30(%rsp)
callq 0x515b0
movl -0x24(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x514d6
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x40(%rbp), %rax
movq 0x48(%rax), %rcx
movq -0x40(%rbp), %rax
movq 0x70(%rax), %r9
movq -0x40(%rbp), %rax
movl 0x20(%rax), %r11d
movq -0x40(%rbp), %rax
movl 0x24(%rax), %r10d
movl $0x74, %r8d
leaq -0x48(%rbp), %rax
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x51810
movl -0x48(%rbp), %eax
addq $0xb0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)