// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/diagbandseed.c
// Function: gt_diagbandseed_plainsequence_init
static void gt_diagbandseed_plainsequence_init(GtDiagbandSeedPlainSequence *ps,
                                          bool s_desc_display,
                                          bool q_desc_display,
                                          const GtEncseq *aencseq,
                                          const GtSequencePartsInfo *aseqranges,
                                          GtUword aidx,
                                          bool with_a_bytestring,
                                          const GtEncseq *bencseq,
                                          const GtSequencePartsInfo *bseqranges,
                                          GtUword bidx,
                                          bool with_b_bytestring)
{
  ps->previous_aseqnum = GT_UWORD_MAX;
  if (s_desc_display && aencseq != NULL &&
      gt_encseq_has_description_support(aencseq))
  {
    ps->a_encseq_for_seq_desc = aencseq;
  } else
  {
    ps->a_encseq_for_seq_desc = NULL;
  }
  if (q_desc_display && bencseq != NULL &&
      gt_encseq_has_description_support(bencseq))
  {
    ps->b_encseq_for_seq_desc = bencseq;
  } else
  {
    ps->b_encseq_for_seq_desc = NULL;
  }
  if (with_a_bytestring)
  {
    ps->a_first_seqnum = gt_sequence_parts_info_start_get(aseqranges,aidx);
    ps->a_first_seqstartpos
      = gt_sequence_parts_info_seqstartpos(aseqranges,ps->a_first_seqnum),
    ps->a_byte_sequence = gt_sequence_parts_info_seq_extract(aencseq,aseqranges,
                                                             aidx);
    ps->a_haswildcards = (gt_encseq_wildcards(aencseq) > 0) ? true : false;
  } else
  {
    ps->a_byte_sequence = NULL;
    GT_SEQORENCSEQ_INIT_ENCSEQ(&ps->aseqorencseq,aencseq);
    ps->a_haswildcards = true;
  }
  if (with_b_bytestring)
  {
    ps->b_first_seqnum = gt_sequence_parts_info_start_get(bseqranges,bidx);
    ps->b_first_seqstartpos
      = gt_sequence_parts_info_seqstartpos(bseqranges,ps->b_first_seqnum);
    if (with_a_bytestring && aencseq == bencseq && aidx == bidx)
    {
      ps->b_differs_from_a = false;
      ps->b_byte_sequence = ps->a_byte_sequence;
      ps->b_haswildcards = ps->a_haswildcards;
    } else
    {
      ps->b_differs_from_a = true;
      ps->b_byte_sequence = gt_sequence_parts_info_seq_extract(bencseq,
                                                               bseqranges,bidx);
      ps->b_haswildcards = (gt_encseq_wildcards(bencseq) > 0) ? true : false;
    }
  } else
  {
    ps->b_byte_sequence = NULL;
    GT_SEQORENCSEQ_INIT_ENCSEQ(&ps->bseqorencseq,bencseq);
    ps->b_haswildcards = true;
  }
  if (with_a_bytestring || with_b_bytestring)
  {
    ps->characters = gt_encseq_alphabetcharacters(aencseq);
    ps->wildcardshow = gt_alphabet_wildcard_show(gt_encseq_alphabet(aencseq));
  }
}

