// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/tools/gt_fingerprint.c
// Function: gt_fingerprint_runner
static int gt_fingerprint_runner(int argc, const char **argv, int parsed_args,
                                 void *tool_arguments, GtError *err)
{
  FingerprintArguments *arguments = tool_arguments;
  bool extract_found = true;
  GtBioseq *bs;
  GtStringDistri *sd;
  GtUword i, j;
  int had_err = 0;

  gt_error_check(err);
  gt_assert(arguments);
  sd = gt_string_distri_new();

  if (gt_str_length(arguments->extract))
    extract_found = false;

  /* process sequence files */
  for (i = parsed_args; !had_err && i < argc; i++) {
    if (!(bs = gt_bioseq_new(argv[i], err)))
      had_err = -1;
    if (!had_err) {
      for (j = 0; j < gt_bioseq_number_of_sequences(bs); j++) {
        if (gt_str_length(arguments->checklist) || arguments->show_duplicates)
          gt_string_distri_add(sd, gt_bioseq_get_md5_fingerprint(bs, j));
        else if (gt_str_length(arguments->extract)) {
          if (!strcmp(gt_bioseq_get_md5_fingerprint(bs, j),
                      gt_str_get(arguments->extract))) {
            char *seq = gt_bioseq_get_sequence(bs, j);
            gt_fasta_show_entry(gt_bioseq_get_description(bs, j),
                                seq,
                                gt_bioseq_get_sequence_length(bs, j),
                                arguments->width, arguments->outfp);
            gt_free(seq);
            extract_found = true;
          }
        }
        else if (!arguments->detect_collisions)
          gt_xputs(gt_bioseq_get_md5_fingerprint(bs, j));
      }
    }
    gt_bioseq_delete(bs);
  }

  if (!had_err && !extract_found) {
    gt_error_set(err, "could not find sequence with fingerprint '%s' in given "
                      "sequence file(s)", gt_str_get(arguments->extract));
    had_err = -1;
  }

  if (!had_err) {
    if (gt_str_length(arguments->checklist))
      had_err = compare_fingerprints(sd, gt_str_get(arguments->checklist), err);
    else if (arguments->show_duplicates)
      had_err = show_duplicates(sd, err);
    else if (arguments->detect_collisions)
      had_err = detect_collisions(argc - parsed_args, argv + parsed_args, err);
  }

  gt_string_distri_delete(sd);

  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %r8, %rbx
movq %rcx, %r12
movl %edx, %r13d
movq %rsi, 0x28(%rsp)
movl %edi, %ebp
testq %r8, %r8
je 0xaab7b
movq %rbx, %rdi
callq 0x101a9a
testb %al, %al
jne 0xaaff8
testq %r12, %r12
je 0xaaff3
callq 0x121fd0
movq %rax, %r14
movq 0x10(%r12), %rdi
callq 0x120d4c
testq %rax, %rax
sete %dil
movslq %r13d, %rdx
movb $0x1, %cl
movl %ebp, %esi
subl %edx, %esi
movl %esi, 0x24(%rsp)
movq %r14, 0x8(%rsp)
jbe 0xaad53
movq %rbx, 0x18(%rsp)
movslq %ebp, %rcx
movq %rcx, 0x50(%rsp)
testq %rax, %rax
sete 0x10(%rsp)
xorl %r15d, %r15d
movq %rdx, 0x48(%rsp)
movq %rdx, %rbx
movl %r15d, %r14d
movq 0x28(%rsp), %rax
movq (%rax,%rbx,8), %rdi
movq 0x18(%rsp), %rsi
callq 0xd69c0
movq %rax, %rbp
cmpq $0x1, %rax
movl $0x0, %r15d
sbbl %r15d, %r15d
orl %r14d, %r15d
je 0xaac28
movq 0x8(%rsp), %r14
movq %rbp, %rdi
callq 0xd6f28
testl %r15d, %r15d
sete %cl
jne 0xaad44
incq %rbx
cmpq 0x50(%rsp), %rbx
jb 0xaabd5
jmp 0xaad44
movq %rbp, %rdi
callq 0xd75d2
testq %rax, %rax
je 0xaac00
xorl %r13d, %r13d
movq 0x8(%rsp), %r14
movq 0x8(%r12), %rdi
callq 0x120d4c
testq %rax, %rax
jne 0xaac53
cmpb $0x1, (%r12)
jne 0xaac7b
movq %rbp, %rdi
movq %r13, %rsi
callq 0xd7571
movq %r14, %rdi
movq %rax, %rsi
callq 0x12202a
incq %r13
movq %rbp, %rdi
callq 0xd75d2
cmpq %rax, %r13
jb 0xaac3d
jmp 0xaac05
movq 0x10(%r12), %rdi
callq 0x120d4c
testq %rax, %rax
je 0xaad20
movq %rbp, %rdi
movq %r13, %rsi
callq 0xd7571
movq %rax, %r14
movq 0x10(%r12), %rdi
callq 0x120d23
movq %r14, %rdi
movq 0x8(%rsp), %r14
movq %rax, %rsi
callq 0x17a40
testl %eax, %eax
jne 0xaac69
movq %rbp, %rdi
movq %r13, %rsi
callq 0xd7118
movq %rax, %r14
movq %rbp, %rdi
movq %r13, %rsi
callq 0xd71c2
movq %rax, 0x10(%rsp)
movq %rbp, %rdi
movq %r13, %rsi
callq 0xd71ae
movq 0x18(%r12), %rcx
movq 0x28(%r12), %r8
movq 0x10(%rsp), %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x102ec0
movq %r14, %rdi
movq 0x8(%rsp), %r14
leaq 0x2ab093(%rip), %rsi    # 0x355d9f
movl $0x148, %edx            # imm = 0x148
callq 0x109670
movb $0x1, 0x10(%rsp)
jmp 0xaac69
cmpb $0x0, 0x1(%r12)
jne 0xaac69
movq %rbp, %rdi
movq %r13, %rsi
callq 0xd7571
movq %rax, %rdi
callq 0x1256fa
jmp 0xaac69
movq 0x18(%rsp), %rbx
movq 0x48(%rsp), %rdx
movb 0x10(%rsp), %dil
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
testb %cl, %cl
je 0xaafb3
testb $0x1, %dil
je 0xaadfa
movq %rdx, %r15
movq 0x8(%r12), %rdi
callq 0x120d4c
testq %rax, %rax
je 0xaae1d
movq 0x8(%r12), %rdi
callq 0x120d23
movq %rax, %r15
movb $0x0, 0x30(%rsp)
testq %rbx, %rbx
je 0xaada7
movq %rbx, %rdi
callq 0x101a9a
testb %al, %al
jne 0xab002
testq %r14, %r14
je 0xaaffd
testq %r15, %r15
je 0xaaffd
leaq 0x326712(%rip), %rsi    # 0x3d14d2
movq %r15, %rdi
callq 0x17a40
movl %eax, %ebp
testl %eax, %eax
movq %rbx, 0x18(%rsp)
je 0xaaedb
leaq 0x2b90eb(%rip), %rsi    # 0x363ec9
leaq 0x2aafba(%rip), %rdx    # 0x355d9f
movq %r15, %rdi
movl $0x97, %ecx
callq 0x101dbd
movq %rax, %r15
jmp 0xaaee5
movq 0x10(%r12), %rdi
callq 0x120d23
leaq 0x2ab206(%rip), %rsi    # 0x356011
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x1019cf
jmp 0xaafb3
cmpb $0x1, (%r12)
jne 0xaafcc
testq %rbx, %rbx
je 0xaae3d
movq %rbx, %rdi
callq 0x101a9a
testb %al, %al
jne 0xab00c
testq %r14, %r14
je 0xab007
movq %r14, %rdi
xorpd %xmm0, %xmm0
leaq 0x30(%rsp), %r14
movapd %xmm0, (%r14)
leaq 0x526(%rip), %rsi       # 0xab384
movq %r14, %rdx
callq 0x1221da
movq (%r14), %rdx
testq %rdx, %rdx
je 0xaafef
movq 0x38(%rsp), %rcx
movq %rdx, %xmm1
movq 0x2a5a5c(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x2a5a60(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq %rcx, %xmm1
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
mulsd 0x2a792b(%rip), %xmm0   # 0x3527f0
leaq 0x2ab259(%rip), %rsi    # 0x356125
movq %rbx, %rdi
movb $0x1, %al
callq 0x1019cf
jmp 0xaafa9
movq 0x419046(%rip), %rax    # 0x4c3f28
movq (%rax), %r15
callq 0x1208f8
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x120e88
cmpl $-0x1, %eax
je 0xaaf61
leaq 0x2ab17a(%rip), %r13    # 0x35607e
movq %r12, %rdi
callq 0x120d23
movq %r14, %rdi
movq %rax, %rsi
callq 0x12211c
movq %r14, %rbx
movq %rax, %r14
movq %r12, %rdi
callq 0x120d23
movq %rax, %rsi
testq %r14, %r14
je 0xaaf37
movq %rbx, %rdi
callq 0x1220aa
jmp 0xaaf46
movq %r13, %rdi
xorl %eax, %eax
callq 0x17070
movb $0x1, 0x30(%rsp)
movq %rbx, %r14
movq %r12, %rdi
callq 0x120db4
movq %r12, %rdi
movq %r15, %rsi
callq 0x120e88
cmpl $-0x1, %eax
jne 0xaaf04
movq %r12, %rdi
callq 0x121b03
testl %ebp, %ebp
je 0xaaf75
movq %r15, %rdi
callq 0x101f02
leaq 0x3d7(%rip), %rsi       # 0xab353
leaq 0x30(%rsp), %r14
movq 0x8(%rsp), %rdi
movq %r14, %rdx
callq 0x1221da
xorl %ebp, %ebp
cmpb $0x1, (%r14)
movq 0x18(%rsp), %rdi
jne 0xaafae
leaq 0x2ab0f2(%rip), %rsi    # 0x356094
xorl %eax, %eax
callq 0x1019cf
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x1222cb
movl %ebp, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %ebp, %ebp
cmpb $0x1, 0x1(%r12)
jne 0xaafb3
movq 0x28(%rsp), %rax
leaq (%rax,%r15,8), %rsi
movl 0x24(%rsp), %edi
movq %rbx, %rdx
callq 0xab011
movl %eax, %ebp
jmp 0xaafb3
xorl %ebp, %ebp
jmp 0xaafae
callq 0x1b18d
callq 0x1b070
callq 0x1b0e2
callq 0x1b0a9
callq 0x1b154
callq 0x1b11b