// File: chhylp123[P]hifiasm/Overlaps.cpp
// Function: print_overlaps(ma_hit_t_alloc*, long long, long long, long long)
void print_overlaps(ma_hit_t_alloc* paf, long long rLen, long long interval_s, long long interval_e)
{
    long long j;

    fprintf(stderr, "left: \n");
    for (j = 0; j < paf->length; j++)
    {
        if(Get_qs(paf->buffer[j]) == 0)
        {
            fprintf(stderr, "?????? interval_s: %lld, interval_e: %lld, qn: %u, tn: %u, j: %lld, qs: %u, qe: %u, ts: %u, te: %u, dir: %u\n",
            interval_s, interval_e,
            Get_qn(paf->buffer[j]), Get_tn(paf->buffer[j]),
            j, Get_qs(paf->buffer[j]), Get_qe(paf->buffer[j]),
            Get_ts(paf->buffer[j]), Get_te(paf->buffer[j]),
            paf->buffer[j].rev);

            fprintf(stderr, "%.*s\n", (int)Get_NAME_LENGTH(R_INF, Get_tn(paf->buffer[j])),
                Get_NAME(R_INF, Get_tn(paf->buffer[j])));
        }   
    }

    fprintf(stderr, "right: \n");
    for (j = 0; j < paf->length; j++)
    {
        if(Get_qe(paf->buffer[j]) == rLen)
        {
            fprintf(stderr, "?????? interval_s: %lld, interval_e: %lld, qn: %u, tn: %u, j: %lld, qs: %u, qe: %u, ts: %u, te: %u, dir: %u\n",
            interval_s, interval_e,
            Get_qn(paf->buffer[j]), Get_tn(paf->buffer[j]),
            j, Get_qs(paf->buffer[j]), Get_qe(paf->buffer[j]),
            Get_ts(paf->buffer[j]), Get_te(paf->buffer[j]),
            paf->buffer[j].rev);
            
            fprintf(stderr, "%.*s\n", (int)Get_NAME_LENGTH(R_INF, Get_tn(paf->buffer[j])),
                Get_NAME(R_INF, Get_tn(paf->buffer[j])));
        }
    }


    fprintf(stderr, "middle: \n");
    for (j = 0; j < paf->length; j++)
    {
        if(Get_qs(paf->buffer[j]) != 0 && Get_qe(paf->buffer[j]) != rLen)
        {
            fprintf(stderr, "?????? interval_s: %lld, interval_e: %lld, qn: %u, tn: %u, j: %lld, qs: %u, qe: %u, ts: %u, te: %u, dir: %u\n",
            interval_s, interval_e,
            Get_qn(paf->buffer[j]), Get_tn(paf->buffer[j]),
            j, Get_qs(paf->buffer[j]), Get_qe(paf->buffer[j]),
            Get_ts(paf->buffer[j]), Get_te(paf->buffer[j]),
            paf->buffer[j].rev);
            
            fprintf(stderr, "%.*s\n", (int)Get_NAME_LENGTH(R_INF, Get_tn(paf->buffer[j])),
                Get_NAME(R_INF, Get_tn(paf->buffer[j])));
        }
    }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x58, %rsp
movq %rdi, -0x20(%rbp)
movq %rsi, -0x28(%rbp)
movq %rdx, -0x30(%rbp)
movq %rcx, -0x38(%rbp)
movq 0x2f18fc(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x2b42b0(%rip), %rsi    # 0x38699e
movb $0x0, %al
callq 0x22a0
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq -0x20(%rbp), %rcx
movl 0xc(%rcx), %ecx
cmpq %rcx, %rax
jge 0xd289f
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movq (%rax), %rax
cmpl $0x0, %eax
jne 0xd288c
movq 0x2f18ad(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x30(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
shrq $0x20, %rax
movl %eax, %r8d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0xc(%rax), %r9d
movq -0x40(%rbp), %r15
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
movl %eax, %r14d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0x8(%rax), %ebx
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0x10(%rax), %r11d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0x14(%rax), %r10d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movq 0x18(%rax), %rax
shrq $0x1f, %rax
andq $0x1, %rax
leaq 0x2b41c9(%rip), %rsi    # 0x3869a6
movq %r15, (%rsp)
movl %r14d, 0x8(%rsp)
movl %ebx, 0x10(%rsp)
movl %r11d, 0x18(%rsp)
movl %r10d, 0x20(%rsp)
movl %eax, 0x28(%rsp)
movb $0x0, %al
callq 0x22a0
movq 0x2f17da(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x2f2ac0(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
imulq $0x28, -0x40(%rbp), %rdx
addq %rdx, %rcx
movl 0xc(%rcx), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
leaq 0x2f2a9a(%rip), %rcx    # 0x3c52d0
movq 0x40(%rcx), %rcx
movq -0x20(%rbp), %rdx
movq (%rdx), %rdx
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rdx
movl 0xc(%rdx), %edx
subq (%rcx,%rdx,8), %rax
movl %eax, %edx
leaq 0x2f2a77(%rip), %rax    # 0x3c52d0
movq 0x8(%rax), %rcx
leaq 0x2f2a6c(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movq -0x20(%rbp), %rsi
movq (%rsi), %rsi
imulq $0x28, -0x40(%rbp), %r8
addq %r8, %rsi
movl 0xc(%rsi), %esi
addq (%rax,%rsi,8), %rcx
leaq 0x2c44c5(%rip), %rsi    # 0x396d4a
movb $0x0, %al
callq 0x22a0
jmp 0xd288e
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0xd26fd
movq 0x2f173a(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x2b4163(%rip), %rsi    # 0x386a13
movb $0x0, %al
callq 0x22a0
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq -0x20(%rbp), %rcx
movl 0xc(%rcx), %ecx
cmpq %rcx, %rax
jge 0xd2a62
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
cmpq -0x28(%rbp), %rax
jne 0xd2a4f
movq 0x2f16ea(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x30(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
shrq $0x20, %rax
movl %eax, %r8d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0xc(%rax), %r9d
movq -0x40(%rbp), %r15
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
movl %eax, %r14d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0x8(%rax), %ebx
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0x10(%rax), %r11d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0x14(%rax), %r10d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movq 0x18(%rax), %rax
shrq $0x1f, %rax
andq $0x1, %rax
leaq 0x2b4006(%rip), %rsi    # 0x3869a6
movq %r15, (%rsp)
movl %r14d, 0x8(%rsp)
movl %ebx, 0x10(%rsp)
movl %r11d, 0x18(%rsp)
movl %r10d, 0x20(%rsp)
movl %eax, 0x28(%rsp)
movb $0x0, %al
callq 0x22a0
movq 0x2f1617(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x2f28fd(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
imulq $0x28, -0x40(%rbp), %rdx
addq %rdx, %rcx
movl 0xc(%rcx), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
leaq 0x2f28d7(%rip), %rcx    # 0x3c52d0
movq 0x40(%rcx), %rcx
movq -0x20(%rbp), %rdx
movq (%rdx), %rdx
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rdx
movl 0xc(%rdx), %edx
subq (%rcx,%rdx,8), %rax
movl %eax, %edx
leaq 0x2f28b4(%rip), %rax    # 0x3c52d0
movq 0x8(%rax), %rcx
leaq 0x2f28a9(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movq -0x20(%rbp), %rsi
movq (%rsi), %rsi
imulq $0x28, -0x40(%rbp), %r8
addq %r8, %rsi
movl 0xc(%rsi), %esi
addq (%rax,%rsi,8), %rcx
leaq 0x2c4302(%rip), %rsi    # 0x396d4a
movb $0x0, %al
callq 0x22a0
jmp 0xd2a51
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0xd28bf
movq 0x2f1577(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x2b3fa9(%rip), %rsi    # 0x386a1c
movb $0x0, %al
callq 0x22a0
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq -0x20(%rbp), %rcx
movl 0xc(%rcx), %ecx
cmpq %rcx, %rax
jge 0xd2c40
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movq (%rax), %rax
cmpl $0x0, %eax
je 0xd2c2d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
cmpq -0x28(%rbp), %rax
je 0xd2c2d
movq 0x2f150c(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x30(%rbp), %rdx
movq -0x38(%rbp), %rcx
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
shrq $0x20, %rax
movl %eax, %r8d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0xc(%rax), %r9d
movq -0x40(%rbp), %r15
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
movl %eax, %r14d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0x8(%rax), %ebx
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0x10(%rax), %r11d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movl 0x14(%rax), %r10d
movq -0x20(%rbp), %rax
movq (%rax), %rax
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rax
movq 0x18(%rax), %rax
shrq $0x1f, %rax
andq $0x1, %rax
leaq 0x2b3e28(%rip), %rsi    # 0x3869a6
movq %r15, (%rsp)
movl %r14d, 0x8(%rsp)
movl %ebx, 0x10(%rsp)
movl %r11d, 0x18(%rsp)
movl %r10d, 0x20(%rsp)
movl %eax, 0x28(%rsp)
movb $0x0, %al
callq 0x22a0
movq 0x2f1439(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x2f271f(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rcx
imulq $0x28, -0x40(%rbp), %rdx
addq %rdx, %rcx
movl 0xc(%rcx), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
leaq 0x2f26f9(%rip), %rcx    # 0x3c52d0
movq 0x40(%rcx), %rcx
movq -0x20(%rbp), %rdx
movq (%rdx), %rdx
imulq $0x28, -0x40(%rbp), %rsi
addq %rsi, %rdx
movl 0xc(%rdx), %edx
subq (%rcx,%rdx,8), %rax
movl %eax, %edx
leaq 0x2f26d6(%rip), %rax    # 0x3c52d0
movq 0x8(%rax), %rcx
leaq 0x2f26cb(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movq -0x20(%rbp), %rsi
movq (%rsi), %rsi
imulq $0x28, -0x40(%rbp), %r8
addq %r8, %rsi
movl 0xc(%rsi), %esi
addq (%rax,%rsi,8), %rcx
leaq 0x2c4124(%rip), %rsi    # 0x396d4a
movb $0x0, %al
callq 0x22a0
jmp 0xd2c2f
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0xd2a82
addq $0x58, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax,%rax)