// File: /workspace/github_c_makefile_star2_O0/lh3[P]miniprot/map.c
// Function: mp_map
mp_reg1_t *mp_map(const mp_idx_t *mi, int qlen, const char *seq, int *n_reg, mp_tbuf_t *b, const mp_mapopt_t *opt, const char *qname)
{
	void *km = b->km;
	const mp_idxopt_t *io = &mi->opt;
	mp64_v sd = {0,0,0};
	mp_reg1_t *reg;
	int32_t i, n_u, max_occ, is_splice = !(opt->flag&MP_F_NO_SPLICE);
	int64_t k, n_a = 0, n_kmer;
	uint64_t *a, *u;

	*n_reg = 0;
	n_kmer = mp_n_bucket(&mi->opt);
	mp_sketch_prot(km, seq, qlen, io->kmer, io->mod_bit, &sd);
	radix_sort_mp64(sd.a, sd.a + sd.n);

	if (sd.n >= 8) {
		max_occ = mp_cal_max_occ(km, mi, sd.n, sd.a);
		if (max_occ > opt->max_occ) max_occ = opt->max_occ;
	} else max_occ = opt->max_occ;

	for (i = 0; i < sd.n; ++i) {
		int64_t en = (sd.a[i]>>32) + 1 < n_kmer? mi->ki[(sd.a[i]>>32) + 1] : mi->n_kb;
		int64_t n = en - mi->ki[sd.a[i]>>32];
		if (n <= max_occ) n_a += n;
	}
	a = Kmalloc(km, uint64_t, n_a);
	for (i = 0, k = 0; i < sd.n; ++i) {
		int64_t j, st = mi->ki[sd.a[i]>>32];
		int64_t en = (sd.a[i]>>32) + 1 < n_kmer? mi->ki[(sd.a[i]>>32) + 1] : mi->n_kb;
		if (en - st <= max_occ)
			for (j = st; j < en; ++j)
				a[k++] = (uint64_t)mi->kb[j] << 32 | (uint32_t)sd.a[i];
	}
	kfree(km, sd.a);
	radix_sort_mp64(a, a + n_a);

	if (mp_dbg_flag & MP_DBG_ANCHOR) {
		for (k = 0; k < n_a; ++k) {
			i = mp_idx_block2pos(mi, a[k]>>32);
			fprintf(stderr, "X\t%ld\t%s\t%c\t%ld\t%d\n", (long)(a[k]>>32), mi->nt->ctg[i>>1].name, "+-"[i&1], (long)((a[k]>>32) - mi->bo[i]) << mi->opt.bbit, (uint32_t)a[k]);
		}
	}

	if (!(opt->flag & MP_F_NO_PRE_CHAIN) && is_splice) {
		int32_t w = 1<<mi->opt.bbit;
		a = mp_chain(w, w, w, opt->max_chn_max_skip, opt->max_chn_iter, 2, 0, opt->chn_coef_log, is_splice, mi->opt.kmer, mi->opt.bbit, n_a, a, &n_u, &u, km);
		for (i = 0, n_a = 0; i < n_u; ++i) n_a += (uint32_t)u[i];
		kfree(km, u);
		radix_sort_mp64(a, a + n_a);
	}

	a = mp_chain(opt->max_intron, opt->max_gap, opt->bw, opt->max_chn_max_skip, opt->max_chn_iter, opt->min_chn_cnt, opt->min_chn_sc, opt->chn_coef_log,
				 is_splice, mi->opt.kmer, mi->opt.bbit, n_a, a, &n_u, &u, km);
	reg = mp_reg_gen_from_block(0, mi, n_u, u, a, n_reg);
	kfree(km, u);
	mp_sort_reg(km, n_reg, reg);
	mp_set_parent(km, opt->mask_level, opt->mask_len, *n_reg, reg, mi->opt.kmer, 0);
	mp_select_sub(km, opt->pri_ratio * opt->pri_ratio, mi->opt.kmer * 2, opt->best_n, n_reg, reg);

	if (mp_dbg_flag & MP_DBG_CHAIN)
		mp_dbg_chain(mi, *n_reg, reg, a, mi->opt.bbit, "Y1");

	if (!(mp_dbg_flag & MP_DBG_NO_REFINE)) {
		int32_t nr = 0;
		uint64_t *ext;
		ext = mp_cal_max_ext(km, 0, *n_reg, reg, a, 100, opt->max_ext);
		for (i = 0; i < *n_reg; ++i) {
			mp_refine_reg(km, mi, opt, seq, qlen, &reg[i], ext[i]>>32, (int32_t)ext[i]);
			if (reg[i].cnt > 0)
				reg[nr++] = reg[i];
		}
		*n_reg = nr;
		kfree(km, ext);
		kfree(km, a);
		a = mp_collate_a(km, *n_reg, reg);
		mp_sort_reg(km, n_reg, reg);
		//mp_dbg_chain(mi, *n_reg, reg, a, 0, "Y2");
		mp_set_parent(km, opt->mask_level, opt->mask_len, *n_reg, reg, mi->opt.kmer, 0);
		mp_select_sub(km, opt->pri_ratio * opt->pri_ratio, mi->opt.kmer * 2, opt->best_n, n_reg, reg);
	}
	if (!(opt->flag & MP_F_NO_ALIGN)) {
		int32_t k;
		uint64_t *ext = 0;
		ext = mp_cal_max_ext(km, mi->nt, *n_reg, reg, a, 100, opt->max_intron/2); // opt->max_intron/2 for consistency with mp_align()
		for (i = k = 0; i < *n_reg; ++i) {
			mp_align(km, opt, mi, qlen, seq, &reg[i], ext[i]>>32, (int32_t)ext[i]);
			if (reg[i].p) reg[k++] = reg[i];
		}
		*n_reg = k;
		if (ext) kfree(km, ext);
		mp_sort_reg(km, n_reg, reg);
		mp_select_multi_exon(*n_reg, reg, opt->io);
		mp_set_parent(km, opt->mask_level, opt->mask_len, *n_reg, reg, mi->opt.kmer, 0);
		mp_select_sub(km, opt->pri_ratio, mi->opt.kmer * 2, opt->best_n, n_reg, reg);
	}
	kfree(km, a);
	return reg;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movq 0x10(%rbp), %rax
movq %rdi, -0x30(%rbp)
movl %esi, -0x34(%rbp)
movq %rdx, -0x40(%rbp)
movq %rcx, -0x48(%rbp)
movq %r8, -0x50(%rbp)
movq %r9, -0x58(%rbp)
movq -0x50(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq -0x78(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x2190
movq -0x58(%rbp), %rax
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x90(%rbp)
movq $0x0, -0xa0(%rbp)
movq -0x48(%rbp), %rax
movl $0x0, (%rax)
movq -0x30(%rbp), %rdi
callq 0x6e20
movl %eax, %eax
movq %rax, -0xa8(%rbp)
movq -0x60(%rbp), %rdi
movq -0x40(%rbp), %rsi
movl -0x34(%rbp), %edx
movq -0x68(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x68(%rbp), %rax
movl 0xc(%rax), %r8d
leaq -0x78(%rbp), %r9
callq 0x18060
movq -0x70(%rbp), %rdi
movq -0x70(%rbp), %rsi
movslq -0x78(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
callq 0x46c0
cmpl $0x8, -0x78(%rbp)
jl 0x633e
movq -0x60(%rbp), %rdi
movq -0x30(%rbp), %rsi
movl -0x78(%rbp), %edx
movq -0x70(%rbp), %rcx
callq 0x6e50
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
movq -0x58(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jle 0x633c
movq -0x58(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x8c(%rbp)
jmp 0x634b
movq -0x58(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x8c(%rbp)
movl $0x0, -0x84(%rbp)
movl -0x84(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x6435
movq -0x70(%rbp), %rax
movslq -0x84(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
addq $0x1, %rax
cmpq -0xa8(%rbp), %rax
jae 0x63ad
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x70(%rbp), %rcx
movslq -0x84(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
movq 0x8(%rax,%rcx,8), %rax
movq %rax, -0x108(%rbp)
jmp 0x63bc
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x108(%rbp)
movq -0x108(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0x30(%rbp), %rcx
movq 0x28(%rcx), %rcx
movq -0x70(%rbp), %rdx
movslq -0x84(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
shrq $0x20, %rdx
subq (%rcx,%rdx,8), %rax
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
movslq -0x8c(%rbp), %rcx
cmpq %rcx, %rax
jg 0x641f
movq -0xc8(%rbp), %rax
addq -0xa0(%rbp), %rax
movq %rax, -0xa0(%rbp)
jmp 0x6421
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x6355
movq -0x60(%rbp), %rdi
movq -0xa0(%rbp), %rsi
shlq $0x3, %rsi
callq 0xaeb0
movq %rax, -0xb0(%rbp)
movl $0x0, -0x84(%rbp)
movq $0x0, -0x98(%rbp)
movl -0x84(%rbp), %eax
cmpl -0x78(%rbp), %eax
jge 0x65b4
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x70(%rbp), %rcx
movslq -0x84(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xd8(%rbp)
movq -0x70(%rbp), %rax
movslq -0x84(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
addq $0x1, %rax
cmpq -0xa8(%rbp), %rax
jae 0x64e3
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x70(%rbp), %rcx
movslq -0x84(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
movq 0x8(%rax,%rcx,8), %rax
movq %rax, -0x110(%rbp)
jmp 0x64f2
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
subq -0xd8(%rbp), %rax
movslq -0x8c(%rbp), %rcx
cmpq %rcx, %rax
jg 0x659e
movq -0xd8(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
cmpq -0xe0(%rbp), %rax
jge 0x659c
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq -0xd0(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, %edx
shlq $0x20, %rdx
movq -0x70(%rbp), %rax
movslq -0x84(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
orq %rax, %rdx
movq -0xb0(%rbp), %rax
movq -0x98(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x98(%rbp)
movq %rdx, (%rax,%rcx,8)
movq -0xd0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xd0(%rbp)
jmp 0x652c
jmp 0x659e
jmp 0x65a0
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x6465
movq -0x60(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0xac90
movq -0xb0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
movq -0xa0(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
callq 0x46c0
leaq 0x20487(%rip), %rax     # 0x26a70
movl (%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x6717
movq $0x0, -0x98(%rbp)
movq -0x98(%rbp), %rax
cmpq -0xa0(%rbp), %rax
jge 0x6715
movq -0x30(%rbp), %rdi
movq -0xb0(%rbp), %rax
movq -0x98(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movl %eax, %esi
callq 0x5260
movl %eax, -0x84(%rbp)
movq 0x1f9b4(%rip), %rax     # 0x25ff8
movq (%rax), %rdi
movq -0xb0(%rbp), %rax
movq -0x98(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
shrq $0x20, %rdx
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x28(%rax), %rax
movl -0x84(%rbp), %ecx
sarl %ecx
movslq %ecx, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0x118(%rbp)
movl -0x84(%rbp), %eax
andl $0x1, %eax
movslq %eax, %rcx
leaq 0x1aedb(%rip), %rax     # 0x21574
movsbl (%rax,%rcx), %r8d
movq -0xb0(%rbp), %rax
movq -0x98(%rbp), %rcx
movq (%rax,%rcx,8), %r9
shrq $0x20, %r9
movq -0x30(%rbp), %rax
movq 0x30(%rax), %rax
movslq -0x84(%rbp), %rcx
movl (%rax,%rcx,4), %eax
subq %rax, %r9
movq -0x30(%rbp), %rax
movl (%rax), %eax
movl %eax, %ecx
shlq %cl, %r9
movq -0x118(%rbp), %rcx
movq -0xb0(%rbp), %rax
movq -0x98(%rbp), %rsi
movq (%rax,%rsi,8), %rax
leaq 0x1ae6c(%rip), %rsi     # 0x21560
movl %eax, (%rsp)
movb $0x0, %al
callq 0x21f0
movq -0x98(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x6602
jmp 0x6717
movq -0x58(%rbp), %rax
movl (%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
jne 0x6874
cmpl $0x0, -0x90(%rbp)
je 0x6874
movq -0x30(%rbp), %rax
movl (%rax), %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0xe4(%rbp)
movl -0xe4(%rbp), %edi
movl -0xe4(%rbp), %esi
movl -0xe4(%rbp), %edx
movq -0x58(%rbp), %rax
movl 0x34(%rax), %ecx
movq -0x58(%rbp), %rax
movl 0x38(%rax), %r8d
movq -0x58(%rbp), %rax
movss 0x40(%rax), %xmm0
movl -0x90(%rbp), %r13d
movq -0x30(%rbp), %rax
movl 0x8(%rax), %r12d
movq -0x30(%rbp), %rax
movl (%rax), %r15d
movq -0xa0(%rbp), %r14
movq -0xb0(%rbp), %rbx
movq -0x60(%rbp), %rax
movl $0x2, %r9d
xorl %r10d, %r10d
leaq -0x88(%rbp), %r11
leaq -0xb8(%rbp), %r10
movl $0x0, (%rsp)
movl %r13d, 0x8(%rsp)
movl %r12d, 0x10(%rsp)
movl %r15d, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
callq 0x18ed0
movq %rax, -0xb0(%rbp)
movl $0x0, -0x84(%rbp)
movq $0x0, -0xa0(%rbp)
movl -0x84(%rbp), %eax
cmpl -0x88(%rbp), %eax
jge 0x6843
movq -0xb8(%rbp), %rax
movslq -0x84(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
addq -0xa0(%rbp), %rax
movq %rax, -0xa0(%rbp)
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x6802
movq -0x60(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0xac90
movq -0xb0(%rbp), %rdi
movq -0xb0(%rbp), %rsi
movq -0xa0(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rsi
callq 0x46c0
movq -0x58(%rbp), %rax
movl 0x18(%rax), %edi
movq -0x58(%rbp), %rax
movl 0x14(%rax), %esi
movq -0x58(%rbp), %rax
movl 0x24(%rax), %edx
movq -0x58(%rbp), %rax
movl 0x34(%rax), %ecx
movq -0x58(%rbp), %rax
movl 0x38(%rax), %r8d
movq -0x58(%rbp), %rax
movl 0x30(%rax), %r9d
movq -0x58(%rbp), %rax
movl 0x3c(%rax), %eax
movq -0x58(%rbp), %r10
movss 0x40(%r10), %xmm0
movl -0x90(%rbp), %r13d
movq -0x30(%rbp), %r10
movl 0x8(%r10), %r12d
movq -0x30(%rbp), %r10
movl (%r10), %r15d
movq -0xa0(%rbp), %r14
movq -0xb0(%rbp), %rbx
movq -0x60(%rbp), %r10
movq %r10, -0x120(%rbp)
leaq -0x88(%rbp), %r11
leaq -0xb8(%rbp), %r10
movl %eax, (%rsp)
movq -0x120(%rbp), %rax
movl %r13d, 0x8(%rsp)
movl %r12d, 0x10(%rsp)
movl %r15d, 0x18(%rsp)
movq %r14, 0x20(%rsp)
movq %rbx, 0x28(%rsp)
movq %r11, 0x30(%rsp)
movq %r10, 0x38(%rsp)
movq %rax, 0x40(%rsp)
callq 0x18ed0
movq %rax, -0xb0(%rbp)
movq -0x30(%rbp), %rsi
movl -0x88(%rbp), %edx
movq -0xb8(%rbp), %rcx
movq -0xb0(%rbp), %r8
movq -0x48(%rbp), %r9
xorl %eax, %eax
movl %eax, %edi
callq 0x1a2a0
movq %rax, -0x80(%rbp)
movq -0x60(%rbp), %rdi
movq -0xb8(%rbp), %rsi
callq 0xac90
movq -0x60(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x1a810
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rax
movss 0x44(%rax), %xmm0
movq -0x58(%rbp), %rax
movl 0x48(%rax), %esi
movq -0x48(%rbp), %rax
movl (%rax), %edx
movq -0x80(%rbp), %rcx
movq -0x30(%rbp), %rax
movl 0x8(%rax), %r8d
xorl %r9d, %r9d
callq 0x1aa90
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rax
movss 0x4c(%rax), %xmm0
movq -0x58(%rbp), %rax
mulss 0x4c(%rax), %xmm0
movq -0x30(%rbp), %rax
movl 0x8(%rax), %esi
shll %esi
movq -0x58(%rbp), %rax
movl 0x58(%rax), %edx
movq -0x48(%rbp), %rcx
movq -0x80(%rbp), %r8
callq 0x1b2a0
leaq 0x20092(%rip), %rax     # 0x26a70
movl (%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x6a10
movq -0x30(%rbp), %rdi
movq -0x48(%rbp), %rax
movl (%rax), %esi
movq -0x80(%rbp), %rdx
movq -0xb0(%rbp), %rcx
movq -0x30(%rbp), %rax
movl (%rax), %r8d
leaq 0x1ab6c(%rip), %r9      # 0x21577
callq 0x7010
leaq 0x20059(%rip), %rax     # 0x26a70
movl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jne 0x6bfc
movl $0x0, -0xe8(%rbp)
movq -0x60(%rbp), %rdi
movq -0x48(%rbp), %rax
movl (%rax), %edx
movq -0x80(%rbp), %rcx
movq -0xb0(%rbp), %r8
movq -0x58(%rbp), %rax
movl 0x28(%rax), %eax
xorl %esi, %esi
movl $0x64, %r9d
movl %eax, (%rsp)
callq 0x1b8e0
movq %rax, -0xf0(%rbp)
movl $0x0, -0x84(%rbp)
movl -0x84(%rbp), %eax
movq -0x48(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x6b44
movq -0x60(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x40(%rbp), %rcx
movl -0x34(%rbp), %r8d
movq -0x80(%rbp), %r9
movslq -0x84(%rbp), %rax
imulq $0x68, %rax, %rax
addq %rax, %r9
movq -0xf0(%rbp), %rax
movslq -0x84(%rbp), %r10
movq (%rax,%r10,8), %rax
shrq $0x20, %rax
movl %eax, %r10d
movq -0xf0(%rbp), %rax
movslq -0x84(%rbp), %r11
movq (%rax,%r11,8), %rax
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x7170
movq -0x80(%rbp), %rax
movslq -0x84(%rbp), %rcx
imulq $0x68, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x4(%rax)
jle 0x6b2e
movq -0x80(%rbp), %rdi
movl -0xe8(%rbp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, -0xe8(%rbp)
cltq
imulq $0x68, %rax, %rax
addq %rax, %rdi
movq -0x80(%rbp), %rsi
movslq -0x84(%rbp), %rax
imulq $0x68, %rax, %rax
addq %rax, %rsi
movl $0x68, %edx
callq 0x2200
jmp 0x6b30
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x6a6c
movl -0xe8(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, (%rax)
movq -0x60(%rbp), %rdi
movq -0xf0(%rbp), %rsi
callq 0xac90
movq -0x60(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xac90
movq -0x60(%rbp), %rdi
movq -0x48(%rbp), %rax
movl (%rax), %esi
movq -0x80(%rbp), %rdx
callq 0x1a6f0
movq %rax, -0xb0(%rbp)
movq -0x60(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x1a810
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rax
movss 0x44(%rax), %xmm0
movq -0x58(%rbp), %rax
movl 0x48(%rax), %esi
movq -0x48(%rbp), %rax
movl (%rax), %edx
movq -0x80(%rbp), %rcx
movq -0x30(%rbp), %rax
movl 0x8(%rax), %r8d
xorl %r9d, %r9d
callq 0x1aa90
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rax
movss 0x4c(%rax), %xmm0
movq -0x58(%rbp), %rax
mulss 0x4c(%rax), %xmm0
movq -0x30(%rbp), %rax
movl 0x8(%rax), %esi
shll %esi
movq -0x58(%rbp), %rax
movl 0x58(%rax), %edx
movq -0x48(%rbp), %rcx
movq -0x80(%rbp), %r8
callq 0x1b2a0
movq -0x58(%rbp), %rax
movl (%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
jne 0x6df9
movq $0x0, -0x100(%rbp)
movq -0x60(%rbp), %rdi
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rsi
movq -0x48(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x124(%rbp)
movq -0x80(%rbp), %rcx
movq -0xb0(%rbp), %r8
movq -0x58(%rbp), %rax
movl 0x18(%rax), %eax
movl $0x2, %r9d
cltd
idivl %r9d
movl -0x124(%rbp), %edx
movl $0x64, %r9d
movl %eax, (%rsp)
callq 0x1b8e0
movq %rax, -0x100(%rbp)
movl $0x0, -0xf4(%rbp)
movl $0x0, -0x84(%rbp)
movl -0x84(%rbp), %eax
movq -0x48(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x6d54
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0x30(%rbp), %rdx
movl -0x34(%rbp), %ecx
movq -0x40(%rbp), %r8
movq -0x80(%rbp), %r9
movslq -0x84(%rbp), %rax
imulq $0x68, %rax, %rax
addq %rax, %r9
movq -0x100(%rbp), %rax
movslq -0x84(%rbp), %r10
movq (%rax,%r10,8), %rax
shrq $0x20, %rax
movl %eax, %r10d
movq -0x100(%rbp), %rax
movslq -0x84(%rbp), %r11
movq (%rax,%r11,8), %rax
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x8360
movq -0x80(%rbp), %rax
movslq -0x84(%rbp), %rcx
imulq $0x68, %rcx, %rcx
addq %rcx, %rax
cmpq $0x0, 0x60(%rax)
je 0x6d3e
movq -0x80(%rbp), %rdi
movl -0xf4(%rbp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, -0xf4(%rbp)
cltq
imulq $0x68, %rax, %rax
addq %rax, %rdi
movq -0x80(%rbp), %rsi
movslq -0x84(%rbp), %rax
imulq $0x68, %rax, %rax
addq %rax, %rsi
movl $0x68, %edx
callq 0x2200
jmp 0x6d40
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x6c7c
movl -0xf4(%rbp), %ecx
movq -0x48(%rbp), %rax
movl %ecx, (%rax)
cmpq $0x0, -0x100(%rbp)
je 0x6d7a
movq -0x60(%rbp), %rdi
movq -0x100(%rbp), %rsi
callq 0xac90
movq -0x60(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x80(%rbp), %rdx
callq 0x1a810
movq -0x48(%rbp), %rax
movl (%rax), %edi
movq -0x80(%rbp), %rsi
movq -0x58(%rbp), %rax
movl 0x6c(%rax), %edx
callq 0x1b7d0
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rax
movss 0x44(%rax), %xmm0
movq -0x58(%rbp), %rax
movl 0x48(%rax), %esi
movq -0x48(%rbp), %rax
movl (%rax), %edx
movq -0x80(%rbp), %rcx
movq -0x30(%rbp), %rax
movl 0x8(%rax), %r8d
xorl %r9d, %r9d
callq 0x1aa90
movq -0x60(%rbp), %rdi
movq -0x58(%rbp), %rax
movss 0x4c(%rax), %xmm0
movq -0x30(%rbp), %rax
movl 0x8(%rax), %esi
shll %esi
movq -0x58(%rbp), %rax
movl 0x58(%rax), %edx
movq -0x48(%rbp), %rcx
movq -0x80(%rbp), %r8
callq 0x1b2a0
movq -0x60(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0xac90
movq -0x80(%rbp), %rax
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop