// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/diagbandseed.c
// Function: gt_diagbandseed_verify
static int gt_diagbandseed_verify(const GtSeedpairlist *seedpairlist,
                                  const GtEncseq *aencseq,
                                  const GtEncseq *bencseq,
                                  unsigned int seedlength,
                                  bool reverse,
                                  bool verbose,
                                  FILE *stream,
                                  GtError *err) {
  const GtUword mlistlen = gt_seedpairlist_length(seedpairlist);
  GtTimer *timer = NULL;
  GtUword idx;
  char *buf1 = gt_malloc(3 * (seedlength + 1) * sizeof *buf1);
  char *buf2 = buf1 + 1 + seedlength;
  char *buf3 = buf2 + 1 + seedlength;
  buf1[seedlength] = buf2[seedlength] = buf3[seedlength] = '\0';

  if (verbose) {
    fprintf(stream, "# start verifying seeds ...\n");
    timer = gt_timer_new();
    gt_timer_start(timer);
  }

  gt_assert(aencseq != NULL && bencseq != NULL);
  for (idx = 0; idx < mlistlen; idx++)
  {
    GtDiagbandseedSeedPair seedpair;
    GtDiagbandseedPosition abs_apos, abs_bpos;

    gt_seedpairlist_at(&seedpair,seedpairlist,idx);
    /* extract decoded k-mers at seed positions */
    abs_apos = GT_DIAGBANDSEED_GETPOS_A(&seedpair) +
               gt_encseq_seqstartpos(aencseq, seedpair.aseqnum);
    gt_encseq_extract_decoded(aencseq, buf1, abs_apos + 1 - seedlength,
                              abs_apos);

    if (!reverse) {
      GtDiagbandseedPosition apos = GT_DIAGBANDSEED_GETPOS_A(&seedpair),
                             bpos = GT_DIAGBANDSEED_GETPOS_B(&seedpair);

      abs_bpos = GT_DIAGBANDSEED_CONV_B(apos,bpos) +
                 gt_encseq_seqstartpos(bencseq,seedpair.bseqnum);
      gt_encseq_extract_decoded(bencseq, buf2, abs_bpos + 1 - seedlength,
                                abs_bpos);
      if (strcmp(buf1, buf2) != 0) {
        gt_error_set(err, "Wrong SeedPair (%" PRIu32
                          ",%" PRIu32 ",%" PRIu32 ",%" GT_WUS "): %s != %s\n",
                     seedpair.aseqnum, seedpair.bseqnum,
                     apos,
                     GT_DIAGBANDSEED_CONV_B(apos,bpos),
                     buf1, buf2);
        gt_free(buf1);
        if (verbose)
        {
          gt_timer_delete(timer);
        }
        return -1;
      }
    } else {
      /* get reverse k-mer */
      char *bufptr;
      abs_bpos = gt_encseq_seqstartpos(bencseq, seedpair.bseqnum) +
                 gt_encseq_seqlength(bencseq, seedpair.bseqnum)
                 - GT_DIAGBANDSEED_GETPOS_B(&seedpair) - 1;
      gt_encseq_extract_decoded(bencseq, buf2, abs_bpos,
                                abs_bpos + seedlength - 1);

      for (bufptr = buf3; bufptr < buf3 + seedlength; bufptr++) {
        gt_complement(bufptr, buf2[seedlength + buf3 - bufptr - 1], NULL);
      }
      if (strcmp(buf1, buf3) != 0) {
        gt_error_set(err, "Wrong SeedPair (" "%"PRIu32
                          ",%"PRIu32",%"PRIu32",%"PRIu32"): %s != %s\n",
                     seedpair.aseqnum, seedpair.bseqnum,
                     GT_DIAGBANDSEED_GETPOS_A(&seedpair),
                     GT_DIAGBANDSEED_GETPOS_B(&seedpair), buf1, buf3);
        gt_free(buf1);
        if (verbose)
        {
          gt_timer_delete(timer);
        }
        return -1;
      }
    }
  }
  if (verbose) {
    fprintf(stream, "# ...successfully verified all seeds ");
    gt_timer_show_formatted(timer, GT_DIAGBANDSEED_FMT, stream);
    gt_timer_delete(timer);
  }
  gt_free(buf1);
  return 0;
}

