// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/diagbandseed.c
// Function: gt_diagbandseed_decode_seedpair
static void gt_diagbandseed_decode_seedpair(GtDiagbandseedSeedPair *seedpair,
                                            const GtSeedpairlist *seedpairlist,
                                            GtUword offset)
{
  GtUword transfer, value_seqnums, value_positions;
  GtDiagbandseedPosition apos, bpos;
  const uint8_t *bytestring = seedpairlist->mlist_bytestring->spaceuint8_t +
                              offset;

  value_seqnums
    = gt_diagbandseed_bytestring2GtUword(bytestring,sizeof (GtUword));
  seedpair->aseqnum = (GtDiagbandseedSeqnum)
                      ((value_seqnums >>
                        seedpairlist->bits_left_adjust[idx_aseqnum]) &
                       seedpairlist->mask_tab[idx_aseqnum]);
  seedpair->bseqnum = (GtDiagbandseedSeqnum)
                      ((value_seqnums >>
                        seedpairlist->bits_left_adjust[idx_bseqnum]) &
                       seedpairlist->mask_tab[idx_bseqnum]);
  transfer = value_seqnums & seedpairlist->transfer_mask;
  value_positions
    = gt_diagbandseed_bytestring2GtUword(bytestring + sizeof (GtUword),
                                         seedpairlist->bytes_seedpair -
                                         sizeof (GtUword));
  value_positions >>= seedpairlist->bits_unused_in2GtUwords;
  value_positions |= (transfer << seedpairlist->transfer_shift);
  apos = (GtDiagbandseedPosition) (value_positions &
                                   seedpairlist->mask_tab[idx_apos]);
  bpos = (GtDiagbandseedPosition) (value_positions >>
                                   seedpairlist->bits_values[idx_apos]);
  GT_DIAGBANDSEED_SETPOS(seedpair,apos,bpos); /* for splt bytestring */
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
addq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
movl $0x8, %esi
callq 0x21b670
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq 0x38(%rsp), %rcx
movzwl 0x86(%rcx), %ecx
movl %ecx, %ecx
shrq %cl, %rax
movq 0x38(%rsp), %rcx
andq 0x20(%rcx), %rax
movl %eax, %ecx
movq 0x40(%rsp), %rax
movl %ecx, 0x4(%rax)
movq 0x20(%rsp), %rax
movq 0x38(%rsp), %rcx
movzwl 0x88(%rcx), %ecx
movl %ecx, %ecx
shrq %cl, %rax
movq 0x38(%rsp), %rcx
andq 0x28(%rcx), %rax
movl %eax, %ecx
movq 0x40(%rsp), %rax
movl %ecx, (%rax)
movq 0x20(%rsp), %rax
movq 0x38(%rsp), %rcx
andq 0x40(%rcx), %rax
movq %rax, 0x28(%rsp)
movq 0x8(%rsp), %rdi
addq $0x8, %rdi
movq 0x38(%rsp), %rax
movq 0x90(%rax), %rsi
subq $0x8, %rsi
callq 0x21b670
movq %rax, 0x18(%rsp)
movq 0x38(%rsp), %rax
movl 0xac(%rax), %ecx
movq 0x18(%rsp), %rax
movl %ecx, %ecx
shrq %cl, %rax
movq %rax, 0x18(%rsp)
movq 0x28(%rsp), %rax
movq 0x38(%rsp), %rcx
movl 0xa8(%rcx), %ecx
shlq %cl, %rax
orq 0x18(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq 0x38(%rsp), %rcx
andq 0x38(%rcx), %rax
movl %eax, 0x14(%rsp)
movq 0x18(%rsp), %rax
movq 0x38(%rsp), %rcx
movzwl 0x80(%rcx), %ecx
movl %ecx, %ecx
shrq %cl, %rax
movl %eax, 0x10(%rsp)
movl 0x10(%rsp), %ecx
movq 0x40(%rsp), %rax
movl %ecx, 0xc(%rax)
movl 0x14(%rsp), %ecx
movq 0x40(%rsp), %rax
movl %ecx, 0x8(%rax)
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)