// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: parse_target_attribute
static int parse_target_attribute(const char *value, bool tidy,
                                  GtStr *target_id, GtRange *target_range,
                                  GtStrand *target_strand,
                                  GtStrArray *target_ids,
                                  GtArray *target_ranges,
                                  GtArray *target_strands,
                                  const char *filename,
                                  unsigned int line_number, GtError *err)
{
  GtUword num_of_tokens;
  GtStr *unescaped_target;
  char *escaped_target;
  GtStrand parsed_strand;
  GtSplitter *splitter;
  GtRange parsed_range;
  int had_err = 0;
  gt_error_check(err);
  gt_assert(value && filename);
  splitter = gt_splitter_new();
  unescaped_target = gt_str_new();
  escaped_target = gt_cstr_dup(value);
  gt_splitter_split(splitter, escaped_target, strlen(escaped_target), ' ');
  num_of_tokens = gt_splitter_size(splitter);
  if (!(num_of_tokens == 3 || num_of_tokens == 4)) {
    gt_error_set(err, "Target attribute value '%s' on line %u in file \"%s\" "
                 "must have 3 or 4 blank separated entries", value, line_number,
                 filename);
    had_err = -1;
  }
  /* parse target id */
  if (!had_err) {
    had_err = gt_gff3_unescape(unescaped_target,
                               gt_splitter_get_token(splitter, 0),
                               strlen(gt_splitter_get_token(splitter, 0)), err);
  }
  if (!had_err)
    had_err = verify_seqid(unescaped_target, filename, line_number, err);
  if (!had_err && target_id)
    gt_str_append_str(target_id, unescaped_target);
  if (!had_err && target_ids)
    gt_str_array_add(target_ids, unescaped_target);
  /* parse target range */
  if (!had_err) {
    if (tidy) {
      had_err = gt_parse_range_tidy(&parsed_range,
                                    gt_splitter_get_token(splitter, 1),
                                    gt_splitter_get_token(splitter, 2),
                                    line_number, filename, err);
    }
    else {
      had_err = gt_parse_range(&parsed_range,
                               gt_splitter_get_token(splitter, 1),
                               gt_splitter_get_token(splitter, 2), line_number,
                               filename, err);
    }
  }
  if (!had_err && target_range)
    *target_range = parsed_range;
  if (!had_err && target_ranges)
    gt_array_add(target_ranges, parsed_range);
  /* parse target strand (if given) */
  if (!had_err) {
    if (gt_splitter_size(splitter) == 4) {
      had_err = gt_parse_strand(&parsed_strand,
                                gt_splitter_get_token(splitter, 3),
                                line_number, filename, err);
      if (!had_err && target_strand)
        *target_strand = parsed_strand;
      if (!had_err && target_strands)
        gt_array_add(target_strands, parsed_strand);
    }
    else {
      if (target_strand)
        *target_strand = GT_NUM_OF_STRAND_TYPES; /* undefined */
      if (target_strands) {
        parsed_strand = GT_NUM_OF_STRAND_TYPES; /* undefined */
        gt_array_add(target_strands, parsed_strand);
      }
    }
  }
  gt_free(escaped_target);
  gt_str_delete(unescaped_target);
  gt_splitter_delete(splitter);
  return had_err;
}

