// File: chhylp123[P]hifiasm/rcut.cpp
// Function: reset_mb_g_t_z(mb_g_t*)
void reset_mb_g_t_z(mb_g_t *mbg)
{
	uint32_t k;
	mb_match_t *ma = mbg->e;
	for (k = 0; k < ma->n_seq; ++k) ///each block
	{
		uint32_t o = ma->idx.a[k] >> 32;
        uint32_t j, n = (uint32_t)ma->idx.a[k];
		mbg->u->u.a[k].z[0] = mbg->u->u.a[k].z[1] = 0;
		mbg->u->u.a[k].z[2] = mbg->u->u.a[k].z[3] = 0;
		for (j = 0; j < n; ++j) {
            const mb_edge_t *e = &ma->ma.a[o + j];
            uint32_t t = ma_y(*e);

			///a[0]->b[0]
			if(mbg->u->u.a[t].s[0] > 0) mbg->u->u.a[k].z[0] += e->w[0];
			else if(mbg->u->u.a[t].s[0] < 0) mbg->u->u.a[k].z[1] += e->w[0];

			///a[0]->b[1]
			if(mbg->u->u.a[t].s[1] > 0) mbg->u->u.a[k].z[0] += e->w[1];
			else if(mbg->u->u.a[t].s[1] < 0) mbg->u->u.a[k].z[1] += e->w[1];

			///a[1]->b[0]
			if(mbg->u->u.a[t].s[0] > 0) mbg->u->u.a[k].z[2] += e->w[2];
			else if(mbg->u->u.a[t].s[0] < 0) mbg->u->u.a[k].z[3] += e->w[2];

			///a[1]->b[1]
			if(mbg->u->u.a[t].s[1] > 0) mbg->u->u.a[k].z[2] += e->w[3];
			else if(mbg->u->u.a[t].s[1] < 0) mbg->u->u.a[k].z[3] += e->w[3];
        }
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq -0x18(%rbp), %rcx
cmpl 0x38(%rcx), %eax
jae 0x2243df
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xc(%rbp), %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movl -0xc(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x24(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x20(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x18(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x30(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x28(%rax)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
cmpl -0x24(%rbp), %eax
jae 0x2243cf
movq -0x18(%rbp), %rax
movq 0x28(%rax), %rax
movl -0x1c(%rbp), %ecx
addl -0x20(%rbp), %ecx
movl %ecx, %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movl %eax, -0x34(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0x34(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
movsbl 0x10(%rax), %eax
cmpl $0x0, %eax
jle 0x2241c7
movq -0x30(%rbp), %rax
movsd 0x8(%rax), %xmm0
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
addsd 0x18(%rax), %xmm0
movsd %xmm0, 0x18(%rax)
jmp 0x22420f
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0x34(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
movsbl 0x10(%rax), %eax
cmpl $0x0, %eax
jge 0x22420d
movq -0x30(%rbp), %rax
movsd 0x8(%rax), %xmm0
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
addsd 0x20(%rax), %xmm0
movsd %xmm0, 0x20(%rax)
jmp 0x22420f
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0x34(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
movsbl 0x11(%rax), %eax
cmpl $0x0, %eax
jle 0x224257
movq -0x30(%rbp), %rax
movsd 0x10(%rax), %xmm0
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
addsd 0x18(%rax), %xmm0
movsd %xmm0, 0x18(%rax)
jmp 0x22429f
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0x34(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
movsbl 0x11(%rax), %eax
cmpl $0x0, %eax
jge 0x22429d
movq -0x30(%rbp), %rax
movsd 0x10(%rax), %xmm0
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
addsd 0x20(%rax), %xmm0
movsd %xmm0, 0x20(%rax)
jmp 0x22429f
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0x34(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
movsbl 0x10(%rax), %eax
cmpl $0x0, %eax
jle 0x2242e7
movq -0x30(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
addsd 0x28(%rax), %xmm0
movsd %xmm0, 0x28(%rax)
jmp 0x22432f
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0x34(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
movsbl 0x10(%rax), %eax
cmpl $0x0, %eax
jge 0x22432d
movq -0x30(%rbp), %rax
movsd 0x18(%rax), %xmm0
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
addsd 0x30(%rax), %xmm0
movsd %xmm0, 0x30(%rax)
jmp 0x22432f
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0x34(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
movsbl 0x11(%rax), %eax
cmpl $0x0, %eax
jle 0x224377
movq -0x30(%rbp), %rax
movsd 0x20(%rax), %xmm0
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
addsd 0x28(%rax), %xmm0
movsd %xmm0, 0x28(%rax)
jmp 0x2243bf
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0x34(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
movsbl 0x11(%rax), %eax
cmpl $0x0, %eax
jge 0x2243bd
movq -0x30(%rbp), %rax
movsd 0x20(%rax), %xmm0
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq 0x40(%rax), %rax
movl -0xc(%rbp), %ecx
imulq $0x38, %rcx, %rcx
addq %rcx, %rax
addsd 0x30(%rax), %xmm0
movsd %xmm0, 0x30(%rax)
jmp 0x2243bf
jmp 0x2243c1
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x22414e
jmp 0x2243d1
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x22409b
popq %rbp
retq
nopw %cs:(%rax,%rax)