// File: /workspace/github_c_makefile_star2_O0/lh3[P]fermi2/mag.c
// Function: mag_g_read
mag_t *mag_g_read(const char *fn, const magopt_t *opt)
{
	gzFile fp;
	kseq_t *seq;
	ku128_v nei;
	mag_t *g;
	int is_mod = 0;
	double t;

	t = cputime();
	fp = strcmp(fn, "-")? gzopen(fn, "r") : gzdopen(fileno(stdin), "r");
	if (fp == 0) return 0;
	kv_init(nei);
	g = calloc(1, sizeof(mag_t));
	seq = kseq_init(fp);
	while (kseq_read(seq) >= 0) {
		int i, j;
		char *q;
		magv_t *p;
		kv_pushp(magv_t, g->v, &p);
		memset(p, 0, sizeof(magv_t));
		p->len = -1;
		// parse ->k[2]
		p->k[0] = strtol(seq->name.s, &q, 10); ++q;
		p->k[1] = strtol(q, &q, 10);
		// parse ->nsr
		p->nsr = strtol(seq->comment.s, &q, 10); ++q;
		// parse ->nei[2]
		for (j = 0; j < 2; ++j) {
			int max, max2;
			max = max2 = 0; // largest and 2nd largest overlaps
			nei.n = 0;
			if (*q == '.') {
				q += 2; // skip "." and "\t" (and perhaps "\0", but does not matter)
				continue;
			}
			while (isdigit(*q) || *q == '-') { // parse the neighbors
				ku128_t *r;
				kv_pushp(ku128_t, nei, &r);
				r->x = strtol(q, &q, 10); ++q;
				r->y = strtol(q, &q, 10); ++q;
				g->min_ovlp = g->min_ovlp < r->y? g->min_ovlp : r->y;
				if (max < r->y) max2 = max, max = r->y;
				else if (max2 < r->y) max2 = r->y;
			}
			++q; // skip the tailing blank
			if (!(opt->flag & MAG_F_READ_ORI)) {
				double thres = (int)(max2 * opt->min_dratio0 + .499);
				for (i = 0; i < nei.n; ++i)
					if (nei.a[i].y < thres) is_mod = 1, nei.a[i].y = 0; // to be deleted in rmdup_128v()
				v128_rmdup(&nei);
				if (nei.n > opt->max_arc) {
					is_mod = 1;
					v128_cap(&nei, opt->max_arc);
				}
			}
			kv_copy(ku128_t, p->nei[j], nei);
		}
		// test if to cut a tip
		p->len = seq->seq.l;
		if (!(opt->flag & MAG_F_READ_ORI) && (p->nei[0].n == 0 || p->nei[1].n == 0) && p->len < opt->min_elen && p->nsr == 1) {
			free(p->nei[0].a); free(p->nei[1].a); // only ->nei[2] have been allocated so far
			--g->v.n;
			is_mod = 1;
			continue;
		}
		// set ->{seq,cov,max_len}
		p->max_len = p->len + 1;
		kroundup32(p->max_len);
		p->seq = malloc(p->max_len);
		for (i = 0; i < p->len; ++i) p->seq[i] = seq_nt6_table[(int)seq->seq.s[i]];
		p->cov = malloc(p->max_len);
		if (seq->qual.l == 0)
			for (i = 0; i < seq->seq.l; ++i)
				p->cov[i] = 34;
		else strcpy(p->cov, seq->qual.s);
	}
	// free and finalize the graph
	kseq_destroy(seq);
	gzclose(fp);
	free(nei.a);
	// finalize
	mag_g_build_hash(g);
	if (fm_verbose >= 3)
		fprintf(stderr, "[M::%s] read the graph and constructed the dictionary in %.3f sec\n", __func__, cputime() - t);
	if (is_mod && fm_verbose >= 3)
		fprintf(stderr, "[M::%s] the graph is modified during reading.\n", __func__);
	if (is_mod || !(opt->flag & MAG_F_NO_AMEND)) {
		t = cputime();
		mag_amend(g);
		fprintf(stderr, "[M::%s] amended the graph in %.3f sec.\n", __func__, cputime() - t);
	}
	g->rdist = mag_cal_rdist(g);
	if (opt->flag & MAG_F_READnMERGE) mag_g_merge(g, 1, opt->min_merge_len);
	return g;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl $0x0, -0x4c(%rbp)
callq 0x4cd0
movsd %xmm0, -0x58(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x12826(%rip), %rsi     # 0x2cb35
callq 0x21b0
cmpl $0x0, %eax
je 0x1a332
movq -0x10(%rbp), %rdi
leaq 0x12b77(%rip), %rsi     # 0x2ce9b
callq 0x22c0
movq %rax, -0x90(%rbp)
jmp 0x1a356
movq 0x18c8f(%rip), %rax     # 0x32fc8
movq (%rax), %rdi
callq 0x2210
movl %eax, %edi
leaq 0x12b51(%rip), %rsi     # 0x2ce9b
callq 0x20d0
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x1a375
movq $0x0, -0x8(%rbp)
jmp 0x1ad17
movq $0x0, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0x30(%rbp)
movl $0x1, %edi
movl $0x28, %esi
callq 0x21a0
movq %rax, -0x48(%rbp)
movq -0x20(%rbp), %rdi
callq 0x13c80
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x13d30
cmpl $0x0, %eax
jl 0x1abe0
jmp 0x1a3c1
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq -0x48(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x1a42f
movq -0x48(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x1a3f1
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0x98(%rbp)
jmp 0x1a3ff
movl $0x2, %eax
movq %rax, -0x98(%rbp)
jmp 0x1a3ff
movq -0x98(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x48(%rbp), %rax
imulq $0x68, 0x8(%rax), %rsi
callq 0x2270
movq %rax, %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rdx
movq (%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, (%rdx)
imulq $0x68, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
xorl %esi, %esi
movl $0x68, %edx
callq 0x2160
movq -0x70(%rbp), %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x68(%rbp), %rsi
movl $0xa, %edx
callq 0x21f0
movq %rax, %rcx
movq -0x70(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rdi
leaq -0x68(%rbp), %rsi
movl $0xa, %edx
callq 0x21f0
movq %rax, %rcx
movq -0x70(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rdi
leaq -0x68(%rbp), %rsi
movl $0xa, %edx
callq 0x21f0
movl %eax, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
movl $0x0, -0x60(%rbp)
cmpl $0x2, -0x60(%rbp)
jge 0x1aa06
movl $0x0, -0x78(%rbp)
movl $0x0, -0x74(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x68(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x1a526
movq -0x68(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x68(%rbp)
jmp 0x1a9f8
jmp 0x1a528
callq 0x2370
movq (%rax), %rax
movq -0x68(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %ecx
andl $0x800, %ecx            # imm = 0x800
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x99(%rbp)
jne 0x1a564
movq -0x68(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
sete %al
movb %al, -0x99(%rbp)
movb -0x99(%rbp), %al
testb $0x1, %al
jne 0x1a573
jmp 0x1a6b6
jmp 0x1a575
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jne 0x1a5c4
cmpq $0x0, -0x38(%rbp)
je 0x1a596
movq -0x38(%rbp), %rax
shlq %rax
movq %rax, -0xa8(%rbp)
jmp 0x1a5a4
movl $0x2, %eax
movq %rax, -0xa8(%rbp)
jmp 0x1a5a4
movq -0xa8(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
shlq $0x4, %rsi
callq 0x2270
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x40(%rbp)
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x80(%rbp)
movq -0x68(%rbp), %rdi
leaq -0x68(%rbp), %rsi
movl $0xa, %edx
callq 0x21f0
movq %rax, %rcx
movq -0x80(%rbp), %rax
movq %rcx, (%rax)
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rdi
leaq -0x68(%rbp), %rsi
movl $0xa, %edx
callq 0x21f0
movq %rax, %rcx
movq -0x80(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
movq -0x48(%rbp), %rax
movslq 0x1c(%rax), %rax
movq -0x80(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x1a656
movq -0x48(%rbp), %rax
movslq 0x1c(%rax), %rax
movq %rax, -0xb0(%rbp)
jmp 0x1a665
movq -0x80(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
movl %eax, %ecx
movq -0x48(%rbp), %rax
movl %ecx, 0x1c(%rax)
movslq -0x74(%rbp), %rax
movq -0x80(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x1a696
movl -0x74(%rbp), %eax
movl %eax, -0x78(%rbp)
movq -0x80(%rbp), %rax
movq 0x8(%rax), %rax
movl %eax, -0x74(%rbp)
jmp 0x1a6b1
movslq -0x78(%rbp), %rax
movq -0x80(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x1a6af
movq -0x80(%rbp), %rax
movq 0x8(%rax), %rax
movl %eax, -0x78(%rbp)
jmp 0x1a6b1
jmp 0x1a528
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x1a7b3
cvtsi2ssl -0x78(%rbp), %xmm0
movq -0x18(%rbp), %rax
mulss 0x2c(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x11d7a(%rip), %xmm1    # 0x2c468
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x88(%rbp)
movl $0x0, -0x5c(%rbp)
movslq -0x5c(%rbp), %rax
cmpq -0x40(%rbp), %rax
jae 0x1a780
movq -0x30(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
movq 0x8(%rax,%rcx), %xmm1
movaps 0x11d74(%rip), %xmm0    # 0x2c4a0
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movapd 0x11d78(%rip), %xmm0    # 0x2c4b0
subpd %xmm0, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movsd -0x88(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1a773
movl $0x1, -0x4c(%rbp)
movq -0x30(%rbp), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq $0x0, 0x8(%rax)
jmp 0x1a775
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1a709
leaq -0x40(%rbp), %rdi
callq 0x19700
movq -0x40(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq 0x4(%rcx), %rcx
cmpq %rcx, %rax
jbe 0x1a7b1
movl $0x1, -0x4c(%rbp)
movq -0x18(%rbp), %rax
movl 0x4(%rax), %esi
leaq -0x40(%rbp), %rdi
callq 0x1ad30
jmp 0x1a7b3
jmp 0x1a7b5
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
cmpq -0x40(%rbp), %rax
jae 0x1a9b4
jmp 0x1a7d8
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
cmpq -0x40(%rbp), %rax
jae 0x1a9b0
movq -0x40(%rbp), %rcx
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x8(%rax)
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rcx
shrq %rcx
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rcx
shrq $0x2, %rcx
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rcx
shrq $0x4, %rcx
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rcx
shrq $0x8, %rcx
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rcx
shrq $0x10, %rcx
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
orq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x8(%rax)
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rdi
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rsi
shlq $0x4, %rsi
callq 0x2270
movq %rax, %rcx
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movq %rcx, 0x10(%rax)
jmp 0x1a9b2
jmp 0x1a9b4
movq -0x40(%rbp), %rcx
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rdx
imulq $0x18, %rdx, %rdx
addq %rdx, %rax
movq %rcx, (%rax)
movq -0x70(%rbp), %rax
addq $0x20, %rax
movslq -0x60(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq 0x10(%rax), %rdi
movq -0x30(%rbp), %rsi
movq -0x40(%rbp), %rdx
shlq $0x4, %rdx
callq 0x2200
jmp 0x1a9f8
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x1a4e9
movq -0x28(%rbp), %rax
movl 0x20(%rax), %ecx
movq -0x70(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x1aa84
movq -0x70(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x1aa37
movq -0x70(%rbp), %rax
cmpq $0x0, 0x38(%rax)
jne 0x1aa84
movq -0x70(%rbp), %rax
movl (%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jge 0x1aa84
movq -0x70(%rbp), %rax
cmpl $0x1, 0x4(%rax)
jne 0x1aa84
movq -0x70(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x2040
movq -0x70(%rbp), %rax
movq 0x48(%rax), %rdi
callq 0x2040
movq -0x48(%rbp), %rax
movq (%rax), %rcx
addq $-0x1, %rcx
movq %rcx, (%rax)
movl $0x1, -0x4c(%rbp)
jmp 0x1a3ad
movq -0x70(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x70(%rbp), %rax
movl 0x8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x8(%rax)
movq -0x70(%rbp), %rax
movl 0x8(%rax), %ecx
shrl %ecx
movq -0x70(%rbp), %rax
orl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movq -0x70(%rbp), %rax
movl 0x8(%rax), %ecx
shrl $0x2, %ecx
movq -0x70(%rbp), %rax
orl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movq -0x70(%rbp), %rax
movl 0x8(%rax), %ecx
shrl $0x4, %ecx
movq -0x70(%rbp), %rax
orl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movq -0x70(%rbp), %rax
movl 0x8(%rax), %ecx
shrl $0x8, %ecx
movq -0x70(%rbp), %rax
orl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movq -0x70(%rbp), %rax
movl 0x8(%rax), %ecx
shrl $0x10, %ecx
movq -0x70(%rbp), %rax
orl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movq -0x70(%rbp), %rax
movl 0x8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x8(%rax)
movq -0x70(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %edi
callq 0x2230
movq %rax, %rcx
movq -0x70(%rbp), %rax
movq %rcx, 0x50(%rax)
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x70(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x1ab73
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0x5c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
movslq %eax, %rcx
leaq 0x1869a(%rip), %rax     # 0x331f0
movb (%rax,%rcx), %dl
movq -0x70(%rbp), %rax
movq 0x50(%rax), %rax
movslq -0x5c(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1ab31
movq -0x70(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %edi
callq 0x2230
movq %rax, %rcx
movq -0x70(%rbp), %rax
movq %rcx, 0x58(%rax)
movq -0x28(%rbp), %rax
cmpl $0x0, 0x30(%rax)
jne 0x1abc6
movl $0x0, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jae 0x1abc4
movq -0x70(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0x5c(%rbp), %rcx
movb $0x22, (%rax,%rcx)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1ab9d
jmp 0x1abdb
movq -0x70(%rbp), %rax
movq 0x58(%rax), %rdi
movq -0x28(%rbp), %rax
movq 0x38(%rax), %rsi
callq 0x2080
jmp 0x1a3ad
movq -0x28(%rbp), %rdi
callq 0x13cc0
movq -0x20(%rbp), %rdi
callq 0x2030
movq -0x30(%rbp), %rdi
callq 0x2040
movq -0x48(%rbp), %rdi
callq 0x192e0
leaq 0x186b5(%rip), %rax     # 0x332c0
cmpl $0x3, (%rax)
jl 0x1ac47
movq 0x183e1(%rip), %rax     # 0x32ff8
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
callq 0x4cd0
movq -0xb8(%rbp), %rdi
subsd -0x58(%rbp), %xmm0
leaq 0x123f9(%rip), %rsi     # 0x2d032
leaq 0x12435(%rip), %rdx     # 0x2d075
movb $0x1, %al
callq 0x21d0
cmpl $0x0, -0x4c(%rbp)
je 0x1ac78
leaq 0x1866c(%rip), %rax     # 0x332c0
cmpl $0x3, (%rax)
jl 0x1ac78
movq 0x18398(%rip), %rax     # 0x32ff8
movq (%rax), %rdi
leaq 0x12416(%rip), %rsi     # 0x2d080
leaq 0x12404(%rip), %rdx     # 0x2d075
movb $0x0, %al
callq 0x21d0
cmpl $0x0, -0x4c(%rbp)
jne 0x1ac8c
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
jne 0x1acd6
callq 0x4cd0
movsd %xmm0, -0x58(%rbp)
movq -0x48(%rbp), %rdi
callq 0x194a0
movq 0x18352(%rip), %rax     # 0x32ff8
movq (%rax), %rax
movq %rax, -0xc0(%rbp)
callq 0x4cd0
movq -0xc0(%rbp), %rdi
subsd -0x58(%rbp), %xmm0
leaq 0x123e7(%rip), %rsi     # 0x2d0af
leaq 0x123a6(%rip), %rdx     # 0x2d075
movb $0x1, %al
callq 0x21d0
movq -0x48(%rbp), %rdi
callq 0x1ade0
cvtsd2ss %xmm0, %xmm0
movq -0x48(%rbp), %rax
movss %xmm0, 0x18(%rax)
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x1ad0f
movq -0x48(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x20(%rax), %edx
movl $0x1, %esi
callq 0x1b0f0
movq -0x48(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)