// File: /workspace/github_c_makefile_star2_O0/lh3[P]minimap2/map.c
// Function: mm_map_frag_core
void mm_map_frag_core(const mm_idx_t *mi, int n_segs, const int *qlens, const char **seqs, int *n_regs, mm_reg1_t **regs, mm_tbuf_t *b, const mm_mapopt_t *opt, const char *qname)
{
	int i, j, rep_len, qlen_sum, n_regs0, n_mini_pos;
	int max_chain_gap_qry, max_chain_gap_ref, is_splice = !!(opt->flag & MM_F_SPLICE), is_sr = !!(opt->flag & MM_F_SR), is_sr_rna = !!(opt->flag & MM_F_SR_RNA);
	uint32_t hash;
	int64_t n_a;
	uint64_t *u, *mini_pos;
	mm128_t *a;
	mm128_v mv = {0,0,0};
	mm_reg1_t *regs0;
	km_stat_t kmst;
	float chn_pen_gap, chn_pen_skip;

	for (i = 0, qlen_sum = 0; i < n_segs; ++i)
		qlen_sum += qlens[i], n_regs[i] = 0, regs[i] = 0;

	if (qlen_sum == 0 || n_segs <= 0 || n_segs > MM_MAX_SEG) return;
	if (opt->max_qlen > 0 && qlen_sum > opt->max_qlen) return;

	hash  = qname && !(opt->flag & MM_F_NO_HASH_NAME)? __ac_X31_hash_string(qname) : 0;
	hash ^= __ac_Wang_hash(qlen_sum) + __ac_Wang_hash(opt->seed);
	hash  = __ac_Wang_hash(hash);

	collect_minimizers(b->km, opt, mi, n_segs, qlens, seqs, &mv);
	if (opt->q_occ_frac > 0.0f) mm_seed_mz_flt(b->km, &mv, opt->mid_occ, opt->q_occ_frac);
	if (opt->flag & MM_F_HEAP_SORT) a = collect_seed_hits_heap(b->km, opt, opt->mid_occ, mi, qname, &mv, qlen_sum, &n_a, &rep_len, &n_mini_pos, &mini_pos);
	else a = collect_seed_hits(b->km, opt, opt->mid_occ, mi, qname, &mv, qlen_sum, &n_a, &rep_len, &n_mini_pos, &mini_pos);

	if (mm_dbg_flag & MM_DBG_PRINT_SEED) {
		fprintf(stderr, "RS\t%d\n", rep_len);
		for (i = 0; i < n_a; ++i)
			fprintf(stderr, "SD\t%s\t%d\t%c\t%d\t%d\t%d\n", mi->seq[a[i].x<<1>>33].name, (int32_t)a[i].x, "+-"[a[i].x>>63], (int32_t)a[i].y, (int32_t)(a[i].y>>32&0xff),
					i == 0? 0 : ((int32_t)a[i].y - (int32_t)a[i-1].y) - ((int32_t)a[i].x - (int32_t)a[i-1].x));
	}

	// set max chaining gap on the query and the reference sequence
	if (is_sr)
		max_chain_gap_qry = qlen_sum > opt->max_gap? qlen_sum : opt->max_gap;
	else max_chain_gap_qry = opt->max_gap;
	if (opt->max_gap_ref > 0) {
		max_chain_gap_ref = opt->max_gap_ref; // always honor mm_mapopt_t::max_gap_ref if set
	} else if (opt->max_frag_len > 0) {
		max_chain_gap_ref = opt->max_frag_len - qlen_sum;
		if (max_chain_gap_ref < opt->max_gap) max_chain_gap_ref = opt->max_gap;
	} else max_chain_gap_ref = opt->max_gap;

	chn_pen_gap  = opt->chain_gap_scale * 0.01 * mi->k;
	chn_pen_skip = opt->chain_skip_scale * 0.01 * mi->k;
	if (opt->flag & MM_F_RMQ) {
		a = mg_lchain_rmq(opt->max_gap, opt->rmq_inner_dist, opt->bw, opt->max_chain_skip, opt->rmq_size_cap, opt->min_cnt, opt->min_chain_score,
						  chn_pen_gap, chn_pen_skip, n_a, a, &n_regs0, &u, b->km);
	} else {
		a = mg_lchain_dp(max_chain_gap_ref, max_chain_gap_qry, opt->bw, opt->max_chain_skip, opt->max_chain_iter, opt->min_cnt, opt->min_chain_score,
						 chn_pen_gap, chn_pen_skip, is_splice, n_segs, n_a, a, &n_regs0, &u, b->km);
	}

	if (opt->bw_long > opt->bw && (opt->flag & (MM_F_SPLICE|MM_F_SR|MM_F_NO_LJOIN)) == 0 && n_segs == 1 && n_regs0 > 1) { // re-chain/long-join for long sequences
		int32_t st = (int32_t)a[0].y, en = (int32_t)a[(int32_t)u[0] - 1].y;
		if (qlen_sum - (en - st) > opt->rmq_rescue_size || en - st > qlen_sum * opt->rmq_rescue_ratio) {
			int32_t i;
			for (i = 0, n_a = 0; i < n_regs0; ++i) n_a += (int32_t)u[i];
			kfree(b->km, u);
			radix_sort_128x(a, a + n_a);
			a = mg_lchain_rmq(opt->max_gap, opt->rmq_inner_dist, opt->bw_long, opt->max_chain_skip, opt->rmq_size_cap, opt->min_cnt, opt->min_chain_score,
							  chn_pen_gap, chn_pen_skip, n_a, a, &n_regs0, &u, b->km);
		}
	} else if (opt->max_occ > opt->mid_occ && rep_len > 0 && !(opt->flag & MM_F_RMQ)) { // re-chain, mostly for short reads
		int rechain = 0;
		if (n_regs0 > 0) { // test if the best chain has all the segments
			int n_chained_segs = 1, max = 0, max_i = -1, max_off = -1, off = 0;
			for (i = 0; i < n_regs0; ++i) { // find the best chain
				if (max < (int)(u[i]>>32)) max = u[i]>>32, max_i = i, max_off = off;
				off += (uint32_t)u[i];
			}
			for (i = 1; i < (int32_t)u[max_i]; ++i) // count the number of segments in the best chain
				if ((a[max_off+i].y&MM_SEED_SEG_MASK) != (a[max_off+i-1].y&MM_SEED_SEG_MASK))
					++n_chained_segs;
			if (n_chained_segs < n_segs)
				rechain = 1;
		} else rechain = 1;
		if (rechain) { // redo chaining with a higher max_occ threshold
			kfree(b->km, a);
			kfree(b->km, u);
			kfree(b->km, mini_pos);
			if (opt->flag & MM_F_HEAP_SORT) a = collect_seed_hits_heap(b->km, opt, opt->max_occ, mi, qname, &mv, qlen_sum, &n_a, &rep_len, &n_mini_pos, &mini_pos);
			else a = collect_seed_hits(b->km, opt, opt->max_occ, mi, qname, &mv, qlen_sum, &n_a, &rep_len, &n_mini_pos, &mini_pos);
			a = mg_lchain_dp(max_chain_gap_ref, max_chain_gap_qry, opt->bw, opt->max_chain_skip, opt->max_chain_iter, opt->min_cnt, opt->min_chain_score,
							 chn_pen_gap, chn_pen_skip, is_splice, n_segs, n_a, a, &n_regs0, &u, b->km);
		}
	}
	b->frag_gap = max_chain_gap_ref;
	b->rep_len = rep_len;

	regs0 = mm_gen_regs(b->km, hash, qlen_sum, n_regs0, u, a, !!(opt->flag&MM_F_QSTRAND));
	if (mi->n_alt) {
		mm_mark_alt(mi, n_regs0, regs0);
		mm_hit_sort(b->km, &n_regs0, regs0, opt->alt_drop); // this step can be merged into mm_gen_regs(); will do if this shows up in profile
	}

	if (mm_dbg_flag & (MM_DBG_PRINT_SEED|MM_DBG_PRINT_CHAIN))
		for (j = 0; j < n_regs0; ++j)
			for (i = regs0[j].as; i < regs0[j].as + regs0[j].cnt; ++i)
				fprintf(stderr, "CN\t%d\t%s\t%d\t%c\t%d\t%d\t%d\n", j, mi->seq[a[i].x<<1>>33].name, (int32_t)a[i].x, "+-"[a[i].x>>63], (int32_t)a[i].y, (int32_t)(a[i].y>>32&0xff),
						i == regs0[j].as? 0 : ((int32_t)a[i].y - (int32_t)a[i-1].y) - ((int32_t)a[i].x - (int32_t)a[i-1].x));

	chain_post(opt, max_chain_gap_ref, mi, b->km, qlen_sum, n_segs, qlens, &n_regs0, regs0, a);
	if (!is_sr && !(opt->flag&MM_F_QSTRAND)) {
		mm_est_err(mi, qlen_sum, n_regs0, regs0, a, n_mini_pos, mini_pos);
		n_regs0 = mm_filter_strand_retained(n_regs0, regs0);
	}

	if (n_segs == 1) { // uni-segment
		regs0 = align_regs(opt, mi, b->km, qlens[0], seqs[0], &n_regs0, regs0, a);
		regs0 = (mm_reg1_t*)realloc(regs0, sizeof(*regs0) * n_regs0);
		mm_set_mapq2(b->km, n_regs0, regs0, opt->min_chain_score, opt->a, rep_len, is_sr || is_sr_rna, is_splice);
		n_regs[0] = n_regs0, regs[0] = regs0;
	} else { // multi-segment
		mm_seg_t *seg;
		seg = mm_seg_gen(b->km, hash, n_segs, qlens, n_regs0, regs0, n_regs, regs, a); // split fragment chain to separate segment chains
		free(regs0);
		for (i = 0; i < n_segs; ++i) {
			mm_set_parent(b->km, opt->mask_level, opt->mask_len, n_regs[i], regs[i], opt->a * 2 + opt->b, opt->flag&MM_F_HARD_MLEVEL, opt->alt_drop); // update mm_reg1_t::parent
			regs[i] = align_regs(opt, mi, b->km, qlens[i], seqs[i], &n_regs[i], regs[i], seg[i].a);
			mm_set_mapq2(b->km, n_regs[i], regs[i], opt->min_chain_score, opt->a, rep_len, is_sr || is_sr_rna, is_splice);
		}
		mm_seg_free(b->km, n_segs, seg);
		if (n_segs == 2 && opt->pe_ori >= 0 && (opt->flag&MM_F_CIGAR))
			mm_pair(b->km, max_chain_gap_ref, opt->pe_bonus, opt->a * 2 + opt->b, opt->a, qlens, n_regs, regs); // pairing
	}

	kfree(b->km, mv.a);
	kfree(b->km, a);
	kfree(b->km, u);
	kfree(b->km, mini_pos);

	if (mi->J && n_segs == 1 && is_splice)
		for (i = 0; i < n_regs0; ++i)
			mm_jump_split(b->km, mi, opt, qlens[0], (const uint8_t*)seqs[0], &regs0[i], 0);

	if (b->km) {
		km_stat(b->km, &kmst);
		if (mm_dbg_flag & MM_DBG_PRINT_QNAME)
			fprintf(stderr, "QM\t%s\t%d\tcap=%ld,nCore=%ld,largest=%ld\n", qname, qlen_sum, kmst.capacity, kmst.n_cores, kmst.largest);
		assert(kmst.n_blocks == kmst.n_cores); // otherwise, there is a memory leak
		if (kmst.largest > 1U<<28 || (opt->cap_kalloc > 0 && kmst.capacity > opt->cap_kalloc)) {
			if (mm_dbg_flag & MM_DBG_PRINT_QNAME)
				fprintf(stderr, "[W::%s] reset thread-local memory after read %s\n", __func__, qname);
			km_destroy(b->km);
			b->km = km_init();
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1f8, %rsp            # imm = 0x1F8
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
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 0x18(%rbp), %rax
movq (%rax), %rax
andq $0x80, %rax
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x7c(%rbp)
movq 0x18(%rbp), %rax
movq (%rax), %rax
andq $0x1000, %rax           # imm = 0x1000
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x80(%rbp)
movq 0x18(%rbp), %rcx
movabsq $0x8000000000, %rax     # imm = 0x8000000000
andq (%rcx), %rax
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x84(%rbp)
leaq -0xc0(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x21b0
movl $0x0, -0x5c(%rbp)
movl $0x0, -0x68(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0xf692
movq -0x40(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
addl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movq -0x50(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movl $0x0, (%rax,%rcx,4)
movq -0x58(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq $0x0, (%rax,%rcx,8)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xf64f
cmpl $0x0, -0x68(%rbp)
je 0xf6a7
cmpl $0x0, -0x34(%rbp)
jle 0xf6a7
cmpl $0xff, -0x34(%rbp)
jle 0xf6ac
jmp 0x10b09
movq 0x18(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jle 0xf6c7
movl -0x68(%rbp), %eax
movq 0x18(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jle 0xf6c7
jmp 0x10b09
cmpq $0x0, 0x20(%rbp)
je 0xf6f6
movq 0x18(%rbp), %rcx
movabsq $0x400000000, %rax      # imm = 0x400000000
andq (%rcx), %rax
cmpq $0x0, %rax
jne 0xf6f6
movq 0x20(%rbp), %rdi
callq 0x10b20
movl %eax, -0x12c(%rbp)
jmp 0xf700
xorl %eax, %eax
movl %eax, -0x12c(%rbp)
jmp 0xf700
movl -0x12c(%rbp), %eax
movl %eax, -0x88(%rbp)
movl -0x68(%rbp), %edi
callq 0x10b80
movl %eax, -0x130(%rbp)
movq 0x18(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x10b80
movl %eax, %ecx
movl -0x130(%rbp), %eax
addl %ecx, %eax
xorl -0x88(%rbp), %eax
movl %eax, -0x88(%rbp)
movl -0x88(%rbp), %edi
callq 0x10b80
movl %eax, -0x88(%rbp)
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq 0x18(%rbp), %rsi
movq -0x30(%rbp), %rdx
movl -0x34(%rbp), %ecx
movq -0x40(%rbp), %r8
movq -0x48(%rbp), %r9
leaq -0xc0(%rbp), %rax
movq %rax, (%rsp)
callq 0x10be0
movq 0x18(%rbp), %rax
movss 0xc8(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0xf7b4
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq 0x18(%rbp), %rax
movl 0xd4(%rax), %edx
movq 0x18(%rbp), %rax
movss 0xc8(%rax), %xmm0
leaq -0xc0(%rbp), %rsi
callq 0x2c850
movq 0x18(%rbp), %rax
movq (%rax), %rax
andq $0x400000, %rax         # imm = 0x400000
cmpq $0x0, %rax
je 0xf82b
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq 0x18(%rbp), %rsi
movq 0x18(%rbp), %rax
movl 0xd4(%rax), %edx
movq -0x30(%rbp), %rcx
movq 0x20(%rbp), %r8
movl -0x68(%rbp), %r14d
leaq -0xc0(%rbp), %r9
leaq -0x90(%rbp), %rbx
leaq -0x64(%rbp), %r11
leaq -0x70(%rbp), %r10
leaq -0xa0(%rbp), %rax
movl %r14d, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x10d60
movq %rax, -0xa8(%rbp)
jmp 0xf88d
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq 0x18(%rbp), %rsi
movq 0x18(%rbp), %rax
movl 0xd4(%rax), %edx
movq -0x30(%rbp), %rcx
movq 0x20(%rbp), %r8
movl -0x68(%rbp), %r14d
leaq -0xc0(%rbp), %r9
leaq -0x90(%rbp), %rbx
leaq -0x64(%rbp), %r11
leaq -0x70(%rbp), %r10
leaq -0xa0(%rbp), %rax
movl %r14d, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x11350
movq %rax, -0xa8(%rbp)
leaq 0x4f0a4(%rip), %rax     # 0x5e938
movl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xfa73
movq 0x4e74f(%rip), %rax     # 0x5dff8
movq (%rax), %rdi
movl -0x64(%rbp), %edx
leaq 0x47abe(%rip), %rsi     # 0x57374
movb $0x0, %al
callq 0x2250
movl $0x0, -0x5c(%rbp)
movslq -0x5c(%rbp), %rax
cmpq -0x90(%rbp), %rax
jge 0xfa71
movq 0x4e71c(%rip), %rax     # 0x5dff8
movq (%rax), %rax
movq %rax, -0x150(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq -0xa8(%rbp), %rcx
movslq -0x5c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
shlq %rcx
shrq $0x21, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x148(%rbp)
movq -0xa8(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movl %eax, -0x140(%rbp)
movq -0xa8(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
shrq $0x3f, %rcx
leaq 0x47a3b(%rip), %rax     # 0x57391
movsbl (%rax,%rcx), %eax
movl %eax, -0x13c(%rbp)
movq -0xa8(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl %eax, -0x138(%rbp)
movq -0xa8(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
shrq $0x20, %rax
andq $0xff, %rax
movl %eax, -0x134(%rbp)
cmpl $0x0, -0x5c(%rbp)
jne 0xf9b2
xorl %eax, %eax
movl %eax, -0x154(%rbp)
jmp 0xfa1e
movq -0xa8(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq -0xa8(%rbp), %rcx
movl -0x5c(%rbp), %edx
subl $0x1, %edx
movslq %edx, %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq 0x8(%rcx), %rcx
subl %ecx, %eax
movq -0xa8(%rbp), %rcx
movslq -0x5c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
movq -0xa8(%rbp), %rdx
movl -0x5c(%rbp), %esi
subl $0x1, %esi
movslq %esi, %rsi
shlq $0x4, %rsi
addq %rsi, %rdx
movq (%rdx), %rdx
subl %edx, %ecx
subl %ecx, %eax
movl %eax, -0x154(%rbp)
movl -0x134(%rbp), %r10d
movl -0x138(%rbp), %r9d
movl -0x13c(%rbp), %r8d
movl -0x140(%rbp), %ecx
movq -0x148(%rbp), %rdx
movq -0x150(%rbp), %rdi
movl -0x154(%rbp), %eax
leaq 0x47927(%rip), %rsi     # 0x5737b
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
movb $0x0, %al
callq 0x2250
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xf8c4
jmp 0xfa73
cmpl $0x0, -0x80(%rbp)
je 0xfaa8
movl -0x68(%rbp), %eax
movq 0x18(%rbp), %rcx
cmpl 0x1c(%rcx), %eax
jle 0xfa90
movl -0x68(%rbp), %eax
movl %eax, -0x158(%rbp)
jmp 0xfa9d
movq 0x18(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x158(%rbp)
movl -0x158(%rbp), %eax
movl %eax, -0x74(%rbp)
jmp 0xfab2
movq 0x18(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x74(%rbp)
movq 0x18(%rbp), %rax
cmpl $0x0, 0x20(%rax)
jle 0xfac8
movq 0x18(%rbp), %rax
movl 0x20(%rax), %eax
movl %eax, -0x78(%rbp)
jmp 0xfb03
movq 0x18(%rbp), %rax
cmpl $0x0, 0x24(%rax)
jle 0xfaf7
movq 0x18(%rbp), %rax
movl 0x24(%rax), %eax
subl -0x68(%rbp), %eax
movl %eax, -0x78(%rbp)
movl -0x78(%rbp), %eax
movq 0x18(%rbp), %rcx
cmpl 0x1c(%rcx), %eax
jge 0xfaf5
movq 0x18(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x78(%rbp)
jmp 0xfb01
movq 0x18(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x78(%rbp)
jmp 0xfb03
movq 0x18(%rbp), %rax
movss 0x38(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x47848(%rip), %xmm1    # 0x57360
mulsd %xmm1, %xmm0
movq -0x30(%rbp), %rax
cvtsi2sdl 0x8(%rax), %xmm1
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0xf4(%rbp)
movq 0x18(%rbp), %rax
movss 0x3c(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x47816(%rip), %xmm1    # 0x57360
mulsd %xmm1, %xmm0
movq -0x30(%rbp), %rax
cvtsi2sdl 0x8(%rax), %xmm1
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0xf8(%rbp)
movq 0x18(%rbp), %rcx
movabsq $0x80000000, %rax       # imm = 0x80000000
andq (%rcx), %rax
cmpq $0x0, %rax
je 0xfc14
movq 0x18(%rbp), %rax
movl 0x1c(%rax), %edi
movq 0x18(%rbp), %rax
movl 0x44(%rax), %esi
movq 0x18(%rbp), %rax
movl 0x14(%rax), %edx
movq 0x18(%rbp), %rax
movl 0x28(%rax), %ecx
movq 0x18(%rbp), %rax
movl 0x40(%rax), %r8d
movq 0x18(%rbp), %rax
movl 0x30(%rax), %r9d
movq 0x18(%rbp), %rax
movl 0x34(%rax), %r15d
movss -0xf4(%rbp), %xmm0
movss -0xf8(%rbp), %xmm1
movq -0x90(%rbp), %r14
movq -0xa8(%rbp), %rbx
movq 0x10(%rbp), %rax
movq (%rax), %rax
leaq -0x6c(%rbp), %r11
leaq -0x98(%rbp), %r10
movl %r15d, (%rsp)
movq %r14, 0x8(%rsp)
movq %rbx, 0x10(%rsp)
movq %r11, 0x18(%rsp)
movq %r10, 0x20(%rsp)
movq %rax, 0x28(%rsp)
callq 0x21520
movq %rax, -0xa8(%rbp)
jmp 0xfcab
movl -0x78(%rbp), %edi
movl -0x74(%rbp), %esi
movq 0x18(%rbp), %rax
movl 0x14(%rax), %edx
movq 0x18(%rbp), %rax
movl 0x28(%rax), %ecx
movq 0x18(%rbp), %rax
movl 0x2c(%rax), %r8d
movq 0x18(%rbp), %rax
movl 0x30(%rax), %r9d
movq 0x18(%rbp), %rax
movl 0x34(%rax), %r13d
movss -0xf4(%rbp), %xmm0
movss -0xf8(%rbp), %xmm1
movl -0x7c(%rbp), %r12d
movl -0x34(%rbp), %r15d
movq -0x90(%rbp), %r14
movq -0xa8(%rbp), %rbx
movq 0x10(%rbp), %rax
movq (%rax), %rax
leaq -0x6c(%rbp), %r11
leaq -0x98(%rbp), %r10
movl %r13d, (%rsp)
movl %r12d, 0x8(%rsp)
movl %r15d, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movq %r11, 0x28(%rsp)
movq %r10, 0x30(%rsp)
movq %rax, 0x38(%rsp)
callq 0x1edc0
movq %rax, -0xa8(%rbp)
movq 0x18(%rbp), %rax
movl 0x18(%rax), %eax
movq 0x18(%rbp), %rcx
cmpl 0x14(%rcx), %eax
jle 0xfe7d
movq 0x18(%rbp), %rax
movq (%rax), %rax
andq $0x1480, %rax           # imm = 0x1480
cmpq $0x0, %rax
jne 0xfe7d
cmpl $0x1, -0x34(%rbp)
jne 0xfe7d
cmpl $0x1, -0x6c(%rbp)
jle 0xfe7d
movq -0xa8(%rbp), %rax
movq 0x8(%rax), %rax
movl %eax, -0xfc(%rbp)
movq -0xa8(%rbp), %rax
movq -0x98(%rbp), %rcx
movq (%rcx), %rcx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl %eax, -0x100(%rbp)
movl -0x68(%rbp), %eax
movl -0x100(%rbp), %ecx
subl -0xfc(%rbp), %ecx
subl %ecx, %eax
movq 0x18(%rbp), %rcx
cmpl 0x48(%rcx), %eax
jg 0xfd64
movl -0x100(%rbp), %eax
subl -0xfc(%rbp), %eax
cvtsi2ss %eax, %xmm0
cvtsi2ssl -0x68(%rbp), %xmm1
movq 0x18(%rbp), %rax
mulss 0x4c(%rax), %xmm1
ucomiss %xmm1, %xmm0
jbe 0xfe78
movl $0x0, -0x104(%rbp)
movq $0x0, -0x90(%rbp)
movl -0x104(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jge 0xfdb7
movq -0x98(%rbp), %rax
movslq -0x104(%rbp), %rcx
movq (%rax,%rcx,8), %rax
cltq
addq -0x90(%rbp), %rax
movq %rax, -0x90(%rbp)
movl -0x104(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x104(%rbp)
jmp 0xfd79
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq -0x98(%rbp), %rsi
callq 0x1a8c0
movq -0xa8(%rbp), %rdi
movq -0xa8(%rbp), %rsi
movq -0x90(%rbp), %rax
shlq $0x4, %rax
addq %rax, %rsi
callq 0x5ad0
movq 0x18(%rbp), %rax
movl 0x1c(%rax), %edi
movq 0x18(%rbp), %rax
movl 0x44(%rax), %esi
movq 0x18(%rbp), %rax
movl 0x18(%rax), %edx
movq 0x18(%rbp), %rax
movl 0x28(%rax), %ecx
movq 0x18(%rbp), %rax
movl 0x40(%rax), %r8d
movq 0x18(%rbp), %rax
movl 0x30(%rax), %r9d
movq 0x18(%rbp), %rax
movl 0x34(%rax), %r15d
movss -0xf4(%rbp), %xmm0
movss -0xf8(%rbp), %xmm1
movq -0x90(%rbp), %r14
movq -0xa8(%rbp), %rbx
movq 0x10(%rbp), %rax
movq (%rax), %rax
leaq -0x6c(%rbp), %r11
leaq -0x98(%rbp), %r10
movl %r15d, (%rsp)
movq %r14, 0x8(%rsp)
movq %rbx, 0x10(%rsp)
movq %r11, 0x18(%rsp)
movq %r10, 0x20(%rsp)
movq %rax, 0x28(%rsp)
callq 0x21520
movq %rax, -0xa8(%rbp)
jmp 0x101f3
movq 0x18(%rbp), %rax
movl 0xd8(%rax), %eax
movq 0x18(%rbp), %rcx
cmpl 0xd4(%rcx), %eax
jle 0x101f1
cmpl $0x0, -0x64(%rbp)
jle 0x101f1
movq 0x18(%rbp), %rcx
movabsq $0x80000000, %rax       # imm = 0x80000000
andq (%rcx), %rax
cmpq $0x0, %rax
jne 0x101f1
movl $0x0, -0x108(%rbp)
cmpl $0x0, -0x6c(%rbp)
jle 0x1002f
movl $0x1, -0x10c(%rbp)
movl $0x0, -0x110(%rbp)
movl $0xffffffff, -0x114(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x118(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x11c(%rbp)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jge 0xff82
movl -0x110(%rbp), %eax
movq -0x98(%rbp), %rcx
movslq -0x5c(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
cmpl %ecx, %eax
jge 0xff5c
movq -0x98(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movl %eax, -0x110(%rbp)
movl -0x5c(%rbp), %eax
movl %eax, -0x114(%rbp)
movl -0x11c(%rbp), %eax
movl %eax, -0x118(%rbp)
movq -0x98(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
addl -0x11c(%rbp), %eax
movl %eax, -0x11c(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xff09
movl $0x1, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x98(%rbp), %rcx
movslq -0x114(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
cmpl %ecx, %eax
jge 0x10018
movq -0xa8(%rbp), %rcx
movl -0x118(%rbp), %eax
addl -0x5c(%rbp), %eax
cltq
shlq $0x4, %rax
addq %rax, %rcx
movabsq $0xff000000000000, %rax # imm = 0xFF000000000000
andq 0x8(%rcx), %rax
movq -0xa8(%rbp), %rdx
movl -0x118(%rbp), %ecx
addl -0x5c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rdx
movabsq $0xff000000000000, %rcx # imm = 0xFF000000000000
andq 0x8(%rdx), %rcx
cmpq %rcx, %rax
je 0x10008
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x1000a
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0xff89
movl -0x10c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x1002d
movl $0x1, -0x108(%rbp)
jmp 0x10039
movl $0x1, -0x108(%rbp)
cmpl $0x0, -0x108(%rbp)
je 0x101ef
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq -0xa8(%rbp), %rsi
callq 0x1a8c0
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq -0x98(%rbp), %rsi
callq 0x1a8c0
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq -0xa0(%rbp), %rsi
callq 0x1a8c0
movq 0x18(%rbp), %rax
movq (%rax), %rax
andq $0x400000, %rax         # imm = 0x400000
cmpq $0x0, %rax
je 0x100f6
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq 0x18(%rbp), %rsi
movq 0x18(%rbp), %rax
movl 0xd8(%rax), %edx
movq -0x30(%rbp), %rcx
movq 0x20(%rbp), %r8
movl -0x68(%rbp), %r14d
leaq -0xc0(%rbp), %r9
leaq -0x90(%rbp), %rbx
leaq -0x64(%rbp), %r11
leaq -0x70(%rbp), %r10
leaq -0xa0(%rbp), %rax
movl %r14d, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x10d60
movq %rax, -0xa8(%rbp)
jmp 0x10158
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq 0x18(%rbp), %rsi
movq 0x18(%rbp), %rax
movl 0xd8(%rax), %edx
movq -0x30(%rbp), %rcx
movq 0x20(%rbp), %r8
movl -0x68(%rbp), %r14d
leaq -0xc0(%rbp), %r9
leaq -0x90(%rbp), %rbx
leaq -0x64(%rbp), %r11
leaq -0x70(%rbp), %r10
leaq -0xa0(%rbp), %rax
movl %r14d, (%rsp)
movq %rbx, 0x8(%rsp)
movq %r11, 0x10(%rsp)
movq %r10, 0x18(%rsp)
movq %rax, 0x20(%rsp)
callq 0x11350
movq %rax, -0xa8(%rbp)
movl -0x78(%rbp), %edi
movl -0x74(%rbp), %esi
movq 0x18(%rbp), %rax
movl 0x14(%rax), %edx
movq 0x18(%rbp), %rax
movl 0x28(%rax), %ecx
movq 0x18(%rbp), %rax
movl 0x2c(%rax), %r8d
movq 0x18(%rbp), %rax
movl 0x30(%rax), %r9d
movq 0x18(%rbp), %rax
movl 0x34(%rax), %r13d
movss -0xf4(%rbp), %xmm0
movss -0xf8(%rbp), %xmm1
movl -0x7c(%rbp), %r12d
movl -0x34(%rbp), %r15d
movq -0x90(%rbp), %r14
movq -0xa8(%rbp), %rbx
movq 0x10(%rbp), %rax
movq (%rax), %rax
leaq -0x6c(%rbp), %r11
leaq -0x98(%rbp), %r10
movl %r13d, (%rsp)
movl %r12d, 0x8(%rsp)
movl %r15d, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movq %rbx, 0x20(%rsp)
movq %r11, 0x28(%rsp)
movq %r10, 0x30(%rsp)
movq %rax, 0x38(%rsp)
callq 0x1edc0
movq %rax, -0xa8(%rbp)
jmp 0x101f1
jmp 0x101f3
movl -0x78(%rbp), %ecx
movq 0x10(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x64(%rbp), %ecx
movq 0x10(%rbp), %rax
movl %ecx, 0x8(%rax)
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movl -0x88(%rbp), %esi
movl -0x68(%rbp), %edx
movl -0x6c(%rbp), %ecx
movq -0x98(%rbp), %r8
movq -0xa8(%rbp), %r9
movq 0x18(%rbp), %r10
movabsq $0x100000000, %rax      # imm = 0x100000000
andq (%r10), %rax
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, (%rsp)
callq 0x29c00
movq %rax, -0xc8(%rbp)
movq -0x30(%rbp), %rax
cmpl $0x0, 0x18(%rax)
je 0x10295
movq -0x30(%rbp), %rdi
movl -0x6c(%rbp), %esi
movq -0xc8(%rbp), %rdx
callq 0x2a180
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq -0xc8(%rbp), %rdx
movq 0x18(%rbp), %rax
movss 0x60(%rax), %xmm0
leaq -0x6c(%rbp), %rsi
callq 0x2aae0
leaq 0x4e69c(%rip), %rax     # 0x5e938
movl (%rax), %eax
andl $0x14, %eax
cmpl $0x0, %eax
je 0x104e1
movl $0x0, -0x60(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jge 0x104df
movq -0xc8(%rbp), %rax
movslq -0x60(%rbp), %rcx
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movl 0x28(%rax), %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0xc8(%rbp), %rcx
movslq -0x60(%rbp), %rdx
imulq $0x50, %rdx, %rdx
addq %rdx, %rcx
movl 0x28(%rcx), %ecx
movq -0xc8(%rbp), %rdx
movslq -0x60(%rbp), %rsi
imulq $0x50, %rsi, %rsi
addq %rsi, %rdx
addl 0x4(%rdx), %ecx
cmpl %ecx, %eax
jge 0x104cf
movq 0x4dce7(%rip), %rax     # 0x5dff8
movq (%rax), %rax
movq %rax, -0x180(%rbp)
movl -0x60(%rbp), %eax
movl %eax, -0x174(%rbp)
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq -0xa8(%rbp), %rcx
movslq -0x5c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
shlq %rcx
shrq $0x21, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0x170(%rbp)
movq -0xa8(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movl %eax, -0x168(%rbp)
movq -0xa8(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
shrq $0x3f, %rcx
leaq 0x46ffd(%rip), %rax     # 0x57391
movsbl (%rax,%rcx), %eax
movl %eax, -0x164(%rbp)
movq -0xa8(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movl %eax, -0x160(%rbp)
movq -0xa8(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
shrq $0x20, %rax
andq $0xff, %rax
movl %eax, -0x15c(%rbp)
movl -0x5c(%rbp), %eax
movq -0xc8(%rbp), %rcx
movslq -0x60(%rbp), %rdx
imulq $0x50, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x28(%rcx), %eax
jne 0x10404
xorl %eax, %eax
movl %eax, -0x184(%rbp)
jmp 0x10470
movq -0xa8(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq -0xa8(%rbp), %rcx
movl -0x5c(%rbp), %edx
subl $0x1, %edx
movslq %edx, %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq 0x8(%rcx), %rcx
subl %ecx, %eax
movq -0xa8(%rbp), %rcx
movslq -0x5c(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
movq -0xa8(%rbp), %rdx
movl -0x5c(%rbp), %esi
subl $0x1, %esi
movslq %esi, %rsi
shlq $0x4, %rsi
addq %rsi, %rdx
movq (%rdx), %rdx
subl %edx, %ecx
subl %ecx, %eax
movl %eax, -0x184(%rbp)
movl -0x15c(%rbp), %r10d
movl -0x160(%rbp), %r11d
movl -0x164(%rbp), %r9d
movl -0x168(%rbp), %r8d
movq -0x170(%rbp), %rcx
movl -0x174(%rbp), %edx
movq -0x180(%rbp), %rdi
movl -0x184(%rbp), %eax
leaq 0x46ee7(%rip), %rsi     # 0x57394
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movb $0x0, %al
callq 0x2250
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x102d5
jmp 0x104d1
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x102b1
jmp 0x104e1
movq 0x18(%rbp), %rdi
movl -0x78(%rbp), %esi
movq -0x30(%rbp), %rdx
movq 0x10(%rbp), %rax
movq (%rax), %rcx
movl -0x68(%rbp), %r8d
movl -0x34(%rbp), %r9d
movq -0x40(%rbp), %rbx
movq -0xc8(%rbp), %r10
movq -0xa8(%rbp), %rax
leaq -0x6c(%rbp), %r11
movq %rbx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x11760
cmpl $0x0, -0x80(%rbp)
jne 0x10584
movq 0x18(%rbp), %rcx
movabsq $0x100000000, %rax      # imm = 0x100000000
andq (%rcx), %rax
cmpq $0x0, %rax
jne 0x10584
movq -0x30(%rbp), %rdi
movl -0x68(%rbp), %esi
movl -0x6c(%rbp), %edx
movq -0xc8(%rbp), %rcx
movq -0xa8(%rbp), %r8
movl -0x70(%rbp), %r9d
movq -0xa0(%rbp), %rax
movq %rax, (%rsp)
callq 0x195f0
movl -0x6c(%rbp), %edi
movq -0xc8(%rbp), %rsi
callq 0x2b3d0
movl %eax, -0x6c(%rbp)
cmpl $0x1, -0x34(%rbp)
jne 0x106b2
movq 0x18(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq 0x10(%rbp), %rax
movq (%rax), %rdx
movq -0x40(%rbp), %rax
movl (%rax), %ecx
movq -0x48(%rbp), %rax
movq (%rax), %r8
movq -0xc8(%rbp), %r10
movq -0xa8(%rbp), %rax
leaq -0x6c(%rbp), %r9
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x118a0
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rdi
movslq -0x6c(%rbp), %rax
imulq $0x50, %rax, %rsi
callq 0x2310
movq %rax, -0xc8(%rbp)
movq 0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x1b0(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, -0x1a4(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movq 0x18(%rbp), %rax
movl 0x34(%rax), %eax
movl %eax, -0x194(%rbp)
movq 0x18(%rbp), %rax
movl 0x64(%rax), %eax
movl %eax, -0x190(%rbp)
movl -0x64(%rbp), %eax
movl %eax, -0x18c(%rbp)
movb $0x1, %al
cmpl $0x0, -0x80(%rbp)
movb %al, -0x185(%rbp)
jne 0x10652
cmpl $0x0, -0x84(%rbp)
setne %al
movb %al, -0x185(%rbp)
movl -0x18c(%rbp), %r9d
movl -0x190(%rbp), %r8d
movl -0x194(%rbp), %ecx
movq -0x1a0(%rbp), %rdx
movl -0x1a4(%rbp), %esi
movq -0x1b0(%rbp), %rdi
movb -0x185(%rbp), %al
andb $0x1, %al
movzbl %al, %r10d
movl -0x7c(%rbp), %eax
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x2be70
movl -0x6c(%rbp), %ecx
movq -0x50(%rbp), %rax
movl %ecx, (%rax)
movq -0xc8(%rbp), %rcx
movq -0x58(%rbp), %rax
movq %rcx, (%rax)
jmp 0x10933
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movl -0x88(%rbp), %esi
movl -0x34(%rbp), %edx
movq -0x40(%rbp), %rcx
movl -0x6c(%rbp), %r8d
movq -0xc8(%rbp), %r9
movq -0x50(%rbp), %r11
movq -0x58(%rbp), %r10
movq -0xa8(%rbp), %rax
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x2b7c0
movq %rax, -0x128(%rbp)
movq -0xc8(%rbp), %rdi
callq 0x2040
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x34(%rbp), %eax
jge 0x108b1
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq 0x18(%rbp), %rax
movss 0x50(%rax), %xmm0
movq 0x18(%rbp), %rax
movl 0x54(%rax), %esi
movq -0x50(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movl (%rax,%rcx,4), %edx
movq -0x58(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x18(%rbp), %rax
movl 0x64(%rax), %r8d
shll %r8d
movq 0x18(%rbp), %rax
addl 0x68(%rax), %r8d
movq 0x18(%rbp), %rax
movq (%rax), %rax
andq $0x20000000, %rax       # imm = 0x20000000
movl %eax, %r9d
movq 0x18(%rbp), %rax
movss 0x60(%rax), %xmm1
callq 0x2a3b0
movq 0x18(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq 0x10(%rbp), %rax
movq (%rax), %rdx
movq -0x40(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movl (%rax,%rcx,4), %ecx
movq -0x48(%rbp), %rax
movslq -0x5c(%rbp), %r8
movq (%rax,%r8,8), %r8
movq -0x50(%rbp), %r9
movslq -0x5c(%rbp), %rax
shlq $0x2, %rax
addq %rax, %r9
movq -0x58(%rbp), %rax
movslq -0x5c(%rbp), %r10
movq (%rax,%r10,8), %r10
movq -0x128(%rbp), %rax
movslq -0x5c(%rbp), %r11
imulq $0x18, %r11, %r11
addq %r11, %rax
movq 0x10(%rax), %rax
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x118a0
movq %rax, %rdx
movq -0x58(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x1d8(%rbp)
movq -0x50(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x1cc(%rbp)
movq -0x58(%rbp), %rax
movslq -0x5c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x1c8(%rbp)
movq 0x18(%rbp), %rax
movl 0x34(%rax), %eax
movl %eax, -0x1c0(%rbp)
movq 0x18(%rbp), %rax
movl 0x64(%rax), %eax
movl %eax, -0x1bc(%rbp)
movl -0x64(%rbp), %eax
movl %eax, -0x1b8(%rbp)
movb $0x1, %al
cmpl $0x0, -0x80(%rbp)
movb %al, -0x1b1(%rbp)
jne 0x1085f
cmpl $0x0, -0x84(%rbp)
setne %al
movb %al, -0x1b1(%rbp)
movl -0x1b8(%rbp), %r9d
movl -0x1bc(%rbp), %r8d
movl -0x1c0(%rbp), %ecx
movq -0x1c8(%rbp), %rdx
movl -0x1cc(%rbp), %esi
movq -0x1d8(%rbp), %rdi
movb -0x1b1(%rbp), %al
andb $0x1, %al
movzbl %al, %r10d
movl -0x7c(%rbp), %eax
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x2be70
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1070d
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movl -0x34(%rbp), %esi
movq -0x128(%rbp), %rdx
callq 0x2bdd0
cmpl $0x2, -0x34(%rbp)
jne 0x10931
movq 0x18(%rbp), %rax
cmpl $0x0, 0xb8(%rax)
jl 0x10931
movq 0x18(%rbp), %rax
movq (%rax), %rax
andq $0x4, %rax
cmpq $0x0, %rax
je 0x10931
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movl -0x78(%rbp), %esi
movq 0x18(%rbp), %rax
movl 0xbc(%rax), %edx
movq 0x18(%rbp), %rax
movl 0x64(%rax), %ecx
shll %ecx
movq 0x18(%rbp), %rax
addl 0x68(%rax), %ecx
movq 0x18(%rbp), %rax
movl 0x64(%rax), %r8d
movq -0x40(%rbp), %r9
movq -0x50(%rbp), %r10
movq -0x58(%rbp), %rax
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x18a60
jmp 0x10933
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq -0xb0(%rbp), %rsi
callq 0x1a8c0
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq -0xa8(%rbp), %rsi
callq 0x1a8c0
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq -0x98(%rbp), %rsi
callq 0x1a8c0
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq -0xa0(%rbp), %rsi
callq 0x1a8c0
movq -0x30(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x109ee
cmpl $0x1, -0x34(%rbp)
jne 0x109ee
cmpl $0x0, -0x7c(%rbp)
je 0x109ee
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jge 0x109ec
movq 0x10(%rbp), %rax
movq (%rax), %rdi
movq -0x30(%rbp), %rsi
movq 0x18(%rbp), %rdx
movq -0x40(%rbp), %rax
movl (%rax), %ecx
movq -0x48(%rbp), %rax
movq (%rax), %r8
movq -0xc8(%rbp), %r9
movslq -0x5c(%rbp), %rax
imulq $0x50, %rax, %rax
addq %rax, %r9
xorl %eax, %eax
movl $0x0, (%rsp)
callq 0x2d480
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1099d
jmp 0x109ee
movq 0x10(%rbp), %rax
cmpq $0x0, (%rax)
je 0x10b09
movq 0x10(%rbp), %rax
movq (%rax), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x1ae90
leaq 0x4df22(%rip), %rax     # 0x5e938
movl (%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x10a58
movq 0x4d5d1(%rip), %rax     # 0x5dff8
movq (%rax), %rdi
movq 0x20(%rbp), %rdx
movl -0x68(%rbp), %ecx
movq -0xf0(%rbp), %r8
movq -0xd8(%rbp), %r9
movq -0xd0(%rbp), %rax
leaq 0x46960(%rip), %rsi     # 0x573ad
movq %rax, (%rsp)
movb $0x0, %al
callq 0x2250
movq -0xe0(%rbp), %rax
cmpq -0xd8(%rbp), %rax
jne 0x10a6a
jmp 0x10a89
leaq 0x46964(%rip), %rdi     # 0x573d5
leaq 0x4697b(%rip), %rsi     # 0x573f3
movl $0x172, %edx            # imm = 0x172
leaq 0x46975(%rip), %rcx     # 0x573f9
callq 0x21a0
cmpq $0x10000000, -0xd0(%rbp) # imm = 0x10000000
ja 0x10ab8
movq 0x18(%rbp), %rax
cmpq $0x0, 0xf8(%rax)
jle 0x10b07
movq -0xf0(%rbp), %rax
movq 0x18(%rbp), %rcx
cmpq 0xf8(%rcx), %rax
jbe 0x10b07
leaq 0x4de79(%rip), %rax     # 0x5e938
movl (%rax), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x10aec
movq 0x4d528(%rip), %rax     # 0x5dff8
movq (%rax), %rdi
movq 0x20(%rbp), %rcx
leaq 0x469a9(%rip), %rsi     # 0x57487
leaq 0x469d3(%rip), %rdx     # 0x574b8
movb $0x0, %al
callq 0x2250
movq 0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x1a840
callq 0x1a820
movq %rax, %rcx
movq 0x10(%rbp), %rax
movq %rcx, (%rax)
jmp 0x10b09
addq $0x1f8, %rsp            # imm = 0x1F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax,%rax)