// File: chhylp123[P]hifiasm/Overlaps.cpp
// Function: get_u_trans_hit(u_trans_hit_idx*, u_trans_hit_t*)
uint32_t get_u_trans_hit(u_trans_hit_idx *t, u_trans_hit_t *hit)
{
    uint32_t uid, ori, l, v, nv, is_update, r_beg, r_end, ovlp;
    uint32_t *a = t->a, a_n = t->an, k, c_uId, idx, offPre;
    ma_utg_t *u = NULL;
    asg_arc_t *av  = NULL;
    hit->qSpre = hit->qEpre = hit->qScur = hit->qEcur = hit->qn = (uint32_t)-1;
    hit->tSpre = hit->tEpre = hit->tScur = hit->tEcur = hit->tn = (uint32_t)-1;

    while (t->u_i < a_n) ///(u_i = 0; u_i < a_n; u_i++)
    {
        uid = a[t->u_i] >> 1;
        ori = a[t->u_i] & 1;
        u = &(t->ug->u.a[uid]);
        if(u->n == 0) continue;
        
        while(t->r_i < u->n) ///for (r_i = 0; r_i < u->n; r_i++)
        {
            l = 0;
            v = (ori == 1?((uint64_t)((u->a[u->n-t->r_i-1])^(uint64_t)(0x100000000)))>>32:((uint64_t)(u->a[t->r_i]))>>32);

            if(t->p_v != (uint32_t)-1)
            {
                av = asg_arc_a(t->read_sg, t->p_v);
                nv = asg_arc_n(t->read_sg, t->p_v);
                
                for (k = 0; k < nv; k++)
                {
                    if(av[k].del) continue;
                    if(av[k].v == v) 
                    {
                        l = asg_arc_len(av[k]);
                        break;
                    }
                }
                if(k == nv) fprintf(stderr, "ERROR-nv\n");
            }

            ///[t->cBeg, t->cEnd)
            r_beg = t->len; r_end = t->len + 
                        (t->p_v != (uint32_t)-1? t->read_sg->seq[t->p_v>>1].len : 0);
            ovlp = ((MIN(t->cEnd, r_end) > MAX(t->cBeg, r_beg))? (MIN(t->cEnd, r_end) - MAX(t->cBeg, r_beg)) : 0);
            c_uId = get_origin_uid(v, t->t_ch, &offPre, &idx);


            if(ovlp == 0)
            {
                if(r_beg >= t->cEnd)
                {
                    if(t->p_uId != (uint32_t)-1)
                    {
                        hit->qn = t->p_uId;
                        hit->qScur = t->s_pos_cur; hit->qEcur = t->len + t->read_sg->seq[t->p_v>>1].len;


                        ovlp = ((MIN(t->cEnd, hit->qEcur) > MAX(t->cBeg, hit->qScur))? 
                                                (MIN(t->cEnd, hit->qEcur) - MAX(t->cBeg, hit->qScur)) : 0);
                        if(ovlp == 0) return 0;

                        
                        ///[t->s_pre_v, t->p_v]
                        uint32_t a_pos, b_pos;
                        get_origin_uid(t->s_pre_v, t->t_ch, &a_pos, NULL);
                        get_origin_uid(t->p_v, t->t_ch, &b_pos, NULL);
                        hit->qSpre = MIN(a_pos, b_pos);
                        hit->qEpre = MAX((a_pos + t->read_sg->seq[t->s_pre_v>>1].len), (b_pos+t->read_sg->seq[t->p_v>>1].len));
                        
                        ///[t->cBeg, t->cEnd)
                        if(hit->qScur < t->cBeg)
                        {
                            if((hit->qn&1) == 0)
                            {
                                ///hit->qSpre += (t->cBeg - hit->qScur);
                                hit->qSpre += get_offset_adjust(t->cBeg - hit->qScur, 
                                                    hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
                            }
                            else
                            {
                                ///hit->qEpre -= (t->cBeg - hit->qScur);
                                hit->qEpre -= get_offset_adjust(t->cBeg - hit->qScur, 
                                                    hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
                            }
                            hit->qScur = t->cBeg;
                        }

                        if(hit->qEcur > t->cEnd)
                        {
                            if((hit->qn&1) == 0)
                            {
                                ///hit->qEpre -= (hit->qEcur - t->cEnd);
                                hit->qEpre -= get_offset_adjust(hit->qEcur - t->cEnd,
                                                    hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
                            }
                            else
                            {
                                // hit->qSpre += (hit->qEcur - t->cEnd);
                                hit->qSpre += get_offset_adjust(hit->qEcur - t->cEnd,
                                                    hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
                            }
                            hit->qEcur = t->cEnd;
                        }
                        t->p_uId = (uint32_t)-1;
                        return 1;
                    }
                    return 0;
                }
                else
                {
                    t->p_uId = c_uId; t->s_pos_cur = t->len + l; t->s_pre_v = v;
                    t->p_v = v; t->len += l; t->p_idx = idx;
                    t->r_i++;
                    continue;
                }
            }
            

            is_update = 0;
            if(t->p_uId != c_uId)
            {
                is_update = 1;
                
            }
            else///p_uId == c_uId
            {
                if((t->p_uId&1) == 0) ///forward
                {
                    if(idx != (t->p_idx+1))
                    {
                        is_update = 1;
                    }
                }
                else //backward
                {
                    if((idx + 1) != t->p_idx)
                    {
                        is_update = 1;
                    }
                }
            } 
            
            if(is_update)
            {
                if(t->p_uId != (uint32_t)-1)
                {                    
                    hit->qn = t->p_uId;
                    hit->qScur = t->s_pos_cur; hit->qEcur = t->len + t->read_sg->seq[t->p_v>>1].len;
                    ///[t->s_pre_v, t->p_v]
                    uint32_t a_pos, b_pos;
                    get_origin_uid(t->s_pre_v, t->t_ch, &a_pos, NULL);
                    get_origin_uid(t->p_v, t->t_ch, &b_pos, NULL);
                    hit->qSpre = MIN(a_pos, b_pos);
                    hit->qEpre = MAX((a_pos + t->read_sg->seq[t->s_pre_v>>1].len), (b_pos+t->read_sg->seq[t->p_v>>1].len));
                    
                    ///[t->cBeg, t->cEnd)
                    if(hit->qScur < t->cBeg)
                    {
                        if((hit->qn&1) == 0)
                        {
                            ///hit->qSpre += (t->cBeg - hit->qScur);
                            hit->qSpre += get_offset_adjust(t->cBeg - hit->qScur, 
                                                hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
                        }
                        else
                        {
                            ///hit->qEpre -= (t->cBeg - hit->qScur);
                            hit->qEpre -= get_offset_adjust(t->cBeg - hit->qScur, 
                                                hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
                        }
                        hit->qScur = t->cBeg;
                    }

                    if(hit->qEcur > t->cEnd)
                    {
                        if((hit->qn&1) == 0)
                        {
                            ///hit->qEpre -= (hit->qEcur - t->cEnd);
                            hit->qEpre -= get_offset_adjust(hit->qEcur - t->cEnd,
                                                hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
                        }
                        else
                        {
                            // hit->qSpre += (hit->qEcur - t->cEnd);
                            hit->qSpre += get_offset_adjust(hit->qEcur - t->cEnd,
                                                hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
                        }
                        hit->qEcur = t->cEnd;
                    }


                    t->p_uId = c_uId; t->s_pos_cur = t->len + l; t->s_pre_v = v;
                    t->p_v = v; t->len += l; t->p_idx = idx;
                    t->r_i++;
                    return 1;
                }
                t->p_uId = c_uId; t->s_pos_cur = t->len + l; t->s_pre_v = v;
            }

            t->p_v = v; t->len += l; t->p_idx = idx;
            t->r_i++;
        }
        t->r_i = 0;
        t->u_i++;
    }
    
    if(t->p_uId != (uint32_t)-1)
    {
        hit->qn = t->p_uId;
        hit->qScur = t->s_pos_cur; hit->qEcur = t->len + t->read_sg->seq[t->p_v>>1].len;


        ovlp = ((MIN(t->cEnd, hit->qEcur) > MAX(t->cBeg, hit->qScur))? 
                                (MIN(t->cEnd, hit->qEcur) - MAX(t->cBeg, hit->qScur)) : 0);
        if(ovlp == 0) return 0;

        
        ///[t->s_pre_v, t->p_v]
        uint32_t a_pos, b_pos;
        get_origin_uid(t->s_pre_v, t->t_ch, &a_pos, NULL);
        get_origin_uid(t->p_v, t->t_ch, &b_pos, NULL);
        hit->qSpre = MIN(a_pos, b_pos);
        hit->qEpre = MAX((a_pos + t->read_sg->seq[t->s_pre_v>>1].len), (b_pos+t->read_sg->seq[t->p_v>>1].len));
        
        ///[t->cBeg, t->cEnd)
        if(hit->qScur < t->cBeg)
        {
            if((hit->qn&1) == 0)
            {
                ///hit->qSpre += (t->cBeg - hit->qScur);
                hit->qSpre += get_offset_adjust(t->cBeg - hit->qScur, 
                                    hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
            }
            else
            {
                ///hit->qEpre -= (t->cBeg - hit->qScur);
                hit->qEpre -= get_offset_adjust(t->cBeg - hit->qScur, 
                                    hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
            }
            hit->qScur = t->cBeg;
        }

        if(hit->qEcur > t->cEnd)
        {
            if((hit->qn&1) == 0)
            {
                ///hit->qEpre -= (hit->qEcur - t->cEnd);
                hit->qEpre -= get_offset_adjust(hit->qEcur - t->cEnd,
                                    hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
            }
            else
            {
                // hit->qSpre += (hit->qEcur - t->cEnd);
                hit->qSpre += get_offset_adjust(hit->qEcur - t->cEnd,
                                    hit->qEcur-hit->qScur, hit->qEpre-hit->qSpre);
            }
            hit->qEcur = t->cEnd;
        }

        t->p_uId = (uint32_t)-1;
        return 1;
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movl 0x38(%rax), %eax
movl %eax, -0x4c(%rbp)
movq $0x0, -0x68(%rbp)
movq $0x0, -0x70(%rbp)
movq -0x18(%rbp), %rax
movl $0xffffffff, 0x10(%rax) # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movl $0xffffffff, 0xc(%rax)  # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movl $0xffffffff, 0x4(%rax)  # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movl $0xffffffff, (%rax)     # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movl $0xffffffff, 0x24(%rax) # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movl $0xffffffff, 0x1c(%rax) # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movl $0xffffffff, 0x18(%rax) # imm = 0xFFFFFFFF
movq -0x18(%rbp), %rax
movl $0xffffffff, 0x14(%rax) # imm = 0xFFFFFFFF
movq -0x10(%rbp), %rax
movl (%rax), %eax
cmpl -0x4c(%rbp), %eax
jae 0xf95f8
movq -0x48(%rbp), %rax
movq -0x10(%rbp), %rcx
movl (%rcx), %ecx
movl (%rax,%rcx,4), %eax
shrl %eax
movl %eax, -0x1c(%rbp)
movq -0x48(%rbp), %rax
movq -0x10(%rbp), %rcx
movl (%rcx), %ecx
movl (%rax,%rcx,4), %eax
andl $0x1, %eax
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rax
movq 0x10(%rax), %rax
movl -0x1c(%rbp), %ecx
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jne 0xf8ae0
jmp 0xf8a86
jmp 0xf8ae2
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movq -0x68(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jae 0xf95dd
movl $0x0, -0x24(%rbp)
cmpl $0x1, -0x20(%rbp)
jne 0xf8b3b
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x68(%rbp), %rax
movl 0x10(%rax), %eax
movq -0x10(%rbp), %rdx
subl 0x4(%rdx), %eax
subl $0x1, %eax
movl %eax, %eax
movl %eax, %edx
movabsq $0x100000000, %rax      # imm = 0x100000000
xorq (%rcx,%rdx,8), %rax
shrq $0x20, %rax
movq %rax, -0x90(%rbp)
jmp 0xf8b59
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x10(%rbp), %rcx
movl 0x4(%rcx), %ecx
movq (%rax,%rcx,8), %rax
shrq $0x20, %rax
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movl %eax, -0x28(%rbp)
movq -0x10(%rbp), %rax
cmpl $-0x1, 0x18(%rax)
je 0xf8c42
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x48(%rcx), %rcx
movq 0x28(%rcx), %rcx
movq -0x10(%rbp), %rdx
movl 0x18(%rdx), %edx
movq (%rcx,%rdx,8), %rcx
shrq $0x20, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x28(%rax), %rax
movq -0x10(%rbp), %rcx
movl 0x18(%rcx), %ecx
movq (%rax,%rcx,8), %rax
movl %eax, -0x2c(%rbp)
movl $0x0, -0x50(%rbp)
movl -0x50(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jae 0xf8c20
movq -0x70(%rbp), %rax
movl -0x50(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
shrl $0x1f, %eax
cmpl $0x0, %eax
je 0xf8be7
jmp 0xf8c15
movq -0x70(%rbp), %rax
movl -0x50(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
cmpl -0x28(%rbp), %eax
jne 0xf8c13
movq -0x70(%rbp), %rax
movl -0x50(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq (%rax), %rax
movl %eax, -0x24(%rbp)
jmp 0xf8c20
jmp 0xf8c15
movl -0x50(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x50(%rbp)
jmp 0xf8bc4
movl -0x50(%rbp), %eax
cmpl -0x2c(%rbp), %eax
jne 0xf8c40
movq 0x2cb3b1(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x28e800(%rip), %rsi    # 0x387439
movb $0x0, %al
callq 0x22a0
jmp 0xf8c42
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x94(%rbp)
movq -0x10(%rbp), %rax
cmpl $-0x1, 0x18(%rax)
je 0xf8c8a
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x20(%rax), %rax
movq -0x10(%rbp), %rcx
movl 0x18(%rcx), %ecx
shrl %ecx
movl %ecx, %ecx
movl (%rax,%rcx,8), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, -0x98(%rbp)
jmp 0xf8c94
xorl %eax, %eax
movl %eax, -0x98(%rbp)
jmp 0xf8c94
movl -0x94(%rbp), %eax
movl -0x98(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x38(%rbp)
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
cmpl -0x38(%rbp), %eax
ja 0xf8cc0
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, -0x9c(%rbp)
jmp 0xf8cc9
movl -0x38(%rbp), %eax
movl %eax, -0x9c(%rbp)
movl -0x9c(%rbp), %eax
movl %eax, -0xa0(%rbp)
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
cmpl -0x34(%rbp), %eax
jb 0xf8cf0
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xa4(%rbp)
jmp 0xf8cf9
movl -0x34(%rbp), %eax
movl %eax, -0xa4(%rbp)
movl -0xa0(%rbp), %eax
movl -0xa4(%rbp), %ecx
cmpl %ecx, %eax
jbe 0xf8d73
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
cmpl -0x38(%rbp), %eax
ja 0xf8d24
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, -0xa8(%rbp)
jmp 0xf8d2d
movl -0x38(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
movl %eax, -0xac(%rbp)
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
cmpl -0x34(%rbp), %eax
jb 0xf8d54
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xb0(%rbp)
jmp 0xf8d5d
movl -0x34(%rbp), %eax
movl %eax, -0xb0(%rbp)
movl -0xac(%rbp), %eax
movl -0xb0(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0xb4(%rbp)
jmp 0xf8d7d
xorl %eax, %eax
movl %eax, -0xb4(%rbp)
jmp 0xf8d7d
movl -0xb4(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x28(%rbp), %edi
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rsi
leaq -0x5c(%rbp), %rdx
leaq -0x58(%rbp), %rcx
callq 0x167290
movl %eax, -0x54(%rbp)
cmpl $0x0, -0x3c(%rbp)
jne 0xf9203
movl -0x34(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jb 0xf91ab
movq -0x10(%rbp), %rax
cmpl $-0x1, 0x20(%rax)
je 0xf919f
movq -0x10(%rbp), %rax
movl 0x20(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x20(%rax), %rax
movq -0x10(%rbp), %rdx
movl 0x18(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rax,%rdx,8), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
addl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0xc(%rcx), %eax
ja 0xf8e33
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, -0xb8(%rbp)
jmp 0xf8e40
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0xb8(%rbp)
movl -0xb8(%rbp), %eax
movl %eax, -0xbc(%rbp)
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jb 0xf8e6b
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xc0(%rbp)
jmp 0xf8e78
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xc0(%rbp)
movl -0xbc(%rbp), %eax
movl -0xc0(%rbp), %ecx
cmpl %ecx, %eax
jbe 0xf8f02
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0xc(%rcx), %eax
ja 0xf8ea7
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, -0xc4(%rbp)
jmp 0xf8eb4
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0xc4(%rbp)
movl -0xc4(%rbp), %eax
movl %eax, -0xc8(%rbp)
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jb 0xf8edf
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xcc(%rbp)
jmp 0xf8eec
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xcc(%rbp)
movl -0xc8(%rbp), %eax
movl -0xcc(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0xd0(%rbp)
jmp 0xf8f0c
xorl %eax, %eax
movl %eax, -0xd0(%rbp)
jmp 0xf8f0c
movl -0xd0(%rbp), %eax
movl %eax, -0x3c(%rbp)
cmpl $0x0, -0x3c(%rbp)
jne 0xf8f27
movl $0x0, -0x4(%rbp)
jmp 0xf99fe
movq -0x10(%rbp), %rax
movl 0x10(%rax), %edi
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rsi
leaq -0x74(%rbp), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x167290
movq -0x10(%rbp), %rax
movl 0x18(%rax), %edi
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rsi
leaq -0x78(%rbp), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x167290
movl -0x74(%rbp), %eax
cmpl -0x78(%rbp), %eax
ja 0xf8f72
movl -0x74(%rbp), %eax
movl %eax, -0xd4(%rbp)
jmp 0xf8f7b
movl -0x78(%rbp), %eax
movl %eax, -0xd4(%rbp)
movl -0xd4(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movl -0x74(%rbp), %eax
movq -0x10(%rbp), %rcx
movq 0x48(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq -0x10(%rbp), %rdx
movl 0x10(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rcx,%rdx,8), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addl %ecx, %eax
movl -0x78(%rbp), %ecx
movq -0x10(%rbp), %rdx
movq 0x48(%rdx), %rdx
movq 0x20(%rdx), %rdx
movq -0x10(%rbp), %rsi
movl 0x18(%rsi), %esi
shrl %esi
movl %esi, %esi
movl (%rdx,%rsi,8), %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
addl %edx, %ecx
cmpl %ecx, %eax
jb 0xf9002
movl -0x74(%rbp), %eax
movq -0x10(%rbp), %rcx
movq 0x48(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq -0x10(%rbp), %rdx
movl 0x10(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rcx,%rdx,8), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addl %ecx, %eax
movl %eax, -0xd8(%rbp)
jmp 0xf902d
movl -0x78(%rbp), %eax
movq -0x10(%rbp), %rcx
movq 0x48(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq -0x10(%rbp), %rdx
movl 0x18(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rcx,%rdx,8), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addl %ecx, %eax
movl %eax, -0xd8(%rbp)
movl -0xd8(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x24(%rcx), %eax
jae 0xf90e1
movq -0x18(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0xf9097
movq -0x10(%rbp), %rax
movl 0x24(%rax), %edi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %ecx
movq -0x18(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
jmp 0xf90d3
movq -0x10(%rbp), %rax
movl 0x24(%rax), %edi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %edx
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x4(%rax)
movq -0x10(%rbp), %rax
movl 0x24(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jbe 0xf9188
movq -0x18(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0xf9142
movq -0x18(%rbp), %rax
movl 0xc(%rax), %edi
movq -0x10(%rbp), %rax
subl 0x28(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %edx
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x4(%rax)
jmp 0xf917a
movq -0x18(%rbp), %rax
movl 0xc(%rax), %edi
movq -0x10(%rbp), %rax
subl 0x28(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %ecx
movq -0x18(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movl 0x28(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x10(%rbp), %rax
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movl $0x1, -0x4(%rbp)
jmp 0xf99fe
movl $0x0, -0x4(%rbp)
jmp 0xf99fe
movl -0x54(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %ecx
addl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x28(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x10(%rax)
movl -0x28(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x18(%rax)
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movl -0x58(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq -0x10(%rbp), %rax
movl 0x4(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x4(%rax)
jmp 0xf8ae2
movl $0x0, -0x30(%rbp)
movq -0x10(%rbp), %rax
movl 0x20(%rax), %eax
cmpl -0x54(%rbp), %eax
je 0xf921f
movl $0x1, -0x30(%rbp)
jmp 0xf9262
movq -0x10(%rbp), %rax
movl 0x20(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0xf9248
movl -0x58(%rbp), %eax
movq -0x10(%rbp), %rcx
movl 0x1c(%rcx), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
je 0xf9246
movl $0x1, -0x30(%rbp)
jmp 0xf9260
movl -0x58(%rbp), %eax
addl $0x1, %eax
movq -0x10(%rbp), %rcx
cmpl 0x1c(%rcx), %eax
je 0xf925e
movl $0x1, -0x30(%rbp)
jmp 0xf9260
jmp 0xf9262
cmpl $0x0, -0x30(%rbp)
je 0xf95aa
movq -0x10(%rbp), %rax
cmpl $-0x1, 0x20(%rax)
je 0xf9585
movq -0x10(%rbp), %rax
movl 0x20(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x20(%rax), %rax
movq -0x10(%rbp), %rdx
movl 0x18(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rax,%rdx,8), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
addl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x10(%rbp), %rax
movl 0x10(%rax), %edi
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rsi
leaq -0x7c(%rbp), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x167290
movq -0x10(%rbp), %rax
movl 0x18(%rax), %edi
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rsi
leaq -0x80(%rbp), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x167290
movl -0x7c(%rbp), %eax
cmpl -0x80(%rbp), %eax
ja 0xf9310
movl -0x7c(%rbp), %eax
movl %eax, -0xdc(%rbp)
jmp 0xf9319
movl -0x80(%rbp), %eax
movl %eax, -0xdc(%rbp)
movl -0xdc(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movl -0x7c(%rbp), %eax
movq -0x10(%rbp), %rcx
movq 0x48(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq -0x10(%rbp), %rdx
movl 0x10(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rcx,%rdx,8), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addl %ecx, %eax
movl -0x80(%rbp), %ecx
movq -0x10(%rbp), %rdx
movq 0x48(%rdx), %rdx
movq 0x20(%rdx), %rdx
movq -0x10(%rbp), %rsi
movl 0x18(%rsi), %esi
shrl %esi
movl %esi, %esi
movl (%rdx,%rsi,8), %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
addl %edx, %ecx
cmpl %ecx, %eax
jb 0xf93a0
movl -0x7c(%rbp), %eax
movq -0x10(%rbp), %rcx
movq 0x48(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq -0x10(%rbp), %rdx
movl 0x10(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rcx,%rdx,8), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addl %ecx, %eax
movl %eax, -0xe0(%rbp)
jmp 0xf93cb
movl -0x80(%rbp), %eax
movq -0x10(%rbp), %rcx
movq 0x48(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq -0x10(%rbp), %rdx
movl 0x18(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rcx,%rdx,8), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addl %ecx, %eax
movl %eax, -0xe0(%rbp)
movl -0xe0(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x24(%rcx), %eax
jae 0xf947f
movq -0x18(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0xf9435
movq -0x10(%rbp), %rax
movl 0x24(%rax), %edi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %ecx
movq -0x18(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
jmp 0xf9471
movq -0x10(%rbp), %rax
movl 0x24(%rax), %edi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %edx
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x4(%rax)
movq -0x10(%rbp), %rax
movl 0x24(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jbe 0xf9526
movq -0x18(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0xf94e0
movq -0x18(%rbp), %rax
movl 0xc(%rax), %edi
movq -0x10(%rbp), %rax
subl 0x28(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %edx
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x4(%rax)
jmp 0xf9518
movq -0x18(%rbp), %rax
movl 0xc(%rax), %edi
movq -0x10(%rbp), %rax
subl 0x28(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %ecx
movq -0x18(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movl 0x28(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x54(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %ecx
addl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x28(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x10(%rax)
movl -0x28(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x18(%rax)
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movl -0x58(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq -0x10(%rbp), %rax
movl 0x4(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x4(%rax)
movl $0x1, -0x4(%rbp)
jmp 0xf99fe
movl -0x54(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %ecx
addl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0xc(%rax)
movl -0x28(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x10(%rax)
movl -0x28(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x18(%rax)
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movl -0x58(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq -0x10(%rbp), %rax
movl 0x4(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x4(%rax)
jmp 0xf8ae2
movq -0x10(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x10(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
jmp 0xf8a86
movq -0x10(%rbp), %rax
cmpl $-0x1, 0x20(%rax)
je 0xf99f7
movq -0x10(%rbp), %rax
movl 0x20(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x10(%rbp), %rax
movl 0xc(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %ecx
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x20(%rax), %rax
movq -0x10(%rbp), %rdx
movl 0x18(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rax,%rdx,8), %eax
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
addl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0xc(%rcx), %eax
ja 0xf9670
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, -0xe4(%rbp)
jmp 0xf967d
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0xe4(%rbp)
movl -0xe4(%rbp), %eax
movl %eax, -0xe8(%rbp)
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jb 0xf96a8
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xec(%rbp)
jmp 0xf96b5
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xec(%rbp)
movl -0xe8(%rbp), %eax
movl -0xec(%rbp), %ecx
cmpl %ecx, %eax
jbe 0xf973f
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0xc(%rcx), %eax
ja 0xf96e4
movq -0x10(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, -0xf0(%rbp)
jmp 0xf96f1
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0xf0(%rbp)
movl -0xf0(%rbp), %eax
movl %eax, -0xf4(%rbp)
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x18(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jb 0xf971c
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0xf8(%rbp)
jmp 0xf9729
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xf8(%rbp)
movl -0xf4(%rbp), %eax
movl -0xf8(%rbp), %ecx
subl %ecx, %eax
movl %eax, -0xfc(%rbp)
jmp 0xf9749
xorl %eax, %eax
movl %eax, -0xfc(%rbp)
jmp 0xf9749
movl -0xfc(%rbp), %eax
movl %eax, -0x3c(%rbp)
cmpl $0x0, -0x3c(%rbp)
jne 0xf9764
movl $0x0, -0x4(%rbp)
jmp 0xf99fe
movq -0x10(%rbp), %rax
movl 0x10(%rax), %edi
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rsi
leaq -0x84(%rbp), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x167290
movq -0x10(%rbp), %rax
movl 0x18(%rax), %edi
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rsi
leaq -0x88(%rbp), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x167290
movl -0x84(%rbp), %eax
cmpl -0x88(%rbp), %eax
ja 0xf97be
movl -0x84(%rbp), %eax
movl %eax, -0x100(%rbp)
jmp 0xf97ca
movl -0x88(%rbp), %eax
movl %eax, -0x100(%rbp)
movl -0x100(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, (%rax)
movl -0x84(%rbp), %eax
movq -0x10(%rbp), %rcx
movq 0x48(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq -0x10(%rbp), %rdx
movl 0x10(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rcx,%rdx,8), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addl %ecx, %eax
movl -0x88(%rbp), %ecx
movq -0x10(%rbp), %rdx
movq 0x48(%rdx), %rdx
movq 0x20(%rdx), %rdx
movq -0x10(%rbp), %rsi
movl 0x18(%rsi), %esi
shrl %esi
movl %esi, %esi
movl (%rdx,%rsi,8), %edx
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
addl %edx, %ecx
cmpl %ecx, %eax
jb 0xf985a
movl -0x84(%rbp), %eax
movq -0x10(%rbp), %rcx
movq 0x48(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq -0x10(%rbp), %rdx
movl 0x10(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rcx,%rdx,8), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addl %ecx, %eax
movl %eax, -0x104(%rbp)
jmp 0xf9888
movl -0x88(%rbp), %eax
movq -0x10(%rbp), %rcx
movq 0x48(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq -0x10(%rbp), %rdx
movl 0x18(%rdx), %edx
shrl %edx
movl %edx, %edx
movl (%rcx,%rdx,8), %ecx
andl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
addl %ecx, %eax
movl %eax, -0x104(%rbp)
movl -0x104(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x24(%rcx), %eax
jae 0xf993c
movq -0x18(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0xf98f2
movq -0x10(%rbp), %rax
movl 0x24(%rax), %edi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %ecx
movq -0x18(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
jmp 0xf992e
movq -0x10(%rbp), %rax
movl 0x24(%rax), %edi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %edx
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x4(%rax)
movq -0x10(%rbp), %rax
movl 0x24(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jbe 0xf99e3
movq -0x18(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0xf999d
movq -0x18(%rbp), %rax
movl 0xc(%rax), %edi
movq -0x10(%rbp), %rax
subl 0x28(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %edx
movq -0x18(%rbp), %rax
movl 0x4(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x4(%rax)
jmp 0xf99d5
movq -0x18(%rbp), %rax
movl 0xc(%rax), %edi
movq -0x10(%rbp), %rax
subl 0x28(%rax), %edi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
movq -0x18(%rbp), %rax
subl 0x8(%rax), %esi
movq -0x18(%rbp), %rax
movl 0x4(%rax), %edx
movq -0x18(%rbp), %rax
subl (%rax), %edx
callq 0xc14d0
movl %eax, %ecx
movq -0x18(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movl 0x28(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x10(%rbp), %rax
movl $0xffffffff, 0x20(%rax) # imm = 0xFFFFFFFF
movl $0x1, -0x4(%rbp)
jmp 0xf99fe
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
nopw (%rax,%rax)