// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/rdj-strgraph.c
// Function: gt_spmproc_strgraph_add
void gt_spmproc_strgraph_add(GtUword suffix_readnum,
    GtUword prefix_readnum, GtUword length,
    bool suffixseq_direct, bool prefixseq_direct, void *graph)
{
  GtStrgraph *strgraph = graph;
  GtStrgraphLength edgelen = (GtStrgraphLength)length;
  gt_assert(strgraph != NULL);
  gt_assert(suffixseq_direct || prefixseq_direct);

  if (suffix_readnum == prefix_readnum && !strgraph->load_self_spm)
    return;

  if (suffixseq_direct) {
    if (prefixseq_direct) {
      gt_strgraph_add_edge(strgraph, GT_STRGRAPH_V_E(suffix_readnum),
                         GT_STRGRAPH_V_E(prefix_readnum), edgelen);
      gt_strgraph_add_edge(strgraph, GT_STRGRAPH_V_B(prefix_readnum),
                         GT_STRGRAPH_V_B(suffix_readnum), edgelen);
    } else {
      gt_strgraph_add_edge(strgraph, GT_STRGRAPH_V_E(suffix_readnum),
                         GT_STRGRAPH_V_B(prefix_readnum), edgelen);
      gt_strgraph_add_edge(strgraph, GT_STRGRAPH_V_E(prefix_readnum),
                         GT_STRGRAPH_V_B(suffix_readnum), edgelen);
    }
  } else {
    if (prefixseq_direct) {
      gt_strgraph_add_edge(strgraph, GT_STRGRAPH_V_B(suffix_readnum),
                         GT_STRGRAPH_V_E(prefix_readnum), edgelen);
      gt_strgraph_add_edge(strgraph, GT_STRGRAPH_V_B(prefix_readnum),
                         GT_STRGRAPH_V_E(suffix_readnum), edgelen);
    } else {
      gt_strgraph_add_edge(strgraph, GT_STRGRAPH_V_B(suffix_readnum),
                         GT_STRGRAPH_V_B(prefix_readnum), edgelen);
      gt_strgraph_add_edge(strgraph, GT_STRGRAPH_V_E(prefix_readnum),
                         GT_STRGRAPH_V_E(suffix_readnum), edgelen);
    }
  }
}

// Assembly:
subq $0x38, %rsp
movb %r8b, %al
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
andb $0x1, %cl
movb %cl, 0x1f(%rsp)
andb $0x1, %al
movb %al, 0x1e(%rsp)
movq %r9, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rax
movq %rax, (%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x2922db
movq 0x3a9cf6(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x283d5f(%rip), %rsi    # 0x516013
leaq 0x2efe49(%rip), %rdx    # 0x582104
leaq 0x2f0248(%rip), %rcx    # 0x58250a
leaq 0x2efd77(%rip), %r8     # 0x582040
movl $0x31a, %r9d            # imm = 0x31A
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x2922dd
jmp 0x2922df
testb $0x1, 0x1f(%rsp)
jne 0x292325
testb $0x1, 0x1e(%rsp)
jne 0x292325
movq 0x3a9cac(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x283d15(%rip), %rsi    # 0x516013
leaq 0x2f021d(%rip), %rdx    # 0x582522
leaq 0x2f01fe(%rip), %rcx    # 0x58250a
leaq 0x2efd2d(%rip), %r8     # 0x582040
movl $0x31b, %r9d            # imm = 0x31B
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x292327
movq 0x30(%rsp), %rax
cmpq 0x28(%rsp), %rax
jne 0x292343
movq 0x8(%rsp), %rax
testb $0x1, 0x28(%rax)
jne 0x292343
jmp 0x292477
testb $0x1, 0x1f(%rsp)
je 0x2923e4
testb $0x1, 0x1e(%rsp)
je 0x29239b
movq 0x8(%rsp), %rdi
movq 0x30(%rsp), %rsi
shlq %rsi
addq $0x1, %rsi
movq 0x28(%rsp), %rdx
shlq %rdx
addq $0x1, %rdx
movq (%rsp), %rcx
callq 0x292770
movq 0x8(%rsp), %rdi
movq 0x28(%rsp), %rsi
shlq %rsi
movq 0x30(%rsp), %rdx
shlq %rdx
movq (%rsp), %rcx
callq 0x292770
jmp 0x2923df
movq 0x8(%rsp), %rdi
movq 0x30(%rsp), %rsi
shlq %rsi
addq $0x1, %rsi
movq 0x28(%rsp), %rdx
shlq %rdx
movq (%rsp), %rcx
callq 0x292770
movq 0x8(%rsp), %rdi
movq 0x28(%rsp), %rsi
shlq %rsi
addq $0x1, %rsi
movq 0x30(%rsp), %rdx
shlq %rdx
movq (%rsp), %rcx
callq 0x292770
jmp 0x292477
testb $0x1, 0x1e(%rsp)
je 0x292431
movq 0x8(%rsp), %rdi
movq 0x30(%rsp), %rsi
shlq %rsi
movq 0x28(%rsp), %rdx
shlq %rdx
addq $0x1, %rdx
movq (%rsp), %rcx
callq 0x292770
movq 0x8(%rsp), %rdi
movq 0x28(%rsp), %rsi
shlq %rsi
movq 0x30(%rsp), %rdx
shlq %rdx
addq $0x1, %rdx
movq (%rsp), %rcx
callq 0x292770
jmp 0x292475
movq 0x8(%rsp), %rdi
movq 0x30(%rsp), %rsi
shlq %rsi
movq 0x28(%rsp), %rdx
shlq %rdx
movq (%rsp), %rcx
callq 0x292770
movq 0x8(%rsp), %rdi
movq 0x28(%rsp), %rsi
shlq %rsi
addq $0x1, %rsi
movq 0x30(%rsp), %rdx
shlq %rdx
addq $0x1, %rdx
movq (%rsp), %rcx
callq 0x292770
jmp 0x292477
addq $0x38, %rsp
retq
nopl (%rax)