// File: chhylp123[P]hifiasm/anchor.cpp
// Function: special_lchain(Candidates_list*, overlap_region_alloc*, unsigned int, unsigned long, All_reads*, ul_idx_t const*, unsigned int, long, long, long, double, double, double, long, unsigned int, double, unsigned int, st_mt_t*, unsigned long*, unsigned long, unsigned long, unsigned long)
inline uint64_t special_lchain(Candidates_list* cl, overlap_region_alloc* ol, uint32_t rid, uint64_t rl, All_reads* rdb, 
				const ul_idx_t *udb, uint32_t apend_be, int64_t max_skip, int64_t max_iter, int64_t max_dis, double chn_pen_gap, 
				double chn_pen_skip, double bw_rate, int64_t quick_check, uint32_t gen_off, double mcopy_rate, uint32_t mcopy_khit_cut, 
				st_mt_t *sp, uint64_t *si, uint64_t m, uint64_t l, uint64_t k)
{
	uint64_t z, s, e, yid, ol0 = ol->length, ol1, m0 = m; 
	if(l >= k) return m;
	yid = cl->list[l].readID;
	for (z = l; z < k && cl->list[z].strand == cl->list[l].strand; z++);
	if(z > l) {
		s = l; e = z; ol1 = ol->length; // m0 = m;
		m += lchain_qdp_mcopy(cl, s, e-s, m, &(cl->chainDP), ol, max_skip, max_iter, max_dis, chn_pen_gap, chn_pen_skip, bw_rate, 
						rid, rl, rdb?Get_READ_LENGTH((*rdb), yid):udb->ug->u.a[yid].len, quick_check, apend_be, gen_off, 0, mcopy_rate, mcopy_khit_cut, 0);
		// if(rid == 7) {
		// 	fprintf(stderr, "+[M::%s::utg%.6ul] inn::[%lu, %lu), (*si)::%lu, ol1::%lu, ol->length::%lu\n", 
		// 	__func__, rid+1, s, e, (*si), ol1, ol->length);
		// }
		if(((*si) < sp->n) && (sp->a[(*si)] == s) && (ol->length > ol1)) {
			ol->list[ol->length-1].x_pos_strand = 1;
			// fprintf(stderr, "+[M::%s] utg%.6u%c -> utg%.6u%c, n_khits0::%lu, n_khits::%lu\n", __func__, rid+1, "lc"[udb->ug->u.a[rid].circ], 
			// ol->list[ol->length-1].y_id+1, "lc"[udb->ug->u.a[ol->list[ol->length-1].y_id].circ], e-s, m-m0);
		}
		for (; (*si) < sp->n && sp->a[(*si)] == s; (*si)++);
	}

	if(z < k) {
		s = z; e = k; ol1 = ol->length;	// m0 = m;
		m += lchain_qdp_mcopy(cl, s, e-s, m, &(cl->chainDP), ol, max_skip, max_iter, max_dis, chn_pen_gap, chn_pen_skip, bw_rate, 
						rid, rl, rdb?Get_READ_LENGTH((*rdb), yid):udb->ug->u.a[yid].len, quick_check, apend_be, gen_off, 0, mcopy_rate, mcopy_khit_cut, 0);
		// if(rid == 7) {
		// 	fprintf(stderr, "-[M::%s::utg%.6ul] inn::[%lu, %lu), (*si)::%lu, ol1::%lu, ol->length::%lu\n", 
		// 	__func__, rid+1, s, e, (*si), ol1, ol->length);
		// }
		if(((*si) < sp->n) && (sp->a[(*si)] == s) && (ol->length > ol1)) {
			ol->list[ol->length-1].x_pos_strand = 1;
			// fprintf(stderr, "-[M::%s] utg%.6u%c -> utg%.6u%c, n_khits0::%lu, n_khits::%lu\n", __func__, rid+1, "lc"[udb->ug->u.a[rid].circ], 
			// ol->list[ol->length-1].y_id+1, "lc"[udb->ug->u.a[ol->list[ol->length-1].y_id].circ], e-s, m-m0);
		}
		for (; (*si) < sp->n && sp->a[(*si)] == s; (*si)++);
	}
	if(ol->length > ol0) {
		overlap_region *p = &(ol->list[ol0]); uint64_t pi = ol0; overlap_region t;
		for (z = ol0; z < ol->length; z++) {
			if((p->shared_seed < ol->list[z].shared_seed) || 
				((p->shared_seed == ol->list[z].shared_seed) && (ol->list[z].x_pos_strand == 1))) {
				p = &(ol->list[z]); pi = z;
			}
		}

		// if(rid == 7) {
		// 	fprintf(stderr, ">[M::%s::] utg%.6ul\t->\tutg%.6ul\tflag::%u\n", 
		// 	__func__, p->x_id+1, p->y_id+1, p->x_pos_strand);
		// }

		for (z = s = ol0; z < ol->length; z++) {
			if((ol->list[z].x_pos_strand == 0) && (z != pi)) continue;
			if(s != z) {
				t = ol->list[s];
    			ol->list[s] = ol->list[z];
    			ol->list[z] = t;
			}
			s++;
		}

		if(s != ol->length) {
			ol->length = s;
			for (z = ol0; z < ol->length; z++) {
				s = ol->list[z].non_homopolymer_errors;
				pi = cl->list[s].readID;
				ol->list[z].non_homopolymer_errors = m0;
				for (; s < m && cl->list[s].readID == pi; s++) {
					cl->list[m0] = cl->list[s];
					cl->list[m0].readID = z; m0++;
				}
			}
			m = m0;
		}
		
	}
	return m;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2b8, %rsp            # imm = 0x2B8
movq 0x68(%rbp), %rax
movq 0x60(%rbp), %rax
movq 0x58(%rbp), %rax
movq 0x50(%rbp), %rax
movq 0x48(%rbp), %rax
movl 0x40(%rbp), %eax
movl 0x38(%rbp), %eax
movq 0x30(%rbp), %rax
movq 0x28(%rbp), %rax
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movl 0x10(%rbp), %eax
movq %rdi, -0x38(%rbp)
movq %rsi, -0x40(%rbp)
movl %edx, -0x44(%rbp)
movq %rcx, -0x50(%rbp)
movq %r8, -0x58(%rbp)
movq %r9, -0x60(%rbp)
movsd %xmm0, -0x68(%rbp)
movsd %xmm1, -0x70(%rbp)
movsd %xmm2, -0x78(%rbp)
movsd %xmm3, -0x80(%rbp)
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xa8(%rbp)
movq 0x58(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq 0x60(%rbp), %rax
cmpq 0x68(%rbp), %rax
jb 0x1b49cd
movq 0x58(%rbp), %rax
movq %rax, -0x30(%rbp)
jmp 0x1b53cf
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq 0x60(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movq %rax, -0xa0(%rbp)
movq 0x60(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rcx
xorl %eax, %eax
cmpq 0x68(%rbp), %rcx
movb %al, -0x171(%rbp)
jae 0x1b4a4b
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq -0x88(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %eax
shrl $0x1f, %eax
movq -0x38(%rbp), %rcx
movq (%rcx), %rcx
movq 0x60(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
movl (%rcx), %ecx
shrl $0x1f, %ecx
cmpl %ecx, %eax
sete %al
movb %al, -0x171(%rbp)
movb -0x171(%rbp), %al
testb $0x1, %al
jne 0x1b4a57
jmp 0x1b4a6d
jmp 0x1b4a59
movq -0x88(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0x1b49fa
movq -0x88(%rbp), %rax
cmpq 0x60(%rbp), %rax
jbe 0x1b4d30
movq 0x60(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x1e8(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movq -0x98(%rbp), %rax
subq -0x90(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq 0x58(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq -0x38(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x1c8(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movq 0x18(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movq 0x20(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq 0x28(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x1a0(%rbp)
movsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x198(%rbp)
movsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x190(%rbp)
movl -0x44(%rbp), %eax
movl %eax, -0x184(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x180(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x1b4b78
movq -0x58(%rbp), %rax
movq 0x18(%rax), %rax
movq -0xa0(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x1f0(%rbp)
jmp 0x1b4b9e
movq -0x60(%rbp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0xa0(%rbp), %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movq %rax, -0x1f0(%rbp)
movl -0x184(%rbp), %r12d
movsd -0x190(%rbp), %xmm2
movsd -0x198(%rbp), %xmm1
movsd -0x1a0(%rbp), %xmm0
movq -0x1a8(%rbp), %r13
movq -0x1b8(%rbp), %r15
movq -0x1c0(%rbp), %r9
movq -0x1c8(%rbp), %r8
movq -0x1d8(%rbp), %rdx
movq -0x1e0(%rbp), %rsi
movq -0x1e8(%rbp), %rdi
movq -0x1f0(%rbp), %r14
movq 0x30(%rbp), %rbx
movl 0x10(%rbp), %r11d
movl 0x38(%rbp), %eax
movl %eax, %r10d
movsd -0x80(%rbp), %xmm3
movl 0x40(%rbp), %eax
xorl %ecx, %ecx
movq -0x1d0(%rbp), %rcx
movq %r15, (%rsp)
movq -0x1b0(%rbp), %r15
movq %r15, 0x8(%rsp)
movq -0x180(%rbp), %r15
movq %r13, 0x10(%rsp)
movl %r12d, 0x18(%rsp)
movq %r15, 0x20(%rsp)
movq %r14, 0x28(%rsp)
movq %rbx, 0x30(%rsp)
movl %r11d, 0x38(%rsp)
movq %r10, 0x40(%rsp)
movq $0x0, 0x48(%rsp)
movq %rax, 0x50(%rsp)
movq $0x0, 0x58(%rsp)
callq 0x25550
addq 0x58(%rbp), %rax
movq %rax, 0x58(%rbp)
movq 0x50(%rbp), %rax
movq (%rax), %rax
movq 0x48(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x1b4cd3
movq 0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x50(%rbp), %rcx
movq (%rcx), %rcx
movq (%rax,%rcx,8), %rax
cmpq -0x90(%rbp), %rax
jne 0x1b4cd3
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
cmpq -0xb0(%rbp), %rax
jbe 0x1b4cd3
movq -0x40(%rbp), %rax
movq (%rax), %rax
movq -0x40(%rbp), %rcx
movq 0x10(%rcx), %rcx
subq $0x1, %rcx
imulq $0xa8, %rcx, %rcx
addq %rcx, %rax
movl $0x1, 0xc(%rax)
jmp 0x1b4cd5
movq 0x50(%rbp), %rax
movq (%rax), %rcx
movq 0x48(%rbp), %rdx
xorl %eax, %eax
cmpq (%rdx), %rcx
movb %al, -0x1f1(%rbp)
jae 0x1b4d10
movq 0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x50(%rbp), %rcx
movq (%rcx), %rcx
movq (%rax,%rcx,8), %rax
cmpq -0x90(%rbp), %rax
sete %al
movb %al, -0x1f1(%rbp)
movb -0x1f1(%rbp), %al
testb $0x1, %al
jne 0x1b4d1c
jmp 0x1b4d2e
jmp 0x1b4d1e
movq 0x50(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x1b4cd5
jmp 0x1b4d30
movq -0x88(%rbp), %rax
cmpq 0x68(%rbp), %rax
jae 0x1b4ff3
movq -0x88(%rbp), %rax
movq %rax, -0x90(%rbp)
movq 0x68(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xb0(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x260(%rbp)
movq -0x98(%rbp), %rax
subq -0x90(%rbp), %rax
movq %rax, -0x258(%rbp)
movq 0x58(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0x38(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x248(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x240(%rbp)
movq 0x18(%rbp), %rax
movq %rax, -0x238(%rbp)
movq 0x20(%rbp), %rax
movq %rax, -0x230(%rbp)
movq 0x28(%rbp), %rax
movq %rax, -0x228(%rbp)
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x220(%rbp)
movsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x218(%rbp)
movsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x210(%rbp)
movl -0x44(%rbp), %eax
movl %eax, -0x204(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x200(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x1b4e3b
movq -0x58(%rbp), %rax
movq 0x18(%rax), %rax
movq -0xa0(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x270(%rbp)
jmp 0x1b4e61
movq -0x60(%rbp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0xa0(%rbp), %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movq %rax, -0x270(%rbp)
movl -0x204(%rbp), %r12d
movsd -0x210(%rbp), %xmm2
movsd -0x218(%rbp), %xmm1
movsd -0x220(%rbp), %xmm0
movq -0x228(%rbp), %r13
movq -0x238(%rbp), %r15
movq -0x240(%rbp), %r9
movq -0x248(%rbp), %r8
movq -0x258(%rbp), %rdx
movq -0x260(%rbp), %rsi
movq -0x268(%rbp), %rdi
movq -0x270(%rbp), %r14
movq 0x30(%rbp), %rbx
movl 0x10(%rbp), %r11d
movl 0x38(%rbp), %eax
movl %eax, %r10d
movsd -0x80(%rbp), %xmm3
movl 0x40(%rbp), %eax
xorl %ecx, %ecx
movq -0x250(%rbp), %rcx
movq %r15, (%rsp)
movq -0x230(%rbp), %r15
movq %r15, 0x8(%rsp)
movq -0x200(%rbp), %r15
movq %r13, 0x10(%rsp)
movl %r12d, 0x18(%rsp)
movq %r15, 0x20(%rsp)
movq %r14, 0x28(%rsp)
movq %rbx, 0x30(%rsp)
movl %r11d, 0x38(%rsp)
movq %r10, 0x40(%rsp)
movq $0x0, 0x48(%rsp)
movq %rax, 0x50(%rsp)
movq $0x0, 0x58(%rsp)
callq 0x25550
addq 0x58(%rbp), %rax
movq %rax, 0x58(%rbp)
movq 0x50(%rbp), %rax
movq (%rax), %rax
movq 0x48(%rbp), %rcx
cmpq (%rcx), %rax
jae 0x1b4f96
movq 0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x50(%rbp), %rcx
movq (%rcx), %rcx
movq (%rax,%rcx,8), %rax
cmpq -0x90(%rbp), %rax
jne 0x1b4f96
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
cmpq -0xb0(%rbp), %rax
jbe 0x1b4f96
movq -0x40(%rbp), %rax
movq (%rax), %rax
movq -0x40(%rbp), %rcx
movq 0x10(%rcx), %rcx
subq $0x1, %rcx
imulq $0xa8, %rcx, %rcx
addq %rcx, %rax
movl $0x1, 0xc(%rax)
jmp 0x1b4f98
movq 0x50(%rbp), %rax
movq (%rax), %rcx
movq 0x48(%rbp), %rdx
xorl %eax, %eax
cmpq (%rdx), %rcx
movb %al, -0x271(%rbp)
jae 0x1b4fd3
movq 0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x50(%rbp), %rcx
movq (%rcx), %rcx
movq (%rax,%rcx,8), %rax
cmpq -0x90(%rbp), %rax
sete %al
movb %al, -0x271(%rbp)
movb -0x271(%rbp), %al
testb $0x1, %al
jne 0x1b4fdf
jmp 0x1b4ff1
jmp 0x1b4fe1
movq 0x50(%rbp), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x1b4f98
jmp 0x1b4ff3
movq -0x40(%rbp), %rax
movq 0x10(%rax), %rax
cmpq -0xa8(%rbp), %rax
jbe 0x1b53c7
movq -0x40(%rbp), %rax
movq (%rax), %rax
imulq $0xa8, -0xa8(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xc0(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
movq -0x40(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x1b50fb
movq -0xc0(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x40(%rbp), %rcx
movq (%rcx), %rcx
imulq $0xa8, -0x88(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x24(%rcx), %eax
jl 0x1b50b8
movq -0xc0(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x40(%rbp), %rcx
movq (%rcx), %rcx
imulq $0xa8, -0x88(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x24(%rcx), %eax
jne 0x1b50e2
movq -0x40(%rbp), %rax
movq (%rax), %rax
imulq $0xa8, -0x88(%rbp), %rcx
addq %rcx, %rax
cmpl $0x1, 0xc(%rax)
jne 0x1b50e2
movq -0x40(%rbp), %rax
movq (%rax), %rax
imulq $0xa8, -0x88(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xc0(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0xc8(%rbp)
jmp 0x1b50e4
movq -0x88(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0x1b5040
movq -0xa8(%rbp), %rax
movq %rax, -0x90(%rbp)
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
movq -0x40(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x1b5212
movq -0x40(%rbp), %rax
movq (%rax), %rax
imulq $0xa8, -0x88(%rbp), %rcx
addq %rcx, %rax
cmpl $0x0, 0xc(%rax)
jne 0x1b5155
movq -0x88(%rbp), %rax
cmpq -0xc8(%rbp), %rax
je 0x1b5155
jmp 0x1b51fb
movq -0x90(%rbp), %rax
cmpq -0x88(%rbp), %rax
je 0x1b51e9
movq -0x40(%rbp), %rax
movq (%rax), %rsi
imulq $0xa8, -0x90(%rbp), %rax
addq %rax, %rsi
leaq -0x170(%rbp), %rdi
movl $0xa8, %edx
callq 0x2180
movq -0x40(%rbp), %rax
movq (%rax), %rsi
imulq $0xa8, -0x88(%rbp), %rax
addq %rax, %rsi
movq -0x40(%rbp), %rax
movq (%rax), %rdi
imulq $0xa8, -0x90(%rbp), %rax
addq %rax, %rdi
movl $0xa8, %edx
callq 0x2180
movq -0x40(%rbp), %rax
movq (%rax), %rdi
imulq $0xa8, -0x88(%rbp), %rax
addq %rax, %rdi
leaq -0x170(%rbp), %rsi
movl $0xa8, %edx
callq 0x2180
movq -0x90(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x90(%rbp)
movq -0x88(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0x1b5110
movq -0x90(%rbp), %rax
movq -0x40(%rbp), %rcx
cmpq 0x10(%rcx), %rax
je 0x1b53c5
movq -0x90(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0xa8(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
movq -0x40(%rbp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x1b53ba
movq -0x40(%rbp), %rax
movq (%rax), %rax
imulq $0xa8, -0x88(%rbp), %rcx
addq %rcx, %rax
movl 0x30(%rax), %eax
movq %rax, -0x90(%rbp)
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq -0x90(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movq %rax, -0xc8(%rbp)
movq -0xb8(%rbp), %rax
movl %eax, %ecx
movq -0x40(%rbp), %rax
movq (%rax), %rax
imulq $0xa8, -0x88(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x30(%rax)
movq -0x90(%rbp), %rcx
xorl %eax, %eax
cmpq 0x58(%rbp), %rcx
movb %al, -0x272(%rbp)
jae 0x1b5301
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq -0x90(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
cmpq -0xc8(%rbp), %rax
sete %al
movb %al, -0x272(%rbp)
movb -0x272(%rbp), %al
testb $0x1, %al
jne 0x1b5310
jmp 0x1b53a1
movq -0x38(%rbp), %rax
movq (%rax), %rcx
movq -0x90(%rbp), %rax
shlq $0x4, %rax
addq %rax, %rcx
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq -0xb8(%rbp), %rdx
shlq $0x4, %rdx
addq %rdx, %rax
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movq -0x88(%rbp), %rax
movl %eax, %edx
movq -0x38(%rbp), %rax
movq (%rax), %rax
movq -0xb8(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %ecx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
andl $0x80000000, %ecx       # imm = 0x80000000
orl %edx, %ecx
movl %ecx, (%rax)
movq -0xb8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xb8(%rbp)
movq -0x90(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x90(%rbp)
jmp 0x1b52be
jmp 0x1b53a3
movq -0x88(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x88(%rbp)
jmp 0x1b5244
movq -0xb8(%rbp), %rax
movq %rax, 0x58(%rbp)
jmp 0x1b53c7
movq 0x58(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
addq $0x2b8, %rsp            # imm = 0x2B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop