// File: /workspace/github_cpp_makefile_star2_O3/isovic[P]cigargen/cigargen.cc
// Function: Verbose(_IO_FILE*, char*, unsigned int, char*, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::vector<std::vector<int, std::allocator<int>>, std::allocator<std::vector<int, std::allocator<int>>>>&, std::vector<std::vector<unsigned char, std::allocator<unsigned char>>, std::allocator<std::vector<unsigned char, std::allocator<unsigned char>>>>&)
void Verbose(FILE *fp, char *query, uint32_t query_length, char *reference, uint32_t reference_length, std::string &cigar, std::vector<std::vector<int32_t> > &dp_matrix, std::vector<std::vector<uint8_t> > &dp_traceback) {
  fprintf (fp, "%3c", ' ');
  for (uint32_t i=0; i<=reference_length; i++) {
    if (i > 0)
      fprintf (fp, "%3c", reference[i-1]);
    else
      fprintf (fp, "%3c", '-');
  }
  fprintf (fp, "\n");

  for (uint32_t i=0; i<=query_length; i++) {
    if (i > 0)
      fprintf (fp, "%3c", query[i-1]);
    else
      fprintf (fp, "%3c", '-');

    for (uint32_t j=0; j<=reference_length; j++) {
      fprintf (fp, "%3d", dp_matrix[i][j]);
    }
    fprintf (fp, "\n");
  }

  fprintf (fp, "\n");
  fprintf (fp, "Traceback:\n");

  fprintf (fp, "%3c", ' ');
  for (uint32_t i=0; i<=reference_length; i++) {
    if (i > 0)
      fprintf (fp, "%3c", reference[i-1]);
    else
      fprintf (fp, "%3c", '-');
  }
  fprintf (fp, "\n");

  for (uint32_t i=0; i<=query_length; i++) {
    if (i > 0)
      fprintf (fp, "%3c", query[i-1]);
    else
      fprintf (fp, "%3c", '-');

    for (uint32_t j=0; j<=reference_length; j++) {
      fprintf (fp, "%3d", dp_traceback[i][j]);
    }
    fprintf (fp, "\n");
  }

  fprintf (fp, "\n");

  fprintf (fp, "CIGAR: %s\n", cigar.c_str());
  fprintf (fp, "\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %r9, -0x58(%rbp)
movl %r8d, %r15d
movq %rcx, -0x48(%rbp)
movl %edx, -0x30(%rbp)
movq %rsi, -0x50(%rbp)
movq %rdi, %rbx
movq 0x18(%rbp), %rax
movq %rax, -0x68(%rbp)
movq 0x10(%rbp), %r12
leaq 0x134c(%rip), %rsi      # 0x40ca
movq %rsi, %r14
movl $0x20, %edx
xorl %eax, %eax
callq 0x2170
xorl %r13d, %r13d
testl %r13d, %r13d
je 0x2da3
leal -0x1(%r13), %eax
movq -0x48(%rbp), %rcx
movsbl (%rcx,%rax), %edx
jmp 0x2da8
movl $0x2d, %edx
movq %rbx, %rdi
movq %r14, %rsi
xorl %eax, %eax
callq 0x2170
incl %r13d
cmpl %r15d, %r13d
jbe 0x2d90
movl $0xa, %edi
movq %rbx, -0x38(%rbp)
movq %rbx, %rsi
callq 0x2160
xorl %r13d, %r13d
movq %r12, -0x60(%rbp)
movl %r15d, -0x2c(%rbp)
movq -0x60(%rbp), %r15
movl -0x2c(%rbp), %ebx
testl %r13d, %r13d
je 0x2df3
leal -0x1(%r13), %eax
movq -0x50(%rbp), %rcx
movsbl (%rcx,%rax), %edx
jmp 0x2df8
movl $0x2d, %edx
movq -0x38(%rbp), %r12
movq %r12, %rdi
leaq 0x12c4(%rip), %rsi      # 0x40ca
xorl %eax, %eax
callq 0x2170
movq %r13, -0x40(%rbp)
movl %r13d, %eax
leaq (%rax,%rax,2), %r14
xorl %r13d, %r13d
movq (%r15), %rax
movq (%rax,%r14,8), %rax
movl (%rax,%r13,4), %edx
movq %r12, %rdi
leaq 0x129e(%rip), %rsi      # 0x40ce
xorl %eax, %eax
callq 0x2170
incq %r13
leal -0x1(%r13), %eax
cmpl %ebx, %eax
jb 0x2e1b
movl $0xa, %edi
movq %r12, %rsi
callq 0x2160
movq -0x40(%rbp), %r13
incl %r13d
cmpl -0x30(%rbp), %r13d
jbe 0x2de0
movl %ebx, %r14d
movl $0xa, %edi
movq -0x38(%rbp), %r15
movq %r15, %rsi
callq 0x2160
leaq 0x125b(%rip), %rdi      # 0x40d2
movl $0xb, %esi
movl $0x1, %edx
movq %r15, %rcx
callq 0x21e0
leaq 0x123a(%rip), %r13      # 0x40ca
movq %r15, %rdi
movq %r13, %rsi
movl $0x20, %edx
xorl %eax, %eax
callq 0x2170
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
cmpl $-0x1, %r12d
je 0x2ebb
movl %r12d, %eax
movq -0x48(%rbp), %rcx
movsbl (%rcx,%rax), %edx
jmp 0x2ec0
movl $0x2d, %edx
movq %r15, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x2170
incl %r12d
cmpl %r14d, %r12d
jb 0x2ea8
movl $0xa, %edi
movq %r15, %rsi
callq 0x2160
xorl %r12d, %r12d
movq -0x68(%rbp), %r13
movl -0x2c(%rbp), %ebx
testl %r12d, %r12d
je 0x2f00
leal -0x1(%r12), %eax
movq -0x50(%rbp), %rcx
movsbl (%rcx,%rax), %edx
jmp 0x2f05
movl $0x2d, %edx
movq %r15, %rdi
leaq 0x11bb(%rip), %rsi      # 0x40ca
xorl %eax, %eax
callq 0x2170
movq %r12, -0x40(%rbp)
movl %r12d, %eax
leaq (%rax,%rax,2), %r14
xorl %r12d, %r12d
movq (%r13), %rax
movq (%rax,%r14,8), %rax
movzbl (%rax,%r12), %edx
movq %r15, %rdi
leaq 0x1193(%rip), %rsi      # 0x40ce
xorl %eax, %eax
callq 0x2170
incq %r12
leal -0x1(%r12), %eax
cmpl %ebx, %eax
jb 0x2f24
movl $0xa, %edi
movq %r15, %rsi
callq 0x2160
movq -0x40(%rbp), %rcx
leal 0x1(%rcx), %eax
cmpl -0x30(%rbp), %ecx
movl %eax, %r12d
jb 0x2eec
movl $0xa, %edi
movq %r15, %rsi
callq 0x2160
movq -0x58(%rbp), %rax
movq (%rax), %rdx
leaq 0x10d8(%rip), %rsi      # 0x405d
movq %r15, %rdi
xorl %eax, %eax
callq 0x2170
movl $0xa, %edi
movq %r15, %rsi
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2160