// File: millanek[P]evo/process_vcf_filter.cpp
// Function: filterMain(int, char**)
int filterMain(int argc, char** argv) {
    parseFilterOptions(argc, argv);
    //std::ios_base::openmode mode = std::ios_base::in;
    string fileName = opt::vcfFile;
    string fileRoot = stripExtension(fileName);
    std::vector<int> depthsHetFailed;
    std::vector<int> depthsHetPassed;
    std::vector<int> numVariantsPerHetCount;
    std::vector<std::vector<int> > num_indiv_het_vs_depth;
    
    std::ofstream* statsFFile;
    std::ofstream* statsVarDepthFile;
    std::ofstream* statsStrandBiasFile;
    std::ofstream* statsVariantQualityFile;
    std::ofstream* statsSegregationMetricFile;
    
    // Collect some numbers about why variants were filtered out:
    int numTotalFilteredOut = 0;
    int numMultiallelic = 0; int numInvariant = 0;
    // SB - strand bias; OD - overall depth; OQ - overall quality; F - inbreeding coefficient;
    int numSB = 0; int numOD = 0; int numOQ = 0; int numF = 0; int numOQ_OD = 0; int numOQ_SB = 0; int numOQ_F = 0; int numSB_F = 0; int numSB_OD = 0; int numF_OD = 0;
    int numOQ_OD_F = 0; int numOQ_OD_SB = 0; int numOQ_SB_F = 0; int numSB_F_OD = 0; int numOQ_OD_F_SB = 0;
    
    
    
    if (opt::bStats) {
        statsFFile = new std::ofstream(fileRoot + ".inbreeding");
        statsVarDepthFile = new std::ofstream(fileRoot + ".varDepth");
        statsStrandBiasFile = new std::ofstream(fileRoot + ".strandBias");
        statsVariantQualityFile = new std::ofstream(fileRoot + ".varQual");
        statsSegregationMetricFile = new std::ofstream(fileRoot + ".SGB");
        std::cerr << "Getting statistics for variants from: " << fileName << " to help with setting filtering criteria" << std::endl;
    } else {
        std::cerr << "Filtering variants from: " << fileName << std::endl;
        std::cerr << "Minimum variant quality score (overall) set to: " << opt::min_overall_quality << std::endl;
        std::cerr << "Maximum read depth (overall) set to: " << opt::max_overall_depth << std::endl;
        std::cerr << "Minimum read depth (overall) set to: " << opt::min_overall_depth << std::endl;
        std::cerr << "Minimum copies for a variant (e.g. 1 for allowing singletons): " << opt::min_copies << std::endl;
        std::cerr << "Minimum read depth at the variant position: " << opt::min_depth_in_any_individual << std::endl;
        if (opt::bAllowMissingGenotpyes)
            std::cerr << "Genotypes for individuals with lower read depth at the variant position will be set to missing (./.)" << std::endl;
        if (opt::max_het_indiv < std::numeric_limits<int>::max())
            std::cerr << "Filter out sites where more than " << opt::max_het_indiv << " individuals are heterozygous"  << std::endl;
    }
    // Open connection to read from the vcf file
    // std::ifstream* inFile = new std::ifstream(fileName.c_str(), mode);
    std::istream* inFile = createReader(fileName.c_str());
    
    
    bool gotChromosomeNumber = false;
    int numChromosomes;
    string line;
    int totalVariantNumber = 0;
    while (getline(*inFile, line)) {
        if (line[0] == '#') {
            if (!opt::bStats) std::cout << line << std::endl;
        } else {
            double r = ((double) rand() / (RAND_MAX));
            if (r > opt::subsample) {
                continue;
            }
            totalVariantNumber++;
            if (totalVariantNumber % 100000 == 0) std::cerr << "Filtered " << totalVariantNumber << " variants" << std::endl;
            FilterResult result;
            std::vector<std::string> fields = split(line, '\t');
            if (!gotChromosomeNumber) {
                const std::vector<std::string>::size_type numSamples = fields.size() - NUM_NON_GENOTYPE_COLUMNS;
                numChromosomes = (int)numSamples * 2;
                std::cerr << "Number of chromosomes: " << numChromosomes << std::endl;
                numVariantsPerHetCount.assign(numSamples + 1, 0);
                gotChromosomeNumber = true;
            }
            result.overallQuality = stringToDouble(fields[5]);
            
            result.counts = getThisVariantCounts(fields);
            
            if (opt::bStats) {
                
                *statsFFile << result.counts.inbreedingCoefficient << std::endl;
                *statsVarDepthFile << result.counts.overallDepth << std::endl;
                if (!result.counts.FSpval.empty()) {
                    *statsStrandBiasFile << result.counts.FSpval << std::endl;
                } else if (!result.counts.MQSBpval.empty()) {
                    *statsStrandBiasFile << result.counts.MQSBpval << std::endl;
                }
                if (result.counts.SGB < std::numeric_limits<double>::max()) {
                    *statsSegregationMetricFile << result.counts.SGB << std::endl;
                }
                *statsVariantQualityFile << result.overallQuality << std::endl;
                if (totalVariantNumber >= 1000000)
                    exit(EXIT_SUCCESS);
                else
                    continue;
            }
            
            
            // Start filtering
            // 1) Throw away stuff that is not bi-allelic
            if (opt::bBiallelicFilter) {
                result.biallelicPassed = testBiallelic(fields[4]);
                if (!result.biallelicPassed) { result.biallelicPassed = false; numTotalFilteredOut++; numMultiallelic++; continue; }
            } else
                result.biallelicPassed = true;
            
            // 2) Filtering on overall quality
            if (result.overallQuality < opt::min_overall_quality)
                result.overallQualityPassed = false;
            
            // 3) Filtering on overall depth
            if (result.counts.overallDepth >= opt::min_overall_depth && result.counts.overallDepth <= opt::max_overall_depth) {
                result.overallDepthPassed = true;
            } else
                result.overallDepthPassed = false;
            
            // 4) Filtering on strand bias
            if (!result.counts.FSpval.empty()) {
                if (stringToDouble(result.counts.FSpval) > opt::max_FS)
                    result.strandBiasPassed = false;
            }
            
            if (!result.counts.MQSBpval.empty()) {
                if (stringToDouble(result.counts.MQSBpval) < opt::min_MQSB)
                    result.strandBiasPassed = false;
            }
            
            // 5) Filter on inbreeding coefficinet
            if (result.counts.inbreedingCoefficient < opt::min_F) {
                result.inbreedingCoeffPassed = false;
            }
            
            // 6) Filtering on the number of copies/allele frequency
            if (result.counts.overall <= (numChromosomes - opt::min_copies) && result.counts.overall >= opt::min_copies) {
                
            } else {
                numInvariant++; continue;
            }
            
            if (result.inbreedingCoeffPassed && result.overallDepthPassed && result.overallQualityPassed && result.strandBiasPassed) {
                std::cout << line << std::endl;
            } else {
                numTotalFilteredOut++;
                if (!result.inbreedingCoeffPassed && result.overallDepthPassed && result.overallQualityPassed && result.strandBiasPassed) {
                    numF++;
                } else if (result.inbreedingCoeffPassed && !result.overallDepthPassed && result.overallQualityPassed && result.strandBiasPassed) {
                    numOD++;
                } else if (result.inbreedingCoeffPassed && result.overallDepthPassed && !result.overallQualityPassed && result.strandBiasPassed) {
                    numOQ++;
                } else if (result.inbreedingCoeffPassed && result.overallDepthPassed && result.overallQualityPassed && !result.strandBiasPassed) {
                    numSB++;
                } else if (!result.inbreedingCoeffPassed && result.overallDepthPassed && !result.overallQualityPassed && result.strandBiasPassed) {
                    numOQ_F++;
                } else if (result.inbreedingCoeffPassed && !result.overallDepthPassed && !result.overallQualityPassed && result.strandBiasPassed) {
                    numOQ_OD++;
                } else if (result.inbreedingCoeffPassed && result.overallDepthPassed && !result.overallQualityPassed && !result.strandBiasPassed) {
                    numOQ_SB++;
                } else if (!result.inbreedingCoeffPassed && result.overallDepthPassed && result.overallQualityPassed && !result.strandBiasPassed) {
                    numSB_F++;
                } else if (result.inbreedingCoeffPassed && !result.overallDepthPassed && result.overallQualityPassed && !result.strandBiasPassed) {
                    numSB_OD++;
                } else if (!result.inbreedingCoeffPassed && !result.overallDepthPassed && result.overallQualityPassed && result.strandBiasPassed) {
                    numF_OD++;
                } else if (!result.inbreedingCoeffPassed && !result.overallDepthPassed && !result.overallQualityPassed && result.strandBiasPassed) {
                    numOQ_OD_F++;
                } else if (result.inbreedingCoeffPassed && !result.overallDepthPassed && !result.overallQualityPassed && !result.strandBiasPassed) {
                    numOQ_OD_SB++;
                } else if (!result.inbreedingCoeffPassed && result.overallDepthPassed && !result.overallQualityPassed && !result.strandBiasPassed) {
                    numOQ_SB_F++;
                } else if (!result.inbreedingCoeffPassed && !result.overallDepthPassed && result.overallQualityPassed && !result.strandBiasPassed) {
                    numSB_F_OD++;
                } else if (!result.inbreedingCoeffPassed && !result.overallDepthPassed && !result.overallQualityPassed && !result.strandBiasPassed) {
                    numOQ_OD_F_SB++;
                }
            }
            
            // 7) Filtering on per-individual criteria
            
            /*if (result.counts.minimumDepthInAnIndividual >= opt::min_depth_in_any_individual) {
                
            } else if (opt::bAllowMissingGenotpyes) {
                // Set genotypes to missing for individuals with too low coverage
                for (int i = NUM_NON_GENOTYPE_COLUMNS; i != fields.size(); i++) {
                    if (result.counts.depthPerIndividual[i-NUM_NON_GENOTYPE_COLUMNS] < opt::min_depth_in_any_individual) {
                        fields[i][0] = '.'; fields[i][2] = '.';
                    }
                }
                print_vector_stream(fields, std::cout,'\t');
            }
            */
            
        }
    }
    std::cerr << "Total variants filtered out: " << numTotalFilteredOut << std::endl;
    std::cerr << "Reasons for filtering:" << std::endl;
    std::cerr << "Not biallelic: " << numMultiallelic << std::endl;
    std::cerr << "Invariant (not polymorphic in called samples): " << numInvariant << std::endl;
    std::cerr << "Other reasons:" << std::endl;
    std::cerr << "SB - strand bias; OD - overall depth; OQ - overall quality; F - inbreeding coefficient" << std::endl;
    std::cerr << "OQ+OD+F+SB:\t" << numOQ_OD_F_SB << " (" << ((double)numOQ_OD_F_SB/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "OQ+OD+F: \t" << numOQ_OD_F << " (" << ((double)numOQ_OD_F/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "OQ+OD+SB: \t" << numOQ_OD_SB << " (" << ((double)numOQ_OD_SB/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "OQ+SB+F: \t" << numOQ_SB_F << " (" << ((double)numOQ_SB_F/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "SB+F+OD: \t" << numSB_F_OD << " (" << ((double)numSB_F_OD/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "OQ+OD: \t" << numOQ_OD << " (" << ((double)numOQ_OD/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "OQ+F: \t" << numOQ_F << " (" << ((double)numOQ_F/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "OQ+SB: \t" << numOQ_SB << " (" << ((double)numOQ_SB/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "SB+F: \t" << numSB_F << " (" << ((double)numSB_F/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "SB+OD: \t" << numSB_OD << " (" << ((double)numSB_OD/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "F+OD: \t" << numF_OD << " (" << ((double)numF_OD/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "OQ: \t" << numOQ << " (" << ((double)numOQ/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "SB: \t" << numSB << " (" << ((double)numSB/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "OD: \t" << numOD << " (" << ((double)numOD/numTotalFilteredOut)*100 << "%)" << std::endl;
    std::cerr << "F: \t" << numF << " (" << ((double)numF/numTotalFilteredOut)*100 << "%)" << std::endl;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x940, %rsp            # imm = 0x940
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0xa0d20
leaq 0xfbb43(%rip), %rsi     # 0x19a778
leaq -0x30(%rbp), %rdi
movq %rdi, -0x500(%rbp)
callq 0xa250
movq -0x500(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x7be70
jmp 0x9ec57
leaq -0x78(%rbp), %rdi
callq 0x46270
leaq -0x90(%rbp), %rdi
callq 0x46270
leaq -0xa8(%rbp), %rdi
callq 0x46270
leaq -0xc0(%rbp), %rdi
callq 0x6ccb0
movl $0x0, -0xec(%rbp)
movl $0x0, -0xf0(%rbp)
movl $0x0, -0xf4(%rbp)
movl $0x0, -0xf8(%rbp)
movl $0x0, -0xfc(%rbp)
movl $0x0, -0x100(%rbp)
movl $0x0, -0x104(%rbp)
movl $0x0, -0x108(%rbp)
movl $0x0, -0x10c(%rbp)
movl $0x0, -0x110(%rbp)
movl $0x0, -0x114(%rbp)
movl $0x0, -0x118(%rbp)
movl $0x0, -0x11c(%rbp)
movl $0x0, -0x120(%rbp)
movl $0x0, -0x124(%rbp)
movl $0x0, -0x128(%rbp)
movl $0x0, -0x12c(%rbp)
movl $0x0, -0x130(%rbp)
testb $0x1, 0xfba59(%rip)     # 0x19a798
je 0x9f15b
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x508(%rbp)
jmp 0x9ed58
movb $0x1, -0x151(%rbp)
leaq 0x9ebee(%rip), %rdx     # 0x13d954
leaq -0x150(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3da80
jmp 0x9ed78
movq -0x508(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movl $0x10, %edx
callq 0xac00
jmp 0x9ed92
movq -0x508(%rbp), %rax
movb $0x0, -0x151(%rbp)
movq %rax, -0xc8(%rbp)
leaq -0x150(%rbp), %rdi
callq 0xac88
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x510(%rbp)
jmp 0x9edc6
movb $0x1, -0x179(%rbp)
leaq 0x9eb8c(%rip), %rdx     # 0x13d960
leaq -0x178(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3da80
jmp 0x9ede6
movq -0x510(%rbp), %rdi
leaq -0x178(%rbp), %rsi
movl $0x10, %edx
callq 0xac00
jmp 0x9ee00
movq -0x510(%rbp), %rax
movb $0x0, -0x179(%rbp)
movq %rax, -0xd0(%rbp)
leaq -0x178(%rbp), %rdi
callq 0xac88
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x518(%rbp)
jmp 0x9ee34
movb $0x1, -0x1a1(%rbp)
leaq 0x9eb28(%rip), %rdx     # 0x13d96a
leaq -0x1a0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3da80
jmp 0x9ee54
movq -0x518(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
movl $0x10, %edx
callq 0xac00
jmp 0x9ee6e
movq -0x518(%rbp), %rax
movb $0x0, -0x1a1(%rbp)
movq %rax, -0xd8(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0xac88
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x520(%rbp)
jmp 0x9eea2
movb $0x1, -0x1c9(%rbp)
leaq 0x9eac6(%rip), %rdx     # 0x13d976
leaq -0x1c8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3da80
jmp 0x9eec2
movq -0x520(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
movl $0x10, %edx
callq 0xac00
jmp 0x9eedc
movq -0x520(%rbp), %rax
movb $0x0, -0x1c9(%rbp)
movq %rax, -0xe0(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0xac88
movl $0x200, %edi            # imm = 0x200
callq 0xa5d0
movq %rax, -0x528(%rbp)
jmp 0x9ef10
movb $0x1, -0x1f1(%rbp)
leaq 0x9ea61(%rip), %rdx     # 0x13d97f
leaq -0x1f0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3da80
jmp 0x9ef30
movq -0x528(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
movl $0x10, %edx
callq 0xac00
jmp 0x9ef4a
movq -0x528(%rbp), %rax
movb $0x0, -0x1f1(%rbp)
movq %rax, -0xe8(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0xac88
movq 0xfa07e(%rip), %rdi     # 0x198ff0
leaq 0x9ea0b(%rip), %rsi     # 0x13d984
callq 0xa5c0
movq %rax, -0x530(%rbp)
jmp 0x9ef87
movq -0x530(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa520
movq %rax, -0x538(%rbp)
jmp 0x9efa0
movq -0x538(%rbp), %rdi
leaq 0x9e9fd(%rip), %rsi     # 0x13d9ab
callq 0xa5c0
movq %rax, -0x540(%rbp)
jmp 0x9efbc
movq -0x540(%rbp), %rdi
movq 0xf9fbe(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9efd1
jmp 0x9f3e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xa0d02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xa0ccc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9f01e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0xac88
testb $0x1, -0x151(%rbp)
jne 0x9f029
jmp 0x9f03a
movq -0x508(%rbp), %rdi
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xa0ccc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9f065
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x178(%rbp), %rdi
callq 0xac88
testb $0x1, -0x179(%rbp)
jne 0x9f070
jmp 0x9f081
movq -0x510(%rbp), %rdi
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xa0ccc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9f0ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0xac88
testb $0x1, -0x1a1(%rbp)
jne 0x9f0b7
jmp 0x9f0c8
movq -0x518(%rbp), %rdi
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xa0ccc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9f0f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0xac88
testb $0x1, -0x1c9(%rbp)
jne 0x9f0fe
jmp 0x9f10f
movq -0x520(%rbp), %rdi
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xa0ccc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9f13a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0xac88
testb $0x1, -0x1f1(%rbp)
jne 0x9f145
jmp 0x9f156
movq -0x528(%rbp), %rdi
movl $0x200, %esi            # imm = 0x200
callq 0xa5e0
jmp 0xa0ccc
movq 0xf9e8e(%rip), %rdi     # 0x198ff0
leaq 0x9e86b(%rip), %rsi     # 0x13d9d4
callq 0xa5c0
movq %rax, -0x548(%rbp)
jmp 0x9f177
movq -0x548(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa520
movq %rax, -0x550(%rbp)
jmp 0x9f190
movq -0x550(%rbp), %rdi
movq 0xf9dea(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f1a5
movq 0xf9e44(%rip), %rdi     # 0x198ff0
leaq 0x9e83b(%rip), %rsi     # 0x13d9ee
callq 0xa5c0
movq %rax, -0x558(%rbp)
jmp 0x9f1c1
movq -0x558(%rbp), %rdi
movl 0xfa5f2(%rip), %esi     # 0x1997c0
callq 0xab20
movq %rax, -0x560(%rbp)
jmp 0x9f1dc
movq -0x560(%rbp), %rdi
movq 0xf9d9e(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f1f1
movq 0xf9df8(%rip), %rdi     # 0x198ff0
leaq 0x9e820(%rip), %rsi     # 0x13da1f
callq 0xa5c0
movq %rax, -0x568(%rbp)
jmp 0x9f20d
movq -0x568(%rbp), %rdi
movl 0xfa5aa(%rip), %esi     # 0x1997c4
callq 0xab20
movq %rax, -0x570(%rbp)
jmp 0x9f228
movq -0x570(%rbp), %rdi
movq 0xf9d52(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f23d
movq 0xf9dac(%rip), %rdi     # 0x198ff0
leaq 0x9e7fa(%rip), %rsi     # 0x13da45
callq 0xa5c0
movq %rax, -0x578(%rbp)
jmp 0x9f259
movq -0x578(%rbp), %rdi
movl 0xfb536(%rip), %esi     # 0x19a79c
callq 0xab20
movq %rax, -0x580(%rbp)
jmp 0x9f274
movq -0x580(%rbp), %rdi
movq 0xf9d06(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f289
movq 0xf9d60(%rip), %rdi     # 0x198ff0
leaq 0x9e7d4(%rip), %rsi     # 0x13da6b
callq 0xa5c0
movq %rax, -0x588(%rbp)
jmp 0x9f2a5
movq -0x588(%rbp), %rdi
movl 0xfa516(%rip), %esi     # 0x1997c8
callq 0xab20
movq %rax, -0x590(%rbp)
jmp 0x9f2c0
movq -0x590(%rbp), %rdi
movq 0xf9cba(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f2d5
movq 0xf9d14(%rip), %rdi     # 0x198ff0
leaq 0x9e7c8(%rip), %rsi     # 0x13daab
callq 0xa5c0
movq %rax, -0x598(%rbp)
jmp 0x9f2f1
movq -0x598(%rbp), %rdi
movl 0xfb4a2(%rip), %esi     # 0x19a7a0
callq 0xab20
movq %rax, -0x5a0(%rbp)
jmp 0x9f30c
movq -0x5a0(%rbp), %rdi
movq 0xf9c6e(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f321
testb $0x1, 0xfb47c(%rip)     # 0x19a7a4
je 0x9f35d
movq 0xf9cbf(%rip), %rdi     # 0x198ff0
leaq 0x9e7a0(%rip), %rsi     # 0x13dad8
callq 0xa5c0
movq %rax, -0x5a8(%rbp)
jmp 0x9f346
movq -0x5a8(%rbp), %rdi
movq 0xf9c34(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f35b
jmp 0x9f35d
movl 0xfa469(%rip), %eax     # 0x1997cc
movl %eax, -0x5ac(%rbp)
callq 0x35390
movl %eax, %ecx
movl -0x5ac(%rbp), %eax
cmpl %ecx, %eax
jge 0x9f3e4
movq 0xf9c6f(%rip), %rdi     # 0x198ff0
leaq 0x9e7b5(%rip), %rsi     # 0x13db3d
callq 0xa5c0
movq %rax, -0x5b8(%rbp)
jmp 0x9f396
movq -0x5b8(%rbp), %rdi
movl 0xfa429(%rip), %esi     # 0x1997cc
callq 0xab20
movq %rax, -0x5c0(%rbp)
jmp 0x9f3b1
movq -0x5c0(%rbp), %rdi
leaq 0x9e7a0(%rip), %rsi     # 0x13db5f
callq 0xa5c0
movq %rax, -0x5c8(%rbp)
jmp 0x9f3cd
movq -0x5c8(%rbp), %rdi
movq 0xf9bad(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f3e2
jmp 0x9f3e4
jmp 0x9f3e6
leaq -0x30(%rbp), %rdi
callq 0xa220
movq %rax, -0x5d8(%rbp)
leaq -0x221(%rbp), %rdi
movq %rdi, -0x5d0(%rbp)
callq 0xab60
movq -0x5d8(%rbp), %rsi
movq -0x5d0(%rbp), %rdx
leaq -0x220(%rbp), %rdi
callq 0x2d6c0
jmp 0x9f425
leaq -0x220(%rbp), %rdi
movl $0x8, %esi
callq 0x80e30
movq %rax, -0x5e0(%rbp)
jmp 0x9f43f
leaq -0x220(%rbp), %rdi
callq 0xac88
leaq -0x221(%rbp), %rdi
callq 0xa640
movq -0x5e0(%rbp), %rax
movq %rax, -0x200(%rbp)
movb $0x0, -0x222(%rbp)
leaq -0x248(%rbp), %rdi
callq 0xa820
movl $0x0, -0x24c(%rbp)
movq -0x200(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0xa0d0
movq %rax, -0x5e8(%rbp)
jmp 0x9f49e
movq -0x5e8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0xa740
movb %al, -0x5e9(%rbp)
jmp 0x9f4bc
movb -0x5e9(%rbp), %al
testb $0x1, %al
jne 0x9f4cb
jmp 0xa0012
xorl %eax, %eax
movl %eax, %esi
leaq -0x248(%rbp), %rdi
callq 0xac60
movq %rax, -0x5f8(%rbp)
jmp 0x9f4e4
movq -0x5f8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0x9f580
testb $0x1, 0xfb29a(%rip)     # 0x19a798
jne 0x9f57b
movq 0xf9ab1(%rip), %rdi     # 0x198fb8
leaq -0x248(%rbp), %rsi
callq 0xa520
movq %rax, -0x600(%rbp)
jmp 0x9f51c
movq -0x600(%rbp), %rdi
movq 0xf9a5e(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f531
jmp 0x9f57b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9f559
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x220(%rbp), %rdi
callq 0xac88
leaq -0x221(%rbp), %rdi
callq 0xa640
jmp 0xa0ccc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0xa0cc0
jmp 0xa000d
callq 0xa180
cvtsi2sd %eax, %xmm0
movsd 0x9bb97(%rip), %xmm1    # 0x13b128
divsd %xmm1, %xmm0
movsd %xmm0, -0x258(%rbp)
movsd -0x258(%rbp), %xmm0
ucomisd 0xfa223(%rip), %xmm0    # 0x1997d0
jbe 0x9f5b4
jmp 0x9f482
movl -0x24c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24c(%rbp)
movl -0x24c(%rbp), %eax
movl $0x186a0, %ecx          # imm = 0x186A0
cltd
idivl %ecx
cmpl $0x0, %edx
jne 0x9f640
movq 0xf9a13(%rip), %rdi     # 0x198ff0
leaq 0x9e599(%rip), %rsi     # 0x13db7d
callq 0xa5c0
movq %rax, -0x608(%rbp)
jmp 0x9f5f2
movq -0x608(%rbp), %rdi
movl -0x24c(%rbp), %esi
callq 0xab20
movq %rax, -0x610(%rbp)
jmp 0x9f60d
movq -0x610(%rbp), %rdi
leaq 0xa434c(%rip), %rsi     # 0x143967
callq 0xa5c0
movq %rax, -0x618(%rbp)
jmp 0x9f629
movq -0x618(%rbp), %rdi
movq 0xf9951(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f63e
jmp 0x9f640
leaq -0x368(%rbp), %rdi
callq 0x956b0
jmp 0x9f64e
leaq -0x380(%rbp), %rdi
leaq -0x248(%rbp), %rsi
movl $0x9, %edx
callq 0x7bbe0
jmp 0x9f668
testb $0x1, -0x222(%rbp)
jne 0x9f73a
leaq -0x380(%rbp), %rdi
callq 0x3ffd0
addq $-0x9, %rax
movq %rax, -0x388(%rbp)
movl -0x388(%rbp), %eax
addl %eax, %eax
movl %eax, -0x228(%rbp)
movq 0xf994f(%rip), %rdi     # 0x198ff0
leaq 0x9d21b(%rip), %rsi     # 0x13c8c3
callq 0xa5c0
movq %rax, -0x620(%rbp)
jmp 0x9f6b6
movq -0x620(%rbp), %rdi
movl -0x228(%rbp), %esi
callq 0xab20
movq %rax, -0x628(%rbp)
jmp 0x9f6d1
movq -0x628(%rbp), %rdi
movq 0xf98a9(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f6e6
movq -0x388(%rbp), %rsi
incq %rsi
movl $0x0, -0x38c(%rbp)
leaq -0xa8(%rbp), %rdi
leaq -0x38c(%rbp), %rdx
callq 0x838d0
jmp 0x9f70f
movb $0x1, -0x222(%rbp)
jmp 0x9f73a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9fffc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x9fff0
leaq -0x380(%rbp), %rdi
movl $0x5, %esi
callq 0x3d940
movq %rax, %rsi
leaq -0x3b0(%rbp), %rdi
callq 0xa250
jmp 0x9f75c
leaq -0x3b0(%rbp), %rdi
callq 0x7bab0
movsd %xmm0, -0x630(%rbp)
jmp 0x9f772
movsd -0x630(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x368(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0xac88
leaq -0x4b0(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x7d310
jmp 0x9f7a5
leaq -0x368(%rbp), %rdi
addq $0x8, %rdi
leaq -0x4b0(%rbp), %rsi
callq 0xa1130
leaq -0x4b0(%rbp), %rdi
callq 0x3df20
testb $0x1, 0xfafc9(%rip)     # 0x19a798
je 0x9f995
movq -0xc8(%rbp), %rdi
movsd -0x308(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x638(%rbp)
jmp 0x9f7f2
movq -0x638(%rbp), %rdi
movq 0xf9788(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f807
movq -0xd0(%rbp), %rdi
movl -0x358(%rbp), %esi
callq 0xab20
movq %rax, -0x640(%rbp)
jmp 0x9f822
movq -0x640(%rbp), %rdi
movq 0xf9758(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f837
leaq -0x368(%rbp), %rdi
addq $0x8, %rdi
addq $0x10, %rdi
callq 0xaa70
testb $0x1, %al
jne 0x9f89f
movq -0xd8(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0xa520
movq %rax, -0x648(%rbp)
jmp 0x9f86b
movq -0x648(%rbp), %rdi
movq 0xf970f(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f880
jmp 0x9f8ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0xac88
jmp 0x9fff0
leaq -0x368(%rbp), %rdi
addq $0x8, %rdi
addq $0x30, %rdi
callq 0xaa70
testb $0x1, %al
jne 0x9f8ea
movq -0xd8(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0xa520
movq %rax, -0x650(%rbp)
jmp 0x9f8d3
movq -0x650(%rbp), %rdi
movq 0xf96a7(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f8e8
jmp 0x9f8ea
jmp 0x9f8ec
movsd -0x310(%rbp), %xmm0
movsd %xmm0, -0x658(%rbp)
callq 0x46260
movsd -0x658(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0x9f943
movq -0xe8(%rbp), %rdi
movsd -0x310(%rbp), %xmm0
callq 0xabd0
movq %rax, -0x660(%rbp)
jmp 0x9f92c
movq -0x660(%rbp), %rdi
movq 0xf964e(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f941
jmp 0x9f943
movq -0xe0(%rbp), %rdi
movl -0x368(%rbp), %esi
callq 0xab20
movq %rax, -0x668(%rbp)
jmp 0x9f95e
movq -0x668(%rbp), %rdi
movq 0xf961c(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9f973
cmpl $0xf4240, -0x24c(%rbp)  # imm = 0xF4240
jl 0x9f986
xorl %edi, %edi
callq 0xa700
movl $0x2, -0x4b4(%rbp)
jmp 0x9ffc5
testb $0x1, 0xf9e3c(%rip)     # 0x1997d8
je 0x9fa0c
leaq -0x380(%rbp), %rdi
movl $0x4, %esi
callq 0x3d940
movq %rax, %rdi
callq 0x800b0
movb %al, -0x669(%rbp)
jmp 0x9f9bf
movb -0x669(%rbp), %al
andb $0x1, %al
movb %al, -0x260(%rbp)
testb $0x1, -0x260(%rbp)
jne 0x9fa0a
movb $0x0, -0x260(%rbp)
movl -0xec(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xec(%rbp)
movl -0xf0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf0(%rbp)
movl $0x2, -0x4b4(%rbp)
jmp 0x9ffc5
jmp 0x9fa13
movb $0x1, -0x260(%rbp)
movl -0x368(%rbp), %eax
cmpl 0xf9da1(%rip), %eax     # 0x1997c0
jge 0x9fa28
movb $0x0, -0x364(%rbp)
movl -0x358(%rbp), %eax
cmpl 0xfad68(%rip), %eax     # 0x19a79c
jl 0x9fa4d
movl -0x358(%rbp), %eax
cmpl 0xf9d82(%rip), %eax     # 0x1997c4
jg 0x9fa4d
movb $0x1, -0x363(%rbp)
jmp 0x9fa54
movb $0x0, -0x363(%rbp)
leaq -0x368(%rbp), %rdi
addq $0x8, %rdi
addq $0x10, %rdi
callq 0xaa70
testb $0x1, %al
jne 0x9faf5
leaq -0x350(%rbp), %rsi
leaq -0x4d8(%rbp), %rdi
callq 0xa250
jmp 0x9fa85
leaq -0x4d8(%rbp), %rdi
callq 0x7bab0
movsd %xmm0, -0x678(%rbp)
jmp 0x9fa9b
movsd 0xf9d3d(%rip), %xmm0    # 0x1997e0
movsd %xmm0, -0x680(%rbp)
leaq -0x4d8(%rbp), %rdi
callq 0xac88
movsd -0x680(%rbp), %xmm1
movsd -0x678(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x9faf3
movb $0x0, -0x362(%rbp)
jmp 0x9faf3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x4d8(%rbp), %rdi
callq 0xac88
jmp 0x9fff0
jmp 0x9faf5
leaq -0x368(%rbp), %rdi
addq $0x8, %rdi
addq $0x30, %rdi
callq 0xaa70
testb $0x1, %al
jne 0x9fb96
leaq -0x330(%rbp), %rsi
leaq -0x4f8(%rbp), %rdi
callq 0xa250
jmp 0x9fb26
leaq -0x4f8(%rbp), %rdi
callq 0x7bab0
movsd %xmm0, -0x688(%rbp)
jmp 0x9fb3c
movsd 0xfac64(%rip), %xmm0    # 0x19a7a8
movsd %xmm0, -0x690(%rbp)
leaq -0x4f8(%rbp), %rdi
callq 0xac88
movsd -0x688(%rbp), %xmm1
movsd -0x690(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x9fb94
movb $0x0, -0x362(%rbp)
jmp 0x9fb94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x4f8(%rbp), %rdi
callq 0xac88
jmp 0x9fff0
jmp 0x9fb96
movsd -0x308(%rbp), %xmm1
movsd 0xf9c42(%rip), %xmm0    # 0x1997e8
ucomisd %xmm1, %xmm0
jbe 0x9fbb3
movb $0x0, -0x361(%rbp)
movl -0x360(%rbp), %eax
movl -0x228(%rbp), %ecx
subl 0xf9c03(%rip), %ecx     # 0x1997c8
cmpl %ecx, %eax
jg 0x9fbd9
movl -0x360(%rbp), %eax
cmpl 0xf9bf3(%rip), %eax     # 0x1997c8
jl 0x9fbd9
jmp 0x9fbf7
movl -0xf4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf4(%rbp)
movl $0x2, -0x4b4(%rbp)
jmp 0x9ffc5
testb $0x1, -0x361(%rbp)
je 0x9fc51
testb $0x1, -0x363(%rbp)
je 0x9fc51
testb $0x1, -0x364(%rbp)
je 0x9fc51
testb $0x1, -0x362(%rbp)
je 0x9fc51
movq 0xf9396(%rip), %rdi     # 0x198fb8
leaq -0x248(%rbp), %rsi
callq 0xa520
movq %rax, -0x698(%rbp)
jmp 0x9fc37
movq -0x698(%rbp), %rdi
movq 0xf9343(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0x9fc4c
jmp 0x9ffbb
movl -0xec(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xec(%rbp)
testb $0x1, -0x361(%rbp)
jne 0x9fc98
testb $0x1, -0x363(%rbp)
je 0x9fc98
testb $0x1, -0x364(%rbp)
je 0x9fc98
testb $0x1, -0x362(%rbp)
je 0x9fc98
movl -0x104(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x104(%rbp)
jmp 0x9ffb9
testb $0x1, -0x361(%rbp)
je 0x9fcd0
testb $0x1, -0x363(%rbp)
jne 0x9fcd0
testb $0x1, -0x364(%rbp)
je 0x9fcd0
testb $0x1, -0x362(%rbp)
je 0x9fcd0
movl -0xfc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xfc(%rbp)
jmp 0x9ffb7
testb $0x1, -0x361(%rbp)
je 0x9fd08
testb $0x1, -0x363(%rbp)
je 0x9fd08
testb $0x1, -0x364(%rbp)
jne 0x9fd08
testb $0x1, -0x362(%rbp)
je 0x9fd08
movl -0x100(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x100(%rbp)
jmp 0x9ffb5
testb $0x1, -0x361(%rbp)
je 0x9fd40
testb $0x1, -0x363(%rbp)
je 0x9fd40
testb $0x1, -0x364(%rbp)
je 0x9fd40
testb $0x1, -0x362(%rbp)
jne 0x9fd40
movl -0xf8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf8(%rbp)
jmp 0x9ffb3
testb $0x1, -0x361(%rbp)
jne 0x9fd78
testb $0x1, -0x363(%rbp)
je 0x9fd78
testb $0x1, -0x364(%rbp)
jne 0x9fd78
testb $0x1, -0x362(%rbp)
je 0x9fd78
movl -0x110(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x110(%rbp)
jmp 0x9ffb1
testb $0x1, -0x361(%rbp)
je 0x9fdb0
testb $0x1, -0x363(%rbp)
jne 0x9fdb0
testb $0x1, -0x364(%rbp)
jne 0x9fdb0
testb $0x1, -0x362(%rbp)
je 0x9fdb0
movl -0x108(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x108(%rbp)
jmp 0x9ffaf
testb $0x1, -0x361(%rbp)
je 0x9fde8
testb $0x1, -0x363(%rbp)
je 0x9fde8
testb $0x1, -0x364(%rbp)
jne 0x9fde8
testb $0x1, -0x362(%rbp)
jne 0x9fde8
movl -0x10c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10c(%rbp)
jmp 0x9ffad
testb $0x1, -0x361(%rbp)
jne 0x9fe20
testb $0x1, -0x363(%rbp)
je 0x9fe20
testb $0x1, -0x364(%rbp)
je 0x9fe20
testb $0x1, -0x362(%rbp)
jne 0x9fe20
movl -0x114(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x114(%rbp)
jmp 0x9ffab
testb $0x1, -0x361(%rbp)
je 0x9fe58
testb $0x1, -0x363(%rbp)
jne 0x9fe58
testb $0x1, -0x364(%rbp)
je 0x9fe58
testb $0x1, -0x362(%rbp)
jne 0x9fe58
movl -0x118(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x118(%rbp)
jmp 0x9ffa9
testb $0x1, -0x361(%rbp)
jne 0x9fe90
testb $0x1, -0x363(%rbp)
jne 0x9fe90
testb $0x1, -0x364(%rbp)
je 0x9fe90
testb $0x1, -0x362(%rbp)
je 0x9fe90
movl -0x11c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x11c(%rbp)
jmp 0x9ffa7
testb $0x1, -0x361(%rbp)
jne 0x9fec8
testb $0x1, -0x363(%rbp)
jne 0x9fec8
testb $0x1, -0x364(%rbp)
jne 0x9fec8
testb $0x1, -0x362(%rbp)
je 0x9fec8
movl -0x120(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x120(%rbp)
jmp 0x9ffa5
testb $0x1, -0x361(%rbp)
je 0x9ff00
testb $0x1, -0x363(%rbp)
jne 0x9ff00
testb $0x1, -0x364(%rbp)
jne 0x9ff00
testb $0x1, -0x362(%rbp)
jne 0x9ff00
movl -0x124(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x124(%rbp)
jmp 0x9ffa3
testb $0x1, -0x361(%rbp)
jne 0x9ff35
testb $0x1, -0x363(%rbp)
je 0x9ff35
testb $0x1, -0x364(%rbp)
jne 0x9ff35
testb $0x1, -0x362(%rbp)
jne 0x9ff35
movl -0x128(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x128(%rbp)
jmp 0x9ffa1
testb $0x1, -0x361(%rbp)
jne 0x9ff6a
testb $0x1, -0x363(%rbp)
jne 0x9ff6a
testb $0x1, -0x364(%rbp)
je 0x9ff6a
testb $0x1, -0x362(%rbp)
jne 0x9ff6a
movl -0x12c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x12c(%rbp)
jmp 0x9ff9f
testb $0x1, -0x361(%rbp)
jne 0x9ff9d
testb $0x1, -0x363(%rbp)
jne 0x9ff9d
testb $0x1, -0x364(%rbp)
jne 0x9ff9d
testb $0x1, -0x362(%rbp)
jne 0x9ff9d
movl -0x130(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x130(%rbp)
jmp 0x9ff9f
jmp 0x9ffa1
jmp 0x9ffa3
jmp 0x9ffa5
jmp 0x9ffa7
jmp 0x9ffa9
jmp 0x9ffab
jmp 0x9ffad
jmp 0x9ffaf
jmp 0x9ffb1
jmp 0x9ffb3
jmp 0x9ffb5
jmp 0x9ffb7
jmp 0x9ffb9
jmp 0x9ffbb
movl $0x0, -0x4b4(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x3dfa0
leaq -0x368(%rbp), %rdi
callq 0x95ad0
movl -0x4b4(%rbp), %eax
testl %eax, %eax
je 0x9ffee
jmp 0x9ffe9
jmp 0x9f482
jmp 0xa000d
leaq -0x380(%rbp), %rdi
callq 0x3dfa0
leaq -0x368(%rbp), %rdi
callq 0x95ad0
jmp 0xa0cc0
jmp 0x9f482
movq 0xf8fd7(%rip), %rdi     # 0x198ff0
leaq 0x9db67(%rip), %rsi     # 0x13db87
callq 0xa5c0
movq %rax, -0x6a0(%rbp)
jmp 0xa002e
movq -0x6a0(%rbp), %rdi
movl -0xec(%rbp), %esi
callq 0xab20
movq %rax, -0x6a8(%rbp)
jmp 0xa0049
movq -0x6a8(%rbp), %rdi
movq 0xf8f31(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa005e
movq 0xf8f8b(%rip), %rdi     # 0x198ff0
leaq 0x9db39(%rip), %rsi     # 0x13dba5
callq 0xa5c0
movq %rax, -0x6b0(%rbp)
jmp 0xa007a
movq -0x6b0(%rbp), %rdi
movq 0xf8f00(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa008f
movq 0xf8f5a(%rip), %rdi     # 0x198ff0
leaq 0x9db1f(%rip), %rsi     # 0x13dbbc
callq 0xa5c0
movq %rax, -0x6b8(%rbp)
jmp 0xa00ab
movq -0x6b8(%rbp), %rdi
movl -0xf0(%rbp), %esi
callq 0xab20
movq %rax, -0x6c0(%rbp)
jmp 0xa00c6
movq -0x6c0(%rbp), %rdi
movq 0xf8eb4(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa00db
movq 0xf8f0e(%rip), %rdi     # 0x198ff0
leaq 0x9dae3(%rip), %rsi     # 0x13dbcc
callq 0xa5c0
movq %rax, -0x6c8(%rbp)
jmp 0xa00f7
movq -0x6c8(%rbp), %rdi
movl -0xf4(%rbp), %esi
callq 0xab20
movq %rax, -0x6d0(%rbp)
jmp 0xa0112
movq -0x6d0(%rbp), %rdi
movq 0xf8e68(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa0127
movq 0xf8ec2(%rip), %rdi     # 0x198ff0
leaq 0x9dac7(%rip), %rsi     # 0x13dbfc
callq 0xa5c0
movq %rax, -0x6d8(%rbp)
jmp 0xa0143
movq -0x6d8(%rbp), %rdi
movq 0xf8e37(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa0158
movq 0xf8e91(%rip), %rdi     # 0x198ff0
leaq 0x9daa5(%rip), %rsi     # 0x13dc0b
callq 0xa5c0
movq %rax, -0x6e0(%rbp)
jmp 0xa0174
movq -0x6e0(%rbp), %rdi
movq 0xf8e06(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa0189
movq 0xf8e60(%rip), %rdi     # 0x198ff0
leaq 0x9dacb(%rip), %rsi     # 0x13dc62
callq 0xa5c0
movq %rax, -0x6e8(%rbp)
jmp 0xa01a5
movq -0x6e8(%rbp), %rdi
movl -0x130(%rbp), %esi
callq 0xab20
movq %rax, -0x6f0(%rbp)
jmp 0xa01c0
movq -0x6f0(%rbp), %rdi
leaq 0x9daa1(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x6f8(%rbp)
jmp 0xa01dc
movq -0x6f8(%rbp), %rdi
cvtsi2sdl -0x130(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a941(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x700(%rbp)
jmp 0xa0211
movq -0x700(%rbp), %rdi
leaq 0xa3cd7(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x708(%rbp)
jmp 0xa022d
movq -0x708(%rbp), %rdi
movq 0xf8d4d(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa0242
movq 0xf8da7(%rip), %rdi     # 0x198ff0
leaq 0x9da22(%rip), %rsi     # 0x13dc72
callq 0xa5c0
movq %rax, -0x710(%rbp)
jmp 0xa025e
movq -0x710(%rbp), %rdi
movl -0x120(%rbp), %esi
callq 0xab20
movq %rax, -0x718(%rbp)
jmp 0xa0279
movq -0x718(%rbp), %rdi
leaq 0x9d9e8(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x720(%rbp)
jmp 0xa0295
movq -0x720(%rbp), %rdi
cvtsi2sdl -0x120(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a888(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x728(%rbp)
jmp 0xa02ca
movq -0x728(%rbp), %rdi
leaq 0xa3c1e(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x730(%rbp)
jmp 0xa02e6
movq -0x730(%rbp), %rdi
movq 0xf8c94(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa02fb
movq 0xf8cee(%rip), %rdi     # 0x198ff0
leaq 0x9d974(%rip), %rsi     # 0x13dc7d
callq 0xa5c0
movq %rax, -0x738(%rbp)
jmp 0xa0317
movq -0x738(%rbp), %rdi
movl -0x124(%rbp), %esi
callq 0xab20
movq %rax, -0x740(%rbp)
jmp 0xa0332
movq -0x740(%rbp), %rdi
leaq 0x9d92f(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x748(%rbp)
jmp 0xa034e
movq -0x748(%rbp), %rdi
cvtsi2sdl -0x124(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a7cf(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x750(%rbp)
jmp 0xa0383
movq -0x750(%rbp), %rdi
leaq 0xa3b65(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x758(%rbp)
jmp 0xa039f
movq -0x758(%rbp), %rdi
movq 0xf8bdb(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa03b4
movq 0xf8c35(%rip), %rdi     # 0x198ff0
leaq 0x9d8c7(%rip), %rsi     # 0x13dc89
callq 0xa5c0
movq %rax, -0x760(%rbp)
jmp 0xa03d0
movq -0x760(%rbp), %rdi
movl -0x128(%rbp), %esi
callq 0xab20
movq %rax, -0x768(%rbp)
jmp 0xa03eb
movq -0x768(%rbp), %rdi
leaq 0x9d876(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x770(%rbp)
jmp 0xa0407
movq -0x770(%rbp), %rdi
cvtsi2sdl -0x128(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a716(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x778(%rbp)
jmp 0xa043c
movq -0x778(%rbp), %rdi
leaq 0xa3aac(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x780(%rbp)
jmp 0xa0458
movq -0x780(%rbp), %rdi
movq 0xf8b22(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa046d
movq 0xf8b7c(%rip), %rdi     # 0x198ff0
leaq 0x9d819(%rip), %rsi     # 0x13dc94
callq 0xa5c0
movq %rax, -0x788(%rbp)
jmp 0xa0489
movq -0x788(%rbp), %rdi
movl -0x12c(%rbp), %esi
callq 0xab20
movq %rax, -0x790(%rbp)
jmp 0xa04a4
movq -0x790(%rbp), %rdi
leaq 0x9d7bd(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x798(%rbp)
jmp 0xa04c0
movq -0x798(%rbp), %rdi
cvtsi2sdl -0x12c(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a65d(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x7a0(%rbp)
jmp 0xa04f5
movq -0x7a0(%rbp), %rdi
leaq 0xa39f3(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x7a8(%rbp)
jmp 0xa0511
movq -0x7a8(%rbp), %rdi
movq 0xf8a69(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa0526
movq 0xf8ac3(%rip), %rdi     # 0x198ff0
leaq 0x9d76b(%rip), %rsi     # 0x13dc9f
callq 0xa5c0
movq %rax, -0x7b0(%rbp)
jmp 0xa0542
movq -0x7b0(%rbp), %rdi
movl -0x108(%rbp), %esi
callq 0xab20
movq %rax, -0x7b8(%rbp)
jmp 0xa055d
movq -0x7b8(%rbp), %rdi
leaq 0x9d704(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x7c0(%rbp)
jmp 0xa0579
movq -0x7c0(%rbp), %rdi
cvtsi2sdl -0x108(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a5a4(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x7c8(%rbp)
jmp 0xa05ae
movq -0x7c8(%rbp), %rdi
leaq 0xa393a(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x7d0(%rbp)
jmp 0xa05ca
movq -0x7d0(%rbp), %rdi
movq 0xf89b0(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa05df
movq 0xf8a0a(%rip), %rdi     # 0x198ff0
leaq 0x9d6bb(%rip), %rsi     # 0x13dca8
callq 0xa5c0
movq %rax, -0x7d8(%rbp)
jmp 0xa05fb
movq -0x7d8(%rbp), %rdi
movl -0x110(%rbp), %esi
callq 0xab20
movq %rax, -0x7e0(%rbp)
jmp 0xa0616
movq -0x7e0(%rbp), %rdi
leaq 0x9d64b(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x7e8(%rbp)
jmp 0xa0632
movq -0x7e8(%rbp), %rdi
cvtsi2sdl -0x110(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a4eb(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x7f0(%rbp)
jmp 0xa0667
movq -0x7f0(%rbp), %rdi
leaq 0xa3881(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x7f8(%rbp)
jmp 0xa0683
movq -0x7f8(%rbp), %rdi
movq 0xf88f7(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa0698
movq 0xf8951(%rip), %rdi     # 0x198ff0
leaq 0x9d60a(%rip), %rsi     # 0x13dcb0
callq 0xa5c0
movq %rax, -0x800(%rbp)
jmp 0xa06b4
movq -0x800(%rbp), %rdi
movl -0x10c(%rbp), %esi
callq 0xab20
movq %rax, -0x808(%rbp)
jmp 0xa06cf
movq -0x808(%rbp), %rdi
leaq 0x9d592(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x810(%rbp)
jmp 0xa06eb
movq -0x810(%rbp), %rdi
cvtsi2sdl -0x10c(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a432(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x818(%rbp)
jmp 0xa0720
movq -0x818(%rbp), %rdi
leaq 0xa37c8(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x820(%rbp)
jmp 0xa073c
movq -0x820(%rbp), %rdi
movq 0xf883e(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa0751
movq 0xf8898(%rip), %rdi     # 0x198ff0
leaq 0x9d52d(%rip), %rsi     # 0x13dc8c
callq 0xa5c0
movq %rax, -0x828(%rbp)
jmp 0xa076d
movq -0x828(%rbp), %rdi
movl -0x114(%rbp), %esi
callq 0xab20
movq %rax, -0x830(%rbp)
jmp 0xa0788
movq -0x830(%rbp), %rdi
leaq 0x9d4d9(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x838(%rbp)
jmp 0xa07a4
movq -0x838(%rbp), %rdi
cvtsi2sdl -0x114(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a379(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x840(%rbp)
jmp 0xa07d9
movq -0x840(%rbp), %rdi
leaq 0xa370f(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x848(%rbp)
jmp 0xa07f5
movq -0x848(%rbp), %rdi
movq 0xf8785(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa080a
movq 0xf87df(%rip), %rdi     # 0x198ff0
leaq 0x9d4a1(%rip), %rsi     # 0x13dcb9
callq 0xa5c0
movq %rax, -0x850(%rbp)
jmp 0xa0826
movq -0x850(%rbp), %rdi
movl -0x118(%rbp), %esi
callq 0xab20
movq %rax, -0x858(%rbp)
jmp 0xa0841
movq -0x858(%rbp), %rdi
leaq 0x9d420(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x860(%rbp)
jmp 0xa085d
movq -0x860(%rbp), %rdi
cvtsi2sdl -0x118(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a2c0(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x868(%rbp)
jmp 0xa0892
movq -0x868(%rbp), %rdi
leaq 0xa3656(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x870(%rbp)
jmp 0xa08ae
movq -0x870(%rbp), %rdi
movq 0xf86cc(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa08c3
movq 0xf8726(%rip), %rdi     # 0x198ff0
leaq 0x9d3c6(%rip), %rsi     # 0x13dc97
callq 0xa5c0
movq %rax, -0x878(%rbp)
jmp 0xa08df
movq -0x878(%rbp), %rdi
movl -0x11c(%rbp), %esi
callq 0xab20
movq %rax, -0x880(%rbp)
jmp 0xa08fa
movq -0x880(%rbp), %rdi
leaq 0x9d367(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x888(%rbp)
jmp 0xa0916
movq -0x888(%rbp), %rdi
cvtsi2sdl -0x11c(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a207(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x890(%rbp)
jmp 0xa094b
movq -0x890(%rbp), %rdi
leaq 0xa359d(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x898(%rbp)
jmp 0xa0967
movq -0x898(%rbp), %rdi
movq 0xf8613(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa097c
movq 0xf866d(%rip), %rdi     # 0x198ff0
leaq 0x9d338(%rip), %rsi     # 0x13dcc2
callq 0xa5c0
movq %rax, -0x8a0(%rbp)
jmp 0xa0998
movq -0x8a0(%rbp), %rdi
movl -0x100(%rbp), %esi
callq 0xab20
movq %rax, -0x8a8(%rbp)
jmp 0xa09b3
movq -0x8a8(%rbp), %rdi
leaq 0x9d2ae(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x8b0(%rbp)
jmp 0xa09cf
movq -0x8b0(%rbp), %rdi
cvtsi2sdl -0x100(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a14e(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x8b8(%rbp)
jmp 0xa0a04
movq -0x8b8(%rbp), %rdi
leaq 0xa34e4(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x8c0(%rbp)
jmp 0xa0a20
movq -0x8c0(%rbp), %rdi
movq 0xf855a(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa0a35
movq 0xf85b4(%rip), %rdi     # 0x198ff0
leaq 0x9d240(%rip), %rsi     # 0x13dc83
callq 0xa5c0
movq %rax, -0x8c8(%rbp)
jmp 0xa0a51
movq -0x8c8(%rbp), %rdi
movl -0xf8(%rbp), %esi
callq 0xab20
movq %rax, -0x8d0(%rbp)
jmp 0xa0a6c
movq -0x8d0(%rbp), %rdi
leaq 0x9d1f5(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x8d8(%rbp)
jmp 0xa0a88
movq -0x8d8(%rbp), %rdi
cvtsi2sdl -0xf8(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x9a095(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x8e0(%rbp)
jmp 0xa0abd
movq -0x8e0(%rbp), %rdi
leaq 0xa342b(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x8e8(%rbp)
jmp 0xa0ad9
movq -0x8e8(%rbp), %rdi
movq 0xf84a1(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa0aee
movq 0xf84fb(%rip), %rdi     # 0x198ff0
leaq 0x9d1c0(%rip), %rsi     # 0x13dcbc
callq 0xa5c0
movq %rax, -0x8f0(%rbp)
jmp 0xa0b0a
movq -0x8f0(%rbp), %rdi
movl -0xfc(%rbp), %esi
callq 0xab20
movq %rax, -0x8f8(%rbp)
jmp 0xa0b25
movq -0x8f8(%rbp), %rdi
leaq 0x9d13c(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x900(%rbp)
jmp 0xa0b41
movq -0x900(%rbp), %rdi
cvtsi2sdl -0xfc(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x99fdc(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x908(%rbp)
jmp 0xa0b76
movq -0x908(%rbp), %rdi
leaq 0xa3372(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x910(%rbp)
jmp 0xa0b92
movq -0x910(%rbp), %rdi
movq 0xf83e8(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa0ba7
movq 0xf8442(%rip), %rdi     # 0x198ff0
leaq 0x9d0da(%rip), %rsi     # 0x13dc8f
callq 0xa5c0
movq %rax, -0x918(%rbp)
jmp 0xa0bc3
movq -0x918(%rbp), %rdi
movl -0x104(%rbp), %esi
callq 0xab20
movq %rax, -0x920(%rbp)
jmp 0xa0bde
movq -0x920(%rbp), %rdi
leaq 0x9d083(%rip), %rsi     # 0x13dc6f
callq 0xa5c0
movq %rax, -0x928(%rbp)
jmp 0xa0bfa
movq -0x928(%rbp), %rdi
cvtsi2sdl -0x104(%rbp), %xmm0
cvtsi2sdl -0xec(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd 0x99f23(%rip), %xmm1    # 0x13ab40
mulsd %xmm1, %xmm0
callq 0xabd0
movq %rax, -0x930(%rbp)
jmp 0xa0c2f
movq -0x930(%rbp), %rdi
leaq 0xa32b9(%rip), %rsi     # 0x143ef6
callq 0xa5c0
movq %rax, -0x938(%rbp)
jmp 0xa0c4b
movq -0x938(%rbp), %rdi
movq 0xf832f(%rip), %rsi     # 0x198f88
callq 0xa610
jmp 0xa0c60
movl $0x1, -0x4b4(%rbp)
leaq -0x248(%rbp), %rdi
callq 0xac88
leaq -0xc0(%rbp), %rdi
callq 0x6d0b0
leaq -0xa8(%rbp), %rdi
callq 0x48290
leaq -0x90(%rbp), %rdi
callq 0x48290
leaq -0x78(%rbp), %rdi
callq 0x48290
leaq -0x50(%rbp), %rdi
callq 0xac88
leaq -0x30(%rbp), %rdi
callq 0xac88
xorl %eax, %eax
addq $0x940, %rsp            # imm = 0x940
popq %rbp
retq
leaq -0x248(%rbp), %rdi
callq 0xac88
leaq -0xc0(%rbp), %rdi
callq 0x6d0b0
leaq -0xa8(%rbp), %rdi
callq 0x48290
leaq -0x90(%rbp), %rdi
callq 0x48290
leaq -0x78(%rbp), %rdi
callq 0x48290
leaq -0x50(%rbp), %rdi
callq 0xac88
leaq -0x30(%rbp), %rdi
callq 0xac88
movq -0x58(%rbp), %rdi
callq 0xab50
nopw %cs:(%rax,%rax)