// File: /workspace/github_c_makefile_star2_O3/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 0xc83c4
movq %rsi, %r14
movq %rdi, %r15
callq 0xc8165
movq %rax, %rbx
movq %rax, %rdi
callq 0xc83c9
movq %rbx, %rdi
callq 0xc83dc
movq %rbx, %rdi
callq 0xc83ec
movq %rbx, %rdi
callq 0xc81f5
movq %r15, %rdi
callq 0xd5b13
testb %al, %al
je 0xc825c
movq %rbx, %rdi
callq 0xc83fc
movq %r15, %rdi
callq 0xd5c8b
testb %al, %al
je 0xc8270
movq %rbx, %rdi
callq 0xc840b
movq %r15, %rdi
callq 0xd5c46
testb %al, %al
je 0xc8284
movq %rbx, %rdi
callq 0xc841b
movq %r15, %rdi
callq 0xd5b35
testb %al, %al
je 0xc8298
movq %rbx, %rdi
callq 0xc842b
movq %r15, %rdi
callq 0xd5c04
testb %al, %al
je 0xc82ac
movq %rbx, %rdi
callq 0xc8441
movq %r15, %rdi
callq 0xd5bdf
testb %al, %al
je 0xc82c0
movq %rbx, %rdi
callq 0xc8457
movq %r15, %rdi
callq 0xd5b76
testb %al, %al
je 0xc82d4
movq %rbx, %rdi
callq 0xc846d
movq %r15, %rdi
callq 0xd5b98
testb %al, %al
je 0xc82e8
movq %rbx, %rdi
callq 0xc81e5
movq %r15, %rdi
callq 0xd5cd2
testb %al, %al
je 0xc82fc
movq %rbx, %rdi
callq 0xc847d
movq %r15, %rdi
callq 0xd5cf7
testb %al, %al
je 0xc834b
movq %r15, %rdi
callq 0xd5d1c
movl %eax, %ebp
movq %r15, %rdi
callq 0xd5d41
movq %rax, %r12
movq %r15, %rdi
callq 0xd5d67
movsd %xmm0, 0x8(%rsp)
movq %r15, %rdi
callq 0xd5d8e
movzbl %bpl, %esi
movq %rbx, %rdi
movq %r12, %rdx
movsd 0x8(%rsp), %xmm0
movq %rax, %rcx
callq 0xc848d
movq %r15, %rdi
callq 0xd5c6b
movq %rax, %rdi
callq 0x3bb86
testq %rax, %rax
je 0xc837b
movq %r15, %rdi
callq 0xd5c6b
movq %rax, %rdi
callq 0x3bb5d
movq %rbx, %rdi
movq %rax, %rsi
callq 0xc84ae
movq %r15, %rdi
callq 0xd5c26
testq %rax, %rax
je 0xc83b4
movq %r15, %rdi
callq 0xd5c26
movq %rax, %rdi
callq 0x3bb5d
movq %rbx, %rdi
movq %rax, %rsi
movq %r14, %rdx
callq 0xc84eb
testl %eax, %eax
je 0xc83b4
movq %rbx, %rdi
callq 0xc8557
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
callq 0x2c9d5