// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/match/rdj-strgraph.c
// Function: gt_strgraph_dot_show_context
static int gt_strgraph_dot_show_context(GtStrgraph *strgraph,
    GtStrgraphFormat format, GtFile *outfp, GtUword *readnums,
    GtUword nofreadnums, GtUword maxdepth, bool extend,
    GtUword group, GtError *err)
{
  int had_err = 0;
  GtArray *stack;
  GtStrgraphVnumAndDepth to_add, *current;
  GtStrgraphVnum v, w;
  GtStrgraphVEdgenum j;
  GtUword d;
  GtUword sn1, sn2, readnum, i;
  bool is_e1, is_e2;

  gt_assert(format == GT_STRGRAPH_DOT || format == GT_STRGRAPH_DOT_BI);
  stack = gt_array_new(sizeof (GtStrgraphVnumAndDepth));
  for (i = 0; i < nofreadnums; i++)
  {
    readnum = readnums[i];
    if (readnum >= (GtUword)GT_STRGRAPH_NOFREADS(strgraph))
    {
      had_err = -1;
      gt_error_set(err, "Can't show context of read "GT_WU" "
          "because the readset has "FormatGtStrgraphVnum" reads", readnum,
          GT_STRGRAPH_NOFREADS(strgraph));
      break;
    }
    to_add.v = GT_STRGRAPH_V_B(readnum);
    to_add.d = 1UL;
    gt_array_add(stack, to_add);
    gt_strgraph_dot_show_vertex(outfp, format, strgraph, to_add.v, 1UL, group);
    to_add.v = GT_STRGRAPH_V_E(readnum);
    to_add.d = 1UL;
    gt_array_add(stack, to_add);
    gt_strgraph_dot_show_vertex(outfp, format, strgraph, to_add.v, 1UL, group);
  }
  if (had_err)
  {
    gt_array_delete(stack);
    return had_err;
  }
  while (gt_array_size(stack) > 0)
  {
    current = gt_array_pop(stack);
    v = current->v;
    d = current->d;
    if (!GT_STRGRAPH_DOT_VISITED(v))
    {
      sn1 = GT_STRGRAPH_V_READNUM(v);
      if (d > 1UL)
      {
        gt_strgraph_dot_show_vertex(outfp, format, strgraph, v, d, 0);
      }
      if (GT_STRGRAPH_V_OUTDEG(strgraph, v) > 0)
      {
        is_e1 = GT_STRGRAPH_V_IS_E(v);
        for (j = 0; j < GT_STRGRAPH_V_NOFEDGES(strgraph, v); j++)
        {
          if (!GT_STRGRAPH_EDGE_IS_REDUCED(strgraph, v, j))
          {
            w = GT_STRGRAPH_EDGE_DEST(strgraph, v, j);
            sn2 = GT_STRGRAPH_V_READNUM(w);
            is_e2 = GT_STRGRAPH_V_IS_E(w);
            if (format == GT_STRGRAPH_DOT)
            {
              gt_strgraph_dot_show_edge(outfp, v, w,
                  GT_STRGRAPH_EDGE_LEN(strgraph, v, j));
            }
            else
            {
              gt_strgraph_dot_bi_show_edge(outfp, sn1, !is_e1, sn2, is_e2);
            }
            if (d < maxdepth ||
                (extend && GT_STRGRAPH_V_IS_INTERNAL(strgraph, v)))
            {
              if (!GT_STRGRAPH_DOT_VISITED(w))
              {
                to_add.v = w;
                to_add.d = d + 1;
                gt_array_add(stack, to_add);
              }
              w = GT_STRGRAPH_V_OTHER(w);
              if (!GT_STRGRAPH_DOT_VISITED(w))
              {
                to_add.v = w;
                to_add.d = d + 1;
                gt_array_add(stack, to_add);
              }
            }
          }
        }
      }
    }
    GT_STRGRAPH_DOT_SET_VISITED(v, d);
  }
  gt_array_delete(stack);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %r9, 0x60(%rsp)
movq %rcx, 0x8(%rsp)
movq %rdx, 0x38(%rsp)
movl %esi, 0x14(%rsp)
cmpl $0x2, %esi
jae 0x1d7892
movq %r8, %r14
movq %rdi, %r12
movl $0x10, %edi
callq 0xd214c
movq %rax, 0x18(%rsp)
testq %r14, %r14
je 0x1d77dd
xorl %r15d, %r15d
movq %r14, 0x30(%rsp)
movq 0x18(%rsp), %r13
movq 0x38(%rsp), %rbp
movq 0x8(%rsp), %rax
movq (%rax,%r15,8), %rbx
movq 0x80(%r12), %rcx
shrq %rcx
cmpq %rcx, %rbx
jae 0x1d77f7
addq %rbx, %rbx
movq %rbx, 0x20(%rsp)
movl $0x1, %eax
movq %rax, 0x28(%rsp)
movl $0x10, %edx
movq %r13, %rdi
leaq 0x20(%rsp), %rsi
callq 0xd2410
movq 0x20(%rsp), %rcx
movl $0x1, %r8d
movq %rbp, %rdi
movl 0x14(%rsp), %r14d
movl %r14d, %esi
movq %r12, %rdx
movq 0xa8(%rsp), %r9
callq 0x1d9924
movl $0x1, %eax
orq %rax, %rbx
movq %rbx, 0x20(%rsp)
movq %rax, 0x28(%rsp)
movl $0x10, %edx
movq %r13, %rdi
leaq 0x20(%rsp), %rsi
callq 0xd2410
movq 0x20(%rsp), %rcx
movl $0x1, %r8d
movq %rbp, %rdi
movl %r14d, %esi
movq 0x30(%rsp), %r14
movq %r12, %rdx
movq 0xa8(%rsp), %r9
callq 0x1d9924
incq %r15
cmpq %r15, %r14
jne 0x1d7094
jmp 0x1d77dd
movq %r14, %rdi
callq 0xd2242
movq 0x58(%r12), %rcx
testq %rcx, %rcx
je 0x1d785b
movq (%rax), %r13
cmpq %r13, 0x8(%rcx)
jbe 0x1d785b
movl 0x10(%rcx), %edx
cmpq $0x41, %rdx
jae 0x1d785b
movq 0x8(%rax), %rax
movq %rax, 0x8(%rsp)
movq (%rcx), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2f37dc
cmpl $0x2, %eax
je 0x1d776e
movq 0x58(%r12), %rax
testq %rax, %rax
je 0x1d7879
cmpq %r13, 0x8(%rax)
jbe 0x1d7879
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d7879
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2f37dc
cmpl $0x3, %eax
je 0x1d776e
cmpq $0x2, 0x8(%rsp)
jb 0x1d7208
movq 0x38(%rsp), %rdi
movl 0x14(%rsp), %esi
movq %r12, %rdx
movq %r13, %rcx
movq 0x8(%rsp), %r8
xorl %r9d, %r9d
callq 0x1d9924
movq 0x70(%r12), %rax
testq %rax, %rax
je 0x1d788d
cmpq %r13, 0x8(%rax)
jbe 0x1d788d
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d788d
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2f37dc
testq %rax, %rax
je 0x1d776e
movq 0x60(%r12), %rax
testq %rax, %rax
je 0x1d7838
movq %r13, %rcx
shrq %rcx
movq %rcx, 0x30(%rsp)
leaq 0x1(%r13), %rbp
movl %r13d, %ecx
andl $0x1, %ecx
leaq -0x1(%r13), %rsi
testb $0x1, %r13b
leaq 0x1d6bcb(%rip), %rdi    # 0x3ade42
leaq 0x1d6bbd(%rip), %rdx    # 0x3ade3b
cmoveq %rdx, %rdi
movq %rdi, 0x58(%rsp)
leal 0x42(%rcx,%rcx,2), %ecx
movl %ecx, 0x44(%rsp)
cmoveq %rbp, %rsi
movq %rsi, 0x48(%rsp)
movq 0x8(%rsp), %rcx
incq %rcx
movq %rcx, 0x50(%rsp)
xorl %r15d, %r15d
cmpq %rbp, 0x8(%rax)
jbe 0x1d7838
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d7838
movq (%rax), %rdi
movq %rdx, %rsi
imulq %rbp, %rsi
callq 0x2f37dc
movq %rax, %rbx
movq 0x60(%r12), %rax
testq %rax, %rax
je 0x1d7833
cmpq %r13, 0x8(%rax)
jbe 0x1d7833
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d7833
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2f37dc
subq %rax, %rbx
cmpq %rbx, %r15
jae 0x1d776e
movq 0x60(%r12), %rax
testq %rax, %rax
je 0x1d7842
cmpq %r13, 0x8(%rax)
jbe 0x1d7842
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d7842
movq 0x88(%r12), %rbx
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2f37dc
testq %rbx, %rbx
je 0x1d783d
addq %r15, %rax
cmpq %rax, 0x8(%rbx)
jbe 0x1d783d
movl 0x10(%rbx), %edx
cmpq $0x41, %rdx
jae 0x1d783d
movq (%rbx), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2f37dc
movq %rax, %rbx
movq 0x90(%r12), %rdi
callq 0x2f09dd
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %edx
notl %edx
addl %edx, %edx
movslq %edx, %rax
andq %rbx, %rax
shrq %rax
cmpq 0x90(%r12), %rax
je 0x1d7758
movq 0x60(%r12), %rax
testq %rax, %rax
je 0x1d784c
cmpq %r13, 0x8(%rax)
jbe 0x1d784c
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d784c
movq 0x88(%r12), %rbx
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2f37dc
testq %rbx, %rbx
je 0x1d7847
addq %r15, %rax
cmpq %rax, 0x8(%rbx)
jbe 0x1d7847
movl 0x10(%rbx), %edx
cmpq $0x41, %rdx
jae 0x1d7847
movq (%rbx), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2f37dc
movq %rax, %rbx
movq 0x80(%r12), %rdi
callq 0x2f09dd
movl $0xffffffff, %r14d      # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %r14d
notl %r14d
movq 0x90(%r12), %rdi
callq 0x2f09dd
leal 0x1(%rax), %ecx
shll %cl, %r14d
movslq %r14d, %r14
andq %rbx, %r14
movq 0x90(%r12), %rdi
callq 0x2f09dd
leal 0x1(%rax), %ecx
shrq %cl, %r14
cmpl $0x0, 0x14(%rsp)
je 0x1d74b0
movq %r14, %rcx
shrq %rcx
testb $0x1, %r14b
leaq 0x1d69b8(%rip), %r9     # 0x3ade3b
leaq 0x1d69b8(%rip), %rax    # 0x3ade42
cmoveq %rax, %r9
movq 0x38(%rsp), %rdi
leaq 0x1d903d(%rip), %rsi    # 0x3b04d7
movq 0x30(%rsp), %rdx
movq 0x58(%rsp), %r8
xorl %eax, %eax
callq 0xfee51
jmp 0x1d7578
movq 0x60(%r12), %rax
testq %rax, %rax
je 0x1d7860
cmpq %r13, 0x8(%rax)
jbe 0x1d7860
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d7860
movq 0x88(%r12), %rbx
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2f37dc
testq %rbx, %rbx
je 0x1d7865
addq %r15, %rax
cmpq %rax, 0x8(%rbx)
jbe 0x1d7865
movl 0x10(%rbx), %edx
cmpq $0x41, %rdx
jae 0x1d7865
movq (%rbx), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2f37dc
movq %rax, %rbx
movq 0x90(%r12), %rdi
callq 0x2f09dd
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %edx
notl %edx
addl %edx, %edx
movslq %edx, %rax
andq %rbx, %rax
shrq %rax
movq %r14, %r8
shrq %r8
movl %r14d, %ecx
andl $0x1, %ecx
leal (%rcx,%rcx,2), %r9d
addl $0x42, %r9d
movq %rax, (%rsp)
movq 0x38(%rsp), %rdi
leaq 0x1d8f4d(%rip), %rsi    # 0x3b04b5
movq 0x30(%rsp), %rdx
movl 0x44(%rsp), %ecx
xorl %eax, %eax
callq 0xfee51
movq 0x8(%rsp), %rax
cmpq 0x60(%rsp), %rax
jae 0x1d76cf
movq 0x58(%r12), %rax
testq %rax, %rax
je 0x1d7851
cmpq %r14, 0x8(%rax)
jbe 0x1d7851
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d7851
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r14, %rsi
callq 0x2f37dc
cmpl $0x2, %eax
je 0x1d761d
movq 0x58(%r12), %rax
testq %rax, %rax
je 0x1d786f
cmpq %r14, 0x8(%rax)
jbe 0x1d786f
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d786f
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r14, %rsi
callq 0x2f37dc
cmpl $0x3, %eax
je 0x1d761d
movq %r14, 0x20(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x28(%rsp)
movl $0x10, %edx
movq 0x18(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xd2410
movq 0x58(%r12), %rax
testq %rax, %rax
je 0x1d7856
movl %r14d, %ebx
andl $0x1, %ebx
negq %rbx
orq $0x1, %rbx
addq %r14, %rbx
cmpq %rbx, 0x8(%rax)
jbe 0x1d7856
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d7856
movq (%rax), %rdi
movq %rdx, %rsi
imulq %rbx, %rsi
callq 0x2f37dc
cmpl $0x2, %eax
je 0x1d7758
movq 0x58(%r12), %rax
testq %rax, %rax
je 0x1d786a
cmpq %rbx, 0x8(%rax)
jbe 0x1d786a
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d786a
movq (%rax), %rdi
movq %rdx, %rsi
imulq %rbx, %rsi
callq 0x2f37dc
cmpl $0x3, %eax
je 0x1d7758
movq %rbx, 0x20(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x28(%rsp)
movl $0x10, %edx
movq 0x18(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0xd2410
jmp 0x1d7758
cmpb $0x0, 0xa0(%rsp)
je 0x1d7758
movq 0x70(%r12), %rax
testq %rax, %rax
je 0x1d7874
cmpq %r13, 0x8(%rax)
jbe 0x1d7874
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d7874
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2f37dc
cmpq $0x1, %rax
jne 0x1d7758
movq 0x70(%r12), %rax
testq %rax, %rax
je 0x1d7888
movq 0x48(%rsp), %rcx
cmpq %rcx, 0x8(%rax)
jbe 0x1d7888
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d7888
movq (%rax), %rdi
movq %rdx, %rsi
imulq 0x48(%rsp), %rsi
callq 0x2f37dc
cmpq $0x1, %rax
je 0x1d7588
incq %r15
movq 0x60(%r12), %rax
testq %rax, %rax
jne 0x1d72a8
jmp 0x1d7838
movq 0x58(%r12), %rax
cmpq $0x1, 0x8(%rsp)
jne 0x1d77a9
testq %rax, %rax
je 0x1d787e
cmpq %r13, 0x8(%rax)
jbe 0x1d787e
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d787e
movq (%rax), %rdi
imulq %rdx, %r13
movl $0x3, %ecx
jmp 0x1d77d5
testq %rax, %rax
je 0x1d7883
cmpq %r13, 0x8(%rax)
jbe 0x1d7883
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1d7883
movq (%rax), %rdi
imulq %rdx, %r13
movl $0x2, %ecx
movq %r13, %rsi
callq 0x2f388c
movq 0x18(%rsp), %r14
movq %r14, %rdi
callq 0xd24e0
testq %rax, %rax
jne 0x1d7156
xorl %ebx, %ebx
jmp 0x1d781a
leaq 0x1d8d73(%rip), %rsi    # 0x3b0571
movq 0xb0(%rsp), %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0xfcb67
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq 0x18(%rsp), %r14
movq %r14, %rdi
callq 0xd2938
movl %ebx, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x71451
callq 0x7148a
callq 0x713df
callq 0x71418
callq 0x7136d
callq 0x713a6
callq 0x712c2
callq 0x71289
callq 0x715a7
callq 0x71334
callq 0x712fb
callq 0x71250
callq 0x71217
callq 0x711de
callq 0x714fc
callq 0x7156e
callq 0x71535
callq 0x711a5
callq 0x714c3
callq 0x7116c