// File: /workspace/github_cpp_makefile_star2_O2/millanek[P]evo/process_vcf_vcf_from_sequenom.cpp
// Function: VCFfromSequenomMain(int, char**)
int VCFfromSequenomMain(int argc, char** argv) {
    parseVCFfromSequenomOptions(argc, argv);
    string fileRoot = stripExtension(opt::sequenomFile);
    
    std::cerr << "Using genotype calls in: " << opt::sequenomFile << std::endl;
    std::cerr << "to generate a VCF file."<< std::endl;
    
    // Open connection to read from the vcf file
    std::ifstream* sequenomFile = new std::ifstream(opt::sequenomFile.c_str());
    std::ifstream* sequenomDesignFile = new std::ifstream(opt::sequenomDesignFile.c_str());
    string vcfFileName = fileRoot + opt::runName + ".vcf";
    std::ofstream* pVCF = new std::ofstream(vcfFileName.c_str());
    std::ofstream* pSampleNames = new std::ofstream("sample_names.txt");
    
    
    string line;
    std::map<string, std::vector<string> > varRefAlt;
    while (getline(*sequenomDesignFile, line)) {
        std::vector<std::string> fields = split(line, '\t');
        string variant = fields[0];
        fields = split(fields[1], '[');
        string baseBeforeVar = fields[0].substr(fields[0].length()-1,1);
        fields = split(fields[1], ']');
        fields = split(fields[0], '/');
        string ref = fields[0];
        string alt = fields[1];
        varRefAlt[variant].push_back(ref);
        varRefAlt[variant].push_back(alt);
        varRefAlt[variant].push_back(baseBeforeVar);
    }
    
    
    
    getline(*sequenomFile, line);
    std::string firstLocus;
    std::vector<std::string> samples;
    std::map<string, std::vector<string> > varGenotypes;
    std::vector<string> checkDuplicates;
    while (getline(*sequenomFile, line)) {
        std::vector<std::string> fields = split(line, '\t');
        string var = fields[5]; string gnt = fields[3]; string sample = fields[1];
        if (std::find(checkDuplicates.begin(),checkDuplicates.end(), sample+"\t"+var) != checkDuplicates.end()) {
            continue;
        } else {
            checkDuplicates.push_back(sample+"\t"+var);
        }
        //if (varGenotypes.find(fields[5]) != varGenotypes.end()) {
        string ref = varRefAlt[var][0]; string alt = varRefAlt[var][1]; string bbv = varRefAlt[var][2];
        if (varGenotypes[var].empty()) {
            std::vector<std::string> scafLoc = split(var, '_');
            if (ref == "-")
                varGenotypes[var].push_back(scafLoc[0]+"_"+scafLoc[1]+"\t"+scafLoc[2]+"\t"+"."+"\t"+bbv+"\t"+bbv+alt+"\t.\t.\t.\tGT");
            else if (alt == "-")
                varGenotypes[var].push_back(scafLoc[0]+"_"+scafLoc[1]+"\t"+scafLoc[2]+"\t"+"."+"\t"+bbv+ref+"\t"+bbv+"\t.\t.\t.\tGT");
            else
                varGenotypes[var].push_back(scafLoc[0]+"_"+scafLoc[1]+"\t"+scafLoc[2]+"\t"+"."+"\t"+ref+"\t"+alt+"\t.\t.\t.\tGT");
        }
        if ((gnt.length() == 2 && ref.length() == 1 && alt.length() == 1) || (gnt.find('.') != string::npos))
            varGenotypes[var].push_back("1/0");
        else if (fields[3] == varRefAlt[var][0])
            varGenotypes[var].push_back("0/0");
        else if (fields[3] == varRefAlt[var][1])
            varGenotypes[var].push_back("1/1");
        else if (gnt == "#NAME?" || gnt == "N")
            varGenotypes[var].push_back("./.");
        else
            assert(false); 
        if (firstLocus.empty()) {
            firstLocus = var;
            samples.push_back("#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT");
            samples.push_back(sample);
        } else if (firstLocus == fields[5]) {
            samples.push_back(sample);
        }
        
        fields = split(var, '_');
        //}
        
    }
    
    *pVCF << VCF_HEADER;
    print_vector(samples, *pVCF);
    for (std::map<string, std::vector<string> >::iterator it = varGenotypes.begin(); it != varGenotypes.end(); it++) {
        print_vector(it->second, *pVCF);
    }
    
    print_vector(samples, *pSampleNames, '\n');
    
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3f8, %rsp            # imm = 0x3F8
callq 0x6a4c2
leaq 0x757e3(%rip), %rsi     # 0xde960
leaq 0x3c0(%rsp), %rdi
callq 0x404d7
movq 0x73e57(%rip), %rdi     # 0xdcfe8
leaq 0x413b9(%rip), %rsi     # 0xaa551
callq 0x8480
leaq 0x757bc(%rip), %rsi     # 0xde960
movq %rax, %rdi
callq 0x8430
movq %rax, %rdi
callq 0x8230
movq 0x73e2d(%rip), %rdi     # 0xdcfe8
leaq 0x413a9(%rip), %rsi     # 0xaa56b
callq 0x8480
movq %rax, %rdi
callq 0x8230
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq 0x75780(%rip), %rsi     # 0xde960
pushq $0x8
popq %rdx
movq %rax, 0x50(%rsp)
movq %rax, %rdi
callq 0x8890
movl $0x208, %edi            # imm = 0x208
callq 0x8490
movq %rax, %r14
movq 0x7577c(%rip), %rsi     # 0xde980
pushq $0x8
popq %rdx
movq %rax, %rdi
callq 0x8890
leaq 0x7578a(%rip), %rdx     # 0xde9a0
leaq 0x280(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
callq 0x28b6d
leaq 0x4106e(%rip), %rdx     # 0xaa2a0
leaq 0x3a0(%rsp), %rdi
leaq 0x280(%rsp), %rsi
callq 0x28a29
leaq 0x280(%rsp), %rdi
callq 0x8978
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq 0x3a0(%rsp), %rsi
pushq $0x10
popq %rdx
movq %rax, 0x20(%rsp)
movq %rax, %rdi
callq 0x84e0
movl $0x200, %edi            # imm = 0x200
callq 0x8490
movq %r14, 0x48(%rsp)
leaq 0x412f7(%rip), %rsi     # 0xaa583
pushq $0x10
popq %rdx
movq %rax, 0xb0(%rsp)
movq %rax, %rdi
callq 0x84e0
leaq 0x320(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x288(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x90(%rsp), %r15
leaq 0xf0(%rsp), %r12
leaq 0x2d0(%rsp), %r13
movq %rsp, %rbp
leaq 0x260(%rsp), %r14
leaq 0x280(%rsp), %rbx
movq 0x48(%rsp), %rdi
leaq 0x310(%rsp), %rsi
callq 0x80a0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x69469
movq %r15, %rdi
leaq 0x310(%rsp), %rsi
pushq $0x9
popq %rdx
callq 0x40349
movq 0x90(%rsp), %rsi
movq %r12, %rdi
callq 0x8600
movq 0x90(%rsp), %rsi
addq $0x20, %rsi
movq %r13, %rdi
pushq $0x5b
popq %rdx
callq 0x40349
movq %r15, %rdi
movq %r13, %rsi
callq 0x2f6c0
movq %r13, %rdi
callq 0x28a08
movq 0x90(%rsp), %rsi
movq 0x8(%rsi), %rdx
decq %rdx
movq %r13, %rdi
pushq $0x1
popq %rcx
callq 0x84b0
movq 0x90(%rsp), %rsi
addq $0x20, %rsi
movq %rbp, %rdi
pushq $0x5d
popq %rdx
callq 0x40349
movq %r15, %rdi
movq %rbp, %rsi
callq 0x2f6c0
movq %rbp, %rdi
callq 0x28a08
movq 0x90(%rsp), %rsi
movq %rbp, %rdi
pushq $0x2f
popq %rdx
callq 0x40349
movq %r15, %rdi
movq %rbp, %rsi
callq 0x2f6c0
movq %rbp, %rdi
callq 0x28a08
movq 0x90(%rsp), %rsi
movq %rbp, %rdi
callq 0x8600
movq 0x90(%rsp), %rsi
addq $0x20, %rsi
movq %r14, %rdi
callq 0x8600
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3abd8
movq %rax, %rdi
movq %rbp, %rsi
callq 0x2b0a4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3abd8
movq %rax, %rdi
movq %r14, %rsi
callq 0x2b0a4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3abd8
movq %rax, %rdi
movq %r13, %rsi
callq 0x2b0a4
movq %r14, %rdi
callq 0x8978
movq %rbp, %rdi
callq 0x8978
movq %r13, %rdi
callq 0x8978
movq %r12, %rdi
callq 0x8978
movq %r15, %rdi
callq 0x28a08
jmp 0x692fb
leaq 0x310(%rsp), %rsi
movq 0x50(%rsp), %rdi
callq 0x80a0
leaq 0x2e0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
leaq 0x140(%rsp), %rdx
andq $0x0, 0x10(%rdx)
leaq 0xf8(%rsp), %rcx
andl $0x0, (%rcx)
movb $0x0, (%rax)
andq $0x0, 0x8(%rcx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rdx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
andq $0x0, 0x20(%rcx)
leaq 0x120(%rsp), %rax
movaps %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x310(%rsp), %r13
leaq 0xb8(%rsp), %rbx
movq 0x50(%rsp), %rdi
movq %r13, %rsi
callq 0x80a0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x69ebc
movq %rbx, %rdi
movq %r13, %rsi
pushq $0x9
popq %rdx
callq 0x40349
movq 0xb8(%rsp), %rsi
movl $0xa0, %eax
addq %rax, %rsi
movq %rsp, %r12
movq %r12, %rdi
callq 0x8600
movq 0xb8(%rsp), %rsi
addq $0x60, %rsi
leaq 0x260(%rsp), %rdi
callq 0x8600
movq %r13, %r15
movq 0xb8(%rsp), %rsi
addq $0x20, %rsi
leaq 0x90(%rsp), %rbp
movq %rbp, %rdi
callq 0x8600
movq 0x120(%rsp), %r14
movq 0x128(%rsp), %r13
leaq 0x350(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rsi
leaq 0x3089a(%rip), %rdx     # 0x99e1e
callq 0x28806
leaq 0xd0(%rsp), %rbp
movq %rbp, %rdi
movq %rbx, %rsi
movq %r12, %rdx
callq 0x287e7
movq %r14, %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0x46356
movq %rax, %r14
movq 0x128(%rsp), %r13
movq %rbp, %rdi
callq 0x8978
leaq 0x350(%rsp), %r12
movq %r12, %rdi
callq 0x8978
cmpq %r13, %r14
movq %r15, %r13
leaq 0xb8(%rsp), %rbx
leaq 0x90(%rsp), %rax
leaq 0x2b0(%rsp), %r15
jne 0x69d50
movq %r12, %rdi
movq %rax, %rsi
leaq 0x3081d(%rip), %rdx     # 0x99e1e
callq 0x28806
leaq 0xd0(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
movq %rsp, %rdx
callq 0x287e7
leaq 0x120(%rsp), %rdi
movq %r14, %rsi
callq 0x3490e
movq %r14, %rdi
callq 0x8978
movq %r12, %rdi
callq 0x8978
leaq 0x280(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
movq (%rax), %rsi
movq %r14, %rdi
callq 0x8600
leaq 0x280(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
movq (%rax), %rsi
addq $0x20, %rsi
movq %r12, %rdi
callq 0x8600
leaq 0x280(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
movq (%rax), %rsi
addq $0x40, %rsi
leaq 0x2f0(%rsp), %rdi
callq 0x8600
leaq 0xf0(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
movq (%rax), %rcx
cmpq 0x8(%rax), %rcx
jne 0x69c00
leaq 0x58(%rsp), %rdi
movq %rsp, %rsi
pushq $0x5f
popq %rdx
callq 0x40349
leaq 0xd0(%rsp), %rdi
leaq 0x2f37a(%rip), %r14     # 0x98a50
movq %r14, %rsi
callq 0x2193f
testb %al, %al
je 0x6983f
leaq 0xf0(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
movq %rax, %r14
movq 0x58(%rsp), %rsi
leaq 0x330(%rsp), %rbp
movq %rbp, %rdi
leaq 0x3a0ac(%rip), %rdx     # 0xa37bc
callq 0x28806
movq 0x58(%rsp), %rdx
addq $0x20, %rdx
leaq 0x160(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
callq 0x287e7
leaq 0x2b0(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0x306d8(%rip), %rdx     # 0x99e1e
callq 0x28a29
movq 0x58(%rsp), %rdx
addq $0x40, %rdx
leaq 0x180(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
callq 0x287e7
leaq 0x1a0(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0x306a2(%rip), %rdx     # 0x99e1e
callq 0x28a29
leaq 0x1c0(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
leaq 0x3eab4(%rip), %rdx     # 0xa824a
callq 0x28a29
leaq 0x1e0(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0x3066e(%rip), %rdx     # 0x99e1e
callq 0x28a29
leaq 0x200(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
leaq 0x2f0(%rsp), %rdx
callq 0x287e7
leaq 0x220(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0x30639(%rip), %rdx     # 0x99e1e
callq 0x28a29
leaq 0x240(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
leaq 0x2f0(%rsp), %rdx
callq 0x287e7
leaq 0x70(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x287e7
leaq 0x28(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
leaq 0x40d6a(%rip), %rdx     # 0xaa594
callq 0x28a29
movq %r14, %rdi
movq %r15, %rsi
callq 0x3490e
jmp 0x699ab
movq %r12, %rdi
movq %r14, %rsi
callq 0x2193f
testb %al, %al
je 0x69a3f
leaq 0xf0(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
movq %rax, %r14
movq 0x58(%rsp), %rsi
leaq 0x330(%rsp), %rbp
movq %rbp, %rdi
leaq 0x39f40(%rip), %rdx     # 0xa37bc
callq 0x28806
movq 0x58(%rsp), %rdx
addq $0x20, %rdx
leaq 0x160(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
callq 0x287e7
leaq 0x2b0(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0x3056c(%rip), %rdx     # 0x99e1e
callq 0x28a29
movq 0x58(%rsp), %rdx
addq $0x40, %rdx
leaq 0x180(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
callq 0x287e7
leaq 0x1a0(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0x30536(%rip), %rdx     # 0x99e1e
callq 0x28a29
leaq 0x1c0(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
leaq 0x3e948(%rip), %rdx     # 0xa824a
callq 0x28a29
leaq 0x1e0(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0x30502(%rip), %rdx     # 0x99e1e
callq 0x28a29
leaq 0x200(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
leaq 0x2f0(%rsp), %rdx
callq 0x287e7
leaq 0x220(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0xd0(%rsp), %rdx
callq 0x287e7
leaq 0x240(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
leaq 0x304b2(%rip), %rdx     # 0x99e1e
callq 0x28a29
leaq 0x70(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0x2f0(%rsp), %rdx
callq 0x287e7
leaq 0x28(%rsp), %r15
movq %r15, %rdi
movq %rbp, %rsi
leaq 0x40bf9(%rip), %rdx     # 0xaa594
callq 0x28a29
movq %r14, %rdi
movq %r15, %rsi
callq 0x3490e
movq %r15, %rdi
callq 0x8978
leaq 0x70(%rsp), %rdi
callq 0x8978
leaq 0x240(%rsp), %rdi
callq 0x8978
leaq 0x220(%rsp), %rdi
callq 0x8978
leaq 0x200(%rsp), %rdi
callq 0x8978
leaq 0x1e0(%rsp), %rdi
callq 0x8978
leaq 0x1c0(%rsp), %rdi
callq 0x8978
leaq 0x1a0(%rsp), %rdi
callq 0x8978
leaq 0x180(%rsp), %rdi
callq 0x8978
leaq 0x2b0(%rsp), %rdi
callq 0x8978
leaq 0x160(%rsp), %rdi
callq 0x8978
leaq 0x330(%rsp), %rdi
jmp 0x69bf1
leaq 0xf0(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
movq %rax, 0x48(%rsp)
movq 0x58(%rsp), %rsi
leaq 0x160(%rsp), %rbp
movq %rbp, %rdi
leaq 0x39d51(%rip), %rdx     # 0xa37bc
callq 0x28806
movq 0x58(%rsp), %rdx
addq $0x20, %rdx
movq %r15, %rdi
movq %rbp, %rsi
callq 0x287e7
leaq 0x180(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0x30385(%rip), %rdx     # 0x99e1e
callq 0x28a29
movq 0x58(%rsp), %rdx
addq $0x40, %rdx
leaq 0x1a0(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
callq 0x287e7
leaq 0x1c0(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
leaq 0x3034f(%rip), %rdx     # 0x99e1e
callq 0x28a29
leaq 0x1e0(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
leaq 0x3e761(%rip), %rdx     # 0xa824a
callq 0x28a29
leaq 0x200(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
leaq 0x3031b(%rip), %rdx     # 0x99e1e
callq 0x28a29
leaq 0x220(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
leaq 0xd0(%rsp), %rdx
callq 0x287e7
leaq 0x240(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
leaq 0x302e6(%rip), %rdx     # 0x99e1e
callq 0x28a29
leaq 0x70(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x287e7
leaq 0x28(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
leaq 0x40a32(%rip), %rdx     # 0xaa594
callq 0x28a29
movq 0x48(%rsp), %rdi
movq %rbp, %rsi
callq 0x3490e
movq %rbp, %rdi
callq 0x8978
leaq 0x70(%rsp), %rdi
callq 0x8978
leaq 0x240(%rsp), %rdi
callq 0x8978
leaq 0x220(%rsp), %rdi
callq 0x8978
leaq 0x200(%rsp), %rdi
callq 0x8978
leaq 0x1e0(%rsp), %rdi
callq 0x8978
leaq 0x1c0(%rsp), %rdi
callq 0x8978
leaq 0x1a0(%rsp), %rdi
callq 0x8978
leaq 0x180(%rsp), %rdi
callq 0x8978
movq %r15, %rdi
callq 0x8978
leaq 0x160(%rsp), %rdi
callq 0x8978
leaq 0x58(%rsp), %rdi
callq 0x28a08
cmpq $0x2, 0x268(%rsp)
jne 0x69c21
cmpq $0x1, 0xd8(%rsp)
jne 0x69c21
cmpq $0x1, 0x358(%rsp)
je 0x69c3d
leaq 0x260(%rsp), %rdi
pushq $0x2e
popq %rsi
xorl %edx, %edx
callq 0x85b0
cmpq $-0x1, %rax
je 0x69d7a
leaq 0xf0(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
movq %rax, %r14
leaq 0x28(%rsp), %r15
movq %r15, %rdi
leaq 0x34f1f(%rip), %rsi     # 0x9eb7e
leaq 0x70(%rsp), %rdx
callq 0x21904
movq %r14, %rdi
movq %r15, %rsi
callq 0x3490e
movq %r15, %rdi
callq 0x8978
cmpq $0x0, 0x2d8(%rsp)
je 0x69caa
movq 0xb8(%rsp), %rsi
movl $0xa0, %eax
addq %rax, %rsi
leaq 0x2d0(%rsp), %rdi
callq 0x26b06
testb %al, %al
jne 0x69ceb
jmp 0x69d00
leaq 0x2d0(%rsp), %rdi
movq %rsp, %rsi
callq 0x82a0
leaq 0x28(%rsp), %r14
movq %r14, %rdi
leaq 0x40924(%rip), %rsi     # 0xaa5ed
leaq 0x70(%rsp), %rdx
callq 0x21904
leaq 0x140(%rsp), %rdi
movq %r14, %rsi
callq 0x3490e
movq %r14, %rdi
callq 0x8978
leaq 0x140(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x2b0a4
leaq 0x28(%rsp), %r14
movq %r14, %rdi
movq %rsp, %rsi
pushq $0x5f
popq %rdx
callq 0x40349
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2f6c0
movq %r14, %rdi
callq 0x28a08
leaq 0x2f0(%rsp), %rdi
callq 0x8978
movq %r12, %rdi
callq 0x8978
leaq 0xd0(%rsp), %rdi
callq 0x8978
leaq 0x90(%rsp), %rax
movq %rax, %rdi
callq 0x8978
leaq 0x260(%rsp), %rdi
callq 0x8978
movq %rsp, %rdi
callq 0x8978
movq %rbx, %rdi
callq 0x28a08
jmp 0x694df
movq 0xb8(%rsp), %r14
leaq 0x280(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
addq $0x60, %r14
movq (%rax), %rsi
movq %r14, %rdi
callq 0x26b06
testb %al, %al
je 0x69de1
leaq 0xf0(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
movq %rax, %r14
leaq 0x28(%rsp), %r15
movq %r15, %rdi
leaq 0x34daf(%rip), %rsi     # 0x9eb76
leaq 0x70(%rsp), %rdx
callq 0x21904
movq %r14, %rdi
movq %r15, %rsi
callq 0x3490e
jmp 0x69c74
movq 0xb8(%rsp), %r14
leaq 0x280(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
addq $0x60, %r14
movq (%rax), %rsi
addq $0x20, %rsi
movq %r14, %rdi
callq 0x26b06
testb %al, %al
je 0x69e4c
leaq 0xf0(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
movq %rax, %r14
leaq 0x28(%rsp), %r15
movq %r15, %rdi
leaq 0x34d48(%rip), %rsi     # 0x9eb7a
leaq 0x70(%rsp), %rdx
callq 0x21904
movq %r14, %rdi
movq %r15, %rsi
callq 0x3490e
jmp 0x69c74
leaq 0x260(%rsp), %rdi
leaq 0x40743(%rip), %rsi     # 0xaa59e
callq 0x2193f
testb %al, %al
jne 0x69e80
leaq 0x260(%rsp), %rdi
leaq 0x42fac(%rip), %rsi     # 0xace1f
callq 0x2193f
testb %al, %al
je 0x6a017
leaq 0xf0(%rsp), %rdi
movq %rsp, %rsi
callq 0x3abd8
movq %rax, %r14
leaq 0x28(%rsp), %r15
movq %r15, %rdi
leaq 0x34cd0(%rip), %rsi     # 0x9eb72
leaq 0x70(%rsp), %rdx
callq 0x21904
movq %r14, %rdi
movq %r15, %rsi
callq 0x3490e
jmp 0x69c74
leaq 0x40758(%rip), %rsi     # 0xaa61b
movq 0x20(%rsp), %rdi
callq 0x8480
leaq 0x388(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x297dc
leaq 0x388(%rsp), %rdi
pushq $0x9
popq %rdx
pushq $0x1
popq %rcx
movq 0x20(%rsp), %rsi
callq 0x2ea24
leaq 0x388(%rsp), %rdi
callq 0x28a08
movq 0x108(%rsp), %r15
leaq 0x3e0(%rsp), %rbx
pushq $0x9
popq %rbp
pushq $0x1
popq %r14
leaq 0xf8(%rsp), %rax
cmpq %rax, %r15
je 0x69f5e
leaq 0x40(%r15), %rsi
movq %rbx, %rdi
callq 0x297dc
movq %rbx, %rdi
movq 0x20(%rsp), %rsi
movl %ebp, %edx
movl %r14d, %ecx
callq 0x2ea24
movq %rbx, %rdi
callq 0x28a08
movq %r15, %rdi
callq 0x8340
movq %rax, %r15
jmp 0x69f1e
leaq 0x370(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x297dc
leaq 0x370(%rsp), %rdi
pushq $0xa
popq %rdx
pushq $0x1
popq %rcx
movq 0xb0(%rsp), %rsi
callq 0x2ea24
leaq 0x370(%rsp), %rdi
callq 0x28a08
leaq 0x120(%rsp), %rdi
callq 0x28a08
leaq 0xf0(%rsp), %rdi
callq 0x32f44
leaq 0x140(%rsp), %rdi
callq 0x28a08
leaq 0x2d0(%rsp), %rdi
callq 0x8978
leaq 0x280(%rsp), %rdi
callq 0x32f44
leaq 0x310(%rsp), %rdi
callq 0x8978
leaq 0x3a0(%rsp), %rdi
callq 0x8978
leaq 0x3c0(%rsp), %rdi
callq 0x8978
xorl %eax, %eax
addq $0x3f8, %rsp            # imm = 0x3F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x340cf(%rip), %rdi     # 0x9e0ed
leaq 0x40580(%rip), %rsi     # 0xaa5a5
leaq 0x4059b(%rip), %rcx     # 0xaa5c7
pushq $0x69
popq %rdx
callq 0x82f0
jmp 0x6a3b8
jmp 0x6a301
jmp 0x6a301
jmp 0x6a3b8
movq %rax, %rbx
leaq 0x370(%rsp), %rdi
jmp 0x6a40c
movq %rax, %rbx
leaq 0x388(%rsp), %rdi
jmp 0x6a40c
jmp 0x6a3b0
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq 0xb0(%rsp), %rdi
jmp 0x6a08e
jmp 0x6a098
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq 0x20(%rsp), %rdi
callq 0x84a0
jmp 0x6a4a0
movq %rax, %rbx
jmp 0x6a4a0
movq %rax, %rbx
leaq 0x280(%rsp), %rdi
jmp 0x6a4a8
jmp 0x6a2f4
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r14, %rdi
jmp 0x6a0d4
jmp 0x6a2f4
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq 0x50(%rsp), %rdi
callq 0x84a0
jmp 0x6a4ad
jmp 0x6a2f4
movq %rax, %rbx
jmp 0x6a1a3
movq %rax, %rbx
jmp 0x6a1ca
movq %rax, %rbx
jmp 0x6a196
jmp 0x6a1ff
jmp 0x6a2d9
jmp 0x6a2e8
jmp 0x6a2cd
jmp 0x6a241
jmp 0x6a204
jmp 0x6a3b8
movq %rax, %rbx
jmp 0x6a1bd
movq %rax, %rbx
jmp 0x6a177
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x8978
jmp 0x6a16d
jmp 0x6a211
movq %rax, %rbx
jmp 0x6a1b0
jmp 0x6a216
jmp 0x6a2e8
movq %rax, %rbx
jmp 0x6a1e4
jmp 0x6a21b
jmp 0x6a246
jmp 0x6a2d4
jmp 0x6a301
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x8978
leaq 0x240(%rsp), %rdi
callq 0x8978
jmp 0x6a189
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x8978
leaq 0x200(%rsp), %rdi
callq 0x8978
leaq 0x1e0(%rsp), %rdi
callq 0x8978
leaq 0x1c0(%rsp), %rdi
callq 0x8978
leaq 0x1a0(%rsp), %rdi
callq 0x8978
leaq 0x180(%rsp), %rdi
callq 0x8978
leaq 0x2b0(%rsp), %rdi
callq 0x8978
leaq 0x160(%rsp), %rdi
jmp 0x6a2b9
movq %rax, %rbx
jmp 0x6a1d7
jmp 0x6a1fa
jmp 0x6a20c
movq %rax, %rbx
jmp 0x6a263
movq %rax, %rbx
jmp 0x6a256
movq %rax, %rbx
jmp 0x6a2a4
movq %rax, %rbx
jmp 0x6a228
movq %rax, %rbx
jmp 0x6a28a
movq %rax, %rbx
jmp 0x6a232
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x8978
leaq 0x70(%rsp), %rdi
callq 0x8978
leaq 0x240(%rsp), %rdi
callq 0x8978
jmp 0x6a249
movq %rax, %rbx
jmp 0x6a297
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x8978
leaq 0x200(%rsp), %rdi
callq 0x8978
leaq 0x1e0(%rsp), %rdi
callq 0x8978
leaq 0x1c0(%rsp), %rdi
callq 0x8978
leaq 0x1a0(%rsp), %rdi
callq 0x8978
leaq 0x180(%rsp), %rdi
callq 0x8978
leaq 0x2b0(%rsp), %rdi
callq 0x8978
leaq 0x160(%rsp), %rdi
callq 0x8978
leaq 0x330(%rsp), %rdi
callq 0x8978
leaq 0x58(%rsp), %rdi
callq 0x28a08
jmp 0x6a3bb
movq %rax, %rbx
jmp 0x6a270
jmp 0x6a2e8
movq %rax, %rbx
jmp 0x6a2b1
movq %rax, %rbx
jmp 0x6a27d
jmp 0x6a3ab
jmp 0x6a3b8
movq %rax, %rbx
jmp 0x6a2be
jmp 0x6a301
jmp 0x6a3b8
movq %rax, %rbx
jmp 0x6a4ad
jmp 0x6a3b8
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x8978
jmp 0x6a3bb
jmp 0x6a34a
jmp 0x6a3b8
jmp 0x6a357
jmp 0x6a367
movq %rax, %rbx
jmp 0x6a3d5
movq %rax, %rbx
jmp 0x6a3c8
jmp 0x6a357
jmp 0x6a3ab
movq %rax, %rbx
leaq 0x3e0(%rsp), %rdi
jmp 0x6a40c
movq %rax, %rbx
jmp 0x6a3ef
movq %rax, %rbx
jmp 0x6a377
movq %rax, %rbx
jmp 0x6a404
movq %rax, %rbx
jmp 0x6a3e2
movq %rax, %rbx
jmp 0x6a3fc
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0x8978
leaq 0x350(%rsp), %rdi
jmp 0x6a3dd
jmp 0x6a3ab
jmp 0x6a3b0
movq %rax, %rbx
jmp 0x6a479
jmp 0x6a38f
movq %rax, %rbx
jmp 0x6a46c
jmp 0x6a3a3
jmp 0x6a3a3
movq %rax, %rbx
jmp 0x6a457
movq %rax, %rbx
jmp 0x6a45f
movq %rax, %rbx
jmp 0x6a411
movq %rax, %rbx
jmp 0x6a486
movq %rax, %rbx
leaq 0x2f0(%rsp), %rdi
callq 0x8978
leaq 0x350(%rsp), %rdi
callq 0x8978
leaq 0xd0(%rsp), %rdi
callq 0x8978
leaq 0x90(%rsp), %rdi
callq 0x8978
leaq 0x260(%rsp), %rdi
callq 0x8978
movq %rsp, %rdi
callq 0x8978
leaq 0xb8(%rsp), %rdi
callq 0x28a08
leaq 0x120(%rsp), %rdi
callq 0x28a08
leaq 0xf0(%rsp), %rdi
callq 0x32f44
leaq 0x140(%rsp), %rdi
callq 0x28a08
leaq 0x2d0(%rsp), %rdi
callq 0x8978
jmp 0x6a486
movq %rax, %rbx
leaq 0x260(%rsp), %rdi
callq 0x8978
movq %rsp, %rdi
callq 0x8978
leaq 0x2d0(%rsp), %rdi
callq 0x8978
leaq 0xf0(%rsp), %rdi
callq 0x8978
leaq 0x90(%rsp), %rdi
callq 0x28a08
leaq 0x280(%rsp), %rdi
callq 0x32f44
leaq 0x310(%rsp), %rdi
callq 0x8978
leaq 0x3a0(%rsp), %rdi
callq 0x8978
leaq 0x3c0(%rsp), %rdi
callq 0x8978
movq %rbx, %rdi
callq 0x8870