// File: /workspace/github_c_makefile_star2_O0/lh3[P]minimap2/align.c
// Function: mm_align1
static void mm_align1(void *km, const mm_mapopt_t *opt, const mm_idx_t *mi, int qlen, uint8_t *qseq0[2], mm_reg1_t *r, mm_reg1_t *r2, int n_a, mm128_t *a, ksw_extz_t *ez, int splice_flag)
{
	int is_sr = !!(opt->flag & MM_F_SR), is_splice = !!(opt->flag & MM_F_SPLICE), is_sr_rna = (!!(opt->flag & MM_F_SR_RNA) && is_splice);
	int32_t rid = a[r->as].x<<1>>33, rev = a[r->as].x>>63, as1, cnt1;
	uint8_t *tseq, *qseq, *junc, *tseq2 = 0, *junc2 = 0;
	int32_t i, l, bw, bw_long, dropped = 0, ksw_flag = 0, rs0, re0, qs0, qe0;
	int32_t rs, re, qs, qe;
	int32_t rs1, qs1, re1, qe1;
	int8_t mat[25];

	if (is_sr) assert(!(mi->flag & MM_I_HPC)); // HPC won't work with SR because with HPC we can't easily tell if there is a gap

	r2->cnt = 0;
	if (r->cnt == 0) return;
	ksw_gen_ts_mat(5, mat, opt->a, opt->b, opt->transition, opt->sc_ambi);
	bw = (int)(opt->bw * 1.5 + 1.);
	bw_long = (int)(opt->bw_long * 1.5 + 1.);
	if (bw_long < bw) bw_long = bw;

	if (is_sr && !(mi->flag & MM_I_HPC)) {
		mm_max_stretch(r, a, &as1, &cnt1);
		rs = (int32_t)a[as1].x + 1 - (int32_t)(a[as1].y>>32&0xff);
		qs = (int32_t)a[as1].y + 1 - (int32_t)(a[as1].y>>32&0xff);
		re = (int32_t)a[as1+cnt1-1].x + 1;
		qe = (int32_t)a[as1+cnt1-1].y + 1;
	} else {
		if (!(opt->flag & MM_F_NO_END_FLT)) {
			if (is_splice)
				mm_fix_bad_ends_splice(km, opt, mi, r, mat, qlen, qseq0, a, &as1, &cnt1);
			else
				mm_fix_bad_ends(r, a, opt->bw, opt->min_chain_score * 2, &as1, &cnt1);
		} else as1 = r->as, cnt1 = r->cnt;
		mm_filter_bad_seeds(km, as1, cnt1, a, 10, 40, opt->max_gap>>1, 10);
		mm_filter_bad_seeds_alt(km, as1, cnt1, a, 30, opt->max_gap>>1);
		mm_adjust_minier(mi, qseq0, &a[as1], &rs, &qs);
		mm_adjust_minier(mi, qseq0, &a[as1 + cnt1 - 1], &re, &qe);
	}
	assert(cnt1 > 0);

	if (is_splice) {
		if (splice_flag & MM_F_SPLICE_FOR) ksw_flag |= rev? KSW_EZ_SPLICE_REV : KSW_EZ_SPLICE_FOR;
		if (splice_flag & MM_F_SPLICE_REV) ksw_flag |= rev? KSW_EZ_SPLICE_FOR : KSW_EZ_SPLICE_REV;
		if (opt->flag & MM_F_SPLICE_FLANK) ksw_flag |= KSW_EZ_SPLICE_FLANK;
		if (mi->spsc) ksw_flag |= KSW_EZ_SPLICE_SCORE;
	}

	/* Look for the start and end of regions to perform DP. This sounds easy
	 * but is in fact tricky. Excessively small regions lead to unnecessary
	 * clippings and lose alignable sequences. Excessively large regions
	 * occasionally lead to large overlaps between two chains and may cause
	 * loss of alignments in corner cases. */
	if (is_sr) {
		qs0 = 0, qe0 = qlen;
		l = qs;
		l += l * opt->a + opt->end_bonus > opt->q? (l * opt->a + opt->end_bonus - opt->q) / opt->e : 0;
		rs0 = rs - l > 0? rs - l : 0;
		l = qlen - qe;
		l += l * opt->a + opt->end_bonus > opt->q? (l * opt->a + opt->end_bonus - opt->q) / opt->e : 0;
		re0 = re + l < (int32_t)mi->seq[rid].len? re + l : mi->seq[rid].len;
	} else {
		// compute rs0 and qs0
		rs0 = (int32_t)a[r->as].x + 1 - (int32_t)(a[r->as].y>>32&0xff);
		qs0 = (int32_t)a[r->as].y + 1 - (int32_t)(a[r->as].y>>32&0xff);
		if (rs0 < 0) rs0 = 0; // this may happen when HPC is in use
		assert(qs0 >= 0); // this should never happen, or it is logic error
		rs1 = qs1 = 0;
		for (i = r->as - 1, l = 0; i >= 0 && a[i].x>>32 == a[r->as].x>>32; --i) { // inspect nearby seeds
			int32_t x = (int32_t)a[i].x + 1 - (int32_t)(a[i].y>>32&0xff);
			int32_t y = (int32_t)a[i].y + 1 - (int32_t)(a[i].y>>32&0xff);
			if (x < rs0 && y < qs0) {
				if (++l > opt->min_cnt) {
					l = rs0 - x > qs0 - y? rs0 - x : qs0 - y;
					rs1 = rs0 - l, qs1 = qs0 - l;
					if (rs1 < 0) rs1 = 0; // not strictly necessary; better have this guard for explicit
					break;
				}
			}
		}
		if (qs > 0 && rs > 0) {
			l = qs < opt->max_gap? qs : opt->max_gap;
			qs1 = qs1 > qs - l? qs1 : qs - l;
			qs0 = qs0 < qs1? qs0 : qs1; // at least include qs0
			l += l * opt->a > opt->q? (l * opt->a - opt->q) / opt->e : 0;
			l = l < opt->max_gap? l : opt->max_gap;
			l = l < rs? l : rs;
			rs1 = rs1 > rs - l? rs1 : rs - l;
			rs0 = rs0 < rs1? rs0 : rs1;
			rs0 = rs0 < rs? rs0 : rs;
		} else rs0 = rs, qs0 = qs;
		// compute re0 and qe0
		re0 = (int32_t)a[r->as + r->cnt - 1].x + 1;
		qe0 = (int32_t)a[r->as + r->cnt - 1].y + 1;
		re1 = mi->seq[rid].len, qe1 = qlen;
		for (i = r->as + r->cnt, l = 0; i < n_a && a[i].x>>32 == a[r->as].x>>32; ++i) { // inspect nearby seeds
			int32_t x = (int32_t)a[i].x + 1;
			int32_t y = (int32_t)a[i].y + 1;
			if (x > re0 && y > qe0) {
				if (++l > opt->min_cnt) {
					l = x - re0 > y - qe0? x - re0 : y - qe0;
					re1 = re0 + l, qe1 = qe0 + l;
					break;
				}
			}
		}
		if (qe < qlen && re < (int32_t)mi->seq[rid].len) {
			l = qlen - qe < opt->max_gap? qlen - qe : opt->max_gap;
			qe1 = qe1 < qe + l? qe1 : qe + l;
			qe0 = qe0 > qe1? qe0 : qe1; // at least include qe0
			l += l * opt->a > opt->q? (l * opt->a - opt->q) / opt->e : 0;
			l = l < opt->max_gap? l : opt->max_gap;
			l = l < (int32_t)mi->seq[rid].len - re? l : mi->seq[rid].len - re;
			re1 = re1 < re + l? re1 : re + l;
			re0 = re0 > re1? re0 : re1;
		} else re0 = re, qe0 = qe;
	}
	if (a[r->as].y & MM_SEED_SELF) {
		int max_ext = r->qs > r->rs? r->qs - r->rs : r->rs - r->qs;
		if (r->rs - rs0 > max_ext) rs0 = r->rs - max_ext;
		if (r->qs - qs0 > max_ext) qs0 = r->qs - max_ext;
		max_ext = r->qe > r->re? r->qe - r->re : r->re - r->qe;
		if (re0 - r->re > max_ext) re0 = r->re + max_ext;
		if (qe0 - r->qe > max_ext) qe0 = r->qe + max_ext;
	}

	assert(re0 > rs0);
	tseq = (uint8_t*)kmalloc(km, re0 - rs0);
	junc = (uint8_t*)kmalloc(km, re0 - rs0);

	if (is_sr_rna) {
		int32_t max_tlen2 = MM_MAX_QLEN_FLANK * 2 + opt->q2 * 2;
		tseq2 = Kmalloc(km, uint8_t, max_tlen2 * 2);
		junc2 = tseq2 + max_tlen2;
	}

	if (qs > 0 && rs > 0) { // left extension; probably the condition can be changed to "qs > qs0 && rs > rs0"
		if (opt->flag & MM_F_QSTRAND) {
			qseq = &qseq0[0][qs0];
			mm_idx_getseq2(mi, rev, rid, rs0, rs, tseq);
		} else {
			qseq = &qseq0[rev][qs0];
			mm_idx_getseq(mi, rid, rs0, rs, tseq);
		}
		mm_get_junc(mi, rid, rs0, rs, !!(ksw_flag&KSW_EZ_SPLICE_REV), junc);
		mm_seq_rev(qs - qs0, qseq);
		mm_seq_rev(rs - rs0, tseq);
		mm_seq_rev(rs - rs0, junc);
		mm_align_pair(km, opt, qs - qs0, qseq, rs - rs0, tseq, junc, mat, bw, opt->end_bonus, r->split_inv? opt->zdrop_inv : opt->zdrop, ksw_flag|KSW_EZ_EXTZ_ONLY|KSW_EZ_RIGHT|KSW_EZ_REV_CIGAR, ez);
		if (ez->n_cigar > 0) {
			mm_append_cigar(r, ez->n_cigar, ez->cigar);
			r->p->dp_score += ez->max;
		}
		rs1 = rs - (ez->reach_end? ez->mqe_t + 1 : ez->max_t + 1);
		qs1 = qs - (ez->reach_end? qs - qs0 : ez->max_q + 1);
		mm_seq_rev(qs - qs0, qseq);
	} else rs1 = rs, qs1 = qs;
	re1 = rs, qe1 = qs;
	assert(qs1 >= 0 && rs1 >= 0);

	for (i = is_sr? cnt1 - 1 : 1; i < cnt1; ++i) { // gap filling; for short genomic reads, fill from the first seed to the last
		if ((a[as1+i].y & (MM_SEED_IGNORE|MM_SEED_TANDEM)) && i != cnt1 - 1) continue;
		if (is_sr && !(mi->flag & MM_I_HPC)) {
			re = (int32_t)a[as1 + i].x + 1;
			qe = (int32_t)a[as1 + i].y + 1;
		} else mm_adjust_minier(mi, qseq0, &a[as1 + i], &re, &qe);
		re1 = re, qe1 = qe;
		if (i == cnt1 - 1 || (a[as1+i].y&MM_SEED_LONG_JOIN) || (qe - qs >= opt->min_ksw_len && re - rs >= opt->min_ksw_len)) { // gap filling
			int j, bw1 = bw_long, zdrop_code;
			if (a[as1+i].y & MM_SEED_LONG_JOIN)
				bw1 = qe - qs > re - rs? qe - qs : re - rs;
			// perform alignment
			if (opt->flag & MM_F_QSTRAND) {
				qseq = &qseq0[0][qs];
				mm_idx_getseq2(mi, rev, rid, rs, re, tseq);
			} else {
				qseq = &qseq0[rev][qs];
				mm_idx_getseq(mi, rid, rs, re, tseq);
			}
			mm_get_junc(mi, rid, rs, re, !!(ksw_flag&KSW_EZ_SPLICE_REV), junc);
			if (is_sr || (is_sr_rna && qe - qs == re - rs)) { // perform ungapped alignment
				int32_t max_gapped_score = (qe - qs - 2) * opt->a - 2 * (opt->q + opt->e);
				assert(qe - qs == re - rs);
				ksw_reset_extz(ez);
				for (j = 0, ez->score = 0; j < qe - qs; ++j) {
					if (qseq[j] >= 4 || tseq[j] >= 4) ez->score += opt->sc_ambi > 0? -opt->sc_ambi : opt->sc_ambi;
					else ez->score += qseq[j] == tseq[j]? opt->a : -opt->b;
				}
				if (ez->score > max_gapped_score)
					ez->cigar = ksw_push_cigar(km, &ez->n_cigar, &ez->m_cigar, ez->cigar, MM_CIGAR_MATCH, qe - qs);
				else
					mm_align_pair(km, opt, qe - qs, qseq, re - rs, tseq, junc, mat, bw1, -1, opt->zdrop, ksw_flag|KSW_EZ_APPROX_MAX, ez);
			} else { // perform normal gapped alignment
				int32_t skip_full = 0;
				if (is_sr_rna)
					skip_full = mm_align_sr_rna(km, opt, qe - qs, qseq, re - rs, tseq, junc, tseq2, junc2, mat, bw1, -1, opt->zdrop, ksw_flag|KSW_EZ_APPROX_MAX, ez);
				if (!skip_full)
					mm_align_pair(km, opt, qe - qs, qseq, re - rs, tseq, junc, mat, bw1, -1, opt->zdrop, ksw_flag|KSW_EZ_APPROX_MAX, ez); // first pass: with approximate Z-drop
			}
			// test Z-drop and inversion Z-drop
			if ((zdrop_code = mm_test_zdrop(km, opt, qseq, tseq, ez->n_cigar, ez->cigar, mat)) != 0)
				mm_align_pair(km, opt, qe - qs, qseq, re - rs, tseq, junc, mat, bw1, -1, zdrop_code == 2? opt->zdrop_inv : opt->zdrop, ksw_flag, ez); // second pass: lift approximate
			// update CIGAR
			if (ez->n_cigar > 0)
				mm_append_cigar(r, ez->n_cigar, ez->cigar);
			if (ez->zdropped) { // truncated by Z-drop; TODO: sometimes Z-drop kicks in because the next seed placement is wrong. This can be fixed in principle.
				if (!r->p) {
					assert(ez->n_cigar == 0);
					uint32_t capacity = sizeof(mm_extra_t)/4;
					kroundup32(capacity);
					r->p = (mm_extra_t*)calloc(capacity, 4);
					r->p->capacity = capacity;
				}
				for (j = i - 1; j >= 0; --j)
					if ((int32_t)a[as1 + j].x <= rs + ez->max_t)
						break;
				dropped = 1;
				if (j < 0) j = 0;
				r->p->dp_score += ez->max;
				re1 = rs + (ez->max_t + 1);
				qe1 = qs + (ez->max_q + 1);
				if (cnt1 - (j + 1) >= opt->min_cnt) {
					mm_split_reg(r, r2, as1 + j + 1 - r->as, qlen, a, !!(opt->flag&MM_F_QSTRAND));
					if (zdrop_code == 2) r2->split_inv = 1;
				}
				break;
			} else r->p->dp_score += ez->score;
			rs = re, qs = qe;
		}
	}

	if (!dropped && qe < qe0 && re < re0) { // right extension
		if (opt->flag & MM_F_QSTRAND) {
			qseq = &qseq0[0][qe];
			mm_idx_getseq2(mi, rev, rid, re, re0, tseq);
		} else {
			qseq = &qseq0[rev][qe];
			mm_idx_getseq(mi, rid, re, re0, tseq);
		}
		mm_get_junc(mi, rid, re, re0, !!(ksw_flag&KSW_EZ_SPLICE_REV), junc);
		mm_align_pair(km, opt, qe0 - qe, qseq, re0 - re, tseq, junc, mat, bw, opt->end_bonus, opt->zdrop, ksw_flag|KSW_EZ_EXTZ_ONLY, ez);
		if (ez->n_cigar > 0) {
			mm_append_cigar(r, ez->n_cigar, ez->cigar);
			r->p->dp_score += ez->max;
		}
		re1 = re + (ez->reach_end? ez->mqe_t + 1 : ez->max_t + 1);
		qe1 = qe + (ez->reach_end? qe0 - qe : ez->max_q + 1);
	}
	assert(qe1 <= qlen);

	r->rs = rs1, r->re = re1;
	if (!rev || (opt->flag & MM_F_QSTRAND)) r->qs = qs1, r->qe = qe1;
	else r->qs = qlen - qe1, r->qe = qlen - qs1;

	assert(re1 - rs1 <= re0 - rs0);
	if (r->p) {
		if (opt->flag & MM_F_QSTRAND) {
			mm_idx_getseq2(mi, r->rev, rid, rs1, re1, tseq);
			qseq = &qseq0[0][qs1];
		} else {
			mm_idx_getseq(mi, rid, rs1, re1, tseq);
			qseq = &qseq0[r->rev][qs1];
		}
		mm_update_extra(r, qseq, tseq, mat, opt->q, opt->e, opt->flag & MM_F_EQX, !(is_sr || is_sr_rna));
		if (rev && r->p->trans_strand)
			r->p->trans_strand ^= 3; // flip to the read strand
	}

	if (tseq2) kfree(km, tseq2);
	kfree(km, tseq);
	kfree(km, junc);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2c8, %rsp            # imm = 0x2C8
movl 0x30(%rbp), %eax
movq 0x28(%rbp), %rax
movq 0x20(%rbp), %rax
movl 0x18(%rbp), %eax
movq 0x10(%rbp), %rax
movq %rdi, -0x30(%rbp)
movq %rsi, -0x38(%rbp)
movq %rdx, -0x40(%rbp)
movl %ecx, -0x44(%rbp)
movq %r8, -0x50(%rbp)
movq %r9, -0x58(%rbp)
movq -0x38(%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, -0x5c(%rbp)
movq -0x38(%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, -0x60(%rbp)
movq -0x38(%rbp), %rax
movabsq $0x8000000000, %rcx     # imm = 0x8000000000
andq (%rax), %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x141(%rbp)
je 0x23499
cmpl $0x0, -0x60(%rbp)
setne %al
movb %al, -0x141(%rbp)
movb -0x141(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x64(%rbp)
movq 0x20(%rbp), %rax
movq -0x58(%rbp), %rcx
movslq 0x28(%rcx), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
shlq %rax
shrq $0x21, %rax
movl %eax, -0x68(%rbp)
movq 0x20(%rbp), %rax
movq -0x58(%rbp), %rcx
movslq 0x28(%rcx), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
shrq $0x3f, %rax
movl %eax, -0x6c(%rbp)
movq $0x0, -0x98(%rbp)
movq $0x0, -0xa0(%rbp)
movl $0x0, -0xb4(%rbp)
movl $0x0, -0xb8(%rbp)
cmpl $0x0, -0x5c(%rbp)
je 0x23546
movq -0x40(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x23525
jmp 0x23544
leaq 0x34c6c(%rip), %rdi     # 0x58198
leaq 0x34c7c(%rip), %rsi     # 0x581af
movl $0x28f, %edx            # imm = 0x28F
leaq 0x34c78(%rip), %rcx     # 0x581b7
callq 0x21a0
jmp 0x23546
movq 0x10(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x58(%rbp), %rax
cmpl $0x0, 0x4(%rax)
jne 0x23560
jmp 0x259ed
leaq -0x110(%rbp), %rsi
movq -0x38(%rbp), %rax
movl 0x64(%rax), %eax
movb %al, %dl
movq -0x38(%rbp), %rax
movl 0x68(%rax), %eax
movb %al, %cl
movq -0x38(%rbp), %rax
movl 0x7c(%rax), %eax
movb %al, %r8b
movq -0x38(%rbp), %rax
movl 0x80(%rax), %eax
movl $0x5, %edi
movsbl %dl, %edx
movsbl %cl, %ecx
movsbl %r8b, %r8d
movsbl %al, %r9d
callq 0x26110
movq -0x38(%rbp), %rax
cvtsi2sdl 0x14(%rax), %xmm0
movsd 0x34bda(%rip), %xmm1    # 0x58190
mulsd %xmm1, %xmm0
movsd 0x31a4e(%rip), %xmm1    # 0x55010
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0xac(%rbp)
movq -0x38(%rbp), %rax
cvtsi2sdl 0x18(%rax), %xmm0
movsd 0x34baf(%rip), %xmm1    # 0x58190
mulsd %xmm1, %xmm0
movsd 0x31a23(%rip), %xmm1    # 0x55010
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
cmpl -0xac(%rbp), %eax
jge 0x23615
movl -0xac(%rbp), %eax
movl %eax, -0xb0(%rbp)
cmpl $0x0, -0x5c(%rbp)
je 0x2370a
movq -0x40(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x2370a
movq -0x58(%rbp), %rdi
movq 0x20(%rbp), %rsi
leaq -0x70(%rbp), %rdx
leaq -0x74(%rbp), %rcx
callq 0x26230
movq 0x20(%rbp), %rax
movslq -0x70(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
addl $0x1, %eax
movq 0x20(%rbp), %rcx
movslq -0x70(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq 0x8(%rcx), %rcx
shrq $0x20, %rcx
andq $0xff, %rcx
subl %ecx, %eax
movl %eax, -0xcc(%rbp)
movq 0x20(%rbp), %rax
movslq -0x70(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
addl $0x1, %eax
movq 0x20(%rbp), %rcx
movslq -0x70(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq 0x8(%rcx), %rcx
shrq $0x20, %rcx
andq $0xff, %rcx
subl %ecx, %eax
movl %eax, -0xd4(%rbp)
movq 0x20(%rbp), %rax
movl -0x70(%rbp), %ecx
addl -0x74(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
addl $0x1, %eax
movl %eax, -0xd0(%rbp)
movq 0x20(%rbp), %rax
movl -0x70(%rbp), %ecx
addl -0x74(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
addl $0x1, %eax
movl %eax, -0xd8(%rbp)
jmp 0x23855
movq -0x38(%rbp), %rax
movq (%rax), %rax
andq $0x10000000, %rax       # imm = 0x10000000
cmpq $0x0, %rax
jne 0x2378f
cmpl $0x0, -0x60(%rbp)
je 0x23768
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq -0x58(%rbp), %rcx
leaq -0x110(%rbp), %r8
movl -0x44(%rbp), %r9d
movq -0x50(%rbp), %rbx
movq 0x20(%rbp), %r11
leaq -0x70(%rbp), %r10
leaq -0x74(%rbp), %rax
movq %rbx, (%rsp)
movq %r11, 0x8(%rsp)
movq %r10, 0x10(%rsp)
movq %rax, 0x18(%rsp)
callq 0x263f0
jmp 0x2378d
movq -0x58(%rbp), %rdi
movq 0x20(%rbp), %rsi
movq -0x38(%rbp), %rax
movl 0x14(%rax), %edx
movq -0x38(%rbp), %rax
movl 0x34(%rax), %ecx
shll %ecx
leaq -0x70(%rbp), %r8
leaq -0x74(%rbp), %r9
callq 0x26630
jmp 0x237a3
movq -0x58(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, -0x70(%rbp)
movq -0x58(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x74(%rbp)
movq -0x30(%rbp), %rdi
movl -0x70(%rbp), %esi
movl -0x74(%rbp), %edx
movq 0x20(%rbp), %rcx
movq -0x38(%rbp), %rax
movl 0x1c(%rax), %eax
sarl %eax
movl $0xa, %r8d
movl $0x28, %r9d
movl %eax, (%rsp)
movl $0xa, 0x8(%rsp)
callq 0x26a00
movq -0x30(%rbp), %rdi
movl -0x70(%rbp), %esi
movl -0x74(%rbp), %edx
movq 0x20(%rbp), %rcx
movq -0x38(%rbp), %rax
movl 0x1c(%rax), %r9d
sarl %r9d
movl $0x1e, %r8d
callq 0x26d70
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movq 0x20(%rbp), %rdx
movslq -0x70(%rbp), %rax
shlq $0x4, %rax
addq %rax, %rdx
leaq -0xcc(%rbp), %rcx
leaq -0xd4(%rbp), %r8
callq 0x27120
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movq 0x20(%rbp), %rdx
movl -0x70(%rbp), %eax
addl -0x74(%rbp), %eax
subl $0x1, %eax
cltq
shlq $0x4, %rax
addq %rax, %rdx
leaq -0xd0(%rbp), %rcx
leaq -0xd8(%rbp), %r8
callq 0x27120
cmpl $0x0, -0x74(%rbp)
jle 0x2385d
jmp 0x2387c
leaq 0x349df(%rip), %rdi     # 0x58243
leaq 0x34944(%rip), %rsi     # 0x581af
movl $0x2aa, %edx            # imm = 0x2AA
leaq 0x34940(%rip), %rcx     # 0x581b7
callq 0x21a0
cmpl $0x0, -0x60(%rbp)
je 0x23926
movslq 0x30(%rbp), %rax
andq $0x100, %rax            # imm = 0x100
cmpq $0x0, %rax
je 0x238b5
movl -0x6c(%rbp), %edx
movl $0x100, %eax            # imm = 0x100
movl $0x200, %ecx            # imm = 0x200
cmpl $0x0, %edx
cmovnel %ecx, %eax
orl -0xb8(%rbp), %eax
movl %eax, -0xb8(%rbp)
movslq 0x30(%rbp), %rax
andq $0x200, %rax            # imm = 0x200
cmpq $0x0, %rax
je 0x238e4
movl -0x6c(%rbp), %edx
movl $0x200, %eax            # imm = 0x200
movl $0x100, %ecx            # imm = 0x100
cmpl $0x0, %edx
cmovnel %ecx, %eax
orl -0xb8(%rbp), %eax
movl %eax, -0xb8(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rax
andq $0x40000, %rax          # imm = 0x40000
cmpq $0x0, %rax
je 0x23908
movl -0xb8(%rbp), %eax
orl $0x400, %eax            # imm = 0x400
movl %eax, -0xb8(%rbp)
movq -0x40(%rbp), %rax
cmpq $0x0, 0x40(%rax)
je 0x23924
movl -0xb8(%rbp), %eax
orl $0x1000, %eax           # imm = 0x1000
movl %eax, -0xb8(%rbp)
jmp 0x23926
cmpl $0x0, -0x5c(%rbp)
je 0x23ad6
movl $0x0, -0xc4(%rbp)
movl -0x44(%rbp), %eax
movl %eax, -0xc8(%rbp)
movl -0xd4(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
movq -0x38(%rbp), %rcx
imull 0x64(%rcx), %eax
movq -0x38(%rbp), %rcx
addl 0x98(%rcx), %eax
movq -0x38(%rbp), %rcx
cmpl 0x6c(%rcx), %eax
jle 0x2399f
movl -0xa8(%rbp), %eax
movq -0x38(%rbp), %rcx
imull 0x64(%rcx), %eax
movq -0x38(%rbp), %rcx
addl 0x98(%rcx), %eax
movq -0x38(%rbp), %rcx
subl 0x6c(%rcx), %eax
movq -0x38(%rbp), %rcx
cltd
idivl 0x70(%rcx)
movl %eax, -0x148(%rbp)
jmp 0x239a9
xorl %eax, %eax
movl %eax, -0x148(%rbp)
jmp 0x239a9
movl -0x148(%rbp), %eax
addl -0xa8(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xcc(%rbp), %eax
subl -0xa8(%rbp), %eax
cmpl $0x0, %eax
jle 0x239e0
movl -0xcc(%rbp), %eax
subl -0xa8(%rbp), %eax
movl %eax, -0x14c(%rbp)
jmp 0x239ea
xorl %eax, %eax
movl %eax, -0x14c(%rbp)
jmp 0x239ea
movl -0x14c(%rbp), %eax
movl %eax, -0xbc(%rbp)
movl -0x44(%rbp), %eax
subl -0xd8(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
movq -0x38(%rbp), %rcx
imull 0x64(%rcx), %eax
movq -0x38(%rbp), %rcx
addl 0x98(%rcx), %eax
movq -0x38(%rbp), %rcx
cmpl 0x6c(%rcx), %eax
jle 0x23a55
movl -0xa8(%rbp), %eax
movq -0x38(%rbp), %rcx
imull 0x64(%rcx), %eax
movq -0x38(%rbp), %rcx
addl 0x98(%rcx), %eax
movq -0x38(%rbp), %rcx
subl 0x6c(%rcx), %eax
movq -0x38(%rbp), %rcx
cltd
idivl 0x70(%rcx)
movl %eax, -0x150(%rbp)
jmp 0x23a5f
xorl %eax, %eax
movl %eax, -0x150(%rbp)
jmp 0x23a5f
movl -0x150(%rbp), %eax
addl -0xa8(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xd0(%rbp), %eax
addl -0xa8(%rbp), %eax
movq -0x40(%rbp), %rcx
movq 0x20(%rcx), %rcx
movslq -0x68(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x10(%rcx), %eax
jge 0x23aa9
movl -0xd0(%rbp), %eax
addl -0xa8(%rbp), %eax
movl %eax, -0x154(%rbp)
jmp 0x23ac5
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x68(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
movl %eax, -0x154(%rbp)
movl -0x154(%rbp), %eax
movl %eax, -0xc0(%rbp)
jmp 0x2443a
movq 0x20(%rbp), %rax
movq -0x58(%rbp), %rcx
movslq 0x28(%rcx), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
addl $0x1, %eax
movq 0x20(%rbp), %rcx
movq -0x58(%rbp), %rdx
movslq 0x28(%rdx), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq 0x8(%rcx), %rcx
shrq $0x20, %rcx
andq $0xff, %rcx
subl %ecx, %eax
movl %eax, -0xbc(%rbp)
movq 0x20(%rbp), %rax
movq -0x58(%rbp), %rcx
movslq 0x28(%rcx), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
addl $0x1, %eax
movq 0x20(%rbp), %rcx
movq -0x58(%rbp), %rdx
movslq 0x28(%rdx), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq 0x8(%rcx), %rcx
shrq $0x20, %rcx
andq $0xff, %rcx
subl %ecx, %eax
movl %eax, -0xc4(%rbp)
cmpl $0x0, -0xbc(%rbp)
jge 0x23b70
movl $0x0, -0xbc(%rbp)
cmpl $0x0, -0xc4(%rbp)
jl 0x23b7b
jmp 0x23b9a
leaq 0x346ca(%rip), %rdi     # 0x5824c
leaq 0x34626(%rip), %rsi     # 0x581af
movl $0x2c5, %edx            # imm = 0x2C5
leaq 0x34622(%rip), %rcx     # 0x581b7
callq 0x21a0
movl $0x0, -0xe0(%rbp)
movl $0x0, -0xdc(%rbp)
movq -0x58(%rbp), %rax
movl 0x28(%rax), %eax
subl $0x1, %eax
movl %eax, -0xa4(%rbp)
movl $0x0, -0xa8(%rbp)
xorl %eax, %eax
cmpl $0x0, -0xa4(%rbp)
movb %al, -0x155(%rbp)
jl 0x23c18
movq 0x20(%rbp), %rax
movslq -0xa4(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
shrq $0x20, %rax
movq 0x20(%rbp), %rcx
movq -0x58(%rbp), %rdx
movslq 0x28(%rdx), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
shrq $0x20, %rcx
cmpq %rcx, %rax
sete %al
movb %al, -0x155(%rbp)
movb -0x155(%rbp), %al
testb $0x1, %al
jne 0x23c27
jmp 0x23d89
movq 0x20(%rbp), %rax
movslq -0xa4(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
addl $0x1, %eax
movq 0x20(%rbp), %rcx
movslq -0xa4(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq 0x8(%rcx), %rcx
shrq $0x20, %rcx
andq $0xff, %rcx
subl %ecx, %eax
movl %eax, -0x114(%rbp)
movq 0x20(%rbp), %rax
movslq -0xa4(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
addl $0x1, %eax
movq 0x20(%rbp), %rcx
movslq -0xa4(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq 0x8(%rcx), %rcx
shrq $0x20, %rcx
andq $0xff, %rcx
subl %ecx, %eax
movl %eax, -0x118(%rbp)
movl -0x114(%rbp), %eax
cmpl -0xbc(%rbp), %eax
jge 0x23d73
movl -0x118(%rbp), %eax
cmpl -0xc4(%rbp), %eax
jge 0x23d73
movl -0xa8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa8(%rbp)
movq -0x38(%rbp), %rcx
cmpl 0x30(%rcx), %eax
jle 0x23d71
movl -0xbc(%rbp), %eax
subl -0x114(%rbp), %eax
movl -0xc4(%rbp), %ecx
subl -0x118(%rbp), %ecx
cmpl %ecx, %eax
jle 0x23d1a
movl -0xbc(%rbp), %eax
subl -0x114(%rbp), %eax
movl %eax, -0x15c(%rbp)
jmp 0x23d2c
movl -0xc4(%rbp), %eax
subl -0x118(%rbp), %eax
movl %eax, -0x15c(%rbp)
movl -0x15c(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xbc(%rbp), %eax
subl -0xa8(%rbp), %eax
movl %eax, -0xdc(%rbp)
movl -0xc4(%rbp), %eax
subl -0xa8(%rbp), %eax
movl %eax, -0xe0(%rbp)
cmpl $0x0, -0xdc(%rbp)
jge 0x23d6f
movl $0x0, -0xdc(%rbp)
jmp 0x23d89
jmp 0x23d73
jmp 0x23d75
movl -0xa4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0x23bc8
cmpl $0x0, -0xd4(%rbp)
jle 0x23fbd
cmpl $0x0, -0xcc(%rbp)
jle 0x23fbd
movl -0xd4(%rbp), %eax
movq -0x38(%rbp), %rcx
cmpl 0x1c(%rcx), %eax
jge 0x23dc0
movl -0xd4(%rbp), %eax
movl %eax, -0x160(%rbp)
jmp 0x23dcd
movq -0x38(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x160(%rbp)
movl -0x160(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xe0(%rbp), %eax
movl -0xd4(%rbp), %ecx
subl -0xa8(%rbp), %ecx
cmpl %ecx, %eax
jle 0x23dfd
movl -0xe0(%rbp), %eax
movl %eax, -0x164(%rbp)
jmp 0x23e0f
movl -0xd4(%rbp), %eax
subl -0xa8(%rbp), %eax
movl %eax, -0x164(%rbp)
movl -0x164(%rbp), %eax
movl %eax, -0xe0(%rbp)
movl -0xc4(%rbp), %eax
cmpl -0xe0(%rbp), %eax
jge 0x23e37
movl -0xc4(%rbp), %eax
movl %eax, -0x168(%rbp)
jmp 0x23e43
movl -0xe0(%rbp), %eax
movl %eax, -0x168(%rbp)
movl -0x168(%rbp), %eax
movl %eax, -0xc4(%rbp)
movl -0xa8(%rbp), %eax
movq -0x38(%rbp), %rcx
imull 0x64(%rcx), %eax
movq -0x38(%rbp), %rcx
cmpl 0x6c(%rcx), %eax
jle 0x23e8b
movl -0xa8(%rbp), %eax
movq -0x38(%rbp), %rcx
imull 0x64(%rcx), %eax
movq -0x38(%rbp), %rcx
subl 0x6c(%rcx), %eax
movq -0x38(%rbp), %rcx
cltd
idivl 0x70(%rcx)
movl %eax, -0x16c(%rbp)
jmp 0x23e95
xorl %eax, %eax
movl %eax, -0x16c(%rbp)
jmp 0x23e95
movl -0x16c(%rbp), %eax
addl -0xa8(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
movq -0x38(%rbp), %rcx
cmpl 0x1c(%rcx), %eax
jge 0x23ec4
movl -0xa8(%rbp), %eax
movl %eax, -0x170(%rbp)
jmp 0x23ed1
movq -0x38(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x170(%rbp)
movl -0x170(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
cmpl -0xcc(%rbp), %eax
jge 0x23ef9
movl -0xa8(%rbp), %eax
movl %eax, -0x174(%rbp)
jmp 0x23f05
movl -0xcc(%rbp), %eax
movl %eax, -0x174(%rbp)
movl -0x174(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xdc(%rbp), %eax
movl -0xcc(%rbp), %ecx
subl -0xa8(%rbp), %ecx
cmpl %ecx, %eax
jle 0x23f35
movl -0xdc(%rbp), %eax
movl %eax, -0x178(%rbp)
jmp 0x23f47
movl -0xcc(%rbp), %eax
subl -0xa8(%rbp), %eax
movl %eax, -0x178(%rbp)
movl -0x178(%rbp), %eax
movl %eax, -0xdc(%rbp)
movl -0xbc(%rbp), %eax
cmpl -0xdc(%rbp), %eax
jge 0x23f6f
movl -0xbc(%rbp), %eax
movl %eax, -0x17c(%rbp)
jmp 0x23f7b
movl -0xdc(%rbp), %eax
movl %eax, -0x17c(%rbp)
movl -0x17c(%rbp), %eax
movl %eax, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
cmpl -0xcc(%rbp), %eax
jge 0x23fa3
movl -0xbc(%rbp), %eax
movl %eax, -0x180(%rbp)
jmp 0x23faf
movl -0xcc(%rbp), %eax
movl %eax, -0x180(%rbp)
movl -0x180(%rbp), %eax
movl %eax, -0xbc(%rbp)
jmp 0x23fd5
movl -0xcc(%rbp), %eax
movl %eax, -0xbc(%rbp)
movl -0xd4(%rbp), %eax
movl %eax, -0xc4(%rbp)
movq 0x20(%rbp), %rax
movq -0x58(%rbp), %rcx
movl 0x28(%rcx), %ecx
movq -0x58(%rbp), %rdx
addl 0x4(%rdx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
movq 0x20(%rbp), %rax
movq -0x58(%rbp), %rcx
movl 0x28(%rcx), %ecx
movq -0x58(%rbp), %rdx
addl 0x4(%rdx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
addl $0x1, %eax
movl %eax, -0xc8(%rbp)
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x68(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
movl %eax, -0xe4(%rbp)
movl -0x44(%rbp), %eax
movl %eax, -0xe8(%rbp)
movq -0x58(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x58(%rbp), %rcx
addl 0x4(%rcx), %eax
movl %eax, -0xa4(%rbp)
movl $0x0, -0xa8(%rbp)
movl -0xa4(%rbp), %ecx
xorl %eax, %eax
cmpl 0x18(%rbp), %ecx
movb %al, -0x181(%rbp)
jge 0x240c1
movq 0x20(%rbp), %rax
movslq -0xa4(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
shrq $0x20, %rax
movq 0x20(%rbp), %rcx
movq -0x58(%rbp), %rdx
movslq 0x28(%rdx), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movq (%rcx), %rcx
shrq $0x20, %rcx
cmpq %rcx, %rax
sete %al
movb %al, -0x181(%rbp)
movb -0x181(%rbp), %al
testb $0x1, %al
jne 0x240d0
jmp 0x241d5
movq 0x20(%rbp), %rax
movslq -0xa4(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
addl $0x1, %eax
movl %eax, -0x11c(%rbp)
movq 0x20(%rbp), %rax
movslq -0xa4(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
addl $0x1, %eax
movl %eax, -0x120(%rbp)
movl -0x11c(%rbp), %eax
cmpl -0xc0(%rbp), %eax
jle 0x241bf
movl -0x120(%rbp), %eax
cmpl -0xc8(%rbp), %eax
jle 0x241bf
movl -0xa8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa8(%rbp)
movq -0x38(%rbp), %rcx
cmpl 0x30(%rcx), %eax
jle 0x241bd
movl -0x11c(%rbp), %eax
subl -0xc0(%rbp), %eax
movl -0x120(%rbp), %ecx
subl -0xc8(%rbp), %ecx
cmpl %ecx, %eax
jle 0x24179
movl -0x11c(%rbp), %eax
subl -0xc0(%rbp), %eax
movl %eax, -0x188(%rbp)
jmp 0x2418b
movl -0x120(%rbp), %eax
subl -0xc8(%rbp), %eax
movl %eax, -0x188(%rbp)
movl -0x188(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xc0(%rbp), %eax
addl -0xa8(%rbp), %eax
movl %eax, -0xe4(%rbp)
movl -0xc8(%rbp), %eax
addl -0xa8(%rbp), %eax
movl %eax, -0xe8(%rbp)
jmp 0x241d5
jmp 0x241bf
jmp 0x241c1
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0x2406f
movl -0xd8(%rbp), %eax
cmpl -0x44(%rbp), %eax
jge 0x24420
movl -0xd0(%rbp), %eax
movq -0x40(%rbp), %rcx
movq 0x20(%rcx), %rcx
movslq -0x68(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x10(%rcx), %eax
jge 0x24420
movl -0x44(%rbp), %eax
subl -0xd8(%rbp), %eax
movq -0x38(%rbp), %rcx
cmpl 0x1c(%rcx), %eax
jge 0x24229
movl -0x44(%rbp), %eax
subl -0xd8(%rbp), %eax
movl %eax, -0x18c(%rbp)
jmp 0x24236
movq -0x38(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x18c(%rbp)
movl -0x18c(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xe8(%rbp), %eax
movl -0xd8(%rbp), %ecx
addl -0xa8(%rbp), %ecx
cmpl %ecx, %eax
jge 0x24266
movl -0xe8(%rbp), %eax
movl %eax, -0x190(%rbp)
jmp 0x24278
movl -0xd8(%rbp), %eax
addl -0xa8(%rbp), %eax
movl %eax, -0x190(%rbp)
movl -0x190(%rbp), %eax
movl %eax, -0xe8(%rbp)
movl -0xc8(%rbp), %eax
cmpl -0xe8(%rbp), %eax
jle 0x242a0
movl -0xc8(%rbp), %eax
movl %eax, -0x194(%rbp)
jmp 0x242ac
movl -0xe8(%rbp), %eax
movl %eax, -0x194(%rbp)
movl -0x194(%rbp), %eax
movl %eax, -0xc8(%rbp)
movl -0xa8(%rbp), %eax
movq -0x38(%rbp), %rcx
imull 0x64(%rcx), %eax
movq -0x38(%rbp), %rcx
cmpl 0x6c(%rcx), %eax
jle 0x242f4
movl -0xa8(%rbp), %eax
movq -0x38(%rbp), %rcx
imull 0x64(%rcx), %eax
movq -0x38(%rbp), %rcx
subl 0x6c(%rcx), %eax
movq -0x38(%rbp), %rcx
cltd
idivl 0x70(%rcx)
movl %eax, -0x198(%rbp)
jmp 0x242fe
xorl %eax, %eax
movl %eax, -0x198(%rbp)
jmp 0x242fe
movl -0x198(%rbp), %eax
addl -0xa8(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
movq -0x38(%rbp), %rcx
cmpl 0x1c(%rcx), %eax
jge 0x2432d
movl -0xa8(%rbp), %eax
movl %eax, -0x19c(%rbp)
jmp 0x2433a
movq -0x38(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x19c(%rbp)
movl -0x19c(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
movq -0x40(%rbp), %rcx
movq 0x20(%rcx), %rcx
movslq -0x68(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rcx
movl 0x10(%rcx), %ecx
subl -0xd0(%rbp), %ecx
cmpl %ecx, %eax
jge 0x2437a
movl -0xa8(%rbp), %eax
movl %eax, -0x1a0(%rbp)
jmp 0x2439c
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x68(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x10(%rax), %eax
subl -0xd0(%rbp), %eax
movl %eax, -0x1a0(%rbp)
movl -0x1a0(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xe4(%rbp), %eax
movl -0xd0(%rbp), %ecx
addl -0xa8(%rbp), %ecx
cmpl %ecx, %eax
jge 0x243cc
movl -0xe4(%rbp), %eax
movl %eax, -0x1a4(%rbp)
jmp 0x243de
movl -0xd0(%rbp), %eax
addl -0xa8(%rbp), %eax
movl %eax, -0x1a4(%rbp)
movl -0x1a4(%rbp), %eax
movl %eax, -0xe4(%rbp)
movl -0xc0(%rbp), %eax
cmpl -0xe4(%rbp), %eax
jle 0x24406
movl -0xc0(%rbp), %eax
movl %eax, -0x1a8(%rbp)
jmp 0x24412
movl -0xe4(%rbp), %eax
movl %eax, -0x1a8(%rbp)
movl -0x1a8(%rbp), %eax
movl %eax, -0xc0(%rbp)
jmp 0x24438
movl -0xd0(%rbp), %eax
movl %eax, -0xc0(%rbp)
movl -0xd8(%rbp), %eax
movl %eax, -0xc8(%rbp)
jmp 0x2443a
movq 0x20(%rbp), %rcx
movq -0x58(%rbp), %rax
movslq 0x28(%rax), %rax
shlq $0x4, %rax
addq %rax, %rcx
movabsq $0x80000000000, %rax    # imm = 0x80000000000
andq 0x8(%rcx), %rax
cmpq $0x0, %rax
je 0x24593
movq -0x58(%rbp), %rax
movl 0x10(%rax), %eax
movq -0x58(%rbp), %rcx
cmpl 0x18(%rcx), %eax
jle 0x2448b
movq -0x58(%rbp), %rax
movl 0x10(%rax), %eax
movq -0x58(%rbp), %rcx
subl 0x18(%rcx), %eax
movl %eax, -0x1ac(%rbp)
jmp 0x2449f
movq -0x58(%rbp), %rax
movl 0x18(%rax), %eax
movq -0x58(%rbp), %rcx
subl 0x10(%rcx), %eax
movl %eax, -0x1ac(%rbp)
movl -0x1ac(%rbp), %eax
movl %eax, -0x124(%rbp)
movq -0x58(%rbp), %rax
movl 0x18(%rax), %eax
subl -0xbc(%rbp), %eax
cmpl -0x124(%rbp), %eax
jle 0x244d3
movq -0x58(%rbp), %rax
movl 0x18(%rax), %eax
subl -0x124(%rbp), %eax
movl %eax, -0xbc(%rbp)
movq -0x58(%rbp), %rax
movl 0x10(%rax), %eax
subl -0xc4(%rbp), %eax
cmpl -0x124(%rbp), %eax
jle 0x244fb
movq -0x58(%rbp), %rax
movl 0x10(%rax), %eax
subl -0x124(%rbp), %eax
movl %eax, -0xc4(%rbp)
movq -0x58(%rbp), %rax
movl 0x14(%rax), %eax
movq -0x58(%rbp), %rcx
cmpl 0x1c(%rcx), %eax
jle 0x24521
movq -0x58(%rbp), %rax
movl 0x14(%rax), %eax
movq -0x58(%rbp), %rcx
subl 0x1c(%rcx), %eax
movl %eax, -0x1b0(%rbp)
jmp 0x24535
movq -0x58(%rbp), %rax
movl 0x1c(%rax), %eax
movq -0x58(%rbp), %rcx
subl 0x14(%rcx), %eax
movl %eax, -0x1b0(%rbp)
movl -0x1b0(%rbp), %eax
movl %eax, -0x124(%rbp)
movl -0xc0(%rbp), %eax
movq -0x58(%rbp), %rcx
subl 0x1c(%rcx), %eax
cmpl -0x124(%rbp), %eax
jle 0x24569
movq -0x58(%rbp), %rax
movl 0x1c(%rax), %eax
addl -0x124(%rbp), %eax
movl %eax, -0xc0(%rbp)
movl -0xc8(%rbp), %eax
movq -0x58(%rbp), %rcx
subl 0x14(%rcx), %eax
cmpl -0x124(%rbp), %eax
jle 0x24591
movq -0x58(%rbp), %rax
movl 0x14(%rax), %eax
addl -0x124(%rbp), %eax
movl %eax, -0xc8(%rbp)
jmp 0x24593
movl -0xc0(%rbp), %eax
cmpl -0xbc(%rbp), %eax
jle 0x245a3
jmp 0x245c2
leaq 0x33cab(%rip), %rdi     # 0x58255
leaq 0x33bfe(%rip), %rsi     # 0x581af
movl $0x301, %edx            # imm = 0x301
leaq 0x33bfa(%rip), %rcx     # 0x581b7
callq 0x21a0
movq -0x30(%rbp), %rdi
movl -0xc0(%rbp), %eax
subl -0xbc(%rbp), %eax
movslq %eax, %rsi
callq 0x1aae0
movq %rax, -0x80(%rbp)
movq -0x30(%rbp), %rdi
movl -0xc0(%rbp), %eax
subl -0xbc(%rbp), %eax
movslq %eax, %rsi
callq 0x1aae0
movq %rax, -0x90(%rbp)
cmpl $0x0, -0x64(%rbp)
je 0x2464e
movq -0x38(%rbp), %rax
movl 0x74(%rax), %eax
shll %eax
addl $0xc8, %eax
movl %eax, -0x128(%rbp)
movq -0x30(%rbp), %rdi
movl -0x128(%rbp), %eax
shll %eax
movslq %eax, %rsi
shlq $0x0, %rsi
callq 0x1aae0
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
movslq -0x128(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
cmpl $0x0, -0xd4(%rbp)
jle 0x249ab
cmpl $0x0, -0xcc(%rbp)
jle 0x249ab
movq -0x38(%rbp), %rcx
movabsq $0x100000000, %rax      # imm = 0x100000000
andq (%rcx), %rax
cmpq $0x0, %rax
je 0x246b9
movq -0x50(%rbp), %rax
movq (%rax), %rax
movslq -0xc4(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x40(%rbp), %rdi
movl -0x6c(%rbp), %esi
movl -0x68(%rbp), %edx
movl -0xbc(%rbp), %ecx
movl -0xcc(%rbp), %r8d
movq -0x80(%rbp), %r9
callq 0x8d20
jmp 0x246f2
movq -0x50(%rbp), %rax
movslq -0x6c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0xc4(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x40(%rbp), %rdi
movl -0x68(%rbp), %esi
movl -0xbc(%rbp), %edx
movl -0xcc(%rbp), %ecx
movq -0x80(%rbp), %r8
callq 0x8ac0
movq -0x40(%rbp), %rdi
movl -0x68(%rbp), %esi
movl -0xbc(%rbp), %edx
movl -0xcc(%rbp), %ecx
movl -0xb8(%rbp), %eax
andl $0x200, %eax            # imm = 0x200
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %r8d
movq -0x90(%rbp), %r9
callq 0x27240
movl -0xd4(%rbp), %edi
subl -0xc4(%rbp), %edi
movq -0x88(%rbp), %rsi
callq 0x272d0
movl -0xcc(%rbp), %edi
subl -0xbc(%rbp), %edi
movq -0x80(%rbp), %rsi
callq 0x272d0
movl -0xcc(%rbp), %edi
subl -0xbc(%rbp), %edi
movq -0x90(%rbp), %rsi
callq 0x272d0
movq -0x30(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movl -0xd4(%rbp), %eax
subl -0xc4(%rbp), %eax
movl %eax, -0x1e4(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movl -0xcc(%rbp), %eax
subl -0xbc(%rbp), %eax
movl %eax, -0x1d4(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x1c8(%rbp)
leaq -0x110(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movl -0xac(%rbp), %eax
movl %eax, -0x1b8(%rbp)
movq -0x38(%rbp), %rax
movl 0x98(%rax), %eax
movl %eax, -0x1b4(%rbp)
movq -0x58(%rbp), %rax
movl 0x3c(%rax), %eax
shrl $0x18, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x24820
movq -0x38(%rbp), %rax
movl 0x94(%rax), %eax
movl %eax, -0x1fc(%rbp)
jmp 0x24830
movq -0x38(%rbp), %rax
movl 0x90(%rax), %eax
movl %eax, -0x1fc(%rbp)
movl -0x1b4(%rbp), %ebx
movl -0x1b8(%rbp), %r14d
movq -0x1c0(%rbp), %r15
movq -0x1c8(%rbp), %r12
movq -0x1d0(%rbp), %r9
movl -0x1d4(%rbp), %r8d
movq -0x1e0(%rbp), %rcx
movl -0x1e4(%rbp), %edx
movq -0x1f0(%rbp), %rsi
movq -0x1f8(%rbp), %rdi
movl -0x1fc(%rbp), %r11d
movl -0xb8(%rbp), %r10d
orl $0x40, %r10d
orl $0x2, %r10d
orl $0x80, %r10d
movq 0x28(%rbp), %rax
movq %r12, (%rsp)
movq %r15, 0x8(%rsp)
movl %r14d, 0x10(%rsp)
movl %ebx, 0x18(%rsp)
movl %r11d, 0x20(%rsp)
movl %r10d, 0x28(%rsp)
movq %rax, 0x30(%rsp)
callq 0x27340
movq 0x28(%rbp), %rax
cmpl $0x0, 0x24(%rax)
jle 0x248f7
movq -0x58(%rbp), %rdi
movq 0x28(%rbp), %rax
movl 0x24(%rax), %esi
movq 0x28(%rbp), %rax
movq 0x30(%rax), %rdx
callq 0x27880
movq 0x28(%rbp), %rax
movl (%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movq -0x58(%rbp), %rax
movq 0x48(%rax), %rax
addl 0x4(%rax), %ecx
movl %ecx, 0x4(%rax)
movl -0xcc(%rbp), %eax
movl %eax, -0x200(%rbp)
movq 0x28(%rbp), %rax
cmpl $0x0, 0x28(%rax)
je 0x2491f
movq 0x28(%rbp), %rax
movl 0x10(%rax), %eax
addl $0x1, %eax
movl %eax, -0x204(%rbp)
jmp 0x2492f
movq 0x28(%rbp), %rax
movl 0x8(%rax), %eax
addl $0x1, %eax
movl %eax, -0x204(%rbp)
movl -0x200(%rbp), %eax
movl -0x204(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0xdc(%rbp)
movl -0xd4(%rbp), %eax
movl %eax, -0x208(%rbp)
movq 0x28(%rbp), %rax
cmpl $0x0, 0x28(%rax)
je 0x2496d
movl -0xd4(%rbp), %eax
subl -0xc4(%rbp), %eax
movl %eax, -0x20c(%rbp)
jmp 0x2497d
movq 0x28(%rbp), %rax
movl 0x4(%rax), %eax
addl $0x1, %eax
movl %eax, -0x20c(%rbp)
movl -0x208(%rbp), %eax
movl -0x20c(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0xe0(%rbp)
movl -0xd4(%rbp), %edi
subl -0xc4(%rbp), %edi
movq -0x88(%rbp), %rsi
callq 0x272d0
jmp 0x249c3
movl -0xcc(%rbp), %eax
movl %eax, -0xdc(%rbp)
movl -0xd4(%rbp), %eax
movl %eax, -0xe0(%rbp)
movl -0xcc(%rbp), %eax
movl %eax, -0xe4(%rbp)
movl -0xd4(%rbp), %eax
movl %eax, -0xe8(%rbp)
cmpl $0x0, -0xe0(%rbp)
jl 0x249ef
cmpl $0x0, -0xdc(%rbp)
jl 0x249ef
jmp 0x24a0e
leaq 0x33869(%rip), %rdi     # 0x5825f
leaq 0x337b2(%rip), %rsi     # 0x581af
movl $0x321, %edx            # imm = 0x321
leaq 0x337ae(%rip), %rcx     # 0x581b7
callq 0x21a0
cmpl $0x0, -0x5c(%rbp)
je 0x24a22
movl -0x74(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x210(%rbp)
jmp 0x24a2f
movl $0x1, %eax
movl %eax, -0x210(%rbp)
jmp 0x24a2f
movl -0x210(%rbp), %eax
movl %eax, -0xa4(%rbp)
movl -0xa4(%rbp), %eax
cmpl -0x74(%rbp), %eax
jge 0x254c8
movq 0x20(%rbp), %rcx
movl -0x70(%rbp), %eax
addl -0xa4(%rbp), %eax
cltq
shlq $0x4, %rax
addq %rax, %rcx
movabsq $0x60000000000, %rax    # imm = 0x60000000000
andq 0x8(%rcx), %rax
cmpq $0x0, %rax
je 0x24a89
movl -0xa4(%rbp), %eax
movl -0x74(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x24a89
jmp 0x254b4
cmpl $0x0, -0x5c(%rbp)
je 0x24ae7
movq -0x40(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x24ae7
movq 0x20(%rbp), %rax
movl -0x70(%rbp), %ecx
addl -0xa4(%rbp), %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
addl $0x1, %eax
movl %eax, -0xd0(%rbp)
movq 0x20(%rbp), %rax
movl -0x70(%rbp), %ecx
addl -0xa4(%rbp), %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
addl $0x1, %eax
movl %eax, -0xd8(%rbp)
jmp 0x24b18
movq -0x40(%rbp), %rdi
movq -0x50(%rbp), %rsi
movq 0x20(%rbp), %rdx
movl -0x70(%rbp), %eax
addl -0xa4(%rbp), %eax
cltq
shlq $0x4, %rax
addq %rax, %rdx
leaq -0xd0(%rbp), %rcx
leaq -0xd8(%rbp), %r8
callq 0x27120
movl -0xd0(%rbp), %eax
movl %eax, -0xe4(%rbp)
movl -0xd8(%rbp), %eax
movl %eax, -0xe8(%rbp)
movl -0xa4(%rbp), %eax
movl -0x74(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x24ba2
movq 0x20(%rbp), %rcx
movl -0x70(%rbp), %eax
addl -0xa4(%rbp), %eax
cltq
shlq $0x4, %rax
addq %rax, %rcx
movabsq $0x10000000000, %rax    # imm = 0x10000000000
andq 0x8(%rcx), %rax
cmpq $0x0, %rax
jne 0x24ba2
movl -0xd8(%rbp), %eax
subl -0xd4(%rbp), %eax
movq -0x38(%rbp), %rcx
cmpl 0xa0(%rcx), %eax
jl 0x254b2
movl -0xd0(%rbp), %eax
subl -0xcc(%rbp), %eax
movq -0x38(%rbp), %rcx
cmpl 0xa0(%rcx), %eax
jl 0x254b2
movl -0xb0(%rbp), %eax
movl %eax, -0x130(%rbp)
movq 0x20(%rbp), %rcx
movl -0x70(%rbp), %eax
addl -0xa4(%rbp), %eax
cltq
shlq $0x4, %rax
addq %rax, %rcx
movabsq $0x10000000000, %rax    # imm = 0x10000000000
andq 0x8(%rcx), %rax
cmpq $0x0, %rax
je 0x24c26
movl -0xd8(%rbp), %eax
subl -0xd4(%rbp), %eax
movl -0xd0(%rbp), %ecx
subl -0xcc(%rbp), %ecx
cmpl %ecx, %eax
jle 0x24c08
movl -0xd8(%rbp), %eax
subl -0xd4(%rbp), %eax
movl %eax, -0x214(%rbp)
jmp 0x24c1a
movl -0xd0(%rbp), %eax
subl -0xcc(%rbp), %eax
movl %eax, -0x214(%rbp)
movl -0x214(%rbp), %eax
movl %eax, -0x130(%rbp)
movq -0x38(%rbp), %rcx
movabsq $0x100000000, %rax      # imm = 0x100000000
andq (%rcx), %rax
cmpq $0x0, %rax
je 0x24c77
movq -0x50(%rbp), %rax
movq (%rax), %rax
movslq -0xd4(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x40(%rbp), %rdi
movl -0x6c(%rbp), %esi
movl -0x68(%rbp), %edx
movl -0xcc(%rbp), %ecx
movl -0xd0(%rbp), %r8d
movq -0x80(%rbp), %r9
callq 0x8d20
jmp 0x24cb0
movq -0x50(%rbp), %rax
movslq -0x6c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0xd4(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x40(%rbp), %rdi
movl -0x68(%rbp), %esi
movl -0xcc(%rbp), %edx
movl -0xd0(%rbp), %ecx
movq -0x80(%rbp), %r8
callq 0x8ac0
movq -0x40(%rbp), %rdi
movl -0x68(%rbp), %esi
movl -0xcc(%rbp), %edx
movl -0xd0(%rbp), %ecx
movl -0xb8(%rbp), %eax
andl $0x200, %eax            # imm = 0x200
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %r8d
movq -0x90(%rbp), %r9
callq 0x27240
cmpl $0x0, -0x5c(%rbp)
jne 0x24d1a
cmpl $0x0, -0x64(%rbp)
je 0x24f6f
movl -0xd8(%rbp), %eax
subl -0xd4(%rbp), %eax
movl -0xd0(%rbp), %ecx
subl -0xcc(%rbp), %ecx
cmpl %ecx, %eax
jne 0x24f6f
movl -0xd8(%rbp), %eax
subl -0xd4(%rbp), %eax
subl $0x2, %eax
movq -0x38(%rbp), %rcx
imull 0x64(%rcx), %eax
movq -0x38(%rbp), %rcx
movl 0x6c(%rcx), %ecx
movq -0x38(%rbp), %rdx
addl 0x70(%rdx), %ecx
shll %ecx
subl %ecx, %eax
movl %eax, -0x138(%rbp)
movl -0xd8(%rbp), %eax
subl -0xd4(%rbp), %eax
movl -0xd0(%rbp), %ecx
subl -0xcc(%rbp), %ecx
cmpl %ecx, %eax
jne 0x24d67
jmp 0x24d86
leaq 0x33506(%rip), %rdi     # 0x58274
leaq 0x3343a(%rip), %rsi     # 0x581af
movl $0x339, %edx            # imm = 0x339
leaq 0x33436(%rip), %rcx     # 0x581b7
callq 0x21a0
movq 0x28(%rbp), %rdi
callq 0x27990
movl $0x0, -0x12c(%rbp)
movq 0x28(%rbp), %rax
movl $0x0, 0x1c(%rax)
movl -0x12c(%rbp), %eax
movl -0xd8(%rbp), %ecx
subl -0xd4(%rbp), %ecx
cmpl %ecx, %eax
jge 0x24e95
movq -0x88(%rbp), %rax
movslq -0x12c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x4, %eax
jge 0x24de9
movq -0x80(%rbp), %rax
movslq -0x12c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
cmpl $0x4, %eax
jl 0x24e2c
movq -0x38(%rbp), %rax
cmpl $0x0, 0x80(%rax)
jle 0x24e0a
movq -0x38(%rbp), %rcx
xorl %eax, %eax
subl 0x80(%rcx), %eax
movl %eax, -0x218(%rbp)
jmp 0x24e1a
movq -0x38(%rbp), %rax
movl 0x80(%rax), %eax
movl %eax, -0x218(%rbp)
movl -0x218(%rbp), %ecx
movq 0x28(%rbp), %rax
addl 0x1c(%rax), %ecx
movl %ecx, 0x1c(%rax)
jmp 0x24e7f
movq -0x88(%rbp), %rax
movslq -0x12c(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movq -0x80(%rbp), %rcx
movslq -0x12c(%rbp), %rdx
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
jne 0x24e60
movq -0x38(%rbp), %rax
movl 0x64(%rax), %eax
movl %eax, -0x21c(%rbp)
jmp 0x24e6f
movq -0x38(%rbp), %rcx
xorl %eax, %eax
subl 0x68(%rcx), %eax
movl %eax, -0x21c(%rbp)
movl -0x21c(%rbp), %ecx
movq 0x28(%rbp), %rax
addl 0x1c(%rax), %ecx
movl %ecx, 0x1c(%rax)
jmp 0x24e81
movl -0x12c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x12c(%rbp)
jmp 0x24da4
movq 0x28(%rbp), %rax
movl 0x1c(%rax), %eax
cmpl -0x138(%rbp), %eax
jle 0x24ee6
movq -0x30(%rbp), %rdi
movq 0x28(%rbp), %rsi
addq $0x24, %rsi
movq 0x28(%rbp), %rdx
addq $0x20, %rdx
movq 0x28(%rbp), %rax
movq 0x30(%rax), %rcx
movl -0xd8(%rbp), %r9d
subl -0xd4(%rbp), %r9d
xorl %r8d, %r8d
callq 0x27a20
movq %rax, %rcx
movq 0x28(%rbp), %rax
movq %rcx, 0x30(%rax)
jmp 0x24f6a
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movl -0xd8(%rbp), %edx
subl -0xd4(%rbp), %edx
movq -0x88(%rbp), %rcx
movl -0xd0(%rbp), %r8d
subl -0xcc(%rbp), %r8d
movq -0x80(%rbp), %r9
movq -0x90(%rbp), %r15
leaq -0x110(%rbp), %r14
movl -0x130(%rbp), %ebx
movq -0x38(%rbp), %rax
movl 0x90(%rax), %r11d
movl -0xb8(%rbp), %r10d
orl $0x8, %r10d
movq 0x28(%rbp), %rax
movq %r15, (%rsp)
movq %r14, 0x8(%rsp)
movl %ebx, 0x10(%rsp)
movl $0xffffffff, 0x18(%rsp) # imm = 0xFFFFFFFF
movl %r11d, 0x20(%rsp)
movl %r10d, 0x28(%rsp)
movq %rax, 0x30(%rsp)
callq 0x27340
jmp 0x250b8
movl $0x0, -0x13c(%rbp)
cmpl $0x0, -0x64(%rbp)
je 0x25025
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movl -0xd8(%rbp), %edx
subl -0xd4(%rbp), %edx
movq -0x88(%rbp), %rcx
movl -0xd0(%rbp), %r8d
subl -0xcc(%rbp), %r8d
movq -0x80(%rbp), %r9
movq -0x90(%rbp), %r13
movq -0x98(%rbp), %r12
movq -0xa0(%rbp), %r15
leaq -0x110(%rbp), %r14
movl -0x130(%rbp), %ebx
movq -0x38(%rbp), %rax
movl 0x90(%rax), %r11d
movl -0xb8(%rbp), %r10d
orl $0x8, %r10d
movq 0x28(%rbp), %rax
movq %r13, (%rsp)
movq %r12, 0x8(%rsp)
movq %r15, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movl %ebx, 0x20(%rsp)
movl $0xffffffff, 0x28(%rsp) # imm = 0xFFFFFFFF
movl %r11d, 0x30(%rsp)
movl %r10d, 0x38(%rsp)
movq %rax, 0x40(%rsp)
callq 0x27b10
movl %eax, -0x13c(%rbp)
cmpl $0x0, -0x13c(%rbp)
jne 0x250b6
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movl -0xd8(%rbp), %edx
subl -0xd4(%rbp), %edx
movq -0x88(%rbp), %rcx
movl -0xd0(%rbp), %r8d
subl -0xcc(%rbp), %r8d
movq -0x80(%rbp), %r9
movq -0x90(%rbp), %r15
leaq -0x110(%rbp), %r14
movl -0x130(%rbp), %ebx
movq -0x38(%rbp), %rax
movl 0x90(%rax), %r11d
movl -0xb8(%rbp), %r10d
orl $0x8, %r10d
movq 0x28(%rbp), %rax
movq %r15, (%rsp)
movq %r14, 0x8(%rsp)
movl %ebx, 0x10(%rsp)
movl $0xffffffff, 0x18(%rsp) # imm = 0xFFFFFFFF
movl %r11d, 0x20(%rsp)
movl %r10d, 0x28(%rsp)
movq %rax, 0x30(%rsp)
callq 0x27340
jmp 0x250b8
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x88(%rbp), %rdx
movq -0x80(%rbp), %rcx
movq 0x28(%rbp), %rax
movl 0x24(%rax), %r8d
movq 0x28(%rbp), %rax
movq 0x30(%rax), %r9
leaq -0x110(%rbp), %rax
movq %rax, (%rsp)
callq 0x27fb0
movl %eax, -0x134(%rbp)
cmpl $0x0, %eax
je 0x25218
movq -0x30(%rbp), %rax
movq %rax, -0x260(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x258(%rbp)
movl -0xd8(%rbp), %eax
subl -0xd4(%rbp), %eax
movl %eax, -0x24c(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x248(%rbp)
movl -0xd0(%rbp), %eax
subl -0xcc(%rbp), %eax
movl %eax, -0x23c(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x238(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x230(%rbp)
leaq -0x110(%rbp), %rax
movq %rax, -0x228(%rbp)
movl -0x130(%rbp), %eax
movl %eax, -0x220(%rbp)
cmpl $0x2, -0x134(%rbp)
jne 0x25190
movq -0x38(%rbp), %rax
movl 0x94(%rax), %eax
movl %eax, -0x264(%rbp)
jmp 0x251a0
movq -0x38(%rbp), %rax
movl 0x90(%rax), %eax
movl %eax, -0x264(%rbp)
movl -0x220(%rbp), %ebx
movq -0x228(%rbp), %r14
movq -0x230(%rbp), %r15
movq -0x238(%rbp), %r9
movl -0x23c(%rbp), %r8d
movq -0x248(%rbp), %rcx
movl -0x24c(%rbp), %edx
movq -0x258(%rbp), %rsi
movq -0x260(%rbp), %rdi
movl -0x264(%rbp), %r11d
movl -0xb8(%rbp), %r10d
movq 0x28(%rbp), %rax
movq %r15, (%rsp)
movq %r14, 0x8(%rsp)
movl %ebx, 0x10(%rsp)
movl $0xffffffff, 0x18(%rsp) # imm = 0xFFFFFFFF
movl %r11d, 0x20(%rsp)
movl %r10d, 0x28(%rsp)
movq %rax, 0x30(%rsp)
callq 0x27340
movq 0x28(%rbp), %rax
cmpl $0x0, 0x24(%rax)
jle 0x2523a
movq -0x58(%rbp), %rdi
movq 0x28(%rbp), %rax
movl 0x24(%rax), %esi
movq 0x28(%rbp), %rax
movq 0x30(%rax), %rdx
callq 0x27880
movq 0x28(%rbp), %rax
movl (%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0x25485
movq -0x58(%rbp), %rax
cmpq $0x0, 0x48(%rax)
jne 0x25343
movq 0x28(%rbp), %rax
cmpl $0x0, 0x24(%rax)
jne 0x25267
jmp 0x25286
leaq 0x33019(%rip), %rdi     # 0x58287
leaq 0x32f3a(%rip), %rsi     # 0x581af
movl $0x352, %edx            # imm = 0x352
leaq 0x32f36(%rip), %rcx     # 0x581b7
callq 0x21a0
movl $0x7, -0x140(%rbp)
movl -0x140(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x140(%rbp)
movl -0x140(%rbp), %eax
shrl %eax
orl -0x140(%rbp), %eax
movl %eax, -0x140(%rbp)
movl -0x140(%rbp), %eax
shrl $0x2, %eax
orl -0x140(%rbp), %eax
movl %eax, -0x140(%rbp)
movl -0x140(%rbp), %eax
shrl $0x4, %eax
orl -0x140(%rbp), %eax
movl %eax, -0x140(%rbp)
movl -0x140(%rbp), %eax
shrl $0x8, %eax
orl -0x140(%rbp), %eax
movl %eax, -0x140(%rbp)
movl -0x140(%rbp), %eax
shrl $0x10, %eax
orl -0x140(%rbp), %eax
movl %eax, -0x140(%rbp)
movl -0x140(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x140(%rbp)
movl -0x140(%rbp), %eax
movl %eax, %edi
movl $0x4, %esi
callq 0x2220
movq %rax, %rcx
movq -0x58(%rbp), %rax
movq %rcx, 0x48(%rax)
movl -0x140(%rbp), %ecx
movq -0x58(%rbp), %rax
movq 0x48(%rax), %rax
movl %ecx, (%rax)
movl -0xa4(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x12c(%rbp)
cmpl $0x0, -0x12c(%rbp)
jl 0x2539b
movq 0x20(%rbp), %rax
movl -0x70(%rbp), %ecx
addl -0x12c(%rbp), %ecx
movslq %ecx, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movl -0xcc(%rbp), %ecx
movq 0x28(%rbp), %rdx
addl 0x8(%rdx), %ecx
cmpl %ecx, %eax
jg 0x25388
jmp 0x2539b
jmp 0x2538a
movl -0x12c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x12c(%rbp)
jmp 0x25352
movl $0x1, -0xb4(%rbp)
cmpl $0x0, -0x12c(%rbp)
jge 0x253b8
movl $0x0, -0x12c(%rbp)
movq 0x28(%rbp), %rax
movl (%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movq -0x58(%rbp), %rax
movq 0x48(%rax), %rax
addl 0x4(%rax), %ecx
movl %ecx, 0x4(%rax)
movl -0xcc(%rbp), %eax
movq 0x28(%rbp), %rcx
movl 0x8(%rcx), %ecx
addl $0x1, %ecx
addl %ecx, %eax
movl %eax, -0xe4(%rbp)
movl -0xd4(%rbp), %eax
movq 0x28(%rbp), %rcx
movl 0x4(%rcx), %ecx
addl $0x1, %ecx
addl %ecx, %eax
movl %eax, -0xe8(%rbp)
movl -0x74(%rbp), %eax
movl -0x12c(%rbp), %ecx
addl $0x1, %ecx
subl %ecx, %eax
movq -0x38(%rbp), %rcx
cmpl 0x30(%rcx), %eax
jl 0x25483
movq -0x58(%rbp), %rdi
movq 0x10(%rbp), %rsi
movl -0x70(%rbp), %edx
addl -0x12c(%rbp), %edx
addl $0x1, %edx
movq -0x58(%rbp), %rax
subl 0x28(%rax), %edx
movl -0x44(%rbp), %ecx
movq 0x20(%rbp), %r8
movq -0x38(%rbp), %r9
movabsq $0x100000000, %rax      # imm = 0x100000000
andq (%r9), %rax
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %r9d
callq 0x2a210
cmpl $0x2, -0x134(%rbp)
jne 0x25481
movq 0x10(%rbp), %rax
movl 0x3c(%rax), %ecx
andl $0xfeffffff, %ecx       # imm = 0xFEFFFFFF
orl $0x1000000, %ecx        # imm = 0x1000000
movl %ecx, 0x3c(%rax)
jmp 0x25483
jmp 0x254c8
movq 0x28(%rbp), %rax
movl 0x1c(%rax), %ecx
movq -0x58(%rbp), %rax
movq 0x48(%rax), %rax
addl 0x4(%rax), %ecx
movl %ecx, 0x4(%rax)
movl -0xd0(%rbp), %eax
movl %eax, -0xcc(%rbp)
movl -0xd8(%rbp), %eax
movl %eax, -0xd4(%rbp)
jmp 0x254b4
movl -0xa4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0x24a3b
cmpl $0x0, -0xb4(%rbp)
jne 0x2571f
movl -0xd8(%rbp), %eax
cmpl -0xc8(%rbp), %eax
jge 0x2571f
movl -0xd0(%rbp), %eax
cmpl -0xc0(%rbp), %eax
jge 0x2571f
movq -0x38(%rbp), %rcx
movabsq $0x100000000, %rax      # imm = 0x100000000
andq (%rcx), %rax
cmpq $0x0, %rax
je 0x2554a
movq -0x50(%rbp), %rax
movq (%rax), %rax
movslq -0xd8(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x40(%rbp), %rdi
movl -0x6c(%rbp), %esi
movl -0x68(%rbp), %edx
movl -0xd0(%rbp), %ecx
movl -0xc0(%rbp), %r8d
movq -0x80(%rbp), %r9
callq 0x8d20
jmp 0x25583
movq -0x50(%rbp), %rax
movslq -0x6c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movslq -0xd8(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x40(%rbp), %rdi
movl -0x68(%rbp), %esi
movl -0xd0(%rbp), %edx
movl -0xc0(%rbp), %ecx
movq -0x80(%rbp), %r8
callq 0x8ac0
movq -0x40(%rbp), %rdi
movl -0x68(%rbp), %esi
movl -0xd0(%rbp), %edx
movl -0xc0(%rbp), %ecx
movl -0xb8(%rbp), %eax
andl $0x200, %eax            # imm = 0x200
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %r8d
movq -0x90(%rbp), %r9
callq 0x27240
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
movl -0xc8(%rbp), %edx
subl -0xd8(%rbp), %edx
movq -0x88(%rbp), %rcx
movl -0xc0(%rbp), %r8d
subl -0xd0(%rbp), %r8d
movq -0x80(%rbp), %r9
movq -0x90(%rbp), %r12
leaq -0x110(%rbp), %r15
movl -0xac(%rbp), %r14d
movq -0x38(%rbp), %rax
movl 0x98(%rax), %ebx
movq -0x38(%rbp), %rax
movl 0x90(%rax), %r11d
movl -0xb8(%rbp), %r10d
orl $0x40, %r10d
movq 0x28(%rbp), %rax
movq %r12, (%rsp)
movq %r15, 0x8(%rsp)
movl %r14d, 0x10(%rsp)
movl %ebx, 0x18(%rsp)
movl %r11d, 0x20(%rsp)
movl %r10d, 0x28(%rsp)
movq %rax, 0x30(%rsp)
callq 0x27340
movq 0x28(%rbp), %rax
cmpl $0x0, 0x24(%rax)
jle 0x25685
movq -0x58(%rbp), %rdi
movq 0x28(%rbp), %rax
movl 0x24(%rax), %esi
movq 0x28(%rbp), %rax
movq 0x30(%rax), %rdx
callq 0x27880
movq 0x28(%rbp), %rax
movl (%rax), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
movq -0x58(%rbp), %rax
movq 0x48(%rax), %rax
addl 0x4(%rax), %ecx
movl %ecx, 0x4(%rax)
movl -0xd0(%rbp), %eax
movl %eax, -0x268(%rbp)
movq 0x28(%rbp), %rax
cmpl $0x0, 0x28(%rax)
je 0x256ad
movq 0x28(%rbp), %rax
movl 0x10(%rax), %eax
addl $0x1, %eax
movl %eax, -0x26c(%rbp)
jmp 0x256bd
movq 0x28(%rbp), %rax
movl 0x8(%rax), %eax
addl $0x1, %eax
movl %eax, -0x26c(%rbp)
movl -0x268(%rbp), %eax
movl -0x26c(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0xe4(%rbp)
movl -0xd8(%rbp), %eax
movl %eax, -0x270(%rbp)
movq 0x28(%rbp), %rax
cmpl $0x0, 0x28(%rax)
je 0x256fb
movl -0xc8(%rbp), %eax
subl -0xd8(%rbp), %eax
movl %eax, -0x274(%rbp)
jmp 0x2570b
movq 0x28(%rbp), %rax
movl 0x4(%rax), %eax
addl $0x1, %eax
movl %eax, -0x274(%rbp)
movl -0x270(%rbp), %eax
movl -0x274(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0xe8(%rbp)
movl -0xe8(%rbp), %eax
cmpl -0x44(%rbp), %eax
jg 0x2572c
jmp 0x2574b
leaq 0x32b65(%rip), %rdi     # 0x58298
leaq 0x32a75(%rip), %rsi     # 0x581af
movl $0x37b, %edx            # imm = 0x37B
leaq 0x32a71(%rip), %rcx     # 0x581b7
callq 0x21a0
movl -0xdc(%rbp), %ecx
movq -0x58(%rbp), %rax
movl %ecx, 0x18(%rax)
movl -0xe4(%rbp), %ecx
movq -0x58(%rbp), %rax
movl %ecx, 0x1c(%rax)
cmpl $0x0, -0x6c(%rbp)
je 0x25782
movq -0x38(%rbp), %rcx
movabsq $0x100000000, %rax      # imm = 0x100000000
andq (%rcx), %rax
cmpq $0x0, %rax
je 0x2579e
movl -0xe0(%rbp), %ecx
movq -0x58(%rbp), %rax
movl %ecx, 0x10(%rax)
movl -0xe8(%rbp), %ecx
movq -0x58(%rbp), %rax
movl %ecx, 0x14(%rax)
jmp 0x257be
movl -0x44(%rbp), %ecx
subl -0xe8(%rbp), %ecx
movq -0x58(%rbp), %rax
movl %ecx, 0x10(%rax)
movl -0x44(%rbp), %ecx
subl -0xe0(%rbp), %ecx
movq -0x58(%rbp), %rax
movl %ecx, 0x14(%rax)
movl -0xe4(%rbp), %eax
subl -0xdc(%rbp), %eax
movl -0xc0(%rbp), %ecx
subl -0xbc(%rbp), %ecx
cmpl %ecx, %eax
jg 0x257dc
jmp 0x257fb
leaq 0x32ac1(%rip), %rdi     # 0x582a4
leaq 0x329c5(%rip), %rsi     # 0x581af
movl $0x381, %edx            # imm = 0x381
leaq 0x329c1(%rip), %rcx     # 0x581b7
callq 0x21a0
movq -0x58(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x259b6
movq -0x38(%rbp), %rcx
movabsq $0x100000000, %rax      # imm = 0x100000000
andq (%rcx), %rax
cmpq $0x0, %rax
je 0x25865
movq -0x40(%rbp), %rdi
movq -0x58(%rbp), %rax
movl 0x3c(%rax), %esi
shrl $0xa, %esi
andl $0x1, %esi
movl -0x68(%rbp), %edx
movl -0xdc(%rbp), %ecx
movl -0xe4(%rbp), %r8d
movq -0x80(%rbp), %r9
callq 0x8d20
movq -0x50(%rbp), %rax
movq (%rax), %rax
movslq -0xe0(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
jmp 0x258a9
movq -0x40(%rbp), %rdi
movl -0x68(%rbp), %esi
movl -0xdc(%rbp), %edx
movl -0xe4(%rbp), %ecx
movq -0x80(%rbp), %r8
callq 0x8ac0
movq -0x50(%rbp), %rax
movq -0x58(%rbp), %rcx
movl 0x3c(%rcx), %ecx
shrl $0xa, %ecx
andl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
movslq -0xe0(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x2a0(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x298(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x290(%rbp)
leaq -0x110(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x38(%rbp), %rax
movl 0x6c(%rax), %eax
movb %al, -0x27e(%rbp)
movq -0x38(%rbp), %rax
movl 0x70(%rax), %eax
movb %al, -0x27d(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rax
andq $0x4000000, %rax        # imm = 0x4000000
movl %eax, -0x27c(%rbp)
movb $0x1, %al
cmpl $0x0, -0x5c(%rbp)
movb %al, -0x275(%rbp)
jne 0x25923
cmpl $0x0, -0x64(%rbp)
setne %al
movb %al, -0x275(%rbp)
movl -0x27c(%rbp), %r10d
movb -0x27d(%rbp), %r9b
movb -0x27e(%rbp), %r8b
movq -0x288(%rbp), %rcx
movq -0x290(%rbp), %rdx
movq -0x298(%rbp), %rsi
movq -0x2a0(%rbp), %rdi
movb -0x275(%rbp), %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movsbl %r8b, %r8d
movsbl %r9b, %r9d
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x28380
cmpl $0x0, -0x6c(%rbp)
je 0x259b4
movq -0x58(%rbp), %rax
movq 0x48(%rax), %rax
movl 0x14(%rax), %eax
shrl $0x1e, %eax
cmpl $0x0, %eax
je 0x259b4
movq -0x58(%rbp), %rax
movq 0x48(%rax), %rax
movl 0x14(%rax), %edx
shrl $0x1e, %edx
xorl $0x3, %edx
movl 0x14(%rax), %ecx
andl $0x3, %edx
shll $0x1e, %edx
andl $0x3fffffff, %ecx       # imm = 0x3FFFFFFF
orl %edx, %ecx
movl %ecx, 0x14(%rax)
jmp 0x259b6
cmpq $0x0, -0x98(%rbp)
je 0x259d0
movq -0x30(%rbp), %rdi
movq -0x98(%rbp), %rsi
callq 0x1a8c0
movq -0x30(%rbp), %rdi
movq -0x80(%rbp), %rsi
callq 0x1a8c0
movq -0x30(%rbp), %rdi
movq -0x90(%rbp), %rsi
callq 0x1a8c0
addq $0x2c8, %rsp            # imm = 0x2C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop