// File: /workspace/github_cpp_makefile_star2_O2/millanek[P]evo/process_vcf_search_sex.cpp
// Function: sexSearchMain(int, char**)
int sexSearchMain(int argc, char** argv) {
    parseSexSearchOptions(argc, argv);
    string fileRoot = stripExtension(opt::vcfFile);
    
    std::cerr << "Looking for the X and Y sex determining sequences using data from: " << opt::vcfFile << std::endl;
    std::cerr << "and male/female status defined in: " << opt::genderFile << std::endl;
    std::cerr << "The window width is: " << opt::window << " variants" << std::endl;
    
    // Open connections to read from the vcf and reference genome files
    std::ifstream* vcfFile = new std::ifstream(opt::vcfFile.c_str());
    std::ifstream* genderFile = new std::ifstream(opt::genderFile.c_str());
    
    string pValFileName = "sex_t_pvals_w" + numToString(opt::window) + ".txt";
    std::ofstream* pValFile = new std::ofstream(pValFileName.c_str());
    
    string maleString; string femaleString;
    getline(*genderFile, maleString);
    getline(*genderFile, femaleString);
    std::vector<string> males = split(maleString, ',');
    std::vector<string> females = split(femaleString, ',');
    std::sort(males.begin(),males.end());
    std::sort(females.begin(),females.end());
    
    
    // Prepare an object for output files
    
    string line;
    string currentScaffoldNum = "";
    string currentScaffoldReference;
    std::vector<string> sampleNames;
    string thisScaffoldName;
    std::vector<size_t> maleLoci;
    std::vector<size_t> femaleLoci;
    std::vector<SetDepths> setDepthsVector;
    std::vector<double> set1MeanDepths;
    std::vector<double> set2MeanDepths;
    unsigned int processedVariantCounter = 0;
    unsigned int regionStart = 1;
    std::vector<int> YlikeCounts;
    std::vector<int> nonZeroYlikeCounts;
    
    while (getline(*vcfFile, line)) {
        if (line[0] == '#' && line[1] == '#') {
            continue;
        } else if (line[0] == '#' && line[1] == 'C') {
            std::vector<std::string> fields = split(line, '\t');
            if (opt::sampleNameFile.empty()) {
                for (std::vector<std::string>::size_type i = NUM_NON_GENOTYPE_COLUMNS; i != fields.size(); i++) {
                    sampleNames.push_back(fields[i]);
                }
            } else {
                sampleNames = readSampleNamesFromTextFile(opt::sampleNameFile);
            }
            maleLoci = locateSet(sampleNames, males);
            femaleLoci = locateSet(sampleNames, females);
        } else {
            processedVariantCounter++;
            std::vector<std::string> fields = split(line, '\t');
            
            SetDepths depths = getSetVariantDepths(fields,maleLoci,femaleLoci);
            setDepthsVector.push_back(depths);
            set1MeanDepths.push_back(depths.set1_mean_depth);
            set2MeanDepths.push_back(depths.set2_mean_depth);
            
            if (processedVariantCounter % opt::window == 0) {
                int Ylike = 0;
                for (std::vector<SetDepths>::size_type i = 0; i != setDepthsVector.size(); i++) {
                    // Could this be a Y region
                    if(setDepthsVector[i].set1_mean_depth > 2 && setDepthsVector[i].set2_mean_depth <= 1) {
                        Ylike++;
                    }
                }
                
                // std::cerr << "Region: " << fields[0] << "\t" << regionStart << "-" << fields[1] << "processed" << std::endl;
                // std::cerr << Ylike << " Ylike variants" << std::endl;
                YlikeCounts.push_back(Ylike);
                if (Ylike > (opt::window/2)) {
                    std::cout << "Putative Y region: " << fields[0] << "\t" << regionStart << "-" << fields[1] << std::endl;
                }
                if (Ylike > 0) {
                    nonZeroYlikeCounts.push_back(Ylike);
                    std::cerr << "Region: " << fields[0] << "\t" << regionStart << "-" << fields[1] << "processed" << std::endl;
                    std::cerr << Ylike << " Ylike variants" << std::endl;
                }
                
                
               /* if (regionStart == 182909) {
                   // std::cerr << "Here " << set1MeanDepths.size() << "\t" << set1MeanDepths[50] << std::endl;
                  //  print_vector_stream(set1MeanDepths, std::cerr, '\n');
                  //  std::cerr << "Here " << set2MeanDepths.size() << std::endl;
                  //  print_vector_stream(depths.set1Depths, std::cerr, '\n');
                    //std::cerr << "Here " << set2MeanDepths.size() << std::endl;
                    //print_vector_stream(set2MeanDepths, std::cerr, '\n');
                    //std::cerr << "Here " << set2MeanDepths.size() << std::endl;
                    //print_vector_stream(depths.set2Depths, std::cerr, '\n');
                }
                */
                // alternative hypothesis: true difference in means is greater than 5
                double pval_t = two_sample_t(set1MeanDepths,set2MeanDepths);
                
                if (pval_t < 0.001) {
                    string loc = fields[0] + "\t" + numToString(regionStart) + "\t" + fields[1];
                    *pValFile << loc << "\t" << pval_t << "\t" << vector_average(set1MeanDepths) << "\t" << vector_average(set2MeanDepths) << std::endl;
                }
                
                //std::cerr << "Region: " << fields[0] << "\t" << regionStart << "-" << fields[1] << "processed" << std::endl;
                regionStart = atoi(fields[1].c_str());
                setDepthsVector.clear();
                set1MeanDepths.clear(); set2MeanDepths.clear();
                
            }
            if (processedVariantCounter % 100000 == 0)
                std::cerr << processedVariantCounter << " variants processed" << std::endl;
        }
    }
    
    std::ofstream* YlikeCountsDistribution = new std::ofstream("YlikeCounts.txt");
    print_vector(YlikeCounts, *YlikeCountsDistribution, '\n');
    std::ofstream* nonZeroYlikeCountsDistribution = new std::ofstream("nonZeroYlikeCounts.txt");
    print_vector(YlikeCounts, *nonZeroYlikeCountsDistribution, '\n');
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3c8, %rsp            # imm = 0x3C8
callq 0x62b20
leaq 0x7c9a5(%rip), %rsi     # 0xde7b8
leaq 0x350(%rsp), %rdi
callq 0x404d7
movq 0x7b1c1(%rip), %rdi     # 0xdcfe8
leaq 0x455f2(%rip), %rsi     # 0xa7420
callq 0x8480
leaq 0x7c97e(%rip), %rsi     # 0xde7b8
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
callq 0x8230
movq 0x7b197(%rip), %rdi     # 0xdcfe8
leaq 0x4560c(%rip), %rsi     # 0xa7464
callq 0x8480
leaq 0x7c974(%rip), %rsi     # 0xde7d8
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
callq 0x8230
movq 0x7b16d(%rip), %rdi     # 0xdcfe8
leaq 0x45606(%rip), %rsi     # 0xa7488
callq 0x8480
movl 0x7b71f(%rip), %esi     # 0xdd5ac
movq %rax, %rdi
callq 0x8840
leaq 0x45633(%rip), %rsi     # 0xa74cf
movq %rax, %rdi
callq 0x8480
movq %rax, %rdi
callq 0x8230
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %rbx
movq 0x7c8f8(%rip), %rsi     # 0xde7b8
pushq $0x8
popq %rdx
movq %rax, %rdi
callq 0x8890
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %r15
movq 0x7c8f9(%rip), %rsi     # 0xde7d8
pushq $0x8
popq %rdx
movq %rax, %rdi
callq 0x8890
movl 0x7b6bc(%rip), %esi     # 0xdd5ac
leaq 0x90(%rsp), %rdi
callq 0x28ad3
leaq 0x4559a(%rip), %rsi     # 0xa749e
leaq 0x120(%rsp), %rdi
leaq 0x90(%rsp), %rdx
callq 0x5eb31
leaq 0x4af05(%rip), %rdx     # 0xace25
leaq 0x290(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x28a29
leaq 0x120(%rsp), %rdi
callq 0x8978
leaq 0x90(%rsp), %rdi
callq 0x8978
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq %rax, %r12
movq 0x290(%rsp), %rsi
pushq $0x10
popq %rdx
movq %rax, %rdi
callq 0x84e0
leaq 0xa0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
movb %cl, (%rax)
leaq 0x230(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %cl, (%rax)
leaq 0x90(%rsp), %rsi
movq %r15, %rdi
callq 0x80a0
leaq 0x220(%rsp), %rsi
movq %r15, %rdi
callq 0x80a0
leaq 0x108(%rsp), %rdi
leaq 0x90(%rsp), %rsi
pushq $0x2c
popq %rdx
callq 0x40349
leaq 0xf0(%rsp), %rdi
leaq 0x220(%rsp), %rsi
pushq $0x2c
popq %rdx
callq 0x40349
movq 0x108(%rsp), %rdi
movq 0x110(%rsp), %rsi
callq 0x4c811
movq 0xf0(%rsp), %rdi
movq 0xf8(%rsp), %rsi
callq 0x4c811
movq %r12, 0xe8(%rsp)
leaq 0x210(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x37deb(%rip), %rsi     # 0x99e1f
leaq 0x330(%rsp), %rdi
leaq 0x120(%rsp), %rdx
callq 0x21904
leaq 0x320(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %edx, %edx
movb %dl, (%rax)
xorpd %xmm0, %xmm0
leaq 0xd0(%rsp), %rcx
andq $0x0, 0x10(%rcx)
leaq 0x300(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movapd %xmm0, (%rcx)
movl $0x0, 0x10(%rsp)
movb %dl, (%rax)
leaq 0x240(%rsp), %r12
movapd %xmm0, (%r12)
andq $0x0, 0x10(%r12)
leaq 0x160(%rsp), %rax
movapd %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x70(%rsp), %rax
andq $0x0, 0x10(%rax)
leaq 0x50(%rsp), %rcx
andq $0x0, 0x10(%rcx)
movapd %xmm0, (%rax)
movapd %xmm0, (%rcx)
leaq 0x30(%rsp), %rax
movapd %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0xb0(%rsp), %rax
movapd %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x180(%rsp), %rax
andq $0x0, 0x10(%rax)
movapd %xmm0, (%rax)
pushq $0x1
popq %rax
movl %eax, 0x14(%rsp)
leaq 0x200(%rsp), %r13
leaq 0x3a8(%rsp), %r15
movq %rbx, %rdi
movq %r13, %rsi
callq 0x80a0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x626ca
movq 0x200(%rsp), %rax
cmpb $0x23, (%rax)
jne 0x62212
movzbl 0x1(%rax), %eax
cmpl $0x23, %eax
je 0x62116
cmpl $0x43, %eax
jne 0x62212
leaq 0x120(%rsp), %rdi
movq %r13, %rsi
pushq $0x9
popq %rdx
callq 0x40349
cmpq $0x0, 0x7c68f(%rip)     # 0xde800
je 0x62684
movq %r12, %rbp
movq %r15, %r14
movq %r15, %rdi
leaq 0x7c671(%rip), %rsi     # 0xde7f8
callq 0x4237c
leaq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0x2f6c0
movq %r14, %rdi
callq 0x28a08
movq %r15, %rdi
leaq 0xd0(%rsp), %r14
movq %r14, %rsi
leaq 0x108(%rsp), %rdx
callq 0x427bd
movq %rbp, %r12
movq %rbp, %rdi
movq %r15, %rsi
callq 0x2f712
movq %r15, %rdi
callq 0x2f68c
movq %r15, %rdi
movq %r14, %rsi
leaq 0xf0(%rsp), %rdx
callq 0x427bd
leaq 0x160(%rsp), %rdi
movq %r15, %rsi
callq 0x2f712
movq %r15, %rdi
callq 0x2f68c
leaq 0x120(%rsp), %rdi
callq 0x28a08
jmp 0x62116
leaq 0x18(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
pushq $0x9
popq %rdx
callq 0x40349
leaq 0x120(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
movq %r12, %rdx
leaq 0x160(%rsp), %rcx
callq 0x61cb0
leaq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0x62d66
leaq 0x50(%rsp), %rdi
leaq 0x150(%rsp), %rsi
callq 0x5a406
leaq 0x30(%rsp), %rdi
leaq 0x158(%rsp), %rsi
callq 0x5a406
movl 0x10(%rsp), %eax
incl %eax
movl %eax, 0x10(%rsp)
xorl %edx, %edx
divl 0x7b326(%rip)           # 0xdd5ac
testl %edx, %edx
jne 0x62630
andl $0x0, 0xc(%rsp)
movq 0x70(%rsp), %rax
movq 0x78(%rsp), %rcx
subq %rax, %rcx
sarq $0x6, %rcx
addq $0x38, %rax
xorl %edx, %edx
subq $0x1, %rcx
jb 0x622d9
movsd -0x8(%rax), %xmm0
ucomisd 0x41fa3(%rip), %xmm0    # 0xa4260
jbe 0x622d3
movsd 0x35329(%rip), %xmm0    # 0x975f0
ucomisd (%rax), %xmm0
jb 0x622d3
incl %edx
movl %edx, 0xc(%rsp)
addq $0x40, %rax
jmp 0x622aa
leaq 0xb0(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x3aca4
movl 0xc(%rsp), %ecx
movl 0x7b2b7(%rip), %eax     # 0xdd5ac
cltd
pushq $0x2
popq %rsi
idivl %esi
movl 0x14(%rsp), %r14d
cmpl %eax, %ecx
jle 0x6236a
movq 0x7acad(%rip), %rdi     # 0xdcfb8
leaq 0x4519a(%rip), %rsi     # 0xa74ac
callq 0x8480
movq 0x18(%rsp), %rsi
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
leaq 0x37af0(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movq %r14, %rsi
callq 0x8320
movq %rax, %rdi
leaq 0x36708(%rip), %rsi     # 0x98a50
callq 0x8480
movq 0x18(%rsp), %rsi
addq $0x20, %rsi
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
callq 0x8230
movl 0xc(%rsp), %ecx
testl %ecx, %ecx
jle 0x6241c
leaq 0x180(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x3aca4
movq 0x7ac5d(%rip), %rdi     # 0xdcfe8
leaq 0x4512e(%rip), %rsi     # 0xa74c0
callq 0x8480
movq 0x18(%rsp), %rsi
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
leaq 0x37a70(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movq %r14, %rsi
callq 0x8320
movq %rax, %rdi
leaq 0x36688(%rip), %rsi     # 0x98a50
callq 0x8480
movq 0x18(%rsp), %rsi
addq $0x20, %rsi
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
leaq 0x450fb(%rip), %rsi     # 0xa74e3
callq 0x8480
movq %rax, %rdi
callq 0x8230
movl 0xc(%rsp), %esi
movq 0x7abe8(%rip), %rdi     # 0xdcfe8
callq 0x8840
movq %rax, %rdi
leaq 0x450ba(%rip), %rsi     # 0xa74c9
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x278(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2f816
leaq 0x370(%rsp), %rbp
movq %rbp, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2f816
xorpd %xmm0, %xmm0
leaq 0x278(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
callq 0x62d92
movsd %xmm0, 0x68(%rsp)
movq %rbp, %rdi
callq 0x2b43c
movq %r14, %rdi
callq 0x2b43c
movsd 0x44ee8(%rip), %xmm0    # 0xa7360
ucomisd 0x68(%rsp), %xmm0
jbe 0x625f2
movq 0x18(%rsp), %rsi
leaq 0x258(%rsp), %rdi
leaq 0x37986(%rip), %rdx     # 0x99e1e
callq 0x28806
leaq 0x2b0(%rsp), %r14
movq %r14, %rdi
movl 0x14(%rsp), %esi
callq 0x63033
leaq 0x2d0(%rsp), %rbp
movq %rbp, %rdi
leaq 0x258(%rsp), %rsi
movq %r14, %rdx
callq 0x28a48
leaq 0x388(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
leaq 0x3793d(%rip), %rdx     # 0x99e1e
callq 0x28a29
movq 0x18(%rsp), %rdx
addq $0x20, %rdx
movq %r15, %rdi
movq %r14, %rsi
callq 0x287e7
movq %r14, %rdi
callq 0x8978
leaq 0x2d0(%rsp), %rdi
callq 0x8978
leaq 0x2b0(%rsp), %rdi
callq 0x8978
leaq 0x258(%rsp), %rdi
callq 0x8978
movq 0xe8(%rsp), %rdi
movq %r15, %rsi
callq 0x8430
movq %rax, %rdi
leaq 0x378db(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %rdi
movsd 0x68(%rsp), %xmm0
callq 0x8750
movq %rax, %rdi
leaq 0x378be(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %r14
leaq 0x1e8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x2f816
leaq 0x1e8(%rsp), %rdi
callq 0x2f7e9
movq %r14, %rdi
callq 0x8750
movq %rax, %rdi
leaq 0x37885(%rip), %rsi     # 0x99e1e
callq 0x8480
movq %rax, %r14
leaq 0x1d0(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2f816
leaq 0x1d0(%rsp), %rdi
callq 0x2f7e9
movq %r14, %rdi
callq 0x8750
movq %rax, %rdi
callq 0x8230
leaq 0x1d0(%rsp), %rdi
callq 0x2b43c
leaq 0x1e8(%rsp), %rdi
callq 0x2b43c
movq %r15, %rdi
callq 0x8978
movq 0x18(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86f0
movl %eax, 0x14(%rsp)
leaq 0x70(%rsp), %rdi
callq 0x630ce
movq 0x50(%rsp), %rax
cmpq %rax, 0x58(%rsp)
je 0x6261f
movq %rax, 0x58(%rsp)
movq 0x30(%rsp), %rax
cmpq %rax, 0x38(%rsp)
je 0x62630
movq %rax, 0x38(%rsp)
movl 0x10(%rsp), %eax
xorl %edx, %edx
movl $0x186a0, %ecx          # imm = 0x186A0
divl %ecx
testl %edx, %edx
jne 0x62668
movl 0x10(%rsp), %esi
movq 0x7a99c(%rip), %rdi     # 0xdcfe8
callq 0x8320
movq %rax, %rdi
leaq 0x44e7e(%rip), %rsi     # 0xa74d9
callq 0x8480
movq %rax, %rdi
callq 0x8230
leaq 0x120(%rsp), %rdi
callq 0x62d50
leaq 0x18(%rsp), %rdi
callq 0x28a08
jmp 0x62116
movq %r12, %rbp
movl $0x120, %r14d           # imm = 0x120
pushq $0x9
popq %r12
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
cmpq %rax, %r12
je 0x621a4
addq %r14, %rsi
leaq 0xd0(%rsp), %rdi
callq 0x2b0a4
incq %r12
addq $0x20, %r14
jmp 0x62691
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq %rax, %rbx
leaq 0x44e16(%rip), %rsi     # 0xa74f4
pushq $0x10
popq %rdx
movq %rax, %rdi
callq 0x84e0
leaq 0x1b8(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x2c6d4
leaq 0x1b8(%rsp), %rdi
pushq $0xa
popq %rdx
pushq $0x1
popq %rcx
movq %rbx, %rsi
callq 0x348a2
leaq 0x1b8(%rsp), %rdi
callq 0x2aef2
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq %rax, %rbx
leaq 0x44db8(%rip), %rsi     # 0xa74ed
pushq $0x10
popq %rdx
movq %rax, %rdi
callq 0x84e0
leaq 0x1a0(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x2c6d4
leaq 0x1a0(%rsp), %rdi
pushq $0xa
popq %rdx
pushq $0x1
popq %rcx
movq %rbx, %rsi
callq 0x348a2
leaq 0x1a0(%rsp), %rdi
callq 0x2aef2
leaq 0x180(%rsp), %rdi
callq 0x2aef2
leaq 0xb0(%rsp), %rdi
callq 0x2aef2
leaq 0x30(%rsp), %rdi
callq 0x2b43c
leaq 0x50(%rsp), %rdi
callq 0x2b43c
leaq 0x70(%rsp), %rdi
callq 0x630d6
leaq 0x160(%rsp), %rdi
callq 0x2f68c
leaq 0x240(%rsp), %rdi
callq 0x2f68c
leaq 0x2f0(%rsp), %rdi
callq 0x8978
leaq 0xd0(%rsp), %rdi
callq 0x28a08
leaq 0x310(%rsp), %rdi
callq 0x8978
leaq 0x330(%rsp), %rdi
callq 0x8978
leaq 0x200(%rsp), %rdi
callq 0x8978
leaq 0xf0(%rsp), %rdi
callq 0x28a08
leaq 0x108(%rsp), %rdi
callq 0x28a08
leaq 0x220(%rsp), %rdi
callq 0x8978
leaq 0x90(%rsp), %rdi
callq 0x8978
leaq 0x290(%rsp), %rdi
callq 0x8978
leaq 0x350(%rsp), %rdi
callq 0x8978
xorl %eax, %eax
addq $0x3c8, %rsp            # imm = 0x3C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x388(%rsp), %rdi
callq 0x8978
jmp 0x62882
movq %rax, %r14
leaq 0x2d0(%rsp), %rdi
callq 0x8978
jmp 0x6289e
jmp 0x62a03
movq %rax, %r14
jmp 0x628ab
movq %rax, %r14
leaq 0x2b0(%rsp), %rdi
callq 0x8978
leaq 0x258(%rsp), %rdi
jmp 0x629df
jmp 0x62a22
jmp 0x62a03
movq %rax, %r14
leaq 0x1d0(%rsp), %rdi
callq 0x2b43c
jmp 0x629c5
movq %rax, %r14
leaq 0x370(%rsp), %rdi
callq 0x2b43c
jmp 0x628ec
movq %rax, %r14
leaq 0x278(%rsp), %rdi
callq 0x2b43c
jmp 0x62a06
jmp 0x62a34
jmp 0x62a22
jmp 0x62a22
movq %rax, %r14
leaq 0x1a0(%rsp), %rdi
jmp 0x62927
jmp 0x62931
movq %rax, %r14
leaq 0x1b8(%rsp), %rdi
callq 0x2aef2
jmp 0x62a37
movq %rax, %r14
movl $0x200, %esi            # imm = 0x200
movq %rbx, %rdi
callq 0x84a0
jmp 0x62a37
movq %rax, %r14
jmp 0x62abd
movq %rax, %r14
jmp 0x62ad7
jmp 0x629f9
movq %rax, %r14
movl $0x200, %esi            # imm = 0x200
movq %r12, %rdi
callq 0x84a0
jmp 0x62afe
movq %rax, %r14
jmp 0x62afe
movq %rax, %r14
leaq 0x120(%rsp), %rdi
callq 0x8978
jmp 0x6298d
movq %rax, %r14
leaq 0x90(%rsp), %rdi
jmp 0x62b06
jmp 0x62a1a
movq %rax, %r14
movl $0x208, %esi            # imm = 0x208
movq %r15, %rdi
jmp 0x629b6
jmp 0x62a1a
movq %rax, %r14
movl $0x208, %esi            # imm = 0x208
movq %rbx, %rdi
callq 0x84a0
jmp 0x62b0b
jmp 0x62a1a
movq %rax, %r14
leaq 0x1e8(%rsp), %rdi
callq 0x2b43c
jmp 0x629d7
movq %rax, %r14
leaq 0x3a8(%rsp), %rdi
callq 0x8978
jmp 0x62a06
movq %rax, %r14
jmp 0x62a13
jmp 0x62a34
jmp 0x62a34
jmp 0x62a34
movq %rax, %r14
jmp 0x62aca
movq %rax, %r14
jmp 0x62ae4
jmp 0x62a03
movq %rax, %r14
leaq 0x120(%rsp), %rdi
callq 0x62d50
leaq 0x18(%rsp), %rdi
jmp 0x62a2d
movq %rax, %r14
jmp 0x62b0b
movq %rax, %r14
leaq 0x120(%rsp), %rdi
callq 0x28a08
jmp 0x62a37
movq %rax, %r14
leaq 0x180(%rsp), %rdi
callq 0x2aef2
leaq 0xb0(%rsp), %rdi
callq 0x2aef2
leaq 0x30(%rsp), %rdi
callq 0x2b43c
leaq 0x50(%rsp), %rdi
callq 0x2b43c
leaq 0x70(%rsp), %rdi
callq 0x630d6
leaq 0x160(%rsp), %rdi
callq 0x2f68c
leaq 0x240(%rsp), %rdi
callq 0x2f68c
leaq 0x2f0(%rsp), %rdi
callq 0x8978
leaq 0xd0(%rsp), %rdi
callq 0x28a08
leaq 0x310(%rsp), %rdi
callq 0x8978
leaq 0x330(%rsp), %rdi
callq 0x8978
leaq 0x200(%rsp), %rdi
callq 0x8978
leaq 0xf0(%rsp), %rdi
callq 0x28a08
leaq 0x108(%rsp), %rdi
callq 0x28a08
leaq 0x220(%rsp), %rdi
callq 0x8978
leaq 0x90(%rsp), %rdi
callq 0x8978
leaq 0x290(%rsp), %rdi
callq 0x8978
leaq 0x350(%rsp), %rdi
callq 0x8978
movq %r14, %rdi
callq 0x8870