// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/alignment.c
// Function: gt_alignment_exact_show
void gt_alignment_exact_show(GtUchar *buffer,
                             const GtAlignment *alignment,
                             FILE *fp,
                             unsigned int width,
                             const GtUchar *characters)
{
  GtUword idx;
  unsigned int pos = 0;
  GtUchar *topbuf = buffer, *midbuf = NULL, *lowbuf = NULL;

  if ((GtUword) width > alignment->ulen)
  {
    width = (unsigned int) alignment->ulen;
  }
  topbuf[width] = '\n';
  midbuf = topbuf + width + 1;
  for (idx = 0; idx < (GtUword) width; idx++)
  {
    midbuf[idx] = (GtUchar) MATCHSYMBOL;
  }
  midbuf[width] = '\n';
  lowbuf = midbuf + width + 1;
  lowbuf[width] = '\n';
  for (idx = 0; idx < alignment->ulen; idx++)
  {
    if (characters != NULL)
    {
      lowbuf[pos] = topbuf[pos] = characters[alignment->u[idx]];
    } else
    {
      lowbuf[pos] = topbuf[pos] = alignment->u[idx];
    }
    pos = gt_alignment_show_advance(pos,width,topbuf,fp);
  }
  if (pos > 0)
  {
    topbuf[pos] = '\n';
    fwrite(topbuf,sizeof *topbuf,pos+1,fp);
    midbuf[pos] = '\n';
    fwrite(midbuf,sizeof *midbuf,pos+1,fp);
    lowbuf[pos] = '\n';
    fwrite(lowbuf,sizeof *lowbuf,pos+1,fp);
  }
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq %rsi, 0x48(%rsp)
movq %rdx, 0x40(%rsp)
movl %ecx, 0x3c(%rsp)
movq %r8, 0x30(%rsp)
movl $0x0, 0x24(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x18(%rsp)
movq $0x0, 0x10(%rsp)
movq $0x0, 0x8(%rsp)
movl 0x3c(%rsp), %eax
movq 0x48(%rsp), %rcx
cmpq 0x38(%rcx), %rax
jbe 0x12bd4c
movq 0x48(%rsp), %rax
movq 0x38(%rax), %rax
movl %eax, 0x3c(%rsp)
movq 0x18(%rsp), %rax
movl 0x3c(%rsp), %ecx
movb $0xa, (%rax,%rcx)
movq 0x18(%rsp), %rax
movl 0x3c(%rsp), %ecx
addq %rcx, %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
movq $0x0, 0x28(%rsp)
movq 0x28(%rsp), %rax
movl 0x3c(%rsp), %ecx
cmpq %rcx, %rax
jae 0x12bda3
movq 0x10(%rsp), %rax
movq 0x28(%rsp), %rcx
movb $0x7c, (%rax,%rcx)
movq 0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x28(%rsp)
jmp 0x12bd77
movq 0x10(%rsp), %rax
movl 0x3c(%rsp), %ecx
movb $0xa, (%rax,%rcx)
movq 0x10(%rsp), %rax
movl 0x3c(%rsp), %ecx
addq %rcx, %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movl 0x3c(%rsp), %ecx
movb $0xa, (%rax,%rcx)
movq $0x0, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq 0x48(%rsp), %rcx
cmpq 0x38(%rcx), %rax
jae 0x12be82
cmpq $0x0, 0x30(%rsp)
je 0x12be2b
movq 0x30(%rsp), %rax
movq 0x48(%rsp), %rcx
movq 0x20(%rcx), %rcx
movq 0x28(%rsp), %rdx
movzbl (%rcx,%rdx), %ecx
movb (%rax,%rcx), %dl
movq 0x18(%rsp), %rax
movl 0x24(%rsp), %ecx
movb %dl, (%rax,%rcx)
movq 0x8(%rsp), %rax
movl 0x24(%rsp), %ecx
movb %dl, (%rax,%rcx)
jmp 0x12be54
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x28(%rsp), %rcx
movb (%rax,%rcx), %dl
movq 0x18(%rsp), %rax
movl 0x24(%rsp), %ecx
movb %dl, (%rax,%rcx)
movq 0x8(%rsp), %rax
movl 0x24(%rsp), %ecx
movb %dl, (%rax,%rcx)
movl 0x24(%rsp), %edi
movl 0x3c(%rsp), %esi
movq 0x18(%rsp), %rdx
movq 0x40(%rsp), %rcx
callq 0x12bbf0
movl %eax, 0x24(%rsp)
movq 0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x28(%rsp)
jmp 0x12bddb
cmpl $0x0, 0x24(%rsp)
jbe 0x12bf11
movq 0x18(%rsp), %rax
movl 0x24(%rsp), %ecx
movb $0xa, (%rax,%rcx)
movq 0x18(%rsp), %rdi
movl 0x24(%rsp), %eax
addl $0x1, %eax
movl %eax, %eax
movl %eax, %edx
movq 0x40(%rsp), %rcx
movl $0x1, %esi
callq 0x19ea0
movq 0x10(%rsp), %rax
movl 0x24(%rsp), %ecx
movb $0xa, (%rax,%rcx)
movq 0x10(%rsp), %rdi
movl 0x24(%rsp), %eax
addl $0x1, %eax
movl %eax, %eax
movl %eax, %edx
movq 0x40(%rsp), %rcx
movl $0x1, %esi
callq 0x19ea0
movq 0x8(%rsp), %rax
movl 0x24(%rsp), %ecx
movb $0xa, (%rax,%rcx)
movq 0x8(%rsp), %rdi
movl 0x24(%rsp), %eax
addl $0x1, %eax
movl %eax, %eax
movl %eax, %edx
movq 0x40(%rsp), %rcx
movl $0x1, %esi
callq 0x19ea0
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)