// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: compare_other_attribute
static int compare_other_attribute(const char *attr_name, GtFeatureNode *new_gf,
                                   GtFeatureNode *old_gf, const char *id,
                                   GtGFF3Parser *parser, GtError *err)
{
  const char *old_attr_val = NULL,
             *new_attr_val = NULL;
  gt_error_check(err);
  gt_assert(attr_name && new_gf && old_gf && parser);
  old_attr_val = gt_feature_node_get_attribute(old_gf, attr_name);
  new_attr_val = gt_feature_node_get_attribute(new_gf, attr_name);
  if (!old_attr_val || !new_attr_val) {
    gt_error_set(err, "the multi-feature with %s \"%s\" on line %u in file "
                 "\"%s\" does not share attribute '%s' with its counterpart "
                 "on line %u ('%s' vs. '%s')",
                 GT_GFF_ID, id,
                 gt_genome_node_get_line_number((GtGenomeNode*) new_gf),
                 gt_genome_node_get_filename((GtGenomeNode*) new_gf),
                 attr_name,
                 gt_genome_node_get_line_number((GtGenomeNode*) old_gf),
                 (new_attr_val ? new_attr_val : "<missing>"),
                 (old_attr_val ? old_attr_val : "<missing>"));
    return -1;
  }
  gt_assert(new_attr_val && old_attr_val);
  if (strcmp(new_attr_val, old_attr_val)) {
    if (parser->tidy && !strcmp(attr_name, GT_GFF_PARENT)) {
      tidy_multi_feature_with_different_parent(new_gf, old_gf, id,
                                               parser->feature_info);
    }
    else {
      gt_error_set(err, "the multi-feature with %s \"%s\" on line %u in file "
                   "\"%s\" has a different attribute '%s' than its counterpart "
                   "on line %u ('%s' vs. '%s')",
                   GT_GFF_ID, id,
                   gt_genome_node_get_line_number((GtGenomeNode*) new_gf),
                   gt_genome_node_get_filename((GtGenomeNode*) new_gf),
                   attr_name,
                   gt_genome_node_get_line_number((GtGenomeNode*) old_gf),
                   gt_feature_node_get_attribute(new_gf, attr_name),
                   gt_feature_node_get_attribute(old_gf, attr_name));
      return -1;
    }
  }
  return 0;
}

