// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/snp_annotator_visitor.c
// Function: gt_snp_annotator_visitor_new
GtNodeVisitor* gt_snp_annotator_visitor_new(GtFeatureNode *gene,
                                            GtTransTable *trans_table,
                                            GtRegionMapping *rmap,
                                            GtError *err)
{
  GtNodeVisitor *nv;
  GtSNPAnnotatorVisitor *sav;
  gt_assert(gene && gt_feature_node_get_type(gene) == gt_symbol(gt_ft_gene));
  nv = gt_node_visitor_create(gt_snp_annotator_visitor_class());
  sav = snp_annotator_visitor_cast(nv);
  sav->gene = (GtFeatureNode*) gt_genome_node_ref((GtGenomeNode*) gene);
  sav->rmap = gt_region_mapping_ref(rmap);
  sav->mRNA_type = gt_symbol(gt_ft_mRNA);
  sav->CDS_type = gt_symbol(gt_ft_CDS);
  sav->SNV_type = gt_symbol(gt_ft_SNV);
  sav->SNP_type = gt_symbol(gt_ft_SNP);
  sav->rnaseqs = gt_hashmap_new(GT_HASH_DIRECT, NULL, gt_free_func);
  if (trans_table) {
    sav->tt = trans_table;
    sav->own_tt = false;
  } else {
    sav->tt = gt_trans_table_new_standard(err);
    sav->own_tt = true;
  }
  if (!sav->tt || gt_snp_annotator_visitor_prepare_gene(sav, err) != 0) {
    gt_node_visitor_delete(nv);
    return NULL;
  }
  return nv;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rcx, 0x10(%rsp)
testq %rdi, %rdi
je 0x11a2dd
movq %rdx, %r14
movq %rsi, %rbx
movq %rdi, %r12
callq 0xda338
movq %rax, %r15
leaq 0x263b99(%rip), %rdi    # 0x37db1b
callq 0xaed4b
cmpq %rax, %r15
jne 0x11a2dd
callq 0x119680
movq %rax, %rdi
callq 0x102da0
movq %rax, %r13
callq 0x119680
movq %rax, %rdi
movq %r13, %rsi
callq 0x102dfe
movq %rax, %r15
movq %r12, %rdi
callq 0xdccf8
movq %rax, 0x10(%r15)
movq %r14, %rdi
callq 0x10fa8b
movq %rax, 0x18(%r15)
leaq 0x200d1d(%rip), %rdi    # 0x31acef
callq 0xaed4b
movq %rax, 0x38(%r15)
leaq 0x208843(%rip), %rdi    # 0x322825
callq 0xaed4b
movq %rax, 0x40(%r15)
leaq 0x2195ea(%rip), %rdi    # 0x3335dc
callq 0xaed4b
movq %rax, 0x48(%r15)
leaq 0x2195de(%rip), %rdi    # 0x3335e0
callq 0xaed4b
movq %rax, 0x50(%r15)
leaq -0x867d3(%rip), %rdx    # 0x9383f
xorl %edi, %edi
xorl %esi, %esi
callq 0x8f330
movq %rax, 0x20(%r15)
testq %rbx, %rbx
je 0x11a02f
movq %rbx, 0x28(%r15)
movb $0x0, 0x30(%r15)
jmp 0x11a04b
movq 0x10(%rsp), %rdi
callq 0xb12f7
movq %rax, 0x28(%r15)
movb $0x1, 0x30(%r15)
testq %rax, %rax
je 0x11a29b
callq 0xacb84
movq %rax, %r12
movq 0x10(%r15), %rdi
callq 0xdd14a
movq %rax, 0x30(%rsp)
movq 0x10(%r15), %rdi
callq 0xdc6f0
movq %rax, 0x18(%rsp)
xorl %r14d, %r14d
movq $0x0, 0x8(%rsp)
testl %r14d, %r14d
jne 0x11a289
movq 0x18(%rsp), %rdi
callq 0xdc92e
testq %rax, %rax
je 0x11a20f
movq %rax, %rbp
movq %rax, %rdi
callq 0xda338
xorl %r14d, %r14d
cmpq 0x38(%r15), %rax
jne 0x11a07b
cmpq $0x0, 0x8(%rsp)
je 0x11a145
movq %r12, %rdi
callq 0xad289
leaq 0x1(%rax), %rdi
pushq $0x1
popq %rsi
leaq 0x2195f8(%rip), %rdx    # 0x3336c5
movl $0x138, %ecx            # imm = 0x138
callq 0x9334a
movq %rax, %rbx
movq %r12, %rdi
callq 0xad1fa
movq %rax, %r14
movq %r12, %rdi
callq 0xad289
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x17350
movq 0x10(%r15), %rdi
callq 0xd9d99
cmpl $0x1, %eax
jne 0x11a12c
movq %r12, %rdi
callq 0xad289
movq %rbx, %rdi
movq %rax, %rsi
movq 0x10(%rsp), %rdx
callq 0x111ab8
movl %eax, %r14d
testl %eax, %eax
jne 0x11a07b
movq 0x20(%r15), %rdi
movq 0x8(%rsp), %rsi
movq %rbx, %rdx
callq 0x8f4bd
movq %r12, %rdi
callq 0xad357
movq %r13, 0x28(%rsp)
movq %rbp, %rdi
callq 0xdc6f0
movq %rax, %rbx
xorl %r14d, %r14d
testl %r14d, %r14d
jne 0x11a1f8
movq %rbx, %rdi
callq 0xdc92e
testq %rax, %rax
je 0x11a1f8
movq %rax, %r13
movq %rax, %rdi
callq 0xda338
movl $0x0, %r14d
cmpq 0x40(%r15), %rax
jne 0x11a158
movq %r13, %rdi
callq 0xdd1f4
movq %rdx, %r8
movq %rax, 0x38(%rsp)
movq %rdx, 0x40(%rsp)
movq 0x18(%r15), %rdi
leaq 0x20(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rax, %rcx
movq 0x10(%rsp), %r9
callq 0x10fad0
movl %eax, %r14d
testl %eax, %eax
jne 0x11a158
movq 0x20(%rsp), %r13
leaq 0x38(%rsp), %rdi
callq 0xa31ee
movq %r12, %rdi
movq %r13, %rsi
movq %rax, %rdx
callq 0xacd9e
movq 0x20(%rsp), %rdi
leaq 0x2194dc(%rip), %rsi    # 0x3336c5
movl $0x150, %edx            # imm = 0x150
callq 0x936f9
jmp 0x11a158
movq %rbx, %rdi
callq 0xdc9f1
movq %rbp, 0x8(%rsp)
movq 0x28(%rsp), %r13
jmp 0x11a07b
cmpq $0x0, 0x8(%rsp)
je 0x11a2b9
movq %r12, %rdi
callq 0xad289
leaq 0x1(%rax), %rdi
leaq 0x219497(%rip), %rdx    # 0x3336c5
pushq $0x1
popq %rsi
movl $0x159, %ecx            # imm = 0x159
callq 0x9334a
movq %rax, %rbx
movq %r12, %rdi
callq 0xad1fa
movq %rax, %r14
movq %r12, %rdi
callq 0xad289
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x17350
movq 0x10(%r15), %rdi
callq 0xd9d99
cmpl $0x1, %eax
jne 0x11a2a8
movq %r12, %rdi
callq 0xad289
movq %rbx, %rdi
movq %rax, %rsi
movq 0x10(%rsp), %rdx
callq 0x111ab8
testl %eax, %eax
je 0x11a2a8
movq 0x18(%rsp), %rdi
callq 0xdc9f1
movq %r12, %rdi
callq 0xae103
movq %r13, %rdi
callq 0x10327a
xorl %r13d, %r13d
jmp 0x11a2cb
movq 0x20(%r15), %rdi
movq 0x8(%rsp), %rsi
movq %rbx, %rdx
callq 0x8f4bd
movq 0x18(%rsp), %rdi
callq 0xdc9f1
movq %r12, %rdi
callq 0xae103
movq %r13, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x31dc84(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cad25(%rip), %rsi    # 0x2e5013
leaq 0x219373(%rip), %rdx    # 0x333668
leaq 0x2193ac(%rip), %rcx    # 0x3336a8
leaq 0x2193c2(%rip), %r8     # 0x3336c5
movl $0x16f, %r9d            # imm = 0x16F
xorl %eax, %eax
callq 0x17a50
callq 0x17390
nopl (%rax)