// File: /workspace/github_cpp_makefile_star2_O1/BGI-Qingdao[P]metaSLR/classify.cpp
// Function: InitAdaptor()
void InitAdaptor(){
    //std::string r1("CTGTCTCTTATACACATCTTAGGAAGACAAGCACTGACGACATGATCACCAAGGATCGCCATAGTCCATGCTAAAGGACGTCAGGAAGGGCGATCTCAGG");
    //std::string r2("TCTGCTGAGTCGAGAACGTCTCTGTGAGCCAAGGAGTTGCTCTGGCGACGGCCACGAAGCTAACAGCCAATCTGCGTAACAGCCAAACCTGAGATCGCCC");
    std::string r1("CTGTCTCTTATACACATCTTAGGAAGACAAGCACTGACGACATGA");
    std::string r2("TCTGCTGAGTCGAGAACGTCTCTGTGAGCCAAGGAGTTGCTCTGG");

    std::vector<Kmer> kmers = Kmer::chopRead2Kmer(BaseStr::str2BaseStr(r1));
    for(int i = 0 ; i <(int)kmers.size();i++){
    //for(int i = 0 ; i <(int)r1.size()-g_K+1;i++){
        const Kmer & kmer = kmers.at(i);
        //std::string kmer = get_cannonical(r1.substr(i,g_K));
        for ( int j = 0 ; j < (int)g_kmers.size() ; j ++ ){
            if( g_kmers[j].find(kmer) != g_kmers[j].end() ){
                g_kmers[j].erase(kmer);
                std::cerr<<" INFO : erase adaptor kmer from hap "<<j<<" ; kmer="<<BaseStr::BaseStr2Str(Kmer::ToBaseStr(kmer))<<std::endl;
            }
        }
    }
    std::vector<Kmer> kmers2 = Kmer::chopRead2Kmer(BaseStr::str2BaseStr(r2));
    for(int i = 0 ; i <(int)kmers2.size();i++){
    //for(int i = 0 ; i <(int)r1.size()-g_K+1;i++){
        const Kmer & kmer = kmers2.at(i);
        //std::string kmer = get_cannonical(r1.substr(i,g_K));
        for ( int j = 0 ; j < (int)g_kmers.size() ; j ++ ){
            if( g_kmers[j].find(kmer) != g_kmers[j].end() ){
                g_kmers[j].erase(kmer);
                std::cerr<<" INFO : erase adaptor kmer from hap "<<j<<" ; kmer="<<BaseStr::BaseStr2Str(Kmer::ToBaseStr(kmer))<<std::endl;
            }
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
leaq -0xb0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x5cb8(%rip), %rsi      # 0xa098
leaq 0x5cde(%rip), %rdx      # 0xa0c5
leaq -0xc0(%rbp), %rdi
callq 0x8f44
leaq -0x90(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x5cc1(%rip), %rsi      # 0xa0c6
leaq 0x5ce7(%rip), %rdx      # 0xa0f3
leaq -0xa0(%rbp), %rdi
callq 0x8f44
leaq -0x50(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x570a
leaq -0x80(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x5d84
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
je 0x4443
callq 0x3230
movq -0x80(%rbp), %rbx
movq -0x78(%rbp), %rdx
subq %rbx, %rdx
sarq $0x4, %rdx
testl %edx, %edx
jle 0x45e7
xorl %ecx, %ecx
movq %rcx, -0x30(%rbp)
cmpq %rcx, %rdx
jbe 0x4819
movq 0x9eb0(%rip), %rax      # 0xe320
movq 0x9ea1(%rip), %rsi      # 0xe318
subq %rsi, %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
testl %eax, %eax
jle 0x45bf
movq -0x30(%rbp), %rax
shlq $0x4, %rax
addq %rax, %rbx
xorl %r12d, %r12d
xorl %r13d, %r13d
leaq (%rsi,%r12), %rdi
movq 0x8(%rbx), %rcx
movq %rcx, %rax
xorl %edx, %edx
divq 0x8(%rsi,%r12)
movq %rdx, %rsi
movq %rbx, %rdx
callq 0x8d64
testq %rax, %rax
je 0x4592
cmpq $0x0, (%rax)
je 0x4592
movq 0x9e44(%rip), %rdi      # 0xe318
addq %r12, %rdi
movq %rbx, %rsi
callq 0x8fde
movl $0x24, %edx
movq 0x9b05(%rip), %rdi      # 0xdff0
leaq 0x5c02(%rip), %rsi      # 0xa0f4
callq 0x3290
movq 0x9af2(%rip), %rdi      # 0xdff0
movl %r13d, %esi
callq 0x33f0
movq %rax, %r15
movl $0x8, %edx
movq %rax, %rdi
leaq 0x5c01(%rip), %rsi      # 0xa119
callq 0x3290
leaq -0x68(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x60d4
leaq -0x50(%rbp), %rdi
movq %r14, %rsi
callq 0x6028
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %esi
movq %r15, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31a0
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x4584
callq 0x3230
movq -0x68(%rbp), %rdi
testq %rdi, %rdi
je 0x4592
callq 0x3230
incq %r13
movq 0x9d84(%rip), %rax      # 0xe320
movq 0x9d75(%rip), %rsi      # 0xe318
subq %rsi, %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
cltq
addq $0x38, %r12
cmpq %rax, %r13
jl 0x449d
movq -0x30(%rbp), %rcx
incq %rcx
movq -0x80(%rbp), %rbx
movq -0x78(%rbp), %rax
subq %rbx, %rax
movq %rax, %rdx
sarq $0x4, %rdx
shrq $0x4, %rax
cltq
cmpq %rax, %rcx
jl 0x445c
leaq -0x50(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x570a
leaq -0x68(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x5d84
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
je 0x4612
callq 0x3230
movq -0x68(%rbp), %rbx
movq -0x60(%rbp), %rdx
subq %rbx, %rdx
sarq $0x4, %rdx
testl %edx, %edx
jle 0x47bc
xorl %ecx, %ecx
movq %rcx, -0x30(%rbp)
cmpq %rcx, %rdx
jbe 0x482b
movq 0x9ce1(%rip), %rax      # 0xe320
movq 0x9cd2(%rip), %rsi      # 0xe318
subq %rsi, %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
testl %eax, %eax
jle 0x4794
movq -0x30(%rbp), %rax
shlq $0x4, %rax
addq %rax, %rbx
xorl %r12d, %r12d
xorl %r13d, %r13d
leaq (%rsi,%r12), %rdi
movq 0x8(%rbx), %rcx
movq %rcx, %rax
xorl %edx, %edx
divq 0x8(%rsi,%r12)
movq %rdx, %rsi
movq %rbx, %rdx
callq 0x8d64
testq %rax, %rax
je 0x4767
cmpq $0x0, (%rax)
je 0x4767
movq 0x9c75(%rip), %rdi      # 0xe318
addq %r12, %rdi
movq %rbx, %rsi
callq 0x8fde
movl $0x24, %edx
movq 0x9936(%rip), %rdi      # 0xdff0
leaq 0x5a33(%rip), %rsi      # 0xa0f4
callq 0x3290
movq 0x9923(%rip), %rdi      # 0xdff0
movl %r13d, %esi
callq 0x33f0
movq %rax, %r15
movl $0x8, %edx
movq %rax, %rdi
leaq 0x5a32(%rip), %rsi      # 0xa119
callq 0x3290
leaq -0xd8(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x60d4
leaq -0x50(%rbp), %rdi
movq %r14, %rsi
callq 0x6028
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq %r15, %rdi
callq 0x3290
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %esi
movq %r15, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31a0
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x4756
callq 0x3230
movq -0xd8(%rbp), %rdi
testq %rdi, %rdi
je 0x4767
callq 0x3230
incq %r13
movq 0x9baf(%rip), %rax      # 0xe320
movq 0x9ba0(%rip), %rsi      # 0xe318
subq %rsi, %rax
shrq $0x3, %rax
imull $0xb6db6db7, %eax, %eax # imm = 0xB6DB6DB7
cltq
addq $0x38, %r12
cmpq %rax, %r13
jl 0x466c
movq -0x30(%rbp), %rcx
incq %rcx
movq -0x68(%rbp), %rbx
movq -0x60(%rbp), %rax
subq %rbx, %rax
movq %rax, %rdx
sarq $0x4, %rdx
shrq $0x4, %rax
cltq
cmpq %rax, %rcx
jl 0x462b
testq %rbx, %rbx
je 0x47c9
movq %rbx, %rdi
callq 0x3230
movq -0x80(%rbp), %rdi
testq %rdi, %rdi
je 0x47d7
callq 0x3230
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x47ef
callq 0x3230
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x4807
callq 0x3230
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x5cef(%rip), %rdi      # 0xa50f
movq -0x30(%rbp), %rsi
xorl %eax, %eax
callq 0x3350
leaq 0x5cdd(%rip), %rdi      # 0xa50f
movq -0x30(%rbp), %rsi
xorl %eax, %eax
callq 0x3350
movq %rax, %rbx
movq -0x50(%rbp), %rdi
jmp 0x489d
jmp 0x48a9
movq %rax, %rbx
movq -0x50(%rbp), %rdi
jmp 0x48b0
movq %rax, %rbx
jmp 0x48ba
movq %rax, %rbx
jmp 0x48d2
jmp 0x486e
jmp 0x48a9
jmp 0x486e
movq %rax, %rbx
jmp 0x4888
jmp 0x48a9
jmp 0x486e
jmp 0x486e
jmp 0x48a9
movq %rax, %rbx
jmp 0x4899
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x4888
callq 0x3230
movq -0xd8(%rbp), %rdi
testq %rdi, %rdi
je 0x4899
callq 0x3230
movq -0x68(%rbp), %rdi
testq %rdi, %rdi
je 0x48ac
callq 0x3230
jmp 0x48ac
movq %rax, %rbx
movq -0x80(%rbp), %rdi
testq %rdi, %rdi
je 0x48ba
callq 0x3230
leaq -0x90(%rbp), %rax
movq -0xa0(%rbp), %rdi
cmpq %rax, %rdi
je 0x48d2
callq 0x3230
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x48ea
callq 0x3230
movq %rbx, %rdi
callq 0x3400
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
jne 0x4894
jmp 0x4899