// File: /workspace/github_c_makefile_star2_O0/nh13[P]ksw/src/main.c
// Function: alignment_print
void alignment_print(FILE *fp, const char *query, const char *target, const main_opt_t *opt, const alignment_t *a) 
{
	int i;
	// output the score and start/end or start/length
	if (opt->offset_and_length == 1) {
		int qll = a->qle - a->qlb + 1;
		int tll = a->tle - a->tlb + 1;
		fprintf(fp, "%d\t%d\t%d\t%d\t%d", a->score, a->qlb, qll, a->tlb, tll);
	}
	else {
		fprintf(fp, "%d\t%d\t%d\t%d\t%d", a->score, a->qlb, a->qle, a->tlb, a->tle);
	}
	// output the cigar
	if (opt->add_cigar == 1) {
		fputc('\t', fp);
		if (a->n_cigar == 0) fputc('*', fp);
		for (i = 0; i < a->n_cigar; ++i) {
			fprintf(fp, "%d%c", a->cigar[i]>>4, "MID"[a->cigar[i]&0xf]);
		}
	}
	// output the query and target
	if (opt->add_seq) fprintf(fp, "\t%s\t%s", query, target);
	// flush the output so no one is waiting on buffering.
	fputc('\n', fp);
	fflush(fp);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x1, 0x34(%rax)
jne 0x1b8cd1
movq -0x28(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x28(%rbp), %rcx
subl 0x4(%rcx), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
movq -0x28(%rbp), %rax
movl 0x10(%rax), %eax
movq -0x28(%rbp), %rcx
subl 0x8(%rcx), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rax
movl (%rax), %edx
movq -0x28(%rbp), %rax
movl 0x4(%rax), %ecx
movl -0x30(%rbp), %r8d
movq -0x28(%rbp), %rax
movl 0x8(%rax), %r9d
movl -0x34(%rbp), %eax
leaq 0xad4b54(%rip), %rsi    # 0xc8d819
movl %eax, (%rsp)
movb $0x0, %al
callq 0x19e180
jmp 0x1b8d0a
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rax
movl (%rax), %edx
movq -0x28(%rbp), %rax
movl 0x4(%rax), %ecx
movq -0x28(%rbp), %rax
movl 0xc(%rax), %r8d
movq -0x28(%rbp), %rax
movl 0x8(%rax), %r9d
movq -0x28(%rbp), %rax
movl 0x10(%rax), %eax
leaq 0xad4b19(%rip), %rsi    # 0xc8d819
movl %eax, (%rsp)
movb $0x0, %al
callq 0x19e180
movq -0x20(%rbp), %rax
cmpl $0x1, 0x24(%rax)
jne 0x1b8da3
movq -0x8(%rbp), %rsi
movl $0x9, %edi
callq 0x19e140
movq -0x28(%rbp), %rax
cmpl $0x0, 0x20(%rax)
jne 0x1b8d3e
movq -0x8(%rbp), %rsi
movl $0x2a, %edi
callq 0x19e140
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x1b8da1
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x2c(%rbp), %rcx
movl (%rax,%rcx,4), %edx
shrl $0x4, %edx
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x2c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
andl $0xf, %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0xad4aa9(%rip), %rax    # 0xc8d82d
movsbl (%rax,%rcx), %ecx
leaq 0xad4a99(%rip), %rsi    # 0xc8d828
movb $0x0, %al
callq 0x19e180
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x1b8d45
jmp 0x1b8da3
movq -0x20(%rbp), %rax
cmpl $0x0, 0x28(%rax)
je 0x1b8dc7
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rdx
movq -0x18(%rbp), %rcx
leaq 0xad4a71(%rip), %rsi    # 0xc8d831
movb $0x0, %al
callq 0x19e180
movq -0x8(%rbp), %rsi
movl $0xa, %edi
callq 0x19e140
movq -0x8(%rbp), %rdi
callq 0x19e100
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)