// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/chain2dim.c
// Function: gt_chain2dim_activatematchpoint
static void gt_chain2dim_activatematchpoint(bool addterminal,
                               const GtChain2Dimmatchtable *matchtable,
                               GtChain2DimMatchstore *matchstore,
                               GtChain2DimMatchpoint *qmatch2)
{
  GtChain2DimMatchpoint *tmp2;
  GtChain2Dimscoretype qpriority;

  qpriority = gt_chain2dim_evalpriority(addterminal,matchtable,
                                        FRAGIDENT(qmatch2));
  tmp2 = (GtChain2DimMatchpoint *) gt_rbtree_previous_equal_key(
                                     matchstore->dictroot,
                                     qmatch2,
                                     gt_chain2dim_cmpendMatchpoint2,
                                     NULL);
  if (tmp2 == NULL ||
      qpriority > gt_chain2dim_evalpriority(addterminal,matchtable,
                                            FRAGIDENT(tmp2)))
  {
    gt_chain2dim_insertintodict(addterminal,matchtable,matchstore,qmatch2);
    while (true)
    {
      tmp2 = (GtChain2DimMatchpoint *) gt_rbtree_next_key(
                                               matchstore->dictroot,
                                               qmatch2,
                                               gt_chain2dim_cmpendMatchpoint2,
                                               NULL);
      if (tmp2 == NULL ||
          qpriority <= gt_chain2dim_evalpriority(addterminal,matchtable,
                                                 FRAGIDENT(tmp2)))
      {
        break;
      }
      if (gt_rbtree_erase(matchstore->dictroot, tmp2) != 0)
      {
        fprintf(stderr,"cannot delete successor node\n");
        exit(GT_EXIT_PROGRAMMING_ERROR);
      }
    }
  } else
  {
    gt_free(qmatch2);
  }
}

// Assembly:
subq $0x48, %rsp
movb %dil, %al
andb $0x1, %al
movb %al, 0x47(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq %rcx, 0x28(%rsp)
movb 0x47(%rsp), %al
movq 0x38(%rsp), %rsi
movq 0x28(%rsp), %rcx
movq (%rcx), %rdx
andb $0x1, %al
movzbl %al, %edi
callq 0x20a330
movq %rax, 0x18(%rsp)
movq 0x30(%rsp), %rax
movq (%rax), %rdi
movq 0x28(%rsp), %rsi
leaq -0x430(%rip), %rdx      # 0x209d20
xorl %eax, %eax
movl %eax, %ecx
callq 0x1b9ca0
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x20a19c
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rsp)
movb 0x47(%rsp), %al
movq 0x38(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq (%rcx), %rdx
andb $0x1, %al
movzbl %al, %edi
callq 0x20a330
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
jle 0x20a257
movb 0x47(%rsp), %al
movq 0x38(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq 0x28(%rsp), %rcx
andb $0x1, %al
movzbl %al, %edi
callq 0x20a3a0
movq 0x30(%rsp), %rax
movq (%rax), %rdi
movq 0x28(%rsp), %rsi
leaq -0x4ad(%rip), %rdx      # 0x209d20
xorl %eax, %eax
movl %eax, %ecx
callq 0x1b9e40
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x20a215
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movb 0x47(%rsp), %al
movq 0x38(%rsp), %rsi
movq 0x20(%rsp), %rcx
movq (%rcx), %rdx
andb $0x1, %al
movzbl %al, %edi
callq 0x20a330
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jg 0x20a217
jmp 0x20a255
movq 0x30(%rsp), %rax
movq (%rax), %rdi
movq 0x20(%rsp), %rsi
callq 0x1b89f0
cmpl $0x0, %eax
je 0x20a250
movq 0x431d6b(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x367645(%rip), %rsi    # 0x571884
movb $0x0, %al
callq 0x199f0
movl $0x2, %edi
callq 0x19890
jmp 0x20a1b9
jmp 0x20a26d
movq 0x28(%rsp), %rdi
leaq 0x3672a5(%rip), %rsi    # 0x571508
movl $0x384, %edx            # imm = 0x384
callq 0xe88c0
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)