// Assembly:
subq $0xe8, %rsp
movl %r8d, 0x50(%rsp)
movl %ecx, %eax
movl 0x50(%rsp), %ecx
movl %eax, 0x54(%rsp)
movq %rdx, %rax
movl 0x54(%rsp), %edx
movq %rax, 0x58(%rsp)
movq %rsi, %rax
movq 0x58(%rsp), %rsi
movq %rax, 0x60(%rsp)
movq %rdi, %r8
movq 0x60(%rsp), %rdi
movb %r9b, %al
movq 0xf8(%rsp), %r9
movq 0xf0(%rsp), %r9
movq %r8, 0xd8(%rsp)
movq %rdi, 0xd0(%rsp)
movq %rsi, 0xc8(%rsp)
movl %edx, 0xc4(%rsp)
andb $0x1, %cl
movb %cl, 0xc3(%rsp)
andb $0x1, %al
movb %al, 0xc2(%rsp)
movq 0xd8(%rsp), %rdi
callq 0x216940
movq %rax, 0xb8(%rsp)
movq $0x0, 0xb0(%rsp)
movl 0xc4(%rsp), %eax
addl $0x1, %eax
imull $0x3, %eax, %eax
movl %eax, %eax
movl %eax, %edi
shlq $0x0, %rdi
leaq 0x35b3eb(%rip), %rsi    # 0x571f94
movl $0x808, %edx            # imm = 0x808
callq 0xe80f0
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
addq $0x1, %rax
movl 0xc4(%rsp), %ecx
addq %rcx, %rax
movq %rax, 0x98(%rsp)
movq 0x98(%rsp), %rax
addq $0x1, %rax
movl 0xc4(%rsp), %ecx
addq %rcx, %rax
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rax
movl 0xc4(%rsp), %ecx
movb $0x0, (%rax,%rcx)
movq 0x98(%rsp), %rax
movl 0xc4(%rsp), %ecx
movb $0x0, (%rax,%rcx)
movq 0xa0(%rsp), %rax
movl 0xc4(%rsp), %ecx
movb $0x0, (%rax,%rcx)
testb $0x1, 0xc2(%rsp)
je 0x216c6a
movq 0xf0(%rsp), %rdi
leaq 0x35c7fc(%rip), %rsi    # 0x573445
movb $0x0, %al
callq 0x199f0
callq 0x121340
movq %rax, 0xb0(%rsp)
movq 0xb0(%rsp), %rdi
callq 0x1213f0
jmp 0x216c6c
cmpq $0x0, 0xd0(%rsp)
je 0x216c82
cmpq $0x0, 0xc8(%rsp)
jne 0x216cba
movq 0x425317(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2ff380(%rip), %rsi    # 0x516013
leaq 0x3110e9(%rip), %rdx    # 0x527d83
leaq 0x35c7c1(%rip), %rcx    # 0x573462
leaq 0x35b2ec(%rip), %r8     # 0x571f94
movl $0x813, %r9d            # imm = 0x813
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x216cbc
movq $0x0, 0xa8(%rsp)
movq 0xa8(%rsp), %rax
cmpq 0xb8(%rsp), %rax
jae 0x2170cf
movq 0xd8(%rsp), %rsi
movq 0xa8(%rsp), %rdx
leaq 0x80(%rsp), %rdi
callq 0x21b390
movl 0x88(%rsp), %eax
movq %rax, 0x48(%rsp)
movq 0xd0(%rsp), %rdi
movl 0x84(%rsp), %eax
movl %eax, %esi
callq 0xb0530
movq %rax, %rcx
movq 0x48(%rsp), %rax
addq %rcx, %rax
movl %eax, 0x7c(%rsp)
movq 0xd0(%rsp), %rdi
movq 0xa0(%rsp), %rsi
movl 0x7c(%rsp), %eax
addl $0x1, %eax
subl 0xc4(%rsp), %eax
movl %eax, %eax
movl %eax, %edx
movl 0x7c(%rsp), %eax
movl %eax, %ecx
callq 0xac570
testb $0x1, 0xc3(%rsp)
jne 0x216f1b
movl 0x88(%rsp), %eax
movl %eax, 0x74(%rsp)
movl 0x8c(%rsp), %eax
movl %eax, 0x70(%rsp)
movq 0xd8(%rsp), %rax
testb $0x1, 0xb0(%rax)
je 0x216daf
movl 0x70(%rsp), %eax
movl 0x74(%rsp), %ecx
addq %rcx, %rax
movq 0xd8(%rsp), %rcx
subq 0xb8(%rcx), %rax
movq %rax, 0x40(%rsp)
jmp 0x216db8
movl 0x70(%rsp), %eax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0xc8(%rsp), %rdi
movl 0x80(%rsp), %eax
movl %eax, %esi
callq 0xb0530
movq %rax, %rcx
movq 0x38(%rsp), %rax
addq %rcx, %rax
movl %eax, 0x78(%rsp)
movq 0xc8(%rsp), %rdi
movq 0x98(%rsp), %rsi
movl 0x78(%rsp), %eax
addl $0x1, %eax
subl 0xc4(%rsp), %eax
movl %eax, %eax
movl %eax, %edx
movl 0x78(%rsp), %eax
movl %eax, %ecx
callq 0xac570
movq 0xa0(%rsp), %rdi
movq 0x98(%rsp), %rsi
callq 0x19980
cmpl $0x0, %eax
je 0x216f16
movq 0xf8(%rsp), %rax
movq %rax, 0x20(%rsp)
movl 0x84(%rsp), %eax
movl %eax, 0x2c(%rsp)
movl 0x80(%rsp), %eax
movl %eax, 0x30(%rsp)
movl 0x74(%rsp), %eax
movl %eax, 0x34(%rsp)
movq 0xd8(%rsp), %rax
testb $0x1, 0xb0(%rax)
je 0x216e8f
movl 0x70(%rsp), %eax
movl 0x74(%rsp), %ecx
addq %rcx, %rax
movq 0xd8(%rsp), %rcx
subq 0xb8(%rcx), %rax
movq %rax, 0x18(%rsp)
jmp 0x216e98
movl 0x70(%rsp), %eax
movq %rax, 0x18(%rsp)
movl 0x34(%rsp), %r8d
movl 0x30(%rsp), %ecx
movl 0x2c(%rsp), %edx
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %r9
movq 0xa0(%rsp), %r10
movq 0x98(%rsp), %rax
leaq 0x35c5b3(%rip), %rsi    # 0x573479
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
movb $0x0, %al
callq 0xd88c0
movq 0xa0(%rsp), %rdi
leaq 0x35b0af(%rip), %rsi    # 0x571f94
movl $0x82f, %edx            # imm = 0x82F
callq 0xe88c0
testb $0x1, 0xc2(%rsp)
je 0x216f06
movq 0xb0(%rsp), %rdi
callq 0x121f00
movl $0xffffffff, 0xe4(%rsp) # imm = 0xFFFFFFFF
jmp 0x21713c
jmp 0x2170b4
movq 0xc8(%rsp), %rdi
movl 0x80(%rsp), %eax
movl %eax, %esi
callq 0xb0530
movq %rax, 0x10(%rsp)
movq 0xc8(%rsp), %rdi
movl 0x80(%rsp), %eax
movl %eax, %esi
callq 0xb09f0
movq %rax, %rcx
movq 0x10(%rsp), %rax
addq %rcx, %rax
movl 0x8c(%rsp), %ecx
subq %rcx, %rax
subq $0x1, %rax
movl %eax, 0x78(%rsp)
movq 0xc8(%rsp), %rdi
movq 0x98(%rsp), %rsi
movl 0x78(%rsp), %eax
movl %eax, %edx
movl 0x78(%rsp), %eax
addl 0xc4(%rsp), %eax
subl $0x1, %eax
movl %eax, %eax
movl %eax, %ecx
callq 0xac570
movq 0x90(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq 0x90(%rsp), %rcx
movl 0xc4(%rsp), %edx
addq %rdx, %rcx
cmpq %rcx, %rax
jae 0x217007
movq 0x68(%rsp), %rdi
movq 0x98(%rsp), %rax
movl 0xc4(%rsp), %edx
movq 0x90(%rsp), %rcx
movl %edx, %edx
addq %rdx, %rcx
movq 0x68(%rsp), %rdx
subq %rdx, %rcx
subq $0x1, %rcx
xorl %edx, %edx
movsbl (%rax,%rcx), %esi
callq 0x481260
movq 0x68(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x68(%rsp)
jmp 0x216fa3
movq 0xa0(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0x19980
cmpl $0x0, %eax
je 0x2170b2
movq 0xf8(%rsp), %rdi
movl 0x84(%rsp), %edx
movl 0x80(%rsp), %ecx
movl 0x88(%rsp), %r8d
movl 0x8c(%rsp), %r9d
movq 0xa0(%rsp), %r10
movq 0x90(%rsp), %rax
leaq 0x35c440(%rip), %rsi    # 0x5734a2
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
movb $0x0, %al
callq 0xd88c0
movq 0xa0(%rsp), %rdi
leaq 0x35af13(%rip), %rsi    # 0x571f94
movl $0x848, %edx            # imm = 0x848
callq 0xe88c0
testb $0x1, 0xc2(%rsp)
je 0x2170a2
movq 0xb0(%rsp), %rdi
callq 0x121f00
movl $0xffffffff, 0xe4(%rsp) # imm = 0xFFFFFFFF
jmp 0x21713c
jmp 0x2170b4
jmp 0x2170b6
movq 0xa8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xa8(%rsp)
jmp 0x216cc8
testb $0x1, 0xc2(%rsp)
je 0x217118
movq 0xf0(%rsp), %rdi
leaq 0x35c3e2(%rip), %rsi    # 0x5734ca
movb $0x0, %al
callq 0x199f0
movq 0xb0(%rsp), %rdi
movq 0xf0(%rsp), %rdx
leaq 0x35ba86(%rip), %rsi    # 0x572b8c
callq 0x121520
movq 0xb0(%rsp), %rdi
callq 0x121f00
movq 0xa0(%rsp), %rdi
leaq 0x35ae6d(%rip), %rsi    # 0x571f94
movl $0x856, %edx            # imm = 0x856
callq 0xe88c0
movl $0x0, 0xe4(%rsp)
movl 0xe4(%rsp), %eax
addq $0xe8, %rsp
retq
nopl (%rax,%rax)