// File: 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:
subq $0x4298, %rsp           # imm = 0x4298
movl $0x0, 0x4294(%rsp)
movl %edi, 0x4290(%rsp)
movq %rsi, 0x4288(%rsp)
xorl %eax, %eax
movl %eax, %edi
callq 0x43f0
movq %rax, 0x4280(%rsp)
movq 0x403bf(%rip), %rdi     # 0x6cfb8
leaq 0x2fb07(%rip), %rsi     # 0x5c707
callq 0x4430
movq 0x403ac(%rip), %rdi     # 0x6cfb8
leaq 0x2fb20(%rip), %rsi     # 0x5c733
callq 0x4430
movq 0x40399(%rip), %rdi     # 0x6cfb8
leaq 0x2fb26(%rip), %rsi     # 0x5c74c
callq 0x4430
movq 0x40386(%rip), %rdi     # 0x6cfb8
leaq 0x2fb3c(%rip), %rsi     # 0x5c775
callq 0x4430
movq 0x40373(%rip), %rdi     # 0x6cfb8
leaq 0x2fb4f(%rip), %rsi     # 0x5c79b
callq 0x4430
movq %rax, 0x1a8(%rsp)
leaq 0x4280(%rsp), %rdi
callq 0x4160
movq 0x1a8(%rsp), %rdi
movq %rax, %rsi
callq 0x4430
movq 0x4033b(%rip), %rdi     # 0x6cfb8
leaq 0x2fb21(%rip), %rsi     # 0x5c7a5
callq 0x4430
leaq 0x4278(%rsp), %rdi
callq 0x43f0
leaq 0x1150(%rsp), %rdi
callq 0x25ab0
movl $0x1, 0x114c(%rsp)
movl 0x114c(%rsp), %eax
cmpl 0x4290(%rsp), %eax
jge 0x2cf24
leaq 0x1127(%rsp), %rdi
movq %rdi, 0x1a0(%rsp)
callq 0x4740
movq 0x1a0(%rsp), %rdx
leaq 0x2faec(%rip), %rsi     # 0x5c7d2
leaq 0x1128(%rsp), %rdi
callq 0x4580
jmp 0x2ccf5
movl 0x4290(%rsp), %edx
movq 0x4288(%rsp), %rcx
movl 0x114c(%rsp), %r8d
leaq 0x1128(%rsp), %rdi
leaq 0x1150(%rsp), %rsi
callq 0x3a870
jmp 0x2cd23
leaq 0x1128(%rsp), %rdi
callq 0x4270
leaq 0x1127(%rsp), %rdi
callq 0x4490
leaq 0x10ef(%rsp), %rdi
movq %rdi, 0x198(%rsp)
callq 0x4740
movq 0x198(%rsp), %rdx
leaq 0x2fa7d(%rip), %rsi     # 0x5c7de
leaq 0x10f0(%rsp), %rdi
callq 0x4580
jmp 0x2cd70
leaq 0x1170(%rsp), %rsi
movl 0x4290(%rsp), %edx
movq 0x4288(%rsp), %rcx
movl 0x114c(%rsp), %r8d
leaq 0x10f0(%rsp), %rdi
callq 0x3a870
jmp 0x2cd9e
leaq 0x10f0(%rsp), %rdi
callq 0x4270
leaq 0x10ef(%rsp), %rdi
callq 0x4490
leaq 0x10c7(%rsp), %rdi
movq %rdi, 0x190(%rsp)
callq 0x4740
movq 0x190(%rsp), %rdx
leaq 0x2fa0d(%rip), %rsi     # 0x5c7e9
leaq 0x10c8(%rsp), %rdi
callq 0x4580
jmp 0x2cdeb
leaq 0x11d0(%rsp), %rsi
movl 0x4290(%rsp), %edx
movq 0x4288(%rsp), %rcx
movl 0x114c(%rsp), %r8d
leaq 0x10c8(%rsp), %rdi
callq 0x3a870
jmp 0x2ce19
leaq 0x10c8(%rsp), %rdi
callq 0x4270
leaq 0x10c7(%rsp), %rdi
callq 0x4490
movl 0x114c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x114c(%rsp)
jmp 0x2ccae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2ce80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x1128(%rsp), %rdi
callq 0x4270
leaq 0x1127(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2cec9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x10f0(%rsp), %rdi
callq 0x4270
leaq 0x10ef(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2cf12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x10c8(%rsp), %rdi
callq 0x4270
leaq 0x10c7(%rsp), %rdi
callq 0x4490
jmp 0x30011
leaq 0x1170(%rsp), %rdx
leaq 0x10a0(%rsp), %rdi
leaq 0x1150(%rsp), %rsi
callq 0x2af90
jmp 0x2cf43
leaq 0x13f0(%rsp), %rdi
movq %rdi, 0x188(%rsp)
leaq 0x10a0(%rsp), %rsi
movq %rsi, 0x180(%rsp)
callq 0x4500
movq 0x180(%rsp), %rdi
callq 0x4270
movq 0x188(%rsp), %rsi
leaq 0x11d0(%rsp), %rdx
leaq 0x1080(%rsp), %rdi
callq 0x2af90
jmp 0x2cf94
leaq 0x1450(%rsp), %rdi
leaq 0x1080(%rsp), %rsi
movq %rsi, 0x178(%rsp)
callq 0x4500
movq 0x178(%rsp), %rdi
callq 0x4270
leaq 0x1150(%rsp), %rdi
callq 0x3aab0
jmp 0x2cfcd
movl 0x4290(%rsp), %esi
movq 0x4288(%rsp), %rdx
leaq 0x1150(%rsp), %rdi
callq 0x40330
jmp 0x2cfeb
leaq 0x3cc0(%rsp), %rax
movq %rax, 0x168(%rsp)
leaq 0x103f(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0x4740
movq 0x170(%rsp), %rdx
leaq 0x2f52c(%rip), %rsi     # 0x5c54b
leaq 0x1040(%rsp), %rdi
callq 0x4580
jmp 0x2d02e
movq 0x168(%rsp), %rdi
leaq 0x1040(%rsp), %rsi
callq 0x2b0b0
movq %rax, 0x160(%rsp)
jmp 0x2d04d
movq 0x160(%rsp), %rsi
leaq 0x1060(%rsp), %rdi
callq 0x4180
jmp 0x2d064
leaq 0x3d8c(%rsp), %rax
movq %rax, 0x150(%rsp)
leaq 0x1017(%rsp), %rdi
movq %rdi, 0x158(%rsp)
callq 0x4740
movq 0x158(%rsp), %rdx
leaq 0x2f4b3(%rip), %rsi     # 0x5c54b
leaq 0x1018(%rsp), %rdi
callq 0x4580
jmp 0x2d0a7
movq 0x150(%rsp), %rsi
leaq 0x1ac0(%rsp), %r8
leaq 0x1060(%rsp), %rdi
leaq 0x1018(%rsp), %rdx
xorl %ecx, %ecx
callq 0x35490
jmp 0x2d0d0
leaq 0x1018(%rsp), %rdi
callq 0x4270
leaq 0x1017(%rsp), %rdi
callq 0x4490
leaq 0x1060(%rsp), %rdi
callq 0x4270
leaq 0x1040(%rsp), %rdi
callq 0x4270
leaq 0x103f(%rsp), %rdi
callq 0x4490
testb $0x1, 0x3d8c(%rsp)
je 0x2d3eb
leaq 0x1470(%rsp), %rsi
leaq 0xdf0(%rsp), %rdi
callq 0x4180
jmp 0x2d136
leaq 0x1ac0(%rsp), %rcx
leaq 0xe10(%rsp), %rdi
leaq 0xdf0(%rsp), %rsi
xorl %edx, %edx
callq 0x52e90
jmp 0x2d157
leaq 0x1ac0(%rsp), %rdi
leaq 0xe10(%rsp), %rsi
callq 0x44e0
jmp 0x2d16e
leaq 0xe10(%rsp), %rdi
callq 0x45d0
leaq 0xdf0(%rsp), %rdi
callq 0x4270
leaq 0x1ac0(%rsp), %rdi
leaq 0x2f570(%rip), %rsi     # 0x5c707
callq 0x4430
jmp 0x2d19e
leaq 0x1ac0(%rsp), %rdi
leaq 0x2f586(%rip), %rsi     # 0x5c733
callq 0x4430
jmp 0x2d1b4
leaq 0x1ac0(%rsp), %rdi
leaq 0x2f589(%rip), %rsi     # 0x5c74c
callq 0x4430
jmp 0x2d1ca
leaq 0x1ac0(%rsp), %rdi
leaq 0x2f59c(%rip), %rsi     # 0x5c775
callq 0x4430
jmp 0x2d1e0
leaq 0x1ac0(%rsp), %rdi
leaq 0x2f5ac(%rip), %rsi     # 0x5c79b
callq 0x4430
movq %rax, 0x148(%rsp)
jmp 0x2d1fe
leaq 0x4280(%rsp), %rdi
callq 0x4160
movq 0x148(%rsp), %rdi
movq %rax, %rsi
callq 0x4430
jmp 0x2d21d
leaq 0x1ac0(%rsp), %rdi
leaq 0x2f579(%rip), %rsi     # 0x5c7a5
callq 0x4430
jmp 0x2d233
leaq 0x1ac0(%rsp), %rdi
leaq 0x2f5b3(%rip), %rsi     # 0x5c7f5
callq 0x4430
movq %rax, 0x140(%rsp)
jmp 0x2d251
movq 0x140(%rsp), %rdi
leaq 0x1450(%rsp), %rsi
callq 0x43e0
movq %rax, 0x138(%rsp)
jmp 0x2d270
movq 0x138(%rsp), %rdi
leaq 0x2f612(%rip), %rsi     # 0x5c891
callq 0x4430
jmp 0x2d286
leaq 0x1ac0(%rsp), %rdi
leaq 0x2f572(%rip), %rsi     # 0x5c807
callq 0x4430
movq %rax, 0x130(%rsp)
jmp 0x2d2a4
movq 0x130(%rsp), %rdi
leaq 0x1430(%rsp), %rsi
callq 0x43e0
movq %rax, 0x128(%rsp)
jmp 0x2d2c3
movq 0x128(%rsp), %rdi
leaq 0x2f5c0(%rip), %rsi     # 0x5c892
callq 0x4430
jmp 0x2d2d9
leaq 0x1ac0(%rsp), %rdi
callq 0x42b0
jmp 0x2d2e8
jmp 0x2d3eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2d390
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2d383
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2d369
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x1018(%rsp), %rdi
callq 0x4270
leaq 0x1017(%rsp), %rdi
callq 0x4490
leaq 0x1060(%rsp), %rdi
callq 0x4270
leaq 0x1040(%rsp), %rdi
callq 0x4270
leaq 0x103f(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2d3d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xe10(%rsp), %rdi
callq 0x45d0
leaq 0xdf0(%rsp), %rdi
callq 0x4270
jmp 0x30011
leaq 0xdcf(%rsp), %rdi
movq %rdi, 0x120(%rsp)
callq 0x4740
movq 0x120(%rsp), %rdx
leaq 0x2f404(%rip), %rsi     # 0x5c813
leaq 0xdd0(%rsp), %rdi
callq 0x4580
jmp 0x2d41e
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xdd0(%rsp), %rdi
callq 0x3a110
jmp 0x2d440
leaq 0xdd0(%rsp), %rdi
callq 0x4270
leaq 0xdcf(%rsp), %rdi
callq 0x4490
leaq 0x1150(%rsp), %rdi
xorl %esi, %esi
callq 0x43930
jmp 0x2d46b
leaq 0xda7(%rsp), %rdi
movq %rdi, 0x118(%rsp)
callq 0x4740
movq 0x118(%rsp), %rdx
leaq 0x2f3a7(%rip), %rsi     # 0x5c836
leaq 0xda8(%rsp), %rdi
callq 0x4580
jmp 0x2d49e
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xda8(%rsp), %rdi
callq 0x3a110
jmp 0x2d4c0
leaq 0xda8(%rsp), %rdi
callq 0x4270
leaq 0xda7(%rsp), %rdi
callq 0x4490
leaq 0x1150(%rsp), %rdi
movl $0x1, %esi
callq 0x43930
jmp 0x2d4ee
leaq 0xd7f(%rsp), %rdi
movq %rdi, 0x110(%rsp)
callq 0x4740
movq 0x110(%rsp), %rdx
leaq 0x2f343(%rip), %rsi     # 0x5c855
leaq 0xd80(%rsp), %rdi
callq 0x4580
jmp 0x2d521
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xd80(%rsp), %rdi
callq 0x3a110
jmp 0x2d543
leaq 0xd80(%rsp), %rdi
callq 0x4270
leaq 0xd7f(%rsp), %rdi
callq 0x4490
leaq 0x1150(%rsp), %rdi
movl $0x2, %esi
callq 0x43930
jmp 0x2d571
leaq 0xd57(%rsp), %rdi
movq %rdi, 0x108(%rsp)
callq 0x4740
movq 0x108(%rsp), %rdx
leaq 0x2f2fd(%rip), %rsi     # 0x5c892
leaq 0xd58(%rsp), %rdi
callq 0x4580
jmp 0x2d5a4
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xd58(%rsp), %rdi
callq 0x3a160
jmp 0x2d5c6
leaq 0xd58(%rsp), %rdi
callq 0x4270
leaq 0xd57(%rsp), %rdi
callq 0x4490
leaq 0x1150(%rsp), %rdi
callq 0x4b290
jmp 0x2d5ef
leaq 0x3e70(%rsp), %rdi
callq 0x258c0
movq %rax, 0x100(%rsp)
jmp 0x2d606
movq 0x100(%rsp), %rax
movq %rax, 0xd40(%rsp)
leaq 0x3e70(%rsp), %rdi
callq 0x258f0
movq %rax, 0xf8(%rsp)
jmp 0x2d62d
movq 0xf8(%rsp), %rax
movq %rax, 0xd38(%rsp)
movq 0xd40(%rsp), %rdi
movq 0xd38(%rsp), %rsi
callq 0x25870
movq %rax, 0xf0(%rsp)
jmp 0x2d65c
movq 0xf0(%rsp), %rax
movq %rax, 0xd48(%rsp)
leaq 0xd48(%rsp), %rdi
callq 0x25920
movl (%rax), %eax
movl %eax, 0xd50(%rsp)
movl 0xd50(%rsp), %eax
incl %eax
cltq
movq %rax, 0xe0(%rsp)
leaq 0xd07(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0x8780
movq 0xe0(%rsp), %rsi
movq 0xe8(%rsp), %rdx
leaq 0xd08(%rsp), %rdi
callq 0x8790
jmp 0x2d6c9
leaq 0xd06(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0x8810
movq 0xd8(%rsp), %rcx
leaq 0xd20(%rsp), %rdi
movl $0x2710, %esi           # imm = 0x2710
leaq 0xd08(%rsp), %rdx
callq 0x8820
jmp 0x2d702
leaq 0x3fd17(%rip), %rdi     # 0x6d420
leaq 0xd20(%rsp), %rsi
movq %rsi, 0xc8(%rsp)
callq 0x8b00
movq 0xc8(%rsp), %rdi
callq 0x8b40
leaq 0xd06(%rsp), %rdi
callq 0x88a0
leaq 0xd08(%rsp), %rdi
callq 0x88b0
leaq 0xd07(%rsp), %rdi
callq 0x8910
leaq 0xce7(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0x8780
movq 0xd0(%rsp), %rdx
leaq 0xce8(%rsp), %rdi
movl $0x2710, %esi           # imm = 0x2710
callq 0x8790
jmp 0x2d783
leaq 0x3fcae(%rip), %rdi     # 0x6d438
leaq 0xce8(%rsp), %rsi
callq 0x8be0
leaq 0xce8(%rsp), %rdi
callq 0x88b0
leaq 0xce7(%rsp), %rdi
callq 0x8910
movl $0x0, 0xce0(%rsp)
cmpl $0x2710, 0xce0(%rsp) # imm = 0x2710
jge 0x2da6d
movl $0x0, 0xcdc(%rsp)
movl 0xcdc(%rsp), %eax
cmpl 0xd50(%rsp), %eax
jge 0x2da09
cvtsi2sdl 0xce0(%rsp), %xmm1
movl 0xcdc(%rsp), %eax
addl $0x1, %eax
cvtsi2sd %eax, %xmm0
movsd 0x3da0(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x4390
movsd %xmm0, 0xc0(%rsp)
movslq 0xce0(%rsp), %rsi
leaq 0x3fbef(%rip), %rdi     # 0x6d420
callq 0x8bc0
movq %rax, %rdi
movslq 0xcdc(%rsp), %rsi
callq 0x8c20
movsd 0xc0(%rsp), %xmm0
movsd %xmm0, (%rax)
movl 0xcdc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xcdc(%rsp)
jmp 0x2d7d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2d8a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xdd0(%rsp), %rdi
callq 0x4270
leaq 0xdcf(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2d8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xda8(%rsp), %rdi
callq 0x4270
leaq 0xda7(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2d932
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xd80(%rsp), %rdi
callq 0x4270
leaq 0xd7f(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2d97b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xd58(%rsp), %rdi
callq 0x4270
leaq 0xd57(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2d9d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xd06(%rsp), %rdi
callq 0x88a0
leaq 0xd08(%rsp), %rdi
callq 0x88b0
leaq 0xd07(%rsp), %rdi
callq 0x8910
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xce7(%rsp), %rdi
callq 0x8910
jmp 0x30011
movslq 0xce0(%rsp), %rsi
leaq 0x3fa08(%rip), %rdi     # 0x6d420
callq 0x8bc0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x8c20
movsd (%rax), %xmm0
movsd %xmm0, 0xb8(%rsp)
movslq 0xce0(%rsp), %rsi
leaq 0x3f9f3(%rip), %rdi     # 0x6d438
callq 0x8c20
movsd 0xb8(%rsp), %xmm0
movsd %xmm0, (%rax)
movl 0xce0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xce0(%rsp)
jmp 0x2d7bc
leaq 0x1150(%rsp), %rdi
callq 0x4ebc0
jmp 0x2da7c
leaq 0x1150(%rsp), %rdi
callq 0x53070
jmp 0x2da8b
leaq 0x1150(%rsp), %rdi
callq 0x54fc0
jmp 0x2da9a
movl $0x0, 0xcd8(%rsp)
movl 0xcd8(%rsp), %eax
movl 0x3d1c(%rsp), %ecx
subl 0x3d18(%rsp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jge 0x2fb8f
movl 0x3d18(%rsp), %eax
movl 0xcd8(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0xcd4(%rsp)
movslq 0xcd4(%rsp), %rsi
leaq 0xc70(%rsp), %rdi
callq 0xcb30
jmp 0x2daf3
leaq 0x2ed80(%rip), %rsi     # 0x5c87a
leaq 0xc90(%rsp), %rdi
leaq 0xc70(%rsp), %rdx
callq 0xcae0
jmp 0x2db11
leaq 0x2ed68(%rip), %rdx     # 0x5c880
leaq 0xcb0(%rsp), %rdi
leaq 0xc90(%rsp), %rsi
callq 0x22900
jmp 0x2db2f
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xcb0(%rsp), %rdi
callq 0x3a160
jmp 0x2db51
leaq 0xcb0(%rsp), %rdi
callq 0x4270
leaq 0xc90(%rsp), %rdi
callq 0x4270
leaq 0xc70(%rsp), %rdi
callq 0x4270
testb $0x1, 0x3d58(%rsp)
jne 0x2db90
cmpl $0x1, 0xcd4(%rsp)
jne 0x2ddaf
leaq 0xc4f(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x4740
movq 0xb0(%rsp), %rdx
leaq 0x2ece0(%rip), %rsi     # 0x5c894
leaq 0xc50(%rsp), %rdi
callq 0x4580
jmp 0x2dbc3
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xc50(%rsp), %rdi
callq 0x3a160
jmp 0x2dbe5
leaq 0xc50(%rsp), %rdi
callq 0x4270
leaq 0xc4f(%rsp), %rdi
callq 0x4490
testb $0x1, 0x3d20(%rsp)
jne 0x2dcdd
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x22f00
jmp 0x2dc23
jmp 0x2dcf5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2dc82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2dc75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xcb0(%rsp), %rdi
callq 0x4270
leaq 0xc90(%rsp), %rdi
callq 0x4270
leaq 0xc70(%rsp), %rdi
callq 0x4270
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2dccb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xc50(%rsp), %rdi
callq 0x4270
leaq 0xc4f(%rsp), %rdi
callq 0x4490
jmp 0x30011
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x240f0
jmp 0x2dcf3
jmp 0x2dcf5
leaq 0xc27(%rsp), %rdi
movq %rdi, 0xa8(%rsp)
callq 0x4740
movq 0xa8(%rsp), %rdx
leaq 0x2eb9b(%rip), %rsi     # 0x5c8b4
leaq 0xc28(%rsp), %rdi
callq 0x4580
jmp 0x2dd28
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xc28(%rsp), %rdi
callq 0x3a160
jmp 0x2dd4a
leaq 0xc28(%rsp), %rdi
callq 0x4270
leaq 0xc27(%rsp), %rdi
callq 0x4490
jmp 0x2ddaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2dd9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xc28(%rsp), %rdi
callq 0x4270
leaq 0xc27(%rsp), %rdi
callq 0x4490
jmp 0x30011
leaq 0xbff(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x4740
movq 0xa0(%rsp), %rdx
leaq 0x2eaee(%rip), %rsi     # 0x5c8c1
leaq 0xc00(%rsp), %rdi
callq 0x4580
jmp 0x2dde2
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xc00(%rsp), %rdi
callq 0x3a160
jmp 0x2de04
leaq 0xc00(%rsp), %rdi
callq 0x4270
leaq 0xbff(%rsp), %rdi
callq 0x4490
testb $0x1, 0x3d20(%rsp)
jne 0x2de89
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x307f0
jmp 0x2de3e
jmp 0x2dea1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2de77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xc00(%rsp), %rdi
callq 0x4270
leaq 0xbff(%rsp), %rdi
callq 0x4490
jmp 0x30011
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x31b40
jmp 0x2de9f
jmp 0x2dea1
leaq 0xbd7(%rsp), %rdi
movq %rdi, 0x98(%rsp)
callq 0x4740
movq 0x98(%rsp), %rdx
leaq 0x2e9ef(%rip), %rsi     # 0x5c8b4
leaq 0xbd8(%rsp), %rdi
callq 0x4580
jmp 0x2ded4
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xbd8(%rsp), %rdi
callq 0x3a160
jmp 0x2def6
leaq 0xbd8(%rsp), %rdi
callq 0x4270
leaq 0xbd7(%rsp), %rdi
callq 0x4490
testb $0x1, 0x3d6c(%rsp)
je 0x2e11a
leaq 0xbaf(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x4740
movq 0x90(%rsp), %rdx
leaq 0x2e999(%rip), %rsi     # 0x5c8db
leaq 0xbb0(%rsp), %rdi
callq 0x4580
jmp 0x2df51
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xbb0(%rsp), %rdi
callq 0x3a160
jmp 0x2df73
leaq 0xbb0(%rsp), %rdi
callq 0x4270
leaq 0xbaf(%rsp), %rdi
callq 0x4490
testb $0x1, 0x3d20(%rsp)
jne 0x2e048
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x21170
jmp 0x2dfb1
jmp 0x2e060
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2dfed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xbd8(%rsp), %rdi
callq 0x4270
leaq 0xbd7(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e036
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xbb0(%rsp), %rdi
callq 0x4270
leaq 0xbaf(%rsp), %rdi
callq 0x4490
jmp 0x30011
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x21d70
jmp 0x2e05e
jmp 0x2e060
leaq 0xb87(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x4740
movq 0x88(%rsp), %rdx
leaq 0x2e830(%rip), %rsi     # 0x5c8b4
leaq 0xb88(%rsp), %rdi
callq 0x4580
jmp 0x2e093
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xb88(%rsp), %rdi
callq 0x3a160
jmp 0x2e0b5
leaq 0xb88(%rsp), %rdi
callq 0x4270
leaq 0xb87(%rsp), %rdi
callq 0x4490
jmp 0x2e11a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e108
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xb88(%rsp), %rdi
callq 0x4270
leaq 0xb87(%rsp), %rdi
callq 0x4490
jmp 0x30011
testb $0x1, 0x3d80(%rsp)
je 0x2e2ce
leaq 0xb5f(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x4740
movq 0x80(%rsp), %rdx
leaq 0x2e7ba(%rip), %rsi     # 0x5c906
leaq 0xb60(%rsp), %rdi
callq 0x4580
jmp 0x2e15b
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xb60(%rsp), %rdi
callq 0x3a160
jmp 0x2e17d
leaq 0xb60(%rsp), %rdi
callq 0x4270
leaq 0xb5f(%rsp), %rdi
callq 0x4490
testb $0x1, 0x3d20(%rsp)
jne 0x2e202
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x4cb0
jmp 0x2e1b7
jmp 0x2e21a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e1f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xb60(%rsp), %rdi
callq 0x4270
leaq 0xb5f(%rsp), %rdi
callq 0x4490
jmp 0x30011
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x6640
jmp 0x2e218
jmp 0x2e21a
leaq 0xb37(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x4740
movq 0x78(%rsp), %rdx
leaq 0x2e67c(%rip), %rsi     # 0x5c8b4
leaq 0xb38(%rsp), %rdi
callq 0x4580
jmp 0x2e247
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xb38(%rsp), %rdi
callq 0x3a160
jmp 0x2e269
leaq 0xb38(%rsp), %rdi
callq 0x4270
leaq 0xb37(%rsp), %rdi
callq 0x4490
jmp 0x2e2ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e2bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xb38(%rsp), %rdi
callq 0x4270
leaq 0xb37(%rsp), %rdi
callq 0x4490
jmp 0x30011
testb $0x1, 0x3d90(%rsp)
je 0x2e2f0
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x57cd0
jmp 0x2e2ee
jmp 0x2e2f0
testb $0x1, 0x3d8e(%rsp)
je 0x2e312
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x58e70
jmp 0x2e310
jmp 0x2e312
testb $0x1, 0x3d8f(%rsp)
je 0x2e334
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x5a770
jmp 0x2e332
jmp 0x2e334
testb $0x1, 0x3d93(%rsp)
je 0x2e356
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x585a0
jmp 0x2e354
jmp 0x2e356
testb $0x1, 0x3d91(%rsp)
je 0x2e378
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x5a000
jmp 0x2e376
jmp 0x2e378
testb $0x1, 0x3d92(%rsp)
je 0x2e39a
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x5b5c0
jmp 0x2e398
jmp 0x2e39a
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x55e20
jmp 0x2e3b0
testb $0x1, 0x3d97(%rsp)
je 0x2e3d2
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x56490
jmp 0x2e3d0
jmp 0x2e3d2
testb $0x1, 0x3d9b(%rsp)
je 0x2e3f4
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x575b0
jmp 0x2e3f2
jmp 0x2e3f4
testb $0x1, 0x3d9c(%rsp)
je 0x2e416
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x577c0
jmp 0x2e414
jmp 0x2e416
testb $0x1, 0x3d99(%rsp)
je 0x2e438
movl 0xcd8(%rsp), %esi
leaq 0x1150(%rsp), %rdi
callq 0x57940
jmp 0x2e436
jmp 0x2e438
testb $0x1, 0x3d9a(%rsp)
je 0x2e466
cmpl $0x0, 0xcd8(%rsp)
jle 0x2e466
movl 0xcd8(%rsp), %esi
decl %esi
leaq 0x1150(%rsp), %rdi
callq 0x57bf0
jmp 0x2e464
jmp 0x2e466
leaq 0xb0f(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0x4740
movq 0x70(%rsp), %rdx
leaq 0x2e49b(%rip), %rsi     # 0x5c91f
leaq 0xb10(%rsp), %rdi
callq 0x4580
jmp 0x2e493
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xb10(%rsp), %rdi
callq 0x3a160
jmp 0x2e4b5
leaq 0xb10(%rsp), %rdi
callq 0x4270
leaq 0xb0f(%rsp), %rdi
callq 0x4490
testb $0x1, 0x3d58(%rsp)
je 0x2e644
leaq 0x3f50(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0xaa8(%rsp), %rdi
callq 0x35ed0
jmp 0x2e505
leaq 0x2e43a(%rip), %rsi     # 0x5c946
leaq 0xac8(%rsp), %rdi
leaq 0xaa8(%rsp), %rdx
callq 0xcae0
jmp 0x2e523
leaq 0x2e367(%rip), %rdx     # 0x5c891
leaq 0xae8(%rsp), %rdi
leaq 0xac8(%rsp), %rsi
callq 0x22900
jmp 0x2e541
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xae8(%rsp), %rdi
callq 0x3a160
jmp 0x2e563
leaq 0xae8(%rsp), %rdi
callq 0x4270
leaq 0xac8(%rsp), %rdi
callq 0x4270
leaq 0xaa8(%rsp), %rdi
callq 0x4270
jmp 0x2e644
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e5c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xb10(%rsp), %rdi
callq 0x4270
leaq 0xb0f(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e632
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e625
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xae8(%rsp), %rdi
callq 0x4270
leaq 0xac8(%rsp), %rdi
callq 0x4270
leaq 0xaa8(%rsp), %rdi
callq 0x4270
jmp 0x30011
leaq 0xa87(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x4740
movq 0x68(%rsp), %rdx
leaq 0x2e2ff(%rip), %rsi     # 0x5c961
leaq 0xa88(%rsp), %rdi
callq 0x4580
jmp 0x2e671
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xa88(%rsp), %rdi
callq 0x3a160
jmp 0x2e693
leaq 0xa88(%rsp), %rdi
callq 0x4270
leaq 0xa87(%rsp), %rdi
callq 0x4490
cmpl $0x1, 0x3d5c(%rsp)
jle 0x2ea43
movslq 0x3d5c(%rsp), %rsi
leaq 0xa20(%rsp), %rdi
callq 0xcb30
jmp 0x2e6d2
leaq 0x2e296(%rip), %rsi     # 0x5c96f
leaq 0xa40(%rsp), %rdi
leaq 0xa20(%rsp), %rdx
callq 0xcae0
jmp 0x2e6f0
leaq 0x2e289(%rip), %rdx     # 0x5c980
leaq 0xa60(%rsp), %rdi
leaq 0xa40(%rsp), %rsi
callq 0x22900
jmp 0x2e70e
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xa60(%rsp), %rdi
callq 0x3a160
jmp 0x2e730
leaq 0xa60(%rsp), %rdi
callq 0x4270
leaq 0xa40(%rsp), %rdi
callq 0x4270
leaq 0xa20(%rsp), %rdi
callq 0x4270
leaq 0x3f80(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x9c0(%rsp), %rdi
callq 0x35ed0
jmp 0x2e77f
leaq 0x2e202(%rip), %rsi     # 0x5c988
leaq 0x9e0(%rsp), %rdi
leaq 0x9c0(%rsp), %rdx
callq 0xcae0
jmp 0x2e79d
leaq 0x2e0ee(%rip), %rdx     # 0x5c892
leaq 0xa00(%rsp), %rdi
leaq 0x9e0(%rsp), %rsi
callq 0x22900
jmp 0x2e7bb
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0xa00(%rsp), %rdi
callq 0x3a160
jmp 0x2e7dd
leaq 0xa00(%rsp), %rdi
callq 0x4270
leaq 0x9e0(%rsp), %rdi
callq 0x4270
leaq 0x9c0(%rsp), %rdi
callq 0x4270
leaq 0x3f98(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x960(%rsp), %rdi
callq 0x35ed0
jmp 0x2e82c
leaq 0x2e162(%rip), %rsi     # 0x5c995
leaq 0x980(%rsp), %rdi
leaq 0x960(%rsp), %rdx
callq 0xcae0
jmp 0x2e84a
leaq 0x2e041(%rip), %rdx     # 0x5c892
leaq 0x9a0(%rsp), %rdi
leaq 0x980(%rsp), %rsi
callq 0x22900
jmp 0x2e868
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x9a0(%rsp), %rdi
callq 0x3a160
jmp 0x2e88a
leaq 0x9a0(%rsp), %rdi
callq 0x4270
leaq 0x980(%rsp), %rdi
callq 0x4270
leaq 0x960(%rsp), %rdi
callq 0x4270
jmp 0x2ec13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e8ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xa88(%rsp), %rdi
callq 0x4270
leaq 0xa87(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e959
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e94c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xa60(%rsp), %rdi
callq 0x4270
leaq 0xa40(%rsp), %rdi
callq 0x4270
leaq 0xa20(%rsp), %rdi
callq 0x4270
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e9c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2e9b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0xa00(%rsp), %rdi
callq 0x4270
leaq 0x9e0(%rsp), %rdi
callq 0x4270
leaq 0x9c0(%rsp), %rdi
callq 0x4270
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2ea31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2ea24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x9a0(%rsp), %rdi
callq 0x4270
leaq 0x980(%rsp), %rdi
callq 0x4270
leaq 0x960(%rsp), %rdi
callq 0x4270
jmp 0x30011
leaq 0x93f(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x4740
movq 0x60(%rsp), %rdx
leaq 0x2df47(%rip), %rsi     # 0x5c9a8
leaq 0x940(%rsp), %rdi
callq 0x4580
jmp 0x2ea70
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x940(%rsp), %rdi
callq 0x3a160
jmp 0x2ea92
leaq 0x940(%rsp), %rdi
callq 0x4270
leaq 0x93f(%rsp), %rdi
callq 0x4490
leaq 0x3f80(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x8d8(%rsp), %rdi
callq 0x35ed0
jmp 0x2ead4
leaq 0x2dead(%rip), %rsi     # 0x5c988
leaq 0x8f8(%rsp), %rdi
leaq 0x8d8(%rsp), %rdx
callq 0xcae0
jmp 0x2eaf2
leaq 0x2dd99(%rip), %rdx     # 0x5c892
leaq 0x918(%rsp), %rdi
leaq 0x8f8(%rsp), %rsi
callq 0x22900
jmp 0x2eb10
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x918(%rsp), %rdi
callq 0x3a160
jmp 0x2eb32
leaq 0x918(%rsp), %rdi
callq 0x4270
leaq 0x8f8(%rsp), %rdi
callq 0x4270
leaq 0x8d8(%rsp), %rdi
callq 0x4270
jmp 0x2ec13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2eb95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x940(%rsp), %rdi
callq 0x4270
leaq 0x93f(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2ec01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2ebf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x918(%rsp), %rdi
callq 0x4270
leaq 0x8f8(%rsp), %rdi
callq 0x4270
leaq 0x8d8(%rsp), %rdi
callq 0x4270
jmp 0x30011
leaq 0x8b7(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x4740
movq 0x58(%rsp), %rdx
leaq 0x2dc61(%rip), %rsi     # 0x5c892
leaq 0x8b8(%rsp), %rdi
callq 0x4580
jmp 0x2ec40
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x8b8(%rsp), %rdi
callq 0x3a160
jmp 0x2ec62
leaq 0x8b8(%rsp), %rdi
callq 0x4270
leaq 0x8b7(%rsp), %rdi
callq 0x4490
leaq 0x88f(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x4740
movq 0x50(%rsp), %rdx
leaq 0x2dd2c(%rip), %rsi     # 0x5c9c6
leaq 0x890(%rsp), %rdi
callq 0x4580
jmp 0x2eca9
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x890(%rsp), %rdi
callq 0x3a160
jmp 0x2eccb
leaq 0x890(%rsp), %rdi
callq 0x4270
leaq 0x88f(%rsp), %rdi
callq 0x4490
cmpl $0x1, 0x3d5c(%rsp)
jle 0x2f0c4
movslq 0x3d5c(%rsp), %rsi
leaq 0x828(%rsp), %rdi
callq 0xcb30
jmp 0x2ed0a
leaq 0x2dc5e(%rip), %rsi     # 0x5c96f
leaq 0x848(%rsp), %rdi
leaq 0x828(%rsp), %rdx
callq 0xcae0
jmp 0x2ed28
leaq 0x2dc51(%rip), %rdx     # 0x5c980
leaq 0x868(%rsp), %rdi
leaq 0x848(%rsp), %rsi
callq 0x22900
jmp 0x2ed46
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x868(%rsp), %rdi
callq 0x3a160
jmp 0x2ed68
leaq 0x868(%rsp), %rdi
callq 0x4270
leaq 0x848(%rsp), %rdi
callq 0x4270
leaq 0x828(%rsp), %rdi
callq 0x4270
leaq 0x3ff8(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x7c8(%rsp), %rdi
callq 0x35ed0
jmp 0x2edb7
leaq 0x2dbca(%rip), %rsi     # 0x5c988
leaq 0x7e8(%rsp), %rdi
leaq 0x7c8(%rsp), %rdx
callq 0xcae0
jmp 0x2edd5
leaq 0x2dab6(%rip), %rdx     # 0x5c892
leaq 0x808(%rsp), %rdi
leaq 0x7e8(%rsp), %rsi
callq 0x22900
jmp 0x2edf3
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x808(%rsp), %rdi
callq 0x3a160
jmp 0x2ee15
leaq 0x808(%rsp), %rdi
callq 0x4270
leaq 0x7e8(%rsp), %rdi
callq 0x4270
leaq 0x7c8(%rsp), %rdi
callq 0x4270
leaq 0x4010(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x768(%rsp), %rdi
callq 0x35ed0
jmp 0x2ee64
leaq 0x2db2a(%rip), %rsi     # 0x5c995
leaq 0x788(%rsp), %rdi
leaq 0x768(%rsp), %rdx
callq 0xcae0
jmp 0x2ee82
leaq 0x2da09(%rip), %rdx     # 0x5c892
leaq 0x7a8(%rsp), %rdi
leaq 0x788(%rsp), %rsi
callq 0x22900
jmp 0x2eea0
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x7a8(%rsp), %rdi
callq 0x3a160
jmp 0x2eec2
leaq 0x7a8(%rsp), %rdi
callq 0x4270
leaq 0x788(%rsp), %rdi
callq 0x4270
leaq 0x768(%rsp), %rdi
callq 0x4270
jmp 0x2f294
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2ef25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x8b8(%rsp), %rdi
callq 0x4270
leaq 0x8b7(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2ef6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x890(%rsp), %rdi
callq 0x4270
leaq 0x88f(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2efda
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2efcd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x868(%rsp), %rdi
callq 0x4270
leaq 0x848(%rsp), %rdi
callq 0x4270
leaq 0x828(%rsp), %rdi
callq 0x4270
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f046
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f039
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x808(%rsp), %rdi
callq 0x4270
leaq 0x7e8(%rsp), %rdi
callq 0x4270
leaq 0x7c8(%rsp), %rdi
callq 0x4270
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f0b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f0a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x7a8(%rsp), %rdi
callq 0x4270
leaq 0x788(%rsp), %rdi
callq 0x4270
leaq 0x768(%rsp), %rdi
callq 0x4270
jmp 0x30011
leaq 0x747(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x4740
movq 0x48(%rsp), %rdx
leaq 0x2d8c6(%rip), %rsi     # 0x5c9a8
leaq 0x748(%rsp), %rdi
callq 0x4580
jmp 0x2f0f1
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x748(%rsp), %rdi
callq 0x3a160
jmp 0x2f113
leaq 0x748(%rsp), %rdi
callq 0x4270
leaq 0x747(%rsp), %rdi
callq 0x4490
leaq 0x3ff8(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x6e0(%rsp), %rdi
callq 0x35ed0
jmp 0x2f155
leaq 0x2d82c(%rip), %rsi     # 0x5c988
leaq 0x700(%rsp), %rdi
leaq 0x6e0(%rsp), %rdx
callq 0xcae0
jmp 0x2f173
leaq 0x2d718(%rip), %rdx     # 0x5c892
leaq 0x720(%rsp), %rdi
leaq 0x700(%rsp), %rsi
callq 0x22900
jmp 0x2f191
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x720(%rsp), %rdi
callq 0x3a160
jmp 0x2f1b3
leaq 0x720(%rsp), %rdi
callq 0x4270
leaq 0x700(%rsp), %rdi
callq 0x4270
leaq 0x6e0(%rsp), %rdi
callq 0x4270
jmp 0x2f294
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f216
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x748(%rsp), %rdi
callq 0x4270
leaq 0x747(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f282
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f275
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x720(%rsp), %rdi
callq 0x4270
leaq 0x700(%rsp), %rdi
callq 0x4270
leaq 0x6e0(%rsp), %rdi
callq 0x4270
jmp 0x30011
leaq 0x6bf(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x4740
movq 0x40(%rsp), %rdx
leaq 0x2d5e0(%rip), %rsi     # 0x5c892
leaq 0x6c0(%rsp), %rdi
callq 0x4580
jmp 0x2f2c1
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x6c0(%rsp), %rdi
callq 0x3a160
jmp 0x2f2e3
leaq 0x6c0(%rsp), %rdi
callq 0x4270
leaq 0x6bf(%rsp), %rdi
callq 0x4490
testb $0x1, 0x3d6c(%rsp)
je 0x2f63d
leaq 0x697(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x4740
movq 0x38(%rsp), %rdx
leaq 0x2d6b1(%rip), %rsi     # 0x5c9da
leaq 0x698(%rsp), %rdi
callq 0x4580
jmp 0x2f338
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x698(%rsp), %rdi
callq 0x3a160
jmp 0x2f35a
leaq 0x698(%rsp), %rdi
callq 0x4270
leaq 0x697(%rsp), %rdi
callq 0x4490
leaq 0x4070(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x630(%rsp), %rdi
callq 0x35ed0
jmp 0x2f39c
leaq 0x2d5e5(%rip), %rsi     # 0x5c988
leaq 0x650(%rsp), %rdi
leaq 0x630(%rsp), %rdx
callq 0xcae0
jmp 0x2f3ba
leaq 0x2d4d1(%rip), %rdx     # 0x5c892
leaq 0x670(%rsp), %rdi
leaq 0x650(%rsp), %rsi
callq 0x22900
jmp 0x2f3d8
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x670(%rsp), %rdi
callq 0x3a160
jmp 0x2f3fa
leaq 0x670(%rsp), %rdi
callq 0x4270
leaq 0x650(%rsp), %rdi
callq 0x4270
leaq 0x630(%rsp), %rdi
callq 0x4270
leaq 0x4088(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x5d0(%rsp), %rdi
callq 0x35ed0
jmp 0x2f449
leaq 0x2d545(%rip), %rsi     # 0x5c995
leaq 0x5f0(%rsp), %rdi
leaq 0x5d0(%rsp), %rdx
callq 0xcae0
jmp 0x2f467
leaq 0x2d423(%rip), %rdx     # 0x5c891
leaq 0x610(%rsp), %rdi
leaq 0x5f0(%rsp), %rsi
callq 0x22900
jmp 0x2f485
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x610(%rsp), %rdi
callq 0x3a160
jmp 0x2f4a7
leaq 0x610(%rsp), %rdi
callq 0x4270
leaq 0x5f0(%rsp), %rdi
callq 0x4270
leaq 0x5d0(%rsp), %rdi
callq 0x4270
jmp 0x2f63d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f50a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x6c0(%rsp), %rdi
callq 0x4270
leaq 0x6bf(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f553
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x698(%rsp), %rdi
callq 0x4270
leaq 0x697(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f5bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f5b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x670(%rsp), %rdi
callq 0x4270
leaq 0x650(%rsp), %rdi
callq 0x4270
leaq 0x630(%rsp), %rdi
callq 0x4270
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f62b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f61e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x610(%rsp), %rdi
callq 0x4270
leaq 0x5f0(%rsp), %rdi
callq 0x4270
leaq 0x5d0(%rsp), %rdi
callq 0x4270
jmp 0x30011
testb $0x1, 0x3d99(%rsp)
je 0x2fb66
leaq 0x5af(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x4740
movq 0x30(%rsp), %rdx
leaq 0x2d393(%rip), %rsi     # 0x5c9fc
leaq 0x5b0(%rsp), %rdi
callq 0x4580
jmp 0x2f678
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x5b0(%rsp), %rdi
callq 0x3a160
jmp 0x2f69a
leaq 0x5b0(%rsp), %rdi
callq 0x4270
leaq 0x5af(%rsp), %rdi
callq 0x4490
leaq 0x41c8(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x548(%rsp), %rdi
callq 0x35ed0
jmp 0x2f6dc
leaq 0x2d336(%rip), %rsi     # 0x5ca19
leaq 0x568(%rsp), %rdi
leaq 0x548(%rsp), %rdx
callq 0xcae0
jmp 0x2f6fa
leaq 0x2d191(%rip), %rdx     # 0x5c892
leaq 0x588(%rsp), %rdi
leaq 0x568(%rsp), %rsi
callq 0x22900
jmp 0x2f718
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x588(%rsp), %rdi
callq 0x3a160
jmp 0x2f73a
leaq 0x588(%rsp), %rdi
callq 0x4270
leaq 0x568(%rsp), %rdi
callq 0x4270
leaq 0x548(%rsp), %rdi
callq 0x4270
leaq 0x41e0(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x4e8(%rsp), %rdi
callq 0x35ed0
jmp 0x2f789
leaq 0x2d291(%rip), %rsi     # 0x5ca21
leaq 0x508(%rsp), %rdi
leaq 0x4e8(%rsp), %rdx
callq 0xcae0
jmp 0x2f7a7
leaq 0x2d0e4(%rip), %rdx     # 0x5c892
leaq 0x528(%rsp), %rdi
leaq 0x508(%rsp), %rsi
callq 0x22900
jmp 0x2f7c5
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x528(%rsp), %rdi
callq 0x3a160
jmp 0x2f7e7
leaq 0x528(%rsp), %rdi
callq 0x4270
leaq 0x508(%rsp), %rdi
callq 0x4270
leaq 0x4e8(%rsp), %rdi
callq 0x4270
leaq 0x41f8(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x488(%rsp), %rdi
callq 0x35ed0
jmp 0x2f836
leaq 0x2d1ec(%rip), %rsi     # 0x5ca29
leaq 0x4a8(%rsp), %rdi
leaq 0x488(%rsp), %rdx
callq 0xcae0
jmp 0x2f854
leaq 0x2d037(%rip), %rdx     # 0x5c892
leaq 0x4c8(%rsp), %rdi
leaq 0x4a8(%rsp), %rsi
callq 0x22900
jmp 0x2f872
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x4c8(%rsp), %rdi
callq 0x3a160
jmp 0x2f894
leaq 0x4c8(%rsp), %rdi
callq 0x4270
leaq 0x4a8(%rsp), %rdi
callq 0x4270
leaq 0x488(%rsp), %rdi
callq 0x4270
leaq 0x4210(%rsp), %rdi
movslq 0xcd8(%rsp), %rsi
callq 0x8c20
movsd (%rax), %xmm0
leaq 0x428(%rsp), %rdi
callq 0x35ed0
jmp 0x2f8e3
leaq 0x2d159(%rip), %rsi     # 0x5ca43
leaq 0x448(%rsp), %rdi
leaq 0x428(%rsp), %rdx
callq 0xcae0
jmp 0x2f901
leaq 0x2cf89(%rip), %rdx     # 0x5c891
leaq 0x468(%rsp), %rdi
leaq 0x448(%rsp), %rsi
callq 0x22900
jmp 0x2f91f
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x468(%rsp), %rdi
callq 0x3a160
jmp 0x2f941
leaq 0x468(%rsp), %rdi
callq 0x4270
leaq 0x448(%rsp), %rdi
callq 0x4270
leaq 0x428(%rsp), %rdi
callq 0x4270
jmp 0x2fb66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2f9a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x5b0(%rsp), %rdi
callq 0x4270
leaq 0x5af(%rsp), %rdi
callq 0x4490
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2fa10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2fa03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x588(%rsp), %rdi
callq 0x4270
leaq 0x568(%rsp), %rdi
callq 0x4270
leaq 0x548(%rsp), %rdi
callq 0x4270
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2fa7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2fa6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x528(%rsp), %rdi
callq 0x4270
leaq 0x508(%rsp), %rdi
callq 0x4270
leaq 0x4e8(%rsp), %rdi
callq 0x4270
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2fae8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2fadb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x4c8(%rsp), %rdi
callq 0x4270
leaq 0x4a8(%rsp), %rdi
callq 0x4270
leaq 0x488(%rsp), %rdi
callq 0x4270
jmp 0x30011
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2fb54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2fb47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x468(%rsp), %rdi
callq 0x4270
leaq 0x448(%rsp), %rdi
callq 0x4270
leaq 0x428(%rsp), %rdi
callq 0x4270
jmp 0x30011
movq 0x3d42b(%rip), %rax     # 0x6cf98
movq (%rax), %rdi
callq 0x44c0
jmp 0x2fb77
jmp 0x2fb79
movl 0xcd8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xcd8(%rsp)
jmp 0x2daa5
testb $0x1, 0x3d9a(%rsp)
je 0x2fbba
movl 0x3d18(%rsp), %eax
movl 0x3d1c(%rsp), %esi
subl %eax, %esi
leaq 0x1150(%rsp), %rdi
callq 0x57bf0
jmp 0x2fbb8
jmp 0x2fbba
testb $0x1, 0x3d96(%rsp)
je 0x2fbd5
leaq 0x1150(%rsp), %rdi
callq 0x568a0
jmp 0x2fbd3
jmp 0x2fbd5
leaq 0x4270(%rsp), %rdi
callq 0x43f0
movq 0x4270(%rsp), %rdi
movq 0x4278(%rsp), %rsi
callq 0x41f0
cvttsd2si %xmm0, %eax
movl %eax, 0x424(%rsp)
leaq 0x2a8(%rsp), %rdi
callq 0x4560
jmp 0x2fc11
leaq 0x2ce3e(%rip), %rsi     # 0x5ca56
leaq 0x2a8(%rsp), %rdi
callq 0x4430
movq %rax, 0x28(%rsp)
jmp 0x2fc2c
movq 0x28(%rsp), %rdi
movl 0x424(%rsp), %esi
callq 0x4700
movq %rax, 0x20(%rsp)
jmp 0x2fc44
movq 0x20(%rsp), %rdi
leaq 0x2ce2a(%rip), %rsi     # 0x5ca7a
callq 0x4430
jmp 0x2fc57
leaq 0x288(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
callq 0x4460
jmp 0x2fc6e
cmpl $0x0, 0x424(%rsp)
jge 0x2fd4c
leaq 0x267(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x4740
movq 0x18(%rsp), %rdx
leaq 0x2cdea(%rip), %rsi     # 0x5ca84
leaq 0x268(%rsp), %rdi
callq 0x4580
jmp 0x2fca9
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x268(%rsp), %rdi
callq 0x3a160
jmp 0x2fccb
leaq 0x268(%rsp), %rdi
callq 0x4270
leaq 0x267(%rsp), %rdi
callq 0x4490
jmp 0x2fdd3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x30004
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2fd3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x268(%rsp), %rdi
callq 0x4270
leaq 0x267(%rsp), %rdi
callq 0x4490
jmp 0x2fff7
leaq 0x240(%rsp), %rdi
leaq 0x288(%rsp), %rsi
callq 0x4180
jmp 0x2fd63
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x240(%rsp), %rdi
callq 0x3a160
jmp 0x2fd85
leaq 0x240(%rsp), %rdi
callq 0x4270
jmp 0x2fdd3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2fff7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x240(%rsp), %rdi
callq 0x4270
jmp 0x2fff7
leaq 0x1410(%rsp), %rdx
leaq 0x2cccb(%rip), %rsi     # 0x5caad
leaq 0x200(%rsp), %rdi
callq 0x22950
jmp 0x2fdf1
leaq 0x1df(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x4740
movq 0x10(%rsp), %rdx
leaq 0x2ca83(%rip), %rsi     # 0x5c892
leaq 0x1e0(%rsp), %rdi
callq 0x4580
jmp 0x2fe1e
leaq 0x220(%rsp), %rdi
leaq 0x200(%rsp), %rsi
leaq 0x1e0(%rsp), %rdx
callq 0xc9f0
jmp 0x2fe3d
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x220(%rsp), %rdi
callq 0x3a160
jmp 0x2fe5f
leaq 0x220(%rsp), %rdi
callq 0x4270
leaq 0x1e0(%rsp), %rdi
callq 0x4270
leaq 0x1df(%rsp), %rdi
callq 0x4490
leaq 0x200(%rsp), %rdi
callq 0x4270
leaq 0x1b7(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x4740
movq 0x8(%rsp), %rdx
leaq 0x2c856(%rip), %rsi     # 0x5c707
leaq 0x1b8(%rsp), %rdi
callq 0x4580
jmp 0x2fec0
leaq 0x1ac0(%rsp), %rdx
movzbl 0x3d8c(%rsp), %esi
andl $0x1, %esi
leaq 0x1b8(%rsp), %rdi
callq 0x3a160
jmp 0x2fee2
leaq 0x1b8(%rsp), %rdi
callq 0x4270
leaq 0x1b7(%rsp), %rdi
callq 0x4490
movl $0x0, 0x4294(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x4270
leaq 0x2a8(%rsp), %rdi
callq 0x40e0
leaq 0x1150(%rsp), %rdi
callq 0x30030
movl 0x4294(%rsp), %eax
addq $0x4298, %rsp           # imm = 0x4298
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2ff97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2ff8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x220(%rsp), %rdi
callq 0x4270
leaq 0x1e0(%rsp), %rdi
callq 0x4270
leaq 0x1df(%rsp), %rdi
callq 0x4490
leaq 0x200(%rsp), %rdi
callq 0x4270
jmp 0x2fff7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
jmp 0x2ffea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1118(%rsp)
movl %eax, 0x1114(%rsp)
leaq 0x1b8(%rsp), %rdi
callq 0x4270
leaq 0x1b7(%rsp), %rdi
callq 0x4490
leaq 0x288(%rsp), %rdi
callq 0x4270
leaq 0x2a8(%rsp), %rdi
callq 0x40e0
leaq 0x1150(%rsp), %rdi
callq 0x30030
movq 0x1118(%rsp), %rdi
callq 0x4730
nopl (%rax,%rax)