// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x98, %rsp
movq %rdi, 0x90(%rsp)
movq %rsi, 0x88(%rsp)
movq %rdx, 0x80(%rsp)
movq %rcx, 0x78(%rsp)
movq %r8, 0x70(%rsp)
movq %r9, 0x68(%rsp)
movl $0x0, 0x5c(%rsp)
cmpq $0x0, 0x68(%rsp)
je 0x2f6a6
movq 0x68(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x2f66e
jmp 0x2f6a6
movq 0x184963(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12e9e7(%rip), %rsi    # 0x15e066
leaq 0x12efc2(%rip), %rdx    # 0x15e648
leaq 0x13590c(%rip), %rcx    # 0x164f99
leaq 0x133f17(%rip), %r8     # 0x1635ab
movl $0x3a5, %r9d            # imm = 0x3A5
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f6a8
jmp 0x2f6aa
cmpq $0x0, 0x90(%rsp)
je 0x2f6cb
cmpq $0x0, 0x88(%rsp)
je 0x2f6cb
cmpq $0x0, 0x80(%rsp)
jne 0x2f703
movq 0x184906(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12e98a(%rip), %rsi    # 0x15e066
leaq 0x1358cf(%rip), %rdx    # 0x164fb2
leaq 0x1358af(%rip), %rcx    # 0x164f99
leaq 0x133eba(%rip), %r8     # 0x1635ab
movl $0x3a6, %r9d            # imm = 0x3A6
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f705
movq $0x0, 0x60(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x5c(%rsp)
movb %al, 0x4f(%rsp)
jne 0x2f744
movq 0x60(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x88(%rsp), %rdi
callq 0x1b720
movq %rax, %rcx
movq 0x40(%rsp), %rax
cmpq %rcx, %rax
setb %al
movb %al, 0x4f(%rsp)
movb 0x4f(%rsp), %al
testb $0x1, %al
jne 0x2f751
jmp 0x2f850
movq 0x88(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0x1b320
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rdi
leaq 0x1350cc(%rip), %rsi    # 0x164840
callq 0xb850
cmpl $0x0, %eax
je 0x2f799
movq 0x50(%rsp), %rdi
leaq 0x1350b9(%rip), %rsi    # 0x164843
callq 0xb850
cmpl $0x0, %eax
je 0x2f799
jmp 0x2f83d
movq 0x80(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x1fde0
cmpq $0x0, %rax
jne 0x2f83b
movq 0x68(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x80(%rsp), %rdi
callq 0x25850
movl %eax, 0x2c(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x90(%rsp), %rdi
callq 0x25850
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rcx
movl 0x2c(%rsp), %r8d
movq 0x30(%rsp), %r9
movq 0x38(%rsp), %r10
leaq 0x1357c8(%rip), %rsi    # 0x164fe3
leaq 0x13501e(%rip), %rdx    # 0x164840
movq %r10, (%rsp)
movl %eax, 0x8(%rsp)
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x5c(%rsp) # imm = 0xFFFFFFFF
jmp 0x2f850
jmp 0x2f83d
movq 0x60(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x60(%rsp)
jmp 0x2f70e
movl 0x5c(%rsp), %eax
addq $0x98, %rsp
retq
nopl (%rax)