// File: chhylp123[P]hifiasm/inter.cpp
// Function: rm_dup_aln(u_trans_t*, unsigned long, asg64_v*, double)
void rm_dup_aln(u_trans_t *u, uint64_t u_n, asg64_v *b, double dup_cut)
{
	if(u_n <= 0) return;
	uint64_t k, m, s, e, dp, old_dp, z, zs, ze, l, os, oe, ovq, cut; u_trans_t t;
	b->n = 0;
	for (k = 0; k < u_n; k++) {
		s = u[k].qs; e = u[k].qe; u[k].occ = 0;
		kv_push(uint64_t, *b, (s<<1)); 
		kv_push(uint64_t, *b, (e<<1|1));
	}
	radix_sort_gfa64(b->a, b->a + b->n);

	for (k = dp = old_dp = m = 0, s = e = (uint64_t)-1; k < b->n; k++) {
		old_dp = dp;
        //if a[j] is qe
        if (b->a[k]&1) --dp;
        else ++dp;

		if (old_dp < 2 && dp >= 2) {///old_dp < dp, b.a[k] is qs
            s = b->a[k]>>1;
        } else if (old_dp >= 2 && dp < 2) {///old_dp > min_dp, b.a[k] is qe
            e = b->a[k]>>1;
			if(e > s) b->a[m++] = (s<<32)|e;///non-unique region
        }
	}

	b->n = m;
	for (k = m = 0; k < u_n; k++) {
		l = 0; s = u[k].qs; e = u[k].qe; 
		cut = (e - s)*dup_cut; 
		if(!(u[k].f)) {//unreliable
			for (z = 0; z < b->n; z++) {
				zs = (b->a[z]>>32); ze = ((uint32_t)b->a[z]);
				if(zs >= e) break;
				if(ze <= s) continue;
				os = MAX(s, zs); oe = MIN(e, ze);
				ovq = ((oe > os)? (oe - os):0);
				l += ovq;
				if(l > cut) break;
			}
		}
		if(((l <= 0) || (l <= cut)) && (l < (e - s))) {
			if(m != k) { t = u[m]; u[m] = u[k]; u[k] = t;}
			m++;
		}
	}

	for (k = m; k < u_n; k++) u[k].del = 1;///delete 

	for (k = b->n = 0; k < m; k++) {
		dp = u[k].nw; dp <<= 32; dp |= k; kv_push(uint64_t, *b, dp);
	}
	radix_sort_gfa64(b->a, b->a + b->n); old_dp = 0;
	for (k = 0; k < b->n; k++) {
		assert(!u[((uint32_t)b->a[k])].del);
		for (z = 0; z < b->n; z++) {
			if(k == z) continue;
			if(u[((uint32_t)b->a[z])].del) continue;
			if(u[((uint32_t)b->a[k])].qs >= u[((uint32_t)b->a[z])].qs && u[((uint32_t)b->a[k])].qe <= u[((uint32_t)b->a[z])].qe) break;
		}
		if(z < b->n) {
			u[((uint32_t)b->a[k])].del = 1; old_dp++;
		}
	}

	if(old_dp) {
		for (k = m = 0; k < u_n; k++) {
			if(u[k].del) continue;
			if(m != k) { t = u[m]; u[m] = u[k]; u[k] = t;}
			m++;
		}
	}


	///for debug is there is any contained overlaps in u[0, m)
	for (k = 0; k < m; k++) {
		for (z = 0; z < m; z++) {
			if(k == z) continue;
			if(u[k].qs >= u[z].qs && u[k].qe <= u[z].qe) break;
		}
		assert(z >= m);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movsd %xmm0, -0x20(%rbp)
cmpq $0x0, -0x10(%rbp)
ja 0x2e4068
jmp 0x2e4aa0
movq -0x18(%rbp), %rax
movq $0x0, (%rax)
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x2e4204
movq -0x8(%rbp), %rax
imulq $0x30, -0x28(%rbp), %rcx
addq %rcx, %rax
movl (%rax), %eax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
imulq $0x30, -0x28(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rax
imulq $0x30, -0x28(%rbp), %rcx
addq %rcx, %rax
movl $0x0, 0x18(%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x2e4132
movq -0x18(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2e40f1
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0xc8(%rbp)
jmp 0x2e40ff
movl $0x2, %eax
movq %rax, -0xc8(%rbp)
jmp 0x2e40ff
movq -0xc8(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x38(%rbp), %rdx
shlq %rdx
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x2e4158
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x2e41c9
movq -0x18(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2e4188
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0xd0(%rbp)
jmp 0x2e4196
movl $0x2, %eax
movq %rax, -0xd0(%rbp)
jmp 0x2e4196
movq -0xd0(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x40(%rbp), %rdx
shlq %rdx
orq $0x1, %rdx
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x2e41f3
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x2e407b
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x18(%rbp), %rax
movq (%rax), %rax
shlq $0x3, %rax
addq %rax, %rsi
callq 0x27a9b0
movq $0x0, -0x30(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x0, -0x28(%rbp)
movq $-0x1, -0x40(%rbp)
movq $-0x1, -0x38(%rbp)
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x2e4338
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x2e4298
movq -0x48(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x2e42a4
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
cmpq $0x2, -0x50(%rbp)
jae 0x2e42cb
cmpq $0x2, -0x48(%rbp)
jb 0x2e42cb
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq %rax
movq %rax, -0x38(%rbp)
jmp 0x2e4325
cmpq $0x2, -0x50(%rbp)
jb 0x2e4323
cmpq $0x2, -0x48(%rbp)
jae 0x2e4323
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jbe 0x2e4321
movq -0x38(%rbp), %rdx
shlq $0x20, %rdx
orq -0x40(%rbp), %rdx
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, -0x30(%rbp)
movq %rdx, (%rax,%rcx,8)
jmp 0x2e4323
jmp 0x2e4325
jmp 0x2e4327
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x2e4257
movq -0x30(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x2e45ed
movq $0x0, -0x70(%rbp)
movq -0x8(%rbp), %rax
movq -0x28(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x4, %rcx
movl (%rax,%rcx), %eax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq -0x28(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x4, %rcx
movl 0x4(%rax,%rcx), %eax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq -0x38(%rbp), %rcx
subq %rcx, %rax
movq %rax, %xmm0
movaps 0x9dc61(%rip), %xmm1    # 0x382010
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x9dc65(%rip), %xmm1    # 0x382020
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd -0x20(%rbp), %xmm1
mulsd %xmm1, %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0x9dc0e(%rip), %xmm1    # 0x381ff8
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x90(%rbp)
movq -0x8(%rbp), %rax
imulq $0x30, -0x28(%rbp), %rcx
addq %rcx, %rax
movb 0x28(%rax), %al
andb $0x3f, %al
cmpb $0x0, %al
jne 0x2e453f
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x2e453d
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl %eax, %eax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rax
cmpq -0x40(%rbp), %rax
jb 0x2e446f
jmp 0x2e453d
movq -0x68(%rbp), %rax
cmpq -0x38(%rbp), %rax
ja 0x2e447e
jmp 0x2e452c
movq -0x38(%rbp), %rax
cmpq -0x60(%rbp), %rax
jb 0x2e4495
movq -0x38(%rbp), %rax
movq %rax, -0xd8(%rbp)
jmp 0x2e44a0
movq -0x60(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x68(%rbp), %rax
ja 0x2e44c2
movq -0x40(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x2e44cd
movq -0x68(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
cmpq -0x78(%rbp), %rax
jbe 0x2e44f3
movq -0x80(%rbp), %rax
subq -0x78(%rbp), %rax
movq %rax, -0xe8(%rbp)
jmp 0x2e44fe
xorl %eax, %eax
movq %rax, -0xe8(%rbp)
jmp 0x2e44fe
movq -0xe8(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
addq -0x70(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
cmpq -0x90(%rbp), %rax
jbe 0x2e452a
jmp 0x2e453d
jmp 0x2e452c
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x2e4421
jmp 0x2e453f
cmpq $0x0, -0x70(%rbp)
jbe 0x2e4557
movq -0x70(%rbp), %rax
cmpq -0x90(%rbp), %rax
ja 0x2e45da
movq -0x70(%rbp), %rax
movq -0x40(%rbp), %rcx
subq -0x38(%rbp), %rcx
cmpq %rcx, %rax
jae 0x2e45da
movq -0x30(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x2e45ce
movq -0x8(%rbp), %rsi
imulq $0x30, -0x30(%rbp), %rax
addq %rax, %rsi
leaq -0xc0(%rbp), %rdi
movl $0x30, %edx
callq 0x2180
movq -0x8(%rbp), %rsi
imulq $0x30, -0x28(%rbp), %rax
addq %rax, %rsi
movq -0x8(%rbp), %rdi
imulq $0x30, -0x30(%rbp), %rax
addq %rax, %rdi
movl $0x30, %edx
callq 0x2180
movq -0x8(%rbp), %rdi
imulq $0x30, -0x28(%rbp), %rax
addq %rax, %rdi
leaq -0xc0(%rbp), %rsi
movl $0x30, %edx
callq 0x2180
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x2e45dc
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x2e4353
movq -0x30(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x2e4625
movq -0x8(%rbp), %rax
imulq $0x30, -0x28(%rbp), %rcx
addq %rcx, %rax
movb 0x28(%rax), %cl
andb $0x7f, %cl
orb $-0x80, %cl
movb %cl, 0x28(%rax)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x2e45f5
movq -0x18(%rbp), %rax
movq $0x0, (%rax)
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0x2e4743
movq -0x8(%rbp), %rax
movq -0x28(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x4, %rcx
movsd 0x20(%rax,%rcx), %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0x9d985(%rip), %xmm1    # 0x381ff8
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
shlq $0x20, %rax
movq %rax, -0x48(%rbp)
movq -0x28(%rbp), %rax
orq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x2e470f
movq -0x18(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2e46ce
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
shlq %rax
movq %rax, -0xf0(%rbp)
jmp 0x2e46dc
movl $0x2, %eax
movq %rax, -0xf0(%rbp)
jmp 0x2e46dc
movq -0xf0(%rbp), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rsi
shlq $0x3, %rsi
callq 0x2360
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x48(%rbp), %rdx
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rsi
movq (%rsi), %rcx
movq %rcx, %rdi
addq $0x1, %rdi
movq %rdi, (%rsi)
movq %rdx, (%rax,%rcx,8)
jmp 0x2e4732
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x2e4638
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x18(%rbp), %rax
movq (%rax), %rax
shlq $0x3, %rax
addq %rax, %rsi
callq 0x27a9b0
movq $0x0, -0x50(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x2e4918
movq -0x8(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x28(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movb 0x28(%rax), %al
shrb $0x7, %al
cmpb $0x0, %al
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2e47b7
jmp 0x2e47b9
jmp 0x2e47d8
leaq 0xafa7d(%rip), %rdi     # 0x39423d
leaq 0xac068(%rip), %rsi     # 0x39082f
movl $0x4481, %edx           # imm = 0x4481
leaq 0xafa86(%rip), %rcx     # 0x394259
callq 0x2130
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x2e48c3
movq -0x28(%rbp), %rax
cmpq -0x58(%rbp), %rax
jne 0x2e4800
jmp 0x2e48b2
movq -0x8(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x58(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movb 0x28(%rax), %al
shrb $0x7, %al
cmpb $0x0, %al
je 0x2e482c
jmp 0x2e48b2
movq -0x8(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x28(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
movq -0x8(%rbp), %rcx
movq -0x18(%rbp), %rdx
movq 0x10(%rdx), %rdx
movq -0x58(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movl %edx, %edx
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
cmpl (%rcx), %eax
jb 0x2e48b0
movq -0x8(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x28(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movq -0x8(%rbp), %rcx
movq -0x18(%rbp), %rdx
movq 0x10(%rdx), %rdx
movq -0x58(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movl %edx, %edx
imulq $0x30, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
ja 0x2e48b0
jmp 0x2e48c3
jmp 0x2e48b2
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x2e47e0
movq -0x58(%rbp), %rax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x2e4905
movq -0x8(%rbp), %rax
movq -0x18(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x28(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movl %ecx, %ecx
imulq $0x30, %rcx, %rcx
addq %rcx, %rax
movb 0x28(%rax), %cl
andb $0x7f, %cl
orb $-0x80, %cl
movb %cl, 0x28(%rax)
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x2e4907
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x2e4776
cmpq $0x0, -0x50(%rbp)
je 0x2e49de
movq $0x0, -0x30(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x2e49dc
movq -0x8(%rbp), %rax
imulq $0x30, -0x28(%rbp), %rcx
addq %rcx, %rax
movb 0x28(%rax), %al
shrb $0x7, %al
cmpb $0x0, %al
je 0x2e4959
jmp 0x2e49cb
movq -0x30(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0x2e49bf
movq -0x8(%rbp), %rsi
imulq $0x30, -0x30(%rbp), %rax
addq %rax, %rsi
leaq -0xc0(%rbp), %rdi
movl $0x30, %edx
callq 0x2180
movq -0x8(%rbp), %rsi
imulq $0x30, -0x28(%rbp), %rax
addq %rax, %rsi
movq -0x8(%rbp), %rdi
imulq $0x30, -0x30(%rbp), %rax
addq %rax, %rdi
movl $0x30, %edx
callq 0x2180
movq -0x8(%rbp), %rdi
imulq $0x30, -0x28(%rbp), %rax
addq %rax, %rdi
leaq -0xc0(%rbp), %rsi
movl $0x30, %edx
callq 0x2180
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x2e4933
jmp 0x2e49de
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0x2e4aa0
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x30(%rbp), %rax
jae 0x2e4a62
movq -0x28(%rbp), %rax
cmpq -0x58(%rbp), %rax
jne 0x2e4a12
jmp 0x2e4a54
movq -0x8(%rbp), %rax
imulq $0x30, -0x28(%rbp), %rcx
addq %rcx, %rax
movl (%rax), %eax
movq -0x8(%rbp), %rcx
imulq $0x30, -0x58(%rbp), %rdx
addq %rdx, %rcx
cmpl (%rcx), %eax
jb 0x2e4a52
movq -0x8(%rbp), %rax
imulq $0x30, -0x28(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movq -0x8(%rbp), %rcx
imulq $0x30, -0x58(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
ja 0x2e4a52
jmp 0x2e4a62
jmp 0x2e4a54
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x2e49fc
movq -0x58(%rbp), %rax
cmpq -0x30(%rbp), %rax
jb 0x2e4a6e
jmp 0x2e4a8d
leaq 0xaf81e(%rip), %rdi     # 0x394293
leaq 0xabdb3(%rip), %rsi     # 0x39082f
movl $0x449b, %edx           # imm = 0x449B
leaq 0xaf7d1(%rip), %rcx     # 0x394259
callq 0x2130
jmp 0x2e4a8f
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x2e49e6
addq $0xf0, %rsp
popq %rbp
retq
nopl (%rax)