LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/align.c
// Function: mm_adjust_minier
static inline void mm_adjust_minier(const mm_idx_t *mi, uint8_t *const qseq0[2], mm128_t *a, int32_t *r, int32_t *q)
{
	if (mi->flag & MM_I_HPC) {
		const uint8_t *qseq = qseq0[a->x>>63];
		int i, c;
		*q = (int32_t)a->y;
		for (i = *q - 1, c = qseq[*q]; i > 0; --i)
			if (qseq[i] != c) break;
		*q = i + 1;
		c = mm_get_hplen_back(mi, a->x<<1>>33, (int32_t)a->x);
		*r = (int32_t)a->x + 1 - c;
	} else {
		*r = (int32_t)a->x - (mi->k>>1);
		*q = (int32_t)a->y - (mi->k>>1);
	}
}

// Assembly:
movq %rcx, %rax
testb $0x1, 0xc(%rdi)
movq (%rdx), %r9
jne 0x180bd
movl 0x8(%rdi), %ecx
sarl %ecx
subl %ecx, %r9d
movl %r9d, (%rax)
movl 0x8(%rdx), %eax
movl 0x8(%rdi), %ecx
sarl %ecx
subl %ecx, %eax
movl %eax, (%r8)
retq
pushq %rbp
pushq %rbx
movq %r9, %rcx
shrq $0x3f, %rcx
movq (%rsi,%rcx,8), %r10
movq 0x8(%rdx), %rcx
movl %ecx, %r11d
movl %ecx, (%r8)
movslq %r11d, %rdx
movb (%r10,%rdx), %sil
testl %ecx, %ecx
movl $0x1, %edx
cmovlel %ecx, %edx
addq %r11, %r10
decq %r10
cmpl $0x2, %ecx
jl 0x18102
decl %ecx
leaq -0x1(%r10), %r11
cmpb %sil, (%r10)
movq %r11, %r10
je 0x180eb
incl %ecx
movl %ecx, %edx
movl %edx, (%r8)
movq %r9, %rcx
shrq $0x20, %rcx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
imulq $0x18, %rcx, %rcx
movq 0x20(%rdi), %rdx
movq 0x28(%rdi), %rsi
movq 0x8(%rdx,%rcx), %rdi
movl %r9d, %edx
addq %rdi, %rdx
movq %rdx, %rcx
sarq $0x3, %rcx
movl (%rsi,%rcx,4), %r8d
leal (,%rdx,4), %ecx
shrl %cl, %r8d
leaq -0x1(%rdi), %r11
leal (%rdi,%r9), %ecx
leal -0x4(,%rcx,4), %ebx
movq %rdx, %r10
cmpq %rdi, %r10
jle 0x18177
decq %r10
movq %r10, %rcx
sarq $0x3, %rcx
movl (%rsi,%rcx,4), %ebp
movl %ebx, %ecx
andb $0x1c, %cl
shrl %cl, %ebp
xorl %r8d, %ebp
addl $-0x4, %ebx
testb $0xf, %bpl
je 0x18150
jmp 0x1817a
movq %r11, %r10
subl %edx, %r10d
leal (%r9,%r10), %ecx
incl %ecx
movl %ecx, (%rax)
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/align.c
// Function: mm_seq_rev
static inline void mm_seq_rev(uint32_t len, uint8_t *seq)
{
	uint32_t i;
	uint8_t t;
	for (i = 0; i < len>>1; ++i)
		t = seq[i], seq[i] = seq[len - 1 - i], seq[len - 1 - i] = t;
}