// Assembly:
subq $0xa8, %rsp
movb %sil, %al
movq 0xd0(%rsp), %rsi
movl 0xc8(%rsp), %esi
movq 0xc0(%rsp), %rsi
movq 0xb8(%rsp), %rsi
movq 0xb0(%rsp), %rsi
movq %rdi, 0xa0(%rsp)
andb $0x1, %al
movb %al, 0x9f(%rsp)
movq %rdx, 0x90(%rsp)
movq %rcx, 0x88(%rsp)
movq %r8, 0x80(%rsp)
movq %r9, 0x78(%rsp)
movl $0x0, 0x3c(%rsp)
cmpq $0x0, 0xd0(%rsp)
je 0x2bbdd
movq 0xd0(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x2bba5
jmp 0x2bbdd
movq 0x18842c(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1324b0(%rip), %rsi    # 0x15e066
leaq 0x132a8b(%rip), %rdx    # 0x15e648
leaq 0x137d43(%rip), %rcx    # 0x163907
leaq 0x1379e0(%rip), %r8     # 0x1635ab
movl $0x11a, %r9d            # imm = 0x11A
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2bbdf
jmp 0x2bbe1
cmpq $0x0, 0xa0(%rsp)
je 0x2bbf7
cmpq $0x0, 0xc0(%rsp)
jne 0x2bc2f
movq 0x1883da(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13245e(%rip), %rsi    # 0x15e066
leaq 0x137d0f(%rip), %rdx    # 0x16391e
leaq 0x137cf1(%rip), %rcx    # 0x163907
leaq 0x13798e(%rip), %r8     # 0x1635ab
movl $0x11b, %r9d            # imm = 0x11B
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2bc31
callq 0x16a10
movq %rax, 0x50(%rsp)
callq 0x18f00
movq %rax, 0x68(%rsp)
movq 0xa0(%rsp), %rdi
callq 0x7c400
movq %rax, 0x60(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x60(%rsp), %rdi
callq 0xb240
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq %rax, %rdx
movl $0x20, %ecx
callq 0x16a30
movq 0x50(%rsp), %rdi
callq 0x17010
movq %rax, 0x70(%rsp)
cmpq $0x3, 0x70(%rsp)
je 0x2bce0
cmpq $0x4, 0x70(%rsp)
je 0x2bce0
movq 0xd0(%rsp), %rdi
movq 0xa0(%rsp), %rdx
movl 0xc8(%rsp), %ecx
movq 0xc0(%rsp), %r8
leaq 0x137c5f(%rip), %rsi    # 0x163930
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x3c(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0x3c(%rsp)
jne 0x2bd38
movq 0x68(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x50(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x16f20
movq %rax, 0x20(%rsp)
movq 0x50(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x16f20
movq %rax, %rdi
callq 0xb240
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %rax, %rdx
movq 0xd0(%rsp), %rcx
callq 0xa7260
movl %eax, 0x3c(%rsp)
cmpl $0x0, 0x3c(%rsp)
jne 0x2bd64
movq 0x68(%rsp), %rdi
movq 0xc0(%rsp), %rsi
movl 0xc8(%rsp), %edx
movq 0xd0(%rsp), %rcx
callq 0x2bfe0
movl %eax, 0x3c(%rsp)
cmpl $0x0, 0x3c(%rsp)
jne 0x2bd88
cmpq $0x0, 0x90(%rsp)
je 0x2bd88
movq 0x90(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0x191b0
cmpl $0x0, 0x3c(%rsp)
jne 0x2bda6
cmpq $0x0, 0x78(%rsp)
je 0x2bda6
movq 0x78(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0x1b2a0
cmpl $0x0, 0x3c(%rsp)
jne 0x2be5f
testb $0x1, 0x9f(%rsp)
je 0x2be0d
movq 0x50(%rsp), %rdi
movl $0x1, %esi
callq 0x16f20
movq %rax, 0x10(%rsp)
movq 0x50(%rsp), %rdi
movl $0x2, %esi
callq 0x16f20
movq 0x10(%rsp), %rsi
movq %rax, %rdx
movl 0xc8(%rsp), %ecx
movq 0xc0(%rsp), %r8
movq 0xd0(%rsp), %r9
leaq 0x40(%rsp), %rdi
callq 0x15c90
movl %eax, 0x3c(%rsp)
jmp 0x2be5d
movq 0x50(%rsp), %rdi
movl $0x1, %esi
callq 0x16f20
movq %rax, 0x8(%rsp)
movq 0x50(%rsp), %rdi
movl $0x2, %esi
callq 0x16f20
movq 0x8(%rsp), %rsi
movq %rax, %rdx
movl 0xc8(%rsp), %ecx
movq 0xc0(%rsp), %r8
movq 0xd0(%rsp), %r9
leaq 0x40(%rsp), %rdi
callq 0x15770
movl %eax, 0x3c(%rsp)
jmp 0x2be5f
cmpl $0x0, 0x3c(%rsp)
jne 0x2be8a
cmpq $0x0, 0x88(%rsp)
je 0x2be8a
movq 0x88(%rsp), %rax
movq 0x40(%rsp), %rcx
movq %rcx, (%rax)
movq 0x48(%rsp), %rcx
movq %rcx, 0x8(%rax)
cmpl $0x0, 0x3c(%rsp)
jne 0x2beb3
cmpq $0x0, 0xb0(%rsp)
je 0x2beb3
movq 0xb0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movl $0x10, %edx
callq 0x76220
cmpl $0x0, 0x3c(%rsp)
jne 0x2bf9b
movq 0x50(%rsp), %rdi
callq 0x17010
cmpq $0x4, %rax
jne 0x2bf54
movq 0x50(%rsp), %rdi
movl $0x3, %esi
callq 0x16f20
movq %rax, %rsi
movl 0xc8(%rsp), %edx
movq 0xc0(%rsp), %rcx
movq 0xd0(%rsp), %r8
leaq 0x5c(%rsp), %rdi
callq 0x15ea0
movl %eax, 0x3c(%rsp)
cmpl $0x0, 0x3c(%rsp)
jne 0x2bf29
cmpq $0x0, 0x80(%rsp)
je 0x2bf29
movl 0x5c(%rsp), %ecx
movq 0x80(%rsp), %rax
movl %ecx, (%rax)
cmpl $0x0, 0x3c(%rsp)
jne 0x2bf52
cmpq $0x0, 0xb8(%rsp)
je 0x2bf52
movq 0xb8(%rsp), %rdi
leaq 0x5c(%rsp), %rsi
movl $0x4, %edx
callq 0x76220
jmp 0x2bf99
cmpq $0x0, 0x80(%rsp)
je 0x2bf6d
movq 0x80(%rsp), %rax
movl $0x4, (%rax)
cmpq $0x0, 0xb8(%rsp)
je 0x2bf97
movl $0x4, 0x5c(%rsp)
movq 0xb8(%rsp), %rdi
leaq 0x5c(%rsp), %rsi
movl $0x4, %edx
callq 0x76220
jmp 0x2bf99
jmp 0x2bf9b
movq 0x60(%rsp), %rdi
leaq 0x137604(%rip), %rsi    # 0x1635ab
movl $0x15a, %edx            # imm = 0x15A
callq 0xdab0
movq 0x68(%rsp), %rdi
callq 0x1afc0
movq 0x50(%rsp), %rdi
callq 0x17060
movl 0x3c(%rsp), %eax
addq $0xa8, %rsp
retq
nopw %cs:(%rax,%rax)