// File: chhylp123[P]hifiasm/Overlaps.cpp
// Function: gen_scaf_res_via(sec_t*, unsigned long, ma_ug_t*, scaf_res_t*, ul_vec_t*)
void gen_scaf_res_via(sec_t *scp, uint64_t scp_len, ma_ug_t *mg, scaf_res_t *ms, ul_vec_t *res)
{
    uint64_t k, off, uid, urev, m, tt, s, e, crn, zi; ma_utg_t *z = NULL; ul_vec_t *ua; uc_block_t *p, *des, *src;
    for (k = off = res->bb.n = tt = 0; k < scp->n; k++) {
        uid = ((uint32_t)scp->a[k])>>1; urev = ((uint32_t)scp->a[k])&1;
        z = &(mg->u.a[uid]); ua = &(ms->a[uid]);
        for (m = 0; m < ua->bb.n; m++) {
            kv_pushp(uc_block_t, res->bb, &p); memset(p, 0, sizeof((*p))); 

            (*p) = ua->bb.a[m]; p->aidx = off; //offset of the whole contig within scaf
            p->qs = ua->bb.a[m].qs; p->qe = ua->bb.a[m].qe;
            if(urev) {
                p->qs = ((z->len>ua->bb.a[m].qe)?(z->len-ua->bb.a[m].qe):(0)); 
                p->qe = ((z->len>ua->bb.a[m].qs)?(z->len-ua->bb.a[m].qs):(0)); 
            } 
            p->qs += off; p->qe += off;

            p->hid = uid; p->hid <<= 1; p->hid |= urev;
            if(p->qs >= scp_len) p->qs = scp_len;
            if(p->qe >= scp_len) p->qe = scp_len;
            if(p->qe <= p->qs) res->bb.n--;
            else tt += p->te - p->ts;//how many elements
        }
        off += z->len; off += (scp->a[k]>>32);
    }

    sort_uc_block_qe(res->bb.a, res->bb.n);
    kv_resize(uc_block_t, res->bb, res->bb.n + tt); 
	memset(res->bb.a + res->bb.n, 0, tt * sizeof(*(res->bb.a))); //res->bb.a[0, res->bb.n) -> index; res->bb.a[res->bb.n, res->bb.n + tt) -> details

    
	for (k = 0, tt = res->bb.n; k < res->bb.n; k++) {
		s = tt; e = tt + res->bb.a[k].te - res->bb.a[k].ts; tt = e; off = res->bb.a[k].aidx;
        uid = res->bb.a[k].hid>>1; urev = res->bb.a[k].hid&1; z = &(mg->u.a[uid]); 


        src = ms->a[uid].bb.a + res->bb.a[k].ts;
        des = res->bb.a + s; crn = e - s;
        if(!urev) {
            for(zi = 0; zi < crn; zi++) {
                des[zi] = src[zi]; 
                des[zi].qs += off; 
                des[zi].qe += off;
                des[zi].aidx = s;

                if(des[zi].qs >= res->bb.a[k].qe) des[zi].qs = res->bb.a[k].qe;
                if(des[zi].qs <= res->bb.a[k].qs) des[zi].qs = res->bb.a[k].qs;
                if(des[zi].qe >= res->bb.a[k].qe) des[zi].qe = res->bb.a[k].qe;
                if(des[zi].qe <= res->bb.a[k].qs) des[zi].qe = res->bb.a[k].qs;
                if(des[zi].qe <= des[zi].qs) des[zi].qe = des[zi].qs;
            }
        } else {
            for(zi = 0; zi < crn; zi++) {
                des[zi] = src[zi]; 
                des[zi].rev = 1 - des[zi].rev;
                des[zi].aidx = s;
                des[zi].qs = ((z->len>src[zi].qe)?(z->len-src[zi].qe):(0)); 
                des[zi].qe = ((z->len>src[zi].qs)?(z->len-src[zi].qs):(0)); 
                des[zi].qs += off; 
                des[zi].qe += off;
                des[zi].aidx = s;

                if(des[zi].qs >= res->bb.a[k].qe) des[zi].qs = res->bb.a[k].qe;
                if(des[zi].qs <= res->bb.a[k].qs) des[zi].qs = res->bb.a[k].qs;
                if(des[zi].qe >= res->bb.a[k].qe) des[zi].qe = res->bb.a[k].qe;
                if(des[zi].qe <= res->bb.a[k].qs) des[zi].qe = res->bb.a[k].qs;
                if(des[zi].qe <= des[zi].qs) des[zi].qe = des[zi].qs;
            }
        }
		res->bb.a[k].ts = s; res->bb.a[k].te = e;

        res->bb.a[k].hid = (uint32_t)-1;
	}
	assert(tt <= res->bb.m);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq $0x0, -0x80(%rbp)
movq $0x0, -0x58(%rbp)
movq -0x28(%rbp), %rax
movq $0x0, 0x20(%rax)
movq $0x0, -0x38(%rbp)
movq $0x0, -0x30(%rbp)
movq -0x30(%rbp), %rax
movq -0x8(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x1309ce
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrl %eax
movl %eax, %eax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
andl $0x1, %eax
movl %eax, %eax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x80(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x58, -0x40(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq -0x88(%rbp), %rcx
cmpq 0x20(%rcx), %rax
jae 0x13098c
jmp 0x1306a7
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq -0x28(%rbp), %rcx
cmpq 0x28(%rcx), %rax
jne 0x130716
movq -0x28(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x1306d8
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
shlq %rax
movq %rax, -0xa8(%rbp)
jmp 0x1306e6
movl $0x2, %eax
movq %rax, -0xa8(%rbp)
jmp 0x1306e6
movq -0xa8(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x28(%rbp), %rax
imulq $0x24, 0x28(%rax), %rsi
callq 0x2360
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x28(%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, -0x90(%rbp)
movq -0x90(%rbp), %rdi
xorl %esi, %esi
movl $0x24, %edx
callq 0x2100
movq -0x88(%rbp), %rax
movq 0x30(%rax), %rsi
imulq $0x24, -0x50(%rbp), %rax
addq %rax, %rsi
movq -0x90(%rbp), %rdi
movl $0x24, %edx
callq 0x2180
movq -0x38(%rbp), %rax
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq -0x88(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x50(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x88(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x50(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x8(%rax)
cmpq $0x0, -0x48(%rbp)
je 0x13089d
movq -0x80(%rbp), %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq -0x88(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x50(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jbe 0x13081d
movq -0x80(%rbp), %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq -0x88(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x50(%rbp), %rdx
addq %rdx, %rcx
subl 0x8(%rcx), %eax
movl %eax, -0xac(%rbp)
jmp 0x130827
xorl %eax, %eax
movl %eax, -0xac(%rbp)
jmp 0x130827
movl -0xac(%rbp), %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x80(%rbp), %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq -0x88(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x50(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
jbe 0x130883
movq -0x80(%rbp), %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq -0x88(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x50(%rbp), %rdx
addq %rdx, %rcx
subl 0x4(%rcx), %eax
movl %eax, -0xb0(%rbp)
jmp 0x13088d
xorl %eax, %eax
movl %eax, -0xb0(%rbp)
jmp 0x13088d
movl -0xb0(%rbp), %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x38(%rbp), %rdx
movq -0x90(%rbp), %rax
movl 0x4(%rax), %ecx
addq %rdx, %rcx
movl %ecx, 0x4(%rax)
movq -0x38(%rbp), %rdx
movq -0x90(%rbp), %rax
movl 0x8(%rax), %ecx
addq %rdx, %rcx
movl %ecx, 0x8(%rax)
movq -0x40(%rbp), %rax
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl %ecx, (%rax)
movq -0x90(%rbp), %rax
movl (%rax), %ecx
shll %ecx
movl %ecx, (%rax)
movq -0x48(%rbp), %rdx
movq -0x90(%rbp), %rax
movl (%rax), %ecx
orq %rdx, %rcx
movl %ecx, (%rax)
movq -0x90(%rbp), %rax
movl 0x4(%rax), %eax
cmpq -0x10(%rbp), %rax
jb 0x130913
movq -0x10(%rbp), %rax
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x90(%rbp), %rax
movl 0x8(%rax), %eax
cmpq -0x10(%rbp), %rax
jb 0x130933
movq -0x10(%rbp), %rax
movl %eax, %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x90(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x90(%rbp), %rcx
cmpl 0x4(%rcx), %eax
ja 0x13095b
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x20(%rax)
jmp 0x130979
movq -0x90(%rbp), %rax
movl 0x10(%rax), %eax
movq -0x90(%rbp), %rcx
subl 0xc(%rcx), %eax
movl %eax, %eax
addq -0x58(%rbp), %rax
movq %rax, -0x58(%rbp)
jmp 0x13097b
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x130690
movq -0x80(%rbp), %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
addq -0x38(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
addq -0x38(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x13061b
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x29b060
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x20(%rcx), %rcx
addq -0x58(%rbp), %rcx
cmpq %rcx, %rax
jae 0x130acc
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rcx
addq -0x58(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x28(%rax)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rcx
shrq %rcx
movq -0x28(%rbp), %rax
orq 0x28(%rax), %rcx
movq %rcx, 0x28(%rax)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rcx
shrq $0x2, %rcx
movq -0x28(%rbp), %rax
orq 0x28(%rax), %rcx
movq %rcx, 0x28(%rax)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rcx
shrq $0x4, %rcx
movq -0x28(%rbp), %rax
orq 0x28(%rax), %rcx
movq %rcx, 0x28(%rax)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rcx
shrq $0x8, %rcx
movq -0x28(%rbp), %rax
orq 0x28(%rax), %rcx
movq %rcx, 0x28(%rax)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rcx
shrq $0x10, %rcx
movq -0x28(%rbp), %rax
orq 0x28(%rax), %rcx
movq %rcx, 0x28(%rax)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x28(%rax)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x28(%rbp), %rax
imulq $0x24, 0x28(%rax), %rsi
callq 0x2360
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x30(%rax)
jmp 0x130ace
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rdi
movq -0x28(%rbp), %rax
imulq $0x24, 0x20(%rax), %rax
addq %rax, %rdi
imulq $0x24, -0x58(%rbp), %rdx
xorl %esi, %esi
callq 0x2100
movq $0x0, -0x30(%rbp)
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
cmpq 0x20(%rcx), %rax
jae 0x1311d7
movq -0x58(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rax
movq -0x28(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rcx
movl 0x10(%rcx), %ecx
addq %rcx, %rax
movq -0x28(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rcx
movl 0xc(%rcx), %ecx
subq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl 0x1c(%rax), %eax
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl (%rax), %eax
shrl %eax
movl %eax, %eax
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl (%rax), %eax
andl $0x1, %eax
movl %eax, %eax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x80(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x58, -0x40(%rbp), %rcx
addq %rcx, %rax
movq 0x30(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rcx
movl 0xc(%rcx), %ecx
imulq $0x24, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x60(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movq -0x68(%rbp), %rax
subq -0x60(%rbp), %rax
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x130e3a
movq $0x0, -0x78(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x130e35
movq -0xa0(%rbp), %rsi
imulq $0x24, -0x78(%rbp), %rax
addq %rax, %rsi
movq -0x98(%rbp), %rdi
imulq $0x24, -0x78(%rbp), %rax
addq %rax, %rdi
movl $0x24, %edx
callq 0x2180
movq -0x38(%rbp), %rdx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
addq %rdx, %rcx
movl %ecx, 0x4(%rax)
movq -0x38(%rbp), %rdx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
addq %rdx, %rcx
movl %ecx, 0x8(%rax)
movq -0x60(%rbp), %rax
movl %eax, %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x1c(%rax)
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movq -0x28(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jb 0x130cf4
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movq -0x28(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
ja 0x130d40
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq -0x28(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jb 0x130d8c
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq -0x28(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
ja 0x130dd8
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq -0x98(%rbp), %rcx
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
ja 0x130e22
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
jmp 0x130e24
movq -0x78(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0x130c22
jmp 0x13117e
movq $0x0, -0x78(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x13117c
movq -0xa0(%rbp), %rsi
imulq $0x24, -0x78(%rbp), %rax
addq %rax, %rsi
movq -0x98(%rbp), %rdi
imulq $0x24, -0x78(%rbp), %rax
addq %rax, %rdi
movl $0x24, %edx
callq 0x2180
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movb 0x20(%rax), %al
shrb $0x5, %al
andb $0x1, %al
movzbl %al, %ecx
movl $0x1, %eax
subl %ecx, %eax
movb %al, %dl
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movb 0x20(%rax), %cl
andb $0x1, %dl
shlb $0x5, %dl
andb $-0x21, %cl
orb %dl, %cl
movb %cl, 0x20(%rax)
movq -0x60(%rbp), %rax
movl %eax, %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x1c(%rax)
movq -0x80(%rbp), %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq -0xa0(%rbp), %rcx
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jbe 0x130f17
movq -0x80(%rbp), %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq -0xa0(%rbp), %rcx
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rcx
subl 0x8(%rcx), %eax
movl %eax, -0xb4(%rbp)
jmp 0x130f21
xorl %eax, %eax
movl %eax, -0xb4(%rbp)
jmp 0x130f21
movl -0xb4(%rbp), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movq -0x80(%rbp), %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq -0xa0(%rbp), %rcx
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
jbe 0x130f7d
movq -0x80(%rbp), %rax
movl (%rax), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movq -0xa0(%rbp), %rcx
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rcx
subl 0x4(%rcx), %eax
movl %eax, -0xb8(%rbp)
jmp 0x130f87
xorl %eax, %eax
movl %eax, -0xb8(%rbp)
jmp 0x130f87
movl -0xb8(%rbp), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movq -0x38(%rbp), %rdx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
addq %rdx, %rcx
movl %ecx, 0x4(%rax)
movq -0x38(%rbp), %rdx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
addq %rdx, %rcx
movl %ecx, 0x8(%rax)
movq -0x60(%rbp), %rax
movl %eax, %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x1c(%rax)
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movq -0x28(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jb 0x13103b
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movq -0x28(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
ja 0x131087
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq -0x28(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jb 0x1310d3
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq -0x28(%rbp), %rcx
movq 0x30(%rcx), %rcx
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
ja 0x13111f
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq -0x98(%rbp), %rcx
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
ja 0x131169
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq -0x98(%rbp), %rax
imulq $0x24, -0x78(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x8(%rax)
jmp 0x13116b
movq -0x78(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0x130e42
jmp 0x13117e
movq -0x60(%rbp), %rax
movl %eax, %ecx
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0xc(%rax)
movq -0x68(%rbp), %rax
movl %eax, %ecx
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rdx
addq %rdx, %rax
movl %ecx, 0x10(%rax)
movq -0x28(%rbp), %rax
movq 0x30(%rax), %rax
imulq $0x24, -0x30(%rbp), %rcx
addq %rcx, %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x130b02
movq -0x58(%rbp), %rax
movq -0x28(%rbp), %rcx
cmpq 0x28(%rcx), %rax
ja 0x1311e7
jmp 0x131206
leaq 0x25767d(%rip), %rdi    # 0x38886b
leaq 0x2556c8(%rip), %rsi    # 0x3868bd
movl $0x5a3e, %edx           # imm = 0x5A3E
leaq 0x25767a(%rip), %rcx    # 0x38887b
callq 0x2130
addq $0xc0, %rsp
popq %rbp
retq
nop