// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/match/sfx-sain.c
// Function: gt_sain_assignSstarlength
static void gt_sain_assignSstarlength(GtSainseq *sainseq,
                                      GtUsainindextype *lentab)
{
  switch (sainseq->seqtype)
  {
    case GT_SAIN_PLAINSEQ:
      gt_sain_PLAINSEQ_assignSstarlength(sainseq,sainseq->seq.plainseq,lentab);
      break;
    case GT_SAIN_ENCSEQ:
      gt_sain_ENCSEQ_assignSstarlength(sainseq,sainseq->seq.encseq,lentab);
      break;
    case GT_SAIN_INTSEQ:
      gt_sain_INTSEQ_assignSstarlength(sainseq,sainseq->seq.array,lentab);
      break;
    case GT_SAIN_BARE_ENCSEQ:
      gt_sain_BARE_ENCSEQ_assignSstarlength(sainseq,sainseq->seq.plainseq,
                                            lentab);
      break;
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl 0x50(%rdi), %eax
cmpq $0x3, %rax
ja 0x1f3abd
movq %rdi, %r15
leaq 0x1c57fd(%rip), %rcx    # 0x3b9068
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq (%r15), %rbx
movq %rbx, %rdx
addq $0x100, %rdx            # imm = 0x100
movl $0x1, %eax
subl %ebx, %eax
leal -0x1(%rbx), %ecx
addq 0x38(%r15), %rcx
movb $0x1, %r10b
movl %ebx, %edi
movl %edi, %r8d
movq %rdx, %r9
leal -0x1(%r8), %edi
movzbl (%rcx), %edx
cmpq %rdx, %r9
jbe 0x1f38ab
movb $0x1, %r9b
jmp 0x1f38c1
sete %r11b
movl %r10d, %r9d
andb %r11b, %r9b
notb %r10b
orb %r11b, %r10b
testb $0x1, %r10b
je 0x1f38c6
movl %ebx, %r8d
jmp 0x1f38da
cmpl %ebx, %edi
jae 0x1f3ad1
addl %eax, %ebx
movl %r8d, %r10d
shrl %r10d
movl %ebx, (%rsi,%r10,4)
incl %eax
decq %rcx
movl %r8d, %ebx
movl %r9d, %r10d
testl %edi, %edi
jne 0x1f3894
jmp 0x1f3abd
movq %rsi, 0x10(%rsp)
movq (%r15), %r12
movq 0x38(%r15), %rdi
movq %r12, %r13
addq $0x100, %r13            # imm = 0x100
movl 0x40(%r15), %eax
movl %eax, %ecx
orl $0x1, %ecx
movl %eax, %esi
decl %esi
testb $0x1, %al
cmovel %ecx, %esi
xorl %edx, %edx
callq 0xe91b2
movq %rax, 0x8(%rsp)
movl (%r15), %r15d
movl $0x1, %ebp
subl %r15d, %ebp
decl %r15d
movb $0x1, %r14b
movq %r13, %rbx
leal 0x1(%r15), %eax
movl %eax, 0x4(%rsp)
movq 0x8(%rsp), %rdi
callq 0xe8186
leal 0x100(%r15), %ecx
cmpb $-0x2, %al
movzbl %al, %r13d
cmovaeq %rcx, %r13
cmpq %rbx, %r13
jae 0x1f3962
movb $0x1, %al
jmp 0x1f3976
sete %cl
movl %r14d, %eax
andb %cl, %al
notb %r14b
orb %cl, %r14b
testb $0x1, %r14b
je 0x1f397b
movl %r12d, %esi
jmp 0x1f3998
cmpl %r12d, %r15d
jae 0x1f3acc
addl %ebp, %r12d
movl 0x4(%rsp), %esi
movl %esi, %ecx
shrl %ecx
movq 0x10(%rsp), %rdx
movl %r12d, (%rdx,%rcx,4)
incl %ebp
movl %esi, %r12d
movl %eax, %r14d
addl $-0x1, %r15d
jb 0x1f3933
movq 0x8(%rsp), %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xe9204
movq (%r15), %rbx
movq %rbx, %rdx
addq $0x100, %rdx            # imm = 0x100
movl $0x1, %eax
subl %ebx, %eax
leal -0x1(%rbx), %ecx
addq 0x38(%r15), %rcx
movb $0x1, %r10b
movl %ebx, %edi
movl %edi, %r8d
movq %rdx, %r9
leal -0x1(%r8), %edi
movzbl (%rcx), %r11d
leal 0xff(%r8), %edx
cmpq $0xfe, %r11
cmovbq %r11, %rdx
cmpq %r9, %rdx
jae 0x1f3a08
movb $0x1, %r9b
jmp 0x1f3a1e
sete %r11b
movl %r10d, %r9d
andb %r11b, %r9b
notb %r10b
orb %r11b, %r10b
testb $0x1, %r10b
je 0x1f3a23
movl %ebx, %r8d
jmp 0x1f3a37
cmpl %ebx, %edi
jae 0x1f3ad6
addl %eax, %ebx
movl %r8d, %r10d
shrl %r10d
movl %ebx, (%rsi,%r10,4)
incl %eax
decq %rcx
movl %r8d, %ebx
movl %r9d, %r10d
testl %edi, %edi
jne 0x1f39de
jmp 0x1f3abd
movq (%r15), %rbx
movq %rbx, %rdx
addq $0x100, %rdx            # imm = 0x100
movl $0x1, %eax
subl %ebx, %eax
leal -0x1(%rbx), %ecx
shlq $0x2, %rcx
addq 0x38(%r15), %rcx
movb $0x1, %r10b
movl %ebx, %edi
movl %edi, %r8d
movq %rdx, %r9
leal -0x1(%r8), %edi
movl (%rcx), %edx
cmpq %rdx, %r9
jbe 0x1f3a82
movb $0x1, %r9b
jmp 0x1f3a98
sete %r11b
movl %r10d, %r9d
andb %r11b, %r9b
notb %r10b
orb %r11b, %r10b
testb $0x1, %r10b
je 0x1f3a9d
movl %ebx, %r8d
jmp 0x1f3aad
cmpl %ebx, %edi
jae 0x1f3adb
addl %eax, %ebx
movl %r8d, %r10d
shrl %r10d
movl %ebx, (%rsi,%r10,4)
incl %eax
addq $-0x4, %rcx
movl %r8d, %ebx
movl %r9d, %r10d
testl %edi, %edi
jne 0x1f3a6c
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x7acfd
callq 0x7ad36
callq 0x7ac8b
callq 0x7acc4