// File: chhylp123[P]hifiasm/inter.cpp
// Function: update_ul_vec_t_ug(ul_idx_t const*, ul_vec_t*, vec_mg_lchain_t*, long)
void update_ul_vec_t_ug(const ul_idx_t *uref, ul_vec_t *rch, vec_mg_lchain_t *uc, int64_t ulid)
{
	int64_t k, ucn = uc->n, a_n, m, l, lk; ma_ug_t *ug = uref->ug; mg_lchain_t *ix, *a; uc_block_t *z;
	for (k = 0, a_n = 0; k < ucn; k += ix->cnt + 1) {
		ix = &(uc->a[k]); assert(ix->v == (uint32_t)-1); ix->hash_pre = (uint32_t)-1; ix->off = -1;
		fill_unaligned_alignments(ug, uc->a + k + 1, ix->cnt, k + 1, ulid); a_n += ix->cnt;
	}

	///up to now, given a <x> in swap
	///x->ts and x->te are the coordinates in unitig
	///x->qs and x->qe are the coordinates in UL
	///x->dist_pre is the idx of this chain at rch 
	// debug_intermediate_chain(uref->ug, uc->a, uc->n, 1, debug_i);
	// dd_ul_vec_t(uref, swap->a, swap->n, rch);
	rch->bb.n = 0; kv_resize(uc_block_t, rch->bb, (uint64_t)a_n);
	for (k = 0; k < ucn; k += ix->cnt + 1) {
		ix = &(uc->a[k]); assert(ix->v == (uint32_t)-1); ix->hash_pre = (uint32_t)-1; ix->off = -1;
		a = uc->a + k + 1; a_n = ix->cnt;
		for (m = 0; m < a_n; m++) {
			kv_pushp(uc_block_t, rch->bb, &z); 
			z->hid = (a[m].v>>1); z->rev = (a[m].v&1); 
			z->pchain = 1; z->base = 0; z->el = 1;
			z->qs = a[m].qs; z->qe = a[m].qe;
			z->te = a[m].re; z->ts = a[m].rs;
			z->pidx = k + 1 + m; z->pdis = z->aidx = (uint32_t)-1;
			// fprintf(stderr, "[M::%s::k->%ld] m->%ld, utg%.6dl(%c), q::[%u, %u), t::[%u, %u)\n", 
			// 				__func__, k, m, (int32_t)z->hid+1, "+-"[z->rev], z->qs, z->qe, z->ts, z->te);
		}
	}

	a_n = rch->bb.n; a = uc->a;
	radix_sort_uc_block_t_qe_srt(rch->bb.a, rch->bb.a + rch->bb.n); 
	for (k = 1, lk = 0, l = m = -1; k <= a_n; k++) {
		a[rch->bb.a[k-1].pidx].off = k-1;
		if(m < (int64_t)rch->bb.a[k-1].pidx) {
			m = rch->bb.a[k-1].pidx; l = k-1;
		}
		if(k == a_n || rch->bb.a[k].qe != rch->bb.a[lk].qe) {
			if(k - lk > 1) {
				radix_sort_uc_block_t_qs_srt(rch->bb.a+lk, rch->bb.a+k);
			}
			lk = k;
		}
	}
	// for (k = 0, l = m = -1; k < a_n; k++) {
	// 	a[rch->bb.a[k].pidx].off = k;
	// 	if(m < (int64_t)rch->bb.a[k].pidx) {
	// 		m = rch->bb.a[k].pidx; l = k;
	// 	}
	// }

	for (k = 0; k < a_n; k++) {
		if(a[rch->bb.a[k].pidx].hash_pre == (uint32_t)-1) {
			rch->bb.a[k].pidx = rch->bb.a[k].pdis = rch->bb.a[k].aidx = (uint32_t)-1;
			continue;
		}
		m = rch->bb.a[k].pidx;
		rch->bb.a[k].pidx = a[a[m].hash_pre].off; 
		rch->bb.a[k].pdis = a[a[m].hash_pre].dist_pre;
		rch->bb.a[rch->bb.a[k].pidx].aidx = k;
	}
	// fprintf(stderr, "+ulid->%ld\n", ulid);
	uint32_t sp = (uint32_t)-1, ep = (uint32_t)-1, ch_n = 0; 
	k = l/**a_n - 1**/;///start from the max chain
	for (l = 0; k >= 0; ) {
		if(sp == (uint32_t)-1 || rch->bb.a[k].qe <= sp) {
            if(sp != (uint32_t)-1) l += ep - sp;
            sp = rch->bb.a[k].qs; ep = rch->bb.a[k].qe;
        } else {
            sp = MIN(sp, rch->bb.a[k].qs);
        }
		if(rch->bb.a[k].pidx == (uint32_t)-1) k = -1;
		else k = rch->bb.a[k].pidx;
		ch_n++;
	}
	
	rch->dd = 0;
	if(sp != (uint32_t)-1) l += ep - sp;
	l = (int64_t)rch->rlen - l;

	// fprintf(stderr, "-ulid:%ld, l:%ld, rch->rlen:%u\n", ulid, l, rch->rlen);
	if(l == 0) {
		rch->dd = 1;
	} else if(l < ((int64_t)rch->rlen)*0.001) {
		rch->dd = 2;
	} else if(ch_n < rch->bb.n) {///multiple chain, might be useful for the scaffolding
		rch->dd = 3;
	}
	// fprintf(stderr, "[M::%s::] rch->dd::%u, rch->bb.n::%u\n", 
	// 						__func__, rch->dd, (uint32_t)rch->bb.n);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x58(%rbp)
movq $0x0, -0x28(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x30(%rbp), %rax
jge 0x29b19b
movq -0x18(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x28(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpl $-0x1, 0x8(%rax)
jne 0x29b0ff
jmp 0x29b11e
leaq 0xf6645(%rip), %rdi     # 0x39174b
leaq 0xf5722(%rip), %rsi     # 0x39082f
movl $0x1372, %edx           # imm = 0x1372
leaq 0xf6a55(%rip), %rcx     # 0x391b6e
callq 0x2130
movq -0x60(%rbp), %rax
movl $0xffffffff, 0x24(%rax) # imm = 0xFFFFFFFF
movq -0x60(%rbp), %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movq -0x58(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
imulq $0x28, -0x28(%rbp), %rax
addq %rax, %rsi
addq $0x28, %rsi
movq -0x60(%rbp), %rax
movl 0x4(%rax), %eax
shll %eax
sarl %eax
movslq %eax, %rdx
movq -0x28(%rbp), %rcx
addq $0x1, %rcx
movq -0x20(%rbp), %r8
callq 0x29ae70
movq -0x60(%rbp), %rax
movl 0x4(%rax), %eax
shll %eax
sarl %eax
cltq
addq -0x38(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x60(%rbp), %rax
movl 0x4(%rax), %eax
shll %eax
sarl %eax
addl $0x1, %eax
cltq
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x29b0d2
movq -0x10(%rbp), %rax
movq $0x0, 0x20(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
cmpq -0x38(%rbp), %rax
jae 0x29b27d
movq -0x38(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
shrq %rcx
movq -0x10(%rbp), %rax
orq 0x28(%rax), %rcx
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
shrq $0x2, %rcx
movq -0x10(%rbp), %rax
orq 0x28(%rax), %rcx
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
shrq $0x4, %rcx
movq -0x10(%rbp), %rax
orq 0x28(%rax), %rcx
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
shrq $0x8, %rcx
movq -0x10(%rbp), %rax
orq 0x28(%rax), %rcx
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
shrq $0x10, %rcx
movq -0x10(%rbp), %rax
orq 0x28(%rax), %rcx
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x10(%rbp), %rax
imulq $0x24, 0x28(%rax), %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x30(%rax)
jmp 0x29b27f
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x30(%rbp), %rax
jge 0x29b4e0
movq -0x18(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x28(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
cmpl $-0x1, 0x8(%rax)
jne 0x29b2b4
jmp 0x29b2d3
leaq 0xf6490(%rip), %rdi     # 0x39174b
leaq 0xf556d(%rip), %rsi     # 0x39082f
movl $0x137e, %edx           # imm = 0x137E
leaq 0xf68a0(%rip), %rcx     # 0x391b6e
callq 0x2130
movq -0x60(%rbp), %rax
movl $0xffffffff, 0x24(%rax) # imm = 0xFFFFFFFF
movq -0x60(%rbp), %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x28(%rbp), %rcx
addq %rcx, %rax
addq $0x28, %rax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rax
movl 0x4(%rax), %eax
shll %eax
sarl %eax
cltq
movq %rax, -0x38(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x38(%rbp), %rax
jge 0x29b4c1
jmp 0x29b328
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x28(%rcx), %rax
jne 0x29b397
movq -0x10(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x29b359
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
shlq %rax
movq %rax, -0x88(%rbp)
jmp 0x29b367
movl $0x2, %eax
movq %rax, -0x88(%rbp)
jmp 0x29b367
movq -0x88(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x10(%rbp), %rax
imulq $0x24, 0x28(%rax), %rsi
callq 0x2360
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rdx
movq 0x20(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x20(%rdx)
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x68(%rbp), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
shrl %ecx
movq -0x70(%rbp), %rax
movl %ecx, (%rax)
movq -0x68(%rbp), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
andl $0x1, %eax
movb %al, %dl
movq -0x70(%rbp), %rax
movb 0x20(%rax), %cl
andb $0x1, %dl
shlb $0x5, %dl
andb $-0x21, %cl
orb %dl, %cl
movb %cl, 0x20(%rax)
movq -0x70(%rbp), %rax
movb 0x20(%rax), %cl
andb $-0x20, %cl
orb $0x1, %cl
movb %cl, 0x20(%rax)
movq -0x70(%rbp), %rax
movb 0x20(%rax), %cl
andb $-0x41, %cl
orb $0x0, %cl
movb %cl, 0x20(%rax)
movq -0x70(%rbp), %rax
movb 0x20(%rax), %cl
andb $0x7f, %cl
orb $-0x80, %cl
movb %cl, 0x20(%rax)
movq -0x68(%rbp), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0x14(%rax), %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x68(%rbp), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0x18(%rax), %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x68(%rbp), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0x10(%rax), %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x68(%rbp), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x28(%rbp), %rax
addq $0x1, %rax
addq -0x40(%rbp), %rax
movl %eax, %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x14(%rax)
movq -0x70(%rbp), %rax
movl $0xffffffff, 0x1c(%rax) # imm = 0xFFFFFFFF
movq -0x70(%rbp), %rax
movl $0xffffffff, 0x18(%rax) # imm = 0xFFFFFFFF
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x29b318
jmp 0x29b4c3
movq -0x60(%rbp), %rax
movl 0x4(%rax), %eax
shll %eax
sarl %eax
addl $0x1, %eax
cltq
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
jmp 0x29b287
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rsi
movq -0x10(%rbp), %rax
imulq $0x24, 0x20(%rax), %rax
addq %rax, %rsi
callq 0x27d610
movq $0x1, -0x28(%rbp)
movq $0x0, -0x50(%rbp)
movq $-0x1, -0x40(%rbp)
movq $-0x1, -0x48(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x38(%rbp), %rax
jg 0x29b644
movq -0x28(%rbp), %rax
subq $0x1, %rax
movl %eax, %ecx
movq -0x68(%rbp), %rax
movq -0x10(%rbp), %rdx
movq 0x30(%rdx), %rdx
movq -0x28(%rbp), %rsi
subq $0x1, %rsi
imulq $0x24, %rsi, %rsi
addq %rsi, %rdx
movl 0x14(%rdx), %edx
imulq $0x28, %rdx, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movq -0x40(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movq -0x28(%rbp), %rdx
subq $0x1, %rdx
imulq $0x24, %rdx, %rdx
addq %rdx, %rcx
movl 0x14(%rcx), %ecx
cmpq %rcx, %rax
jge 0x29b5c4
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x28(%rbp), %rcx
subq $0x1, %rcx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movl 0x14(%rax), %eax
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x48(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0x29b5f6
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x50(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
je 0x29b631
movq -0x28(%rbp), %rax
subq -0x50(%rbp), %rax
cmpq $0x1, %rax
jle 0x29b629
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rdi
imulq $0x24, -0x50(%rbp), %rax
addq %rax, %rdi
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rsi
imulq $0x24, -0x28(%rbp), %rax
addq %rax, %rsi
callq 0x27dae0
movq -0x28(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x29b633
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x29b538
movq $0x0, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x38(%rbp), %rax
jge 0x29b77a
movq -0x68(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x28(%rbp), %rdx
addq %rdx, %rcx
movl 0x14(%rcx), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
cmpl $-0x1, 0x24(%rax)
jne 0x29b6c8
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rcx
addq %rcx, %rax
movl $0xffffffff, 0x1c(%rax) # imm = 0xFFFFFFFF
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rcx
addq %rcx, %rax
movl $0xffffffff, 0x18(%rax) # imm = 0xFFFFFFFF
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rcx
addq %rcx, %rax
movl $0xffffffff, 0x14(%rax) # imm = 0xFFFFFFFF
jmp 0x29b769
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rcx
addq %rcx, %rax
movl 0x14(%rax), %eax
movq %rax, -0x40(%rbp)
movq -0x68(%rbp), %rax
movq -0x68(%rbp), %rcx
imulq $0x28, -0x40(%rbp), %rdx
addq %rdx, %rcx
movl 0x24(%rcx), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %ecx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x14(%rax)
movq -0x68(%rbp), %rax
movq -0x68(%rbp), %rcx
imulq $0x28, -0x40(%rbp), %rdx
addq %rdx, %rcx
movl 0x24(%rcx), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movl 0x20(%rax), %ecx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x18(%rax)
movq -0x28(%rbp), %rax
movl %eax, %ecx
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x10(%rbp), %rdx
movq 0x30(%rdx), %rdx
imulq $0x24, -0x28(%rbp), %rsi
addq %rsi, %rdx
movl 0x14(%rdx), %edx
imulq $0x24, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x1c(%rax)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x29b64c
movl $0xffffffff, -0x74(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x78(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x7c(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x28(%rbp)
movq $0x0, -0x48(%rbp)
cmpq $0x0, -0x28(%rbp)
jl 0x29b896
cmpl $-0x1, -0x74(%rbp)
je 0x29b7c8
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
cmpl -0x74(%rbp), %eax
ja 0x29b80c
cmpl $-0x1, -0x74(%rbp)
je 0x29b7de
movl -0x78(%rbp), %eax
subl -0x74(%rbp), %eax
movl %eax, %eax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movl %eax, -0x74(%rbp)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0x78(%rbp)
jmp 0x29b851
movl -0x74(%rbp), %eax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x28(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
ja 0x29b82f
movl -0x74(%rbp), %eax
movl %eax, -0x8c(%rbp)
jmp 0x29b848
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
movl %eax, -0x74(%rbp)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rcx
addq %rcx, %rax
cmpl $-0x1, 0x14(%rax)
jne 0x29b871
movq $-0x1, -0x28(%rbp)
jmp 0x29b888
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x28(%rbp), %rcx
addq %rcx, %rax
movl 0x14(%rax), %eax
movq %rax, -0x28(%rbp)
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x29b79f
movq -0x10(%rbp), %rax
movb $0x0, 0x50(%rax)
cmpl $-0x1, -0x74(%rbp)
je 0x29b8b4
movl -0x78(%rbp), %eax
subl -0x74(%rbp), %eax
movl %eax, %eax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movl 0x18(%rax), %eax
subq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x29b8d4
movq -0x10(%rbp), %rax
movb $0x1, 0x50(%rax)
jmp 0x29b91b
cvtsi2sdq -0x48(%rbp), %xmm1
movq -0x10(%rbp), %rax
movl 0x18(%rax), %eax
cvtsi2sd %rax, %xmm0
movsd 0xe6052(%rip), %xmm2    # 0x381940
mulsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x29b902
movq -0x10(%rbp), %rax
movb $0x2, 0x50(%rax)
jmp 0x29b919
movl -0x7c(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpq 0x20(%rcx), %rax
jae 0x29b917
movq -0x10(%rbp), %rax
movb $0x3, 0x50(%rax)
jmp 0x29b919
jmp 0x29b91b
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)