// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/match/diagbandseed.c
// Function: gt_diagbandseed_info_new
GtDiagbandseedInfo *gt_diagbandseed_info_new(const GtEncseq *aencseq,
                                             const GtEncseq *bencseq,
                                             GtUword maxfreq,
                                             GtUword memlimit,
                                             unsigned int spacedseedweight,
                                             unsigned int seedlength,
                                             bool norev,
                                             bool nofwd,
                                             const GtRange *seedpairdistance,
                                             GtDiagbandseedBaseListType splt,
                                             GtDiagbandseedBaseListType kmplt,
                                             bool verify,
                                             bool verbose,
                                             bool debug_kmer,
                                             bool debug_seedpair,
                                             bool use_kmerfile,
                                             bool trimstat_on,
                                             GtUword maxmat,
                                             const GtStr *chainarguments,
                                             const GtStr
                                               *diagband_statistics_arg,
                                             const GtDiagbandseedExtendParams
                                               *extp)
{
  GtDiagbandseedInfo *info = gt_malloc(sizeof *info);

  info->aencseq = aencseq;
  info->bencseq = bencseq;
  info->maxfreq = maxfreq;
  info->memlimit = memlimit;
  if (spacedseedweight > 0)
  {
    info->spacedseedweight = spacedseedweight;
    gt_assert(spacedseedweight < seedlength);
    info->spaced_seed_spec
      = gt_spaced_seed_spec_new_from_ws((int) info->spacedseedweight,
                                        (int) seedlength);
  } else
  {
    info->spacedseedweight = seedlength;
    info->spaced_seed_spec = NULL;
  }
  info->seedlength = seedlength;
  info->norev = norev;
  info->nofwd = nofwd;
  info->seedpairdistance = seedpairdistance;
  info->splt = splt;
  info->kmplt = kmplt;
  info->verify = verify;
  info->verbose = verbose;
  info->debug_kmer = debug_kmer;
  info->debug_seedpair = debug_seedpair;
  info->use_kmerfile = use_kmerfile;
  info->trimstat_on = trimstat_on;
  info->maxmat = maxmat;
  info->chainarguments = chainarguments;
  info->diagband_statistics_arg = diagband_statistics_arg;
  info->extp = extp;
  return info;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %r9d, 0x4(%rsp)
movl %r8d, %r14d
movq %rcx, %r15
movq %rdx, %r12
movq %rsi, %r13
movq %rdi, %rbp
leaq 0x210c4a(%rip), %rsi    # 0x39fbdc
movl $0x68, %edi
movl $0x10b, %edx            # imm = 0x10B
callq 0x104226
movq %rax, %rbx
movq %rbp, (%rax)
movq %r13, 0x8(%rax)
movq %r12, 0x30(%rax)
movq %r15, 0x38(%rax)
testl %r14d, %r14d
je 0x18efd5
movl %r14d, 0x48(%rbx)
cmpl 0x4(%rsp), %r14d
jae 0x18f0c2
movl %r14d, %edi
movl 0x4(%rsp), %esi
callq 0x18eeb8
jmp 0x18efde
movl 0x4(%rsp), %eax
movl %eax, 0x48(%rbx)
xorl %eax, %eax
movq 0xa0(%rsp), %rsi
movq 0x98(%rsp), %rdi
movb 0x90(%rsp), %r8b
movb 0x88(%rsp), %r9b
movb 0x80(%rsp), %r10b
movb 0x78(%rsp), %r11b
movb 0x70(%rsp), %bpl
movb 0x68(%rsp), %r14b
movl 0x60(%rsp), %r15d
movl 0x58(%rsp), %r12d
movq 0x50(%rsp), %r13
movb 0x48(%rsp), %dl
movb 0x40(%rsp), %cl
movq %rax, 0x50(%rbx)
movl 0x4(%rsp), %eax
movl %eax, 0x4c(%rbx)
movq %r13, 0x18(%rbx)
movl %r12d, 0x58(%rbx)
movl %r15d, 0x5c(%rbx)
movzbl %r11b, %eax
movzbl %r10b, %r10d
shll $0x8, %r10d
orl %eax, %r10d
movzbl %cl, %eax
movzbl %dl, %ecx
shll $0x8, %ecx
orl %eax, %ecx
movzbl %r14b, %eax
shll $0x10, %eax
orl %ecx, %eax
movzbl %bpl, %ecx
shll $0x18, %ecx
orl %eax, %ecx
movd %ecx, %xmm0
pinsrw $0x2, %r10d, %xmm0
movzbl %r9b, %eax
movzbl %r8b, %ecx
shll $0x8, %ecx
orl %eax, %ecx
pinsrw $0x3, %ecx, %xmm0
movq %xmm0, 0x60(%rbx)
movq %rdi, 0x40(%rbx)
movq %rsi, 0x20(%rbx)
movq 0xa8(%rsp), %rax
movq %rax, 0x28(%rbx)
movq 0xb0(%rsp), %rax
movq %rax, 0x10(%rbx)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x5ca21