// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/gff3_parser.c
// Function: check_missing_attributes
static int check_missing_attributes(GtGenomeNode *this_feature,
                                    GtStrArray *this_attributes,
                                    GtFeatureNode *other_feature,
                                    const char *id, const char *filename,
                                    GtError *err)
{
  GtUword i;
  int had_err = 0;
  gt_error_check(err);
  gt_assert(this_feature && this_attributes && other_feature);
  for (i = 0; !had_err && i < gt_str_array_size(this_attributes); i++) {
    const char *attrkey = gt_str_array_get(this_attributes, i);
    if (strcmp(attrkey, "ID") != 0 && strcmp(attrkey, "Parent"))
      continue;

    if (!gt_feature_node_get_attribute(other_feature, attrkey)) {
      gt_error_set(err, "the multi-feature with %s \"%s\" on line %u in file "
                   "\"%s\" does not have a '%s' attribute which is present in "
                   "its counterpart on line %u", GT_GFF_ID, id,
                   gt_genome_node_get_line_number((GtGenomeNode*)
                                                  other_feature),
                   filename, attrkey,
                   gt_genome_node_get_line_number(this_feature));
      had_err = -1;
      break;
    }
  }
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %r9, %r15
movq %r8, %rbx
movq %rcx, %r14
movq %rdx, %r13
movq %rsi, %rbp
movq %rdi, %r12
testq %r9, %r9
je 0x22e03
movq %r15, %rdi
callq 0xc103
testb %al, %al
jne 0x22f08
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
testq %rbp, %rbp
je 0x22eda
xorl %ebx, %ebx
leaq 0xad8ed(%rip), %r12     # 0xd0716
xorl %r15d, %r15d
movq %rbp, %rdi
callq 0x157f4
cmpq %rax, %r15
jae 0x22ec9
movq %rbp, %rdi
movq %r15, %rsi
callq 0x1555e
movq %rax, %r14
cmpb $0x49, (%rax)
jne 0x22e5e
cmpb $0x44, 0x1(%r14)
jne 0x22e5e
cmpb $0x0, 0x2(%r14)
je 0x22e6d
movq %r14, %rdi
movq %r12, %rsi
callq 0xb880
testl %eax, %eax
jne 0x22e7d
movq %r13, %rdi
movq %r14, %rsi
callq 0x18818
testq %rax, %rax
je 0x22e82
incq %r15
jmp 0x22e2c
movq %r13, %rdi
callq 0x1c2d8
movl %eax, %ebx
movq 0x8(%rsp), %rdi
callq 0x1c2d8
movl %eax, %r10d
leaq 0xae016(%rip), %rsi     # 0xd0eb6
leaq 0xad86c(%rip), %rdx     # 0xd0713
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rcx
movl %ebx, %r8d
movq 0x20(%rsp), %r9
xorl %eax, %eax
pushq %r10
pushq %r14
callq 0xc007
popq %rax
popq %rcx
pushq $-0x1
popq %rbx
movl %ebx, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x10b0d7(%rip), %rax    # 0x12dfb8
movq (%rax), %rdi
leaq 0xa717b(%rip), %rsi     # 0xca066
leaq 0xadf93(%rip), %rdx     # 0xd0e85
leaq 0xadf73(%rip), %rcx     # 0xd0e6c
leaq 0xac590(%rip), %r8      # 0xcf490
movl $0x3a6, %r9d            # imm = 0x3A6
jmp 0x22f34
movq 0x10b0a9(%rip), %rax    # 0x12dfb8
movq (%rax), %rdi
leaq 0xa714d(%rip), %rsi     # 0xca066
leaq 0xa7739(%rip), %rdx     # 0xca659
leaq 0xadf45(%rip), %rcx     # 0xd0e6c
leaq 0xac562(%rip), %r8      # 0xcf490
movl $0x3a5, %r9d            # imm = 0x3A5
xorl %eax, %eax
callq 0xb8c0
callq 0xb300