// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/xrf_abbr_parse_tree.c
// Function: parse_xrf_abbr_file
static int parse_xrf_abbr_file(GtXRFAbbrParseTree *xrf_abbr_parse_tree,
                               GtIO *xrf_abbr_file, GtError *err)
{
  int had_err = 0;
  gt_error_check(err);
  gt_assert(xrf_abbr_parse_tree && xrf_abbr_file);
  while (!had_err && gt_xrf_abbr_parse_tree_ignored_char(xrf_abbr_file)) {
    had_err = gt_xrf_abbr_parse_tree_ignored_line(xrf_abbr_file, err);
  }
  while (!had_err && gt_io_has_char(xrf_abbr_file)) {
    switch (gt_io_peek(xrf_abbr_file)) {
      case XRF_BLANK_CHAR:
        had_err = gt_xrf_abbr_parse_tree_blank_line(xrf_abbr_file, err);
        break;
      case XRF_COMMENT_CHAR:
        had_err = gt_xrf_abbr_parse_tree_comment_line(xrf_abbr_file, err);
        break;
      case GT_CARRIAGE_RETURN:
        gt_io_next(xrf_abbr_file);
        if (gt_io_peek(xrf_abbr_file) == GT_END_OF_LINE)
          gt_io_next(xrf_abbr_file);
        break;
      case GT_END_OF_LINE:
        gt_io_next(xrf_abbr_file);
        break;
      default:
        had_err = gt_xrf_abbr_parse_tree_entry(xrf_abbr_parse_tree,
                                               xrf_abbr_file, err);
    }
  }
  if (!had_err)
    had_err = gt_io_expect(xrf_abbr_file, GT_END_OF_FILE, err);
  if (!had_err)
    had_err = gt_xrf_abbr_parse_tree_validate_entries(xrf_abbr_parse_tree,
                                                      err);
  return had_err;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movl $0x0, 0xc(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0xa936b
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xa9333
jmp 0xa936b
movq 0x10ac9e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb4d22(%rip), %rsi     # 0x15e066
leaq 0xb52fd(%rip), %rdx     # 0x15e648
leaq 0xc9ed5(%rip), %rcx     # 0x173227
leaq 0xc9e16(%rip), %r8      # 0x17316f
movl $0x15a, %r9d            # imm = 0x15A
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa936d
jmp 0xa936f
cmpq $0x0, 0x20(%rsp)
je 0xa937f
cmpq $0x0, 0x18(%rsp)
jne 0xa93b7
movq 0x10ac52(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb4cd6(%rip), %rsi     # 0x15e066
leaq 0xc9ea4(%rip), %rdx     # 0x17323b
leaq 0xc9e89(%rip), %rcx     # 0x173227
leaq 0xc9dca(%rip), %r8      # 0x17316f
movl $0x15b, %r9d            # imm = 0x15B
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa93b9
jmp 0xa93bb
xorl %eax, %eax
cmpl $0x0, 0xc(%rsp)
movb %al, 0xb(%rsp)
jne 0xa93d6
movq 0x18(%rsp), %rdi
callq 0xa96f0
movb %al, 0xb(%rsp)
movb 0xb(%rsp), %al
testb $0x1, %al
jne 0xa93e0
jmp 0xa93fa
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xa9750
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0xc(%rsp)
jmp 0xa93bb
jmp 0xa93fc
xorl %eax, %eax
cmpl $0x0, 0xc(%rsp)
movb %al, 0xa(%rsp)
jne 0xa9417
movq 0x18(%rsp), %rdi
callq 0xe1a00
movb %al, 0xa(%rsp)
movb 0xa(%rsp), %al
testb $0x1, %al
jne 0xa9424
jmp 0xa94ce
movq 0x18(%rsp), %rdi
callq 0xe1a90
movsbl %al, %eax
addl $-0xa, %eax
movl %eax, %ecx
movq %rcx, (%rsp)
subl $0x17, %eax
ja 0xa94b1
movq (%rsp), %rax
leaq 0xc9caa(%rip), %rcx     # 0x1730f4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xa9840
movl %eax, 0xc(%rsp)
jmp 0xa94c9
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xa9990
movl %eax, 0xc(%rsp)
jmp 0xa94c9
movq 0x18(%rsp), %rdi
callq 0xe1b10
movq 0x18(%rsp), %rdi
callq 0xe1a90
movsbl %al, %eax
cmpl $0xa, %eax
jne 0xa94a3
movq 0x18(%rsp), %rdi
callq 0xe1b10
jmp 0xa94c9
movq 0x18(%rsp), %rdi
callq 0xe1b10
jmp 0xa94c9
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0xa9ac0
movl %eax, 0xc(%rsp)
jmp 0xa93fc
cmpl $0x0, 0xc(%rsp)
jne 0xa94ed
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rdx
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0xe1c90
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
jne 0xa9507
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xa9ce0
movl %eax, 0xc(%rsp)
movl 0xc(%rsp), %eax
addq $0x28, %rsp
retq