// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/xrf_abbr_parse_tree.c
// Function: gt_xrf_abbr_parse_tree_validate_entries
static int gt_xrf_abbr_parse_tree_validate_entries(const GtXRFAbbrParseTree
                                                           *xrf_abbr_parse_tree,
                                                   GtError *err)
{
  GtUword i;
  GtHashmap *abbrvs;
  const char *value;
  int had_err = 0;
  gt_error_check(err);
  gt_assert(xrf_abbr_parse_tree);

  abbrvs = gt_hashmap_new(GT_HASH_STRING, NULL, NULL);
  for (i = 0; !had_err
         && i < gt_xrf_abbr_parse_tree_num_of_entries(xrf_abbr_parse_tree);
       i++) {
    GtXRFAbbrEntry *entry = *(GtXRFAbbrEntry**)
                                gt_array_get(xrf_abbr_parse_tree->entries, i);
    if (!(value = gt_xrf_abbr_entry_get_value(entry, XRF_LABEL_ABBREVIATION))) {
      gt_error_set(err, "file \"%s\": line "GT_WU": required "
                        "label \"" XRF_LABEL_ABBREVIATION "\" missing",
                   gt_xrf_abbr_entry_filename(entry),
                   gt_xrf_abbr_entry_line(entry));
      had_err = -1;
    }
    if (!had_err) {
      gt_assert(value);
      if (gt_hashmap_get(abbrvs, value)) {
        gt_error_set(err, "file \"%s\": line "GT_WU": duplicate abbreviation "
                          "\"%s\", must be unique",
                     gt_xrf_abbr_entry_filename(entry),
                     gt_xrf_abbr_entry_line(entry),
                     value);
        had_err = -1;
      } else {
        gt_hashmap_add(abbrvs, (void*) value, (void*) value);
      }
    }
    if (!had_err && (value = gt_xrf_abbr_entry_get_value(entry,
                                                XRF_LABEL_SHORTHAND_NAME))) {
      if (strlen(value) >= 10) {
        gt_error_set(err, "file \"%s\": line "GT_WU": length of "
                          "shorthand name \"%s\" "
                          "is not less than 10 characters",
                     gt_xrf_abbr_entry_filename(entry),
                     gt_xrf_abbr_entry_line(entry), value);
        had_err = -1;
      }
    }
    if (!had_err && (value = gt_xrf_abbr_entry_get_value(entry,
                                              XRF_LABEL_LOCAL_ID_SYNTAX))) {
      GtError *regex_error = gt_error_new();
      bool match;
      if (gt_grep(&match, value, "", regex_error)) {
        gt_error_set(err, "file \"%s\": line "GT_WU": invalid "
                          "regular expression \"%s\" (%s)",
                     gt_xrf_abbr_entry_filename(entry),
                     gt_xrf_abbr_entry_line(entry), value,
                     gt_error_get(regex_error));
        had_err = -1;
      }
      gt_error_delete(regex_error);
    }
  }
  gt_hashmap_delete(abbrvs);
  return had_err;
}

