// File: /workspace/github_cpp_makefile_star2_O2/bobverity[P]MavericK/main.cpp
// Function: main
int main(int argc, const char * argv[])
{
    
    // start program
    time_t ctt = time(0); // current time
    cout << "------------------------------------------\n";
    cout << "               MAVERICK\n";
    cout << "by Robert Verity and Richard A. Nichols\n";
    cout << "    Version 1.0.4 (30 November 2016)\n";
    cout << "accessed " << ctime(&ctt);
    cout << "------------------------------------------\n\n";

    // start timing program
    time_t tstart, tend;
    time(&tstart);

    //---------------------------------------------------------------------------------------------------
    
    // The logic of importing parameter values from file proceeds in the following steps:
    //  1. Define default values for all parameters in the form of pair<string,int> objects. The first element stores the default value of the parameter as a string, while the second element is used to keep track of where the parameter is defined (1=default, 2=parameters file, 3=command line). Note that all parameter values are stored as strings at this stage.
    //  2. Look through command line arguments. Read just those arguments needed to locate the parameters file.
    //  3. Read in the parameters file (all values are read in as strings). For all parameters in this file that match valid parameter names, overwrite the pair<string,int> with new values, and set the int element to 2.
    //  4. Look through all remaining command line arguments. For all arguments that match valid parameter names, overwrite the pair<string,int> with new values, and set the int element to 3.
    // At this stage we have all parameters defined as strings, and a record of where they were defined. No checking of parameter values has occurred yet.
    
    
    // initialise global object; to contain all file paths, parameter values and data.
    globals globals;
    
    // parse input arguments required to open parameters file
    for (int i=1; i<argc; i++) {
        readPath("-masterRoot", globals.masterRoot_filePath, argc, argv, i);
        readPath("-inputRoot", globals.inputRoot_fileName, argc, argv, i);
        readPath("-parameters", globals.parameters_fileName, argc, argv, i);
    }
    globals.inputRoot_filePath = globals.masterRoot_filePath + globals.inputRoot_fileName;
    globals.parameters_filePath = globals.inputRoot_filePath + globals.parameters_fileName;
    
    // read in parameters file
    readParameters(globals);
    
    // read command line arguments
    readCommandLine(globals, argc, argv);
    
    //---------------------------------------------------------------------------------------------------
    
    // Open log file if needed. Loop through all parameters in turn, checking values and printing errors if necessary.
    
    // check that outputLog_on parameter is valid
    checkBoolean(globals.parameterStrings["outputLog_on"].first, globals.outputLog_on, "outputLog_on", false, globals.outputLog_fileStream);
    
    // open log if necessary
    if (globals.outputLog_on) {
        
        globals.outputLog_fileStream = safe_ofstream(globals.outputLog_filePath, false, globals.outputLog_fileStream);
        
        globals.outputLog_fileStream << "------------------------------------------\n";
        globals.outputLog_fileStream << "               MAVERICK\n";
        globals.outputLog_fileStream << "by Robert Verity and Richard A. Nichols\n";
        globals.outputLog_fileStream << "    Version 1.0.4 (30 November 2016)\n";
		globals.outputLog_fileStream << "accessed " << ctime(&ctt);
        globals.outputLog_fileStream << "------------------------------------------\n\n";
        
        globals.outputLog_fileStream << "Parameters file: " << globals.parameters_filePath << "\n\n";
        globals.outputLog_fileStream << "Data file: " << globals.data_filePath << "\n";
        
        globals.outputLog_fileStream.flush();
    }
    
    // check those parameters set to default values and print to log
    writeToFile("\nParameters taking default values\n", globals.outputLog_on, globals.outputLog_fileStream);
    checkParameters(globals, 0);
    
    // check those parameters read in from file and print to log
    writeToFile("\nParameters read in from file\n", globals.outputLog_on, globals.outputLog_fileStream);
    checkParameters(globals, 1);
    
    // check those parameters defined as command line arguments and print to log
    writeToFile("\nParameters defined on command line\n", globals.outputLog_on, globals.outputLog_fileStream);
    checkParameters(globals, 2);
    coutAndLog("\n", globals.outputLog_on, globals.outputLog_fileStream);
    
    //---------------------------------------------------------------------------------------------------
    
    // Read in data file. Ensure that data is formatted correctly, and that the chosen combination of data and parameters makes sense.
    
    // read in data and check format
    readData(globals);
    
    // create lookup table for log(i+(j+1)*lambda) function. The object log_lookup_0 does the same thing for j=0 only (it is slightly faster to index this vector rather than the first element of an array, as in log_lookup[i][0]).
    int Jmax = *max_element(begin(globals.J),end(globals.J));
    log_lookup = vector< vector<double> >(int(1e4),vector<double>(Jmax+1));
    log_lookup_0 = vector<double>(int(1e4));
    for (int i=0; i<int(1e4); i++) {
        for (int j=0; j<Jmax; j++) {
            log_lookup[i][j] = log(double(i+(j+1)*globals.lambda));
        }
        log_lookup_0[i] = log_lookup[i][0];
    }
    
    // check that chosen options make sense
    checkOptions(globals);
    
    //---------------------------------------------------------------------------------------------------
    
    // Perform inference. Loop through defined range of K, deploying various statistical methods.
    
    // initialise objects for storing results
    initialiseGlobals(globals);
    
    // open file streams that are common to all K
    openFileStreams(globals);
    
    // open file stream for junk output (comment out as needed)
    //globals.junk_fileStream = safe_ofstream(globals.outputRoot_filePath + "junk.txt", false, globals.outputLog_fileStream);
    
    
    // loop through range of K
    for (int Kindex=0; Kindex<(globals.Kmax-globals.Kmin+1); Kindex++) {
        int K = globals.Kmin+Kindex;
        
        coutAndLog("-- K="+to_string((long long)K)+" ----------------\n\n", globals.outputLog_on, globals.outputLog_fileStream);
        
        //#### Carry out various estimation methods
        
        // exhaustive analysis
        if (globals.exhaustive_on || K==1) {
            coutAndLog("Running exhaustive approach...\n", globals.outputLog_on, globals.outputLog_fileStream);
            if (!globals.admix_on) {
                exhaustive_noAdmix(globals, Kindex);
            } else {
                exhaustive_admix(globals, Kindex);
            }
            coutAndLog("  complete\n\n", globals.outputLog_on, globals.outputLog_fileStream);
        }
        
        // ordinary MCMC - repeat multiple times
        coutAndLog("Running ordinary MCMC...\n", globals.outputLog_on, globals.outputLog_fileStream);
        if (!globals.admix_on) {
            mainMCMC_noAdmixture(globals, Kindex);
        } else {
            mainMCMC_admixture(globals, Kindex);
        }
        coutAndLog("  complete\n\n", globals.outputLog_on, globals.outputLog_fileStream);
        
        // thermodynamic integration
        if (globals.thermodynamic_on) {
            coutAndLog("Carrying out thermodynamic integration...\n", globals.outputLog_on, globals.outputLog_fileStream);
            if (!globals.admix_on) {
                TI_noAdmixture(globals, Kindex);
            } else {
                TI_admixture(globals, Kindex);
            }
            coutAndLog("  complete\n\n", globals.outputLog_on, globals.outputLog_fileStream);
        }
        
        // EM algorithm
        if (globals.EMalgorithm_on) {
            coutAndLog("Running EM algorithm...\n", globals.outputLog_on, globals.outputLog_fileStream);
            if (!globals.admix_on) {
                EM_noAdmix(globals, Kindex);
            } else {
                EM_admix(globals, Kindex);
            }
            coutAndLog("  complete\n\n", globals.outputLog_on, globals.outputLog_fileStream);
        }
        
        
        //#### Print results to file
        
        // output Qmatrix files for this K
        if (globals.outputQmatrix_gene_on)
            printQmatrix_gene(globals, Kindex);
        if (globals.outputQmatrix_ind_on)
            printQmatrix_ind(globals, Kindex);
        if (globals.outputQmatrix_pop_on)
            printQmatrix_pop(globals, Kindex);
        
        // output Qmatrix error files for this K
        if (globals.outputQmatrixError_gene_on)
            printQmatrixError_gene(globals, Kindex);
        if (globals.outputQmatrixError_ind_on)
            printQmatrixError_ind(globals, Kindex);
        if (globals.outputQmatrixError_pop_on)
            printQmatrixError_pop(globals, Kindex);
        
        // print evidence to file
        printEvidence(globals, Kindex);
        
        // print evidence details to file
        if (globals.outputEvidenceDetails_on)
            printEvidenceDetails(globals, Kindex);
        
        // print max-like allele frequencies to file
        if (globals.outputMaxLike_alleleFreqs_on)
            printMaxLike_alleleFreqs(globals, Kindex);
        
        // print max-like admixture frequencies to file
        if (globals.outputMaxLike_admixFreqs_on)
            printMaxLike_admixFreqs(globals, Kindex);
        
        // print comparison statistics to file
        if (globals.outputComparisonStatistics_on)
            printComparisonStatistics(globals, Kindex);
        
        // print Evanno's delta K to file
        if (globals.outputEvanno_on && Kindex>0)
            printEvanno(globals, Kindex-1);
        
        //#### Report answers from various estimation methods to console and to log
        
        coutAndLog("Estimates of (log) model evidence...\n\n", globals.outputLog_on, globals.outputLog_fileStream);
        
        // exhaustive
        if (globals.exhaustive_on)
            coutAndLog("Exhaustive\n  exact value: "+process_nan(globals.logEvidence_exhaustive[Kindex])+"\n\n", globals.outputLog_on, globals.outputLog_fileStream);
        
        // harmonic mean
        coutAndLog("Harmonic mean", globals.outputLog_on, globals.outputLog_fileStream);
        if (globals.mainRepeats>1) {
            coutAndLog(" (averaged over "+to_string((long long)globals.mainRepeats)+" runs)\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  estimate: "+process_nan(globals.logEvidence_harmonic_grandMean[Kindex])+"\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  standard error: "+process_nan(globals.logEvidence_harmonic_grandSE[Kindex])+"\n", globals.outputLog_on, globals.outputLog_fileStream);
        } else {
            coutAndLog(" (estimated from single run)\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  estimate: "+process_nan(globals.logEvidence_harmonic_grandMean[Kindex])+"\n", globals.outputLog_on, globals.outputLog_fileStream);
        }
        coutAndLog("\n", globals.outputLog_on, globals.outputLog_fileStream);
        
        // structure estimator
        coutAndLog("Structure estimator", globals.outputLog_on, globals.outputLog_fileStream);
        if (globals.mainRepeats>1) {
            coutAndLog(" (averaged over "+to_string((long long)globals.mainRepeats)+" runs)\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  estimate: "+process_nan(globals.logEvidence_structure_grandMean[Kindex])+"\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  standard error: "+process_nan(globals.logEvidence_structure_grandSE[Kindex])+"\n", globals.outputLog_on, globals.outputLog_fileStream);
        } else {
            coutAndLog(" (estimated from single run)\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  estimate: "+process_nan(globals.logEvidence_structure_grandMean[Kindex])+"\n", globals.outputLog_on, globals.outputLog_fileStream);
        }
        coutAndLog("\n", globals.outputLog_on, globals.outputLog_fileStream);
        
        // thermodynamic integral estimator
        if (globals.thermodynamic_on) {
            coutAndLog("Thermodynamic integral estimator\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  estimate: "+process_nan(globals.logEvidence_TI[Kindex])+"\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  standard error: "+process_nan(globals.logEvidence_TI_SE[Kindex])+"\n\n", globals.outputLog_on, globals.outputLog_fileStream);
        }
        
        // model comparison statistics
        if (globals.outputComparisonStatistics_on) {
            coutAndLog("Model comparison statistics\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  AIC: "+process_nan(globals.AIC[Kindex])+"\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  BIC: "+process_nan(globals.BIC[Kindex])+"\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  DIC_S (Spiegelhalter): "+process_nan(globals.DIC_Spiegelhalter[Kindex])+"\n", globals.outputLog_on, globals.outputLog_fileStream);
            coutAndLog("  DIC_G (Gelman): "+process_nan(globals.DIC_Gelman[Kindex])+"\n\n", globals.outputLog_on, globals.outputLog_fileStream);
        }

		fflush(stdout);
        
    } // end loop through K
    
    // print final value of Evanno's delta K (NA) to file
    if (globals.outputEvanno_on)
        printEvanno(globals, globals.Kmax-globals.Kmin);
    
    // print normalised evidence to file
    if (globals.outputEvidenceNormalised_on)
        printEvidenceNormalised(globals);
    
    // end program
	time(&tend);
    int duration = difftime(tend, tstart);
	ostringstream duration_ss;
	duration_ss << "Program completed in approximately " << duration << " seconds\n";
	string duration_s = duration_ss.str();

	if (duration<0) {
		coutAndLog("Program completed in less than 1 second\n", globals.outputLog_on, globals.outputLog_fileStream);
	} else {
		coutAndLog(duration_s, globals.outputLog_on, globals.outputLog_fileStream);
	}
    coutAndLog("Output written to: "+globals.outputRoot_filePath+string("\n"), globals.outputLog_on, globals.outputLog_fileStream);
    coutAndLog("------------------------------------------\n", globals.outputLog_on, globals.outputLog_fileStream);

    //pauseExit();
    return(0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3988, %rsp           # imm = 0x3988
movq %rsi, (%rsp)
movl %edi, %ebp
xorl %edi, %edi
callq 0x3320
leaq 0x58(%rsp), %r14
movq %rax, (%r14)
movq 0x22897(%rip), %rbx     # 0x33fb8
leaq 0x16008(%rip), %rsi     # 0x27730
movq %rbx, %rdi
callq 0x3350
leaq 0x16025(%rip), %rsi     # 0x2775c
movq %rbx, %rdi
callq 0x3350
leaq 0x1602f(%rip), %rsi     # 0x27775
movq %rbx, %rdi
callq 0x3350
leaq 0x16049(%rip), %rsi     # 0x2779e
movq %rbx, %rdi
callq 0x3350
leaq 0x16060(%rip), %rsi     # 0x277c4
movq %rbx, %rdi
callq 0x3350
movq %rax, %r15
movq %r14, %rdi
callq 0x3120
movq %r15, %rdi
movq %rax, %rsi
callq 0x3350
leaq 0x16045(%rip), %rsi     # 0x277ce
movq %rbx, %rdi
callq 0x3350
leaq 0x50(%rsp), %rdi
callq 0x3320
leaq 0x868(%rsp), %rdi
callq 0xe480
pushq $0x1
popq %r13
leaq 0x848(%rsp), %r15
leaq 0x1e8(%rsp), %r12
leaq 0x828(%rsp), %r14
leaq 0x808(%rsp), %rbx
cmpl %ebp, %r13d
jge 0x11876
movq %r15, %rdi
leaq 0x1601c(%rip), %rsi     # 0x277fb
movq %r12, %rdx
callq 0x3130
movq %r15, %rdi
leaq 0x868(%rsp), %rsi
movl %ebp, %edx
movq (%rsp), %rcx
movl %r13d, %r8d
callq 0x17ac9
movq %r15, %rdi
callq 0x3170
movq %r14, %rdi
leaq 0x15ff5(%rip), %rsi     # 0x27807
movq %r12, %rdx
callq 0x3130
movq %r14, %rdi
leaq 0x888(%rsp), %rsi
movl %ebp, %edx
movq (%rsp), %rcx
movl %r13d, %r8d
callq 0x17ac9
movq %r14, %rdi
callq 0x3170
movq %rbx, %rdi
leaq 0x15fcd(%rip), %rsi     # 0x27812
movq %r12, %rdx
callq 0x3130
movq %rbx, %rdi
leaq 0x8e8(%rsp), %rsi
movl %ebp, %edx
movq (%rsp), %rcx
movl %r13d, %r8d
callq 0x17ac9
movq %rbx, %rdi
callq 0x3170
incl %r13d
jmp 0x117cc
leaq 0x1e8(%rsp), %rdi
leaq 0x868(%rsp), %rsi
leaq 0x888(%rsp), %rdx
callq 0x110f6
leaq 0xb08(%rsp), %rbx
leaq 0x1e8(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x33f0
movq %r14, %rdi
callq 0x3170
leaq 0x1e8(%rsp), %rdi
movq %rbx, %rsi
leaq 0x8e8(%rsp), %rdx
callq 0x110f6
leaq 0xb68(%rsp), %r14
leaq 0x1e8(%rsp), %rbx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x33f0
movq %rbx, %rdi
callq 0x3170
leaq 0x868(%rsp), %rdi
callq 0x17beb
leaq 0x868(%rsp), %rdi
movl %ebp, %esi
movq (%rsp), %rdx
callq 0x19df9
leaq 0x15c4b(%rip), %rsi     # 0x27563
leaq 0x1e8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x3130
leaq 0x33d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0x11150
leaq 0x1c0(%rsp), %rdi
movq %rax, %rsi
callq 0x3430
leaq 0x15c0d(%rip), %rsi     # 0x27563
leaq 0x1a0(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x3130
leaq 0x34a4(%rsp), %rsi
leaq 0x11d8(%rsp), %r8
leaq 0x1c0(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
xorl %ecx, %ecx
callq 0x15adb
leaq 0x1a0(%rsp), %rdi
callq 0x3170
leaq 0x1c0(%rsp), %rdi
callq 0x3170
leaq 0x1e8(%rsp), %rdi
callq 0x3170
cmpb $0x1, 0x34a4(%rsp)
jne 0x11b1e
leaq 0xb88(%rsp), %rsi
leaq 0x180(%rsp), %rdi
callq 0x3430
leaq 0x1e8(%rsp), %rdi
leaq 0x180(%rsp), %rsi
xorl %edx, %edx
leaq 0x11d8(%rsp), %rbx
movq %rbx, %rcx
callq 0x22438
leaq 0x1e8(%rsp), %rsi
movq %rbx, %rdi
callq 0x33d0
leaq 0x1e8(%rsp), %rdi
callq 0x3460
leaq 0x180(%rsp), %rdi
callq 0x3170
leaq 0x15d04(%rip), %rsi     # 0x27730
movq %rbx, %rdi
callq 0x3350
leaq 0x15d21(%rip), %rsi     # 0x2775c
leaq 0x11d8(%rsp), %rdi
callq 0x3350
leaq 0x15d26(%rip), %rsi     # 0x27775
leaq 0x11d8(%rsp), %rdi
callq 0x3350
leaq 0x15d3b(%rip), %rsi     # 0x2779e
leaq 0x11d8(%rsp), %rdi
callq 0x3350
leaq 0x15d4d(%rip), %rsi     # 0x277c4
leaq 0x11d8(%rsp), %rdi
callq 0x3350
movq %rax, %r15
leaq 0x58(%rsp), %rdi
callq 0x3120
movq %r15, %rdi
movq %rax, %rsi
callq 0x3350
leaq 0x15d2b(%rip), %rsi     # 0x277ce
leaq 0x11d8(%rsp), %rdi
callq 0x3350
leaq 0x15d67(%rip), %rsi     # 0x2781e
leaq 0x11d8(%rsp), %rdi
callq 0x3350
movq %rax, %rdi
movq %r14, %rsi
callq 0x3310
leaq 0x15de4(%rip), %rsi     # 0x278ba
movq %rax, %rdi
callq 0x3350
leaq 0x15d4b(%rip), %rsi     # 0x27830
leaq 0x11d8(%rsp), %rdi
callq 0x3350
leaq 0xb48(%rsp), %rsi
movq %rax, %rdi
callq 0x3310
leaq 0x15db2(%rip), %rsi     # 0x278bb
movq %rax, %rdi
callq 0x3350
leaq 0x11d8(%rsp), %rdi
callq 0x3230
leaq 0x15d17(%rip), %rsi     # 0x2783c
leaq 0x160(%rsp), %rdi
leaq 0x1e8(%rsp), %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
leaq 0x160(%rsp), %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1766c
leaq 0x160(%rsp), %rdi
callq 0x3170
leaq 0x868(%rsp), %rdi
xorl %esi, %esi
callq 0x1b470
leaq 0x15ce5(%rip), %rsi     # 0x2785f
leaq 0x140(%rsp), %rdi
leaq 0x1e8(%rsp), %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
leaq 0x140(%rsp), %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1766c
leaq 0x140(%rsp), %rdi
callq 0x3170
leaq 0x868(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x1b470
leaq 0x15cae(%rip), %rsi     # 0x2787e
leaq 0x120(%rsp), %rdi
leaq 0x1e8(%rsp), %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
leaq 0x120(%rsp), %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1766c
leaq 0x120(%rsp), %rdi
callq 0x3170
leaq 0x868(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0x1b470
leaq 0x15c95(%rip), %rsi     # 0x278bb
leaq 0x100(%rsp), %rdi
leaq 0x1e8(%rsp), %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
leaq 0x100(%rsp), %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
leaq 0x100(%rsp), %rdi
callq 0x3170
leaq 0x868(%rsp), %rdi
callq 0x1f300
movq 0x3588(%rsp), %rdi
movq 0x3590(%rsp), %rsi
callq 0xe459
movslq (%rax), %r15
leaq 0x1(%r15), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x4f6c
leaq 0x1e8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
leaq 0x60(%rsp), %rcx
movl $0x2710, %esi           # imm = 0x2710
callq 0x4fbe
leaq 0x22680(%rip), %rdi     # 0x34340
leaq 0x1e8(%rsp), %r14
movq %r14, %rsi
callq 0x5566
movq %r14, %rdi
callq 0x50da
leaq 0x10(%rsp), %rdi
callq 0x51a2
leaq 0x1e8(%rsp), %rdi
leaq 0x10(%rsp), %rdx
movl $0x2710, %esi           # imm = 0x2710
callq 0x4f6c
leaq 0x22658(%rip), %rdi     # 0x34358
leaq 0x1e8(%rsp), %r14
movq %r14, %rsi
callq 0x55b8
movq %r14, %rdi
callq 0x51a2
xorl %r14d, %r14d
testl %r15d, %r15d
cmovlel %r14d, %r15d
cmpq $0x2710, %r14           # imm = 0x2710
je 0x11d93
cvtsi2sd %r14d, %xmm0
movsd %xmm0, (%rsp)
imulq $0x18, %r14, %r12
xorl %r13d, %r13d
cmpq %r13, %r15
je 0x11d72
leaq 0x1(%r13), %rbp
cvtsi2sd %ebp, %xmm0
mulsd 0x34b8(%rsp), %xmm0
addsd (%rsp), %xmm0
callq 0x32d0
movq 0x225dd(%rip), %rax     # 0x34340
movq (%rax,%r12), %rax
movsd %xmm0, (%rax,%r13,8)
movq %rbp, %r13
jmp 0x11d3c
movq 0x225c7(%rip), %rax     # 0x34340
movq (%rax,%r12), %rax
movsd (%rax), %xmm0
movq 0x225d0(%rip), %rax     # 0x34358
movsd %xmm0, (%rax,%r14,8)
incq %r14
jmp 0x11d22
leaq 0x868(%rsp), %rdi
callq 0x210c7
leaq 0x868(%rsp), %rdi
callq 0x22525
leaq 0x868(%rsp), %rdi
callq 0x22fee
xorl %ebx, %ebx
leaq 0x10(%rsp), %r15
leaq 0x1e8(%rsp), %r13
leaq 0x788(%rsp), %rbp
movslq 0x3434(%rsp), %rsi
movslq 0x3430(%rsp), %rax
subq %rax, %rsi
cmpq %rsi, %rbx
jg 0x12b0a
movq %rbp, %r14
movq %r15, %rbp
movl %eax, %r12d
leaq (%rbx,%r12), %rax
movslq %eax, %rsi
movq %r15, %rdi
callq 0x60a6
movq %r13, %r15
movq %r13, %rdi
leaq 0x15a91(%rip), %rsi     # 0x278a3
movq %rbp, %rdx
callq 0x6082
leaq 0x7e8(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rsi
leaq 0x15a7a(%rip), %rdx     # 0x278a9
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %rbp, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
addq %rbx, %r12
decq %r12
movq %rbp, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
leaq 0x10(%rsp), %rdi
callq 0x3170
testl %r12d, %r12d
movq %r14, %rbp
leaq 0x768(%rsp), %r15
je 0x11e8a
cmpb $0x0, 0x3470(%rsp)
je 0x11f2d
leaq 0x7c8(%rsp), %r12
movq %r12, %rdi
leaq 0x15a21(%rip), %rsi     # 0x278bd
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %rbx, %r14
movq %r12, %rdi
callq 0x3170
cmpb $0x0, 0x3438(%rsp)
je 0x11ee3
leaq 0x868(%rsp), %rdi
movl %r14d, %esi
callq 0xd9c8
jmp 0x11ef3
leaq 0x868(%rsp), %rdi
movl %r14d, %esi
callq 0xd284
leaq 0x7a8(%rsp), %r12
movq %r12, %rdi
leaq 0x159d8(%rip), %rsi     # 0x278dd
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r12, %rdi
callq 0x3170
movq %rbp, %rdi
leaq 0x159b3(%rip), %rsi     # 0x278ea
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %rbp, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %rbp, %rdi
callq 0x3170
cmpb $0x0, 0x3438(%rsp)
je 0x11f7a
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x1403a
jmp 0x11f89
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x13798
movq %r15, %rdi
leaq 0x1594a(%rip), %rsi     # 0x278dd
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r15, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r15, %rdi
callq 0x3170
cmpb $0x1, 0x3484(%rsp)
jne 0x12067
leaq 0x748(%rsp), %r14
movq %r14, %rdi
leaq 0x15929(%rip), %rsi     # 0x27904
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
cmpb $0x0, 0x3438(%rsp)
je 0x1201e
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0xcaf7
jmp 0x1202d
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0xc6c0
leaq 0x728(%rsp), %r14
movq %r14, %rdi
leaq 0x1589e(%rip), %rsi     # 0x278dd
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
cmpb $0x1, 0x3498(%rsp)
jne 0x12113
leaq 0x708(%rsp), %r14
movq %r14, %rdi
leaq 0x158a8(%rip), %rsi     # 0x2792f
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
cmpb $0x0, 0x3438(%rsp)
je 0x120ca
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x42c4
jmp 0x120d9
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x398c
leaq 0x6e8(%rsp), %r14
movq %r14, %rdi
leaq 0x157f2(%rip), %rsi     # 0x278dd
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
cmpb $0x1, 0x34a8(%rsp)
jne 0x1212c
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x24853
cmpb $0x1, 0x34a6(%rsp)
jne 0x12145
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x25213
cmpb $0x1, 0x34a7(%rsp)
jne 0x1215e
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x25e94
cmpb $0x1, 0x34ab(%rsp)
jne 0x12177
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x24d33
cmpb $0x1, 0x34a9(%rsp)
jne 0x12190
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x25a91
cmpb $0x1, 0x34aa(%rsp)
jne 0x121a9
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x265c1
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x23866
cmpb $0x1, 0x34af(%rsp)
jne 0x121d1
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x23b55
cmpb $0x1, 0x34b3(%rsp)
jne 0x121ea
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x24341
cmpb $0x1, 0x34b4(%rsp)
jne 0x12203
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x244f0
cmpb $0x1, 0x34b1(%rsp)
jne 0x1221c
leaq 0x868(%rsp), %rdi
movl %ebx, %esi
callq 0x24620
testq %rbx, %rbx
je 0x1223b
cmpb $0x0, 0x34b2(%rsp)
je 0x1223b
leal -0x1(%rbx), %esi
leaq 0x868(%rsp), %rdi
callq 0x247c2
leaq 0x6c8(%rsp), %r14
movq %r14, %rdi
leaq 0x156fb(%rip), %rsi     # 0x27948
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
cmpb $0x1, 0x3470(%rsp)
leaq 0x10(%rsp), %r15
leaq 0x6a8(%rsp), %r14
jne 0x122f5
movq 0x3668(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x156c4(%rip), %rsi     # 0x2796f
movq %r15, %rdx
callq 0x6082
movq %r14, %rdi
movq %r13, %rsi
leaq 0x155fa(%rip), %rdx     # 0x278ba
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
leaq 0x688(%rsp), %r14
movq %r14, %rdi
leaq 0x15683(%rip), %rsi     # 0x2798a
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movslq 0x3474(%rsp), %rsi
cmpq $0x2, %rsi
jl 0x12474
movq %r15, %rdi
callq 0x60a6
leaq 0x668(%rsp), %r14
movq %r13, %rdi
leaq 0x1563d(%rip), %rsi     # 0x27998
movq %r15, %rdx
callq 0x6082
movq %r14, %rdi
movq %r13, %rsi
leaq 0x15639(%rip), %rdx     # 0x279a9
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
movq 0x3698(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x155ed(%rip), %rsi     # 0x279b1
movq %r15, %rdx
callq 0x6082
leaq 0x648(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x154da(%rip), %rdx     # 0x278bb
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
movq 0x36b0(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x15589(%rip), %rsi     # 0x279be
movq %r15, %rdx
callq 0x6082
leaq 0x628(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x15469(%rip), %rdx     # 0x278bb
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
jmp 0x12507
leaq 0x608(%rsp), %r14
movq %r14, %rdi
leaq 0x1554b(%rip), %rsi     # 0x279d1
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq 0x3698(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x154e4(%rip), %rsi     # 0x279b1
movq %r15, %rdx
callq 0x6082
leaq 0x5e8(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x153d1(%rip), %rdx     # 0x278bb
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
leaq 0x5c8(%rsp), %r14
movq %r14, %rdi
leaq 0x1538a(%rip), %rsi     # 0x278bb
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
leaq 0x5a8(%rsp), %r14
movq %r14, %rdi
leaq 0x15484(%rip), %rsi     # 0x279ef
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movslq 0x3474(%rsp), %rsi
cmpq $0x2, %rsi
jl 0x126d8
movq %r15, %rdi
callq 0x60a6
leaq 0x588(%rsp), %r14
movq %r13, %rdi
leaq 0x153d9(%rip), %rsi     # 0x27998
movq %r15, %rdx
callq 0x6082
movq %r14, %rdi
movq %r13, %rsi
leaq 0x153d5(%rip), %rdx     # 0x279a9
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
movq 0x3710(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x15389(%rip), %rsi     # 0x279b1
movq %r15, %rdx
callq 0x6082
leaq 0x568(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x15276(%rip), %rdx     # 0x278bb
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
movq 0x3728(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x15325(%rip), %rsi     # 0x279be
movq %r15, %rdx
callq 0x6082
leaq 0x548(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x15205(%rip), %rdx     # 0x278bb
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
jmp 0x1276b
leaq 0x528(%rsp), %r14
movq %r14, %rdi
leaq 0x152e7(%rip), %rsi     # 0x279d1
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq 0x3710(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x15280(%rip), %rsi     # 0x279b1
movq %r15, %rdx
callq 0x6082
leaq 0x508(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x1516d(%rip), %rdx     # 0x278bb
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
leaq 0x4e8(%rsp), %r14
movq %r14, %rdi
leaq 0x15126(%rip), %rsi     # 0x278bb
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
cmpb $0x1, 0x3484(%rsp)
leaq 0x4c8(%rsp), %r14
jne 0x128e7
movq %r14, %rdi
leaq 0x15226(%rip), %rsi     # 0x27a03
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq 0x3788(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x1518d(%rip), %rsi     # 0x279b1
movq %r15, %rdx
callq 0x6082
leaq 0x4a8(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x1507a(%rip), %rdx     # 0x278bb
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
movq 0x37a0(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x15129(%rip), %rsi     # 0x279be
movq %r15, %rdx
callq 0x6082
leaq 0x488(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x15008(%rip), %rdx     # 0x278ba
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
cmpb $0x1, 0x34b1(%rsp)
jne 0x12af3
leaq 0x468(%rsp), %r14
movq %r14, %rdi
leaq 0x1511e(%rip), %rsi     # 0x27a25
movq %r13, %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq 0x38e0(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x150f4(%rip), %rsi     # 0x27a42
movq %r15, %rdx
callq 0x6082
leaq 0x448(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x14f50(%rip), %rdx     # 0x278bb
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
movq 0x38f8(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x1508b(%rip), %rsi     # 0x27a4a
movq %r15, %rdx
callq 0x6082
leaq 0x428(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x14edf(%rip), %rdx     # 0x278bb
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
movq 0x3910(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x15022(%rip), %rsi     # 0x27a52
movq %r15, %rdx
callq 0x6082
leaq 0x408(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x14e6e(%rip), %rdx     # 0x278bb
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
movq 0x3928(%rsp), %rax
movsd (%rax,%rbx,8), %xmm0
movq %r15, %rdi
callq 0x161b8
movq %r13, %rdi
leaq 0x14fcb(%rip), %rsi     # 0x27a6c
movq %r15, %rdx
callq 0x6082
leaq 0x3e8(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x14dfc(%rip), %rdx     # 0x278ba
callq 0xcf2e
movzbl 0x34a4(%rsp), %esi
movq %r14, %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1768c
movq %r14, %rdi
callq 0x3170
movq %r13, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
movq 0x2149e(%rip), %rax     # 0x33f98
movq (%rax), %rdi
callq 0x33b0
incq %rbx
jmp 0x11dd1
cmpb $0x0, 0x34b2(%rsp)
je 0x12b21
leaq 0x868(%rsp), %rdi
callq 0x247c2
cmpb $0x1, 0x34ae(%rsp)
jne 0x12b38
leaq 0x868(%rsp), %rdi
callq 0x23d35
leaq 0x1e0(%rsp), %r14
movq %r14, %rdi
callq 0x3320
movq (%r14), %rdi
movq 0x50(%rsp), %rsi
callq 0x31b0
movsd %xmm0, (%rsp)
leaq 0x1e8(%rsp), %rdi
callq 0x3420
leaq 0x14f11(%rip), %rsi     # 0x27a7f
leaq 0x1e8(%rsp), %rdi
callq 0x3350
leaq 0x11d8(%rsp), %rbx
cvttsd2si (%rsp), %ebp
movq %rax, %rdi
movl %ebp, %esi
callq 0x3570
leaq 0x14f0a(%rip), %rsi     # 0x27aa3
movq %rax, %rdi
callq 0x3350
leaq 0x1f0(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x34b0
testl %ebp, %ebp
js 0x12beb
leaq 0xc0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x3430
movzbl 0x34a4(%rsp), %esi
leaq 0xc0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1768c
leaq 0xc0(%rsp), %rdi
jmp 0x12c24
leaq 0x14ebb(%rip), %rsi     # 0x27aad
leaq 0xe0(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
leaq 0xe0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1768c
leaq 0xe0(%rsp), %rdi
callq 0x3170
leaq 0xb28(%rsp), %rdx
leaq 0x14e9e(%rip), %rsi     # 0x27ad6
leaq 0x30(%rsp), %rdi
callq 0xcf4d
leaq 0x14c72(%rip), %rsi     # 0x278bb
leaq 0x60(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x3130
leaq 0xa0(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x601b
movzbl 0x34a4(%rsp), %esi
leaq 0xa0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1768c
leaq 0xa0(%rsp), %rdi
callq 0x3170
leaq 0x60(%rsp), %rdi
callq 0x3170
leaq 0x30(%rsp), %rdi
callq 0x3170
leaq 0x14a81(%rip), %rsi     # 0x27730
leaq 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x3130
movzbl 0x34a4(%rsp), %esi
leaq 0x80(%rsp), %rdi
movq %rbx, %rdx
callq 0x1768c
leaq 0x80(%rsp), %rdi
callq 0x3170
leaq 0x10(%rsp), %rdi
callq 0x3170
leaq 0x1e8(%rsp), %rdi
callq 0x30c0
leaq 0x868(%rsp), %rdi
callq 0x13230
xorl %eax, %eax
addq $0x3988, %rsp           # imm = 0x3988
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
jmp 0x12d9b
jmp 0x12da2
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
callq 0x3460
jmp 0x12d42
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
jmp 0x12d9b
jmp 0x12da2
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
jmp 0x12d9b
jmp 0x12da2
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0x3170
jmp 0x12d87
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x3170
jmp 0x12d96
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x3170
jmp 0x12da5
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x3170
jmp 0x12e79
jmp 0x12e76
jmp 0x13212
jmp 0x13212
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x51a2
jmp 0x13215
jmp 0x13212
jmp 0x13212
movq %rax, %rbx
leaq 0x100(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0x140(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0x160(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
callq 0x3170
jmp 0x12e48
movq %rax, %rbx
leaq 0x1c0(%rsp), %rdi
callq 0x3170
jmp 0x12e69
jmp 0x13212
jmp 0x13212
jmp 0x13212
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
jmp 0x131cf
movq %rax, %rbx
leaq 0x1e8(%rsp), %rdi
callq 0x30c0
jmp 0x13215
jmp 0x13212
jmp 0x13212
jmp 0x13212
jmp 0x13212
movq %rax, %rbx
leaq 0x648(%rsp), %rdi
jmp 0x131b8
jmp 0x131a8
jmp 0x131a8
jmp 0x13196
jmp 0x13212
jmp 0x13212
movq %rax, %rbx
leaq 0x628(%rsp), %rdi
jmp 0x131b8
movq %rax, %rbx
leaq 0x4c8(%rsp), %rdi
jmp 0x131cf
jmp 0x131a8
jmp 0x131a8
jmp 0x13196
jmp 0x13212
jmp 0x13212
movq %rax, %rbx
leaq 0x4a8(%rsp), %rdi
jmp 0x131b8
jmp 0x131a8
jmp 0x131a8
jmp 0x13196
jmp 0x13212
jmp 0x13212
movq %rax, %rbx
leaq 0x488(%rsp), %rdi
jmp 0x131b8
jmp 0x131a8
jmp 0x131a8
movq %rax, %rbx
leaq 0x528(%rsp), %rdi
jmp 0x131cf
movq %rax, %rbx
leaq 0x468(%rsp), %rdi
jmp 0x131cf
jmp 0x131a8
jmp 0x13196
jmp 0x13196
jmp 0x13212
movq %rax, %rbx
leaq 0x448(%rsp), %rdi
jmp 0x131b8
movq %rax, %rbx
leaq 0x508(%rsp), %rdi
jmp 0x131b8
jmp 0x131a8
jmp 0x13212
jmp 0x13196
jmp 0x13196
jmp 0x13212
movq %rax, %rbx
leaq 0x428(%rsp), %rdi
jmp 0x131b8
movq %rax, %rbx
leaq 0x588(%rsp), %rdi
jmp 0x131b8
jmp 0x131a8
movq %rax, %rbx
leaq 0x5e8(%rsp), %rdi
jmp 0x131b8
jmp 0x13196
jmp 0x13196
jmp 0x13212
movq %rax, %rbx
leaq 0x408(%rsp), %rdi
jmp 0x131b8
movq %rax, %rbx
leaq 0x568(%rsp), %rdi
jmp 0x131b8
jmp 0x131a8
jmp 0x13196
jmp 0x13196
jmp 0x13212
jmp 0x13212
jmp 0x13196
movq %rax, %rbx
leaq 0x3e8(%rsp), %rdi
jmp 0x131b8
movq %rax, %rbx
leaq 0x548(%rsp), %rdi
jmp 0x131b8
jmp 0x13212
movq %rax, %rbx
leaq 0x7c8(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0x7a8(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
jmp 0x13212
jmp 0x131a8
jmp 0x13212
jmp 0x131a8
jmp 0x13196
movq %rax, %rbx
leaq 0x748(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0x6a8(%rsp), %rdi
jmp 0x131b8
movq %rax, %rbx
leaq 0x728(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0x708(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0x6e8(%rsp), %rdi
jmp 0x131cf
movq %rax, %rbx
leaq 0x608(%rsp), %rdi
jmp 0x131cf
jmp 0x13196
jmp 0x13196
jmp 0x13212
jmp 0x13212
movq %rax, %rbx
leaq 0x668(%rsp), %rdi
jmp 0x131b8
jmp 0x131a8
jmp 0x13212
jmp 0x13212
movq %rax, %rbx
leaq 0x4e8(%rsp), %rdi
jmp 0x131cf
movq %rax, %rbx
leaq 0x5c8(%rsp), %rdi
jmp 0x131cf
movq %rax, %rbx
leaq 0x6c8(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0x5a8(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0x688(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
jmp 0x13212
jmp 0x13212
jmp 0x13212
movq %rax, %rbx
jmp 0x131ca
movq %rax, %rbx
leaq 0x768(%rsp), %rdi
jmp 0x131cf
movq %rax, %rbx
jmp 0x131bd
movq %rax, %rbx
leaq 0x7e8(%rsp), %rdi
callq 0x3170
leaq 0x1e8(%rsp), %rdi
callq 0x3170
leaq 0x10(%rsp), %rdi
callq 0x3170
jmp 0x13215
jmp 0x13212
movq %rax, %rbx
leaq 0x788(%rsp), %rdi
jmp 0x131cf
movq %rax, %rbx
leaq 0x808(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
movq %rax, %rbx
leaq 0x828(%rsp), %rdi
jmp 0x131cf
jmp 0x13212
jmp 0x13212
movq %rax, %rbx
leaq 0x848(%rsp), %rdi
jmp 0x131cf
movq %rax, %rbx
leaq 0x868(%rsp), %rdi
callq 0x13230
movq %rbx, %rdi
callq 0x35a0