// Assembly:
movl %edi, %eax
shrl %eax
decl %edi
xorl %ecx, %ecx
cmpq %rcx, %rax
je 0x181de
movb (%rsi,%rcx), %dl
movl %edi, %r8d
movb (%rsi,%r8), %r9b
movb %r9b, (%rsi,%rcx)
movb %dl, (%rsi,%r8)
incq %rcx
decl %edi
jmp 0x181c0
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/align.c
// Function: mm_append_cigar
static void mm_append_cigar(mm_reg1_t *r, uint32_t n_cigar, const uint32_t *cigar)
{
	mm_extra_t *p;
	if (n_cigar == 0) return;
	mm_enlarge_cigar(r, n_cigar);
	p = r->p;
	if (p->n_cigar > 0 && (p->cigar[p->n_cigar-1]&0xf) == (cigar[0]&0xf)) { // same CIGAR op at the boundary
		p->cigar[p->n_cigar-1] += cigar[0]>>4<<4;
		if (n_cigar > 1) memcpy(p->cigar + p->n_cigar, cigar + 1, (n_cigar - 1) * 4);
		p->n_cigar += n_cigar - 1;
	} else {
		memcpy(p->cigar + p->n_cigar, cigar, n_cigar * 4);
		p->n_cigar += n_cigar;
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %r14
movl %esi, %ebx
movq %rdi, %r15
callq 0x14e40
movq 0x48(%r15), %r15
movl 0x18(%r15), %eax
testq %rax, %rax
je 0x185e7
leal -0x1(%rax), %ecx
movl 0x1c(%r15,%rcx,4), %edx
movl (%r14), %esi
movl %esi, %edi
xorl %edx, %edi
testb $0xf, %dil
je 0x18604
leaq (%r15,%rax,4), %rdi
addq $0x1c, %rdi
leal (,%rbx,4), %edx
movq %r14, %rsi
callq 0x22a0
addl 0x18(%r15), %ebx
jmp 0x18634
leaq 0x1c(%r15), %rdi
andl $-0x10, %esi
addl %edx, %esi
movl %esi, (%rdi,%rcx,4)
cmpl $0x2, %ebx
jb 0x18630
leaq (%rdi,%rax,4), %rdi
addq $0x4, %r14
leal -0x4(,%rbx,4), %edx
movq %r14, %rsi
callq 0x22a0
movl 0x18(%r15), %eax
addl %eax, %ebx
decl %ebx
movl %ebx, 0x18(%r15)
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/align.c
// Function: mm_seed_ext_score
static int mm_seed_ext_score(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, const int8_t mat[25], int qlen, uint8_t *qseq0[2], const mm128_t *a)
{
	uint8_t *qseq, *tseq;
	int q_span = a->y>>32&0xff, qs, qe, rs, re, rid, score, q_off, t_off, ext_len = opt->anchor_ext_len;
	void *qp;
	rid = a->x<<1>>33;
	re = (uint32_t)a->x + 1, rs = re - q_span;
	qe = (uint32_t)a->y + 1, qs = qe - q_span;
	rs = rs - ext_len > 0? rs - ext_len : 0;
	qs = qs - ext_len > 0? qs - ext_len : 0;
	re = re + ext_len < (int32_t)mi->seq[rid].len? re + ext_len : mi->seq[rid].len;
	qe = qe + ext_len < qlen? qe + ext_len : qlen;
	tseq = (uint8_t*)kmalloc(km, re - rs);
	if (opt->flag & MM_F_QSTRAND) {
		qseq = qseq0[0] + qs;
		mm_idx_getseq2(mi, a->x>>63, rid, rs, re, tseq);
	} else {
		qseq = qseq0[a->x>>63] + qs;
		mm_idx_getseq(mi, rid, rs, re, tseq);
	}
	qp = ksw_ll_qinit(km, 2, qe - qs, qseq, 5, mat);
	score = ksw_ll_i16(qp, re - rs, tseq, opt->q, opt->e, &q_off, &t_off);
	kfree(km, tseq);
	kfree(km, qp);
	return score;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %r9, 0x10(%rsp)
movl %r8d, 0xc(%rsp)
movq %rcx, 0x30(%rsp)
movq %rsi, %r14
movq 0x80(%rsp), %rcx
movq 0x8(%rcx), %rsi
movq %rsi, %rax
shrq $0x20, %rax
movzbl %al, %eax
movl 0xa4(%r14), %r15d
movq (%rcx), %rcx
leal 0x1(%rcx), %r13d
movq %rcx, %rbx
shrq $0x20, %rbx
andl $0x7fffffff, %ebx       # imm = 0x7FFFFFFF
incl %esi
addl %r15d, %eax
subl %eax, %r13d
xorl %r8d, %r8d
testl %r13d, %r13d
cmovlel %r8d, %r13d
addl %r15d, %ecx
incl %ecx
movq %rsi, 0x28(%rsp)
movl %esi, %r12d
subl %eax, %r12d
testl %r12d, %r12d
cmovlel %r8d, %r12d
movq %rdx, 0x18(%rsp)
movq 0x20(%rdx), %rax
imulq $0x18, %rbx, %rdx
movl 0x10(%rax,%rdx), %ebp
cmpl %ebp, %ecx
cmovll %ecx, %ebp
movl %ebp, %eax
subl %r13d, %eax
movl %eax, 0x8(%rsp)
movslq %eax, %rsi
movq %rdi, 0x20(%rsp)
callq 0x10afc
movq %rax, %r9
movq %r14, 0x38(%rsp)
testb $0x1, 0x4(%r14)
jne 0x190a0
movq 0x80(%rsp), %rax
movq (%rax), %rax
shrq $0x3f, %rax
movl %r12d, %r14d
movq 0x10(%rsp), %rcx
addq (%rcx,%rax,8), %r14
movq 0x18(%rsp), %rdi
movl %ebx, %esi
movl %r13d, %edx
movl %ebp, %ecx
movq %r9, %r13
movq %r9, %r8
callq 0x612e
jmp 0x190cf
movl %r12d, %r14d
movq 0x10(%rsp), %rax
addq (%rax), %r14
movq 0x80(%rsp), %rax
movq (%rax), %rsi
shrq $0x3f, %rsi
movq 0x18(%rsp), %rdi
movl %ebx, %edx
movl %r13d, %ecx
movl %ebp, %r8d
movq %r9, %r13
callq 0x6237
addl 0x28(%rsp), %r15d
movl 0xc(%rsp), %eax
cmpl %eax, %r15d
cmovgel %eax, %r15d
subl %r12d, %r15d
pushq $0x2
popq %rsi
pushq $0x5
popq %r8
movq 0x20(%rsp), %r12
movq %r12, %rdi
movl %r15d, %edx
movq %r14, %rcx
movq 0x30(%rsp), %r9
callq 0x1bce4
movq %rax, %rbx
movq 0x38(%rsp), %rax
movl 0x6c(%rax), %ecx
movl 0x70(%rax), %r8d
leaq 0x40(%rsp), %rax
movq %rax, (%rsp)
leaq 0x44(%rsp), %r9
movq %rbx, %rdi
movl 0x8(%rsp), %esi
movq %r13, %rdx
callq 0x1bec3
movl %eax, %ebp
movq %r12, %rdi
movq %r13, %rsi
callq 0x10a07
movq %r12, %rdi
movq %rbx, %rsi
callq 0x10a07
movl %ebp, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/hit.c
// Function: hash64
static inline uint64_t hash64(uint64_t key)
{
	key = (~key + (key << 21));
	key = key ^ key >> 24;
	key = ((key + (key << 3)) + (key << 8));
	key = key ^ key >> 14;
	key = ((key + (key << 2)) + (key << 4));
	key = key ^ key >> 28;
	key = (key + (key << 31));
	return key;
}

// Assembly:
movq %rdi, %rax
notq %rax
shlq $0x15, %rdi
addq %rax, %rdi
movq %rdi, %rax
shrq $0x18, %rax
xorq %rdi, %rax
imulq $0x109, %rax, %rax      # imm = 0x109
movq %rax, %rcx
shrq $0xe, %rcx
xorq %rax, %rcx
imulq $0x15, %rcx, %rax
movq %rax, %rcx
shrq $0x1c, %rcx
xorq %rax, %rcx
movl $0x80000001, %eax       # imm = 0x80000001
imulq %rcx, %rax
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/hit.c
// Function: mm_reg_set_coor
static inline void mm_reg_set_coor(mm_reg1_t *r, int32_t qlen, const mm128_t *a, int is_qstrand)
{ // NB: r->as and r->cnt MUST BE set correctly for this function to work
	int32_t k = r->as, q_span = (int32_t)(a[k].y>>32&0xff);
	r->rev = a[k].x>>63;
	r->rid = a[k].x<<1>>33;
	r->rs = (int32_t)a[k].x + 1 > q_span? (int32_t)a[k].x + 1 - q_span : 0; // NB: target span may be shorter, so this test is necessary
	r->re = (int32_t)a[k + r->cnt - 1].x + 1;
	if (!r->rev || is_qstrand) {
		r->qs = (int32_t)a[k].y + 1 - q_span;
		r->qe = (int32_t)a[k + r->cnt - 1].y + 1;
	} else {
		r->qs = qlen - ((int32_t)a[k + r->cnt - 1].y + 1);
		r->qe = qlen - ((int32_t)a[k].y + 1 - q_span);
	}
	mm_cal_fuzzy_len(r, a);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movslq 0x28(%rdi), %rax
movq %rax, %r10
shlq $0x4, %r10
leaq (%rdx,%r10), %rbx
movzbl 0xc(%rdx,%r10), %r11d
movq (%rdx,%r10), %r15
shrq $0x35, %r15
andl $0x400, %r15d           # imm = 0x400
movl $0xfffffbff, %r8d       # imm = 0xFFFFFBFF
andl 0x3c(%rdi), %r8d
orl %r15d, %r8d
movl %r8d, 0x3c(%rdi)
movq (%rdx,%r10), %r8
movq %r8, %r9
shrq $0x20, %r9
andl $0x7fffffff, %r9d       # imm = 0x7FFFFFFF
xorl %ebp, %ebp
movl %r8d, %r14d
subl %r11d, %r14d
leal 0x1(%r14), %r14d
cmovll %ebp, %r14d
movl %r9d, 0x8(%rdi)
movl %r14d, 0x18(%rdi)
movslq 0x4(%rdi), %r14
movq %r14, %r9
addq %rax, %r9
movq %r9, %r13
shlq $0x4, %r13
leaq (%rdx,%r13), %r12
movl -0x10(%rdx,%r13), %ebp
incl %ebp
movl %ebp, 0x1c(%rdi)
testl %ecx, %ecx
jne 0x194dd
testl %r15d, %r15d
je 0x194dd
movl -0x8(%r12), %ebp
notl %ebp
addl %esi, %ebp
movq 0x8(%rbx), %rcx
movl %ecx, %ebx
notl %ebx
addl %esi, %r11d
addl %ebx, %r11d
jmp 0x194f0
movq 0x8(%rbx), %rcx
movl %ecx, %ebp
subl %r11d, %ebp
incl %ebp
movl -0x8(%r12), %r11d
incl %r11d
movl %ebp, 0x10(%rdi)
movl %r11d, 0x14(%rdi)
andq $0x0, 0x2c(%rdi)
testl %r14d, %r14d
jle 0x19576
movq %rcx, %rsi
shrq $0x20, %rsi
movzbl %sil, %esi
movl %esi, 0x30(%rdi)
addq %r10, %rdx
addq $0x18, %rdx
incq %rax
movl %esi, %r10d
cmpq %r9, %rax
jge 0x19572
movq -0x8(%rdx), %r11
movq (%rdx), %rbx
movl %ebx, %ebp
subl %ecx, %ebp
movq %rbx, %rcx
shrq $0x20, %rbx
movzbl %bl, %ebx
movl %r11d, %r14d
subl %r8d, %r14d
cmpl %ebp, %r14d
movl %ebp, %r8d
cmovgl %r14d, %r8d
movl %ebp, %r15d
cmovll %r14d, %r15d
addl %r8d, %esi
cmpl %ebx, %ebp
movl %r15d, %r8d
cmovgl %ebx, %r8d
movl %esi, 0x30(%rdi)
cmpl %ebx, %r14d
cmovlel %r15d, %r8d
addl %r8d, %r10d
addq $0x10, %rdx
incq %rax
movq %r11, %r8
jmp 0x1951c
movl %r10d, 0x2c(%rdi)
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/hit.c
// Function: mm_mark_alt
void mm_mark_alt(const mm_idx_t *mi, int n, mm_reg1_t *r)
{
	int i;
	if (mi->n_alt == 0) return;
	for (i = 0; i < n; ++i)
		if (mi->seq[r[i].rid].is_alt)
			r[i].is_alt = 1;
}

// Assembly:
cmpl $0x0, 0x18(%rdi)
je 0x195b7
xorl %eax, %eax
testl %esi, %esi
cmovlel %eax, %esi
imulq $0x50, %rsi, %rcx
cmpq %rax, %rcx
je 0x195b7
movq 0x20(%rdi), %rsi
movslq 0x8(%rdx,%rax), %r8
imulq $0x18, %r8, %r8
cmpl $0x0, 0x14(%rsi,%r8)
je 0x195b1
orb $0x2, 0x3f(%rdx,%rax)
addq $0x50, %rax
jmp 0x19592
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/hit.c
// Function: mm_split_reg
void mm_split_reg(mm_reg1_t *r, mm_reg1_t *r2, int n, int qlen, mm128_t *a, int is_qstrand)
{
	if (n <= 0 || n >= r->cnt) return;
	*r2 = *r;
	r2->id = -1;
	r2->sam_pri = 0;
	r2->p = 0;
	r2->split_inv = 0;
	r2->cnt = r->cnt - n;
	r2->score = (int32_t)(r->score * ((float)r2->cnt / r->cnt) + .499);
	r2->as = r->as + n;
	if (r->parent == r->id) r2->parent = MM_PARENT_TMP_PRI;
	mm_reg_set_coor(r2, qlen, a, is_qstrand);
	r->cnt -= r2->cnt;
	r->score -= r2->score;
	mm_reg_set_coor(r, qlen, a, is_qstrand);
	r->split |= 1, r2->split |= 2;
}

// Assembly:
testl %edx, %edx
jle 0x19685
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %r14
cmpl %edx, 0x4(%rdi)
jle 0x1967d
movl %r9d, %ebp
movq %r8, %r15
movl %ecx, %r12d
movq %rsi, %rbx
pushq $0xa
popq %rcx
movq %rsi, %rdi
movq %r14, %rsi
rep  movsq (%rsi), %es:(%rdi)
orl $-0x1, (%rbx)
andq $0x0, 0x48(%rbx)
andl $0xfeffefff, 0x3c(%rbx) # imm = 0xFEFFEFFF
movl 0x4(%r14), %eax
subl %edx, %eax
movl %eax, 0x4(%rbx)
cvtsi2ssl 0xc(%r14), %xmm0
cvtsi2ss %eax, %xmm1
cvtsi2ssl 0x4(%r14), %xmm2
divss %xmm2, %xmm1
mulss %xmm0, %xmm1
cvtss2sd %xmm1, %xmm0
addsd 0xc9f0(%rip), %xmm0     # 0x26018
cvttsd2si %xmm0, %eax
movl %eax, 0xc(%rbx)
addl 0x28(%r14), %edx
movl %edx, 0x28(%rbx)
movl 0x20(%r14), %eax
cmpl (%r14), %eax
jne 0x19646
movl $0xfffffffe, 0x20(%rbx) # imm = 0xFFFFFFFE
movq %rbx, %rdi
movl %r12d, %esi
movq %r15, %rdx
movl %ebp, %ecx
callq 0x19433
movl 0x4(%rbx), %eax
subl %eax, 0x4(%r14)
movl 0xc(%rbx), %eax
subl %eax, 0xc(%r14)
movq %r14, %rdi
movl %r12d, %esi
movq %r15, %rdx
movl %ebp, %ecx
callq 0x19433
orb $0x1, 0x3d(%r14)
orb $0x2, 0x3d(%rbx)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/hit.c
// Function: mm_set_sam_pri
int mm_set_sam_pri(int n, mm_reg1_t *r)
{
	int i, n_pri = 0;
	for (i = 0; i < n; ++i)
		if (r[i].id == r[i].parent) {
			++n_pri;
			r[i].sam_pri = (n_pri == 1);
		} else r[i].sam_pri = 0;
	return n_pri;
}

// Assembly:
xorl %ecx, %ecx
testl %edi, %edi
cmovlel %ecx, %edi
imulq $0x50, %rdi, %rdx
movl $0xffffefff, %edi       # imm = 0xFFFFEFFF
xorl %eax, %eax
cmpq %rcx, %rdx
je 0x19cdf
movl (%rsi,%rcx), %r8d
cmpl 0x20(%rsi,%rcx), %r8d
jne 0x19cd4
xorl %r8d, %r8d
testl %eax, %eax
leal 0x1(%rax), %eax
sete %r8b
shll $0xc, %r8d
movl 0x3c(%rsi,%rcx), %r9d
andl %edi, %r9d
orl %r8d, %r9d
movl %r9d, 0x3c(%rsi,%rcx)
jmp 0x19cd9
andb $-0x11, 0x3d(%rsi,%rcx)
addq $0x50, %rcx
jmp 0x19ca2
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/hit.c
// Function: mm_sync_regs
void mm_sync_regs(void *km, int n_regs, mm_reg1_t *regs) // keep mm_reg1_t::{id,parent} in sync; also reset id
{
	int *tmp, i, max_id = -1, n_tmp;
	if (n_regs <= 0) return;
	for (i = 0; i < n_regs; ++i) // NB: doesn't work if mm_reg1_t::id is negative
		max_id = max_id > regs[i].id? max_id : regs[i].id;
	n_tmp = max_id + 1;
	tmp = (int*)kmalloc(km, n_tmp * sizeof(int));
	for (i = 0; i < n_tmp; ++i) tmp[i] = -1;
	for (i = 0; i < n_regs; ++i)
		if (regs[i].id >= 0) tmp[regs[i].id] = i;
	for (i = 0; i < n_regs; ++i) {
		mm_reg1_t *r = &regs[i];
		r->id = i;
		if (r->parent == MM_PARENT_TMP_PRI)
			r->parent = i;
		else if (r->parent >= 0 && tmp[r->parent] >= 0)
			r->parent = tmp[r->parent];
		else r->parent = MM_PARENT_UNSET;
	}
	kfree(km, tmp);
	mm_set_sam_pri(n_regs, regs);
}

// Assembly:
testl %esi, %esi
jle 0x19dbb
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rdi, %r15
movl %esi, %r14d
imulq $0x50, %r14, %rax
pushq $-0x1
popq %r12
xorl %ecx, %ecx
cmpq %rcx, %rax
je 0x19d18
movl (%rbx,%rcx), %edx
cmpl %edx, %r12d
cmovlel %edx, %r12d
addq $0x50, %rcx
jmp 0x19d03
leal 0x1(%r12), %esi
shlq $0x2, %rsi
movq %r15, %rdi
callq 0x10afc
movslq %r12d, %rcx
xorl %edx, %edx
cmpq %rcx, %rdx
jg 0x19d3c
orl $-0x1, (%rax,%rdx,4)
incq %rdx
jmp 0x19d2e
xorl %ecx, %ecx
movq %rbx, %rdx
cmpq %rcx, %r14
je 0x19d5a
movslq (%rdx), %rsi
testq %rsi, %rsi
js 0x19d51
movl %ecx, (%rax,%rsi,4)
incq %rcx
addq $0x50, %rdx
jmp 0x19d41
leaq 0x20(%rbx), %rcx
xorl %edx, %edx
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
pushq $-0x1
popq %rdi
cmpq %rdx, %r14
je 0x19d9a
movl %edx, -0x20(%rcx)
movl (%rcx), %r8d
cmpq %rsi, %r8
jne 0x19d7d
movl %edx, %r8d
jmp 0x19d8e
testl %r8d, %r8d
js 0x19d8b
movl (%rax,%r8,4), %r8d
testl %r8d, %r8d
jns 0x19d8e
movl %edi, %r8d
movl %r8d, (%rcx)
incq %rdx
addq $0x50, %rcx
jmp 0x19d68
movq %r15, %rdi
movq %rax, %rsi
callq 0x10a07
movl %r14d, %edi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x19c90
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/hit.c
// Function: mm_filter_strand_retained
int mm_filter_strand_retained(int n_regs, mm_reg1_t *r)
{
	int i, k;
	for (i = k = 0; i < n_regs; ++i) {
		int p = r[i].parent;
		if (!r[i].strand_retained || r[i].div < r[p].div * 5.0f || r[i].div < 0.01f) {
			if (k < i) r[k++] = r[i];
			else ++k;
		}
	}
	return k;
}

// Assembly:
movq %rsi, %r9
movl %edi, %edx
xorl %r10d, %r10d
testl %edi, %edi
cmovlel %r10d, %edx
leaq 0x44(%rsi), %r11
pushq $0xa
popq %r8
movss 0xf978(%rip), %xmm0     # 0x29958
movss 0xf974(%rip), %xmm1     # 0x2995c
xorl %eax, %eax
cmpq %r10, %rdx
je 0x1a03f
testb $0x4, -0x5(%r11)
jne 0x1a014
movslq %eax, %rcx
leal 0x1(%rcx), %eax
cmpq %rcx, %r10
jle 0x1a036
leaq -0x44(%r11), %rsi
imulq $0x50, %rcx, %rdi
addq %r9, %rdi
movq %r8, %rcx
rep  movsq (%rsi), %es:(%rdi)
jmp 0x1a036
movslq -0x24(%r11), %rcx
movss (%r11), %xmm2
imulq $0x50, %rcx, %rcx
movss 0x44(%r9,%rcx), %xmm3
mulss %xmm0, %xmm3
ucomiss %xmm2, %xmm1
ja 0x19ff6
ucomiss %xmm2, %xmm3
ja 0x19ff6
incq %r10
addq $0x50, %r11
jmp 0x19fea
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/hit.c
// Function: mm_filter_regs
void mm_filter_regs(const mm_mapopt_t *opt, int qlen, int *n_regs, mm_reg1_t *regs)
{ // NB: after this call, mm_reg1_t::parent can be -1 if its parent filtered out
	int i, k;
	for (i = k = 0; i < *n_regs; ++i) {
		mm_reg1_t *r = &regs[i];
		int flt = 0;
		if (!r->inv && !r->seg_split && r->cnt < opt->min_cnt) flt = 1;
		if (r->p) { // these filters are only applied when base-alignment is available
			if (r->mlen < opt->min_chain_score) flt = 1;
			else if (r->p->dp_max < opt->min_dp_max) flt = 1;
			else if (r->qs > qlen * opt->max_clip_ratio && qlen - r->qe > qlen * opt->max_clip_ratio) flt = 1;
			if (flt) free(r->p);
		}
		if (!flt) {
			if (k < i) regs[k++] = regs[i];
			else ++k;
		}
	}
	*n_regs = k;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rcx, %r14
movq %rdx, %rbx
movq %rdi, %r15
movl %esi, (%rsp)
cvtsi2ss %esi, %xmm0
movss %xmm0, 0x4(%rsp)
leaq 0x48(%rcx), %r13
xorl %r12d, %r12d
xorl %ebp, %ebp
movslq (%rbx), %rax
cmpq %rax, %r12
jge 0x1a11f
testb $-0x78, -0xb(%r13)
je 0x1a08a
movq (%r13), %rdi
movb $0x1, %al
testq %rdi, %rdi
jne 0x1a0a0
jmp 0x1a0f8
movl -0x44(%r13), %ecx
movl 0x30(%r15), %edx
cmpl %edx, %ecx
setge %al
movq (%r13), %rdi
testq %rdi, %rdi
je 0x1a0ee
movl -0x1c(%r13), %ecx
cmpl 0x34(%r15), %ecx
jl 0x1a0b6
movl 0x8(%rdi), %ecx
cmpl 0x9c(%r15), %ecx
jge 0x1a0bd
callq 0x2040
jmp 0x1a113
cvtsi2ssl -0x38(%r13), %xmm1
movss 0xac(%r15), %xmm0
mulss 0x4(%rsp), %xmm0
ucomiss %xmm0, %xmm1
jbe 0x1a0f4
movl (%rsp), %ecx
subl -0x34(%r13), %ecx
cvtsi2ss %ecx, %xmm1
ucomiss %xmm0, %xmm1
setbe %cl
testb %al, %cl
je 0x1a0b6
jmp 0x1a0f8
cmpl %edx, %ecx
jge 0x1a0f8
jmp 0x1a113
testb %al, %al
je 0x1a0b6
movslq %ebp, %rax
incl %ebp
cmpq %rax, %r12
jle 0x1a113
leaq -0x48(%r13), %rsi
imulq $0x50, %rax, %rdi
addq %r14, %rdi
pushq $0xa
popq %rcx
rep  movsq (%rsi), %es:(%rdi)
incq %r12
addq $0x50, %r13
jmp 0x1a06a
movl %ebp, (%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/hit.c
// Function: mm_squeeze_a
int mm_squeeze_a(void *km, int n_regs, mm_reg1_t *regs, mm128_t *a)
{ // squeeze out regions in a[] that are not referenced by regs[]
	int i, as = 0;
	uint64_t *aux;
	aux = (uint64_t*)kmalloc(km, n_regs * 8);
	for (i = 0; i < n_regs; ++i)
		aux[i] = (uint64_t)regs[i].as << 32 | i;
	radix_sort_64(aux, aux + n_regs);
	for (i = 0; i < n_regs; ++i) {
		mm_reg1_t *r = &regs[(int32_t)aux[i]];
		if (r->as != as) {
			memmove(&a[as], &a[r->as], r->cnt * 16);
			r->as = as;
		}
		as += r->cnt;
	}
	kfree(km, aux);
	return as;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rcx, 0x10(%rsp)
movq %rdx, %r15
movl %esi, %r13d
leal (,%r13,8), %eax
movslq %eax, %rsi
movq %rdi, 0x8(%rsp)
callq 0x10afc
movq %rax, %r12
xorl %eax, %eax
testl %r13d, %r13d
movl $0x0, %r14d
cmovgl %r13d, %r14d
leaq 0x28(%r15), %rcx
cmpq %rax, %r14
je 0x1a18f
movl (%rcx), %edx
shlq $0x20, %rdx
addq %rax, %rdx
movq %rdx, (%r12,%rax,8)
incq %rax
addq $0x50, %rcx
jmp 0x1a174
movslq %r13d, %rax
leaq (%r12,%rax,8), %rsi
movq %r12, %rdi
callq 0x49de
xorl %r13d, %r13d
xorl %ebp, %ebp
cmpq %r13, %r14
je 0x1a1eb
movslq (%r12,%r13,8), %rax
imulq $0x50, %rax, %rax
leaq (%r15,%rax), %rbx
movslq 0x28(%r15,%rax), %rsi
cmpl %ebp, %esi
je 0x1a1e3
movslq %ebp, %rdi
shlq $0x4, %rdi
movq 0x10(%rsp), %rax
addq %rax, %rdi
shlq $0x4, %rsi
addq %rax, %rsi
movslq 0x4(%rbx), %rdx
shlq $0x4, %rdx
callq 0x2340
movl %ebp, 0x28(%rbx)
addl 0x4(%rbx), %ebp
incq %r13
jmp 0x1a1a3
movq 0x8(%rsp), %rdi
movq %r12, %rsi
callq 0x10a07
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/seed.c
// Function: mm_seed_mz_flt
void mm_seed_mz_flt(void *km, mm128_v *mv, int32_t q_occ_max, float q_occ_frac)
{
	mm128_t *a;
	size_t i, j, st;
	if (mv->n <= q_occ_max || q_occ_frac <= 0.0f || q_occ_max <= 0) return;
	a = Kmalloc(km, mm128_t, mv->n);
	for (i = 0; i < mv->n; ++i)
		a[i].x = mv->a[i].x, a[i].y = i;
	radix_sort_128x(a, a + mv->n);
	for (st = 0, i = 1; i <= mv->n; ++i) {
		if (i == mv->n || a[i].x != a[st].x) {
			int32_t cnt = i - st;
			if (cnt > q_occ_max && cnt > mv->n * q_occ_frac)
				for (j = st; j < i; ++j)
					mv->a[a[j].y].x = 0;
			st = i;
		}
	}
	kfree(km, a);
	for (i = j = 0; i < mv->n; ++i)
		if (mv->a[i].x != 0)
			mv->a[j++] = mv->a[i];
	mv->n = j;
}

// Assembly:
testl %edx, %edx
jle 0x1ab93
xorps %xmm1, %xmm1
ucomiss %xmm0, %xmm1
jae 0x1ab93
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movl %edx, %ebp
movq %rsi, %rbx
movq (%rsi), %rsi
movslq %edx, %rax
cmpq %rax, %rsi
jbe 0x1ab87
movq %rdi, %r14
movss %xmm0, 0xc(%rsp)
shlq $0x4, %rsi
callq 0x10afc
movq %rax, %r12
movq %rax, %r15
movq (%rbx), %rsi
xorl %eax, %eax
xorl %ecx, %ecx
cmpq %rcx, %rsi
je 0x1aa8e
movq 0x10(%rbx), %rdx
movq (%rdx,%rax), %rdx
movq %rdx, (%r15,%rax)
movq %rcx, 0x8(%r15,%rax)
incq %rcx
addq $0x10, %rax
jmp 0x1aa6f
shlq $0x4, %rsi
addq %r12, %rsi
movq %r15, %rdi
callq 0x47dc
movq (%rbx), %rax
testq %rax, %rax
js 0x1aaac
cvtsi2ss %rax, %xmm0
jmp 0x1aac3
movq %rax, %rcx
shrq %rcx
movl %eax, %edx
andl $0x1, %edx
orq %rcx, %rdx
cvtsi2ss %rdx, %xmm0
addss %xmm0, %xmm0
movss 0xc(%rsp), %xmm1
mulss %xmm1, %xmm0
addq $0x8, %r12
pushq $0x1
popq %rcx
xorl %edx, %edx
cmpq %rax, %rcx
ja 0x1ab44
je 0x1aafa
movq %rcx, %rsi
shlq $0x4, %rsi
movq (%r15,%rsi), %rsi
movq %rdx, %rdi
shlq $0x4, %rdi
cmpq (%r15,%rdi), %rsi
jne 0x1aafa
movq %rdx, %rsi
jmp 0x1ab3c
movl %ecx, %edi
subl %edx, %edi
movq %rcx, %rsi
cmpl %ebp, %edi
jle 0x1ab3c
cvtsi2ss %edi, %xmm1
ucomiss %xmm0, %xmm1
movq %rcx, %rsi
jbe 0x1ab3c
movq %rdx, %rsi
shlq $0x4, %rsi
addq %r12, %rsi
cmpq %rcx, %rdx
jae 0x1ab39
movq 0x10(%rbx), %rdi
movq (%rsi), %r8
shlq $0x4, %r8
andq $0x0, (%rdi,%r8)
incq %rdx
addq $0x10, %rsi
jmp 0x1ab1b
movq %rcx, %rsi
incq %rcx
movq %rsi, %rdx
jmp 0x1aad6
movq %r14, %rdi
movq %r15, %rsi
callq 0x10a07
xorl %eax, %eax
xorl %ecx, %ecx
xorl %edx, %edx
cmpq (%rbx), %rdx
jae 0x1ab84
movq 0x10(%rbx), %rsi
cmpq $0x0, (%rsi,%rax)
je 0x1ab7b
leaq (%rsi,%rax), %rdi
leaq 0x1(%rcx), %r8
shlq $0x4, %rcx
movups (%rdi), %xmm0
movups %xmm0, (%rsi,%rcx)
movq %r8, %rcx
incq %rdx
addq $0x10, %rax
jmp 0x1ab55
movq %rcx, (%rbx)
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/seed.c
// Function: mm_seed_collect_all
mm_seed_t *mm_seed_collect_all(void *km, const mm_idx_t *mi, const mm128_v *mv, int32_t *n_m_)
{
	mm_seed_t *m;
	size_t i;
	int32_t k;
	m = (mm_seed_t*)kmalloc(km, mv->n * sizeof(mm_seed_t));
	for (i = k = 0; i < mv->n; ++i) {
		const uint64_t *cr;
		mm_seed_t *q;
		mm128_t *p = &mv->a[i];
		uint32_t q_pos = (uint32_t)p->y, q_span = p->x & 0xff;
		int t;
		cr = mm_idx_get(mi, p->x>>8, &t);
		if (t == 0) continue;
		q = &m[k++];
		q->q_pos = q_pos, q->q_span = q_span, q->cr = cr, q->n = t, q->seg_id = p->y >> 32;
		q->is_tandem = q->flt = 0;
		if (i > 0 && p->x>>8 == mv->a[i - 1].x>>8) q->is_tandem = 1;
		if (i < mv->n - 1 && p->x>>8 == mv->a[i + 1].x>>8) q->is_tandem = 1;
	}
	*n_m_ = k;
	return m;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rcx, 0x18(%rsp)
movq %rdx, %r14
movq %rsi, 0x20(%rsp)
imulq $0x18, (%rdx), %rsi
callq 0x10afc
movq %rax, %r12
xorl %ebx, %ebx
movl $0x0, 0x4(%rsp)
xorl %r13d, %r13d
movq %r14, 0x8(%rsp)
cmpq (%r14), %r13
jae 0x1acd6
movq 0x10(%r14), %r15
movq (%r15,%rbx), %r14
movq 0x8(%r15,%rbx), %rbp
movq %r14, %rsi
shrq $0x8, %rsi
movq 0x20(%rsp), %rdi
leaq 0x14(%rsp), %rdx
callq 0x5ad0
movl 0x14(%rsp), %edx
testl %edx, %edx
je 0x1ac88
movzbl %r14b, %esi
movslq 0x4(%rsp), %rcx
imulq $0x18, %rcx, %rdi
leaq (%r12,%rdi), %rcx
movl %ebp, 0x4(%r12,%rdi)
movq 0x8(%r12,%rdi), %r8
movq $-0x80000000, %r9       # imm = 0x80000000
andq %r9, %r8
orq %rsi, %r8
movq %r8, 0x8(%r12,%rdi)
movq %rax, 0x10(%r12,%rdi)
movl %edx, (%r12,%rdi)
movq 0x8(%r15,%rbx), %rax
movabsq $0x7fffffff00000000, %rdx # imm = 0x7FFFFFFF00000000
andq %rdx, %rax
orq %rsi, %rax
movq %rax, 0x8(%r12,%rdi)
testq %r13, %r13
je 0x1ac8f
movq 0x8(%rsp), %r14
movq 0x10(%r14), %rdx
movq -0x10(%rdx,%rbx), %rdx
xorq (%r15,%rbx), %rdx
cmpq $0xff, %rdx
ja 0x1ac94
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
orq %rdx, %rax
movq %rax, 0x8(%rcx)
jmp 0x1ac94
movq 0x8(%rsp), %r14
jmp 0x1acca
movq 0x8(%rsp), %r14
incl 0x4(%rsp)
movq (%r14), %rdx
decq %rdx
cmpq %rdx, %r13
jae 0x1acca
movq 0x10(%r14), %rdx
movq 0x10(%rdx,%rbx), %rdx
xorq (%r15,%rbx), %rdx
cmpq $0xff, %rdx
ja 0x1acca
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
orq %rdx, %rax
movq %rax, 0x8(%rcx)
incq %r13
addq $0x10, %rbx
jmp 0x1abcd
movq 0x18(%rsp), %rax
movl 0x4(%rsp), %ecx
movl %ecx, (%rax)
movq %r12, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/jump.c
// Function: mm_jump_check
static int32_t mm_jump_check(void *km, const mm_idx_t *mi, int32_t qlen, const uint8_t *qseq0, const mm_reg1_t *r, int32_t ext, int32_t is_left) // TODO: check close N
{
	int32_t clip, clen, e = !r->rev ^ !is_left; // 0 for left of the alignment; 1 for right
	uint32_t cigar;
	if (!r->p || r->p->n_cigar <= 0) return -1; // only working with CIGAR
	clip = e == 0? r->qs : qlen - r->qe;
	cigar = r->p->cigar[is_left? 0 : r->p->n_cigar - 1];
	clen = (cigar&0xf) == MM_CIGAR_MATCH? cigar>>4 : 0;
	if (clen <= ext) return -1;
	if (is_left) {
		if (clip >= r->rs) return -1; // no space to jump
	} else {
		if (clip >= mi->seq[r->rid].len - r->re) return -1; // no space to jump
	}
	return 0;
}

// Assembly:
movq 0x48(%rdx), %r9
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
testq %r9, %r9
je 0x1bbea
pushq %rbx
movl 0x18(%r9), %r10d
testl %r10d, %r10d
je 0x1bbe9
testl %r8d, %r8d
sete %r11b
btl $0xa, 0x3c(%rdx)
setae %bl
xorb %r11b, %bl
je 0x1bbb4
subl 0x14(%rdx), %esi
jmp 0x1bbb7
movl 0x10(%rdx), %esi
decl %r10d
xorl %r11d, %r11d
testl %r8d, %r8d
cmovnel %r11d, %r10d
movl 0x1c(%r9,%r10,4), %r9d
movl %r9d, %r10d
shrl $0x4, %r10d
testb $0xf, %r9b
cmovnel %r11d, %r10d
cmpl %ecx, %r10d
jle 0x1bbe9
testl %r8d, %r8d
je 0x1bbeb
cmpl 0x18(%rdx), %esi
jge 0x1bbe9
xorl %eax, %eax
popq %rbx
retq
movq 0x20(%rdi), %rcx
movslq 0x8(%rdx), %rdi
imulq $0x18, %rdi, %rdi
movl 0x10(%rcx,%rdi), %ecx
subl 0x1c(%rdx), %ecx
cmpl %ecx, %esi
jb 0x1bbe7
jmp 0x1bbe9
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/jump.c
// Function: mm_jump_get_qseq_seq
static uint8_t *mm_jump_get_qseq_seq(void *km, int32_t qlen, const uint8_t *qseq0, const mm_reg1_t *r, int32_t is_left, int32_t ql0, uint8_t *qseq)
{
	extern unsigned char seq_nt4_table[256];
	int32_t i, k = 0;
	if (!r->rev) {
		if (is_left)
			for (i = 0; i < ql0; ++i)
				qseq[k++] = seq_nt4_table[(uint8_t)qseq0[i]];
		else
			for (i = qlen - ql0; i < qlen; ++i)
				qseq[k++] = seq_nt4_table[(uint8_t)qseq0[i]];
	} else {
		if (is_left)
			for (i = qlen - 1; i >= qlen - ql0; --i) {
				uint8_t c = seq_nt4_table[(uint8_t)qseq0[i]];
				qseq[k++] = c >= 4? c : 3 - c;
			}
		else
			for (i = ql0 - 1; i >= 0; --i) {
				uint8_t c = seq_nt4_table[(uint8_t)qseq0[i]];
				qseq[k++] = c >= 4? c : 3 - c;
			}
	}
	return qseq;
}

// Assembly:
movq %r9, %rax
testb $0x4, 0x3d(%rdx)
jne 0x1bc3b
testl %ecx, %ecx
je 0x1bc7f
xorl %ecx, %ecx
testl %r8d, %r8d
cmovlel %ecx, %r8d
leaq 0x16bef(%rip), %rdx     # 0x32810
cmpq %rcx, %r8
je 0x1bce0
movzbl (%rsi,%rcx), %edi
movb (%rdx,%rdi), %dil
movb %dil, (%rax,%rcx)
incq %rcx
jmp 0x1bc21
testl %ecx, %ecx
je 0x1bcab
movslq %edi, %rcx
subl %r8d, %edi
movslq %edi, %rdx
leaq 0x16bc1(%rip), %rdi     # 0x32810
movq %rax, %r8
cmpq %rdx, %rcx
jle 0x1bce0
movzbl -0x1(%rsi,%rcx), %r9d
decq %rcx
movzbl (%rdi,%r9), %r9d
movb $0x3, %r10b
subb %r9b, %r10b
movzbl %r10b, %r10d
cmovbl %r9d, %r10d
movb %r10b, (%r8)
incq %r8
jmp 0x1bc52
movslq %edi, %rcx
subl %r8d, %edi
movslq %edi, %rdx
leaq 0x16b81(%rip), %rdi     # 0x32810
movq %rax, %r8
cmpq %rcx, %rdx
jge 0x1bce0
movzbl (%rsi,%rdx), %r9d
movb (%rdi,%r9), %r9b
movb %r9b, (%r8)
incq %rdx
incq %r8
jmp 0x1bc92
movl %r8d, %ecx
leaq 0x16b5b(%rip), %rdx     # 0x32810
movq %rax, %rdi
testl %ecx, %ecx
jle 0x1bce0
movzbl -0x1(%rsi,%rcx), %r8d
decq %rcx
movzbl (%rdx,%r8), %r8d
movb $0x3, %r9b
subb %r8b, %r9b
movzbl %r9b, %r9d
cmovbl %r8d, %r9d
movb %r9b, (%rdi)
incq %rdi
jmp 0x1bcb8
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/ksw2_dispatch.c
// Function: ksw_extz2_sse
void ksw_extz2_sse(void *km, int qlen, const uint8_t *query, int tlen, const uint8_t *target, int8_t m, const int8_t *mat, int8_t q, int8_t e, int w, int zdrop, int end_bonus, int flag, ksw_extz_t *ez)
{
	extern void ksw_extz2_sse2(void *km, int qlen, const uint8_t *query, int tlen, const uint8_t *target, int8_t m, const int8_t *mat, int8_t q, int8_t e, int w, int zdrop, int end_bonus, int flag, ksw_extz_t *ez);
	extern void ksw_extz2_sse41(void *km, int qlen, const uint8_t *query, int tlen, const uint8_t *target, int8_t m, const int8_t *mat, int8_t q, int8_t e, int w, int zdrop, int end_bonus, int flag, ksw_extz_t *ez);
	if (ksw_simd < 0) ksw_simd = x86_simd();
	if (ksw_simd & SIMD_SSE4_1)
		ksw_extz2_sse41(km, qlen, query, tlen, target, m, mat, q, e, w, zdrop, end_bonus, flag, ez);
	else if (ksw_simd & SIMD_SSE2)
		ksw_extz2_sse2(km, qlen, query, tlen, target, m, mat, q, e, w, zdrop, end_bonus, flag, ez);
	else abort();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movl %r9d, %r12d
movl %esi, %r15d
movq %rdi, %r13
movq 0xa8(%rsp), %rax
movq %rax, 0x28(%rsp)
movl 0xa0(%rsp), %eax
movq %rax, 0x30(%rsp)
movl 0x98(%rsp), %ebp
movl 0x90(%rsp), %r14d
movl 0x88(%rsp), %ebx
movb 0x80(%rsp), %dil
movb 0x78(%rsp), %sil
movq 0x70(%rsp), %r11
movl 0x1676a(%rip), %eax     # 0x32910
testl %eax, %eax
jns 0x1c201
movq %rbx, 0x20(%rsp)
movq %r11, 0x8(%rsp)
movq %rbp, 0x10(%rsp)
movq %r8, %rbp
movq %r14, 0x18(%rsp)
movl %ecx, 0x4(%rsp)
movq %rdx, %rbx
movb %sil, 0x3(%rsp)
movl %edi, %r14d
callq 0x1c262
movl %r14d, %edi
movb 0x3(%rsp), %sil
movq %rbx, %rdx
movl 0x4(%rsp), %ecx
movq 0x18(%rsp), %r14
movq %rbp, %r8
movq 0x10(%rsp), %rbp
movq 0x8(%rsp), %r11
movq 0x20(%rsp), %rbx
movl %eax, 0x1670f(%rip)     # 0x32910
testb $0x10, %al
jne 0x1c240
testb $0x2, %al
je 0x1c25d
movsbl %dil, %eax
movsbl %sil, %r10d
movsbl %r12b, %r9d
movq %r13, %rdi
movl %r15d, %esi
pushq 0x28(%rsp)
pushq 0x38(%rsp)
pushq %rbp
pushq %r14
pushq %rbx
pushq %rax
pushq %r10
pushq %r11
callq 0x21068
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movsbl %r12b, %r9d
movq %r13, %rdi
movl %r15d, %esi
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1c588
callq 0x2050
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/ksw2_dispatch.c
// Function: x86_simd
static int x86_simd(void)
{
	int flag = 0, cpuid[4], max_id;
	__cpuidex(cpuid, 0, 0);
	max_id = cpuid[0];
	if (max_id == 0) return 0;
	__cpuidex(cpuid, 1, 0);
	if (cpuid[3]>>25&1) flag |= SIMD_SSE;
	if (cpuid[3]>>26&1) flag |= SIMD_SSE2;
	if (cpuid[2]>>0 &1) flag |= SIMD_SSE3;
	if (cpuid[2]>>9 &1) flag |= SIMD_SSSE3;
	if (cpuid[2]>>19&1) flag |= SIMD_SSE4_1;
	if (cpuid[2]>>20&1) flag |= SIMD_SSE4_2;
	if (cpuid[2]>>28&1) flag |= SIMD_AVX;
	if (max_id >= 7) {
		__cpuidex(cpuid, 7, 0);
		if (cpuid[1]>>5 &1) flag |= SIMD_AVX2;
		if (cpuid[1]>>16&1) flag |= SIMD_AVX512F;
	}
	return flag;
}

// Assembly:
pushq %rbx
xorl %esi, %esi
xorl %eax, %eax
xorl %ecx, %ecx
cpuid
testl %eax, %eax
je 0x1c2c5
movl %eax, %edi
movl $0x1, %eax
xorl %ecx, %ecx
cpuid
movl %ecx, %esi
shrl $0x19, %edx
andl $0x3, %edx
movl %ecx, %eax
andl $0x1, %eax
leal (%rdx,%rax,4), %eax
shrl $0x6, %ecx
andl $0x8, %ecx
orl %eax, %ecx
movl %esi, %eax
shrl $0xf, %eax
andl $0x30, %eax
orl %ecx, %eax
shrl $0x16, %esi
andl $0x40, %esi
orl %eax, %esi
cmpl $0x7, %edi
jl 0x1c2c5
movl $0x7, %eax
xorl %ecx, %ecx
cpuid
movl %ebx, %eax
andl $0x20, %eax
shrl $0x8, %ebx
andl $0x100, %ebx            # imm = 0x100
leal (%rbx,%rax,4), %eax
orl %eax, %esi
movl %esi, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/ksw2_dispatch.c
// Function: ksw_extd2_sse
void ksw_extd2_sse(void *km, int qlen, const uint8_t *query, int tlen, const uint8_t *target, int8_t m, const int8_t *mat,
				   int8_t q, int8_t e, int8_t q2, int8_t e2, int w, int zdrop, int end_bonus, int flag, ksw_extz_t *ez)
{
	extern void ksw_extd2_sse2(void *km, int qlen, const uint8_t *query, int tlen, const uint8_t *target, int8_t m, const int8_t *mat,
				   int8_t q, int8_t e, int8_t q2, int8_t e2, int w, int zdrop, int end_bonus, int flag, ksw_extz_t *ez);
	extern void ksw_extd2_sse41(void *km, int qlen, const uint8_t *query, int tlen, const uint8_t *target, int8_t m, const int8_t *mat,
				   int8_t q, int8_t e, int8_t q2, int8_t e2, int w, int zdrop, int end_bonus, int flag, ksw_extz_t *ez);
	if (ksw_simd < 0) ksw_simd = x86_simd();
	if (ksw_simd & SIMD_SSE4_1)
		ksw_extd2_sse41(km, qlen, query, tlen, target, m, mat, q, e, q2, e2, w, zdrop, end_bonus, flag, ez);
	else if (ksw_simd & SIMD_SSE2)
		ksw_extd2_sse2(km, qlen, query, tlen, target, m, mat, q, e, q2, e2, w, zdrop, end_bonus, flag, ez);
	else abort();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq 0xc8(%rsp), %rax
movq %rax, 0x38(%rsp)
movl 0xc0(%rsp), %r12d
movl 0xb8(%rsp), %r15d
movl 0xb0(%rsp), %r14d
movl 0xa8(%rsp), %ebx
movb 0xa0(%rsp), %r10b
movb 0x98(%rsp), %r11b
movb 0x90(%rsp), %bpl
movb 0x88(%rsp), %r13b
movq 0x80(%rsp), %rax
movq %rax, 0x40(%rsp)
movl 0x165da(%rip), %eax     # 0x32910
testl %eax, %eax
jns 0x1c3b3
movq %rbx, 0x18(%rsp)
movq %r8, 0x8(%rsp)
movq %r15, 0x30(%rsp)
movq %r14, 0x20(%rsp)
movl %ecx, %r14d
movq %r12, 0x28(%rsp)
movq %rdx, %r12
movl %esi, %r15d
movb %bpl, 0x7(%rsp)
movl %r9d, %ebp
movq %rdi, 0x10(%rsp)
movl %r11d, %ebx
movb %r10b, 0x6(%rsp)
callq 0x1c262
movb 0x6(%rsp), %r10b
movl %ebx, %r11d
movq 0x10(%rsp), %rdi
movl %ebp, %r9d
movb 0x7(%rsp), %bpl
movl %r15d, %esi
movq %r12, %rdx
movq 0x28(%rsp), %r12
movl %r14d, %ecx
movq 0x20(%rsp), %r14
movq 0x30(%rsp), %r15
movq 0x8(%rsp), %r8
movq 0x18(%rsp), %rbx
movl %eax, 0x1655d(%rip)     # 0x32910
testb $0x10, %al
jne 0x1c3fe
testb $0x2, %al
je 0x1c415
movsbl %r10b, %r10d
movsbl %r11b, %r11d
movsbl %bpl, %ebp
movsbl %r13b, %eax
movsbl %r9b, %r9d
pushq 0x38(%rsp)
pushq %r12
pushq %r15
pushq %r14
pushq %rbx
pushq %r10
pushq %r11
pushq %rbp
pushq %rax
pushq 0x88(%rsp)
callq 0x224ac
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movsbl %r9b, %r9d
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1d940
callq 0x2050
// File: /workspace/github_c_makefile_star2_O2/lh3[P]minimap2/ksw2_dispatch.c
// Function: ksw_exts2_sse
void ksw_exts2_sse(void *km, int qlen, const uint8_t *query, int tlen, const uint8_t *target, int8_t m, const int8_t *mat,
				   int8_t q, int8_t e, int8_t q2, int8_t noncan, int zdrop, int end_bonus, int8_t junc_bonus, int8_t junc_pen, int flag, const uint8_t *junc, ksw_extz_t *ez)
{
	extern void ksw_exts2_sse2(void *km, int qlen, const uint8_t *query, int tlen, const uint8_t *target, int8_t m, const int8_t *mat,
				   int8_t q, int8_t e, int8_t q2, int8_t noncan, int zdrop, int end_bonus, int8_t junc_bonus, int8_t junc_pen, int flag, const uint8_t *junc, ksw_extz_t *ez);
	extern void ksw_exts2_sse41(void *km, int qlen, const uint8_t *query, int tlen, const uint8_t *target, int8_t m, const int8_t *mat,
				   int8_t q, int8_t e, int8_t q2, int8_t noncan, int zdrop, int end_bonus, int8_t junc_bonus, int8_t junc_pen, int flag, const uint8_t *junc, ksw_extz_t *ez);
	if (ksw_simd < 0) ksw_simd = x86_simd();
	if (ksw_simd & SIMD_SSE4_1)
		ksw_exts2_sse41(km, qlen, query, tlen, target, m, mat, q, e, q2, noncan, zdrop, end_bonus, junc_bonus, junc_pen, flag, junc, ez);
	else if (ksw_simd & SIMD_SSE2)
		ksw_exts2_sse2(km, qlen, query, tlen, target, m, mat, q, e, q2, noncan, zdrop, end_bonus, junc_bonus, junc_pen, flag, junc, ez);
	else abort();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq 0xd8(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0xd0(%rsp), %rax
movq %rax, 0x20(%rsp)
movl 0xc8(%rsp), %eax
movq %rax, 0x28(%rsp)
movb 0xc0(%rsp), %r10b
movb 0xb8(%rsp), %r15b
movl 0xb0(%rsp), %eax
movq %rax, 0x30(%rsp)
movl 0xa8(%rsp), %eax
movq %rax, 0x38(%rsp)
movb 0xa0(%rsp), %r12b
movb 0x98(%rsp), %r14b
movb 0x90(%rsp), %bpl
movb 0x88(%rsp), %bl
movq 0x80(%rsp), %rax
movq %rax, 0x40(%rsp)
movl 0x16468(%rip), %eax     # 0x32910
testl %eax, %eax
jns 0x1c50b
movq %r8, 0x10(%rsp)
movb %bpl, 0xa(%rsp)
movl %ecx, %ebp
movb %r14b, 0x9(%rsp)
movq %rdx, %r14
movl %esi, 0xc(%rsp)
movl %r9d, %r13d
movb %r12b, 0x8(%rsp)
movq %rdi, %r12
movb %bl, 0xb(%rsp)
movl %r10d, %ebx
callq 0x1c262
movl %ebx, %r10d
movb 0xb(%rsp), %bl
movq %r12, %rdi
movb 0x8(%rsp), %r12b
movl %r13d, %r9d
movl 0xc(%rsp), %esi
movq %r14, %rdx
movb 0x9(%rsp), %r14b
movl %ebp, %ecx
movb 0xa(%rsp), %bpl
movq 0x10(%rsp), %r8
movl %eax, 0x16405(%rip)     # 0x32910
testb $0x10, %al
jne 0x1c569
testb $0x2, %al
je 0x1c580
movsbl %r10b, %r10d
movsbl %r15b, %r11d
movsbl %r12b, %eax
movsbl %r14b, %r14d
movsbl %bpl, %ebp
movsbl %bl, %ebx
movsbl %r9b, %r9d
pushq 0x18(%rsp)
pushq 0x28(%rsp)
pushq 0x38(%rsp)
pushq %r10
pushq %r11
pushq 0x58(%rsp)
pushq 0x68(%rsp)
pushq %rax
pushq %r14
pushq %rbp
pushq %rbx
pushq 0x98(%rsp)
callq 0x24008
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movsbl %r9b, %r9d
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1f318
callq 0x2050
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O2/soso7885[P]OPCUA_example/demo_src/server.c
// Function: readTimeData
static UA_StatusCode
readTimeData(void *handle, const UA_NodeId nodeId, UA_Boolean sourceTimeStamp,
             const UA_NumericRange *range, UA_DataValue *value) {
    if(range) {
        value->hasStatus = true;
        value->status = UA_STATUSCODE_BADINDEXRANGEINVALID;
        return UA_STATUSCODE_GOOD;
    }
	UA_DateTime currentTime = UA_DateTime_now();
    UA_Variant_setScalarCopy(&value->value, &currentTime, &UA_TYPES[UA_TYPES_DATETIME]);
	value->hasValue = true;
	if(sourceTimeStamp) {
		value->hasSourceTimestamp = true;
		value->sourceTimestamp = currentTime;
	}
	return UA_STATUSCODE_GOOD;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rcx, %rbx
testq %rdx, %rdx
je 0x37ca
orb $0x2, (%rbx)
movl $0x80360000, 0x38(%rbx) # imm = 0x80360000
jmp 0x3808
movl %esi, %r14d
callq 0x2200
leaq -0x18(%rbp), %rsi
movq %rax, (%rsi)
leaq 0x8(%rbx), %rdi
movl $0x1e0, %edx            # imm = 0x1E0
addq 0x27e7(%rip), %rdx      # 0x5fd0
callq 0x2170
movb (%rbx), %al
movl %eax, %ecx
orb $0x1, %cl
movb %cl, (%rbx)
testb %r14b, %r14b
je 0x3808
orb $0x5, %al
movb %al, (%rbx)
movq -0x18(%rbp), %rax
movq %rax, 0x40(%rbx)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/soso7885[P]OPCUA_example/demo_src/server.c
// Function: readTemperature
static UA_StatusCode
readTemperature(void *handle, const UA_NodeId nodeId, UA_Boolean sourceTimeStamp,
                const UA_NumericRange *range, UA_DataValue *value) {
    if(range) {
        value->hasStatus = true;
        value->status = UA_STATUSCODE_BADINDEXRANGEINVALID;
        return UA_STATUSCODE_GOOD;
    }

	rewind(temperatureFile);
	fflush(temperatureFile);

	UA_Double currentTemperature;
	if(fscanf(temperatureFile, "%lf", &currentTemperature) != 1){
		UA_LOG_WARNING(logger, UA_LOGCATEGORY_USERLAND, "Can not parse temperature");
		exit(1);
	}

	currentTemperature /= 1000.0;

	value->sourceTimestamp = UA_DateTime_now();
	value->hasSourceTimestamp = true;
    UA_Variant_setScalarCopy(&value->value, &currentTemperature, &UA_TYPES[UA_TYPES_DOUBLE]);
	value->hasValue = true;
	return UA_STATUSCODE_GOOD;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rcx, %rbx
testq %rdx, %rdx
je 0x3866
orb $0x2, (%rbx)
movl $0x80360000, 0x38(%rbx) # imm = 0x80360000
jmp 0x38d9
movq 0x28f3(%rip), %rdi      # 0x6160
callq 0x2110
movq 0x28e7(%rip), %rdi      # 0x6160
callq 0x21c0
movq 0x28db(%rip), %rdi      # 0x6160
leaq 0x92b(%rip), %rsi       # 0x41b7
leaq -0x18(%rbp), %rdx
xorl %eax, %eax
callq 0x2070
cmpl $0x1, %eax
jne 0x38e4
leaq -0x18(%rbp), %r14
movsd (%r14), %xmm0
divsd 0x75b(%rip), %xmm0      # 0x4008
movsd %xmm0, (%r14)
callq 0x2200
movq %rax, 0x40(%rbx)
orb $0x4, (%rbx)
leaq 0x8(%rbx), %rdi
movl $0x190, %edx            # imm = 0x190
addq 0x2702(%rip), %rdx      # 0x5fd0
movq %r14, %rsi
callq 0x2170
orb $0x1, (%rbx)
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movq 0x2865(%rip), %rcx      # 0x6150
testq %rcx, %rcx
je 0x3901
leaq 0x8c4(%rip), %rdx       # 0x41bb
pushq $0x3
popq %rdi
pushq $0x5
popq %rsi
xorl %eax, %eax
callq *%rcx
pushq $0x1
popq %rdi
callq 0x2240
// File: /workspace/github_c_makefile_star2_O2/soso7885[P]OPCUA_example/demo_src/server.c
// Function: readLedStatus
static UA_StatusCode
readLedStatus(void *handle, UA_NodeId nodeid, UA_Boolean sourceTimeStamp,
              const UA_NumericRange *range, UA_DataValue *value) {
    if(range)
        return UA_STATUSCODE_BADINDEXRANGEINVALID;

    value->hasValue = true;
    UA_StatusCode retval = UA_Variant_setScalarCopy(&value->value, &ledStatus,
                                                    &UA_TYPES[UA_TYPES_BOOLEAN]);

    if(retval != UA_STATUSCODE_GOOD)
        return retval;
  
    if(sourceTimeStamp) {
        value->sourceTimestamp = UA_DateTime_now();
        value->hasSourceTimestamp = true;
    }
    return UA_STATUSCODE_GOOD;
}

// Assembly:
movl $0x80360000, %eax       # imm = 0x80360000
testq %rdx, %rdx
je 0x3914
retq
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rcx, %rbx
movl %esi, %r14d
orb $0x1, (%rcx)
leaq 0x8(%rcx), %rdi
leaq 0x2849(%rip), %rsi      # 0x6178
movq 0x269a(%rip), %rdx      # 0x5fd0
callq 0x2170
testl %eax, %eax
setne %cl
xorb $0x1, %r14b
orb %cl, %r14b
jne 0x3957
callq 0x2200
movq %rax, 0x40(%rbx)
orb $0x4, (%rbx)
xorl %eax, %eax
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/soso7885[P]OPCUA_example/demo_src/server.c
// Function: writeLedStatus
static UA_StatusCode
writeLedStatus(void *handle, const UA_NodeId nodeid,
               const UA_Variant *data, const UA_NumericRange *range) {
    if(range)
        return UA_STATUSCODE_BADINDEXRANGEINVALID;

#ifdef UA_ENABLE_MULTITHREADING
	pthread_rwlock_wrlock(&writeLock);
#endif
	if(data->data)
		ledStatus = *(UA_Boolean*)data->data;

	if(triggerFile)
		fseek(triggerFile, 0, SEEK_SET);

	if(ledFile) {
		if(ledStatus == 1)
			fprintf(ledFile, "%s", "1");
		else
			fprintf(ledFile, "%s", "0");
		fflush(ledFile);
	}
#ifdef UA_ENABLE_MULTITHREADING
	pthread_rwlock_unlock(&writeLock);
#endif
	return UA_STATUSCODE_GOOD;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl $0x80360000, %ebx       # imm = 0x80360000
testq %rdx, %rdx
jne 0x39ca
movq 0x18(%rsi), %rax
testq %rax, %rax
je 0x397d
movb (%rax), %al
movb %al, 0x27fb(%rip)       # 0x6178
movq 0x27e4(%rip), %rdi      # 0x6168
testq %rdi, %rdi
je 0x3992
xorl %esi, %esi
xorl %edx, %edx
callq 0x21f0
movq 0x27d7(%rip), %rsi      # 0x6170
xorl %ebx, %ebx
testq %rsi, %rsi
je 0x39ca
leaq 0x6f6(%rip), %rax       # 0x409d
leaq 0x7e4(%rip), %rdi       # 0x4192
cmpb $0x0, 0x27c3(%rip)      # 0x6178
cmovneq %rax, %rdi
callq 0x2120
movq 0x27ab(%rip), %rdi      # 0x6170
callq 0x21c0
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/soso7885[P]OPCUA_example/demo_src/server.c
// Function: getMonitoredItems
static UA_StatusCode
getMonitoredItems(void *methodHandle, const UA_NodeId objectId,
                  size_t inputSize, const UA_Variant *input,
                  size_t outputSize, UA_Variant *output) {
    UA_String tmp = UA_STRING("Hello World");
    UA_Variant_setScalarCopy(output, &tmp, &UA_TYPES[UA_TYPES_STRING]);
    printf("getMonitoredItems was called\n");
    return UA_STATUSCODE_GOOD;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x18, %rsp
movq %r8, %rbx
leaq 0x7ce(%rip), %rdi       # 0x4207
callq 0x3a0e
leaq -0x18(%rbp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movl $0x1b8, %edx            # imm = 0x1B8
addq 0x257b(%rip), %rdx      # 0x5fd0
movq %rbx, %rdi
callq 0x2170
leaq 0x7af(%rip), %rdi       # 0x4213
callq 0x2080
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/mjosaarinen[P]brutus/crypto_aead/aes128n12t8clocv2/aesni/encrypt.c
// Function: load_partial_block
void load_partial_block(block* dst, const unsigned char* m, int len, unsigned choice)
{
    unsigned char temp[16];
    if(choice == ZERO_APPEND){
        memcpy(temp, m, len);
        memset(temp+len, 0, 16-len);
        *dst = LOAD(temp);
    }
    else if(choice == ONE_ZERO_PADDING){
        memcpy(temp, m, len);
        memset(temp+len, 0, STATE_LEN-len);
        if(len < STATE_LEN)
            temp[len] = 0x80;
        *dst = LOAD(temp);
    }
    else if(choice == ZERO_PREPEND){
        memcpy(temp+16-len, m, len);
        memset(temp, 0, 16-len);
        *dst = LOAD(temp);
    }
    else if(choice == PARAM_OZP){
        temp[0] = PARAM;
        memcpy(temp+1, m, len);
        memset(temp+len+1, 0, STATE_LEN-len-1);
        if(len < (STATE_LEN-1))
            temp[len+1] = 0x80;
        *dst = LOAD(temp);
    }
    else{
        // do nothing
    }
}

// Assembly:
cmpl $0x3, %ecx
ja 0x13e5
pushq %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movl %edx, %ebp
movq %rdi, %rbx
movl %ecx, %eax
leaq 0x1ce5(%rip), %rcx      # 0x3000
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movslq %ebp, %r14
movq %rsp, %rdi
movq %r14, %rdx
callq 0x1080
leaq (%rsp,%r14), %rdi
pushq $0x10
popq %rax
subl %ebp, %eax
movslq %eax, %rdx
jmp 0x13cd
movslq %ebp, %r14
movq %rsp, %rdi
movq %r14, %rdx
callq 0x1080
addq %rsp, %r14
pushq $0x10
popq %rax
subl %ebp, %eax
movslq %eax, %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x1030
cmpl $0xf, %ebp
jg 0x13d4
movb $-0x80, (%r14)
jmp 0x13d4
leaq 0x1(%rsp), %rdi
movb $-0x40, -0x1(%rdi)
movslq %ebp, %r14
movq %r14, %rdx
callq 0x1080
leaq (%rsp,%r14), %rdi
incq %rdi
pushq $0xf
popq %rax
subl %r14d, %eax
movslq %eax, %rdx
xorl %esi, %esi
callq 0x1030
cmpl $0xe, %r14d
jg 0x13d4
movq %rsp, %rax
movb $-0x80, 0x1(%r14,%rax)
jmp 0x13d4
movslq %ebp, %rdx
movq %rsp, %r14
movq %r14, %rdi
subq %rdx, %rdi
addq $0x10, %rdi
callq 0x1080
pushq $0x10
popq %rax
subl %ebp, %eax
movslq %eax, %rdx
movq %r14, %rdi
xorl %esi, %esi
callq 0x1030
vmovaps (%rsp), %xmm0
vmovaps %xmm0, (%rbx)
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/arachsys[P]init/daemon.c
// Function: execute
static void execute(char **argv) {
  if (gid > 0 && setgid(gid) < 0)
    err(EXIT_FAILURE, "setgid");
  if (uid > 0 && setuid(uid) < 0)
    err(EXIT_FAILURE, "setuid");
  execvp(argv[0], argv);
  err(EXIT_FAILURE, "exec");
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movl 0x2d0a(%rip), %edi      # 0x61fc
testl %edi, %edi
je 0x3508
callq 0x22a0
testl %eax, %eax
jns 0x3508
leaq 0x121a(%rip), %rsi      # 0x4720
jmp 0x3536
movl 0x2cea(%rip), %edi      # 0x61f8
testl %edi, %edi
je 0x3524
callq 0x2340
testl %eax, %eax
jns 0x3524
leaq 0x1205(%rip), %rsi      # 0x4727
jmp 0x3536
movq (%rbx), %rdi
movq %rbx, %rsi
callq 0x22f0
leaq 0xc54(%rip), %rsi       # 0x418a
pushq $0x1
popq %rdi
xorl %eax, %eax
callq 0x2210