// File: /workspace/github_c_makefile_star2_O0/lh3[P]minimap2/format.c
// Function: write_cs_ds_or_MD
static void write_cs_ds_or_MD(void *km, kstring_t *s, const mm_idx_t *mi, const mm_bseq1_t *t, const mm_reg1_t *r, int no_iden, int is_MD, int is_ds, int write_tag, int is_qstrand)
{
	extern unsigned char seq_nt4_table[256];
	int i;
	uint8_t *qseq, *tseq;
	char *tmp;
	if (r->p == 0) return;
	qseq = (uint8_t*)kmalloc(km, r->qe - r->qs);
	tseq = (uint8_t*)kmalloc(km, r->re - r->rs);
	tmp = (char*)kmalloc(km, r->re - r->rs > r->qe - r->qs? r->re - r->rs + 1 : r->qe - r->qs + 1);
	if (is_qstrand) {
		mm_idx_getseq2(mi, r->rev, r->rid, r->rs, r->re, tseq);
		for (i = r->qs; i < r->qe; ++i)
			qseq[i - r->qs] = seq_nt4_table[(uint8_t)t->seq[i]];
	} else {
		mm_idx_getseq(mi, r->rid, r->rs, r->re, tseq);
		if (!r->rev) {
			for (i = r->qs; i < r->qe; ++i)
				qseq[i - r->qs] = seq_nt4_table[(uint8_t)t->seq[i]];
		} else {
			for (i = r->qs; i < r->qe; ++i) {
				uint8_t c = seq_nt4_table[(uint8_t)t->seq[i]];
				qseq[r->qe - i - 1] = c >= 4? 4 : 3 - c;
			}
		}
	}
	if (is_MD) write_MD_core(s, tseq, qseq, r, tmp, write_tag);
	else write_cs_ds_core(s, tseq, qseq, r, tmp, no_iden, is_ds, write_tag);
	kfree(km, qseq); kfree(km, tseq); kfree(km, tmp);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movl 0x28(%rbp), %eax
movl 0x20(%rbp), %eax
movl 0x18(%rbp), %eax
movl 0x10(%rbp), %eax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movl %r9d, -0x2c(%rbp)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x48(%rax)
jne 0x1512c
jmp 0x153dd
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x14(%rax), %eax
movq -0x28(%rbp), %rcx
subl 0x10(%rcx), %eax
movslq %eax, %rsi
callq 0x1aae0
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x1c(%rax), %eax
movq -0x28(%rbp), %rcx
subl 0x18(%rcx), %eax
movslq %eax, %rsi
callq 0x1aae0
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x28(%rbp), %rax
movl 0x1c(%rax), %eax
movq -0x28(%rbp), %rcx
subl 0x18(%rcx), %eax
movq -0x28(%rbp), %rcx
movl 0x14(%rcx), %ecx
movq -0x28(%rbp), %rdx
subl 0x10(%rdx), %ecx
cmpl %ecx, %eax
jle 0x151a6
movq -0x28(%rbp), %rax
movl 0x1c(%rax), %eax
movq -0x28(%rbp), %rcx
subl 0x18(%rcx), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x151ba
movq -0x28(%rbp), %rax
movl 0x14(%rax), %eax
movq -0x28(%rbp), %rcx
subl 0x10(%rcx), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
movq -0x58(%rbp), %rdi
movl -0x5c(%rbp), %eax
movslq %eax, %rsi
callq 0x1aae0
movq %rax, -0x48(%rbp)
cmpl $0x0, 0x28(%rbp)
je 0x1525d
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x3c(%rax), %esi
shrl $0xa, %esi
andl $0x1, %esi
movq -0x28(%rbp), %rax
movl 0x8(%rax), %edx
movq -0x28(%rbp), %rax
movl 0x18(%rax), %ecx
movq -0x28(%rbp), %rax
movl 0x1c(%rax), %r8d
movq -0x40(%rbp), %r9
callq 0x8d20
movq -0x28(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x30(%rbp)
movl -0x30(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x14(%rcx), %eax
jge 0x15258
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x30(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x495ea(%rip), %rax     # 0x5e820
movb (%rax,%rcx), %dl
movq -0x38(%rbp), %rax
movl -0x30(%rbp), %ecx
movq -0x28(%rbp), %rsi
subl 0x10(%rsi), %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x15211
jmp 0x15365
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x8(%rax), %esi
movq -0x28(%rbp), %rax
movl 0x18(%rax), %edx
movq -0x28(%rbp), %rax
movl 0x1c(%rax), %ecx
movq -0x40(%rbp), %r8
callq 0x8ac0
movq -0x28(%rbp), %rax
movl 0x3c(%rax), %eax
shrl $0xa, %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x152e4
movq -0x28(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x30(%rbp)
movl -0x30(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x14(%rcx), %eax
jge 0x152e2
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x30(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x49560(%rip), %rax     # 0x5e820
movb (%rax,%rcx), %dl
movq -0x38(%rbp), %rax
movl -0x30(%rbp), %ecx
movq -0x28(%rbp), %rsi
subl 0x10(%rsi), %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x1529b
jmp 0x15363
movq -0x28(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x30(%rbp)
movl -0x30(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x14(%rcx), %eax
jge 0x15361
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x30(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x4950d(%rip), %rax     # 0x5e820
movb (%rax,%rcx), %al
movb %al, -0x49(%rbp)
movzbl -0x49(%rbp), %eax
cmpl $0x4, %eax
jl 0x1532c
movl $0x4, %eax
movl %eax, -0x60(%rbp)
jmp 0x1533a
movzbl -0x49(%rbp), %ecx
movl $0x3, %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %eax
movb %al, %dl
movq -0x38(%rbp), %rax
movq -0x28(%rbp), %rcx
movl 0x14(%rcx), %ecx
subl -0x30(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movb %dl, (%rax,%rcx)
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x152ee
jmp 0x15363
jmp 0x15365
cmpl $0x0, 0x10(%rbp)
je 0x1538a
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x48(%rbp), %r8
movl 0x20(%rbp), %r9d
callq 0x17350
jmp 0x153b6
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x48(%rbp), %r8
movl -0x2c(%rbp), %r9d
movl 0x18(%rbp), %r10d
movl 0x20(%rbp), %eax
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x17600
movq -0x8(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x1a8c0
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rsi
callq 0x1a8c0
movq -0x8(%rbp), %rdi
movq -0x48(%rbp), %rsi
callq 0x1a8c0
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)