// Assembly:
subq $0x38, %rsp
movq %rcx, (%rsp)
movl %edx, %ecx
movq (%rsp), %rdx
movl %esi, %eax
movq %rdi, %r10
movb %cl, %sil
movb %al, %dil
movb 0x60(%rsp), %al
movq 0x58(%rsp), %rcx
movq 0x50(%rsp), %rcx
movq 0x48(%rsp), %rcx
movb 0x40(%rsp), %cl
movq %r10, 0x30(%rsp)
andb $0x1, %dil
movb %dil, 0x2f(%rsp)
andb $0x1, %sil
movb %sil, 0x2e(%rsp)
movq %rdx, 0x20(%rsp)
movq %r8, 0x18(%rsp)
movq %r9, 0x10(%rsp)
andb $0x1, %cl
movb %cl, 0xf(%rsp)
andb $0x1, %al
movb %al, 0xe(%rsp)
movq 0x30(%rsp), %rax
movq $-0x1, 0x98(%rax)
testb $0x1, 0x2f(%rsp)
je 0x21ccf5
cmpq $0x0, 0x20(%rsp)
je 0x21ccf5
movq 0x20(%rsp), %rdi
callq 0xb24d0
testb $0x1, %al
jne 0x21cce2
jmp 0x21ccf5
movq 0x20(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0xc0(%rax)
jmp 0x21cd05
movq 0x30(%rsp), %rax
movq $0x0, 0xc0(%rax)
testb $0x1, 0x2e(%rsp)
je 0x21cd37
cmpq $0x0, 0x48(%rsp)
je 0x21cd37
movq 0x48(%rsp), %rdi
callq 0xb24d0
testb $0x1, %al
jne 0x21cd24
jmp 0x21cd37
movq 0x48(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0xc8(%rax)
jmp 0x21cd47
movq 0x30(%rsp), %rax
movq $0x0, 0xc8(%rax)
testb $0x1, 0xf(%rsp)
je 0x21cde6
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x2b00f0
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0xa0(%rax)
movq 0x18(%rsp), %rdi
movq 0x30(%rsp), %rax
movq 0xa0(%rax), %rsi
callq 0x2af760
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0xa8(%rax)
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x2b0600
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x88(%rax)
movq 0x20(%rsp), %rdi
callq 0xb2880
movq %rax, %rdx
xorl %eax, %eax
movl $0x1, %ecx
cmpq $0x0, %rdx
cmoval %ecx, %eax
cmpl $0x0, %eax
setne %cl
movq 0x30(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x1(%rax)
jmp 0x21ce60
movq 0x30(%rsp), %rax
movq $0x0, 0x88(%rax)
movq 0x20(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x30(%rsp), %rax
movq $0x0, 0x18(%rax)
movq 0x30(%rsp), %rax
movq $0x0, 0x28(%rax)
movq 0x30(%rsp), %rax
movq $-0x1, 0x38(%rax)
movq 0x30(%rsp), %rax
movq $-0x1, 0x30(%rax)
movq 0x30(%rsp), %rax
movq $0x0, 0x40(%rax)
movq 0x30(%rsp), %rax
movb $0x0, 0x48(%rax)
movq 0x30(%rsp), %rax
movb $0x1, 0x49(%rax)
movq 0x30(%rsp), %rax
movb $0x1, 0x1(%rax)
testb $0x1, 0xe(%rsp)
je 0x21cf5e
movq 0x50(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0x2b00f0
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0xb0(%rax)
movq 0x50(%rsp), %rdi
movq 0x30(%rsp), %rax
movq 0xb0(%rax), %rsi
callq 0x2af760
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0xb8(%rax)
testb $0x1, 0xf(%rsp)
je 0x21cf02
movq 0x20(%rsp), %rax
cmpq 0x48(%rsp), %rax
jne 0x21cf02
movq 0x10(%rsp), %rax
cmpq 0x58(%rsp), %rax
jne 0x21cf02
movq 0x30(%rsp), %rax
movb $0x0, (%rax)
movq 0x30(%rsp), %rax
movq 0x88(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x90(%rax)
movq 0x30(%rsp), %rax
movb 0x1(%rax), %cl
movq 0x30(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x2(%rax)
jmp 0x21cf59
movq 0x30(%rsp), %rax
movb $0x1, (%rax)
movq 0x48(%rsp), %rdi
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
callq 0x2b0600
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x90(%rax)
movq 0x48(%rsp), %rdi
callq 0xb2880
movq %rax, %rdx
xorl %eax, %eax
movl $0x1, %ecx
cmpq $0x0, %rdx
cmoval %ecx, %eax
cmpl $0x0, %eax
setne %cl
movq 0x30(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x2(%rax)
jmp 0x21cfde
movq 0x30(%rsp), %rax
movq $0x0, 0x90(%rax)
movq 0x48(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x58(%rax)
movq 0x30(%rsp), %rax
movq $0x0, 0x50(%rax)
movq 0x30(%rsp), %rax
movq $0x0, 0x60(%rax)
movq 0x30(%rsp), %rax
movq $-0x1, 0x70(%rax)
movq 0x30(%rsp), %rax
movq $-0x1, 0x68(%rax)
movq 0x30(%rsp), %rax
movq $0x0, 0x78(%rax)
movq 0x30(%rsp), %rax
movb $0x0, 0x80(%rax)
movq 0x30(%rsp), %rax
movb $0x1, 0x81(%rax)
movq 0x30(%rsp), %rax
movb $0x1, 0x2(%rax)
testb $0x1, 0xf(%rsp)
jne 0x21cfec
testb $0x1, 0xe(%rsp)
je 0x21d01e
movq 0x20(%rsp), %rdi
callq 0xb0f20
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x20(%rsp), %rdi
callq 0xb0f00
movq %rax, %rdi
callq 0x7e9d0
movb %al, %cl
movq 0x30(%rsp), %rax
movb %cl, 0x10(%rax)
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)