// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/splice_site_info_visitor.c
// Function: process_intron
static int process_intron(GtSpliceSiteInfoVisitor *ssiv, GtGenomeNode *intron,
                          GtError *err)
{
  char *sequence = NULL;
  GtStrand strand;
  GtRange range;
  char site[5];
  GtStr *seqid;
  int had_err = 0;
  gt_error_check(err);
  gt_assert(ssiv && intron);
  ssiv->intron_processed = true;
  range = gt_genome_node_get_range(intron);
  gt_assert(range.start); /* 1-based coordinates */
  if (gt_range_length(&range) >= 4) {
    seqid = gt_genome_node_get_seqid(intron);
    had_err = gt_region_mapping_get_sequence(ssiv->region_mapping, &sequence,
                                             seqid, range.start, range.end,
                                             err);
    if (!had_err) {
      strand = gt_feature_node_get_strand((GtFeatureNode*) intron);
      if (strand == GT_STRAND_FORWARD || strand == GT_STRAND_REVERSE) {
        /* fill site */
        site[0] = tolower(sequence[0]);
        site[1] = tolower(sequence[1]);
        site[2] = tolower(sequence[gt_range_length(&range)-2]);
        site[3] = tolower(sequence[gt_range_length(&range)-1]);
        site[4] = '\0';
        if (strand == GT_STRAND_REVERSE)
          had_err = gt_reverse_complement(site, 4, err);
        if (!had_err) {
          /* add site to distributions */
          gt_string_distri_add(ssiv->splicesites, site);
          gt_string_distri_add(ssiv->acceptorsites, site + 2);
          site[2] = '\0';
          gt_string_distri_add(ssiv->donorsites, site);
          ssiv->show = true;
        }
      }
      else {
        gt_warning("skipping intron with unknown orientation "
                   "(file '%s', line %u)", gt_genome_node_get_filename(intron),
                   gt_genome_node_get_line_number(intron));
      }
      gt_free(sequence);
    }
  }
  return had_err;
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x70(%rsp)
movq %rsi, 0x68(%rsp)
movq %rdx, 0x60(%rsp)
movq $0x0, 0x58(%rsp)
movl $0x0, 0x2c(%rsp)
cmpq $0x0, 0x60(%rsp)
je 0x1dfe04
movq 0x60(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x1dfdcc
jmp 0x1dfe04
movq 0x45c1cd(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x336236(%rip), %rsi    # 0x516013
leaq 0x3363db(%rip), %rdx    # 0x5161bf
leaq 0x386e1e(%rip), %rcx    # 0x566c09
leaq 0x386c55(%rip), %r8     # 0x566a47
movl $0x43, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1dfe06
jmp 0x1dfe08
cmpq $0x0, 0x70(%rsp)
je 0x1dfe18
cmpq $0x0, 0x68(%rsp)
jne 0x1dfe50
movq 0x45c181(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3361ea(%rip), %rsi    # 0x516013
leaq 0x386de8(%rip), %rdx    # 0x566c18
leaq 0x386dd2(%rip), %rcx    # 0x566c09
leaq 0x386c09(%rip), %r8     # 0x566a47
movl $0x44, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1dfe52
movq 0x70(%rsp), %rax
movb $0x1, 0x31(%rax)
movq 0x68(%rsp), %rdi
callq 0x171cc0
movq %rax, 0x18(%rsp)
movq %rdx, 0x20(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x48(%rsp)
cmpq $0x0, 0x40(%rsp)
jne 0x1dfec3
movq 0x45c10e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x336177(%rip), %rsi    # 0x516013
leaq 0x34afaa(%rip), %rdx    # 0x52ae4d
leaq 0x386d5f(%rip), %rcx    # 0x566c09
leaq 0x386b96(%rip), %r8     # 0x566a47
movl $0x47, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1dfec5
leaq 0x40(%rsp), %rdi
callq 0x107320
cmpq $0x4, %rax
jb 0x1e0077
movq 0x68(%rsp), %rdi
callq 0x171b70
movq %rax, 0x30(%rsp)
movq 0x70(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x30(%rsp), %rdx
movq 0x40(%rsp), %rcx
movq 0x48(%rsp), %r8
movq 0x60(%rsp), %r9
leaq 0x58(%rsp), %rsi
callq 0x1c8040
movl %eax, 0x2c(%rsp)
cmpl $0x0, 0x2c(%rsp)
jne 0x1e0075
movq 0x68(%rsp), %rdi
callq 0x16cc70
movl %eax, 0x54(%rsp)
cmpl $0x0, 0x54(%rsp)
je 0x1dff3e
cmpl $0x1, 0x54(%rsp)
jne 0x1e0033
movq 0x58(%rsp), %rax
movsbl (%rax), %edi
callq 0x19a20
movb %al, 0x3b(%rsp)
movq 0x58(%rsp), %rax
movsbl 0x1(%rax), %edi
callq 0x19a20
movb %al, 0x3c(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x40(%rsp), %rdi
callq 0x107320
movq %rax, %rcx
movq 0x8(%rsp), %rax
subq $0x2, %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, 0x3d(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x40(%rsp), %rdi
callq 0x107320
movq %rax, %rcx
movq 0x10(%rsp), %rax
subq $0x1, %rcx
movsbl (%rax,%rcx), %edi
callq 0x19a20
movb %al, 0x3e(%rsp)
movb $0x0, 0x3f(%rsp)
cmpl $0x1, 0x54(%rsp)
jne 0x1dffdf
leaq 0x3b(%rsp), %rdi
movq 0x60(%rsp), %rdx
movl $0x4, %esi
callq 0x1cb4f0
movl %eax, 0x2c(%rsp)
cmpl $0x0, 0x2c(%rsp)
jne 0x1e0031
movq 0x70(%rsp), %rax
movq 0x18(%rax), %rdi
leaq 0x3b(%rsp), %rsi
callq 0x1201a0
movq 0x70(%rsp), %rax
movq 0x28(%rax), %rdi
leaq 0x3b(%rsp), %rsi
addq $0x2, %rsi
callq 0x1201a0
movb $0x0, 0x3d(%rsp)
movq 0x70(%rsp), %rax
movq 0x20(%rax), %rdi
leaq 0x3b(%rsp), %rsi
callq 0x1201a0
movq 0x70(%rsp), %rax
movb $0x1, 0x30(%rax)
jmp 0x1e005f
movq 0x68(%rsp), %rdi
callq 0x171a90
movq %rax, (%rsp)
movq 0x68(%rsp), %rdi
callq 0x171b20
movq (%rsp), %rsi
movl %eax, %edx
leaq 0x386bcf(%rip), %rdi    # 0x566c27
movb $0x0, %al
callq 0x1267d0
movq 0x58(%rsp), %rdi
leaq 0x3869dc(%rip), %rsi    # 0x566a47
movl $0x66, %edx
callq 0xe88c0
jmp 0x1e0077
movl 0x2c(%rsp), %eax
addq $0x78, %rsp
retq