// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: parse_first_gff3_line
static int parse_first_gff3_line(const char *line, const char *filename,
                                 GtQueue *genome_nodes, GtStr *filenamestr,
                                 GtUint64 *line_number,
                                 bool *gvf_mode,
                                 bool tidy, GtError *err)
{
  const char *directive = NULL;
  char *data = NULL;
  int had_err = 0;
  gt_error_check(err);
  gt_assert(line && filename);

  if (strncmp(line, GT_GFF_VERSION_PREFIX, strlen(GT_GFF_VERSION_PREFIX))) {
    if (strncmp(line, GT_GVF_VERSION_PREFIX, strlen(GT_GVF_VERSION_PREFIX))) {
      if (tidy) {
        gt_warning("line 1 in file \"%s\" does not begin with \"%s\" or "
                   "\"%s\", create \"%s %d\" line automatically",
                   filename,
                   GT_GFF_VERSION_PREFIX, GT_GVF_VERSION_PREFIX,
                   GT_GFF_VERSION_PREFIX, GT_GFF_VERSION);
        return 0;
      }
      else {
        gt_error_set(err, "line 1 in file \"%s\" does not begin with \"%s\" "
                     "or \"%s\"",
                     filename, GT_GFF_VERSION_PREFIX, GT_GFF_VERSION_PREFIX);
        had_err = -1;
      }
    } else {
      *gvf_mode = true;
    }
  }
  if (!had_err) {
    directive = line + 2;
    data = strchr(directive, ' ');
    if (!data)
      data = strchr(directive, '\t');
    if (data) {
      data[0] = '\0';
      data++;
    }
    else {
      gt_error_set(err, "version pragma encountered in line %u in file "
                        "\"%s\" does not have a version number",
                        (unsigned int) *line_number, filename);
      had_err = -1;
    }
  }
  if (!had_err && !(*gvf_mode)) {
    int version;
    had_err = gt_parse_int_line(&version, data, (unsigned int) *line_number,
                                filename, err);
    if (!had_err && version != GT_GFF_VERSION) {
      if (tidy) {
        gt_warning("GFF version %s does not equal required version %s, try to "
                   "parse as version %s", data, GT_GFF_VERSION_STRING,
                   GT_GFF_VERSION_STRING);
      }
      else {
        gt_error_set(err, "GFF version %s does not equal required version %s",
                     data, GT_GFF_VERSION_STRING);
        had_err = -1;
      }
    }
  }
  if (!had_err && *gvf_mode) {
    GtGenomeNode *gn;
    gt_assert(directive && data);
    gn = gt_meta_node_new(directive, data);
    gt_genome_node_set_origin(gn, filenamestr, (unsigned int) *line_number);
    gt_queue_add(genome_nodes, gn);
  }
  if (!had_err)
    return 1;
  return had_err;
}

