// File: schneebergerlab[P]DrLink/detect_recombsite.cpp
// Function: collect_marker_info(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>*)
bool collect_marker_info(const char* file, string parent_id, map<string, string>* mkr)
{
    // type of markers: snps, 1-bp deletion and 1-bp insertion
    cout << "   Info: reading marker info from " << file << endl;
    fstream ifp;
    ifp.open(file);
    if(!ifp.good())
    {
        return false;
    }
    int num = 0;
    int raw = 0;
    int del = 0;
    int ins = 0;
    bool adjsnp = false; // SNPs directly next to each other
    int    nadj = 0;
    while(ifp.good())
    {
        string line("");
        getline(ifp, line);
        if(line.size()==0 || line[0]=='#') continue;
        
        /* e.g.,
	        ks	1	164393	C	G  -- snp
		ks	1	164413	AC	TA -- twp snps
		ks	1	460940  -	A  -- insertion
		ks	1	468923  T	-  -- deletion
        */
        vector<string> lineinfo = split_string(line, '\t');
        if(lineinfo[3].size() != lineinfo[4].size()) continue; // non-snps
        raw ++;
        
        if(lineinfo[3].size() > 1 && !adjsnp)
        {
            cout << "   Info: snp line will be separated, e.g, " << line << endl;
            cout << "       You will get a total number after reading all marker info. " << endl;
            adjsnp = true;
            nadj ++;
        }
        else
        if(lineinfo[3].size()>1)
        {
            nadj ++;
        }
        
        //  split "double/triple/..." snps
        for(int snpi = 0; snpi < lineinfo[3].size(); snpi ++)
        {
            string ref = lineinfo[3].substr(snpi, 1);
            string alt = lineinfo[4].substr(snpi, 1);
            //
            unsigned long pos = strtoul(lineinfo[2].c_str(), NULL, 0);
            pos += snpi;
            std::stringstream sspos;
            sspos.str("");
            sspos << pos;
            //
            string key = lineinfo[1] + "#" + sspos.str() + "#" + ref + "#" + alt; // "GA", "G-" or "-A"
            string val = parent_id;
            
            map<string, string>::iterator itr;
            map<string, string>::iterator itr_end;
            itr     = (*mkr).find(key);
            itr_end = (*mkr).end();
            
            if(itr == itr_end)
            {
                (*mkr).insert(std::pair<string, string>(key, val));
                num ++;
                if(alt=="-") del ++;
                if(ref=="-") ins ++;
            } 
            else
            {
                // cout << "    Warning: same marker for both parents: " << line << " (only recorded in first set)" << endl;
                if(parent_id.compare((*itr).second) != 0)
                {
                    (*mkr).erase(key); // removed
                }
            }
        }
    }
    ifp.close();
    cout << "   Info: recording " << num << " (of " << raw << ")" << " snp markers info done " << endl;  
    cout << "   Info: total number of \"neighboring\" snps: "     << nadj << endl;  
    cout << "   Info: total number of del markers: "              << del  << endl;
    cout << "   Info: total number of ins markers: "              << ins  << endl;
    if(parent_id.compare("2") == 0)
    {
        cout << "   Info: in total  " << (*mkr).size()  << " markers info recorded till now. " << endl; 
        cout << "   Info: markers appear in both marker sets have been removed from records. " << endl << endl;
    }
    return true;
}

