// File: chhylp123[P]hifiasm/Overlaps.cpp
// Function: debug_info_of_specfic_read(char const*, ma_hit_t_alloc*, ma_hit_t_alloc*, int, char const*)
void debug_info_of_specfic_read(const char* name, ma_hit_t_alloc* sources, ma_hit_t_alloc* reverse_sources, int id, const char* command)
{
    long long i, j, Len;
    uint32_t tn;

    if(id == -1)
    {
        i = 0;
        Len = R_INF.total_reads;
    }
    else
    {
        i = id;
        Len = id + 1;
    }
    

    for (; i < Len; i++)
    {
        if(memcmp(name, Get_NAME(R_INF, i), Get_NAME_LENGTH(R_INF, i)) == 0)
        {
            fprintf(stderr, "\n\n\nafter %s\n", command);

            fprintf(stderr, "****************ma_hit_t (%lld)ref_read: %.*s, len: %lu****************\n", 
					i, (int)Get_NAME_LENGTH(R_INF, i), Get_NAME(R_INF, i), (unsigned long)Get_READ_LENGTH(R_INF, i));


            fprintf(stderr, "sources Len: %d, is_fully_corrected: %d\n", 
            sources[i].length, sources[i].is_fully_corrected);

            for (j = 0; j < sources[i].length; j++)
            {
                tn = Get_tn(sources[i].buffer[j]);
                fprintf(stderr, "target: %.*s, qs: %u, qe: %u, ts: %u, te: %u, ml: %u, rev: %u, el: %u, del: %u\n", 
                (int)Get_NAME_LENGTH(R_INF, tn), Get_NAME(R_INF, tn),
                Get_qs(sources[i].buffer[j]),
                Get_qe(sources[i].buffer[j]),
                Get_ts(sources[i].buffer[j]),
                Get_te(sources[i].buffer[j]),
                sources[i].buffer[j].ml,
                sources[i].buffer[j].rev,
                sources[i].buffer[j].el,
                (uint32_t)sources[i].buffer[j].del);
            }


            
            fprintf(stderr, "######reverse_query_read Len: %d\n", reverse_sources[i].length);



            for (j = 0; j < reverse_sources[i].length; j++)
            {
                tn = Get_tn(reverse_sources[i].buffer[j]);
                fprintf(stderr, "target: %.*s, qs: %u, qe: %u, ts: %u, te: %u, rev: %u, del: %u\n", 
                (int)Get_NAME_LENGTH(R_INF, tn), Get_NAME(R_INF, tn),
                Get_qs(reverse_sources[i].buffer[j]),
                Get_qe(reverse_sources[i].buffer[j]),
                Get_ts(reverse_sources[i].buffer[j]),
                Get_te(reverse_sources[i].buffer[j]),
                reverse_sources[i].buffer[j].rev,
                (uint32_t)sources[i].buffer[j].del);
            }

            break;
            
        }
    }

    fflush(stderr);

    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x78, %rsp
movq %rdi, -0x20(%rbp)
movq %rsi, -0x28(%rbp)
movq %rdx, -0x30(%rbp)
movl %ecx, -0x34(%rbp)
movq %r8, -0x40(%rbp)
cmpl $-0x1, -0x34(%rbp)
jne 0xf135f
movq $0x0, -0x48(%rbp)
leaq 0x2d3f7b(%rip), %rax    # 0x3c52d0
movq 0x50(%rax), %rax
movq %rax, -0x58(%rbp)
jmp 0xf1373
movslq -0x34(%rbp), %rax
movq %rax, -0x48(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
cltq
movq %rax, -0x58(%rbp)
jmp 0xf1375
movq -0x48(%rbp), %rax
cmpq -0x58(%rbp), %rax
jge 0xf1815
movq -0x20(%rbp), %rdi
leaq 0x2d3f42(%rip), %rax    # 0x3c52d0
movq 0x8(%rax), %rsi
leaq 0x2d3f37(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movq -0x48(%rbp), %rcx
addq (%rax,%rcx,8), %rsi
leaq 0x2d3f24(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movq -0x48(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rdx
leaq 0x2d3f10(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movq -0x48(%rbp), %rcx
subq (%rax,%rcx,8), %rdx
callq 0x20b0
cmpl $0x0, %eax
jne 0xf1802
movq 0x2d2bff(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x40(%rbp), %rdx
leaq 0x295c96(%rip), %rsi    # 0x387085
movb $0x0, %al
callq 0x22a0
movq 0x2d2be3(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x48(%rbp), %rdx
leaq 0x2d3ec5(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movq -0x48(%rbp), %rcx
movq 0x8(%rax,%rcx,8), %rax
leaq 0x2d3eb1(%rip), %rcx    # 0x3c52d0
movq 0x40(%rcx), %rcx
movq -0x48(%rbp), %rsi
subq (%rcx,%rsi,8), %rax
movl %eax, %ecx
leaq 0x2d3e9c(%rip), %rax    # 0x3c52d0
movq 0x8(%rax), %r8
leaq 0x2d3e91(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movq -0x48(%rbp), %rsi
addq (%rax,%rsi,8), %r8
leaq 0x2d3e7e(%rip), %rax    # 0x3c52d0
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rsi
movq (%rax,%rsi,8), %r9
leaq 0x295c2d(%rip), %rsi    # 0x387092
movb $0x0, %al
callq 0x22a0
movq 0x2d2b6d(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %edx
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rcx
addq %rcx, %rax
movzbl 0x10(%rax), %ecx
leaq 0x295c3f(%rip), %rsi    # 0x3870db
movb $0x0, %al
callq 0x22a0
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq -0x28(%rbp), %rcx
imulq $0x18, -0x48(%rbp), %rdx
addq %rdx, %rcx
movl 0xc(%rcx), %ecx
cmpq %rcx, %rax
jge 0xf1664
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rcx
addq %rcx, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
movl %eax, -0x5c(%rbp)
movq 0x2d2af5(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x2d3ddb(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x5c(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
leaq 0x2d3dc4(%rip), %rcx    # 0x3c52d0
movq 0x40(%rcx), %rcx
movl -0x5c(%rbp), %edx
subq (%rcx,%rdx,8), %rax
movl %eax, %edx
leaq 0x2d3db0(%rip), %rax    # 0x3c52d0
movq 0x8(%rax), %rcx
leaq 0x2d3da5(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x5c(%rbp), %esi
addq (%rax,%rsi,8), %rcx
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
movl %eax, %r8d
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movl 0x8(%rax), %r9d
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movl 0x10(%rax), %r15d
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movl 0x14(%rax), %r14d
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movq 0x18(%rax), %rax
shrq $0x1e, %rax
andq $0x1, %rax
movl %eax, %ebx
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movq 0x18(%rax), %rax
shrq $0x1f, %rax
andq $0x1, %rax
movl %eax, %r11d
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movzbl 0x20(%rax), %r10d
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movq 0x18(%rax), %rax
shrq $0x3f, %rax
leaq 0x295ad3(%rip), %rsi    # 0x387104
movl %r15d, (%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 -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0xf14ab
movq 0x2d2975(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
movq -0x30(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %edx
leaq 0x295ad0(%rip), %rsi    # 0x387154
movb $0x0, %al
callq 0x22a0
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq -0x30(%rbp), %rcx
imulq $0x18, -0x48(%rbp), %rdx
addq %rdx, %rcx
movl 0xc(%rcx), %ecx
cmpq %rcx, %rax
jge 0xf1800
movq -0x30(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rcx
addq %rcx, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rcx
addq %rcx, %rax
movl 0xc(%rax), %eax
movl %eax, -0x5c(%rbp)
movq 0x2d290d(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
leaq 0x2d3bf3(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x5c(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movq (%rax,%rcx,8), %rax
leaq 0x2d3bdc(%rip), %rcx    # 0x3c52d0
movq 0x40(%rcx), %rcx
movl -0x5c(%rbp), %edx
subq (%rcx,%rdx,8), %rax
movl %eax, %edx
leaq 0x2d3bc8(%rip), %rax    # 0x3c52d0
movq 0x8(%rax), %rcx
leaq 0x2d3bbd(%rip), %rax    # 0x3c52d0
movq 0x40(%rax), %rax
movl -0x5c(%rbp), %esi
addq (%rax,%rsi,8), %rcx
movq -0x30(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
movl %eax, %r8d
movq -0x30(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movl 0x8(%rax), %r9d
movq -0x30(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movl 0x10(%rax), %ebx
movq -0x30(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movl 0x14(%rax), %r11d
movq -0x30(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movq 0x18(%rax), %rax
shrq $0x1f, %rax
andq $0x1, %rax
movl %eax, %r10d
movq -0x28(%rbp), %rax
imulq $0x18, -0x48(%rbp), %rsi
addq %rsi, %rax
movq (%rax), %rax
imulq $0x28, -0x50(%rbp), %rsi
addq %rsi, %rax
movq 0x18(%rax), %rax
shrq $0x3f, %rax
leaq 0x29599f(%rip), %rsi    # 0x387176
movl %ebx, (%rsp)
movl %r11d, 0x8(%rsp)
movl %r10d, 0x10(%rsp)
movl %eax, 0x18(%rsp)
movb $0x0, %al
callq 0x22a0
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0xf1693
jmp 0xf1815
jmp 0xf1804
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0xf1375
movq 0x2d27c4(%rip), %rax    # 0x3c3fe0
movq (%rax), %rdi
callq 0x21f0
addq $0x78, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop