// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq %rsi, 0x48(%rsp)
movl $0x0, 0x44(%rsp)
movq $0x0, 0x38(%rsp)
cmpq $0x0, 0x50(%rsp)
jne 0x1224df
movq 0x91b2a(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x3bbae(%rip), %rsi     # 0x15e066
leaq 0x6493e(%rip), %rdx     # 0x186dfd
leaq 0x6493c(%rip), %rcx     # 0x186e02
leaq 0x63191(%rip), %r8      # 0x18565e
movl $0x200b, %r9d           # imm = 0x200B
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1224e1
callq 0x122270
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
callq 0x122730
movq 0x38(%rsp), %rdi
callq 0x122790
movq 0x38(%rsp), %rdi
callq 0x1227f0
movq 0x38(%rsp), %rdi
callq 0x122420
movq 0x50(%rsp), %rdi
callq 0x1437f0
testb $0x1, %al
jne 0x122523
jmp 0x12252d
movq 0x38(%rsp), %rdi
callq 0x122850
movq 0x50(%rsp), %rdi
callq 0x143f80
testb $0x1, %al
jne 0x12253d
jmp 0x122547
movq 0x38(%rsp), %rdi
callq 0x1228a0
movq 0x50(%rsp), %rdi
callq 0x143e20
testb $0x1, %al
jne 0x122557
jmp 0x122561
movq 0x38(%rsp), %rdi
callq 0x1228f0
movq 0x50(%rsp), %rdi
callq 0x1438a0
testb $0x1, %al
jne 0x122571
jmp 0x12257b
movq 0x38(%rsp), %rdi
callq 0x122940
movq 0x50(%rsp), %rdi
callq 0x143cd0
testb $0x1, %al
jne 0x12258b
jmp 0x122595
movq 0x38(%rsp), %rdi
callq 0x1229a0
movq 0x50(%rsp), %rdi
callq 0x143c10
testb $0x1, %al
jne 0x1225a5
jmp 0x1225af
movq 0x38(%rsp), %rdi
callq 0x122a00
movq 0x50(%rsp), %rdi
callq 0x1439f0
testb $0x1, %al
jne 0x1225bf
jmp 0x1225c9
movq 0x38(%rsp), %rdi
callq 0x122a60
movq 0x50(%rsp), %rdi
callq 0x143aa0
testb $0x1, %al
jne 0x1225d9
jmp 0x1225e3
movq 0x38(%rsp), %rdi
callq 0x1223c0
movq 0x50(%rsp), %rdi
callq 0x1440f0
testb $0x1, %al
jne 0x1225f3
jmp 0x1225fd
movq 0x38(%rsp), %rdi
callq 0x122ac0
movq 0x50(%rsp), %rdi
callq 0x1441b0
testb $0x1, %al
jne 0x12260d
jmp 0x122670
movq 0x38(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x50(%rsp), %rdi
callq 0x144270
movb %al, 0x37(%rsp)
movq 0x50(%rsp), %rdi
callq 0x144330
movq %rax, 0x20(%rsp)
movq 0x50(%rsp), %rdi
callq 0x1443f0
movsd %xmm0, 0x28(%rsp)
movq 0x50(%rsp), %rdi
callq 0x1444b0
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rdx
movsd 0x28(%rsp), %xmm0
movq %rax, %rcx
movb 0x37(%rsp), %al
movzbl %al, %esi
andl $0x1, %esi
callq 0x122b10
movq 0x50(%rsp), %rdi
callq 0x143ee0
movq %rax, %rdi
callq 0x19a00
cmpq $0x0, %rax
jbe 0x1226ba
movq 0x38(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x50(%rsp), %rdi
callq 0x143ee0
movq %rax, %rdi
callq 0x19940
movq 0x10(%rsp), %rdi
movq %rax, %rsi
movq 0x48(%rsp), %rdx
callq 0x122bc0
movl %eax, 0x44(%rsp)
cmpl $0x0, 0x44(%rsp)
jne 0x122703
movq 0x50(%rsp), %rdi
callq 0x143d80
cmpq $0x0, %rax
jbe 0x122703
movq 0x38(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x50(%rsp), %rdi
callq 0x143d80
movq %rax, %rdi
callq 0x19940
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq 0x48(%rsp), %rdx
callq 0x122c60
movl %eax, 0x44(%rsp)
cmpl $0x0, 0x44(%rsp)
je 0x12271d
movq 0x38(%rsp), %rdi
callq 0x122d50
movq $0x0, 0x38(%rsp)
movq 0x38(%rsp), %rax
addq $0x58, %rsp
retq
nopw (%rax,%rax)