// File: chhylp123[P]hifiasm/Overlaps.cpp
// Function: mark_telo_ends(void*, long, int)
static void mark_telo_ends(void *data, long i, int tid) // callback for kt_for()
{
    telo_end_pip_t *sl = (telo_end_pip_t *)data;
    int64_t k, l, rlen, tlen, sc, max_sc, pen = sl->penalty, max_drop = sl->max_drop, min_sc = sl->min_sc, z; 
    uint64_t rid = i, c, x, mask = sl->u->mask, hit, xz; 
    UC_Read *rr = &(sl->aux[tid]); rlen = Get_READ_LENGTH((*(sl->Rinf)), rid); sl->u->hh[rid] = 0;
    recover_UC_Read(rr, sl->Rinf, rid); assert((rr->length) == rlen); tlen = sl->u->tlen;

    for (k = l = 0, sc = max_sc = x = 0; k < rlen; k++) { // 5'-end, check CCCTAA
        hit = 0; c = seq_nt6_table[(uint8_t)rr->seq[k]];
        if (c >= 0 && c <= 3) { // not N
            x = (x<<2 | (c)) & mask;
            if (((++l) >= tlen) && (kh_get(64, sl->h, x) != kh_end(sl->h))) {// x is at least 6bp long and is a telomere motif
                hit = 1;
            }
        } else {l = 0, x = 0;} // N, ambiguous base
        if(k >= tlen) sc += ((hit)?(1):(-pen));
        if (sc > max_sc) {max_sc = sc;}
		else if ((max_sc - sc) > max_drop) {break;}

        if(max_sc >= min_sc) break;
    }

    if(max_sc >= min_sc) {
        for (k = l = 0, sc = max_sc = x = 0, xz = ((uint64_t)-1); k < rlen; k++) { // 5'-end, check CCCTAA
            hit = 0; c = seq_nt6_table[(uint8_t)rr->seq[k]];
            if (c >= 0 && c <= 3) { // not N
                x = (x<<2 | (c)) & mask;
                if (((++l) >= tlen) && (kh_get(64, sl->h, x) != kh_end(sl->h))) {// x is at least 6bp long and is a telomere motif
                    if((xz != ((uint64_t)-1)) && (xz == x)) {
                        hit = 1;
                    } else {
                        for (z = 0, xz = sl->u->tm; (z < tlen) && (xz != x); z++) {
                            xz = (((xz>>((tlen-1)<<1))&(3ULL))|(xz<<2))&mask;
                        }
                        if((z < tlen) && (xz == x)) hit = 1;
                    }
                }
            } else {l = 0, x = 0;} // N, ambiguous base

            if(!hit) {
                xz = ((uint64_t)-1);
            } else {
                xz = (((x>>((tlen-1)<<1))&(3ULL))|(x<<2))&mask;
            }
            if(k >= tlen) sc += ((hit)?(1):(-pen));
            if (sc > max_sc) {max_sc = sc;}
            else if ((max_sc - sc) > max_drop) {break;}

            if(max_sc >= min_sc) break;
        }

        if(max_sc >= min_sc) sl->u->hh[rid] |= 1;
    }






    for (k = rlen-1, l = 0, sc = max_sc = x = 0; k >= 0; --k) { // 3'-end
        hit = 0; c = seq_nt6_table[(uint8_t)(RC_CHAR(rr->seq[k]))];
        if (c >= 0 && c <= 3) { // not N
            x = (x<<2 | (c)) & mask;
            if (((++l) >= tlen) && (kh_get(64, sl->h, x) != kh_end(sl->h))) {// x is at least 6bp long and is a telomere motif
                hit = 1;
            }
        } else {l = 0, x = 0;} // N, ambiguous base
        if((rlen - k) >= tlen) sc += ((hit)?(1):(-pen));
        if (sc > max_sc) {max_sc = sc;}
		else if ((max_sc - sc) > max_drop) {break;}

        if(max_sc >= min_sc) break;
    }

    if(max_sc >= min_sc) {
        for (k = rlen-1, l = 0, sc = max_sc = x = 0, xz = ((uint64_t)-1); k >= 0 ; --k) { // 3'-end
            hit = 0; c = seq_nt6_table[(uint8_t)(RC_CHAR(rr->seq[k]))];
            if (c >= 0 && c <= 3) { // not N
                x = (x<<2 | (c)) & mask;
                if (((++l) >= tlen) && (kh_get(64, sl->h, x) != kh_end(sl->h))) {// x is at least 6bp long and is a telomere motif
                    if((xz != ((uint64_t)-1)) && (xz == x)) {
                        hit = 1;
                    } else {
                        for (z = 0, xz = sl->u->tm; (z < tlen) && (xz != x); z++) {
                            xz = (((xz>>((tlen-1)<<1))&(3ULL))|(xz<<2))&mask;
                        }
                        if((z < tlen) && (xz == x)) hit = 1;
                    }
                }
            } else {l = 0, x = 0;} // N, ambiguous base

            if(!hit) {
                xz = ((uint64_t)-1);
            } else {
                xz = (((x>>((tlen-1)<<1))&(3ULL))|(x<<2))&mask;
            }
            if((rlen - k) >= tlen) sc += ((hit)?(1):(-pen));
            if (sc > max_sc) {max_sc = sc;}
            else if ((max_sc - sc) > max_drop) {break;}

            if(max_sc >= min_sc) break;
        }

        if(max_sc >= min_sc) sl->u->hh[rid] |= 2;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x20(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x90(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x14(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0xa8(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movq -0x78(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x38(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq -0x78(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0xa8(%rbp), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rsi
movq -0x78(%rbp), %rdx
callq 0xa380
movq -0xa8(%rbp), %rax
movq 0x8(%rax), %rax
cmpq -0x38(%rbp), %rax
jne 0xcc3ac
jmp 0xcc3cb
leaq 0x2bd956(%rip), %rdi    # 0x389d09
leaq 0x2ba503(%rip), %rsi    # 0x3868bd
movl $0xc5, %edx
leaq 0x2bd958(%rip), %rcx    # 0x389d1e
callq 0x2130
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x40(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x28(%rbp)
movq $0x0, -0x88(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x38(%rbp), %rax
jge 0xcc542
movq $0x0, -0x98(%rbp)
movq -0xa8(%rbp), %rax
movq (%rax), %rax
movq -0x28(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x2f8216(%rip), %rax    # 0x3c4650
movzbl (%rax,%rcx), %eax
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x80(%rbp)
jb 0xcc4ac
cmpq $0x3, -0x80(%rbp)
ja 0xcc4ac
movq -0x88(%rbp), %rax
shlq $0x2, %rax
orq -0x80(%rbp), %rax
andq -0x90(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
cmpq -0x40(%rbp), %rax
jl 0xcc4aa
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x88(%rbp), %rsi
callq 0x1662a0
movq -0x20(%rbp), %rcx
movq 0x18(%rcx), %rcx
cmpl (%rcx), %eax
je 0xcc4aa
movq $0x1, -0x98(%rbp)
jmp 0xcc4bf
movq $0x0, -0x30(%rbp)
movq $0x0, -0x88(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x40(%rbp), %rax
jl 0xcc4fd
cmpq $0x0, -0x98(%rbp)
je 0xcc4e1
movl $0x1, %eax
movq %rax, -0xb0(%rbp)
jmp 0xcc4ee
xorl %eax, %eax
subq -0x58(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jle 0xcc511
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0xcc523
movq -0x50(%rbp), %rax
subq -0x48(%rbp), %rax
cmpq -0x60(%rbp), %rax
jle 0xcc521
jmp 0xcc542
jmp 0xcc523
movq -0x50(%rbp), %rax
cmpq -0x68(%rbp), %rax
jl 0xcc52f
jmp 0xcc542
jmp 0xcc531
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0xcc406
movq -0x50(%rbp), %rax
cmpq -0x68(%rbp), %rax
jl 0xcc81f
movq $0x0, -0x30(%rbp)
movq $0x0, -0x28(%rbp)
movq $0x0, -0x88(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
movq $-0x1, -0xa0(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x38(%rbp), %rax
jge 0xcc7f9
movq $0x0, -0x98(%rbp)
movq -0xa8(%rbp), %rax
movq (%rax), %rax
movq -0x28(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x2f8096(%rip), %rax    # 0x3c4650
movzbl (%rax,%rcx), %eax
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x80(%rbp)
jb 0xcc717
cmpq $0x3, -0x80(%rbp)
ja 0xcc717
movq -0x88(%rbp), %rax
shlq $0x2, %rax
orq -0x80(%rbp), %rax
andq -0x90(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
cmpq -0x40(%rbp), %rax
jl 0xcc715
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x88(%rbp), %rsi
callq 0x1662a0
movq -0x20(%rbp), %rcx
movq 0x18(%rcx), %rcx
cmpl (%rcx), %eax
je 0xcc715
cmpq $-0x1, -0xa0(%rbp)
je 0xcc659
movq -0xa0(%rbp), %rax
cmpq -0x88(%rbp), %rax
jne 0xcc659
movq $0x1, -0x98(%rbp)
jmp 0xcc713
movq $0x0, -0x70(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x70(%rbp), %rcx
xorl %eax, %eax
cmpq -0x40(%rbp), %rcx
movb %al, -0xb1(%rbp)
jge 0xcc69d
movq -0xa0(%rbp), %rax
cmpq -0x88(%rbp), %rax
setne %al
movb %al, -0xb1(%rbp)
movb -0xb1(%rbp), %al
testb $0x1, %al
jne 0xcc6a9
jmp 0xcc6ec
movq -0xa0(%rbp), %rax
movq -0x40(%rbp), %rcx
subq $0x1, %rcx
shlq %rcx
shrq %cl, %rax
andq $0x3, %rax
movq -0xa0(%rbp), %rcx
shlq $0x2, %rcx
orq %rcx, %rax
andq -0x90(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0xcc674
movq -0x70(%rbp), %rax
cmpq -0x40(%rbp), %rax
jge 0xcc711
movq -0xa0(%rbp), %rax
cmpq -0x88(%rbp), %rax
jne 0xcc711
movq $0x1, -0x98(%rbp)
jmp 0xcc713
jmp 0xcc715
jmp 0xcc72a
movq $0x0, -0x30(%rbp)
movq $0x0, -0x88(%rbp)
cmpq $0x0, -0x98(%rbp)
jne 0xcc741
movq $-0x1, -0xa0(%rbp)
jmp 0xcc776
movq -0x88(%rbp), %rax
movq -0x40(%rbp), %rcx
subq $0x1, %rcx
shlq %rcx
shrq %cl, %rax
andq $0x3, %rax
movq -0x88(%rbp), %rcx
shlq $0x2, %rcx
orq %rcx, %rax
andq -0x90(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x40(%rbp), %rax
jl 0xcc7b4
cmpq $0x0, -0x98(%rbp)
je 0xcc798
movl $0x1, %eax
movq %rax, -0xc0(%rbp)
jmp 0xcc7a5
xorl %eax, %eax
subq -0x58(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jle 0xcc7c8
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0xcc7da
movq -0x50(%rbp), %rax
subq -0x48(%rbp), %rax
cmpq -0x60(%rbp), %rax
jle 0xcc7d8
jmp 0xcc7f9
jmp 0xcc7da
movq -0x50(%rbp), %rax
cmpq -0x68(%rbp), %rax
jl 0xcc7e6
jmp 0xcc7f9
jmp 0xcc7e8
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0xcc586
movq -0x50(%rbp), %rax
cmpq -0x68(%rbp), %rax
jl 0xcc81d
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq -0x78(%rbp), %rcx
movzbl (%rax,%rcx), %edx
orl $0x1, %edx
movb %dl, (%rax,%rcx)
jmp 0xcc81f
movq -0x38(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x88(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
cmpq $0x0, -0x28(%rbp)
jl 0xcc9a5
movq $0x0, -0x98(%rbp)
movq -0xa8(%rbp), %rax
movq (%rax), %rax
movq -0x28(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x2f7dd1(%rip), %rax    # 0x3c4650
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x2f7ec9(%rip), %rax    # 0x3c4755
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x2f7db7(%rip), %rax    # 0x3c4650
movzbl (%rax,%rcx), %eax
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x80(%rbp)
jb 0xcc90b
cmpq $0x3, -0x80(%rbp)
ja 0xcc90b
movq -0x88(%rbp), %rax
shlq $0x2, %rax
orq -0x80(%rbp), %rax
andq -0x90(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
cmpq -0x40(%rbp), %rax
jl 0xcc909
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x88(%rbp), %rsi
callq 0x1662a0
movq -0x20(%rbp), %rcx
movq 0x18(%rcx), %rcx
cmpl (%rcx), %eax
je 0xcc909
movq $0x1, -0x98(%rbp)
jmp 0xcc91e
movq $0x0, -0x30(%rbp)
movq $0x0, -0x88(%rbp)
movq -0x38(%rbp), %rax
subq -0x28(%rbp), %rax
cmpq -0x40(%rbp), %rax
jl 0xcc960
cmpq $0x0, -0x98(%rbp)
je 0xcc944
movl $0x1, %eax
movq %rax, -0xc8(%rbp)
jmp 0xcc951
xorl %eax, %eax
subq -0x58(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jle 0xcc974
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0xcc986
movq -0x50(%rbp), %rax
subq -0x48(%rbp), %rax
cmpq -0x60(%rbp), %rax
jle 0xcc984
jmp 0xcc9a5
jmp 0xcc986
movq -0x50(%rbp), %rax
cmpq -0x68(%rbp), %rax
jl 0xcc992
jmp 0xcc9a5
jmp 0xcc994
movq -0x28(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0xcc84e
movq -0x50(%rbp), %rax
cmpq -0x68(%rbp), %rax
jl 0xccca1
movq -0x38(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x88(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
movq $-0x1, -0xa0(%rbp)
cmpq $0x0, -0x28(%rbp)
jl 0xccc7b
movq $0x0, -0x98(%rbp)
movq -0xa8(%rbp), %rax
movq (%rax), %rax
movq -0x28(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x2f7c32(%rip), %rax    # 0x3c4650
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x2f7d2a(%rip), %rax    # 0x3c4755
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x2f7c18(%rip), %rax    # 0x3c4650
movzbl (%rax,%rcx), %eax
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x80(%rbp)
jb 0xccb95
cmpq $0x3, -0x80(%rbp)
ja 0xccb95
movq -0x88(%rbp), %rax
shlq $0x2, %rax
orq -0x80(%rbp), %rax
andq -0x90(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
cmpq -0x40(%rbp), %rax
jl 0xccb93
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x88(%rbp), %rsi
callq 0x1662a0
movq -0x20(%rbp), %rcx
movq 0x18(%rcx), %rcx
cmpl (%rcx), %eax
je 0xccb93
cmpq $-0x1, -0xa0(%rbp)
je 0xccad7
movq -0xa0(%rbp), %rax
cmpq -0x88(%rbp), %rax
jne 0xccad7
movq $0x1, -0x98(%rbp)
jmp 0xccb91
movq $0x0, -0x70(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x70(%rbp), %rcx
xorl %eax, %eax
cmpq -0x40(%rbp), %rcx
movb %al, -0xc9(%rbp)
jge 0xccb1b
movq -0xa0(%rbp), %rax
cmpq -0x88(%rbp), %rax
setne %al
movb %al, -0xc9(%rbp)
movb -0xc9(%rbp), %al
testb $0x1, %al
jne 0xccb27
jmp 0xccb6a
movq -0xa0(%rbp), %rax
movq -0x40(%rbp), %rcx
subq $0x1, %rcx
shlq %rcx
shrq %cl, %rax
andq $0x3, %rax
movq -0xa0(%rbp), %rcx
shlq $0x2, %rcx
orq %rcx, %rax
andq -0x90(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
jmp 0xccaf2
movq -0x70(%rbp), %rax
cmpq -0x40(%rbp), %rax
jge 0xccb8f
movq -0xa0(%rbp), %rax
cmpq -0x88(%rbp), %rax
jne 0xccb8f
movq $0x1, -0x98(%rbp)
jmp 0xccb91
jmp 0xccb93
jmp 0xccba8
movq $0x0, -0x30(%rbp)
movq $0x0, -0x88(%rbp)
cmpq $0x0, -0x98(%rbp)
jne 0xccbbf
movq $-0x1, -0xa0(%rbp)
jmp 0xccbf4
movq -0x88(%rbp), %rax
movq -0x40(%rbp), %rcx
subq $0x1, %rcx
shlq %rcx
shrq %cl, %rax
andq $0x3, %rax
movq -0x88(%rbp), %rcx
shlq $0x2, %rcx
orq %rcx, %rax
andq -0x90(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x38(%rbp), %rax
subq -0x28(%rbp), %rax
cmpq -0x40(%rbp), %rax
jl 0xccc36
cmpq $0x0, -0x98(%rbp)
je 0xccc1a
movl $0x1, %eax
movq %rax, -0xd8(%rbp)
jmp 0xccc27
xorl %eax, %eax
subq -0x58(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jle 0xccc4a
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0xccc5c
movq -0x50(%rbp), %rax
subq -0x48(%rbp), %rax
cmpq -0x60(%rbp), %rax
jle 0xccc5a
jmp 0xccc7b
jmp 0xccc5c
movq -0x50(%rbp), %rax
cmpq -0x68(%rbp), %rax
jl 0xccc68
jmp 0xccc7b
jmp 0xccc6a
movq -0x28(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0xcc9ed
movq -0x50(%rbp), %rax
cmpq -0x68(%rbp), %rax
jl 0xccc9f
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq -0x78(%rbp), %rcx
movzbl (%rax,%rcx), %edx
orl $0x2, %edx
movb %dl, (%rax,%rcx)
jmp 0xccca1
addq $0xe0, %rsp
popq %rbp
retq
nopw (%rax,%rax)