// File: /workspace/github_cpp_makefile_star2_O2/BGI-Qingdao[P]ExtractNGSReads/filterPairFQ.cpp
// Function: main
int main(int argc , char ** argv )
{
    
    START_PARSE_ARGS
        DEFINE_ARG_REQUIRED(std::string,input_r1,"the input read1");
        DEFINE_ARG_REQUIRED(std::string,input_r2,"the input read2");
        DEFINE_ARG_REQUIRED(std::string,output_r1,"the output read1");
        DEFINE_ARG_REQUIRED(std::string,output_r2,"the output read2");
        DEFINE_ARG_REQUIRED(std::string,output_rs,"the output singlenton reads");
    END_PARSE_ARGS

    auto i_r1 = BGIQD::FILES::FileReaderFactory::GenerateReaderFromFileName(input_r1.to_string());
    auto i_r2 = BGIQD::FILES::FileReaderFactory::GenerateReaderFromFileName(input_r2.to_string());
    auto o_r1 = BGIQD::FILES::FileWriterFactory::GenerateWriterFromFileName(output_r1.to_string());
    auto o_r2 = BGIQD::FILES::FileWriterFactory::GenerateWriterFromFileName(output_r2.to_string());
    auto o_rs = BGIQD::FILES::FileWriterFactory::GenerateWriterFromFileName(output_rs.to_string());
    if( i_r1 == NULL )
        FATAL("input_r1 failed to open !!");
    if( ! o_r1 || !o_r2 || ! o_rs )
        FATAL("open output file failed !! ");
    if( i_r2 == NULL )
        FATAL("input_r2 failed to open !!");

    std::vector<Read> buffer;
    // Load read1
    Reader reader1;
    reader1.LoadAllFastq(*i_r1,buffer);
    std::cerr<<" Load "<<buffer.size()<<" reads from read1. "<<std::endl;
    for( const auto & r : buffer )
    {
        reads1[r.head.readName] = r ;
    }
    buffer.clear();
    delete i_r1 ;
    // Load read2
    Reader reader2;
    reader2.LoadAllFastq(*i_r2,buffer);
    std::cerr<<" Load "<<buffer.size()<<" reads from read2. "<<std::endl;
    for( const auto & r : buffer )
    {
        reads2[r.head.readName] = r ;
    }
    buffer.clear();
    delete i_r2 ;
    // find common ;
    std::set<std::string> common ;
    for( const auto & pair : reads1 )
    {
        if( reads2.find( pair.first ) != reads2.end() )
        {
            common.insert(pair.first) ;
        }
    }
    
    std::cerr<<" Total "<<common.size()<<" read pair detected. "<<std::endl;
    auto print_stlfr_reads = []( const Read & r , std::ostream & ost ) {
            ost<<r.head.Head()<<'\n'<<r.seq.atcgs<<"\n+\n"<<std::string(r.seq.atcgs.size() , 'F')<<'\n';
    };
    std::cerr<<"Start print read1 ... "<<std::endl;
    // print read1 
    for( const auto & pair : reads1 )
        if( common.find(pair.first) != common.end() )
            print_stlfr_reads(pair.second , *o_r1);
    delete o_r1 ;
    std::cerr<<"Start print read2 ... "<<std::endl;
    // print read2 
    for( const auto & pair : reads2 )
        if( common.find(pair.first) != common.end() )
            print_stlfr_reads(pair.second , *o_r2);
    delete o_r2 ;
    std::cerr<<"Start print singleton ... "<<std::endl;
    // print singleton
    for( const auto & pair : reads1 )
        if( common.find(pair.first) == common.end() )
            print_stlfr_reads(pair.second , *o_rs);
    for( const auto & pair : reads2 )
        if( common.find(pair.first) == common.end() )
            print_stlfr_reads(pair.second , *o_rs);
    delete o_rs ;
    std::cerr<<"Done ! "<<std::endl;
    return 0 ;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2e8, %rsp            # imm = 0x2E8
movq %rsi, %r15
movl %edi, -0x90(%rbp)
leaq 0xaae8(%rip), %rdi      # 0xf298
callq 0x6cf0
andl $0x0, 0xab6c(%rip)      # 0xf328
leaq 0x5881(%rip), %rsi      # 0xa044
leaq -0x298(%rbp), %rdi
leaq -0x130(%rbp), %rdx
callq 0x4120
leaq 0x5911(%rip), %rsi      # 0xa0ee
leaq -0x220(%rbp), %rdi
leaq -0x60(%rbp), %rdx
callq 0x4120
leaq 0x5859(%rip), %rsi      # 0xa04d
leaq -0x1a8(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x4120
leaq -0x310(%rbp), %rbx
pushq $0x1
popq %rsi
leaq -0x298(%rbp), %rdx
leaq -0x220(%rbp), %r8
leaq -0x1a8(%rbp), %r9
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x5914
leaq -0x1a8(%rbp), %rdi
callq 0x4140
leaq -0x220(%rbp), %rdi
callq 0x4140
leaq -0x298(%rbp), %rdi
callq 0x4140
leaq 0xaa40(%rip), %rdi      # 0xf298
leaq 0xaac9(%rip), %rsi      # 0xf328
callq 0x5a1c
movq %rbx, (%rax)
incl 0xaabb(%rip)            # 0xf328
leaq 0x57e9(%rip), %rsi      # 0xa05d
leaq -0x220(%rbp), %rdi
leaq -0x60(%rbp), %rdx
callq 0x4120
leaq 0x5863(%rip), %rsi      # 0xa0ee
leaq -0x1a8(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x4120
leaq 0x57c4(%rip), %rsi      # 0xa066
leaq -0x130(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x4120
leaq -0x298(%rbp), %rbx
pushq $0x1
popq %rsi
leaq -0x220(%rbp), %rdx
leaq -0x1a8(%rbp), %r8
leaq -0x130(%rbp), %r9
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x5914
leaq -0x130(%rbp), %rdi
callq 0x4140
leaq -0x1a8(%rbp), %rdi
callq 0x4140
leaq -0x220(%rbp), %rdi
callq 0x4140
leaq 0xa98f(%rip), %rdi      # 0xf298
leaq 0xaa18(%rip), %rsi      # 0xf328
callq 0x5a1c
movq %rbx, (%rax)
incl 0xaa0a(%rip)            # 0xf328
leaq 0x5751(%rip), %rsi      # 0xa076
leaq -0x1a8(%rbp), %rdi
leaq -0x80(%rbp), %rdx
callq 0x4120
leaq 0x57b2(%rip), %rsi      # 0xa0ee
leaq -0x130(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x4120
leaq 0x572a(%rip), %rsi      # 0xa080
leaq -0x60(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0x4120
leaq -0x220(%rbp), %rbx
pushq $0x1
popq %rsi
leaq -0x1a8(%rbp), %rdx
leaq -0x130(%rbp), %r8
leaq -0x60(%rbp), %r9
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x5914
leaq -0x60(%rbp), %rdi
callq 0x4140
leaq -0x130(%rbp), %rdi
callq 0x4140
leaq -0x1a8(%rbp), %rdi
callq 0x4140
leaq 0xa8e7(%rip), %rdi      # 0xf298
leaq 0xa970(%rip), %rsi      # 0xf328
callq 0x5a1c
movq %rbx, (%rax)
incl 0xa962(%rip)            # 0xf328
leaq 0x56c4(%rip), %rsi      # 0xa091
leaq -0x130(%rbp), %rdi
leaq -0xb0(%rbp), %rdx
callq 0x4120
leaq 0x5707(%rip), %rsi      # 0xa0ee
leaq -0x60(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0x4120
leaq 0x56a0(%rip), %rsi      # 0xa09b
leaq -0x80(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x4120
leaq -0x1a8(%rbp), %rbx
pushq $0x1
popq %rsi
leaq -0x130(%rbp), %rdx
leaq -0x60(%rbp), %r8
leaq -0x80(%rbp), %r9
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x5914
leaq -0x80(%rbp), %rdi
callq 0x4140
leaq -0x60(%rbp), %rdi
callq 0x4140
leaq -0x130(%rbp), %rdi
callq 0x4140
leaq 0xa848(%rip), %rdi      # 0xf298
leaq 0xa8d1(%rip), %rsi      # 0xf328
callq 0x5a1c
movq %rbx, (%rax)
incl 0xa8c3(%rip)            # 0xf328
leaq 0x5640(%rip), %rsi      # 0xa0ac
leaq -0x60(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0x4120
leaq 0x566e(%rip), %rsi      # 0xa0ee
leaq -0x80(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x4120
leaq 0x5622(%rip), %rsi      # 0xa0b6
leaq -0xb0(%rbp), %rdi
leaq -0x2a(%rbp), %rdx
callq 0x4120
leaq -0x130(%rbp), %rbx
pushq $0x1
popq %rsi
leaq -0x60(%rbp), %rdx
leaq -0x80(%rbp), %r8
leaq -0xb0(%rbp), %r9
movq %rbx, %rdi
xorl %ecx, %ecx
callq 0x5914
leaq -0xb0(%rbp), %rdi
callq 0x4140
leaq -0x80(%rbp), %rdi
callq 0x4140
leaq -0x60(%rbp), %rdi
callq 0x4140
leaq 0xa7ac(%rip), %rdi      # 0xf298
leaq 0xa835(%rip), %rsi      # 0xf328
callq 0x5a1c
movq %rbx, (%rax)
incl 0xa827(%rip)            # 0xf328
cmpl $0x2, -0x90(%rbp)
jl 0x4b6a
movq 0x8(%r15), %rsi
leaq -0x60(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0x4120
leaq 0x55b0(%rip), %rsi      # 0xa0d2
leaq -0x60(%rbp), %rdi
callq 0x5a6d
testb %al, %al
jne 0x4b61
movq 0x8(%r15), %rsi
leaq -0x80(%rbp), %rdi
leaq -0x29(%rbp), %rdx
callq 0x4120
leaq 0x558e(%rip), %rsi      # 0xa0d5
leaq -0x80(%rbp), %rdi
callq 0x5a6d
testb %al, %al
je 0x4cc7
leaq -0x80(%rbp), %rdi
callq 0x4140
leaq -0x60(%rbp), %rdi
callq 0x4140
movq 0xa47f(%rip), %rdi      # 0xeff0
leaq 0x5564(%rip), %rsi      # 0xa0dc
callq 0x4260
movq (%r15), %rsi
movq %rax, %rdi
callq 0x4260
leaq 0x5556(%rip), %rsi      # 0xa0e5
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4150
movq 0xa70a(%rip), %r14      # 0xf2b0
movq 0xa443(%rip), %rbx      # 0xeff0
leaq 0x5539(%rip), %r13      # 0xa0ed
leaq -0x60(%rbp), %r15
leaq 0xa6e1(%rip), %rax      # 0xf2a0
cmpq %rax, %r14
je 0x5567
movq %rbx, %rdi
leaq 0x551a(%rip), %rsi      # 0xa0ec
callq 0x4260
movq %rax, %rdi
leaq 0x5554(%rip), %rsi      # 0xa135
callq 0x4260
movq 0x28(%r14), %rsi
addq $0x28, %rsi
movq %rax, %rdi
callq 0x4240
movq 0x28(%r14), %rax
cmpb $0x1, (%rax)
jne 0x4c13
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4260
leaq 0x54de(%rip), %rsi      # 0xa0ef
jmp 0x4c25
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4260
leaq 0x54d5(%rip), %rsi      # 0xa0fa
movq %rax, %rdi
callq 0x4260
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4260
movq %rax, %r12
movq 0x28(%r14), %rax
movl 0x68(%rax), %esi
movq %r15, %rdi
callq 0x5a7e
movq %r12, %rdi
movq %r15, %rsi
callq 0x4240
movq %r15, %rdi
callq 0x4140
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4260
movq 0x28(%r14), %rsi
addq $0x8, %rsi
movq %rax, %rdi
callq 0x4240
movq 0x28(%r14), %rax
cmpb $0x1, (%rax)
jne 0x4caf
movq %rbx, %rdi
leaq 0x547a(%rip), %rsi      # 0xa105
callq 0x4260
movq 0x28(%r14), %rsi
addq $0x48, %rsi
movq %rax, %rdi
callq 0x4240
movq %rax, %rdi
leaq 0x5623(%rip), %rsi      # 0xa2cd
callq 0x4260
movq %rbx, %rdi
callq 0x4150
movq %r14, %rdi
callq 0x41e0
movq %rax, %r14
jmp 0x4bb8
movq 0x8(%r15), %rsi
leaq -0xb0(%rbp), %rdi
leaq -0x2a(%rbp), %rdx
callq 0x4120
leaq 0x53f5(%rip), %rsi      # 0xa0d7
leaq -0xb0(%rbp), %rbx
movq %rbx, %rdi
callq 0x5a6d
movl %eax, %r14d
movq %rbx, %rdi
callq 0x4140
leaq -0x80(%rbp), %rdi
callq 0x4140
leaq -0x60(%rbp), %rdi
callq 0x4140
testb %r14b, %r14b
jne 0x4b6a
xorl %r14d, %r14d
movq 0xa58f(%rip), %rax      # 0xf2b0
leaq 0xa608(%rip), %rbx      # 0xf330
leaq 0xa571(%rip), %rcx      # 0xf2a0
cmpq %rcx, %rax
je 0x4d6d
movslq 0x20(%rax), %r14
movq 0x28(%rax), %rcx
movq 0x28(%rcx), %rdx
movq %r14, %rsi
shlq $0x5, %rsi
movq %rdx, (%rsi,%rbx)
xorl %edx, %edx
cmpl $0x0, 0x68(%rcx)
setne %dl
movl %edx, 0x8(%rsi,%rbx)
andq $0x0, 0x10(%rsi,%rbx)
movl %r14d, 0x18(%rsi,%rbx)
movq %rax, %rdi
callq 0x41e0
jmp 0x4d28
movslq %r14d, %rax
movq %rax, %rcx
shlq $0x5, %rcx
addq %rbx, %rcx
addq $0x38, %rcx
cmpq $0x9, %rax
jge 0x4d9e
andq $0x0, -0x18(%rcx)
andl $0x0, -0x10(%rcx)
incq %rax
andq $0x0, -0x8(%rcx)
andl $0x0, (%rcx)
addq $0x20, %rcx
jmp 0x4d7e
movq %r15, -0x88(%rbp)
leaq -0x30(%rbp), %r15
andl $0x0, (%r15)
leaq 0x533a(%rip), %r12      # 0xa0ee
leaq 0xa575(%rip), %r13      # 0xf330
leaq 0xa4d6(%rip), %rbx      # 0xf298
leaq -0xb0(%rbp), %r14
movl -0x90(%rbp), %edi
movq -0x88(%rbp), %rsi
movq %r12, %rdx
movq %r13, %rcx
movq %r15, %r8
callq 0x4060
movl %eax, -0xb0(%rbp)
cmpl $-0x1, %eax
je 0x4e21
movq %rbx, %rdi
movq %r14, %rsi
callq 0x6fce
leaq 0xa49f(%rip), %rcx      # 0xf2a0
cmpq %rcx, %rax
je 0x4dc9
movq 0x28(%rax), %rdi
movb $0x1, 0x1(%rdi)
movq 0xa19b(%rip), %rax      # 0xefb0
movq (%rax), %rsi
xorl %edx, %edx
callq 0x5b0a
jmp 0x4dc9
movb $0x1, %bl
movq 0xa486(%rip), %r12      # 0xf2b0
pushq $0x1
popq %r14
movq 0xa1bb(%rip), %r15      # 0xeff0
leaq 0x52d7(%rip), %r13      # 0xa113
leaq 0xa45d(%rip), %rax      # 0xf2a0
cmpq %rax, %r12
je 0x4ea9
movq 0x28(%r12), %rdi
movb (%rdi), %al
testb %al, %al
jne 0x4e86
cmpb $0x0, 0x1(%rdi)
jne 0x4e86
movq %r15, %rdi
movq %r13, %rsi
callq 0x4260
movq 0x28(%r12), %rsi
addq $0x28, %rsi
movq %rax, %rdi
callq 0x4240
movq %rax, %rdi
callq 0x4150
movq 0x28(%r12), %rdi
movb (%rdi), %al
xorl %ebx, %ebx
testb $0x1, %al
je 0x4e9c
cmpb $0x0, 0x1(%rdi)
jne 0x4e9c
movq 0x48(%rdi), %rsi
movl %r14d, %edx
callq 0x5b0a
movq %r12, %rdi
callq 0x41e0
movq %rax, %r12
jmp 0x4e3c
testb $0x1, %bl
je 0x4f54
movq -0x88(%rbp), %rax
movq (%rax), %rsi
movq 0xa12d(%rip), %rdi      # 0xeff0
callq 0x4260
movq 0xa3e1(%rip), %r15      # 0xf2b0
leaq 0x525e(%rip), %r14      # 0xa134
leaq 0x5386(%rip), %r12      # 0xa263
leaq -0x60(%rbp), %r13
leaq 0xa3b8(%rip), %rax      # 0xf2a0
cmpq %rax, %r15
je 0x50b8
movq 0x28(%r15), %rax
cmpb $0x1, 0x1(%rax)
jne 0x4f47
movq 0xa0ee(%rip), %rdi      # 0xeff0
movq %r14, %rsi
callq 0x4260
movq 0x28(%r15), %rsi
addq $0x28, %rsi
movq %rax, %rdi
callq 0x4240
movq %rax, %rdi
movq %r12, %rsi
callq 0x4260
movq %rax, %rbx
movq 0x28(%r15), %rsi
movq %r13, %rdi
callq 0x5c80
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4240
movq %r13, %rdi
callq 0x4140
movq %r15, %rdi
callq 0x41e0
movq %rax, %r15
jmp 0x4ee1
movq 0xa095(%rip), %rdi      # 0xeff0
leaq 0x517a(%rip), %rsi      # 0xa0dc
callq 0x4260
movq -0x88(%rbp), %rcx
movq (%rcx), %rsi
movq %rax, %rdi
callq 0x4260
leaq 0x5165(%rip), %rsi      # 0xa0e5
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4150
movq 0xa319(%rip), %r15      # 0xf2b0
movq 0xa052(%rip), %rbx      # 0xeff0
leaq 0x5148(%rip), %r13      # 0xa0ed
leaq -0x60(%rbp), %r14
leaq 0xa2f0(%rip), %rax      # 0xf2a0
cmpq %rax, %r15
je 0x5567
movq %rbx, %rdi
leaq 0x5129(%rip), %rsi      # 0xa0ec
callq 0x4260
movq %rax, %rdi
leaq 0x5163(%rip), %rsi      # 0xa135
callq 0x4260
movq 0x28(%r15), %rsi
addq $0x28, %rsi
movq %rax, %rdi
callq 0x4240
movq 0x28(%r15), %rax
cmpb $0x1, (%rax)
jne 0x5004
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4260
leaq 0x50ed(%rip), %rsi      # 0xa0ef
jmp 0x5016
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4260
leaq 0x50e4(%rip), %rsi      # 0xa0fa
movq %rax, %rdi
callq 0x4260
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4260
movq %rax, %r12
movq 0x28(%r15), %rax
movl 0x68(%rax), %esi
movq %r14, %rdi
callq 0x5a7e
movq %r12, %rdi
movq %r14, %rsi
callq 0x4240
movq %r14, %rdi
callq 0x4140
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4260
movq 0x28(%r15), %rsi
addq $0x8, %rsi
movq %rax, %rdi
callq 0x4240
movq 0x28(%r15), %rax
cmpb $0x1, (%rax)
jne 0x50a0
movq %rbx, %rdi
leaq 0x5089(%rip), %rsi      # 0xa105
callq 0x4260
movq 0x28(%r15), %rsi
addq $0x48, %rsi
movq %rax, %rdi
callq 0x4240
movq %rax, %rdi
leaq 0x5232(%rip), %rsi      # 0xa2cd
callq 0x4260
movq %rbx, %rdi
callq 0x4150
movq %r15, %rdi
callq 0x41e0
movq %rax, %r15
jmp 0x4fa9
movq 0x9f31(%rip), %rdi      # 0xeff0
callq 0x4150
leaq -0x60(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x5da4
leaq -0x60(%rbp), %rdi
callq 0x837c
movq %rax, %r13
leaq -0x60(%rbp), %rdi
callq 0x4140
leaq -0x60(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x5da4
leaq -0x60(%rbp), %rdi
callq 0x837c
movq %rax, %r12
leaq -0x60(%rbp), %rdi
callq 0x4140
leaq -0x60(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x5da4
leaq -0x60(%rbp), %rdi
callq 0x8680
movq %rax, %r15
leaq -0x60(%rbp), %rdi
callq 0x4140
leaq -0x60(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x5da4
leaq -0x60(%rbp), %rdi
callq 0x8680
movq %rax, %r14
leaq -0x60(%rbp), %rdi
callq 0x4140
leaq -0x60(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x5da4
leaq -0x60(%rbp), %rdi
callq 0x8680
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x4140
testq %r13, %r13
je 0x55b7
testq %r15, %r15
je 0x55d0
testq %r14, %r14
je 0x55d0
testq %rbx, %rbx
je 0x55d0
testq %r12, %r12
je 0x55e9
movq %r12, -0x90(%rbp)
movq %r14, -0xb8(%rbp)
movq %rbx, -0x88(%rbp)
xorps %xmm0, %xmm0
leaq -0x80(%rbp), %rsi
movaps %xmm0, (%rsi)
andq $0x0, 0x10(%rsi)
movq %r13, %rdi
callq 0x5dea
movq 0x9e13(%rip), %rdi      # 0xeff0
leaq 0x4fe3(%rip), %rsi      # 0xa1c7
callq 0x4260
movq %rax, %rdi
movq -0x78(%rbp), %rax
subq -0x80(%rbp), %rax
movl $0x98, %ecx
cqto
idivq %rcx
movq %rax, %rsi
callq 0x41d0
leaq 0x4fc1(%rip), %rsi      # 0xa1ce
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4150
movq -0x80(%rbp), %r14
movq -0x78(%rbp), %rbx
leaq 0xa09c(%rip), %r12      # 0xf2c8
cmpq %rbx, %r14
je 0x5258
addq $0x38, %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x5fb4
addq $-0x38, %r14
movq %rax, %rdi
movq %r14, %rsi
callq 0x601e
addq $0x98, %r14
jmp 0x522c
leaq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x6064
movq (%r13), %rax
movq %r13, %rdi
callq *0x8(%rax)
movq -0x90(%rbp), %rdi
movq %rbx, %rsi
callq 0x5dea
movq 0x9d6c(%rip), %rdi      # 0xeff0
leaq 0x4f3c(%rip), %rsi      # 0xa1c7
callq 0x4260
movq %rax, %rdi
movq -0x78(%rbp), %rax
subq -0x80(%rbp), %rax
movl $0x98, %ecx
cqto
idivq %rcx
movq %rax, %rsi
callq 0x41d0
leaq 0x4f2e(%rip), %rsi      # 0xa1e2
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4150
movq -0x80(%rbp), %r14
movq -0x78(%rbp), %rbx
leaq 0xa025(%rip), %r12      # 0xf2f8
cmpq %rbx, %r14
je 0x52ff
addq $0x38, %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x5fb4
addq $-0x38, %r14
movq %rax, %rdi
movq %r14, %rsi
callq 0x601e
addq $0x98, %r14
jmp 0x52d3
leaq -0x80(%rbp), %rdi
callq 0x6064
movq -0x90(%rbp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
leaq -0x58(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
movq 0x9fab(%rip), %r13      # 0xf2e0
leaq 0x9fbc(%rip), %r12      # 0xf2f8
leaq -0x60(%rbp), %r14
leaq 0x9f89(%rip), %rax      # 0xf2d0
cmpq %rax, %r13
je 0x537f
leaq 0x20(%r13), %rbx
movq %r12, %rdi
movq %rbx, %rsi
callq 0x7c9e
leaq 0x9f9e(%rip), %rcx      # 0xf300
cmpq %rcx, %rax
je 0x5372
movq %r14, %rdi
movq %rbx, %rsi
callq 0x7ce6
movq %r13, %rdi
callq 0x41e0
movq %rax, %r13
jmp 0x5340
movq 0x9c6a(%rip), %rdi      # 0xeff0
leaq 0x4e69(%rip), %rsi      # 0xa1f6
callq 0x4260
movq -0x38(%rbp), %rsi
movq %rax, %rdi
callq 0x41d0
leaq 0x4e59(%rip), %rsi      # 0xa1fe
movq %rax, %rdi
callq 0x4260
movq %rax, %rdi
callq 0x4150
movq 0x9c34(%rip), %rdi      # 0xeff0
leaq 0x4e51(%rip), %rsi      # 0xa214
callq 0x4260
leaq -0x58(%rbp), %r13
movq %rax, %rdi
callq 0x4150
movq 0x9f05(%rip), %r12      # 0xf2e0
leaq -0x60(%rbp), %r14
leaq 0x9eea(%rip), %rax      # 0xf2d0
cmpq %rax, %r12
je 0x5417
leaq 0x20(%r12), %rsi
movq %r14, %rdi
callq 0x7f00
cmpq %r13, %rax
je 0x540a
leaq 0x40(%r12), %rdi
movq %r15, %rsi
callq 0x5838
movq %r12, %rdi
callq 0x41e0
movq %rax, %r12
jmp 0x53df
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
movq 0x9bc9(%rip), %rdi      # 0xeff0
leaq 0x4dfd(%rip), %rsi      # 0xa22b
callq 0x4260
movq -0x88(%rbp), %rbx
movq %rax, %rdi
callq 0x4150
movq 0x9ec7(%rip), %r15      # 0xf310
leaq -0x60(%rbp), %r14
movq -0xb8(%rbp), %r12
leaq 0x9ea5(%rip), %rax      # 0xf300
cmpq %rax, %r15
je 0x548a
leaq 0x20(%r15), %rsi
movq %r14, %rdi
callq 0x7f00
cmpq %r13, %rax
je 0x547d
leaq 0x40(%r15), %rdi
movq %r12, %rsi
callq 0x5838
movq %r15, %rdi
callq 0x41e0
movq %rax, %r15
jmp 0x5454
movq (%r12), %rax
movq %r12, %rdi
callq *0x8(%rax)
movq 0x9b55(%rip), %rdi      # 0xeff0
leaq 0x4da0(%rip), %rsi      # 0xa242
callq 0x4260
movq %rax, %rdi
callq 0x4150
movq 0x9e2a(%rip), %r15      # 0xf2e0
leaq -0x60(%rbp), %r14
leaq 0x9e0f(%rip), %rax      # 0xf2d0
cmpq %rax, %r15
je 0x54f0
leaq 0x20(%r15), %rsi
movq %r14, %rdi
callq 0x7f00
cmpq %r13, %rax
jne 0x54e3
leaq 0x40(%r15), %rdi
movq %rbx, %rsi
callq 0x5838
movq %r15, %rdi
callq 0x41e0
movq %rax, %r15
jmp 0x54ba
movq 0x9e19(%rip), %r15      # 0xf310
leaq -0x60(%rbp), %r14
leaq 0x9dfe(%rip), %rax      # 0xf300
cmpq %rax, %r15
je 0x5531
leaq 0x20(%r15), %rsi
movq %r14, %rdi
callq 0x7f00
cmpq %r13, %rax
jne 0x5524
leaq 0x40(%r15), %rdi
movq %rbx, %rsi
callq 0x5838
movq %r15, %rdi
callq 0x41e0
movq %rax, %r15
jmp 0x54fb
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x8(%rax)
movq 0x9aaf(%rip), %rdi      # 0xeff0
leaq 0x4d15(%rip), %rsi      # 0xa25d
callq 0x4260
movq %rax, %rdi
callq 0x4150
leaq -0x60(%rbp), %rdi
callq 0x6c78
leaq -0x80(%rbp), %rdi
callq 0x6072
leaq -0x130(%rbp), %rdi
callq 0x609e
leaq -0x1a8(%rbp), %rdi
callq 0x609e
leaq -0x220(%rbp), %rdi
callq 0x609e
leaq -0x298(%rbp), %rdi
callq 0x609e
leaq -0x310(%rbp), %rdi
callq 0x609e
xorl %eax, %eax
addq $0x2e8, %rsp            # imm = 0x2E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4b7a(%rip), %rdi      # 0xa138
leaq 0x4b95(%rip), %rsi      # 0xa15a
leaq 0x4b9f(%rip), %rcx      # 0xa16b
pushq $0x21
jmp 0x5600
leaq 0x4bab(%rip), %rdi      # 0xa182
leaq 0x4b7c(%rip), %rsi      # 0xa15a
leaq 0x4b86(%rip), %rcx      # 0xa16b
pushq $0x23
jmp 0x5600
leaq 0x4bb5(%rip), %rdi      # 0xa1a5
leaq 0x4b63(%rip), %rsi      # 0xa15a
leaq 0x4b6d(%rip), %rcx      # 0xa16b
pushq $0x25
popq %rdx
callq 0x41b0
jmp 0x57e0
jmp 0x57f0
jmp 0x57e0
jmp 0x57f0
jmp 0x57e0
jmp 0x57f0
jmp 0x57e0
jmp 0x57f0
jmp 0x57e0
jmp 0x57f0
jmp 0x568c
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x4140
jmp 0x57e3
jmp 0x57ca
jmp 0x57ca
jmp 0x57f0
jmp 0x568c
jmp 0x57e0
jmp 0x568c
jmp 0x568c
jmp 0x57f0
jmp 0x57e0
jmp 0x57f0
jmp 0x568c
jmp 0x568c
jmp 0x568c
jmp 0x568c
jmp 0x568c
jmp 0x57e0
jmp 0x568c
jmp 0x57f0
jmp 0x568c
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x6c78
jmp 0x57cd
movq %rax, %rbx
leaq -0xb0(%rbp), %rdi
callq 0x4140
jmp 0x56b1
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x4140
jmp 0x56bf
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x4140
jmp 0x57ff
jmp 0x56cf
movq %rax, %rbx
jmp 0x57ff
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x4140
jmp 0x56e8
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x4140
jmp 0x56f6
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
callq 0x4140
jmp 0x580b
jmp 0x5709
movq %rax, %rbx
jmp 0x580b
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x4140
jmp 0x5722
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
callq 0x4140
jmp 0x5733
movq %rax, %rbx
leaq -0x1a8(%rbp), %rdi
callq 0x4140
jmp 0x5817
jmp 0x5746
movq %rax, %rbx
jmp 0x5817
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
callq 0x4140
jmp 0x5762
movq %rax, %rbx
leaq -0x1a8(%rbp), %rdi
callq 0x4140
jmp 0x5773
movq %rax, %rbx
leaq -0x220(%rbp), %rdi
callq 0x4140
jmp 0x5823
jmp 0x5786
movq %rax, %rbx
jmp 0x5823
movq %rax, %rbx
leaq -0x1a8(%rbp), %rdi
callq 0x4140
jmp 0x57a2
movq %rax, %rbx
leaq -0x220(%rbp), %rdi
callq 0x4140
jmp 0x57b3
movq %rax, %rbx
leaq -0x298(%rbp), %rdi
callq 0x4140
jmp 0x582f
movq %rax, %rbx
jmp 0x582f
jmp 0x57f0
jmp 0x57ca
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x6072
jmp 0x57f3
jmp 0x57f0
jmp 0x57f0
jmp 0x57f0
jmp 0x57f0
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x4140
jmp 0x57f3
jmp 0x57f0
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
callq 0x609e
leaq -0x1a8(%rbp), %rdi
callq 0x609e
leaq -0x220(%rbp), %rdi
callq 0x609e
leaq -0x298(%rbp), %rdi
callq 0x609e
leaq -0x310(%rbp), %rdi
callq 0x609e
movq %rbx, %rdi
callq 0x4430
nop