// File: /workspace/github_cpp_makefile_star2_O2/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 0x51a2(%rip), %rsi      # 0x9098
leaq -0xe0(%rbp), %rdi
leaq -0xa8(%rbp), %rdx
callq 0x3110
leaq 0x51b6(%rip), %rsi      # 0x90c6
leaq -0xa8(%rbp), %rdi
leaq -0x58(%rbp), %rdx
callq 0x3110
leaq -0x58(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x4d56
leaq -0x88(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x533a
leaq -0x58(%rbp), %rdi
callq 0x7e2e
xorl %esi, %esi
movq -0x80(%rbp), %rax
subq -0x88(%rbp), %rax
shrq $0x4, %rax
cltq
cmpq %rax, %rsi
jge 0x4056
leaq -0x88(%rbp), %rdi
movq %rsi, -0x38(%rbp)
callq 0x5512
movq %rax, -0x30(%rbp)
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0xa3ab(%rip), %rax      # 0xe330
movq 0xa39c(%rip), %rdi      # 0xe328
subq %rdi, %rax
cqto
pushq $0x38
popq %rcx
idivq %rcx
cltq
cmpq %rax, %r13
jge 0x404a
addq %rbx, %rdi
movq -0x30(%rbp), %rsi
callq 0x85cc
testq %rax, %rax
je 0x403e
movq 0xa36a(%rip), %rdi      # 0xe328
addq %rbx, %rdi
movq -0x30(%rbp), %rsi
callq 0x85f0
movq 0xa01f(%rip), %rdi      # 0xdff0
leaq 0x511c(%rip), %rsi      # 0x90f4
callq 0x3240
movq %rax, %rdi
movl %r13d, %esi
callq 0x3420
movq %rax, %rdi
leaq 0x5127(%rip), %rsi      # 0x9119
callq 0x3240
movq %rax, %r15
leaq -0x70(%rbp), %r12
movq %r12, %rdi
movq -0x30(%rbp), %rsi
callq 0x55d2
leaq -0x58(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x5534
movq %r15, %rdi
movq %r14, %rsi
callq 0x3200
movq %rax, %rdi
callq 0x3150
leaq -0x58(%rbp), %rdi
callq 0x3130
leaq -0x70(%rbp), %rdi
callq 0x7e2e
incq %r13
addq $0x38, %rbx
jmp 0x3f7e
movq -0x38(%rbp), %rsi
incq %rsi
jmp 0x3f4b
leaq -0x58(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x4d56
leaq -0x70(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x533a
leaq -0x58(%rbp), %rdi
callq 0x7e2e
xorl %esi, %esi
movq -0x68(%rbp), %rax
subq -0x70(%rbp), %rax
shrq $0x4, %rax
cltq
cmpq %rax, %rsi
jge 0x4189
leaq -0x70(%rbp), %rdi
movq %rsi, -0x38(%rbp)
callq 0x5512
movq %rax, -0x30(%rbp)
xorl %ebx, %ebx
xorl %r13d, %r13d
movq 0xa27e(%rip), %rax      # 0xe330
movq 0xa26f(%rip), %rdi      # 0xe328
subq %rdi, %rax
cqto
pushq $0x38
popq %rcx
idivq %rcx
cltq
cmpq %rax, %r13
jge 0x417d
addq %rbx, %rdi
movq -0x30(%rbp), %rsi
callq 0x85cc
testq %rax, %rax
je 0x4171
movq 0xa23d(%rip), %rdi      # 0xe328
addq %rbx, %rdi
movq -0x30(%rbp), %rsi
callq 0x85f0
movq 0x9ef2(%rip), %rdi      # 0xdff0
leaq 0x4fef(%rip), %rsi      # 0x90f4
callq 0x3240
movq %rax, %rdi
movl %r13d, %esi
callq 0x3420
movq %rax, %rdi
leaq 0x4ffa(%rip), %rsi      # 0x9119
callq 0x3240
movq %rax, %r15
leaq -0xc0(%rbp), %r12
movq %r12, %rdi
movq -0x30(%rbp), %rsi
callq 0x55d2
leaq -0x58(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x5534
movq %r15, %rdi
movq %r14, %rsi
callq 0x3200
movq %rax, %rdi
callq 0x3150
leaq -0x58(%rbp), %rdi
callq 0x3130
leaq -0xc0(%rbp), %rdi
callq 0x7e2e
incq %r13
addq $0x38, %rbx
jmp 0x40ab
movq -0x38(%rbp), %rsi
incq %rsi
jmp 0x407e
leaq -0x70(%rbp), %rdi
callq 0x7e42
leaq -0x88(%rbp), %rdi
callq 0x7e42
leaq -0xa8(%rbp), %rdi
callq 0x3130
leaq -0xe0(%rbp), %rdi
callq 0x3130
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
jmp 0x422b
jmp 0x4240
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0x7e2e
jmp 0x424f
movq %rax, %rbx
jmp 0x424f
movq %rax, %rbx
jmp 0x425b
jmp 0x4232
jmp 0x4240
jmp 0x4232
movq %rax, %rbx
jmp 0x420d
jmp 0x4240
movq %rax, %rbx
jmp 0x4227
jmp 0x4232
jmp 0x4240
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0x3130
leaq -0xc0(%rbp), %rdi
callq 0x7e2e
jmp 0x4235
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0x3130
leaq -0x70(%rbp), %rdi
callq 0x7e2e
jmp 0x4243
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x7e42
jmp 0x4243
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
callq 0x7e42
leaq -0xa8(%rbp), %rdi
callq 0x3130
leaq -0xe0(%rbp), %rdi
callq 0x3130
movq %rbx, %rdi
callq 0x3440