// Assembly:
pushq %rbx
subq $0xe0, %rsp
movq %rdi, 0xd0(%rsp)
movq %rsi, 0xc8(%rsp)
movq %rdx, 0xc0(%rsp)
movq %rcx, 0xb8(%rsp)
movq %r8, 0xb0(%rsp)
movq %r9, 0xa8(%rsp)
movq $0x0, 0xa0(%rsp)
movq $0x0, 0x98(%rsp)
cmpq $0x0, 0xa8(%rsp)
je 0x2fbb6
movq 0xa8(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x2fb7e
jmp 0x2fbb6
movq 0x184453(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12e4d7(%rip), %rsi    # 0x15e066
leaq 0x12eab2(%rip), %rdx    # 0x15e648
leaq 0x135553(%rip), %rcx    # 0x1650f0
leaq 0x133a07(%rip), %r8     # 0x1635ab
movl $0x401, %r9d            # imm = 0x401
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2fbb8
jmp 0x2fbba
cmpq $0x0, 0xd0(%rsp)
je 0x2fbe6
cmpq $0x0, 0xc8(%rsp)
je 0x2fbe6
cmpq $0x0, 0xc0(%rsp)
je 0x2fbe6
cmpq $0x0, 0xb0(%rsp)
jne 0x2fc1e
movq 0x1843eb(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12e46f(%rip), %rsi    # 0x15e066
leaq 0x13550a(%rip), %rdx    # 0x165108
leaq 0x1354eb(%rip), %rcx    # 0x1650f0
leaq 0x13399f(%rip), %r8     # 0x1635ab
movl $0x402, %r9d            # imm = 0x402
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2fc20
movq 0xc0(%rsp), %rdi
movq 0xd0(%rsp), %rsi
callq 0x1fde0
movq %rax, 0xa0(%rsp)
movq 0xc8(%rsp), %rdi
movq 0xd0(%rsp), %rsi
callq 0x1fde0
movq %rax, 0x98(%rsp)
cmpq $0x0, 0xa0(%rsp)
je 0x2fc74
cmpq $0x0, 0x98(%rsp)
jne 0x2fd9b
movq 0xa8(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0xb8(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x25850
movl %eax, 0x7c(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x257c0
movq %rax, 0x80(%rsp)
movq 0xd0(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0xc0(%rsp), %rdi
callq 0x25850
movl %eax, 0x94(%rsp)
cmpq $0x0, 0x98(%rsp)
je 0x2fcf2
movq 0x98(%rsp), %rax
movq %rax, 0x60(%rsp)
jmp 0x2fd00
leaq 0x1354bc(%rip), %rax    # 0x1651b5
movq %rax, 0x60(%rsp)
jmp 0x2fd00
movq 0x60(%rsp), %rax
movq %rax, 0x58(%rsp)
cmpq $0x0, 0xa0(%rsp)
je 0x2fd24
movq 0xa0(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x2fd32
leaq 0x13548a(%rip), %rax    # 0x1651b5
movq %rax, 0x50(%rsp)
jmp 0x2fd32
movq 0x58(%rsp), %r10
movl 0x94(%rsp), %r11d
movq 0x88(%rsp), %rbx
movq 0x80(%rsp), %r9
movl 0x7c(%rsp), %r8d
movq 0x70(%rsp), %rcx
movq 0x68(%rsp), %rdi
movq 0x50(%rsp), %rax
leaq 0x1353c6(%rip), %rsi    # 0x165130
leaq 0x134acf(%rip), %rdx    # 0x164840
movq %rbx, (%rsp)
movl %r11d, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xdc(%rsp) # imm = 0xFFFFFFFF
jmp 0x2ff44
jmp 0x2fd9d
cmpq $0x0, 0x98(%rsp)
je 0x2fdb3
cmpq $0x0, 0xa0(%rsp)
jne 0x2fdeb
movq 0x18421e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12e2a2(%rip), %rsi    # 0x15e066
leaq 0x1353f4(%rip), %rdx    # 0x1651bf
leaq 0x13531e(%rip), %rcx    # 0x1650f0
leaq 0x1337d2(%rip), %r8     # 0x1635ab
movl $0x412, %r9d            # imm = 0x412
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2fded
movq 0x98(%rsp), %rdi
movq 0xa0(%rsp), %rsi
callq 0xb850
cmpl $0x0, %eax
je 0x2ff39
movq 0xb0(%rsp), %rax
testb $0x1, 0x1c(%rax)
je 0x2fe5f
movq 0xd0(%rsp), %rdi
leaq 0x134a1b(%rip), %rsi    # 0x164843
callq 0xb850
cmpl $0x0, %eax
jne 0x2fe5f
movq 0xc8(%rsp), %rdi
movq 0xc0(%rsp), %rsi
movq 0xb8(%rsp), %rdx
movq 0xb0(%rsp), %rax
movq (%rax), %rcx
callq 0x2ff60
jmp 0x2ff37
movq 0xa8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0xb8(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x25850
movl %eax, 0x34(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x257c0
movq %rax, 0x38(%rsp)
movq 0xd0(%rsp), %rbx
movq 0xc0(%rsp), %rdi
callq 0x25850
movl %eax, 0x44(%rsp)
movq 0xc8(%rsp), %rdi
movq 0xd0(%rsp), %rsi
callq 0x1fde0
movq %rax, 0x48(%rsp)
movq 0xc0(%rsp), %rdi
movq 0xd0(%rsp), %rsi
callq 0x1fde0
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rcx
movl 0x34(%rsp), %r8d
movq 0x38(%rsp), %r9
movl 0x44(%rsp), %r11d
movq 0x48(%rsp), %r10
leaq 0x1352d3(%rip), %rsi    # 0x1651dc
leaq 0x134930(%rip), %rdx    # 0x164840
movq %rbx, (%rsp)
movl %r11d, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xdc(%rsp) # imm = 0xFFFFFFFF
jmp 0x2ff44
jmp 0x2ff39
movl $0x0, 0xdc(%rsp)
movl 0xdc(%rsp), %eax
addq $0xe0, %rsp
popq %rbx
retq
nopw %cs:(%rax,%rax)