// Assembly:
subq $0x68, %rsp
movq 0x78(%rsp), %rax
movb 0x70(%rsp), %al
movq %rdi, 0x58(%rsp)
movq %rsi, 0x50(%rsp)
movq %rdx, 0x48(%rsp)
movq %rcx, 0x40(%rsp)
movq %r8, 0x38(%rsp)
movq %r9, 0x30(%rsp)
andb $0x1, %al
movb %al, 0x2f(%rsp)
movq $0x0, 0x20(%rsp)
movq $0x0, 0x18(%rsp)
movl $0x0, 0x14(%rsp)
cmpq $0x0, 0x78(%rsp)
je 0x29ceb
movq 0x78(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x29cb3
jmp 0x29ceb
movq 0x18a31e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1343a2(%rip), %rsi    # 0x15e066
leaq 0x13497d(%rip), %rdx    # 0x15e648
leaq 0x139db1(%rip), %rcx    # 0x163a83
leaq 0x1398d2(%rip), %r8     # 0x1635ab
movl $0x695, %r9d            # imm = 0x695
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x29ced
jmp 0x29cef
cmpq $0x0, 0x58(%rsp)
je 0x29cff
cmpq $0x0, 0x50(%rsp)
jne 0x29d37
movq 0x18a2d2(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x134356(%rip), %rsi    # 0x15e066
leaq 0x139d82(%rip), %rdx    # 0x163a99
leaq 0x139d65(%rip), %rcx    # 0x163a83
leaq 0x139886(%rip), %r8     # 0x1635ab
movl $0x696, %r9d            # imm = 0x696
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x29d39
movq 0x58(%rsp), %rdi
leaq 0x139d65(%rip), %rsi    # 0x163aaa
movl $0xd, %edx
callq 0xb280
cmpl $0x0, %eax
je 0x29de7
movq 0x58(%rsp), %rdi
leaq 0x139d54(%rip), %rsi    # 0x163ab8
movl $0xd, %edx
callq 0xb280
cmpl $0x0, %eax
je 0x29ddd
testb $0x1, 0x2f(%rsp)
je 0x29db1
movq 0x50(%rsp), %rsi
leaq 0x139d40(%rip), %rdi    # 0x163ac6
leaq 0x139d1d(%rip), %r8     # 0x163aaa
leaq 0x139d24(%rip), %rcx    # 0x163ab8
movl $0x3, %r9d
movq %r8, %rdx
movb $0x0, %al
callq 0x1c550
movl $0x0, 0x64(%rsp)
jmp 0x29fd5
movq 0x78(%rsp), %rdi
movq 0x50(%rsp), %rdx
leaq 0x139d5c(%rip), %rsi    # 0x163b1e
leaq 0x139ce1(%rip), %r8     # 0x163aaa
movq %r8, %rcx
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x14(%rsp) # imm = 0xFFFFFFFF
jmp 0x29de5
movq 0x30(%rsp), %rax
movb $0x1, (%rax)
jmp 0x29de7
cmpl $0x0, 0x14(%rsp)
jne 0x29e7c
movq 0x58(%rsp), %rax
addq $0x2, %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
movl $0x20, %esi
callq 0xb1f0
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
jne 0x29e30
movq 0x20(%rsp), %rdi
movl $0x9, %esi
callq 0xb1f0
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x29e50
movq 0x18(%rsp), %rax
movb $0x0, (%rax)
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x29e7a
movq 0x78(%rsp), %rdi
movq 0x38(%rsp), %rax
movq (%rax), %rax
movl %eax, %edx
movq 0x50(%rsp), %rcx
leaq 0x139ce8(%rip), %rsi    # 0x163b53
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x14(%rsp) # imm = 0xFFFFFFFF
jmp 0x29e7c
cmpl $0x0, 0x14(%rsp)
jne 0x29f1b
movq 0x30(%rsp), %rax
testb $0x1, (%rax)
jne 0x29f1b
movq 0x18(%rsp), %rsi
movq 0x38(%rsp), %rax
movq (%rax), %rax
movl %eax, %edx
movq 0x50(%rsp), %rcx
movq 0x78(%rsp), %r8
leaq 0x10(%rsp), %rdi
callq 0x161a0
movl %eax, 0x14(%rsp)
cmpl $0x0, 0x14(%rsp)
jne 0x29f19
cmpl $0x3, 0x10(%rsp)
je 0x29f19
testb $0x1, 0x2f(%rsp)
je 0x29ef0
movq 0x18(%rsp), %rsi
leaq 0x139cc8(%rip), %rdi    # 0x163ba5
leaq 0x151d4f(%rip), %rcx    # 0x17bc33
movq %rcx, %rdx
movb $0x0, %al
callq 0x1c550
jmp 0x29f17
movq 0x78(%rsp), %rdi
movq 0x18(%rsp), %rdx
leaq 0x139cf2(%rip), %rsi    # 0x163bf3
leaq 0x151d2b(%rip), %rcx    # 0x17bc33
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x14(%rsp) # imm = 0xFFFFFFFF
jmp 0x29f19
jmp 0x29f1b
cmpl $0x0, 0x14(%rsp)
jne 0x29fbc
movq 0x30(%rsp), %rax
testb $0x1, (%rax)
je 0x29fbc
jmp 0x29f36
cmpq $0x0, 0x20(%rsp)
je 0x29f46
cmpq $0x0, 0x18(%rsp)
jne 0x29f7e
movq 0x18a08b(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13410f(%rip), %rsi    # 0x15e066
leaq 0x139cc7(%rip), %rdx    # 0x163c25
leaq 0x139b1e(%rip), %rcx    # 0x163a83
leaq 0x13963f(%rip), %r8     # 0x1635ab
movl $0x6cf, %r9d            # imm = 0x6CF
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x29f80
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x33fc0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
movq 0x40(%rsp), %rsi
movq 0x38(%rsp), %rax
movq (%rax), %rax
movl %eax, %edx
callq 0x25610
movq 0x48(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x909d0
cmpl $0x0, 0x14(%rsp)
jne 0x29fcd
movl $0x1, 0x64(%rsp)
jmp 0x29fd5
movl 0x14(%rsp), %eax
movl %eax, 0x64(%rsp)
movl 0x64(%rsp), %eax
addq $0x68, %rsp
retq
nop