// File: /workspace/github_cpp_makefile_star2_O1/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, %rbx
movl %edi, %ebp
xorl %edi, %edi
callq 0x32f0
leaq 0x4b8(%rsp), %r15
movq %rax, (%r15)
movq 0x2cfa5(%rip), %r14     # 0x41fb8
leaq 0x2277d(%rip), %rsi     # 0x37797
movl $0x2b, %edx
movq %r14, %rdi
callq 0x3390
leaq 0x22795(%rip), %rsi     # 0x377c3
movl $0x18, %edx
movq %r14, %rdi
callq 0x3390
leaq 0x2279a(%rip), %rsi     # 0x377dc
movl $0x28, %edx
movq %r14, %rdi
callq 0x3390
leaq 0x227af(%rip), %rsi     # 0x37805
movl $0x25, %edx
movq %r14, %rdi
callq 0x3390
leaq 0x227c1(%rip), %rsi     # 0x3782b
movl $0x9, %edx
movq %r14, %rdi
callq 0x3390
movq %r15, %rdi
callq 0x3110
testq %rax, %rax
je 0x150a3
movq %rax, %r15
movq %rax, %rdi
callq 0x3140
movq 0x2cf22(%rip), %rdi     # 0x41fb8
movq %r15, %rsi
movq %rax, %rdx
callq 0x3390
jmp 0x150bb
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3520
movq 0x2cef6(%rip), %rdi     # 0x41fb8
leaq 0x2276c(%rip), %rsi     # 0x37835
movl $0x2c, %edx
callq 0x3390
leaq 0x4b0(%rsp), %rdi
callq 0x32f0
leaq 0x868(%rsp), %rdi
callq 0x11398
cmpl $0x2, %ebp
jl 0x15228
movl $0x1, %r15d
leaq 0x6e0(%rsp), %r12
leaq 0x6c0(%rsp), %r14
leaq 0x6a0(%rsp), %r13
leaq 0x6f0(%rsp), %rax
movq %rax, 0x6e0(%rsp)
movq %r12, %rdi
leaq 0x22734(%rip), %rsi     # 0x37862
leaq 0x22738(%rip), %rdx     # 0x3786d
callq 0x6e56
movq %r12, %rdi
leaq 0x868(%rsp), %rsi
movl %ebp, %edx
movq %rbx, %rcx
movl %r15d, %r8d
callq 0x1e04e
movq 0x6e0(%rsp), %rdi
leaq 0x6f0(%rsp), %rax
cmpq %rax, %rdi
je 0x1516c
callq 0x3310
leaq 0x6d0(%rsp), %rax
movq %rax, 0x6c0(%rsp)
movq %r14, %rdi
leaq 0x226e8(%rip), %rsi     # 0x3786e
leaq 0x226eb(%rip), %rdx     # 0x37878
callq 0x6e56
movq %r14, %rdi
leaq 0x888(%rsp), %rsi
movl %ebp, %edx
movq %rbx, %rcx
movl %r15d, %r8d
callq 0x1e04e
movq 0x6c0(%rsp), %rdi
leaq 0x6d0(%rsp), %rax
cmpq %rax, %rdi
je 0x151c4
callq 0x3310
leaq 0x6b0(%rsp), %rax
movq %rax, 0x6a0(%rsp)
movq %r13, %rdi
leaq 0x2269b(%rip), %rsi     # 0x37879
leaq 0x2269f(%rip), %rdx     # 0x37884
callq 0x6e56
movq %r13, %rdi
leaq 0x8e8(%rsp), %rsi
movl %ebp, %edx
movq %rbx, %rcx
movl %r15d, %r8d
callq 0x1e04e
movq 0x6a0(%rsp), %rdi
leaq 0x6b0(%rsp), %rax
cmpq %rax, %rdi
je 0x1521c
callq 0x3310
incl %r15d
cmpl %r15d, %ebp
jne 0x15114
leaq 0x888(%rsp), %rdx
leaq 0x30(%rsp), %rdi
leaq 0x868(%rsp), %rsi
callq 0x14b06
leaq 0xb08(%rsp), %r14
leaq 0x30(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x33e0
movq (%r15), %rdi
leaq 0x40(%rsp), %r12
cmpq %r12, %rdi
je 0x1526c
callq 0x3310
leaq 0x8e8(%rsp), %rdx
leaq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0x14b06
leaq 0xb68(%rsp), %rdi
leaq 0x30(%rsp), %r14
movq %r14, %rsi
callq 0x33e0
movq (%r14), %rdi
cmpq %r12, %rdi
je 0x152a3
callq 0x3310
leaq 0x868(%rsp), %rdi
callq 0x1e1d1
leaq 0x868(%rsp), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x2127d
leaq 0x30(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2230a(%rip), %rsi     # 0x375db
leaq 0x2230f(%rip), %rdx     # 0x375e7
callq 0x6e56
leaq 0x33d8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x14b5a
leaq 0x850(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x840(%rsp), %rdi
callq 0xbe10
leaq 0x830(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x222b6(%rip), %rsi     # 0x375db
leaq 0x222bb(%rip), %rdx     # 0x375e7
leaq 0x820(%rsp), %rdi
callq 0x6e56
leaq 0x34a4(%rsp), %rsi
leaq 0x11d8(%rsp), %rbx
leaq 0x840(%rsp), %rdi
leaq 0x820(%rsp), %rdx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x1bcce
movq 0x820(%rsp), %rdi
cmpq %r15, %rdi
je 0x15375
callq 0x3310
movq 0x840(%rsp), %rdi
cmpq %r14, %rdi
je 0x15387
callq 0x3310
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x15396
callq 0x3310
cmpb $0x1, 0x34a4(%rsp)
jne 0x155b2
leaq 0x810(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0xb88(%rsp), %rsi
movq 0xb90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x800(%rsp), %rdi
callq 0xbe10
leaq 0x30(%rsp), %r15
leaq 0x800(%rsp), %rsi
movq %r15, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x2f394
leaq 0x11e0(%rsp), %r12
movq -0x8(%r12), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
leaq 0x38(%rsp), %r14
movq -0x8(%r14), %rax
addq -0x18(%rax), %r15
movq %r15, %rsi
callq 0x35d0
movq %r12, %rdi
movq %r14, %rsi
callq 0x3340
movq 0x2cb7b(%rip), %rax     # 0x41fa0
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x128(%rsp), %r15
movq %rcx, -0xf8(%r15)
movq -0x18(%rcx), %rcx
movq %rax, 0x30(%rsp,%rcx)
movq %r14, %rdi
callq 0x32b0
movq %r15, %rdi
callq 0x30f0
movq 0x800(%rsp), %rdi
cmpq %r13, %rdi
je 0x15466
callq 0x3310
leaq 0x2232a(%rip), %rsi     # 0x37797
movl $0x2b, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x22342(%rip), %rsi     # 0x377c3
movl $0x18, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x22347(%rip), %rsi     # 0x377dc
movl $0x28, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x2235c(%rip), %rsi     # 0x37805
movl $0x25, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x2236e(%rip), %rsi     # 0x3782b
movl $0x9, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x4b8(%rsp), %rdi
callq 0x3110
testq %rax, %rax
je 0x154f7
movq %rax, %r14
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x3390
jmp 0x15516
movq 0x11d8(%rsp), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x11f8(%rsp,%rax), %esi
orl $0x1, %esi
callq 0x3520
leaq 0x22318(%rip), %rsi     # 0x37835
movl $0x2c, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x22354(%rip), %rsi     # 0x37885
movl $0x11, %edx
movq %rbx, %rdi
callq 0x3390
movq 0xb68(%rsp), %rsi
movq 0xb70(%rsp), %rdx
movq %rbx, %rdi
callq 0x3390
leaq 0x223c4(%rip), %rsi     # 0x37921
movl $0x2, %edx
movq %rax, %rdi
callq 0x3390
leaq 0x22326(%rip), %rsi     # 0x37897
movl $0xb, %edx
movq %rbx, %rdi
callq 0x3390
movq 0xb48(%rsp), %rsi
movq 0xb50(%rsp), %rdx
movq %rbx, %rdi
callq 0x3390
leaq 0x22385(%rip), %rsi     # 0x37922
movl $0x1, %edx
movq %rax, %rdi
callq 0x3390
movq %rbx, %rdi
callq 0x31f0
leaq 0x7f0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x222de(%rip), %rsi     # 0x378a3
leaq 0x222f9(%rip), %rdx     # 0x378c5
leaq 0x7e0(%rsp), %rdi
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
leaq 0x7e0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1daf8
movq 0x7e0(%rsp), %rdi
cmpq %r14, %rdi
je 0x15603
callq 0x3310
leaq 0x868(%rsp), %rdi
xorl %esi, %esi
callq 0x22fa8
leaq 0x7d0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x222a1(%rip), %rsi     # 0x378c6
leaq 0x222b8(%rip), %rdx     # 0x378e4
leaq 0x7c0(%rsp), %rdi
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
leaq 0x7c0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1daf8
movq 0x7c0(%rsp), %rdi
cmpq %r14, %rdi
je 0x15663
callq 0x3310
leaq 0x868(%rsp), %rdi
movl $0x1, %esi
callq 0x22fa8
leaq 0x7b0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2225d(%rip), %rsi     # 0x378e5
leaq 0x2227a(%rip), %rdx     # 0x37909
leaq 0x7a0(%rsp), %rdi
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
leaq 0x7a0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1daf8
movq 0x7a0(%rsp), %rdi
cmpq %r14, %rdi
je 0x156c6
callq 0x3310
leaq 0x868(%rsp), %rdi
movl $0x2, %esi
callq 0x22fa8
leaq 0x790(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x22237(%rip), %rsi     # 0x37922
leaq 0x22231(%rip), %rdx     # 0x37923
leaq 0x780(%rsp), %rdi
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
leaq 0x780(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x780(%rsp), %rdi
cmpq %r14, %rdi
je 0x15729
callq 0x3310
leaq 0x868(%rsp), %rdi
callq 0x2ad16
movq 0x3588(%rsp), %rdx
movq 0x3590(%rsp), %rax
cmpq %rax, %rdx
sete %sil
movq %rdx, %rcx
addq $0x4, %rcx
cmpq %rax, %rcx
sete %dil
orb %sil, %dil
je 0x15765
movq %rdx, %rsi
jmp 0x1577d
movl (%rdx), %edi
movq %rcx, %rsi
cmpl (%rcx), %edi
jl 0x15771
movq %rdx, %rsi
addq $0x4, %rcx
movq %rsi, %rdx
cmpq %rax, %rcx
jne 0x15765
movslq (%rsi), %rbx
leaq 0x1(%rbx), %rsi
leaq 0x270(%rsp), %rdi
leaq 0x250(%rsp), %rdx
callq 0x5916
movq %rsp, %rdi
leaq 0x270(%rsp), %rdx
leaq 0x27(%rsp), %rcx
movl $0x2710, %esi           # imm = 0x2710
callq 0x59a0
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %rdi
movaps %xmm0, (%rdi)
movapd 0x2cb7a(%rip), %xmm0    # 0x42340
movq 0x2cb83(%rip), %rax     # 0x42350
movq %rsp, %r14
movaps (%r14), %xmm1
movaps %xmm1, 0x2cb65(%rip)    # 0x42340
movq 0x10(%r14), %rcx
movq %rcx, 0x2cb6a(%rip)     # 0x42350
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movapd %xmm0, (%rdi)
movaps %xmm1, (%r14)
movq $0x0, 0x10(%r14)
callq 0x5b7a
movq %r14, %rdi
callq 0x5b7a
movq 0x270(%rsp), %rdi
testq %rdi, %rdi
je 0x1581c
callq 0x3310
movl $0x13880, %edi          # imm = 0x13880
callq 0x3320
movq %rax, %r14
movl %ebx, %ebx
movq %rax, %r15
addq $0x13880, %r15          # imm = 0x13880
movl $0x13880, %edx          # imm = 0x13880
movq %rax, %rdi
xorl %esi, %esi
callq 0x31d0
movq 0x2cb0d(%rip), %rdi     # 0x42358
movq %r14, 0x2cb06(%rip)     # 0x42358
movq %r15, 0x2cb07(%rip)     # 0x42360
movq %r15, 0x2cb08(%rip)     # 0x42368
testq %rdi, %rdi
je 0x1586a
callq 0x3310
xorl %r14d, %r14d
leaq (%r14,%r14,2), %r15
testl %ebx, %ebx
jle 0x158c0
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
movsd %xmm0, 0x28(%rsp)
xorl %r12d, %r12d
leaq 0x1(%r12), %r13
xorps %xmm0, %xmm0
cvtsi2sd %r13d, %xmm0
mulsd 0x34b8(%rsp), %xmm0
addsd 0x28(%rsp), %xmm0
callq 0x3290
movq 0x2ca92(%rip), %rax     # 0x42340
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq %r13, %r12
cmpq %r13, %rbx
jne 0x15886
movq 0x2ca79(%rip), %rax     # 0x42340
movq (%rax,%r15,8), %rax
movsd (%rax), %xmm0
movq 0x2ca82(%rip), %rax     # 0x42358
movsd %xmm0, (%rax,%r14,8)
incq %r14
cmpq $0x2710, %r14           # imm = 0x2710
jne 0x1586d
leaq 0x868(%rsp), %rdi
callq 0x2dd09
leaq 0x11d8(%rsp), %rbx
leaq 0x868(%rsp), %rdi
callq 0x2f4a7
leaq 0x868(%rsp), %rdi
callq 0x3069d
movl 0x3430(%rsp), %eax
movl 0x3434(%rsp), %esi
subl %eax, %esi
js 0x175cc
xorl %r14d, %r14d
movq %rsp, %r15
leal (%r14,%rax), %ebx
movslq %ebx, %r13
movq %r13, %rbp
negq %rbp
cmovsq %r13, %rbp
movl $0x1, %r12d
cmpq $0xa, %rbp
jb 0x159a4
movl $0x4, %r12d
movq %rbp, %rcx
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
cmpq $0x63, %rcx
jbe 0x1599b
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x159a1
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x159a4
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %r12d
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x15963
addl $-0x3, %r12d
jmp 0x159a4
addl $-0x2, %r12d
jmp 0x159a4
decl %r12d
shrq $0x3f, %r13
leal (%r12,%r13), %esi
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r15, %rdi
movl $0x2d, %edx
callq 0x33a0
addq (%rsp), %r13
movq %r13, %rdi
movl %r12d, %esi
movq %rbp, %rdx
callq 0x6dda
movl $0x5, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x21f22(%rip), %rcx     # 0x3790a
callq 0x3370
leaq 0x40(%rsp), %r12
movq %r12, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x10(%rsp), %rbp
leaq 0x4a0(%rsp), %r13
je 0x15a22
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x15a2c
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x21ec0(%rip), %rsi     # 0x37910
callq 0x35e0
movq %r13, 0x490(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x15a81
movq %rdx, 0x490(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4a0(%rsp)
jmp 0x15a8b
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x498(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x490(%rsp), %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1db19
movq 0x490(%rsp), %rdi
cmpq %r13, %rdi
je 0x15ad5
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x680(%rsp), %r13
je 0x15af1
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x15aff
callq 0x3310
cmpl $0x1, %ebx
leaq 0x11d8(%rsp), %rbx
je 0x15b1a
cmpb $0x0, 0x3470(%rsp)
je 0x15bf2
leaq 0x690(%rsp), %rax
movq %rax, 0x680(%rsp)
movq %r13, %rdi
leaq 0x21df0(%rip), %rsi     # 0x37924
leaq 0x21e08(%rip), %rdx     # 0x37943
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r13, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x680(%rsp), %rdi
leaq 0x690(%rsp), %rax
cmpq %rax, %rdi
leaq 0x868(%rsp), %r13
je 0x15b75
callq 0x3310
cmpb $0x0, 0x3438(%rsp)
je 0x15b8c
movq %r13, %rdi
movl %r14d, %esi
callq 0x10672
jmp 0x15b97
movq %r13, %rdi
movl %r14d, %esi
callq 0xfd44
leaq 0x670(%rsp), %rax
movq %rax, 0x660(%rsp)
leaq 0x660(%rsp), %r13
movq %r13, %rdi
leaq 0x21d8b(%rip), %rsi     # 0x37944
leaq 0x21d90(%rip), %rdx     # 0x37950
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r13, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x660(%rsp), %rdi
leaq 0x670(%rsp), %rax
cmpq %rax, %rdi
je 0x15bf2
callq 0x3310
leaq 0x650(%rsp), %rax
movq %rax, 0x640(%rsp)
leaq 0x640(%rsp), %r13
movq %r13, %rdi
leaq 0x21d3d(%rip), %rsi     # 0x37951
leaq 0x21d4f(%rip), %rdx     # 0x3796a
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r13, %rdi
movq %rbx, %rdx
callq 0x1db19
leaq 0x868(%rsp), %r13
movq 0x640(%rsp), %rdi
leaq 0x650(%rsp), %rax
cmpq %rax, %rdi
je 0x15c55
callq 0x3310
cmpb $0x0, 0x3438(%rsp)
je 0x15c6c
movq %r13, %rdi
movl %r14d, %esi
callq 0x197ac
jmp 0x15c77
movq %r13, %rdi
movl %r14d, %esi
callq 0x189b4
movq %r15, %r12
leaq 0x630(%rsp), %rax
movq %rax, 0x620(%rsp)
leaq 0x620(%rsp), %r15
movq %r15, %rdi
leaq 0x21ca8(%rip), %rsi     # 0x37944
leaq 0x21cad(%rip), %rdx     # 0x37950
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r15, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x620(%rsp), %rdi
leaq 0x630(%rsp), %rax
cmpq %rax, %rdi
movq %r12, %r15
je 0x15cd8
callq 0x3310
cmpb $0x1, 0x3484(%rsp)
jne 0x15dbe
leaq 0x610(%rsp), %rax
movq %rax, 0x600(%rsp)
leaq 0x600(%rsp), %r12
movq %r12, %rdi
leaq 0x21c63(%rip), %rsi     # 0x3796b
leaq 0x21c86(%rip), %rdx     # 0x37995
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x600(%rsp), %rdi
leaq 0x610(%rsp), %rax
cmpq %rax, %rdi
leaq 0x5e0(%rsp), %r12
je 0x15d49
callq 0x3310
cmpb $0x0, 0x3438(%rsp)
je 0x15d60
movq %r13, %rdi
movl %r14d, %esi
callq 0xf418
jmp 0x15d6b
movq %r13, %rdi
movl %r14d, %esi
callq 0xeea8
leaq 0x5f0(%rsp), %rax
movq %rax, 0x5e0(%rsp)
movq %r12, %rdi
leaq 0x21bbf(%rip), %rsi     # 0x37944
leaq 0x21bc4(%rip), %rdx     # 0x37950
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x5e0(%rsp), %rdi
leaq 0x5f0(%rsp), %rax
cmpq %rax, %rdi
je 0x15dbe
callq 0x3310
cmpb $0x1, 0x3498(%rsp)
jne 0x15ea4
leaq 0x5d0(%rsp), %rax
movq %rax, 0x5c0(%rsp)
leaq 0x5c0(%rsp), %r12
movq %r12, %rdi
leaq 0x21ba8(%rip), %rsi     # 0x37996
leaq 0x21bb9(%rip), %rdx     # 0x379ae
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x5c0(%rsp), %rdi
leaq 0x5d0(%rsp), %rax
cmpq %rax, %rdi
je 0x15e27
callq 0x3310
cmpb $0x0, 0x3438(%rsp)
je 0x15e3e
movq %r13, %rdi
movl %r14d, %esi
callq 0x48e6
jmp 0x15e49
movq %r13, %rdi
movl %r14d, %esi
callq 0x3cdc
leaq 0x5b0(%rsp), %rax
movq %rax, 0x5a0(%rsp)
leaq 0x5a0(%rsp), %r12
movq %r12, %rdi
leaq 0x21ad9(%rip), %rsi     # 0x37944
leaq 0x21ade(%rip), %rdx     # 0x37950
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x5a0(%rsp), %rdi
leaq 0x5b0(%rsp), %rax
cmpq %rax, %rdi
je 0x15ea4
callq 0x3310
cmpb $0x1, 0x34a8(%rsp)
jne 0x15eb9
movq %r13, %rdi
movl %r14d, %esi
callq 0x3294e
cmpb $0x1, 0x34a6(%rsp)
jne 0x15ece
movq %r13, %rdi
movl %r14d, %esi
callq 0x33930
cmpb $0x1, 0x34a7(%rsp)
jne 0x15ee3
movq %r13, %rdi
movl %r14d, %esi
callq 0x34e53
cmpb $0x1, 0x34ab(%rsp)
jne 0x15ef8
movq %r13, %rdi
movl %r14d, %esi
callq 0x3313f
cmpb $0x1, 0x34a9(%rsp)
jne 0x15f0d
movq %r13, %rdi
movl %r14d, %esi
callq 0x3477e
cmpb $0x1, 0x34aa(%rsp)
jne 0x15f22
movq %r13, %rdi
movl %r14d, %esi
callq 0x35b29
movq %r13, %rdi
movl %r14d, %esi
callq 0x313bd
cmpb $0x1, 0x34af(%rsp)
jne 0x15f42
movq %r13, %rdi
movl %r14d, %esi
callq 0x31774
cmpb $0x1, 0x34b3(%rsp)
jne 0x15f57
movq %r13, %rdi
movl %r14d, %esi
callq 0x322d3
cmpb $0x1, 0x34b4(%rsp)
jne 0x15f6c
movq %r13, %rdi
movl %r14d, %esi
callq 0x324f4
cmpb $0x1, 0x34b1(%rsp)
jne 0x15f81
movq %r13, %rdi
movl %r14d, %esi
callq 0x3268a
testq %r14, %r14
je 0x15f9c
cmpb $0x0, 0x34b2(%rsp)
je 0x15f9c
leal -0x1(%r14), %esi
movq %r13, %rdi
callq 0x328a2
leaq 0x590(%rsp), %rax
movq %rax, 0x580(%rsp)
leaq 0x580(%rsp), %r12
movq %r12, %rdi
leaq 0x219f1(%rip), %rsi     # 0x379af
leaq 0x21a10(%rip), %rdx     # 0x379d5
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x580(%rsp), %rdi
leaq 0x590(%rsp), %rax
cmpq %rax, %rdi
leaq 0x560(%rsp), %r12
je 0x15fff
callq 0x3310
cmpb $0x1, 0x3470(%rsp)
jne 0x16140
movq 0x3668(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0x1a, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x2199f(%rip), %rcx     # 0x379d6
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16064
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x1606c
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x21891(%rip), %rsi     # 0x37921
callq 0x35e0
leaq 0x340(%rsp), %rsi
movq %rsi, 0x330(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x160c9
movq %rdx, 0x330(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x340(%rsp)
jmp 0x160d1
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x338(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x330(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x1611e
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x16132
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16140
callq 0x3310
leaq 0x570(%rsp), %rax
movq %rax, 0x560(%rsp)
movq %r12, %rdi
leaq 0x21897(%rip), %rsi     # 0x379f1
leaq 0x2189d(%rip), %rdx     # 0x379fe
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x560(%rsp), %rdi
leaq 0x570(%rsp), %rax
cmpq %rax, %rdi
leaq 0x21885(%rip), %r12     # 0x37a18
je 0x1619a
callq 0x3310
movslq 0x3474(%rsp), %r13
cmpq $0x2, %r13
jl 0x1620e
movl $0x1, %ebp
cmpl $0xa, %r13d
jb 0x16387
movl $0x4, %ebp
movq %r13, %rcx
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
cmpq $0x63, %rcx
jbe 0x16380
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x16385
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x16387
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %ebp
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x161c9
addl $-0x3, %ebp
jmp 0x16387
leaq 0x550(%rsp), %rax
movq %rax, 0x540(%rsp)
leaq 0x540(%rsp), %r12
movq %r12, %rdi
leaq 0x21808(%rip), %rsi     # 0x37a38
leaq 0x2181e(%rip), %rdx     # 0x37a55
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1db19
leaq 0x470(%rsp), %r13
movq 0x540(%rsp), %rdi
leaq 0x550(%rsp), %rax
cmpq %rax, %rdi
leaq 0x217a7(%rip), %r12     # 0x37a18
je 0x16278
callq 0x3310
movq 0x3698(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0xc, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %r12, %rcx
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x162cb
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x162d3
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x2162b(%rip), %rsi     # 0x37922
callq 0x35e0
leaq 0x2c0(%rsp), %rsi
movq %rsi, 0x2b0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16330
movq %rdx, 0x2b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2c0(%rsp)
jmp 0x16338
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x2b8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x2b0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
jmp 0x1670d
addl $-0x2, %ebp
jmp 0x16387
decl %ebp
movl %ebp, %esi
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r15, %rdi
movl $0x2d, %edx
callq 0x33a0
movq (%rsp), %rdi
movl %ebp, %esi
movq %r13, %rdx
callq 0x6dda
movl $0x10, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x2163e(%rip), %rcx     # 0x379ff
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x10(%rsp), %rbp
leaq 0x470(%rsp), %r13
je 0x163fb
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16403
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x215e9(%rip), %rsi     # 0x37a10
callq 0x35e0
leaq 0x320(%rsp), %rsi
movq %rsi, 0x310(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16460
movq %rdx, 0x310(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x320(%rsp)
jmp 0x16468
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x318(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x310(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x164b5
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x164c9
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x164d7
callq 0x3310
movq 0x3698(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0xc, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %r12, %rcx
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1652a
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16532
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x213cc(%rip), %rsi     # 0x37922
callq 0x35e0
leaq 0x300(%rsp), %rsi
movq %rsi, 0x2f0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1658f
movq %rdx, 0x2f0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x300(%rsp)
jmp 0x16597
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x2f8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x2f0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x165e4
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x165f8
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16606
callq 0x3310
movq 0x36b0(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0x12, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x213f5(%rip), %rcx     # 0x37a25
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1665d
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16665
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x21299(%rip), %rsi     # 0x37922
callq 0x35e0
leaq 0x2e0(%rsp), %rsi
movq %rsi, 0x2d0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x166c2
movq %rdx, 0x2d0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2e0(%rsp)
jmp 0x166ca
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x2d8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x2d0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x16717
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1672b
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16739
callq 0x3310
leaq 0x480(%rsp), %rax
movq %rax, 0x470(%rsp)
movq %r13, %rdi
leaq 0x211cf(%rip), %rsi     # 0x37922
leaq 0x211c9(%rip), %rdx     # 0x37923
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r13, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
cmpq %rax, %rdi
leaq 0x520(%rsp), %r13
je 0x16794
callq 0x3310
leaq 0x530(%rsp), %rax
movq %rax, 0x520(%rsp)
movq %r13, %rdi
leaq 0x212a8(%rip), %rsi     # 0x37a56
leaq 0x212b4(%rip), %rdx     # 0x37a69
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r13, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x520(%rsp), %rdi
leaq 0x530(%rsp), %rax
cmpq %rax, %rdi
je 0x167e7
callq 0x3310
movslq 0x3474(%rsp), %r13
cmpq $0x2, %r13
jl 0x1685b
movl $0x1, %ebp
cmpl $0xa, %r13d
jb 0x169c6
movl $0x4, %ebp
movq %r13, %rcx
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
cmpq $0x63, %rcx
jbe 0x169bf
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x169c4
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x169c6
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %ebp
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x16816
addl $-0x3, %ebp
jmp 0x169c6
leaq 0x510(%rsp), %rax
movq %rax, 0x500(%rsp)
leaq 0x500(%rsp), %r12
movq %r12, %rdi
leaq 0x211bb(%rip), %rsi     # 0x37a38
leaq 0x211d1(%rip), %rdx     # 0x37a55
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1db19
leaq 0x400(%rsp), %r13
movq 0x500(%rsp), %rdi
leaq 0x510(%rsp), %rax
cmpq %rax, %rdi
leaq 0x2115a(%rip), %r12     # 0x37a18
je 0x168c5
callq 0x3310
movq 0x3710(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0xc, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %r12, %rcx
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16918
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16920
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x20fde(%rip), %rsi     # 0x37922
callq 0x35e0
movq %r13, 0x3f0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16975
movq %rdx, 0x3f0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x400(%rsp)
jmp 0x1697f
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x3f8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x3f0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x3f0(%rsp), %rdi
jmp 0x16d32
addl $-0x2, %ebp
jmp 0x169c6
decl %ebp
movl %ebp, %esi
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r15, %rdi
movl $0x2d, %edx
callq 0x33a0
movq (%rsp), %rdi
movl %ebp, %esi
movq %r13, %rdx
callq 0x6dda
movl $0x10, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x20fff(%rip), %rcx     # 0x379ff
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x10(%rsp), %rbp
leaq 0x460(%rsp), %r13
je 0x16a3a
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16a42
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x20faa(%rip), %rsi     # 0x37a10
callq 0x35e0
movq %r13, 0x450(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16a97
movq %rdx, 0x450(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x460(%rsp)
jmp 0x16aa1
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x458(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x450(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x450(%rsp), %rdi
cmpq %r13, %rdi
je 0x16ae6
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x440(%rsp), %r13
je 0x16b02
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16b10
callq 0x3310
movq 0x3710(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0xc, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %r12, %rcx
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16b63
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16b6b
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x20d93(%rip), %rsi     # 0x37922
callq 0x35e0
movq %r13, 0x430(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16bc0
movq %rdx, 0x430(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x440(%rsp)
jmp 0x16bca
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x438(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x430(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x430(%rsp), %rdi
cmpq %r13, %rdi
je 0x16c0f
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x420(%rsp), %r13
je 0x16c2b
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16c39
callq 0x3310
movq 0x3728(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0x12, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x20dc2(%rip), %rcx     # 0x37a25
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16c90
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16c98
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x20c66(%rip), %rsi     # 0x37922
callq 0x35e0
movq %r13, 0x410(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16ced
movq %rdx, 0x410(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x420(%rsp)
jmp 0x16cf7
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x418(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x410(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x410(%rsp), %rdi
cmpq %r13, %rdi
je 0x16d3c
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x710(%rsp), %r13
je 0x16d58
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16d66
callq 0x3310
movq %r13, 0x700(%rsp)
leaq 0x700(%rsp), %r12
movq %r12, %rdi
leaq 0x20ba2(%rip), %rsi     # 0x37922
leaq 0x20b9c(%rip), %rdx     # 0x37923
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x700(%rsp), %rdi
cmpq %r13, %rdi
leaq 0x4e0(%rsp), %r12
je 0x16db9
callq 0x3310
cmpb $0x1, 0x3484(%rsp)
leaq 0x3e0(%rsp), %r13
jne 0x1707d
leaq 0x4f0(%rsp), %rax
movq %rax, 0x4e0(%rsp)
movq %r12, %rdi
leaq 0x20c81(%rip), %rsi     # 0x37a6a
leaq 0x20c9b(%rip), %rdx     # 0x37a8b
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x4e0(%rsp), %rdi
leaq 0x4f0(%rsp), %rax
cmpq %rax, %rdi
leaq 0x20bf6(%rip), %r12     # 0x37a18
je 0x16e29
callq 0x3310
movq 0x3788(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0xc, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %r12, %rcx
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16e7c
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16e84
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x20a7a(%rip), %rsi     # 0x37922
callq 0x35e0
movq %r13, 0x3d0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16ed9
movq %rdx, 0x3d0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x3e0(%rsp)
jmp 0x16ee3
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x3d8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x3d0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x3d0(%rsp), %rdi
cmpq %r13, %rdi
je 0x16f28
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x16f3c
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16f4a
callq 0x3310
movq 0x37a0(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0x12, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x20ab1(%rip), %rcx     # 0x37a25
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16fa1
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16fa9
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x20954(%rip), %rsi     # 0x37921
callq 0x35e0
leaq 0x2a0(%rsp), %rsi
movq %rsi, 0x290(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x17006
movq %rdx, 0x290(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2a0(%rsp)
jmp 0x1700e
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x298(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x290(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x1705b
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1706f
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x1707d
callq 0x3310
cmpb $0x1, 0x34b1(%rsp)
leaq 0x3c0(%rsp), %r13
leaq 0x4c0(%rsp), %r12
jne 0x1759a
leaq 0x4d0(%rsp), %rax
movq %rax, 0x4c0(%rsp)
movq %r12, %rdi
leaq 0x209d7(%rip), %rsi     # 0x37a8c
leaq 0x209ec(%rip), %rdx     # 0x37aa8
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
cmpq %rax, %rdi
je 0x170ee
callq 0x3310
movq 0x38e0(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0x7, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x20991(%rip), %rcx     # 0x37aa9
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x17145
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x1714d
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x207b1(%rip), %rsi     # 0x37922
callq 0x35e0
movq %r13, 0x3b0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x171a2
movq %rdx, 0x3b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x3c0(%rsp)
jmp 0x171ac
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x3b8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x3b0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x3b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x171f1
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x3a0(%rsp), %r13
je 0x1720d
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x1721b
callq 0x3310
movq 0x38f8(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0x7, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x2086c(%rip), %rcx     # 0x37ab1
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x17272
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x1727a
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x20684(%rip), %rsi     # 0x37922
callq 0x35e0
movq %r13, 0x390(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x172cf
movq %rdx, 0x390(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x3a0(%rsp)
jmp 0x172d9
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x398(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x390(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x390(%rsp), %rdi
cmpq %r13, %rdi
je 0x1731e
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x380(%rsp), %r13
je 0x1733a
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x17348
callq 0x3310
movq 0x3910(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0x19, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x20747(%rip), %rcx     # 0x37ab9
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1739f
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x173a7
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x20557(%rip), %rsi     # 0x37922
callq 0x35e0
movq %r13, 0x370(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x173fc
movq %rdx, 0x370(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x380(%rsp)
jmp 0x17406
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x378(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x370(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x370(%rsp), %rdi
cmpq %r13, %rdi
je 0x1744b
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x360(%rsp), %r13
je 0x17467
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x17475
callq 0x3310
movq 0x3928(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c630
movl $0x12, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x20634(%rip), %rcx     # 0x37ad3
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x174cc
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x174d4
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rdi
leaq 0x20429(%rip), %rsi     # 0x37921
callq 0x35e0
movq %r13, 0x350(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x17529
movq %rdx, 0x350(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x360(%rsp)
jmp 0x17533
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x358(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x350(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x350(%rsp), %rdi
cmpq %r13, %rdi
je 0x17578
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1758c
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x1759a
callq 0x3310
movq 0x2a9d7(%rip), %rax     # 0x41f78
movq (%rax), %rdi
callq 0x33b0
leaq 0x1(%r14), %rcx
movslq 0x3434(%rsp), %rsi
movslq 0x3430(%rsp), %rax
subq %rax, %rsi
cmpq %rsi, %r14
movq %rcx, %r14
jl 0x15933
cmpb $0x0, 0x34b2(%rsp)
je 0x175e3
leaq 0x868(%rsp), %rdi
callq 0x328a2
cmpb $0x1, 0x34ae(%rsp)
jne 0x175fa
leaq 0x868(%rsp), %rdi
callq 0x319eb
leaq 0x860(%rsp), %r14
movq %r14, %rdi
callq 0x32f0
movq (%r14), %rdi
movq 0x4b0(%rsp), %rsi
callq 0x3180
movsd %xmm0, 0x28(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x3400
leaq 0x204b5(%rip), %rsi     # 0x37ae6
leaq 0x30(%rsp), %rdi
movl $0x23, %edx
callq 0x3390
cvttsd2si 0x28(%rsp), %ebp
leaq 0x30(%rsp), %rdi
movl %ebp, %esi
callq 0x3550
leaq 0x204b1(%rip), %rsi     # 0x37b0a
movl $0x9, %edx
movq %rax, %rdi
callq 0x3390
leaq 0x38(%rsp), %rsi
movq %rsp, %rdi
callq 0x3490
testl %ebp, %ebp
js 0x176be
leaq 0x750(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x740(%rsp), %rdi
callq 0xbe10
movzbl 0x34a4(%rsp), %esi
leaq 0x740(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x740(%rsp), %rdi
jmp 0x17705
leaq 0x770(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x20443(%rip), %rsi     # 0x37b14
leaq 0x20464(%rip), %rdx     # 0x37b3c
leaq 0x760(%rsp), %rdi
callq 0x6e56
movzbl 0x34a4(%rsp), %esi
leaq 0x760(%rsp), %rdi
movq %rbx, %rdx
callq 0x1db19
movq 0x760(%rsp), %rdi
cmpq %r14, %rdi
je 0x1770f
callq 0x3310
leaq 0xb28(%rsp), %rdx
leaq 0x2041f(%rip), %rsi     # 0x37b3d
leaq 0x270(%rsp), %rdi
callq 0xf984
leaq 0x260(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x201e4(%rip), %rsi     # 0x37922
leaq 0x201de(%rip), %rdx     # 0x37923
leaq 0x250(%rsp), %rdi
callq 0x6e56
leaq 0x280(%rsp), %rbx
movq -0x10(%rbx), %rcx
movq -0x8(%rbx), %r8
movq 0x258(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %rbx, %rcx
je 0x17780
movq 0x280(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x177a1
movl $0xf, %esi
cmpq %r14, 0x250(%rsp)
je 0x1779c
movq 0x260(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x177b8
movq 0x250(%rsp), %rsi
leaq 0x270(%rsp), %rdi
callq 0x30e0
jmp 0x177c9
leaq 0x250(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
leaq 0x240(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x177f6
movq %rsi, 0x230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x240(%rsp)
jmp 0x177fe
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x238(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movzbl 0x34a4(%rsp), %esi
leaq 0x230(%rsp), %rdi
leaq 0x11d8(%rsp), %rdx
callq 0x1db19
leaq 0x240(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17851
callq 0x3310
movq 0x250(%rsp), %rdi
cmpq %r14, %rdi
je 0x17863
callq 0x3310
movq 0x270(%rsp), %rdi
cmpq %rbx, %rdi
je 0x17875
callq 0x3310
leaq 0x730(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1ff0f(%rip), %rsi     # 0x37797
leaq 0x1ff33(%rip), %rdx     # 0x377c2
leaq 0x720(%rsp), %rdi
callq 0x6e56
leaq 0x11d8(%rsp), %rdx
movzbl 0x34a4(%rsp), %esi
leaq 0x720(%rsp), %rdi
callq 0x1db19
movq 0x720(%rsp), %rdi
cmpq %r14, %rdi
je 0x178cb
callq 0x3310
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x178de
callq 0x3310
movq 0x2a6cb(%rip), %rsi     # 0x41fb0
leaq 0x30(%rsp), %rdi
callq 0x31b0
leaq 0xa0(%rsp), %rdi
callq 0x30f0
leaq 0x868(%rsp), %rdi
callq 0x17f8a
xorl %eax, %eax
addq $0x3988, %rsp           # imm = 0x3988
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x760(%rsp), %rdi
jmp 0x1796d
jmp 0x179c3
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x3440
jmp 0x17941
movq %rax, %rbx
movq 0x800(%rsp), %rdi
jmp 0x17e72
jmp 0x17f63
movq %rax, %rbx
movq 0x740(%rsp), %rdi
jmp 0x1796d
jmp 0x179c3
movq %rax, %rbx
movq 0x720(%rsp), %rdi
cmpq %r14, %rdi
jne 0x179bc
jmp 0x179c6
jmp 0x179c3
movq %rax, %rbx
leaq 0x240(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17994
callq 0x3310
jmp 0x17994
movq %rax, %rbx
movq 0x250(%rsp), %rdi
cmpq %r14, %rdi
je 0x179ab
callq 0x3310
jmp 0x179ab
movq %rax, %rbx
leaq 0x280(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x179c6
callq 0x3310
jmp 0x179c6
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17ab5
callq 0x3310
jmp 0x17ab5
jmp 0x17ab2
jmp 0x17f63
jmp 0x17f63
movq %rax, %rbx
movq 0x270(%rsp), %rdi
testq %rdi, %rdi
jne 0x17f2e
jmp 0x17f66
jmp 0x17f63
movq %rax, %rbx
movq 0x780(%rsp), %rdi
jmp 0x17a50
jmp 0x17f63
movq %rax, %rbx
movq 0x7a0(%rsp), %rdi
jmp 0x17a50
jmp 0x17f63
movq %rax, %rbx
movq 0x7c0(%rsp), %rdi
jmp 0x17a50
jmp 0x17f63
movq %rax, %rbx
movq 0x7e0(%rsp), %rdi
cmpq %r14, %rdi
jne 0x17f2e
jmp 0x17f66
jmp 0x17f63
movq %rax, %rbx
movq 0x820(%rsp), %rdi
cmpq %r15, %rdi
je 0x17a7d
callq 0x3310
jmp 0x17a7d
movq %rax, %rbx
movq 0x840(%rsp), %rdi
cmpq %r14, %rdi
je 0x17aa3
callq 0x3310
jmp 0x17aa3
jmp 0x17f63
jmp 0x17f63
jmp 0x17f63
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
jmp 0x17f29
movq %rax, %rbx
movq 0x2a4f4(%rip), %rsi     # 0x41fb0
leaq 0x30(%rsp), %rdi
callq 0x31b0
leaq 0xa0(%rsp), %rdi
callq 0x30f0
jmp 0x17f66
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17ef2
movq %rax, %rbx
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
jmp 0x17df8
jmp 0x17eed
movq %rax, %rbx
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
jmp 0x17df8
jmp 0x17eed
movq %rax, %rbx
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
jmp 0x17df8
movq %rax, %rbx
movq 0x500(%rsp), %rdi
leaq 0x510(%rsp), %rax
jmp 0x17f29
jmp 0x17eed
movq %rax, %rbx
movq 0x3f0(%rsp), %rdi
jmp 0x17f02
jmp 0x17eed
movq %rax, %rbx
movq 0x450(%rsp), %rdi
jmp 0x17f02
jmp 0x17eed
movq %rax, %rbx
movq 0x430(%rsp), %rdi
jmp 0x17f02
jmp 0x17eed
movq %rax, %rbx
movq 0x410(%rsp), %rdi
jmp 0x17f02
movq %rax, %rbx
movq 0x4e0(%rsp), %rdi
leaq 0x4f0(%rsp), %rax
jmp 0x17f29
jmp 0x17eed
movq %rax, %rbx
movq 0x3d0(%rsp), %rdi
jmp 0x17f02
jmp 0x17eed
movq %rax, %rbx
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
jmp 0x17df8
movq %rax, %rbx
movq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
jmp 0x17f29
jmp 0x17eed
movq %rax, %rbx
movq 0x3b0(%rsp), %rdi
jmp 0x17f02
jmp 0x17eed
movq %rax, %rbx
movq 0x390(%rsp), %rdi
jmp 0x17f02
jmp 0x17eed
movq %rax, %rbx
movq 0x370(%rsp), %rdi
jmp 0x17f02
movq %rax, %rbx
movq 0x350(%rsp), %rdi
jmp 0x17f02
jmp 0x17eed
jmp 0x17f63
jmp 0x17f63
jmp 0x17f63
jmp 0x17f63
jmp 0x17f63
jmp 0x17f63
jmp 0x17f63
jmp 0x17ef2
jmp 0x17f63
jmp 0x17f63
jmp 0x17f63
jmp 0x17ef2
movq %rax, %rbx
movq 0x680(%rsp), %rdi
leaq 0x690(%rsp), %rax
jmp 0x17f29
movq %rax, %rbx
movq 0x660(%rsp), %rdi
leaq 0x670(%rsp), %rax
jmp 0x17f29
movq %rax, %rbx
movq 0x600(%rsp), %rdi
leaq 0x610(%rsp), %rax
jmp 0x17f29
movq %rax, %rbx
movq 0x5e0(%rsp), %rdi
leaq 0x5f0(%rsp), %rax
jmp 0x17f29
movq %rax, %rbx
movq 0x5c0(%rsp), %rdi
leaq 0x5d0(%rsp), %rax
jmp 0x17f29
movq %rax, %rbx
movq 0x5a0(%rsp), %rdi
leaq 0x5b0(%rsp), %rax
jmp 0x17f29
jmp 0x17eed
movq %rax, %rbx
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
jmp 0x17df8
movq %rax, %rbx
movq 0x540(%rsp), %rdi
leaq 0x550(%rsp), %rax
jmp 0x17f29
jmp 0x17eed
jmp 0x17eed
movq %rax, %rbx
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
jne 0x17f07
jmp 0x17f0c
jmp 0x17f63
jmp 0x17f63
movq %rax, %rbx
movq 0x6e0(%rsp), %rdi
leaq 0x6f0(%rsp), %rax
jmp 0x17f29
jmp 0x17f63
movq %rax, %rbx
movq 0x6c0(%rsp), %rdi
leaq 0x6d0(%rsp), %rax
jmp 0x17f29
jmp 0x17f63
movq %rax, %rbx
movq 0x6a0(%rsp), %rdi
leaq 0x6b0(%rsp), %rax
jmp 0x17f29
jmp 0x17f63
movq %rax, %rbx
movq 0x700(%rsp), %rdi
cmpq %r13, %rdi
jne 0x17f2e
jmp 0x17f66
jmp 0x17f63
movq %rax, %rbx
movq 0x580(%rsp), %rdi
leaq 0x590(%rsp), %rax
jmp 0x17f29
jmp 0x17f63
movq %rax, %rbx
movq 0x560(%rsp), %rdi
leaq 0x570(%rsp), %rax
jmp 0x17f29
jmp 0x17f63
movq %rax, %rbx
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
jmp 0x17f29
jmp 0x17f63
movq %rax, %rbx
movq 0x520(%rsp), %rdi
leaq 0x530(%rsp), %rax
jmp 0x17f29
jmp 0x17f63
movq %rax, %rbx
jmp 0x17f20
movq %rax, %rbx
jmp 0x17f0c
movq %rax, %rbx
movq 0x490(%rsp), %rdi
cmpq %r13, %rdi
je 0x17f0c
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x17f20
callq 0x3310
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x17f66
callq 0x3310
jmp 0x17f66
jmp 0x17f63
movq %rax, %rbx
movq 0x640(%rsp), %rdi
leaq 0x650(%rsp), %rax
jmp 0x17f29
jmp 0x17f63
movq %rax, %rbx
movq 0x620(%rsp), %rdi
leaq 0x630(%rsp), %rax
jmp 0x17f29
movq %rax, %rbx
leaq 0x868(%rsp), %rdi
callq 0x17f8a
movq %rbx, %rdi
callq 0x3580
nop