// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/ft-eoplist.c
// Function: gt_eoplist_format_exact
void gt_eoplist_format_exact(FILE *fp,
                             const GtEoplist *eoplist,
                             GtEoplistReader *eoplist_reader,
                             GtUword top_seqlength,
                             GtUword low_reference,
                             GtUword one_off,
                             bool subject_first,
                             bool alignment_show_forward,
                             bool show_complement_characters,
                             const GtUchar *characters)
{
  GtUword idx;
  unsigned int pos = 0, width;
  GtUchar *topbuf = eoplist_reader->outbuffer, *midbuf = NULL, *lowbuf = NULL;
  const int numwidth = gt_eoplist_numwidth(eoplist);
  GtUword top_start_pos = eoplist->ustart,
          low_start_pos = low_reference == 0 ? eoplist->vstart
                                             : low_reference - eoplist->vstart;

  gt_assert(alignment_show_forward || top_seqlength > 0);
  width = GT_MIN(eoplist->ulen, eoplist_reader->width);
  midbuf = topbuf + width;
  for (idx = 0; idx < (GtUword) width; idx++)
  {
    midbuf[idx] = (GtUchar) EOPLIST_MATCHSYMBOL;
  }
  lowbuf = midbuf + width;
  for (idx = 0; idx < eoplist->ulen; idx++)
  {
    GtUchar cc_a = eoplist->useq[alignment_show_forward ? idx
                                                        : eoplist->ulen-1-idx];

    if (characters != NULL)
    {
      if (show_complement_characters)
      {
        cc_a = GT_COMPLEMENTBASE(cc_a);
      }
      cc_a = characters[cc_a];
    }
    lowbuf[pos] = topbuf[pos] = cc_a;
    pos = gt_eoplist_show_advance(one_off,
                                  subject_first,
                                  numwidth,
                                  pos,
                                  width,
                                  topbuf,
                                  top_seqlength,
                                  top_start_pos,
                                  eoplist->ustart + idx,
                                  midbuf,
                                  lowbuf,
                                  low_start_pos,
                                  eoplist->vstart + idx,fp);
    if (pos == 0)
    {
      top_start_pos = eoplist->ustart + idx + 1;
      low_start_pos = eoplist->vstart + idx + 1;
    }
  }
  if (pos > 0)
  {
    gt_eoplist_write_lines(one_off,
                           subject_first,
                           numwidth,
                           pos,
                           topbuf,
                           top_seqlength,
                           top_start_pos,
                           eoplist->ustart + GT_MIN(idx,eoplist->ulen - 1),
                           midbuf,
                           lowbuf,
                           low_start_pos,
                           eoplist->vstart + GT_MIN(idx,eoplist->vlen - 1),
                           fp);
  }
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x160, %rsp            # imm = 0x160
movq %rcx, 0xd0(%rsp)
movq %rdx, 0xd8(%rsp)
movq %rsi, %r10
movq 0xd0(%rsp), %rsi
movq %rdi, %r11
movq 0xd8(%rsp), %rdi
movq 0x1a8(%rsp), %rax
movb 0x1a0(%rsp), %al
movb 0x198(%rsp), %cl
movb 0x190(%rsp), %dl
movq %r11, 0x158(%rsp)
movq %r10, 0x150(%rsp)
movq %rdi, 0x148(%rsp)
movq %rsi, 0x140(%rsp)
movq %r8, 0x138(%rsp)
movq %r9, 0x130(%rsp)
andb $0x1, %dl
movb %dl, 0x12f(%rsp)
andb $0x1, %cl
movb %cl, 0x12e(%rsp)
andb $0x1, %al
movb %al, 0x12d(%rsp)
movl $0x0, 0x11c(%rsp)
movq 0x148(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x110(%rsp)
movq $0x0, 0x108(%rsp)
movq $0x0, 0x100(%rsp)
movq 0x150(%rsp), %rdi
callq 0x4c55f0
movl %eax, 0xfc(%rsp)
movq 0x150(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0xf0(%rsp)
cmpq $0x0, 0x138(%rsp)
jne 0x4c5cb0
movq 0x150(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0xc8(%rsp)
jmp 0x4c5ccc
movq 0x138(%rsp), %rax
movq 0x150(%rsp), %rcx
subq 0x48(%rcx), %rax
movq %rax, 0xc8(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0xe8(%rsp)
testb $0x1, 0x12e(%rsp)
jne 0x4c5d29
cmpq $0x0, 0x140(%rsp)
ja 0x4c5d29
movq 0x1762a8(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x50311(%rip), %rsi     # 0x516013
leaq 0xf2a6b(%rip), %rdx     # 0x5b8774
leaq 0xf2b8d(%rip), %rcx     # 0x5b889d
leaq 0xf2621(%rip), %r8      # 0x5b8338
movl $0x4a0, %r9d            # imm = 0x4A0
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4c5d2b
movq 0x150(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x148(%rsp), %rcx
movl 0x20(%rcx), %ecx
cmpq %rcx, %rax
jae 0x4c5d5d
movq 0x150(%rsp), %rax
movq 0x40(%rax), %rax
movq %rax, 0xc0(%rsp)
jmp 0x4c5d70
movq 0x148(%rsp), %rax
movl 0x20(%rax), %eax
movq %rax, 0xc0(%rsp)
movq 0xc0(%rsp), %rax
movl %eax, 0x118(%rsp)
movq 0x110(%rsp), %rax
movl 0x118(%rsp), %ecx
addq %rcx, %rax
movq %rax, 0x108(%rsp)
movq $0x0, 0x120(%rsp)
movq 0x120(%rsp), %rax
movl 0x118(%rsp), %ecx
cmpq %rcx, %rax
jae 0x4c5de3
movq 0x108(%rsp), %rax
movq 0x120(%rsp), %rcx
movb $0x7c, (%rax,%rcx)
movq 0x120(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x120(%rsp)
jmp 0x4c5da5
movq 0x108(%rsp), %rax
movl 0x118(%rsp), %ecx
addq %rcx, %rax
movq %rax, 0x100(%rsp)
movq $0x0, 0x120(%rsp)
movq 0x120(%rsp), %rax
movq 0x150(%rsp), %rcx
cmpq 0x40(%rcx), %rax
jae 0x4c6023
movq 0x150(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0xb8(%rsp)
testb $0x1, 0x12e(%rsp)
je 0x4c5e53
movq 0x120(%rsp), %rax
movq %rax, 0xb0(%rsp)
jmp 0x4c5e73
movq 0x150(%rsp), %rax
movq 0x40(%rax), %rax
subq $0x1, %rax
subq 0x120(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0xb8(%rsp), %rax
movq 0xb0(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0xe7(%rsp)
cmpq $0x0, 0x1a8(%rsp)
je 0x4c5ed2
testb $0x1, 0x12d(%rsp)
je 0x4c5eb8
movzbl 0xe7(%rsp), %ecx
movl $0x3, %eax
subl %ecx, %eax
movb %al, 0xe7(%rsp)
movq 0x1a8(%rsp), %rax
movzbl 0xe7(%rsp), %ecx
movb (%rax,%rcx), %al
movb %al, 0xe7(%rsp)
movb 0xe7(%rsp), %dl
movq 0x110(%rsp), %rax
movl 0x11c(%rsp), %ecx
movb %dl, (%rax,%rcx)
movq 0x100(%rsp), %rax
movl 0x11c(%rsp), %ecx
movb %dl, (%rax,%rcx)
movq 0x130(%rsp), %rdi
movb 0x12f(%rsp), %sil
movl 0xfc(%rsp), %edx
movl 0x11c(%rsp), %ecx
movl 0x118(%rsp), %r8d
movq 0x110(%rsp), %r9
movq 0x140(%rsp), %r13
movq 0xf0(%rsp), %r12
movq 0x150(%rsp), %rax
movq 0x38(%rax), %r15
addq 0x120(%rsp), %r15
movq 0x108(%rsp), %r14
movq 0x100(%rsp), %rbx
movq 0xe8(%rsp), %r11
movq 0x150(%rsp), %rax
movq 0x48(%rax), %r10
addq 0x120(%rsp), %r10
movq 0x158(%rsp), %rax
andb $0x1, %sil
movzbl %sil, %esi
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movq %r11, 0x28(%rsp)
movq %r10, 0x30(%rsp)
movq %rax, 0x38(%rsp)
callq 0x4c56f0
movl %eax, 0x11c(%rsp)
cmpl $0x0, 0x11c(%rsp)
jne 0x4c6008
movq 0x150(%rsp), %rax
movq 0x38(%rax), %rax
addq 0x120(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xf0(%rsp)
movq 0x150(%rsp), %rax
movq 0x48(%rax), %rax
addq 0x120(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xe8(%rsp)
jmp 0x4c600a
movq 0x120(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x120(%rsp)
jmp 0x4c5e09
cmpl $0x0, 0x11c(%rsp)
jbe 0x4c61ff
movq 0x130(%rsp), %rax
movq %rax, 0x78(%rsp)
movb 0x12f(%rsp), %al
movb %al, 0x87(%rsp)
movl 0xfc(%rsp), %eax
movl %eax, 0x88(%rsp)
movl 0x11c(%rsp), %eax
movl %eax, 0x8c(%rsp)
movq 0x110(%rsp), %rax
movq %rax, 0x90(%rsp)
movq 0x140(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0xf0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x150(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0xa8(%rsp)
movq 0x120(%rsp), %rax
movq 0x150(%rsp), %rcx
movq 0x40(%rcx), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x4c60d8
movq 0x120(%rsp), %rax
movq %rax, 0x70(%rsp)
jmp 0x4c60ed
movq 0x150(%rsp), %rax
movq 0x40(%rax), %rax
subq $0x1, %rax
movq %rax, 0x70(%rsp)
movq 0xa8(%rsp), %rax
movq 0x70(%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x48(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x100(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0xe8(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x150(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x68(%rsp)
movq 0x120(%rsp), %rax
movq 0x150(%rsp), %rcx
movq 0x50(%rcx), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x4c6166
movq 0x120(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4c617b
movq 0x150(%rsp), %rax
movq 0x50(%rax), %rax
subq $0x1, %rax
movq %rax, 0x40(%rsp)
movq 0x98(%rsp), %r9
movq 0x90(%rsp), %r8
movl 0x8c(%rsp), %ecx
movl 0x88(%rsp), %edx
movq 0x78(%rsp), %rdi
movb 0x87(%rsp), %al
movq 0xa0(%rsp), %r10
movq 0x48(%rsp), %r11
movq 0x50(%rsp), %rbx
movq 0x58(%rsp), %r14
movq 0x60(%rsp), %r15
movq 0x68(%rsp), %r12
movq 0x40(%rsp), %rsi
addq %rsi, %r12
movq 0x158(%rsp), %r13
movq %rsp, %rsi
movq %r13, 0x30(%rsi)
movq %r12, 0x28(%rsi)
movq %r15, 0x20(%rsi)
movq %r14, 0x18(%rsi)
movq %rbx, 0x10(%rsi)
movq %r11, 0x8(%rsi)
movq %r10, (%rsi)
movzbl %al, %esi
andl $0x1, %esi
callq 0x4c58b0
addq $0x160, %rsp            # imm = 0x160
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq