// File: millanek[P]evo/process_vcf_get_sequences.cpp
// Function: print_split(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::vector<unsigned long, std::allocator<unsigned long>> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, unsigned long, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, unsigned int, std::vector<unsigned long, std::allocator<unsigned long>> const&, int)
void print_split(const std::string& currentScaffoldNum, const std::vector<string::size_type>& splits, const std::vector<std::string>& sampleNames, const size_t numSamples, std::vector<std::string>& scaffoldStrings, const unsigned int totalProcessedVariants,const std::vector<string::size_type>& scaledSplits, const int fullScLength) {
    //for (std::vector<int>::size_type j = 0; j != splits.size(); j++) {
    
    std::cerr << "There are: " << splits.size() << " splits of size " << opt::splitNum << std::endl;
    
    std::ofstream* scaffoldFile;
    if (splits.size() == 0) {
        // Only print the whole scaffold if it contains a rasonble number of variants
        if (totalProcessedVariants % opt::splitNum > (opt::splitNum * 0.8)) {
            scaffoldFile = new std::ofstream(currentScaffoldNum.c_str());
            if (opt::bLDhat)
                *scaffoldFile << numSamples << "\t" << scaffoldStrings[0].length() << "\t" << "2" << std::endl;
            for (std::vector<std::string>::size_type i = 0; i != numSamples; i++) {
                *scaffoldFile << ">" << sampleNames[i] << std::endl;
                print80bpPerLineFile(scaffoldFile, scaffoldStrings[i]);
                scaffoldStrings[i] = "";
            }
            scaffoldFile->close();
        } else {
            for (std::vector<std::string>::size_type i = 0; i != numSamples; i++) {
                scaffoldStrings[i] = "";
            }
          
        }
    } else {
        string firstSplitFileName = currentScaffoldNum + "_1_" + numToString(splits[0]);
        scaffoldFile = new std::ofstream(firstSplitFileName.c_str());
        if (opt::bLDhat)
            *scaffoldFile << numSamples << "\t" << splits[0] << "\t" << "2" << std::endl;
        for (std::vector<std::string>::size_type i = 0; i != numSamples; i++) {
            *scaffoldFile << ">" << sampleNames[i] << std::endl;
            print80bpPerLineFile(scaffoldFile, scaffoldStrings[i].substr(0,scaledSplits[0]));
        }
        scaffoldFile->close();
        
        for (std::vector<int>::size_type j = 1; j != splits.size(); j++) {
            string splitFileName = currentScaffoldNum + "_" + numToString(splits[j-1]+1) + "_" + numToString(splits[j]);
            scaffoldFile = new std::ofstream(splitFileName.c_str());
            if (opt::bLDhat)
                *scaffoldFile << numSamples << "\t" << (splits[j] - splits[j-1]) << "\t" << "2" << std::endl;
            for (std::vector<std::string>::size_type i = 0; i != numSamples; i++) {
                *scaffoldFile << ">" << sampleNames[i] << std::endl;
                print80bpPerLineFile(scaffoldFile, scaffoldStrings[i].substr(scaledSplits[j-1], scaledSplits[j] - scaledSplits[j-1]));
            }
            scaffoldFile->close();
        }
        
        // Print the last part of the scaffold only if there are a reasonble number of variants
        if (totalProcessedVariants % opt::splitNum > (opt::splitNum * 0.8)) {
            string lastSplitFileName = currentScaffoldNum + "_" + numToString(splits[splits.size()-1]+1) + "_" + numToString(fullScLength);
            
            scaffoldFile = new std::ofstream(lastSplitFileName.c_str());
            if (opt::bLDhat)
                *scaffoldFile << numSamples << "\t" << (scaffoldStrings[0].length() - splits[splits.size()-1]) << "\t" << "2" << std::endl;
            for (std::vector<std::string>::size_type i = 0; i != numSamples; i++) {
                *scaffoldFile << ">" << sampleNames[i] << std::endl;
                print80bpPerLineFile(scaffoldFile, scaffoldStrings[i].substr(scaledSplits[scaledSplits.size()-1],std::string::npos));
                scaffoldStrings[i] = "";
            }
            scaffoldFile->close();
        } else {
            for (std::vector<std::string>::size_type i = 0; i != numSamples; i++) {
                scaffoldStrings[i] = "";
            }
        }
    }
    
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x430, %rsp            # imm = 0x430
movl 0x18(%rbp), %eax
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movl %r9d, -0x2c(%rbp)
movq 0xecb4f(%rip), %rdi     # 0x198ff0
leaq 0x938c9(%rip), %rsi     # 0x13fd71
callq 0xa5c0
movq %rax, -0x2e8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x83b90
movq -0x2e8(%rbp), %rdi
movq %rax, %rsi
callq 0xa140
movq %rax, %rdi
leaq 0x938a7(%rip), %rsi     # 0x13fd7d
callq 0xa5c0
movq %rax, %rdi
movl 0xee47c(%rip), %esi     # 0x19a960
callq 0xab20
movq %rax, %rdi
movq 0xeca95(%rip), %rsi     # 0x198f88
callq 0xa610
movq -0x10(%rbp), %rdi
callq 0x83b90
cmpq $0x0, %rax
jne 0xac74c
movl -0x2c(%rbp), %eax
movl 0xee44c(%rip), %ecx     # 0x19a960
xorl %edx, %edx
divl %ecx
movl %edx, %eax
cvtsi2sd %rax, %xmm0
cvtsi2sdl 0xee439(%rip), %xmm1 # 0x19a960
movsd 0x934a1(%rip), %xmm2    # 0x13f9d0
mulsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xac709
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x2f0(%rbp)
movq %rax, -0x2f8(%rbp)
movq -0x8(%rbp), %rdi
callq 0xa220
movq -0x2f0(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0xa650
jmp 0xac574
movq -0x2f8(%rbp), %rax
movq %rax, -0x38(%rbp)
testb $0x1, 0xee3e0(%rip)     # 0x19a966
je 0xac624
movq -0x38(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xa140
movq %rax, %rdi
leaq 0x8993b(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x300(%rbp)
movq -0x28(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3d940
movq %rax, %rdi
callq 0xa930
movq -0x300(%rbp), %rdi
movq %rax, %rsi
callq 0xa140
movq %rax, %rdi
leaq 0x89901(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, %rdi
leaq 0x8ffdd(%rip), %rsi     # 0x13c5c9
callq 0xa5c0
movq %rax, %rdi
movq 0xec98d(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xac624
movq -0x2f8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xad397
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq -0x20(%rbp), %rax
je 0xac6fe
movq -0x38(%rbp), %rdi
leaq 0x8e5e1(%rip), %rsi     # 0x13ac26
callq 0xa5c0
movq %rax, -0x310(%rbp)
movq -0x18(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x52960
movq -0x310(%rbp), %rdi
movq %rax, %rsi
callq 0xa520
movq %rax, %rdi
movq 0xec911(%rip), %rsi     # 0x198f88
callq 0xa610
movq -0x28(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x3d940
movq %rax, %rsi
leaq -0x70(%rbp), %rdi
movq %rdi, -0x308(%rbp)
callq 0xa250
movq -0x308(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0x81170
jmp 0xac6ae
leaq -0x70(%rbp), %rdi
callq 0xac88
movq -0x28(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x3d940
movq %rax, %rdi
leaq 0x89811(%rip), %rsi     # 0x135edf
callq 0xa810
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0xac62c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x70(%rbp), %rdi
callq 0xac88
jmp 0xad397
movq -0x38(%rbp), %rdi
callq 0xa840
jmp 0xac747
movq $0x0, -0x78(%rbp)
movq -0x78(%rbp), %rax
cmpq -0x20(%rbp), %rax
je 0xac745
movq -0x28(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x3d940
movq %rax, %rdi
leaq 0x897ad(%rip), %rsi     # 0x135edf
callq 0xa810
movq -0x78(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0xac711
jmp 0xac747
jmp 0xad38e
movq -0x8(%rbp), %rsi
leaq 0x93637(%rip), %rdx     # 0x13fd8e
leaq -0xb8(%rbp), %rdi
callq 0x3da80
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9d770
movq (%rax), %rsi
leaq -0xd8(%rbp), %rdi
callq 0xae5d0
jmp 0xac781
leaq -0x98(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
callq 0x3e070
jmp 0xac79d
leaq -0xd8(%rbp), %rdi
callq 0xac88
leaq -0xb8(%rbp), %rdi
callq 0xac88
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x318(%rbp)
jmp 0xac7c8
leaq -0x98(%rbp), %rdi
callq 0xa220
movq -0x318(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0xa650
jmp 0xac7ea
movq -0x318(%rbp), %rax
movq %rax, -0x38(%rbp)
testb $0x1, 0xee16a(%rip)     # 0x19a966
je 0xac912
movq -0x38(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xa140
movq %rax, -0x320(%rbp)
jmp 0xac818
movq -0x320(%rbp), %rdi
leaq 0x896b8(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x328(%rbp)
jmp 0xac834
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x9d770
movq -0x328(%rbp), %rdi
movq (%rax), %rsi
callq 0xa140
movq %rax, -0x330(%rbp)
jmp 0xac859
movq -0x330(%rbp), %rdi
leaq 0x89677(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x338(%rbp)
jmp 0xac875
movq -0x338(%rbp), %rdi
leaq 0x8fd46(%rip), %rsi     # 0x13c5c9
callq 0xa5c0
movq %rax, -0x340(%rbp)
jmp 0xac891
movq -0x340(%rbp), %rdi
movq 0xec6e9(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xac8a6
jmp 0xac912
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xac8ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0xac88
leaq -0xb8(%rbp), %rdi
callq 0xac88
jmp 0xad397
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xad380
movq -0x318(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xad380
movq $0x0, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
cmpq -0x20(%rbp), %rax
je 0xaca20
movq -0x38(%rbp), %rdi
leaq 0x8e2ed(%rip), %rsi     # 0x13ac26
callq 0xa5c0
movq %rax, -0x348(%rbp)
jmp 0xac947
movq -0x18(%rbp), %rdi
movq -0xe0(%rbp), %rsi
callq 0x52960
movq -0x348(%rbp), %rdi
movq %rax, %rsi
callq 0xa520
movq %rax, -0x350(%rbp)
jmp 0xac96f
movq -0x350(%rbp), %rdi
movq 0xec60b(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xac984
movq -0x28(%rbp), %rdi
movq -0xe0(%rbp), %rsi
callq 0x3d940
movq %rax, -0x360(%rbp)
movq 0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x358(%rbp)
callq 0x9d770
movq -0x360(%rbp), %rsi
movq -0x358(%rbp), %rdx
movq (%rax), %rcx
leaq -0x100(%rbp), %rdi
callq 0xa5f0
jmp 0xac9ce
leaq -0x38(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x81170
jmp 0xac9e0
leaq -0x100(%rbp), %rdi
callq 0xac88
movq -0xe0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xe0(%rbp)
jmp 0xac91d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x100(%rbp), %rdi
callq 0xac88
jmp 0xad380
movq -0x38(%rbp), %rdi
callq 0xa840
jmp 0xaca2b
movq $0x1, -0x108(%rbp)
movq -0x108(%rbp), %rax
movq %rax, -0x368(%rbp)
movq -0x10(%rbp), %rdi
callq 0x83b90
movq %rax, %rcx
movq -0x368(%rbp), %rax
cmpq %rcx, %rax
je 0xaceb3
movq -0x8(%rbp), %rsi
leaq 0x93325(%rip), %rdx     # 0x13fd90
leaq -0x188(%rbp), %rdi
callq 0x3da80
jmp 0xaca79
movq -0x10(%rbp), %rdi
movq -0x108(%rbp), %rsi
decq %rsi
callq 0x9d770
movq (%rax), %rsi
incq %rsi
leaq -0x1a8(%rbp), %rdi
callq 0xae5d0
jmp 0xacaa0
leaq -0x168(%rbp), %rdi
leaq -0x188(%rbp), %rsi
leaq -0x1a8(%rbp), %rdx
callq 0x3e070
jmp 0xacabc
leaq 0x932cd(%rip), %rdx     # 0x13fd90
leaq -0x148(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x3e020
jmp 0xacad8
movq -0x10(%rbp), %rdi
movq -0x108(%rbp), %rsi
callq 0x9d770
movq (%rax), %rsi
leaq -0x1c8(%rbp), %rdi
callq 0xae5d0
jmp 0xacaf9
leaq -0x128(%rbp), %rdi
leaq -0x148(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
callq 0x3e070
jmp 0xacb15
leaq -0x1c8(%rbp), %rdi
callq 0xac88
leaq -0x148(%rbp), %rdi
callq 0xac88
leaq -0x168(%rbp), %rdi
callq 0xac88
leaq -0x1a8(%rbp), %rdi
callq 0xac88
leaq -0x188(%rbp), %rdi
callq 0xac88
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x370(%rbp)
jmp 0xacb64
leaq -0x128(%rbp), %rdi
callq 0xa220
movq -0x370(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0xa650
jmp 0xacb86
movq -0x370(%rbp), %rax
movq %rax, -0x38(%rbp)
testb $0x1, 0xeddce(%rip)     # 0x19a966
je 0xacd29
movq -0x38(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xa140
movq %rax, -0x378(%rbp)
jmp 0xacbb4
movq -0x378(%rbp), %rdi
leaq 0x8931c(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x380(%rbp)
jmp 0xacbd0
movq -0x10(%rbp), %rdi
movq -0x108(%rbp), %rsi
callq 0x9d770
movq (%rax), %rax
movq %rax, -0x390(%rbp)
movq -0x10(%rbp), %rdi
movq -0x108(%rbp), %rsi
decq %rsi
callq 0x9d770
movq -0x390(%rbp), %rsi
movq -0x380(%rbp), %rdi
movq (%rax), %rax
subq %rax, %rsi
callq 0xa140
movq %rax, -0x388(%rbp)
jmp 0xacc1f
movq -0x388(%rbp), %rdi
leaq 0x892b1(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x398(%rbp)
jmp 0xacc3b
movq -0x398(%rbp), %rdi
leaq 0x8f980(%rip), %rsi     # 0x13c5c9
callq 0xa5c0
movq %rax, -0x3a0(%rbp)
jmp 0xacc57
movq -0x3a0(%rbp), %rdi
movq 0xec323(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xacc6c
jmp 0xacd29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xacce5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xaccd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xacccd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xaccc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0xac88
leaq -0x148(%rbp), %rdi
callq 0xac88
leaq -0x168(%rbp), %rdi
callq 0xac88
leaq -0x1a8(%rbp), %rdi
callq 0xac88
leaq -0x188(%rbp), %rdi
callq 0xac88
jmp 0xad380
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xacea2
movq -0x370(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xacea2
movq $0x0, -0x1d0(%rbp)
movq -0x1d0(%rbp), %rax
cmpq -0x20(%rbp), %rax
je 0xace74
movq -0x38(%rbp), %rdi
leaq 0x8ded6(%rip), %rsi     # 0x13ac26
callq 0xa5c0
movq %rax, -0x3a8(%rbp)
jmp 0xacd5e
movq -0x18(%rbp), %rdi
movq -0x1d0(%rbp), %rsi
callq 0x52960
movq -0x3a8(%rbp), %rdi
movq %rax, %rsi
callq 0xa520
movq %rax, -0x3b0(%rbp)
jmp 0xacd86
movq -0x3b0(%rbp), %rdi
movq 0xec1f4(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xacd9b
movq -0x28(%rbp), %rdi
movq -0x1d0(%rbp), %rsi
callq 0x3d940
movq %rax, -0x3c0(%rbp)
movq 0x10(%rbp), %rdi
movq -0x108(%rbp), %rsi
decq %rsi
callq 0x9d770
movq (%rax), %rax
movq %rax, -0x3b8(%rbp)
movq 0x10(%rbp), %rdi
movq -0x108(%rbp), %rsi
callq 0x9d770
movq (%rax), %rax
movq %rax, -0x3c8(%rbp)
movq 0x10(%rbp), %rdi
movq -0x108(%rbp), %rsi
decq %rsi
callq 0x9d770
movq -0x3c8(%rbp), %rcx
movq -0x3c0(%rbp), %rsi
movq -0x3b8(%rbp), %rdx
movq (%rax), %rax
subq %rax, %rcx
leaq -0x1f0(%rbp), %rdi
callq 0xa5f0
jmp 0xace25
leaq -0x38(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x81170
jmp 0xace37
leaq -0x1f0(%rbp), %rdi
callq 0xac88
movq -0x1d0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1d0(%rbp)
jmp 0xacd34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0xac88
jmp 0xacea2
movq -0x38(%rbp), %rdi
callq 0xa840
jmp 0xace7f
leaq -0x128(%rbp), %rdi
callq 0xac88
movq -0x108(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x108(%rbp)
jmp 0xaca36
leaq -0x128(%rbp), %rdi
callq 0xac88
jmp 0xad380
movl -0x2c(%rbp), %eax
movl 0xedaa4(%rip), %ecx     # 0x19a960
xorl %edx, %edx
divl %ecx
movl %edx, %eax
cvtsi2sd %rax, %xmm0
cvtsi2sdl 0xeda91(%rip), %xmm1 # 0x19a960
movsd 0x92af9(%rip), %xmm2    # 0x13f9d0
mulsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xad321
movq -0x8(%rbp), %rsi
leaq 0x92ea0(%rip), %rdx     # 0x13fd90
leaq -0x270(%rbp), %rdi
callq 0x3da80
jmp 0xacefe
movq -0x10(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0x83b90
movq -0x3d0(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x9d770
movq (%rax), %rsi
incq %rsi
leaq -0x290(%rbp), %rdi
callq 0xae5d0
jmp 0xacf34
leaq -0x250(%rbp), %rdi
leaq -0x270(%rbp), %rsi
leaq -0x290(%rbp), %rdx
callq 0x3e070
jmp 0xacf50
leaq 0x92e39(%rip), %rdx     # 0x13fd90
leaq -0x230(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x3e020
jmp 0xacf6c
movl 0x18(%rbp), %esi
leaq -0x2b0(%rbp), %rdi
callq 0x3e190
jmp 0xacf7d
leaq -0x210(%rbp), %rdi
leaq -0x230(%rbp), %rsi
leaq -0x2b0(%rbp), %rdx
callq 0x3e070
jmp 0xacf99
leaq -0x2b0(%rbp), %rdi
callq 0xac88
leaq -0x230(%rbp), %rdi
callq 0xac88
leaq -0x250(%rbp), %rdi
callq 0xac88
leaq -0x290(%rbp), %rdi
callq 0xac88
leaq -0x270(%rbp), %rdi
callq 0xac88
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x3d8(%rbp)
jmp 0xacfe8
leaq -0x210(%rbp), %rdi
callq 0xa220
movq -0x3d8(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0xa650
jmp 0xad00a
movq -0x3d8(%rbp), %rax
movq %rax, -0x38(%rbp)
testb $0x1, 0xed94a(%rip)     # 0x19a966
je 0xad1be
movq -0x38(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xa140
movq %rax, -0x3e0(%rbp)
jmp 0xad038
movq -0x3e0(%rbp), %rdi
leaq 0x88e98(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x3e8(%rbp)
jmp 0xad054
movq -0x28(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3d940
movq %rax, %rdi
callq 0xa930
movq %rax, -0x3f8(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x400(%rbp)
callq 0x83b90
movq -0x400(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x9d770
movq -0x3f8(%rbp), %rsi
movq -0x3e8(%rbp), %rdi
movq (%rax), %rax
subq %rax, %rsi
callq 0xa140
movq %rax, -0x3f0(%rbp)
jmp 0xad0b4
movq -0x3f0(%rbp), %rdi
leaq 0x88e1c(%rip), %rsi     # 0x135ede
callq 0xa5c0
movq %rax, -0x408(%rbp)
jmp 0xad0d0
movq -0x408(%rbp), %rdi
leaq 0x8f4eb(%rip), %rsi     # 0x13c5c9
callq 0xa5c0
movq %rax, -0x410(%rbp)
jmp 0xad0ec
movq -0x410(%rbp), %rdi
movq 0xebe8e(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xad101
jmp 0xad1be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xad17a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xad16e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xad162
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xad156
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0xac88
leaq -0x230(%rbp), %rdi
callq 0xac88
leaq -0x250(%rbp), %rdi
callq 0xac88
leaq -0x290(%rbp), %rdi
callq 0xac88
leaq -0x270(%rbp), %rdi
callq 0xac88
jmp 0xad380
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xad313
movq -0x3d8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xad313
movq $0x0, -0x2b8(%rbp)
movq -0x2b8(%rbp), %rax
cmpq -0x20(%rbp), %rax
je 0xad2fa
movq -0x38(%rbp), %rdi
leaq 0x8da41(%rip), %rsi     # 0x13ac26
callq 0xa5c0
movq %rax, -0x418(%rbp)
jmp 0xad1f3
movq -0x18(%rbp), %rdi
movq -0x2b8(%rbp), %rsi
callq 0x52960
movq -0x418(%rbp), %rdi
movq %rax, %rsi
callq 0xa520
movq %rax, -0x420(%rbp)
jmp 0xad21b
movq -0x420(%rbp), %rdi
movq 0xebd5f(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xad230
movq -0x28(%rbp), %rdi
movq -0x2b8(%rbp), %rsi
callq 0x3d940
movq %rax, -0x428(%rbp)
movq 0x10(%rbp), %rdi
movq %rdi, -0x430(%rbp)
callq 0x83b90
movq -0x430(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x9d770
movq -0x428(%rbp), %rsi
movq (%rax), %rdx
leaq -0x2d8(%rbp), %rdi
movq $-0x1, %rcx
callq 0xa5f0
jmp 0xad288
leaq -0x38(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x81170
jmp 0xad29a
leaq -0x2d8(%rbp), %rdi
callq 0xac88
movq -0x28(%rbp), %rdi
movq -0x2b8(%rbp), %rsi
callq 0x3d940
movq %rax, %rdi
leaq 0x88c1f(%rip), %rsi     # 0x135edf
callq 0xa810
jmp 0xad2c7
jmp 0xad2c9
movq -0x2b8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2b8(%rbp)
jmp 0xad1c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0xac88
jmp 0xad313
movq -0x38(%rbp), %rdi
callq 0xa840
jmp 0xad305
leaq -0x210(%rbp), %rdi
callq 0xac88
jmp 0xad372
leaq -0x210(%rbp), %rdi
callq 0xac88
jmp 0xad380
movq $0x0, -0x2e0(%rbp)
movq -0x2e0(%rbp), %rax
cmpq -0x20(%rbp), %rax
je 0xad370
movq -0x28(%rbp), %rdi
movq -0x2e0(%rbp), %rsi
callq 0x3d940
movq %rax, %rdi
leaq 0x88b8c(%rip), %rsi     # 0x135edf
callq 0xa810
jmp 0xad35a
jmp 0xad35c
movq -0x2e0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2e0(%rbp)
jmp 0xad32c
jmp 0xad372
leaq -0x98(%rbp), %rdi
callq 0xac88
jmp 0xad38e
leaq -0x98(%rbp), %rdi
callq 0xac88
jmp 0xad397
addq $0x430, %rsp            # imm = 0x430
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0xab50