// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/ft-front-generation.c
// Function: gt_front_trace_backtracepath2eoplist
static void gt_front_trace_backtracepath2eoplist(GtEoplist *eoplist,
                                                 unsigned int lastlcs,
                                                 const GtBacktraceFrontpath
                                                   *backtracepath,
                                                GtUword elementsinbacktracepath,
                                                GT_UNUSED GtUword ulen,
                                                GT_UNUSED GtUword vlen)
{
  GtUword idx, GT_UNUSED deletions = 0, GT_UNUSED insertions = 0, 
          GT_UNUSED mismatches = 0, GT_UNUSED matches = 0;

  if (lastlcs > 0)
  {
    gt_eoplist_match_add(eoplist,lastlcs);
    matches += lastlcs;
  }
  gt_assert(eoplist != NULL);
  for (idx = 0; idx < elementsinbacktracepath; idx++)
  {
    if (backtracepath[idx].eopcode == backtracepath_deletion)
    {
      gt_eoplist_deletion_add(eoplist);
      deletions++;
    } else
    {
      if (backtracepath[idx].eopcode == backtracepath_insertion)
      {
        gt_eoplist_insertion_add(eoplist);
        insertions++;
      } else
      {
        gt_eoplist_mismatch_add(eoplist);
        mismatches++;
      }
    }
    if (backtracepath[idx].lcs > 0)
    {
      gt_eoplist_match_add(eoplist,backtracepath[idx].lcs);
      matches += backtracepath[idx].lcs;
    }
  }
  /*
  if (matches + mismatches + deletions != ulen)
  {
    fprintf(stderr,
            "matches=" GT_WU ",mismatches=" GT_WU ",deletions=" GT_WU ","
            "sum=" GT_WU " != " GT_WU " = ulen\n",
             matches,mismatches,deletions,
             matches+mismatches+deletions,
             ulen);
  }
  if (matches + mismatches + insertions != vlen)
  {
    fprintf(stderr,
            "matches=" GT_WU ",mismatches=" GT_WU ",insertions=" GT_WU ","
            "sum=" GT_WU " " != " GT_WU " = vlen\n",
             matches,mismatches,insertions,
             matches+mismatches+insertions,
             vlen);
  }
  */
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movl %esi, 0x4c(%rsp)
movq %rdx, 0x40(%rsp)
movq %rcx, 0x38(%rsp)
movq %r8, 0x30(%rsp)
movq %r9, 0x28(%rsp)
movq $0x0, 0x18(%rsp)
movq $0x0, 0x10(%rsp)
movq $0x0, 0x8(%rsp)
movq $0x0, (%rsp)
cmpl $0x0, 0x4c(%rsp)
jbe 0x4c8c87
movq 0x50(%rsp), %rdi
movl 0x4c(%rsp), %eax
movl %eax, %esi
callq 0x4c28f0
movl 0x4c(%rsp), %eax
addq (%rsp), %rax
movq %rax, (%rsp)
jmp 0x4c8c89
cmpq $0x0, 0x50(%rsp)
jne 0x4c8cc9
movq 0x173308(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4d371(%rip), %rsi     # 0x516013
leaq 0x7e22a(%rip), %rdx     # 0x546ed3
leaq 0xf047c(%rip), %rcx     # 0x5b912c
leaq 0xefdfc(%rip), %r8      # 0x5b8ab3
movl $0x226, %r9d            # imm = 0x226
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4c8ccb
movq $0x0, 0x20(%rsp)
movq 0x20(%rsp), %rax
cmpq 0x38(%rsp), %rax
jae 0x4c8dae
movq 0x40(%rsp), %rax
movq 0x20(%rsp), %rcx
movzbl (%rax,%rcx,8), %eax
cmpl $0x1, %eax
jne 0x4c8d11
movq 0x50(%rsp), %rdi
callq 0x4c24d0
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x4c8d58
movq 0x40(%rsp), %rax
movq 0x20(%rsp), %rcx
movzbl (%rax,%rcx,8), %eax
cmpl $0x2, %eax
jne 0x4c8d3e
movq 0x50(%rsp), %rdi
callq 0x4c26c0
movq 0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
jmp 0x4c8d56
movq 0x50(%rsp), %rdi
callq 0x4c2d60
movq 0x8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0x4c8d58
movq 0x40(%rsp), %rax
movq 0x20(%rsp), %rcx
cmpl $0x0, 0x4(%rax,%rcx,8)
jbe 0x4c8d99
movq 0x50(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x20(%rsp), %rcx
movl 0x4(%rax,%rcx,8), %eax
movl %eax, %esi
callq 0x4c28f0
movq 0x40(%rsp), %rax
movq 0x20(%rsp), %rcx
movl 0x4(%rax,%rcx,8), %eax
addq (%rsp), %rax
movq %rax, (%rsp)
jmp 0x4c8d9b
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x4c8cd4
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)