// File: /workspace/github_c_makefile_star2_O1/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 0xc742e
movq %rsi, %r14
movq %rdi, %r15
callq 0xc71cf
movq %rax, %rbx
movq %rax, %rdi
callq 0xc7433
movq %rbx, %rdi
callq 0xc7446
movq %rbx, %rdi
callq 0xc7456
movq %rbx, %rdi
callq 0xc725f
movq %r15, %rdi
callq 0xd53ab
testb %al, %al
je 0xc72c6
movq %rbx, %rdi
callq 0xc7466
movq %r15, %rdi
callq 0xd5523
testb %al, %al
je 0xc72da
movq %rbx, %rdi
callq 0xc7475
movq %r15, %rdi
callq 0xd54de
testb %al, %al
je 0xc72ee
movq %rbx, %rdi
callq 0xc7485
movq %r15, %rdi
callq 0xd53cd
testb %al, %al
je 0xc7302
movq %rbx, %rdi
callq 0xc7495
movq %r15, %rdi
callq 0xd549c
testb %al, %al
je 0xc7316
movq %rbx, %rdi
callq 0xc74ab
movq %r15, %rdi
callq 0xd5477
testb %al, %al
je 0xc732a
movq %rbx, %rdi
callq 0xc74c1
movq %r15, %rdi
callq 0xd540e
testb %al, %al
je 0xc733e
movq %rbx, %rdi
callq 0xc74d7
movq %r15, %rdi
callq 0xd5430
testb %al, %al
je 0xc7352
movq %rbx, %rdi
callq 0xc724f
movq %r15, %rdi
callq 0xd556a
testb %al, %al
je 0xc7366
movq %rbx, %rdi
callq 0xc74e7
movq %r15, %rdi
callq 0xd558f
testb %al, %al
je 0xc73b5
movq %r15, %rdi
callq 0xd55b4
movl %eax, %ebp
movq %r15, %rdi
callq 0xd55d9
movq %rax, %r12
movq %r15, %rdi
callq 0xd55ff
movsd %xmm0, 0x8(%rsp)
movq %r15, %rdi
callq 0xd5626
movzbl %bpl, %esi
movq %rbx, %rdi
movq %r12, %rdx
movsd 0x8(%rsp), %xmm0
movq %rax, %rcx
callq 0xc74f7
movq %r15, %rdi
callq 0xd5503
movq %rax, %rdi
callq 0x3c434
testq %rax, %rax
je 0xc73e5
movq %r15, %rdi
callq 0xd5503
movq %rax, %rdi
callq 0x3c40b
movq %rbx, %rdi
movq %rax, %rsi
callq 0xc7518
movq %r15, %rdi
callq 0xd54be
testq %rax, %rax
je 0xc741e
movq %r15, %rdi
callq 0xd54be
movq %rax, %rdi
callq 0x3c40b
movq %rbx, %rdi
movq %rax, %rsi
movq %r14, %rdx
callq 0xc7555
testl %eax, %eax
je 0xc741e
movq %rbx, %rdi
callq 0xc75c1
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
callq 0x2ce0a