// File: chhylp123[P]hifiasm/Correct.cpp
// Function: ff_tend(overlap_region*, long, long, double, double, long)
uint32_t inline ff_tend(overlap_region *z, int64_t wn, int64_t dn, double dr, double er, int64_t min_err)
{
    int64_t k, zwn = z->w_list.n, err, mm, qi, ci, cn, ql, ws, we, zs, ze, s, e, os, oe, ovlp; bit_extz_t ez; uint32_t cl; uint16_t c;
    zs = z->x_pos_s; ze = z->x_pos_e + 1; ql = ze - zs; 
    if(ql < wn) return 0; if(dn > (ql*dr)) dn = ql*dr; if(dn < wn) return 0; if(ql < dn) return 0;
    
    s = zs; e = zs + dn;
    // if(z->y_id == 27) fprintf(stderr, "-a-[M::%s] tid::%u\t%.*s\tz::[%ld,%ld)\ti::[%ld,%ld)\n", __func__, z->y_id, (int)Get_NAME_LENGTH(R_INF, z->y_id), Get_NAME(R_INF, z->y_id), zs, ze, s, e);
    for (k = err = mm = 0, qi = zs; (k < zwn) && (z->w_list.a[k].x_start < e); k++) {
        // if(z->y_id == 27) fprintf(stderr, "-a-[M::%s] tid::%u\t%.*s\tw::[%d,%d)\terr::%d\n", __func__, z->y_id, (int)Get_NAME_LENGTH(R_INF, z->y_id), Get_NAME(R_INF, z->y_id), z->w_list.a[k].x_start, z->w_list.a[k].x_end + 1, z->w_list.a[k].error);
        if(!(is_ualn_win(z->w_list.a[k]))) {
            set_bit_extz_t(ez, (*z), k); 
            ci = 0; cn = ez.cigar.n; qi = ez.ts; //ti = ez.ps;
            while (ci < cn && qi < e) {
                ws = qi;
                ci = pop_trace(&(ez.cigar), ci, &c, &cl);
                if(c!=2) qi += cl;
                // if(c!=3) ti += cl; 
                we = qi; 

                if(c == 0) {
                    os = MAX(s, ws); oe = MIN(e, we);
                    ovlp = ((oe>os)? (oe-os):0); mm += ovlp;
                } else {
                    err += cl;
                }
                // assert(is_ovlp_debug(s, e, ws, we, c));

                if((err > min_err) && ((mm + err) > wn) && (err > ((mm + err)*er))) {
                    // fprintf(stderr, "-0-[M::%s] tid::%u\t%.*s\tmm::%ld\terr::%ld\tdn::%ld\twn::%ld\tdif::%f\n", __func__, z->y_id, (int)Get_NAME_LENGTH(R_INF, z->y_id), Get_NAME(R_INF, z->y_id), mm, err, dn, wn, er);
                    return 1;
                }
            }
        } else {
            ws = z->w_list.a[k].x_start; we = z->w_list.a[k].x_end + 1;
            err += we - ws;

            // assert(is_ovlp_debug(s, e, ws, we, -1));

            if((err > min_err) && ((mm + err) > wn) && (err > ((mm + err)*er))) {
                // fprintf(stderr, "-1-[M::%s] tid::%u\t%.*s\tmm::%ld\terr::%ld\tdn::%ld\twn::%ld\tdif::%f\n", __func__, z->y_id, (int)Get_NAME_LENGTH(R_INF, z->y_id), Get_NAME(R_INF, z->y_id), mm, err, dn, wn, er);
                return 1;
            }
        } 
    }

    s = ze - dn; e = ze;
    for (k = zwn - 1, err = mm = 0, qi = ze; (k >= 0) && ((z->w_list.a[k].x_end + 1) > s); k--) {
        if(!(is_ualn_win(z->w_list.a[k]))) {
            set_bit_extz_t(ez, (*z), k); 
            ci = ((int64_t)ez.cigar.n) - 1; qi = ez.te + 1; //ti = ez.pe + 1;
            while (ci >= 0 && qi > s) {
                we = qi;
                ci = pop_trace_back(&(ez.cigar), ci, &c, &cl);
                if(c!=2) qi -= cl;
                // if(c!=3) ti += cl; 
                ws = qi; 

                if(c == 0) {
                    os = MAX(s, ws); oe = MIN(e, we);
                    ovlp = ((oe>os)? (oe-os):0); mm += ovlp;
                } else {
                    err += cl;
                }

                // assert(is_ovlp_debug(s, e, ws, we, c));

                if((err > min_err) && ((mm + err) > wn) && (err > ((mm + err)*er))) {
                    // fprintf(stderr, "-2-[M::%s] tid::%u\t%.*s\tmm::%ld\terr::%ld\tdn::%ld\twn::%ld\tdif::%f\n", __func__, z->y_id, (int)Get_NAME_LENGTH(R_INF, z->y_id), Get_NAME(R_INF, z->y_id), mm, err, dn, wn, er);
                    return 1;
                }
            }
        } else {
            ws = z->w_list.a[k].x_start; we = z->w_list.a[k].x_end + 1;
            err += we - ws;

            // assert(is_ovlp_debug(s, e, ws, we, -1));

            if((err > min_err) && ((mm + err) > wn) && (err > ((mm + err)*er))) {
                // fprintf(stderr, "-3-[M::%s] tid::%u\t%.*s\tmm::%ld\terr::%ld\tdn::%ld\twn::%ld\tdif::%f\n", __func__, z->y_id, (int)Get_NAME_LENGTH(R_INF, z->y_id), Get_NAME(R_INF, z->y_id), mm, err, dn, wn, er);
                return 1;
            }
        } 
    }
    
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1e0, %rsp            # imm = 0x1E0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movsd %xmm0, -0x28(%rbp)
movsd %xmm1, -0x30(%rbp)
movq %rcx, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movq %rax, -0x90(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
addl $0x1, %eax
movl %eax, %eax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
subq -0x90(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x18(%rbp), %rax
jge 0xc251a
movl $0x0, -0x4(%rbp)
jmp 0xc2e33
cvtsi2sdq -0x20(%rbp), %xmm0
cvtsi2sdq -0x78(%rbp), %xmm1
mulsd -0x28(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xc2545
cvtsi2sdq -0x78(%rbp), %xmm0
mulsd -0x28(%rbp), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
cmpq -0x18(%rbp), %rax
jge 0xc255b
movl $0x0, -0x4(%rbp)
jmp 0xc2e33
movq -0x78(%rbp), %rax
cmpq -0x20(%rbp), %rax
jge 0xc2571
movl $0x0, -0x4(%rbp)
jmp 0xc2e33
movq -0x90(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x90(%rbp), %rax
addq -0x20(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq $0x0, -0x58(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x40(%rbp), %rcx
xorl %eax, %eax
cmpq -0x48(%rbp), %rcx
movb %al, -0x19f(%rbp)
jge 0xc25ec
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movslq (%rax), %rax
cmpq -0xa8(%rbp), %rax
setl %al
movb %al, -0x19f(%rbp)
movb -0x19f(%rbp), %al
testb $0x1, %al
jne 0xc25fb
jmp 0xc29cc
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movswl 0x14(%rax), %eax
cmpl $0x7fff, %eax           # imm = 0x7FFF
jne 0xc2652
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
cmpl $0x0, 0x1c(%rax)
jne 0xc2652
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movswl 0x12(%rax), %eax
cmpl $0x0, %eax
jl 0xc2926
jmp 0xc2654
movq -0x10(%rbp), %rax
movq 0x70(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x58(%rcx), %rcx
movq -0x40(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x18(%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movq %rax, -0xe0(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %eax
movq %rax, -0xe8(%rbp)
movq %rax, -0xf0(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl (%rax), %eax
movl %eax, -0x17c(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movl %eax, -0x178(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0x188(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
movl %eax, -0x184(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movswl 0x14(%rax), %eax
movl %eax, -0x16c(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movswl 0x14(%rax), %eax
movl %eax, -0x170(%rbp)
movq $0x0, -0x68(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0x70(%rbp)
movslq -0x17c(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x68(%rbp), %rcx
xorl %eax, %eax
cmpq -0x70(%rbp), %rcx
movb %al, -0x1a0(%rbp)
jge 0xc2790
movq -0x60(%rbp), %rax
cmpq -0xa8(%rbp), %rax
setl %al
movb %al, -0x1a0(%rbp)
movb -0x1a0(%rbp), %al
testb $0x1, %al
jne 0xc279f
jmp 0xc2921
movq -0x60(%rbp), %rax
movq %rax, -0x80(%rbp)
leaq -0x198(%rbp), %rdi
addq $0xa8, %rdi
movq -0x68(%rbp), %rax
movl %eax, %esi
leaq -0x19e(%rbp), %rdx
leaq -0x19c(%rbp), %rcx
callq 0xa1ee0
movl %eax, %eax
movq %rax, -0x68(%rbp)
movzwl -0x19e(%rbp), %eax
cmpl $0x2, %eax
je 0xc27ee
movl -0x19c(%rbp), %eax
addq -0x60(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x88(%rbp)
movzwl -0x19e(%rbp), %eax
cmpl $0x0, %eax
jne 0xc28cc
movq -0xa0(%rbp), %rax
cmpq -0x80(%rbp), %rax
jl 0xc2826
movq -0xa0(%rbp), %rax
movq %rax, -0x1a8(%rbp)
jmp 0xc2831
movq -0x80(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rax
cmpq -0x88(%rbp), %rax
jg 0xc285f
movq -0xa8(%rbp), %rax
movq %rax, -0x1b0(%rbp)
jmp 0xc286d
movq -0x88(%rbp), %rax
movq %rax, -0x1b0(%rbp)
movq -0x1b0(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
jle 0xc28a2
movq -0xb8(%rbp), %rax
subq -0xb0(%rbp), %rax
movq %rax, -0x1b8(%rbp)
jmp 0xc28ad
xorl %eax, %eax
movq %rax, -0x1b8(%rbp)
jmp 0xc28ad
movq -0x1b8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
addq -0x58(%rbp), %rax
movq %rax, -0x58(%rbp)
jmp 0xc28da
movl -0x19c(%rbp), %eax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x38(%rbp), %rax
jle 0xc291c
movq -0x58(%rbp), %rax
addq -0x50(%rbp), %rax
cmpq -0x18(%rbp), %rax
jle 0xc291c
cvtsi2sdq -0x50(%rbp), %xmm0
movq -0x58(%rbp), %rax
addq -0x50(%rbp), %rax
cvtsi2sd %rax, %xmm1
mulsd -0x30(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xc291c
movl $0x1, -0x4(%rbp)
jmp 0xc2e33
jmp 0xc276a
jmp 0xc29b9
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movslq (%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
addl $0x1, %eax
cltq
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
subq -0x80(%rbp), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x38(%rbp), %rax
jle 0xc29b7
movq -0x58(%rbp), %rax
addq -0x50(%rbp), %rax
cmpq -0x18(%rbp), %rax
jle 0xc29b7
cvtsi2sdq -0x50(%rbp), %xmm0
movq -0x58(%rbp), %rax
addq -0x50(%rbp), %rax
cvtsi2sd %rax, %xmm1
mulsd -0x30(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xc29b7
movl $0x1, -0x4(%rbp)
jmp 0xc2e33
jmp 0xc29b9
jmp 0xc29bb
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0xc25b4
movq -0x98(%rbp), %rax
subq -0x20(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x48(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x40(%rbp)
movq $0x0, -0x58(%rbp)
movq $0x0, -0x50(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x60(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x40(%rbp)
movb %al, -0x1b9(%rbp)
jl 0xc2a4d
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
addl $0x1, %eax
cltq
cmpq -0xa0(%rbp), %rax
setg %al
movb %al, -0x1b9(%rbp)
movb -0x1b9(%rbp), %al
testb $0x1, %al
jne 0xc2a5c
jmp 0xc2e2c
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movswl 0x14(%rax), %eax
cmpl $0x7fff, %eax           # imm = 0x7FFF
jne 0xc2ab3
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
cmpl $0x0, 0x1c(%rax)
jne 0xc2ab3
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movswl 0x12(%rax), %eax
cmpl $0x0, %eax
jl 0xc2d89
jmp 0xc2ab5
movq -0x10(%rbp), %rax
movq 0x70(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x58(%rcx), %rcx
movq -0x40(%rbp), %rdx
shlq $0x5, %rdx
addq %rdx, %rcx
movl 0x18(%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movq %rax, -0xe0(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %eax
movq %rax, -0xe8(%rbp)
movq %rax, -0xf0(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl (%rax), %eax
movl %eax, -0x17c(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movl %eax, -0x178(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movl %eax, -0x188(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
movl %eax, -0x184(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movswl 0x14(%rax), %eax
movl %eax, -0x16c(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movswl 0x14(%rax), %eax
movl %eax, -0x170(%rbp)
movq -0xf0(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x68(%rbp)
movl -0x178(%rbp), %eax
addl $0x1, %eax
cltq
movq %rax, -0x60(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x68(%rbp)
movb %al, -0x1ba(%rbp)
jl 0xc2bee
movq -0x60(%rbp), %rax
cmpq -0xa0(%rbp), %rax
setg %al
movb %al, -0x1ba(%rbp)
movb -0x1ba(%rbp), %al
testb $0x1, %al
jne 0xc2bfd
jmp 0xc2d84
movq -0x60(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq -0x198(%rbp), %rdi
addq $0xa8, %rdi
movq -0x68(%rbp), %rax
movl %eax, %esi
leaq -0x19e(%rbp), %rdx
leaq -0x19c(%rbp), %rcx
callq 0xc1f00
cltq
movq %rax, -0x68(%rbp)
movzwl -0x19e(%rbp), %eax
cmpl $0x2, %eax
je 0xc2c54
movl -0x19c(%rbp), %eax
movl %eax, %ecx
movq -0x60(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x80(%rbp)
movzwl -0x19e(%rbp), %eax
cmpl $0x0, %eax
jne 0xc2d2f
movq -0xa0(%rbp), %rax
cmpq -0x80(%rbp), %rax
jl 0xc2c89
movq -0xa0(%rbp), %rax
movq %rax, -0x1c8(%rbp)
jmp 0xc2c94
movq -0x80(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movq -0x1c8(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rax
cmpq -0x88(%rbp), %rax
jg 0xc2cc2
movq -0xa8(%rbp), %rax
movq %rax, -0x1d0(%rbp)
jmp 0xc2cd0
movq -0x88(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq -0x1d0(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
cmpq -0xb0(%rbp), %rax
jle 0xc2d05
movq -0xb8(%rbp), %rax
subq -0xb0(%rbp), %rax
movq %rax, -0x1d8(%rbp)
jmp 0xc2d10
xorl %eax, %eax
movq %rax, -0x1d8(%rbp)
jmp 0xc2d10
movq -0x1d8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
addq -0x58(%rbp), %rax
movq %rax, -0x58(%rbp)
jmp 0xc2d3d
movl -0x19c(%rbp), %eax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x38(%rbp), %rax
jle 0xc2d7f
movq -0x58(%rbp), %rax
addq -0x50(%rbp), %rax
cmpq -0x18(%rbp), %rax
jle 0xc2d7f
cvtsi2sdq -0x50(%rbp), %xmm0
movq -0x58(%rbp), %rax
addq -0x50(%rbp), %rax
cvtsi2sd %rax, %xmm1
mulsd -0x30(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xc2d7f
movl $0x1, -0x4(%rbp)
jmp 0xc2e33
jmp 0xc2bcb
jmp 0xc2e19
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movslq (%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x10(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x40(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
addl $0x1, %eax
cltq
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
subq -0x80(%rbp), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x38(%rbp), %rax
jle 0xc2e17
movq -0x58(%rbp), %rax
addq -0x50(%rbp), %rax
cmpq -0x18(%rbp), %rax
jle 0xc2e17
cvtsi2sdq -0x50(%rbp), %xmm0
movq -0x58(%rbp), %rax
addq -0x50(%rbp), %rax
cvtsi2sd %rax, %xmm1
mulsd -0x30(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xc2e17
movl $0x1, -0x4(%rbp)
jmp 0xc2e33
jmp 0xc2e19
jmp 0xc2e1b
movq -0x40(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0xc2a13
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x1e0, %rsp            # imm = 0x1E0
popq %rbp
retq
nop