// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/match/rdj-strgraph.c
// Function: gt_strgraph_redpbubbles
GtUword gt_strgraph_redpbubbles(GtStrgraph *strgraph,
    GtUword maxwidth, const GtUword maxdiff,
    bool show_progressbar)
{
  GtStrgraphVnum i, from, to;
  GtStrgraphVEdgenum j, from_to, p, nofpaths;
  GtStrgraphLength len;
  GtUword depth, width, counter = 0, nofpbubbles = 0;
  GtUint64 progress = 0;
  GtStrgraphPathInfo *info, *prev;

  gt_assert(strgraph != NULL);

  if (maxwidth == 0)
    maxwidth = (GtUword)(gt_strgraph_longest_read(strgraph) << 2) -
        (strgraph->minmatchlen << 1) - 1;
  gt_log_log("redpbubbles(maxwidth="GT_WU", maxdiff="GT_WU")", maxwidth,
             maxdiff);

  /* allocate info and set all marks to VACANT */
  {
    GtUword maxoutdeg = 0;
    for (i = 0; i < GT_STRGRAPH_NOFVERTICES(strgraph); i++)
    {
      GT_STRGRAPH_V_SET_MARK(strgraph, i, GT_STRGRAPH_V_VACANT);
      if (GT_STRGRAPH_V_OUTDEG(strgraph, i) > (GtStrgraphVEdgenum)maxoutdeg)
        maxoutdeg = (GtUword)GT_STRGRAPH_V_OUTDEG(strgraph, i);
    }
    gt_log_log("maxoutdeg = "GT_WU"", maxoutdeg);
    info = gt_malloc(sizeof (GtStrgraphPathInfo) * maxoutdeg);
  }

  if (show_progressbar)
    gt_progressbar_start(&progress,
        (GtUint64)GT_STRGRAPH_NOFVERTICES(strgraph));

  for (i = 0; i < GT_STRGRAPH_NOFVERTICES(strgraph); i++)
  {
    if (GT_STRGRAPH_V_OUTDEG(strgraph, i) > 0)
    {
      if (GT_STRGRAPH_V_IS_INTERNAL(strgraph, i))
        continue;
      nofpaths = 0;
      for (j = 0; j < GT_STRGRAPH_V_NOFEDGES(strgraph, i); j++)
      {
        if (!GT_STRGRAPH_EDGE_IS_REDUCED(strgraph, i, j))
        {
          to = GT_STRGRAPH_EDGE_DEST(strgraph, i, j);
          depth = 1UL;
          len = GT_STRGRAPH_EDGE_LEN(strgraph, i, j);
          gt_assert(sizeof (GtUword) >= sizeof (GtStrgraphLength) ||
              len <= (GtStrgraphLength)ULONG_MAX);
          width = (GtUword)len;
          while (GT_STRGRAPH_V_IS_INTERNAL(strgraph, to) && width <= maxwidth)
          {
            depth++;
            from = to;
            from_to = gt_strgraph_find_only_edge(strgraph, from);
            len = GT_STRGRAPH_EDGE_LEN(strgraph, from, from_to);
            gt_assert((sizeof (GtUword) >= sizeof (GtStrgraphLength) &&
                width <= ULONG_MAX - (GtUword)len) ||
                (GtStrgraphLength)width + len < (GtStrgraphLength)ULONG_MAX);
            width += (GtUword)len;
            to = GT_STRGRAPH_EDGE_DEST(strgraph, from, from_to);
          }
          if (width <= maxwidth && depth > 1UL)
          {
            info[nofpaths].edgenum = j;
            info[nofpaths].dest = to;
            info[nofpaths].depth = depth;
            info[nofpaths].width = width;
            nofpaths++;
          }
        }
      }
      if (nofpaths > 0)
      {
        qsort(info, (size_t)nofpaths, sizeof (*info),
            gt_strgraph_path_info_compare);
        prev = info;
        for (p = (GtStrgraphVEdgenum)1; p < nofpaths; p++)
        {
          if (info[p].dest == prev->dest &&
              (info[p].width - prev->width <= maxdiff))
          {
            nofpbubbles++;
            if (info[p].depth <= prev->depth)
            {
              from_to = info[p].edgenum;
            }
            else
            {
              from_to = prev->edgenum;
              prev = info + p;
            }
            GT_STRGRAPH_EDGE_SET_MARK(strgraph, i, from_to);
            to = GT_STRGRAPH_EDGE_DEST(strgraph, i, from_to);
            while (GT_STRGRAPH_V_IS_INTERNAL(strgraph, to))
            {
              from = to;
              from_to = gt_strgraph_find_only_edge(strgraph, from);
              GT_STRGRAPH_EDGE_SET_MARK(strgraph, from, from_to);
              to = GT_STRGRAPH_EDGE_DEST(strgraph, from, from_to);
            }
          }
          else
          {
            prev = info + p;
          }
        }
      }
    }
    if (show_progressbar)
      progress++;
  }
  counter = gt_strgraph_reduce_marked_edges(strgraph);

  if (show_progressbar)
    gt_progressbar_stop();
  gt_free(info);
  gt_log_log("p-bubbles = "GT_WU"", nofpbubbles);
  gt_log_log("removed p-bubble edges = "GT_WU"", counter);
#ifndef NDEBUG
  gt_strgraph_check_outdegs(strgraph);
#endif
  return counter;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movl %ecx, 0x1c(%rsp)
movq %rdx, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
testq %rdi, %rdi
je 0x1dde7b
movq %rdi, %rbx
testq %rsi, %rsi
jne 0x1dd18b
movq %rbx, %rdi
callq 0x1d77c3
movq 0x30(%rbx), %rcx
addq %rcx, %rcx
notq %rcx
leaq (%rcx,%rax,4), %rsi
leaq 0x1dbddd(%rip), %rdi    # 0x3b8f6f
xorl %r14d, %r14d
movq %rsi, 0x48(%rsp)
movq 0x40(%rsp), %rdx
xorl %eax, %eax
callq 0x108e02
cmpq $0x0, 0x80(%rbx)
je 0x1dd26d
xorl %r14d, %r14d
xorl %r15d, %r15d
movq 0x58(%rbx), %rax
testq %rax, %rax
je 0x1dde5d
cmpq %r15, 0x8(%rax)
jbe 0x1dde5d
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde5d
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r15, %rsi
xorl %ecx, %ecx
callq 0x2fcd13
movq 0x70(%rbx), %rax
testq %rax, %rax
je 0x1dde62
cmpq %r15, 0x8(%rax)
jbe 0x1dde62
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde62
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r15, %rsi
callq 0x2fcc2c
cmpq %r14, %rax
jbe 0x1dd25d
movq 0x70(%rbx), %rax
testq %rax, %rax
je 0x1dde71
cmpq %r15, 0x8(%rax)
jbe 0x1dde71
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde71
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r15, %rsi
callq 0x2fcc2c
movq %rax, %r14
incq %r15
cmpq 0x80(%rbx), %r15
jb 0x1dd1ba
leaq 0x1dbd22(%rip), %rdi    # 0x3b8f96
movq %r14, %rsi
xorl %eax, %eax
callq 0x108e02
shlq $0x5, %r14
leaq 0x1db6a4(%rip), %rsi    # 0x3b892d
movq %r14, %rdi
movl $0x4ec, %edx            # imm = 0x4EC
callq 0x1092b2
movq %rax, 0x28(%rsp)
cmpb $0x0, 0x1c(%rsp)
je 0x1dd2b3
movq 0x80(%rbx), %rsi
leaq 0x50(%rsp), %rdi
callq 0x110c6c
cmpq $0x0, 0x80(%rbx)
je 0x1ddd58
movq $0x0, 0x38(%rsp)
xorl %r15d, %r15d
movq 0x70(%rbx), %rax
testq %rax, %rax
je 0x1dde67
cmpq %r15, 0x8(%rax)
jbe 0x1dde67
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde67
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r15, %rsi
callq 0x2fcc2c
testq %rax, %rax
je 0x1ddd3a
movq 0x70(%rbx), %rax
testq %rax, %rax
je 0x1dde6c
cmpq %r15, 0x8(%rax)
jbe 0x1dde6c
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde6c
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r15, %rsi
callq 0x2fcc2c
cmpq $0x1, %rax
jne 0x1dd38c
movq 0x70(%rbx), %rax
testq %rax, %rax
je 0x1dde76
movl %r15d, %esi
andl $0x1, %esi
negq %rsi
orq $0x1, %rsi
addq %r15, %rsi
cmpq %rsi, 0x8(%rax)
jbe 0x1dde76
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde76
movq (%rax), %rdi
imulq %rdx, %rsi
callq 0x2fcc2c
cmpq $0x1, %rax
je 0x1ddd46
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1dde1c
leaq 0x1(%r15), %r12
movq $0x0, 0x10(%rsp)
xorl %r13d, %r13d
movq %r15, 0x8(%rsp)
movq %r12, 0x30(%rsp)
cmpq %r12, 0x8(%rax)
jbe 0x1dde1c
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde1c
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r12, %rsi
callq 0x2fcc2c
movq %rax, %r14
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1dde17
cmpq %r15, 0x8(%rax)
jbe 0x1dde17
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde17
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r15, %rsi
callq 0x2fcc2c
subq %rax, %r14
cmpq %r14, %r13
jae 0x1dd897
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1dde26
cmpq %r15, 0x8(%rax)
jbe 0x1dde26
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde26
movq 0x88(%rbx), %r14
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r15, %rsi
callq 0x2fcc2c
testq %r14, %r14
je 0x1dde21
addq %r13, %rax
cmpq %rax, 0x8(%r14)
jbe 0x1dde21
movl 0x10(%r14), %edx
cmpq $0x41, %rdx
jae 0x1dde21
movq (%r14), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
movq %rax, %r14
movq 0x90(%rbx), %rdi
callq 0x2f9d41
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %edx
notl %edx
addl %edx, %edx
movslq %edx, %rax
andq %r14, %rax
shrq %rax
cmpq 0x90(%rbx), %rax
je 0x1dd882
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1dde30
cmpq %r15, 0x8(%rax)
jbe 0x1dde30
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde30
movq 0x88(%rbx), %r14
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r15, %rsi
callq 0x2fcc2c
testq %r14, %r14
je 0x1dde35
addq %r13, %rax
cmpq %rax, 0x8(%r14)
jbe 0x1dde35
movl 0x10(%r14), %edx
cmpq $0x41, %rdx
jae 0x1dde35
movq %r13, 0x20(%rsp)
movq (%r14), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
movq %rax, %r13
movq 0x80(%rbx), %rdi
callq 0x2f9d41
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %ebp
notl %ebp
movq 0x90(%rbx), %rdi
callq 0x2f9d41
leal 0x1(%rax), %ecx
shll %cl, %ebp
movslq %ebp, %r14
andq %r13, %r14
movq 0x8(%rsp), %r12
movq 0x90(%rbx), %rdi
callq 0x2f9d41
leal 0x1(%rax), %ecx
shrq %cl, %r14
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1dde2b
cmpq %r12, 0x8(%rax)
jbe 0x1dde2b
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde2b
movq 0x88(%rbx), %r15
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r12, %rsi
callq 0x2fcc2c
testq %r15, %r15
movq 0x20(%rsp), %rcx
je 0x1dde3a
addq %rcx, %rax
cmpq %rax, 0x8(%r15)
jbe 0x1dde3a
movl 0x10(%r15), %edx
cmpq $0x41, %rdx
jae 0x1dde3a
movq (%r15), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
movq %rax, %r13
movq 0x90(%rbx), %rdi
callq 0x2f9d41
movq 0x70(%rbx), %rsi
testq %rsi, %rsi
je 0x1dddcc
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %edx
notl %edx
addl %edx, %edx
movslq %edx, %rax
andq %rax, %r13
shrq %r13
movl $0x1, %r15d
cmpq %r14, 0x8(%rsi)
jbe 0x1dddcc
movl 0x10(%rsi), %edx
cmpq $0x41, %rdx
jae 0x1dddcc
movq (%rsi), %rdi
movq %rdx, %rsi
imulq %r14, %rsi
callq 0x2fcc2c
cmpq $0x1, %rax
jne 0x1dd81d
movq 0x70(%rbx), %rax
testq %rax, %rax
je 0x1dddd1
movl %r14d, %esi
andl $0x1, %esi
negq %rsi
orq $0x1, %rsi
addq %r14, %rsi
cmpq %rsi, 0x8(%rax)
jbe 0x1dddd1
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dddd1
movq (%rax), %rdi
imulq %rdx, %rsi
callq 0x2fcc2c
cmpq $0x1, %rax
jne 0x1dd81d
cmpq 0x48(%rsp), %r13
ja 0x1dd81d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1dcfaa
movq %rax, %rbp
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1ddde0
cmpq %r14, 0x8(%rax)
jbe 0x1ddde0
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1ddde0
movq 0x88(%rbx), %r12
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r14, %rsi
callq 0x2fcc2c
testq %r12, %r12
je 0x1ddddb
addq %rbp, %rax
cmpq %rax, 0x8(%r12)
jbe 0x1ddddb
movl 0x10(%r12), %edx
cmpq $0x41, %rdx
jae 0x1ddddb
movq (%r12), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
movq %rax, %r12
movq 0x90(%rbx), %rdi
callq 0x2f9d41
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %edx
notl %edx
addl %edx, %edx
movslq %edx, %rax
andq %r12, %rax
shrq %rax
addq %rax, %r13
jae 0x1dd755
cmpq $-0x1, %r13
je 0x1dddea
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1dddd6
cmpq %r14, 0x8(%rax)
jbe 0x1dddd6
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dddd6
movq 0x88(%rbx), %r12
movq (%rax), %rdi
imulq %rdx, %r14
movq %r14, %rsi
callq 0x2fcc2c
testq %r12, %r12
je 0x1ddde5
addq %rbp, %rax
cmpq %rax, 0x8(%r12)
jbe 0x1ddde5
movl 0x10(%r12), %edx
cmpq $0x41, %rdx
jae 0x1ddde5
movq (%r12), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
movq %rax, %r12
movq 0x80(%rbx), %rdi
callq 0x2f9d41
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %ebp
notl %ebp
movq 0x90(%rbx), %rdi
callq 0x2f9d41
leal 0x1(%rax), %ecx
shll %cl, %ebp
movslq %ebp, %r14
andq %r12, %r14
movq 0x90(%rbx), %rdi
callq 0x2f9d41
leal 0x1(%rax), %ecx
shrq %cl, %r14
movq 0x70(%rbx), %rsi
incq %r15
testq %rsi, %rsi
jne 0x1dd61e
jmp 0x1dddcc
cmpq 0x48(%rsp), %r13
setbe %al
cmpq $0x2, %r15
setae %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x1dd873
movq 0x10(%rsp), %rdx
movq %rdx, %rax
shlq $0x5, %rax
movq 0x28(%rsp), %rcx
movq 0x20(%rsp), %rsi
movq %rsi, (%rcx,%rax)
movq %r14, 0x8(%rcx,%rax)
movq %r15, 0x10(%rcx,%rax)
movq %r13, 0x18(%rcx,%rax)
movq %rsi, %r13
incq %rdx
movq %rdx, 0x10(%rsp)
movq 0x8(%rsp), %r15
movq 0x30(%rsp), %r12
jmp 0x1dd882
movq 0x8(%rsp), %r15
movq 0x30(%rsp), %r12
movq 0x20(%rsp), %r13
incq %r13
movq 0x60(%rbx), %rax
testq %rax, %rax
jne 0x1dd3b3
jmp 0x1dde1c
cmpq $0x0, 0x10(%rsp)
je 0x1ddd3a
movl $0x20, %edx
movq 0x28(%rsp), %r14
movq %r14, %rdi
movq 0x10(%rsp), %rsi
leaq 0x5c4(%rip), %rcx       # 0x1dde80
callq 0x17f60
movq 0x10(%rsp), %rdx
cmpq $0x1, %rdx
je 0x1ddd3a
movl $0x1, %esi
movq %r14, %rax
movq %rsi, %rcx
shlq $0x5, %rcx
leaq (%r14,%rcx), %rdi
movq 0x8(%r14,%rcx), %rcx
cmpq 0x8(%rax), %rcx
jne 0x1ddd2b
movq 0x18(%rdi), %rcx
subq 0x18(%rax), %rcx
cmpq 0x40(%rsp), %rcx
ja 0x1ddd2b
movq %rsi, 0x20(%rsp)
movq 0x10(%rdi), %rcx
cmpq 0x10(%rax), %rcx
movq %rdi, %rcx
cmovaq %rax, %rcx
cmovbeq %rax, %rdi
movq %rdi, 0x30(%rsp)
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1dde53
cmpq %r15, 0x8(%rax)
jbe 0x1dde53
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde53
movq (%rcx), %r12
movq 0x88(%rbx), %r13
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r15, %rsi
callq 0x2fcc2c
movq %rax, %r14
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1dde4e
movq 0x8(%rsp), %rcx
cmpq %rcx, 0x8(%rax)
jbe 0x1dde4e
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde4e
movq 0x88(%rbx), %rbp
movq (%rax), %rdi
movq %rdx, %rsi
imulq 0x8(%rsp), %rsi
callq 0x2fcc2c
testq %rbp, %rbp
je 0x1dde58
addq %r12, %rax
cmpq %rax, 0x8(%rbp)
jbe 0x1dde58
movl 0x10(%rbp), %edx
cmpq $0x41, %rdx
jae 0x1dde58
movq (%rbp), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
testq %r13, %r13
je 0x1dde49
addq %r12, %r14
cmpq %r14, 0x8(%r13)
jbe 0x1dde49
movl 0x10(%r13), %edx
cmpq $0x41, %rdx
jae 0x1dde49
orq $0x1, %rax
movq (%r13), %rdi
imulq %rdx, %r14
movq %r14, %rsi
movq %rax, %rcx
callq 0x2fcd13
movq 0x60(%rbx), %rax
testq %rax, %rax
movq 0x8(%rsp), %rcx
je 0x1dde44
cmpq %rcx, 0x8(%rax)
jbe 0x1dde44
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde44
movq 0x88(%rbx), %r14
movq (%rax), %rdi
movq %rdx, %rsi
imulq %rcx, %rsi
callq 0x2fcc2c
testq %r14, %r14
je 0x1dde3f
addq %r12, %rax
cmpq %rax, 0x8(%r14)
jbe 0x1dde3f
movl 0x10(%r14), %edx
cmpq $0x41, %rdx
jae 0x1dde3f
movq (%r14), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
movq %rax, %r14
movq 0x80(%rbx), %rdi
callq 0x2f9d41
movl %eax, %r13d
movq 0x90(%rbx), %rdi
callq 0x2f9d41
movl %eax, %ebp
movq 0x90(%rbx), %rdi
callq 0x2f9d41
movq 0x70(%rbx), %rsi
testq %rsi, %rsi
je 0x1dddef
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl %r13d, %ecx
shll %cl, %edx
notl %edx
incb %bpl
movl %ebp, %ecx
shll %cl, %edx
incq 0x38(%rsp)
movslq %edx, %rcx
andq %rcx, %r14
incb %al
movl %eax, %ecx
shrq %cl, %r14
cmpq %r14, 0x8(%rsi)
jbe 0x1dddef
movl 0x10(%rsi), %edx
cmpq $0x41, %rdx
jae 0x1dddef
movq (%rsi), %rdi
movq %rdx, %rsi
imulq %r14, %rsi
callq 0x2fcc2c
cmpq $0x1, %rax
jne 0x1ddd12
movq 0x70(%rbx), %rax
testq %rax, %rax
je 0x1dddf4
movl %r14d, %esi
andl $0x1, %esi
negq %rsi
orq $0x1, %rsi
addq %r14, %rsi
cmpq %rsi, 0x8(%rax)
jbe 0x1dddf4
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dddf4
movq (%rax), %rdi
imulq %rdx, %rsi
callq 0x2fcc2c
cmpq $0x1, %rax
jne 0x1ddd12
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1dcfaa
movq %rax, %r13
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1dde03
cmpq %r14, 0x8(%rax)
jbe 0x1dde03
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde03
movq 0x88(%rbx), %r12
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r14, %rsi
callq 0x2fcc2c
movq %rax, %rbp
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1dde08
cmpq %r14, 0x8(%rax)
jbe 0x1dde08
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde08
movq 0x88(%rbx), %r15
movq (%rax), %rdi
movq %rdx, %rsi
imulq %r14, %rsi
callq 0x2fcc2c
testq %r15, %r15
je 0x1dddf9
addq %r13, %rax
cmpq %rax, 0x8(%r15)
jbe 0x1dddf9
movl 0x10(%r15), %edx
cmpq $0x41, %rdx
jae 0x1dddf9
movq (%r15), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
testq %r12, %r12
je 0x1dddfe
addq %r13, %rbp
cmpq %rbp, 0x8(%r12)
jbe 0x1dddfe
movl 0x10(%r12), %edx
cmpq $0x41, %rdx
jae 0x1dddfe
orq $0x1, %rax
movq (%r12), %rdi
imulq %rdx, %rbp
movq %rbp, %rsi
movq %rax, %rcx
callq 0x2fcd13
movq 0x60(%rbx), %rax
testq %rax, %rax
je 0x1dde12
cmpq %r14, 0x8(%rax)
jbe 0x1dde12
movl 0x10(%rax), %edx
cmpq $0x41, %rdx
jae 0x1dde12
movq 0x88(%rbx), %r15
movq (%rax), %rdi
imulq %rdx, %r14
movq %r14, %rsi
callq 0x2fcc2c
testq %r15, %r15
je 0x1dde0d
addq %r13, %rax
cmpq %rax, 0x8(%r15)
jbe 0x1dde0d
movl 0x10(%r15), %edx
cmpq $0x41, %rdx
jae 0x1dde0d
movq (%r15), %rdi
imulq %rdx, %rax
movq %rax, %rsi
callq 0x2fcc2c
movq %rax, %r12
movq 0x80(%rbx), %rdi
callq 0x2f9d41
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movl %eax, %ecx
shll %cl, %ebp
notl %ebp
movq 0x90(%rbx), %rdi
callq 0x2f9d41
leal 0x1(%rax), %ecx
shll %cl, %ebp
movslq %ebp, %r14
andq %r12, %r14
movq 0x90(%rbx), %rdi
callq 0x2f9d41
leal 0x1(%rax), %ecx
shrq %cl, %r14
movq 0x70(%rbx), %rsi
testq %rsi, %rsi
jne 0x1ddae1
jmp 0x1dddef
movq 0x28(%rsp), %r14
movq 0x8(%rsp), %r15
movq 0x10(%rsp), %rdx
movq 0x20(%rsp), %rsi
movq 0x30(%rsp), %rdi
incq %rsi
movq %rdi, %rax
cmpq %rdx, %rsi
jne 0x1dd8d8
cmpb $0x0, 0x1c(%rsp)
je 0x1ddd46
incq 0x50(%rsp)
incq %r15
cmpq 0x80(%rbx), %r15
jb 0x1dd2cd
jmp 0x1ddd61
movq $0x0, 0x38(%rsp)
movq %rbx, %rdi
callq 0x1dbb3b
movq %rax, %r14
cmpb $0x0, 0x1c(%rsp)
je 0x1ddd78
callq 0x111189
leaq 0x1dabae(%rip), %rsi    # 0x3b892d
movq 0x28(%rsp), %rdi
movl $0x546, %edx            # imm = 0x546
callq 0x109670
leaq 0x1db2a5(%rip), %rdi    # 0x3b903a
movq 0x38(%rsp), %rsi
xorl %eax, %eax
callq 0x108e02
leaq 0x1db2a2(%rip), %rdi    # 0x3b904a
movq %r14, %rsi
xorl %eax, %eax
callq 0x108e02
movq %rbx, %rdi
callq 0x1da5e8
movq %r14, %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x71722
callq 0x716e9
callq 0x71605
callq 0x71677
callq 0x716b0
callq 0x715cc
callq 0x7163e
callq 0x7143d
callq 0x71404
callq 0x71359
callq 0x71320
callq 0x713cb
callq 0x71392
callq 0x712ae
callq 0x712e7
callq 0x718b1
callq 0x718ea
callq 0x7183f
callq 0x71878
callq 0x71794
callq 0x71806
callq 0x717cd
callq 0x7175b
callq 0x71476
callq 0x714af
callq 0x714e8
callq 0x7155a
callq 0x71593
callq 0x71521
callq 0x71275
callq 0x7123c
callq 0x71995
callq 0x7195c
callq 0x71203
callq 0x71923
callq 0x719ce