// Assembly:
subq $0xa8, %rsp
movq %rdi, 0xa0(%rsp)
movq %rsi, 0x98(%rsp)
movl $0x0, 0x7c(%rsp)
cmpq $0x0, 0x98(%rsp)
je 0xa9d55
movq 0x98(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xa9d1d
jmp 0xa9d55
movq 0x10a2b4(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb4338(%rip), %rsi     # 0x15e066
leaq 0xb4913(%rip), %rdx     # 0x15e648
leaq 0xc9797(%rip), %rcx     # 0x1734d3
leaq 0xc942c(%rip), %r8      # 0x17316f
movl $0x58, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa9d57
jmp 0xa9d59
cmpq $0x0, 0xa0(%rsp)
jne 0xa9d9c
movq 0x10a26d(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb42f1(%rip), %rsi     # 0x15e066
leaq 0xc9429(%rip), %rdx     # 0x1731a5
leaq 0xc9750(%rip), %rcx     # 0x1734d3
leaq 0xc93e5(%rip), %r8      # 0x17316f
movl $0x59, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa9d9e
movl $0x1, %edi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x86190
movq %rax, 0x88(%rsp)
movq $0x0, 0x90(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x7c(%rsp)
movb %al, 0x66(%rsp)
jne 0xa9dfc
movq 0x90(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0xa0(%rsp), %rdi
callq 0xa9690
movq %rax, %rcx
movq 0x58(%rsp), %rax
cmpq %rcx, %rax
setb %al
movb %al, 0x66(%rsp)
movb 0x66(%rsp), %al
testb $0x1, %al
jne 0xa9e09
jmp 0xaa0ef
movq 0xa0(%rsp), %rax
movq (%rax), %rdi
movq 0x90(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rdi
leaq 0xbd74c(%rip), %rsi     # 0x167581
callq 0xa9070
movq %rax, 0x80(%rsp)
cmpq $0x0, %rax
jne 0xa9e91
movq 0x98(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x70(%rsp), %rdi
callq 0xa9110
movq %rax, 0x50(%rsp)
movq 0x70(%rsp), %rdi
callq 0xa9170
movq 0x48(%rsp), %rdi
movq 0x50(%rsp), %rdx
movq %rax, %rcx
leaq 0xc9679(%rip), %rsi     # 0x1734fb
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x7c(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0x7c(%rsp)
jne 0xa9f70
jmp 0xa9e9e
cmpq $0x0, 0x80(%rsp)
jne 0xa9ee1
movq 0x10a128(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb41ac(%rip), %rsi     # 0x15e066
leaq 0xbd587(%rip), %rdx     # 0x167448
leaq 0xc960b(%rip), %rcx     # 0x1734d3
leaq 0xc92a0(%rip), %r8      # 0x17316f
movl $0x69, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa9ee3
movq 0x88(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x86470
cmpq $0x0, %rax
je 0xa9f51
movq 0x98(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x70(%rsp), %rdi
callq 0xa9110
movq %rax, 0x40(%rsp)
movq 0x70(%rsp), %rdi
callq 0xa9170
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rdx
movq %rax, %rcx
movq 0x80(%rsp), %r8
leaq 0xc95f6(%rip), %rsi     # 0x173536
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x7c(%rsp) # imm = 0xFFFFFFFF
jmp 0xa9f6e
movq 0x88(%rsp), %rdi
movq 0x80(%rsp), %rsi
movq 0x80(%rsp), %rdx
callq 0x86510
jmp 0xa9f70
cmpl $0x0, 0x7c(%rsp)
jne 0xaa000
movq 0x70(%rsp), %rdi
leaq 0xc94ee(%rip), %rsi     # 0x173475
callq 0xa9070
movq %rax, 0x80(%rsp)
cmpq $0x0, %rax
je 0xaa000
movq 0x80(%rsp), %rdi
callq 0xb240
cmpq $0xa, %rax
jb 0xa9ffe
movq 0x98(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x70(%rsp), %rdi
callq 0xa9110
movq %rax, 0x30(%rsp)
movq 0x70(%rsp), %rdi
callq 0xa9170
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rdx
movq %rax, %rcx
movq 0x80(%rsp), %r8
leaq 0xc9588(%rip), %rsi     # 0x173577
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x7c(%rsp) # imm = 0xFFFFFFFF
jmp 0xaa000
cmpl $0x0, 0x7c(%rsp)
jne 0xaa0d4
movq 0x70(%rsp), %rdi
leaq 0xbd4fa(%rip), %rsi     # 0x167511
callq 0xa9070
movq %rax, 0x80(%rsp)
cmpq $0x0, %rax
je 0xaa0d4
callq 0xc0b0
movq %rax, 0x68(%rsp)
movq 0x80(%rsp), %rsi
movq 0x68(%rsp), %rcx
leaq 0x67(%rsp), %rdi
leaq 0xc1e92(%rip), %rdx     # 0x16bee3
callq 0x855f0
cmpl $0x0, %eax
je 0xaa0ca
movq 0x98(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x70(%rsp), %rdi
callq 0xa9110
movq %rax, 0x10(%rsp)
movq 0x70(%rsp), %rdi
callq 0xa9170
movq %rax, 0x18(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x68(%rsp), %rdi
callq 0xc330
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq 0x18(%rsp), %rcx
movq 0x20(%rsp), %r8
movq %rax, %r9
leaq 0xc950e(%rip), %rsi     # 0x1735c9
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x7c(%rsp) # imm = 0xFFFFFFFF
movq 0x68(%rsp), %rdi
callq 0xc490
jmp 0xaa0d6
movq 0x90(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x90(%rsp)
jmp 0xa9dc3
movq 0x88(%rsp), %rdi
callq 0x86cc0
movl 0x7c(%rsp), %eax
addq $0xa8, %rsp
retq
nopl (%rax,%rax)