// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/core/encseq.c
// Function: gt_encseq_encoder_new_from_options
GtEncseqEncoder* gt_encseq_encoder_new_from_options(GtEncseqOptions *opts,
                                                    GtError *err)
{
  int had_err = 0;
  GtEncseqEncoder *ee = NULL;
  gt_assert(opts);

  ee = gt_encseq_encoder_new();
  /* reset table requests */
  gt_encseq_encoder_disable_description_support(ee);
  gt_encseq_encoder_disable_multiseq_support(ee);
  gt_encseq_encoder_disable_md5_support(ee);
  gt_encseq_encoder_disable_lossless_support(ee);

  /* set table requests according to options */
  if (gt_encseq_options_des_value(opts))
    gt_encseq_encoder_create_des_tab(ee);
  if (gt_encseq_options_ssp_value(opts))
    gt_encseq_encoder_create_ssp_tab(ee);
  if (gt_encseq_options_sds_value(opts))
    gt_encseq_encoder_create_sds_tab(ee);
  if (gt_encseq_options_dna_value(opts))
    gt_encseq_encoder_set_input_dna(ee);
  if (gt_encseq_options_protein_value(opts))
    gt_encseq_encoder_set_input_protein(ee);
  if (gt_encseq_options_plain_value(opts))
    gt_encseq_encoder_set_input_preencoded(ee);
  if (gt_encseq_options_lossless_value(opts))
    gt_encseq_encoder_enable_lossless_support(ee);
  if (gt_encseq_options_md5_value(opts))
    gt_encseq_encoder_enable_md5_support(ee);
  if (gt_encseq_options_clip_desc_value(opts))
    gt_encseq_encoder_clip_desc(ee);
  if (gt_encseq_options_dust_value(opts)) {
    gt_encseq_encoder_enable_dust(ee,
                                gt_encseq_options_dust_echo_value(opts),
                                gt_encseq_options_dust_windowsize_value(opts),
                                gt_encseq_options_dust_threshold_value(opts),
                                gt_encseq_options_dust_linker_value(opts));
  }
  if (gt_str_length(gt_encseq_options_smap_value(opts)) > 0)
    had_err = gt_encseq_encoder_use_symbolmap_file(ee,
                                 gt_str_get(gt_encseq_options_smap_value(opts)),
                                 err);
  if (!had_err && gt_encseq_options_sat_value(opts) > 0)
    had_err = gt_encseq_encoder_use_representation(ee,
                                  gt_str_get(gt_encseq_options_sat_value(opts)),
                                  err);
  if (had_err) {
    gt_encseq_encoder_delete(ee);
    ee = NULL;
  }
  return ee;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
testq %rdi, %rdi
je 0xabd6b
movq %rsi, %r14
movq %rdi, %r15
callq 0xaba47
movq %rax, %rbx
movq %rax, %rdi
callq 0xabda3
movq %rbx, %rdi
callq 0xabde9
movq %rbx, %rdi
callq 0xabe2c
movq %rbx, %rdi
callq 0xabb69
movq %r15, %rdi
callq 0xbc234
testb %al, %al
je 0xabc03
movq %rbx, %rdi
callq 0xabe6f
movq %r15, %rdi
callq 0xbc80e
testb %al, %al
je 0xabc17
movq %rbx, %rdi
callq 0xabeb1
movq %r15, %rdi
callq 0xbc6fd
testb %al, %al
je 0xabc2b
movq %rbx, %rdi
callq 0xabef4
movq %r15, %rdi
callq 0xbc2bc
testb %al, %al
je 0xabc3f
movq %rbx, %rdi
callq 0xabf37
movq %r15, %rdi
callq 0xbc5ef
testb %al, %al
je 0xabc53
movq %rbx, %rdi
callq 0xabf80
movq %r15, %rdi
callq 0xbc564
testb %al, %al
je 0xabc67
movq %rbx, %rdi
callq 0xabfc9
movq %r15, %rdi
callq 0xbc3c9
testb %al, %al
je 0xabc7b
movq %rbx, %rdi
callq 0xac011
movq %r15, %rdi
callq 0xbc451
testb %al, %al
je 0xabc8f
movq %rbx, %rdi
callq 0xabb26
movq %r15, %rdi
callq 0xbc921
testb %al, %al
je 0xabca3
movq %rbx, %rdi
callq 0xac054
movq %r15, %rdi
callq 0xbc9ac
testb %al, %al
je 0xabcf2
movq %r15, %rdi
callq 0xbca37
movl %eax, %ebp
movq %r15, %rdi
callq 0xbcac2
movq %rax, %r12
movq %r15, %rdi
callq 0xbcb4e
movsd %xmm0, 0x8(%rsp)
movq %r15, %rdi
callq 0xbcbdb
movzbl %bpl, %esi
movq %rbx, %rdi
movq %r12, %rdx
movsd 0x8(%rsp), %xmm0
movq %rax, %rcx
callq 0xac097
movq %r15, %rdi
callq 0xbc788
movq %rax, %rdi
callq 0x14461
testq %rax, %rax
je 0xabd22
movq %r15, %rdi
callq 0xbc788
movq %rax, %rdi
callq 0x143d2
movq %rbx, %rdi
movq %rax, %rsi
callq 0xac0eb
movq %r15, %rdi
callq 0xbc677
testq %rax, %rax
je 0xabd5b
movq %r15, %rdi
callq 0xbc677
movq %rax, %rdi
callq 0x143d2
movq %rbx, %rdi
movq %rax, %rsi
movq %r14, %rdx
callq 0xac15b
testl %eax, %eax
je 0xabd5b
movq %rbx, %rdi
callq 0xac1f8
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x82246(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x1e2ea(%rip), %rsi     # 0xca066
leaq 0x41578(%rip), %rdx     # 0xed2fb
leaq 0x41576(%rip), %rcx     # 0xed300
leaq 0x3fe09(%rip), %r8      # 0xebb9a
movl $0x200b, %r9d           # imm = 0x200B
xorl %eax, %eax
callq 0xb8c0
callq 0xb300