// Assembly:
subq $0x718, %rsp            # imm = 0x718
movq %rsi, 0xf8(%rsp)
movq %rdi, 0x708(%rsp)
movq %rsi, 0x700(%rsp)
movq %rdx, 0x6f8(%rsp)
movq 0x5ef6a(%rip), %rdi     # 0x84fc8
leaq 0x42cdf(%rip), %rsi     # 0x68d44
callq 0x5460
movq %rax, %rdi
movq 0x708(%rsp), %rsi
callq 0x5460
movq %rax, %rdi
movq 0x5ef2c(%rip), %rsi     # 0x84fb0
callq 0x54b0
leaq 0x4e8(%rsp), %rdi
callq 0x5530
movq 0x708(%rsp), %rax
movq %rax, 0x100(%rsp)
movl $0x8, %edi
movl $0x10, %esi
callq 0x2dd90
movl %eax, 0x10c(%rsp)
jmp 0x260be
movl 0x10c(%rsp), %edx
movq 0x100(%rsp), %rsi
leaq 0x4e8(%rsp), %rdi
callq 0x53f0
jmp 0x260dc
movq 0x4e8(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x4e8(%rsp,%rax), %rdi
callq 0x5760
movb %al, 0xf7(%rsp)
jmp 0x260fe
movb 0xf7(%rsp), %al
testb $0x1, %al
jne 0x2613c
jmp 0x2610b
movb $0x0, 0x717(%rsp)
movl $0x1, 0x4d8(%rsp)
jmp 0x26e26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x26e44
movl $0x0, 0x4d4(%rsp)
movl $0x0, 0x4d0(%rsp)
movl $0x0, 0x4cc(%rsp)
movl $0x0, 0x4c8(%rsp)
movb $0x0, 0x4c7(%rsp)
movl $0x0, 0x4c0(%rsp)
movq 0x4e8(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x4e8(%rsp,%rax), %rdi
callq 0x5760
movb %al, 0xf6(%rsp)
jmp 0x2619d
movb 0xf6(%rsp), %al
testb $0x1, %al
jne 0x261ad
jmp 0x26bba
leaq 0x49f(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0x57c0
movq 0xe8(%rsp), %rdx
leaq 0x449c3(%rip), %rsi     # 0x6ab94
leaq 0x4a0(%rsp), %rdi
callq 0x6880
jmp 0x261e0
leaq 0x49f(%rsp), %rdi
callq 0x54d0
leaq 0x4e8(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x50c0
jmp 0x26204
leaq 0x4a0(%rsp), %rdi
callq 0x5310
cmpq $0x0, %rax
je 0x26242
xorl %eax, %eax
movl %eax, %esi
leaq 0x4a0(%rsp), %rdi
callq 0x5880
movq %rax, 0xe0(%rsp)
jmp 0x26232
movq 0xe0(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0x26291
movl $0x2, 0x4d8(%rsp)
jmp 0x26b77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
leaq 0x49f(%rsp), %rdi
callq 0x54d0
jmp 0x26e44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x26ba8
movb $0x9, 0x47f(%rsp)
leaq 0x480(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
leaq 0x47f(%rsp), %rdx
callq 0x60790
jmp 0x262b8
leaq 0x480(%rsp), %rdi
movl $0x3, %esi
callq 0x88f0
movq %rax, %rdi
callq 0x5310
movq %rax, 0xd8(%rsp)
leaq 0x480(%rsp), %rdi
movl $0x4, %esi
callq 0x88f0
movq %rax, %rdi
callq 0x5310
movq %rax, %rcx
movq 0xd8(%rsp), %rax
cmpq %rcx, %rax
je 0x26314
movl $0x2, 0x4d8(%rsp)
jmp 0x26b6a
movl 0x4d0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x4d0(%rsp)
leaq 0x480(%rsp), %rdi
movl $0x3, %esi
callq 0x88f0
movq %rax, %rdi
callq 0x5310
cmpq $0x1, %rax
jbe 0x26410
testb $0x1, 0x4c7(%rsp)
jne 0x26410
movq 0x5ec6a(%rip), %rdi     # 0x84fc8
leaq 0x42a02(%rip), %rsi     # 0x68d67
callq 0x5460
movq %rax, 0xd0(%rsp)
jmp 0x26374
movq 0xd0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0x53e0
movq %rax, 0xc8(%rsp)
jmp 0x26393
movq 0xc8(%rsp), %rdi
movq 0x5ec0e(%rip), %rsi     # 0x84fb0
callq 0x54b0
jmp 0x263a9
movq 0x5ec18(%rip), %rdi     # 0x84fc8
leaq 0x429db(%rip), %rsi     # 0x68d92
callq 0x5460
movq %rax, 0xc0(%rsp)
jmp 0x263c6
movq 0xc0(%rsp), %rdi
movq 0x5ebdb(%rip), %rsi     # 0x84fb0
callq 0x54b0
jmp 0x263dc
movb $0x1, 0x4c7(%rsp)
movl 0x4c0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x4c0(%rsp)
jmp 0x26443
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x26b9b
leaq 0x480(%rsp), %rdi
movl $0x3, %esi
callq 0x88f0
movq %rax, %rdi
callq 0x5310
cmpq $0x1, %rax
jbe 0x26441
movl 0x4c0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x4c0(%rsp)
jmp 0x26443
movl $0x0, 0x478(%rsp)
movslq 0x478(%rsp), %rax
movq %rax, 0xb8(%rsp)
leaq 0x480(%rsp), %rdi
movl $0x3, %esi
callq 0x88f0
movq %rax, %rdi
callq 0x5310
movq %rax, %rcx
movq 0xb8(%rsp), %rax
cmpq %rcx, %rax
jae 0x26b5f
leaq 0x480(%rsp), %rdi
movl $0x3, %esi
callq 0x88f0
movq %rax, %rsi
movslq 0x478(%rsp), %rdx
leaq 0x458(%rsp), %rdi
movl $0x1, %ecx
callq 0x5490
jmp 0x264bd
leaq 0x480(%rsp), %rdi
movl $0x4, %esi
callq 0x88f0
movq %rax, %rsi
movslq 0x478(%rsp), %rdx
leaq 0x438(%rsp), %rdi
movl $0x1, %ecx
callq 0x5490
jmp 0x264ee
leaq 0x480(%rsp), %rdi
movl $0x2, %esi
callq 0x88f0
movq %rax, %rdi
callq 0x51d0
movq %rax, %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x5160
movq %rax, 0x430(%rsp)
movslq 0x478(%rsp), %rcx
movq 0x430(%rsp), %rax
addq %rcx, %rax
movq %rax, 0x430(%rsp)
leaq 0x2a8(%rsp), %rdi
callq 0x5320
jmp 0x26546
leaq 0x287(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x57c0
movq 0xb0(%rsp), %rdx
leaq 0x4462a(%rip), %rsi     # 0x6ab94
leaq 0x288(%rsp), %rdi
callq 0x6880
jmp 0x26579
leaq 0x2a8(%rsp), %rdi
leaq 0x288(%rsp), %rsi
callq 0x5510
jmp 0x26590
leaq 0x288(%rsp), %rdi
callq 0x58b8
leaq 0x287(%rsp), %rdi
callq 0x54d0
leaq 0x2b8(%rsp), %rdi
movq 0x430(%rsp), %rsi
callq 0x50f0
jmp 0x265c1
leaq 0x480(%rsp), %rdi
movl $0x1, %esi
callq 0x88f0
movq %rax, %rsi
leaq 0x44a85(%rip), %rdx     # 0x6b062
leaq 0x1c0(%rsp), %rdi
callq 0xfae0
jmp 0x265ec
leaq 0x1a0(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0x5440
jmp 0x26603
leaq 0x1e0(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
leaq 0x1a0(%rsp), %rdx
callq 0xf9f0
jmp 0x26622
leaq 0x44a39(%rip), %rdx     # 0x6b062
leaq 0x200(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x8760
jmp 0x26640
leaq 0x220(%rsp), %rdi
leaq 0x200(%rsp), %rsi
leaq 0x458(%rsp), %rdx
callq 0xfbf0
jmp 0x2665f
leaq 0x449fc(%rip), %rdx     # 0x6b062
leaq 0x240(%rsp), %rdi
leaq 0x220(%rsp), %rsi
callq 0x8760
jmp 0x2667d
leaq 0x260(%rsp), %rdi
leaq 0x240(%rsp), %rsi
leaq 0x438(%rsp), %rdx
callq 0xfbf0
jmp 0x2669c
leaq 0x240(%rsp), %rdi
callq 0x58b8
leaq 0x220(%rsp), %rdi
callq 0x58b8
leaq 0x200(%rsp), %rdi
callq 0x58b8
leaq 0x1e0(%rsp), %rdi
callq 0x58b8
leaq 0x1a0(%rsp), %rdi
callq 0x58b8
leaq 0x1c0(%rsp), %rdi
callq 0x58b8
movq 0xf8(%rsp), %rsi
leaq 0x180(%rsp), %rdi
callq 0x51f0
jmp 0x26701
leaq 0x178(%rsp), %rdi
callq 0x18780
leaq 0x170(%rsp), %rdi
callq 0x18780
movq 0x6f8(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x187a0
movq %rax, 0xa8(%rsp)
jmp 0x2673a
movq 0xa8(%rsp), %rax
movq %rax, 0x168(%rsp)
movq 0x168(%rsp), %rax
movq %rax, 0x178(%rsp)
movq 0x6f8(%rsp), %rdi
callq 0x187f0
movq %rax, 0x160(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0x170(%rsp)
leaq 0x178(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x187d0
testb $0x1, %al
jne 0x2679d
jmp 0x26a74
movq 0x6f8(%rsp), %rax
movq %rax, 0xa0(%rsp)
leaq 0x120(%rsp), %rdi
leaq 0x260(%rsp), %rsi
leaq 0x180(%rsp), %rdx
callq 0x18870
jmp 0x267cc
movq 0xa0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x18820
movb %dl, 0x97(%rsp)
movq %rax, 0x98(%rsp)
jmp 0x267f2
movb 0x97(%rsp), %al
movq 0x98(%rsp), %rcx
movq %rcx, 0x110(%rsp)
movb %al, 0x118(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x188e0
movl 0x4d4(%rsp), %eax
incl %eax
movl %eax, 0x4d4(%rsp)
leaq 0x3fd7a(%rip), %rsi     # 0x665ae
leaq 0x438(%rsp), %rdi
callq 0x2e400
movb %al, 0x96(%rsp)
jmp 0x2684a
movb 0x96(%rsp), %al
testb $0x1, %al
jne 0x2685a
jmp 0x26a37
movl 0x4cc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x4cc(%rsp)
jmp 0x26a37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x26b50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x26b43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x268d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x58b8
leaq 0x287(%rsp), %rdi
callq 0x54d0
jmp 0x26b36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x26b36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x269cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x269c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x269b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x269a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x26999
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
leaq 0x240(%rsp), %rdi
callq 0x58b8
leaq 0x220(%rsp), %rdi
callq 0x58b8
leaq 0x200(%rsp), %rdi
callq 0x58b8
leaq 0x1e0(%rsp), %rdi
callq 0x58b8
leaq 0x1a0(%rsp), %rdi
callq 0x58b8
leaq 0x1c0(%rsp), %rdi
callq 0x58b8
jmp 0x26b36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x26b29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0x26b1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x188e0
jmp 0x26b1c
leaq 0x3fb70(%rip), %rsi     # 0x665ae
leaq 0x458(%rsp), %rdi
callq 0x2e400
movb %al, 0x95(%rsp)
jmp 0x26a54
movb 0x95(%rsp), %al
testb $0x1, %al
jne 0x26a61
jmp 0x26a72
movl 0x4c8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x4c8(%rsp)
jmp 0x26ac5
leaq 0x178(%rsp), %rdi
callq 0x2ce10
movq 0xf8(%rsp), %rdi
movq %rax, %rsi
addq $0x20, %rsi
callq 0x5040
movl %eax, 0x90(%rsp)
jmp 0x26a9e
movl 0x90(%rsp), %eax
cmpl $0x0, %eax
je 0x26ac3
movq 0x6f8(%rsp), %rdi
leaq 0x260(%rsp), %rsi
callq 0x2e430
jmp 0x26ac1
jmp 0x26ac3
jmp 0x26ac5
leaq 0x180(%rsp), %rdi
callq 0x58b8
leaq 0x260(%rsp), %rdi
callq 0x58b8
leaq 0x2a8(%rsp), %rdi
callq 0x5350
leaq 0x438(%rsp), %rdi
callq 0x58b8
leaq 0x458(%rsp), %rdi
callq 0x58b8
movl 0x478(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x478(%rsp)
jmp 0x2644e
leaq 0x180(%rsp), %rdi
callq 0x58b8
leaq 0x260(%rsp), %rdi
callq 0x58b8
leaq 0x2a8(%rsp), %rdi
callq 0x5350
leaq 0x438(%rsp), %rdi
callq 0x58b8
leaq 0x458(%rsp), %rdi
callq 0x58b8
jmp 0x26b9b
movl $0x0, 0x4d8(%rsp)
leaq 0x480(%rsp), %rdi
callq 0x8910
leaq 0x4a0(%rsp), %rdi
callq 0x58b8
movl 0x4d8(%rsp), %eax
testl %eax, %eax
je 0x26b96
jmp 0x26b91
jmp 0x2617b
jmp 0x2617b
leaq 0x480(%rsp), %rdi
callq 0x8910
leaq 0x4a0(%rsp), %rdi
callq 0x58b8
jmp 0x26e44
leaq 0x4e8(%rsp), %rdi
callq 0x5080
jmp 0x26bc9
movq 0x5e3f8(%rip), %rdi     # 0x84fc8
leaq 0x421fe(%rip), %rsi     # 0x68dd5
callq 0x5460
movq %rax, 0x88(%rsp)
jmp 0x26be6
movq 0x88(%rsp), %rdi
movl 0x4d4(%rsp), %esi
callq 0x5790
movq %rax, 0x80(%rsp)
jmp 0x26c04
movq 0x80(%rsp), %rdi
leaq 0x421d6(%rip), %rsi     # 0x68de9
callq 0x5460
movq %rax, 0x78(%rsp)
jmp 0x26c1f
movq 0x78(%rsp), %rdi
movl 0x4d0(%rsp), %esi
callq 0x5790
movq %rax, 0x70(%rsp)
jmp 0x26c37
movq 0x70(%rsp), %rdi
leaq 0x4378d(%rip), %rsi     # 0x6a3d0
callq 0x5460
movq %rax, 0x68(%rsp)
jmp 0x26c4f
movq 0x68(%rsp), %rdi
leaq 0x42194(%rip), %rsi     # 0x68def
callq 0x5460
movq %rax, 0x60(%rsp)
jmp 0x26c67
movq 0x60(%rsp), %rdi
movq 0x5e33d(%rip), %rsi     # 0x84fb0
callq 0x54b0
jmp 0x26c7a
movq 0x5e347(%rip), %rdi     # 0x84fc8
leaq 0x4217f(%rip), %rsi     # 0x68e07
callq 0x5460
movq %rax, 0x58(%rsp)
jmp 0x26c94
movq 0x58(%rsp), %rdi
movl 0x4c0(%rsp), %esi
callq 0x5790
movq %rax, 0x50(%rsp)
jmp 0x26cac
movq 0x50(%rsp), %rdi
movq 0x5e2f8(%rip), %rsi     # 0x84fb0
callq 0x54b0
jmp 0x26cbf
movq 0x5e302(%rip), %rdi     # 0x84fc8
leaq 0x42168(%rip), %rsi     # 0x68e35
callq 0x5460
movq %rax, 0x48(%rsp)
jmp 0x26cd9
movq 0x48(%rsp), %rdi
movl 0x4cc(%rsp), %esi
callq 0x5790
movq %rax, 0x40(%rsp)
jmp 0x26cf1
movq 0x40(%rsp), %rdi
movq 0x5e2b3(%rip), %rsi     # 0x84fb0
callq 0x54b0
jmp 0x26d04
movq 0x5e2bd(%rip), %rdi     # 0x84fc8
leaq 0x4214a(%rip), %rsi     # 0x68e5c
callq 0x5460
movq %rax, 0x38(%rsp)
jmp 0x26d1e
movq 0x38(%rsp), %rdi
movl 0x4c8(%rsp), %esi
callq 0x5790
movq %rax, 0x30(%rsp)
jmp 0x26d36
movq 0x30(%rsp), %rdi
movq 0x5e26e(%rip), %rsi     # 0x84fb0
callq 0x54b0
jmp 0x26d49
movq 0xf8(%rsp), %rdi
leaq 0x44235(%rip), %rsi     # 0x6af8d
callq 0x5140
cmpl $0x0, %eax
jne 0x26e13
movq 0x5e25b(%rip), %rdi     # 0x84fc8
leaq 0x4210f(%rip), %rsi     # 0x68e83
callq 0x5460
movq %rax, 0x28(%rsp)
jmp 0x26d80
movq 0x6f8(%rsp), %rdi
callq 0x18910
movq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0x50f0
movq %rax, 0x20(%rsp)
jmp 0x26da1
movq 0x20(%rsp), %rdi
leaq 0x420ea(%rip), %rsi     # 0x68e97
callq 0x5460
movq %rax, 0x18(%rsp)
jmp 0x26db9
movq 0x18(%rsp), %rdi
movq 0x5e1eb(%rip), %rsi     # 0x84fb0
callq 0x54b0
jmp 0x26dcc
movq 0x5e1f5(%rip), %rdi     # 0x84fc8
leaq 0x420df(%rip), %rsi     # 0x68eb9
callq 0x5460
movq %rax, 0x10(%rsp)
jmp 0x26de6
movq 0x10(%rsp), %rdi
movq 0x5e1be(%rip), %rsi     # 0x84fb0
callq 0x54b0
movq %rax, 0x8(%rsp)
jmp 0x26dfe
movq 0x8(%rsp), %rdi
movq 0x5e1a6(%rip), %rsi     # 0x84fb0
callq 0x54b0
jmp 0x26e11
jmp 0x26e13
movb $0x1, 0x717(%rsp)
movl $0x1, 0x4d8(%rsp)
leaq 0x4e8(%rsp), %rdi
callq 0x50e0
movb 0x717(%rsp), %al
andb $0x1, %al
addq $0x718, %rsp            # imm = 0x718
retq
leaq 0x4e8(%rsp), %rdi
callq 0x50e0
movq 0x4e0(%rsp), %rdi
callq 0x57b0
nop