// File: /workspace/github_c_makefile_star2_O0/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:
subq $0xa8, %rsp
movl %edi, 0xa4(%rsp)
movq %rsi, 0x98(%rsp)
movl %edx, 0x94(%rsp)
movq %rcx, 0x88(%rsp)
movq %r8, 0x80(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x78(%rsp)
movb $0x1, 0x77(%rsp)
movl $0x0, 0x4c(%rsp)
cmpq $0x0, 0x80(%rsp)
je 0x37edd
movq 0x80(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x37ea5
jmp 0x37edd
movq 0x6040f4(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4de15d(%rip), %rsi    # 0x516013
leaq 0x4de302(%rip), %rdx    # 0x5161bf
leaq 0x4e61a5(%rip), %rcx    # 0x51e069
leaq 0x4e5f42(%rip), %r8     # 0x51de0d
movl $0x131, %r9d            # imm = 0x131
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x37edf
jmp 0x37ee1
cmpq $0x0, 0x78(%rsp)
jne 0x37f21
movq 0x6040b0(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4de119(%rip), %rsi    # 0x516013
leaq 0x542c5e(%rip), %rdx    # 0x57ab5f
leaq 0x4e6161(%rip), %rcx    # 0x51e069
leaq 0x4e5efe(%rip), %r8     # 0x51de0d
movl $0x132, %r9d            # imm = 0x132
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x37f23
callq 0x120120
movq %rax, 0x60(%rsp)
movq 0x78(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dfa0
cmpq $0x0, %rax
je 0x37f46
movb $0x0, 0x77(%rsp)
movslq 0x94(%rsp), %rax
movq %rax, 0x58(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x4c(%rsp)
movb %al, 0x3f(%rsp)
jne 0x37f77
movq 0x58(%rsp), %rax
movslq 0xa4(%rsp), %rcx
cmpq %rcx, %rax
setb %al
movb %al, 0x3f(%rsp)
movb 0x3f(%rsp), %al
testb $0x1, %al
jne 0x37f84
jmp 0x38163
movq 0x98(%rsp), %rax
movq 0x58(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movq 0x80(%rsp), %rsi
callq 0x84600
movq %rax, 0x68(%rsp)
cmpq $0x0, %rax
jne 0x37fb5
movl $0xffffffff, 0x4c(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0x4c(%rsp)
jne 0x38146
movq $0x0, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rdi
callq 0x85910
movq %rax, %rcx
movq 0x30(%rsp), %rax
cmpq %rcx, %rax
jae 0x38144
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11dfa0
cmpq $0x0, %rax
jne 0x3800c
movq 0x78(%rsp), %rax
testb $0x1, (%rax)
je 0x38037
movq 0x60(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x68(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x85800
movq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0x1201a0
jmp 0x3812f
movq 0x78(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dfa0
cmpq $0x0, %rax
je 0x38109
movq 0x68(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x85800
movq %rax, 0x20(%rsp)
movq 0x78(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dee0
movq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x19980
cmpl $0x0, %eax
jne 0x38107
movq 0x68(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x84cc0
movq %rax, 0x40(%rsp)
movq 0x68(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x84ea0
movq %rax, 0x10(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x68(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x84e30
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq %rax, %rdx
movq 0x78(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x78(%rsp), %rax
movq 0x28(%rax), %r8
callq 0xdbd10
movq 0x40(%rsp), %rdi
leaq 0x4e5d15(%rip), %rsi    # 0x51de0d
movl $0x148, %edx            # imm = 0x148
callq 0xe88c0
movb $0x1, 0x77(%rsp)
jmp 0x3812d
movq 0x78(%rsp), %rax
testb $0x1, 0x1(%rax)
jne 0x3812b
movq 0x68(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x85800
movq %rax, %rdi
callq 0x126e60
jmp 0x3812d
jmp 0x3812f
jmp 0x38131
movq 0x50(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x50(%rsp)
jmp 0x37fc9
jmp 0x38146
movq 0x68(%rsp), %rdi
callq 0x84960
movq 0x58(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x58(%rsp)
jmp 0x37f53
cmpl $0x0, 0x4c(%rsp)
jne 0x381aa
testb $0x1, 0x77(%rsp)
jne 0x381aa
movq 0x80(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x78(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x11dee0
movq 0x8(%rsp), %rdi
movq %rax, %rdx
leaq 0x4e5ee4(%rip), %rsi    # 0x51e07f
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0x4c(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0x4c(%rsp)
jne 0x38263
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11dfa0
cmpq $0x0, %rax
je 0x381fa
movq 0x60(%rsp), %rax
movq %rax, (%rsp)
movq 0x78(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11dee0
movq (%rsp), %rdi
movq %rax, %rsi
movq 0x80(%rsp), %rdx
callq 0x38280
movl %eax, 0x4c(%rsp)
jmp 0x38261
movq 0x78(%rsp), %rax
testb $0x1, (%rax)
je 0x3821c
movq 0x60(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x384a0
movl %eax, 0x4c(%rsp)
jmp 0x3825f
movq 0x78(%rsp), %rax
testb $0x1, 0x1(%rax)
je 0x3825d
movl 0xa4(%rsp), %edi
subl 0x94(%rsp), %edi
movq 0x98(%rsp), %rsi
movslq 0x94(%rsp), %rax
shlq $0x3, %rax
addq %rax, %rsi
movq 0x80(%rsp), %rdx
callq 0x38600
movl %eax, 0x4c(%rsp)
jmp 0x3825f
jmp 0x38261
jmp 0x38263
movq 0x60(%rsp), %rdi
callq 0x120820
movl 0x4c(%rsp), %eax
addq $0xa8, %rsp
retq
nopl (%rax)