// File: /workspace/github_c_makefile_star2_O1/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 $0x78, %rsp
movq %r9, 0x70(%rsp)
movq %rcx, 0x10(%rsp)
movq %rdx, 0x40(%rsp)
movl %esi, 0x24(%rsp)
cmpl $0x2, %esi
jae 0x1e0ffc
movq %r8, %r12
movq %rdi, %r15
movl $0x10, %edi
callq 0xd46fc
movq %rax, %r14
testq %r12, %r12
setne %bl
movq %rax, 0x18(%rsp)
je 0x1e08f6
movq 0x10(%rsp), %rax
movq (%rax), %r13
movq 0x80(%r15), %rcx
shrq %rcx
cmpq %rcx, %r13
jae 0x1e08d1
movq %r12, 0x50(%rsp)
leaq -0x1(%r12), %rax
movq %rax, 0x38(%rsp)
movq $0x0, 0x48(%rsp)
xorl %r14d, %r14d
movq 0x18(%rsp), %rbx
movq 0x40(%rsp), %r12
movl 0x24(%rsp), %ebp
addq %r13, %r13
movq %r13, 0x28(%rsp)
movl $0x1, %eax
movq %rax, 0x30(%rsp)
movl $0x10, %edx
movq %rbx, %rdi
leaq 0x28(%rsp), %rsi
callq 0xd49ce
movq 0x28(%rsp), %rcx
movl $0x1, %r8d
movq %r12, %rdi
movl %ebp, %esi
movq %r15, %rdx
movq 0xb8(%rsp), %r9
callq 0x1e315f
movl $0x1, %eax
orq %rax, %r13
movq %r13, 0x28(%rsp)
movq %rax, 0x30(%rsp)
movl $0x10, %edx
movq %rbx, %rdi
leaq 0x28(%rsp), %rsi
callq 0xd49ce
movq 0x28(%rsp), %rcx
movl $0x1, %r8d
movq %r12, %rdi
movl %ebp, %esi
movq %r15, %rdx
movq 0xb8(%rsp), %r9
callq 0x1e315f
cmpq %r14, 0x38(%rsp)
je 0x1e0901
movq 0x10(%rsp), %rax
movq 0x8(%rax,%r14,8), %r13
movq 0x80(%r15), %rcx
shrq %rcx
incq %r14
cmpq %rcx, %r13
jb 0x1e0815
cmpq 0x50(%rsp), %r14
setb %bl
movq 0x18(%rsp), %r14
movq 0xc0(%rsp), %rdi
leaq 0x1d9291(%rip), %rsi    # 0x3b9b71
movq %r13, %rdx
xorl %eax, %eax
callq 0x1019cf
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movq %rax, 0x48(%rsp)
jmp 0x1e0908
movq $0x0, 0x48(%rsp)
jmp 0x1e0908
xorl %ebx, %ebx
movq 0x18(%rsp), %r14
testb %bl, %bl
je 0x1e0928
movq %r14, %rdi
callq 0xd4ef4
movq 0x48(%rsp), %rax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r14, %rdi
callq 0xd4a9a
testq %rax, %rax
je 0x1e090c
movq %r14, %rdi
callq 0xd47f5
movq 0x58(%r15), %rcx
testq %rcx, %rcx
je 0x1e0fc5
movq (%rax), %r13
cmpq %r13, 0x8(%rcx)
jbe 0x1e0fc5
movl 0x10(%rcx), %edx
cmpq $0x41, %rdx
jae 0x1e0fc5
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq (%rcx), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2fcc2c
cmpl $0x2, %eax
je 0x1e0f2c
movq 0x58(%r15), %rax
testq %rax, %rax
je 0x1e0fe3
cmpq %r13, 0x8(%rax)
jbe 0x1e0fe3
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fe3
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2fcc2c
cmpl $0x3, %eax
je 0x1e0f2c
cmpq $0x2, 0x10(%rsp)
jb 0x1e09e5
movq 0x40(%rsp), %rdi
movl 0x24(%rsp), %esi
movq %r15, %rdx
movq %r13, %rcx
movq 0x10(%rsp), %r8
xorl %r9d, %r9d
callq 0x1e315f
movq 0x70(%r15), %rax
testq %rax, %rax
je 0x1e0ff7
cmpq %r13, 0x8(%rax)
jbe 0x1e0ff7
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0ff7
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2fcc2c
testq %rax, %rax
je 0x1e0f2c
movq 0x60(%r15), %rax
testq %rax, %rax
je 0x1e0fa2
movq %r13, %rcx
shrq %rcx
movq %rcx, 0x38(%rsp)
leaq 0x1(%r13), %r12
movl %r13d, %ecx
andl $0x1, %ecx
leaq -0x1(%r13), %rsi
testb $0x1, %r13b
leaq 0x1d69f0(%rip), %rdi    # 0x3b7442
leaq 0x1d69e2(%rip), %rdx    # 0x3b743b
cmoveq %rdx, %rdi
movq %rdi, 0x50(%rsp)
leal 0x42(%rcx,%rcx,2), %ecx
movl %ecx, 0x5c(%rsp)
cmoveq %r12, %rsi
movq %rsi, 0x60(%rsp)
movq 0x10(%rsp), %rcx
incq %rcx
movq %rcx, 0x68(%rsp)
xorl %r14d, %r14d
cmpq %r12, 0x8(%rax)
jbe 0x1e0fa2
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fa2
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r12, %rsi
callq 0x2fcc2c
movq %rax, %rbp
movq 0x60(%r15), %rax
testq %rax, %rax
je 0x1e0f9d
cmpq %r13, 0x8(%rax)
jbe 0x1e0f9d
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0f9d
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2fcc2c
subq %rax, %rbp
cmpq %rbp, %r14
jae 0x1e0f2c
movq 0x60(%r15), %rax
testq %rax, %rax
je 0x1e0fac
cmpq %r13, 0x8(%rax)
jbe 0x1e0fac
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fac
movq 0x88(%r15), %rbx
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2fcc2c
testq %rbx, %rbx
je 0x1e0fa7
addq %r14, %rax
cmpq %rax, 0x8(%rbx)
jbe 0x1e0fa7
movl 0x10(%rbx), %edx
cmpq $0x41, %rdx
jae 0x1e0fa7
movq (%rbx), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
movq %rax, %rbp
movq 0x90(%r15), %rdi
callq 0x2f9d41
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %edx
notl %edx
addl %edx, %edx
movslq %edx, %rax
andq %rbp, %rax
shrq %rax
cmpq 0x90(%r15), %rax
je 0x1e0f1a
movq 0x60(%r15), %rax
testq %rax, %rax
je 0x1e0fb6
cmpq %r13, 0x8(%rax)
jbe 0x1e0fb6
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fb6
movq 0x88(%r15), %rbx
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2fcc2c
testq %rbx, %rbx
je 0x1e0fb1
addq %r14, %rax
cmpq %rax, 0x8(%rbx)
jbe 0x1e0fb1
movl 0x10(%rbx), %edx
cmpq $0x41, %rdx
jae 0x1e0fb1
movq (%rbx), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
movq %rax, %rbp
movq 0x80(%r15), %rdi
callq 0x2f9d41
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %ebx
notl %ebx
movq 0x90(%r15), %rdi
callq 0x2f9d41
leal 0x1(%rax), %ecx
shll %cl, %ebx
movslq %ebx, %rbx
andq %rbp, %rbx
movq 0x90(%r15), %rdi
callq 0x2f9d41
leal 0x1(%rax), %ecx
shrq %cl, %rbx
cmpl $0x0, 0x24(%rsp)
je 0x1e0c7c
movq %rbx, %rcx
shrq %rcx
testb $0x1, %bl
leaq 0x1d67ec(%rip), %r9     # 0x3b743b
leaq 0x1d67ec(%rip), %rax    # 0x3b7442
cmoveq %rax, %r9
movq 0x40(%rsp), %rdi
leaq 0x1d8e71(%rip), %rsi    # 0x3b9ad7
movq 0x38(%rsp), %rdx
movq 0x50(%rsp), %r8
xorl %eax, %eax
callq 0x103d21
jmp 0x1e0d41
movq 0x60(%r15), %rax
testq %rax, %rax
je 0x1e0fca
cmpq %r13, 0x8(%rax)
jbe 0x1e0fca
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fca
movq 0x88(%r15), %rbp
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2fcc2c
testq %rbp, %rbp
je 0x1e0fcf
addq %r14, %rax
cmpq %rax, 0x8(%rbp)
jbe 0x1e0fcf
movl 0x10(%rbp), %edx
cmpq $0x41, %rdx
jae 0x1e0fcf
movq (%rbp), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
movq %rax, %rbp
movq 0x90(%r15), %rdi
callq 0x2f9d41
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %edx
notl %edx
addl %edx, %edx
movslq %edx, %rax
andq %rbp, %rax
shrq %rax
movq %rbx, %r8
shrq %r8
movl %ebx, %ecx
andl $0x1, %ecx
leal (%rcx,%rcx,2), %r9d
addl $0x42, %r9d
movq %rax, (%rsp)
movq 0x40(%rsp), %rdi
leaq 0x1d8d84(%rip), %rsi    # 0x3b9ab5
movq 0x38(%rsp), %rdx
movl 0x5c(%rsp), %ecx
xorl %eax, %eax
callq 0x103d21
movq 0x10(%rsp), %rax
cmpq 0x70(%rsp), %rax
jae 0x1e0e93
movq 0x58(%r15), %rax
testq %rax, %rax
je 0x1e0fbb
cmpq %rbx, 0x8(%rax)
jbe 0x1e0fbb
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fbb
movq (%rax), %rdi
movq %rdx, %rsi
imulq %rbx, %rsi
callq 0x2fcc2c
cmpl $0x2, %eax
je 0x1e0de4
movq 0x58(%r15), %rax
testq %rax, %rax
je 0x1e0fd9
cmpq %rbx, 0x8(%rax)
jbe 0x1e0fd9
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fd9
movq (%rax), %rdi
movq %rdx, %rsi
imulq %rbx, %rsi
callq 0x2fcc2c
cmpl $0x3, %eax
je 0x1e0de4
movq %rbx, 0x28(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x30(%rsp)
movl $0x10, %edx
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xd49ce
movq 0x58(%r15), %rax
testq %rax, %rax
je 0x1e0fc0
movl %ebx, %ebp
andl $0x1, %ebp
negq %rbp
orq $0x1, %rbp
addq %rbx, %rbp
cmpq %rbp, 0x8(%rax)
jbe 0x1e0fc0
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fc0
movq (%rax), %rdi
movq %rdx, %rsi
imulq %rbp, %rsi
callq 0x2fcc2c
cmpl $0x2, %eax
je 0x1e0f1a
movq 0x58(%r15), %rax
testq %rax, %rax
je 0x1e0fd4
cmpq %rbp, 0x8(%rax)
jbe 0x1e0fd4
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fd4
movq (%rax), %rdi
movq %rdx, %rsi
imulq %rbp, %rsi
callq 0x2fcc2c
cmpl $0x3, %eax
je 0x1e0f1a
movq %rbp, 0x28(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x30(%rsp)
movl $0x10, %edx
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xd49ce
jmp 0x1e0f1a
cmpb $0x0, 0xb0(%rsp)
je 0x1e0f1a
movq 0x70(%r15), %rax
testq %rax, %rax
je 0x1e0fde
cmpq %r13, 0x8(%rax)
jbe 0x1e0fde
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fde
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r13, %rsi
callq 0x2fcc2c
cmpq $0x1, %rax
jne 0x1e0f1a
movq 0x70(%r15), %rax
testq %rax, %rax
je 0x1e0ff2
movq 0x60(%rsp), %rcx
cmpq %rcx, 0x8(%rax)
jbe 0x1e0ff2
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0ff2
movq (%rax), %rdi
movq %rdx, %rsi
imulq 0x60(%rsp), %rsi
callq 0x2fcc2c
cmpq $0x1, %rax
je 0x1e0d51
incq %r14
movq 0x60(%r15), %rax
testq %rax, %rax
jne 0x1e0a83
jmp 0x1e0fa2
movq 0x58(%r15), %rax
cmpq $0x1, 0x10(%rsp)
jne 0x1e0f6b
testq %rax, %rax
movq 0x18(%rsp), %r14
je 0x1e0fe8
cmpq %r13, 0x8(%rax)
jbe 0x1e0fe8
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fe8
movq (%rax), %rdi
imulq %rdx, %r13
movl $0x3, %ecx
jmp 0x1e0f90
testq %rax, %rax
movq 0x18(%rsp), %r14
je 0x1e0fed
cmpq %r13, 0x8(%rax)
jbe 0x1e0fed
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1e0fed
movq (%rax), %rdi
imulq %rdx, %r13
movl $0x2, %ecx
movq %r13, %rsi
callq 0x2fcd13
jmp 0x1e0928
callq 0x73058
callq 0x73091
callq 0x72fe6
callq 0x7301f
callq 0x72f74
callq 0x72fad
callq 0x72ec9
callq 0x72e90
callq 0x731ae
callq 0x72f3b
callq 0x72f02
callq 0x72e57
callq 0x72e1e
callq 0x72de5
callq 0x73103
callq 0x73175
callq 0x7313c
callq 0x72dac
callq 0x730ca
callq 0x72d73