// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/tools/gt_readjoiner_assembly.c
// Function: gt_readjoiner_assembly_error_correction
static int gt_readjoiner_assembly_error_correction(GtStrgraph *strgraph,
    unsigned int bubble, unsigned int deadend, unsigned int deadend_depth,
    GtLogger *verbose_logger)
{
  unsigned int i;
  GtUword retval, retval_sum;
  gt_logger_log(verbose_logger, "remove p-bubbles");

  retval_sum = 0;
  retval = 1UL;
  for (i = 0; i < bubble && retval > 0; i++)
  {
    retval = gt_strgraph_redpbubbles(strgraph, 0, 1UL, false);
    retval_sum += retval;
    gt_logger_log(verbose_logger, "removed p-bubble edges [round %u] = "GT_WU,
                  i + 1, retval);
  }
  gt_logger_log(verbose_logger, "removed p-bubble edges [%u rounds] = "GT_WU,
                i, retval_sum);
  gt_logger_log(verbose_logger, "remove dead-end paths");

  retval_sum = 0;
  retval = 1UL;
  for (i = 0; i < deadend && retval > 0; i++)
  {
    retval = gt_strgraph_reddepaths(strgraph, (GtUword)deadend_depth,
        false);
    retval_sum += retval;
    gt_logger_log(verbose_logger, "removed dead-end path edges [round %u] = "
       GT_WU, i + 1, retval);
  }
  gt_logger_log(verbose_logger,
      "removed dead-end path edges [%u rounds] = " GT_WU, i, retval_sum);
  return 0;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movl %esi, 0x3c(%rsp)
movl %edx, 0x38(%rsp)
movl %ecx, 0x34(%rsp)
movq %r8, 0x28(%rsp)
movq 0x28(%rsp), %rdi
leaq 0x4d5562(%rip), %rsi    # 0x524048
movb $0x0, %al
callq 0xe7cd0
movq $0x0, 0x10(%rsp)
movq $0x1, 0x18(%rsp)
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %ecx
xorl %eax, %eax
cmpl 0x3c(%rsp), %ecx
movb %al, 0xf(%rsp)
jae 0x4eb24
cmpq $0x0, 0x18(%rsp)
seta %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x4eb2e
jmp 0x4eb83
movq 0x40(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x1, %edx
xorl %ecx, %ecx
callq 0x296410
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
addq 0x10(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rdi
movl 0x24(%rsp), %edx
addl $0x1, %edx
movq 0x18(%rsp), %rcx
leaq 0x4d54ea(%rip), %rsi    # 0x524059
movb $0x0, %al
callq 0xe7cd0
movl 0x24(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x24(%rsp)
jmp 0x4eb07
movq 0x28(%rsp), %rdi
movl 0x24(%rsp), %edx
movq 0x10(%rsp), %rcx
leaq 0x4d54e9(%rip), %rsi    # 0x524081
movb $0x0, %al
callq 0xe7cd0
movq 0x28(%rsp), %rdi
leaq 0x4d54ff(%rip), %rsi    # 0x5240aa
movb $0x0, %al
callq 0xe7cd0
movq $0x0, 0x10(%rsp)
movq $0x1, 0x18(%rsp)
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %ecx
xorl %eax, %eax
cmpl 0x38(%rsp), %ecx
movb %al, 0xe(%rsp)
jae 0x4ebe9
cmpq $0x0, 0x18(%rsp)
seta %al
movb %al, 0xe(%rsp)
movb 0xe(%rsp), %al
testb $0x1, %al
jne 0x4ebf3
jmp 0x4ec45
movq 0x40(%rsp), %rdi
movl 0x34(%rsp), %eax
movl %eax, %esi
xorl %edx, %edx
callq 0x2957c0
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
addq 0x10(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rdi
movl 0x24(%rsp), %edx
addl $0x1, %edx
movq 0x18(%rsp), %rcx
leaq 0x4d548f(%rip), %rsi    # 0x5240c0
movb $0x0, %al
callq 0xe7cd0
movl 0x24(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x24(%rsp)
jmp 0x4ebcc
movq 0x28(%rsp), %rdi
movl 0x24(%rsp), %edx
movq 0x10(%rsp), %rcx
leaq 0x4d5493(%rip), %rsi    # 0x5240ed
movb $0x0, %al
callq 0xe7cd0
xorl %eax, %eax
addq $0x48, %rsp
retq
nopl (%rax,%rax)