// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/stream_evaluator.c
// Function: compare_features
static void compare_features(GtArray *real_genome_nodes, GtFeatureNode *fn,
                             GtArray *genes_forward, GtArray *genes_reverse,
                             GtBittab *true_genes_forward,
                             GtBittab *true_genes_reverse,
                             GtEvaluator *gene_evaluator,
                             FeaturesAreEqualFunc features_are_equal,
                             const char *feature_type)
{
  GtStrand predicted_strand;
  GtGenomeNode **real_gn;
  GtUword i, num;
  gt_assert(real_genome_nodes && fn && genes_forward && genes_reverse);
  gt_assert(gene_evaluator && features_are_equal && feature_type);
  predicted_strand = gt_feature_node_get_strand(fn);
  for (i = 0; i < gt_array_size(real_genome_nodes); i++) {
    real_gn = *(GtGenomeNode***) gt_array_get(real_genome_nodes, i);
    if (features_are_equal((GtGenomeNode*) fn, *real_gn, feature_type)) {
      if (predicted_strand == GT_STRAND_FORWARD) {
        num = real_gn - (GtGenomeNode**) gt_array_get_space(genes_forward);
        if (!gt_bittab_bit_is_set(true_genes_forward, num)) {
          gt_bittab_set_bit(true_genes_forward, num);
          gt_evaluator_add_true(gene_evaluator);
          /*@loopbreak@*/
          break;
        }
      }
      else {
        num = real_gn - (GtGenomeNode**) gt_array_get_space(genes_reverse);
        if (!gt_bittab_bit_is_set(true_genes_reverse, num)) {
          gt_bittab_set_bit(true_genes_reverse, num);
          gt_evaluator_add_true(gene_evaluator);
          /*@loopbreak@*/
          break;
        }
      }
    }
  }
}

// Assembly:
subq $0x68, %rsp
movq 0x80(%rsp), %rax
movq 0x78(%rsp), %rax
movq 0x70(%rsp), %rax
movq %rdi, 0x60(%rsp)
movq %rsi, 0x58(%rsp)
movq %rdx, 0x50(%rsp)
movq %rcx, 0x48(%rsp)
movq %r8, 0x40(%rsp)
movq %r9, 0x38(%rsp)
cmpq $0x0, 0x60(%rsp)
je 0xf0524
cmpq $0x0, 0x58(%rsp)
je 0xf0524
cmpq $0x0, 0x50(%rsp)
je 0xf0524
cmpq $0x0, 0x48(%rsp)
jne 0xf055c
movq 0xc3aad(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x6db31(%rip), %rsi     # 0x15e066
leaq 0x8a786(%rip), %rdx     # 0x17acc2
leaq 0x8a7b9(%rip), %rcx     # 0x17acfc
leaq 0x8a05e(%rip), %r8      # 0x17a5a8
movl $0x3c4, %r9d            # imm = 0x3C4
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xf055e
jmp 0xf0560
cmpq $0x0, 0x70(%rsp)
je 0xf057b
cmpq $0x0, 0x78(%rsp)
je 0xf057b
cmpq $0x0, 0x80(%rsp)
jne 0xf05b3
movq 0xc3a56(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x6dada(%rip), %rsi     # 0x15e066
leaq 0x8a77a(%rip), %rdx     # 0x17ad0d
leaq 0x8a762(%rip), %rcx     # 0x17acfc
leaq 0x8a007(%rip), %r8      # 0x17a5a8
movl $0x3c5, %r9d            # imm = 0x3C5
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xf05b5
movq 0x58(%rsp), %rdi
callq 0x20a10
movl %eax, 0x34(%rsp)
movq $0x0, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x60(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
jae 0xf06f9
movq 0x60(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x28(%rsp)
movq 0x78(%rsp), %rax
movq 0x58(%rsp), %rdi
movq 0x28(%rsp), %rcx
movq (%rcx), %rsi
movq 0x80(%rsp), %rdx
callq *%rax
testb $0x1, %al
jne 0xf062d
jmp 0xf06e4
cmpl $0x0, 0x34(%rsp)
jne 0xf068c
movq 0x28(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x50(%rsp), %rdi
callq 0x761a0
movq %rax, %rcx
movq 0x8(%rsp), %rax
subq %rcx, %rax
sarq $0x3, %rax
movq %rax, 0x18(%rsp)
movq 0x40(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x79c60
testb $0x1, %al
jne 0xf068a
movq 0x40(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x78fe0
movq 0x70(%rsp), %rdi
callq 0x150880
jmp 0xf06f9
jmp 0xf06e2
movq 0x28(%rsp), %rax
movq %rax, (%rsp)
movq 0x48(%rsp), %rdi
callq 0x761a0
movq %rax, %rcx
movq (%rsp), %rax
subq %rcx, %rax
sarq $0x3, %rax
movq %rax, 0x18(%rsp)
movq 0x38(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x79c60
testb $0x1, %al
jne 0xf06e0
movq 0x38(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x78fe0
movq 0x70(%rsp), %rdi
callq 0x150880
jmp 0xf06f9
jmp 0xf06e2
jmp 0xf06e4
jmp 0xf06e6
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0xf05cc
addq $0x68, %rsp
retq
nop