// File: /workspace/github_cpp_makefile_star2_O3/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 0x2c2f9(%rip), %r14     # 0x40fb8
leaq 0x21ad1(%rip), %rsi     # 0x36797
movl $0x2b, %edx
movq %r14, %rdi
callq 0x3390
leaq 0x21ae9(%rip), %rsi     # 0x367c3
movl $0x18, %edx
movq %r14, %rdi
callq 0x3390
leaq 0x21aee(%rip), %rsi     # 0x367dc
movl $0x28, %edx
movq %r14, %rdi
callq 0x3390
leaq 0x21b03(%rip), %rsi     # 0x36805
movl $0x25, %edx
movq %r14, %rdi
callq 0x3390
leaq 0x21b15(%rip), %rsi     # 0x3682b
movl $0x9, %edx
movq %r14, %rdi
callq 0x3390
movq %r15, %rdi
callq 0x3110
testq %rax, %rax
je 0x14d4f
movq %rax, %r15
movq %rax, %rdi
callq 0x3140
movq 0x2c276(%rip), %rdi     # 0x40fb8
movq %r15, %rsi
movq %rax, %rdx
callq 0x3390
jmp 0x14d67
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x3520
movq 0x2c24a(%rip), %rdi     # 0x40fb8
leaq 0x21ac0(%rip), %rsi     # 0x36835
movl $0x2c, %edx
callq 0x3390
leaq 0x4b0(%rsp), %rdi
callq 0x32f0
leaq 0x868(%rsp), %rdi
callq 0x1103c
cmpl $0x2, %ebp
jl 0x14ed4
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 0x21a88(%rip), %rsi     # 0x36862
leaq 0x21a8c(%rip), %rdx     # 0x3686d
callq 0x6d9c
movq %r12, %rdi
leaq 0x868(%rsp), %rsi
movl %ebp, %edx
movq %rbx, %rcx
movl %r15d, %r8d
callq 0x1dcf0
movq 0x6e0(%rsp), %rdi
leaq 0x6f0(%rsp), %rax
cmpq %rax, %rdi
je 0x14e18
callq 0x3310
leaq 0x6d0(%rsp), %rax
movq %rax, 0x6c0(%rsp)
movq %r14, %rdi
leaq 0x21a3c(%rip), %rsi     # 0x3686e
leaq 0x21a3f(%rip), %rdx     # 0x36878
callq 0x6d9c
movq %r14, %rdi
leaq 0x888(%rsp), %rsi
movl %ebp, %edx
movq %rbx, %rcx
movl %r15d, %r8d
callq 0x1dcf0
movq 0x6c0(%rsp), %rdi
leaq 0x6d0(%rsp), %rax
cmpq %rax, %rdi
je 0x14e70
callq 0x3310
leaq 0x6b0(%rsp), %rax
movq %rax, 0x6a0(%rsp)
movq %r13, %rdi
leaq 0x219ef(%rip), %rsi     # 0x36879
leaq 0x219f3(%rip), %rdx     # 0x36884
callq 0x6d9c
movq %r13, %rdi
leaq 0x8e8(%rsp), %rsi
movl %ebp, %edx
movq %rbx, %rcx
movl %r15d, %r8d
callq 0x1dcf0
movq 0x6a0(%rsp), %rdi
leaq 0x6b0(%rsp), %rax
cmpq %rax, %rdi
je 0x14ec8
callq 0x3310
incl %r15d
cmpl %r15d, %ebp
jne 0x14dc0
leaq 0x888(%rsp), %rdx
leaq 0x30(%rsp), %rdi
leaq 0x868(%rsp), %rsi
callq 0x147aa
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 0x14f18
callq 0x3310
leaq 0x8e8(%rsp), %rdx
leaq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0x147aa
leaq 0xb68(%rsp), %rdi
leaq 0x30(%rsp), %r14
movq %r14, %rsi
callq 0x33e0
movq (%r14), %rdi
cmpq %r12, %rdi
je 0x14f4f
callq 0x3310
leaq 0x868(%rsp), %rdi
callq 0x1de7c
leaq 0x868(%rsp), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x2102c
leaq 0x30(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x2165e(%rip), %rsi     # 0x365db
leaq 0x21663(%rip), %rdx     # 0x365e7
callq 0x6d9c
leaq 0x33d8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x147fe
leaq 0x850(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x840(%rsp), %rdi
callq 0xbb9a
leaq 0x830(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2160a(%rip), %rsi     # 0x365db
leaq 0x2160f(%rip), %rdx     # 0x365e7
leaq 0x820(%rsp), %rdi
callq 0x6d9c
leaq 0x34a4(%rsp), %rsi
leaq 0x11d8(%rsp), %rbx
leaq 0x840(%rsp), %rdi
leaq 0x820(%rsp), %rdx
xorl %ecx, %ecx
movq %rbx, %r8
callq 0x1b9a2
movq 0x820(%rsp), %rdi
cmpq %r15, %rdi
je 0x15021
callq 0x3310
movq 0x840(%rsp), %rdi
cmpq %r14, %rdi
je 0x15033
callq 0x3310
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x15042
callq 0x3310
cmpb $0x1, 0x34a4(%rsp)
jne 0x1525e
leaq 0x810(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0xb88(%rsp), %rsi
movq 0xb90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x800(%rsp), %rdi
callq 0xbb9a
leaq 0x30(%rsp), %r15
leaq 0x800(%rsp), %rsi
movq %r15, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x2eff8
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 0x2becf(%rip), %rax     # 0x40fa0
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 0x15112
callq 0x3310
leaq 0x2167e(%rip), %rsi     # 0x36797
movl $0x2b, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x21696(%rip), %rsi     # 0x367c3
movl $0x18, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x2169b(%rip), %rsi     # 0x367dc
movl $0x28, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x216b0(%rip), %rsi     # 0x36805
movl $0x25, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x216c2(%rip), %rsi     # 0x3682b
movl $0x9, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x4b8(%rsp), %rdi
callq 0x3110
testq %rax, %rax
je 0x151a3
movq %rax, %r14
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x3390
jmp 0x151c2
movq 0x11d8(%rsp), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x11f8(%rsp,%rax), %esi
orl $0x1, %esi
callq 0x3520
leaq 0x2166c(%rip), %rsi     # 0x36835
movl $0x2c, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x216a8(%rip), %rsi     # 0x36885
movl $0x11, %edx
movq %rbx, %rdi
callq 0x3390
movq 0xb68(%rsp), %rsi
movq 0xb70(%rsp), %rdx
movq %rbx, %rdi
callq 0x3390
leaq 0x21718(%rip), %rsi     # 0x36921
movl $0x2, %edx
movq %rax, %rdi
callq 0x3390
leaq 0x2167a(%rip), %rsi     # 0x36897
movl $0xb, %edx
movq %rbx, %rdi
callq 0x3390
movq 0xb48(%rsp), %rsi
movq 0xb50(%rsp), %rdx
movq %rbx, %rdi
callq 0x3390
leaq 0x216d9(%rip), %rsi     # 0x36922
movl $0x1, %edx
movq %rax, %rdi
callq 0x3390
movq %rbx, %rdi
callq 0x31f0
leaq 0x7f0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x21632(%rip), %rsi     # 0x368a3
leaq 0x2164d(%rip), %rdx     # 0x368c5
leaq 0x7e0(%rsp), %rdi
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
leaq 0x7e0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1d7a4
movq 0x7e0(%rsp), %rdi
cmpq %r14, %rdi
je 0x152af
callq 0x3310
leaq 0x868(%rsp), %rdi
xorl %esi, %esi
callq 0x22d57
leaq 0x7d0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x215f5(%rip), %rsi     # 0x368c6
leaq 0x2160c(%rip), %rdx     # 0x368e4
leaq 0x7c0(%rsp), %rdi
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
leaq 0x7c0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1d7a4
movq 0x7c0(%rsp), %rdi
cmpq %r14, %rdi
je 0x1530f
callq 0x3310
leaq 0x868(%rsp), %rdi
movl $0x1, %esi
callq 0x22d57
leaq 0x7b0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x215b1(%rip), %rsi     # 0x368e5
leaq 0x215ce(%rip), %rdx     # 0x36909
leaq 0x7a0(%rsp), %rdi
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
leaq 0x7a0(%rsp), %rdi
movq %rbx, %rdx
callq 0x1d7a4
movq 0x7a0(%rsp), %rdi
cmpq %r14, %rdi
je 0x15372
callq 0x3310
leaq 0x868(%rsp), %rdi
movl $0x2, %esi
callq 0x22d57
leaq 0x790(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x2158b(%rip), %rsi     # 0x36922
leaq 0x21585(%rip), %rdx     # 0x36923
leaq 0x780(%rsp), %rdi
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
leaq 0x780(%rsp), %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x780(%rsp), %rdi
cmpq %r14, %rdi
je 0x153d5
callq 0x3310
leaq 0x868(%rsp), %rdi
callq 0x2a9c9
movq 0x3588(%rsp), %rax
movq 0x3590(%rsp), %rcx
cmpq %rcx, %rax
sete %sil
movq %rax, %rdx
addq $0x4, %rdx
cmpq %rcx, %rdx
sete %dil
orb %sil, %dil
jne 0x15422
movl (%rax), %esi
movl (%rdx), %edi
cmpl %edi, %esi
cmovlel %edi, %esi
cmovlq %rdx, %rax
addq $0x4, %rdx
cmpq %rcx, %rdx
jne 0x1540e
movslq (%rax), %rbx
leaq 0x1(%rbx), %rsi
leaq 0x250(%rsp), %rdi
leaq 0x330(%rsp), %rdx
callq 0x588e
movq %rsp, %rdi
leaq 0x250(%rsp), %rdx
leaq 0x27(%rsp), %rcx
movl $0x2710, %esi           # imm = 0x2710
callq 0x591c
movq 0x2bef1(%rip), %rax     # 0x41350
movq %rsp, %r14
movapd (%r14), %xmm0
movq 0x10(%r14), %rcx
movq %rcx, 0x2bede(%rip)     # 0x41350
movaps 0x2bec7(%rip), %xmm1    # 0x41340
movapd %xmm0, 0x2bebf(%rip)    # 0x41340
leaq 0x30(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorpd %xmm0, %xmm0
movapd %xmm0, (%r14)
movq $0x0, 0x10(%r14)
callq 0x5ae8
movq %r14, %rdi
callq 0x5ae8
movq 0x250(%rsp), %rdi
testq %rdi, %rdi
je 0x154bd
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 0x2be6c(%rip), %rdi     # 0x41358
movq %r14, 0x2be65(%rip)     # 0x41358
movq %r15, 0x2be66(%rip)     # 0x41360
movq %r15, 0x2be67(%rip)     # 0x41368
testq %rdi, %rdi
je 0x1550b
callq 0x3310
xorl %r14d, %r14d
leaq (%r14,%r14,2), %r15
testl %ebx, %ebx
jle 0x15563
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 0x2bdf1(%rip), %rax     # 0x41340
movq (%rax,%r15,8), %rax
movsd %xmm0, (%rax,%r12,8)
movq %r13, %r12
cmpq %r13, %rbx
jne 0x15527
jmp 0x1556e
movq 0x2bdd6(%rip), %rax     # 0x41340
movq (%rax,%r15,8), %rax
movsd (%rax), %xmm0
movq 0x2bddf(%rip), %rax     # 0x41358
movsd %xmm0, (%rax,%r14,8)
incq %r14
cmpq $0x2710, %r14           # imm = 0x2710
jne 0x1550e
leaq 0x868(%rsp), %rdi
callq 0x2d9e2
leaq 0x868(%rsp), %rdi
callq 0x2f10b
leaq 0x868(%rsp), %rdi
callq 0x3016d
movl 0x3430(%rsp), %ebx
movl 0x3434(%rsp), %esi
subl %ebx, %esi
js 0x17266
xorl %r14d, %r14d
movq %rsp, %r15
addl %r14d, %ebx
movslq %ebx, %r13
movq %r13, %rbp
negq %rbp
cmovsq %r13, %rbp
movl $0x1, %r12d
cmpq $0xa, %rbp
jb 0x1563e
movl $0x4, %r12d
movq %rbp, %rcx
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
cmpq $0x63, %rcx
jbe 0x15635
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x1563b
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x1563e
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %r12d
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x155fd
addl $-0x3, %r12d
jmp 0x1563e
addl $-0x2, %r12d
jmp 0x1563e
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 0x6d20
movl $0x5, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x21288(%rip), %rcx     # 0x3690a
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 0x156bc
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x156c6
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 0x21226(%rip), %rsi     # 0x36910
callq 0x35e0
movq %r13, 0x490(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1571b
movq %rdx, 0x490(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4a0(%rsp)
jmp 0x15725
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 0x1d7c5
movq 0x490(%rsp), %rdi
cmpq %r13, %rdi
je 0x1576f
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x680(%rsp), %r13
je 0x1578b
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x15799
callq 0x3310
cmpl $0x1, %ebx
leaq 0x11d8(%rsp), %rbx
je 0x157b4
cmpb $0x0, 0x3470(%rsp)
je 0x1588c
leaq 0x690(%rsp), %rax
movq %rax, 0x680(%rsp)
movq %r13, %rdi
leaq 0x21156(%rip), %rsi     # 0x36924
leaq 0x2116e(%rip), %rdx     # 0x36943
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r13, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x680(%rsp), %rdi
leaq 0x690(%rsp), %rax
cmpq %rax, %rdi
leaq 0x868(%rsp), %r13
je 0x1580f
callq 0x3310
cmpb $0x0, 0x3438(%rsp)
je 0x15826
movq %r13, %rdi
movl %r14d, %esi
callq 0x10307
jmp 0x15831
movq %r13, %rdi
movl %r14d, %esi
callq 0xf9b8
leaq 0x670(%rsp), %rax
movq %rax, 0x660(%rsp)
leaq 0x660(%rsp), %r13
movq %r13, %rdi
leaq 0x210f1(%rip), %rsi     # 0x36944
leaq 0x210f6(%rip), %rdx     # 0x36950
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r13, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x660(%rsp), %rdi
leaq 0x670(%rsp), %rax
cmpq %rax, %rdi
je 0x1588c
callq 0x3310
leaq 0x650(%rsp), %rax
movq %rax, 0x640(%rsp)
leaq 0x640(%rsp), %r13
movq %r13, %rdi
leaq 0x210a3(%rip), %rsi     # 0x36951
leaq 0x210b5(%rip), %rdx     # 0x3696a
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r13, %rdi
movq %rbx, %rdx
callq 0x1d7c5
leaq 0x868(%rsp), %r13
movq 0x640(%rsp), %rdi
leaq 0x650(%rsp), %rax
cmpq %rax, %rdi
je 0x158ef
callq 0x3310
cmpb $0x0, 0x3438(%rsp)
je 0x15906
movq %r13, %rdi
movl %r14d, %esi
callq 0x1947a
jmp 0x15911
movq %r13, %rdi
movl %r14d, %esi
callq 0x18650
movq %r15, %r12
leaq 0x630(%rsp), %rax
movq %rax, 0x620(%rsp)
leaq 0x620(%rsp), %r15
movq %r15, %rdi
leaq 0x2100e(%rip), %rsi     # 0x36944
leaq 0x21013(%rip), %rdx     # 0x36950
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r15, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x620(%rsp), %rdi
leaq 0x630(%rsp), %rax
cmpq %rax, %rdi
movq %r12, %r15
je 0x15972
callq 0x3310
cmpb $0x1, 0x3484(%rsp)
jne 0x15a58
leaq 0x610(%rsp), %rax
movq %rax, 0x600(%rsp)
leaq 0x600(%rsp), %r12
movq %r12, %rdi
leaq 0x20fc9(%rip), %rsi     # 0x3696b
leaq 0x20fec(%rip), %rdx     # 0x36995
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x600(%rsp), %rdi
leaq 0x610(%rsp), %rax
cmpq %rax, %rdi
leaq 0x5e0(%rsp), %r12
je 0x159e3
callq 0x3310
cmpb $0x0, 0x3438(%rsp)
je 0x159fa
movq %r13, %rdi
movl %r14d, %esi
callq 0xf025
jmp 0x15a05
movq %r13, %rdi
movl %r14d, %esi
callq 0xea5c
leaq 0x5f0(%rsp), %rax
movq %rax, 0x5e0(%rsp)
movq %r12, %rdi
leaq 0x20f25(%rip), %rsi     # 0x36944
leaq 0x20f2a(%rip), %rdx     # 0x36950
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x5e0(%rsp), %rdi
leaq 0x5f0(%rsp), %rax
cmpq %rax, %rdi
je 0x15a58
callq 0x3310
cmpb $0x1, 0x3498(%rsp)
jne 0x15b3e
leaq 0x5d0(%rsp), %rax
movq %rax, 0x5c0(%rsp)
leaq 0x5c0(%rsp), %r12
movq %r12, %rdi
leaq 0x20f0e(%rip), %rsi     # 0x36996
leaq 0x20f1f(%rip), %rdx     # 0x369ae
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x5c0(%rsp), %rdi
leaq 0x5d0(%rsp), %rax
cmpq %rax, %rdi
je 0x15ac1
callq 0x3310
cmpb $0x0, 0x3438(%rsp)
je 0x15ad8
movq %r13, %rdi
movl %r14d, %esi
callq 0x48aa
jmp 0x15ae3
movq %r13, %rdi
movl %r14d, %esi
callq 0x3cdc
leaq 0x5b0(%rsp), %rax
movq %rax, 0x5a0(%rsp)
leaq 0x5a0(%rsp), %r12
movq %r12, %rdi
leaq 0x20e3f(%rip), %rsi     # 0x36944
leaq 0x20e44(%rip), %rdx     # 0x36950
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x5a0(%rsp), %rdi
leaq 0x5b0(%rsp), %rax
cmpq %rax, %rdi
je 0x15b3e
callq 0x3310
cmpb $0x1, 0x34a8(%rsp)
jne 0x15b53
movq %r13, %rdi
movl %r14d, %esi
callq 0x323ae
cmpb $0x1, 0x34a6(%rsp)
jne 0x15b68
movq %r13, %rdi
movl %r14d, %esi
callq 0x33340
cmpb $0x1, 0x34a7(%rsp)
jne 0x15b7d
movq %r13, %rdi
movl %r14d, %esi
callq 0x3486c
cmpb $0x1, 0x34ab(%rsp)
jne 0x15b92
movq %r13, %rdi
movl %r14d, %esi
callq 0x32b77
cmpb $0x1, 0x34a9(%rsp)
jne 0x15ba7
movq %r13, %rdi
movl %r14d, %esi
callq 0x34199
cmpb $0x1, 0x34aa(%rsp)
jne 0x15bbc
movq %r13, %rdi
movl %r14d, %esi
callq 0x35543
movq %r13, %rdi
movl %r14d, %esi
callq 0x30e88
cmpb $0x1, 0x34af(%rsp)
jne 0x15bdc
movq %r13, %rdi
movl %r14d, %esi
callq 0x3123f
cmpb $0x1, 0x34b3(%rsp)
jne 0x15bf1
movq %r13, %rdi
movl %r14d, %esi
callq 0x31d47
cmpb $0x1, 0x34b4(%rsp)
jne 0x15c06
movq %r13, %rdi
movl %r14d, %esi
callq 0x31f67
cmpb $0x1, 0x34b1(%rsp)
jne 0x15c1b
movq %r13, %rdi
movl %r14d, %esi
callq 0x320ea
testq %r14, %r14
je 0x15c36
cmpb $0x0, 0x34b2(%rsp)
je 0x15c36
leal -0x1(%r14), %esi
movq %r13, %rdi
callq 0x32302
leaq 0x590(%rsp), %rax
movq %rax, 0x580(%rsp)
leaq 0x580(%rsp), %r12
movq %r12, %rdi
leaq 0x20d57(%rip), %rsi     # 0x369af
leaq 0x20d76(%rip), %rdx     # 0x369d5
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x580(%rsp), %rdi
leaq 0x590(%rsp), %rax
cmpq %rax, %rdi
leaq 0x560(%rsp), %r12
je 0x15c99
callq 0x3310
cmpb $0x1, 0x3470(%rsp)
jne 0x15dda
movq 0x3668(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
movl $0x1a, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x20d05(%rip), %rcx     # 0x369d6
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x15cfe
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x15d06
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 0x20bf7(%rip), %rsi     # 0x36921
callq 0x35e0
leaq 0x320(%rsp), %rsi
movq %rsi, 0x310(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x15d63
movq %rdx, 0x310(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x320(%rsp)
jmp 0x15d6b
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 0x1d7c5
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x15db8
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x15dcc
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x15dda
callq 0x3310
leaq 0x570(%rsp), %rax
movq %rax, 0x560(%rsp)
movq %r12, %rdi
leaq 0x20bfd(%rip), %rsi     # 0x369f1
leaq 0x20c03(%rip), %rdx     # 0x369fe
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x560(%rsp), %rdi
leaq 0x570(%rsp), %rax
cmpq %rax, %rdi
leaq 0x20beb(%rip), %r12     # 0x36a18
je 0x15e34
callq 0x3310
movslq 0x3474(%rsp), %r13
cmpq $0x2, %r13
jl 0x15ea8
movl $0x1, %ebp
cmpl $0xa, %r13d
jb 0x16021
movl $0x4, %ebp
movq %r13, %rcx
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
cmpq $0x63, %rcx
jbe 0x1601a
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x1601f
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x16021
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %ebp
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x15e63
addl $-0x3, %ebp
jmp 0x16021
leaq 0x550(%rsp), %rax
movq %rax, 0x540(%rsp)
leaq 0x540(%rsp), %r12
movq %r12, %rdi
leaq 0x20b6e(%rip), %rsi     # 0x36a38
leaq 0x20b84(%rip), %rdx     # 0x36a55
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1d7c5
leaq 0x470(%rsp), %r13
movq 0x540(%rsp), %rdi
leaq 0x550(%rsp), %rax
cmpq %rax, %rdi
leaq 0x20b0d(%rip), %r12     # 0x36a18
je 0x15f12
callq 0x3310
movq 0x3698(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
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 0x15f65
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x15f6d
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 0x20991(%rip), %rsi     # 0x36922
callq 0x35e0
leaq 0x2a0(%rsp), %rsi
movq %rsi, 0x290(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x15fca
movq %rdx, 0x290(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2a0(%rsp)
jmp 0x15fd2
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 0x1d7c5
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
jmp 0x163a7
addl $-0x2, %ebp
jmp 0x16021
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 0x6d20
movl $0x10, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x209a4(%rip), %rcx     # 0x369ff
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 0x16095
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x1609d
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 0x2094f(%rip), %rsi     # 0x36a10
callq 0x35e0
leaq 0x300(%rsp), %rsi
movq %rsi, 0x2f0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x160fa
movq %rdx, 0x2f0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x300(%rsp)
jmp 0x16102
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 0x1d7c5
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x1614f
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x16163
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16171
callq 0x3310
movq 0x3698(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
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 0x161c4
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x161cc
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 0x20732(%rip), %rsi     # 0x36922
callq 0x35e0
leaq 0x2e0(%rsp), %rsi
movq %rsi, 0x2d0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16229
movq %rdx, 0x2d0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2e0(%rsp)
jmp 0x16231
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 0x1d7c5
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x1627e
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x16292
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x162a0
callq 0x3310
movq 0x36b0(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
movl $0x12, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x2075b(%rip), %rcx     # 0x36a25
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x162f7
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x162ff
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 0x205ff(%rip), %rsi     # 0x36922
callq 0x35e0
leaq 0x2c0(%rsp), %rsi
movq %rsi, 0x2b0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1635c
movq %rdx, 0x2b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2c0(%rsp)
jmp 0x16364
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 0x1d7c5
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x163b1
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x163c5
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x163d3
callq 0x3310
leaq 0x480(%rsp), %rax
movq %rax, 0x470(%rsp)
movq %r13, %rdi
leaq 0x20535(%rip), %rsi     # 0x36922
leaq 0x2052f(%rip), %rdx     # 0x36923
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r13, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
cmpq %rax, %rdi
leaq 0x520(%rsp), %r13
je 0x1642e
callq 0x3310
leaq 0x530(%rsp), %rax
movq %rax, 0x520(%rsp)
movq %r13, %rdi
leaq 0x2060e(%rip), %rsi     # 0x36a56
leaq 0x2061a(%rip), %rdx     # 0x36a69
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r13, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x520(%rsp), %rdi
leaq 0x530(%rsp), %rax
cmpq %rax, %rdi
je 0x16481
callq 0x3310
movslq 0x3474(%rsp), %r13
cmpq $0x2, %r13
jl 0x164f5
movl $0x1, %ebp
cmpl $0xa, %r13d
jb 0x16660
movl $0x4, %ebp
movq %r13, %rcx
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
cmpq $0x63, %rcx
jbe 0x16659
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x1665e
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x16660
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %ebp
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x164b0
addl $-0x3, %ebp
jmp 0x16660
leaq 0x510(%rsp), %rax
movq %rax, 0x500(%rsp)
leaq 0x500(%rsp), %r12
movq %r12, %rdi
leaq 0x20521(%rip), %rsi     # 0x36a38
leaq 0x20537(%rip), %rdx     # 0x36a55
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1d7c5
leaq 0x400(%rsp), %r13
movq 0x500(%rsp), %rdi
leaq 0x510(%rsp), %rax
cmpq %rax, %rdi
leaq 0x204c0(%rip), %r12     # 0x36a18
je 0x1655f
callq 0x3310
movq 0x3710(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
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 0x165b2
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x165ba
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 0x20344(%rip), %rsi     # 0x36922
callq 0x35e0
movq %r13, 0x3f0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1660f
movq %rdx, 0x3f0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x400(%rsp)
jmp 0x16619
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 0x1d7c5
movq 0x3f0(%rsp), %rdi
jmp 0x169cc
addl $-0x2, %ebp
jmp 0x16660
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 0x6d20
movl $0x10, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x20365(%rip), %rcx     # 0x369ff
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 0x166d4
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x166dc
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 0x20310(%rip), %rsi     # 0x36a10
callq 0x35e0
movq %r13, 0x450(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16731
movq %rdx, 0x450(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x460(%rsp)
jmp 0x1673b
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 0x1d7c5
movq 0x450(%rsp), %rdi
cmpq %r13, %rdi
je 0x16780
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x440(%rsp), %r13
je 0x1679c
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x167aa
callq 0x3310
movq 0x3710(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
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 0x167fd
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16805
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 0x200f9(%rip), %rsi     # 0x36922
callq 0x35e0
movq %r13, 0x430(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1685a
movq %rdx, 0x430(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x440(%rsp)
jmp 0x16864
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 0x1d7c5
movq 0x430(%rsp), %rdi
cmpq %r13, %rdi
je 0x168a9
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x420(%rsp), %r13
je 0x168c5
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x168d3
callq 0x3310
movq 0x3728(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
movl $0x12, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x20128(%rip), %rcx     # 0x36a25
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1692a
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16932
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 0x1ffcc(%rip), %rsi     # 0x36922
callq 0x35e0
movq %r13, 0x410(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16987
movq %rdx, 0x410(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x420(%rsp)
jmp 0x16991
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 0x1d7c5
movq 0x410(%rsp), %rdi
cmpq %r13, %rdi
je 0x169d6
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x710(%rsp), %r13
je 0x169f2
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16a00
callq 0x3310
movq %r13, 0x700(%rsp)
leaq 0x700(%rsp), %r12
movq %r12, %rdi
leaq 0x1ff08(%rip), %rsi     # 0x36922
leaq 0x1ff02(%rip), %rdx     # 0x36923
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x700(%rsp), %rdi
cmpq %r13, %rdi
leaq 0x4e0(%rsp), %r12
je 0x16a53
callq 0x3310
cmpb $0x1, 0x3484(%rsp)
leaq 0x3e0(%rsp), %r13
jne 0x16d17
leaq 0x4f0(%rsp), %rax
movq %rax, 0x4e0(%rsp)
movq %r12, %rdi
leaq 0x1ffe7(%rip), %rsi     # 0x36a6a
leaq 0x20001(%rip), %rdx     # 0x36a8b
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x4e0(%rsp), %rdi
leaq 0x4f0(%rsp), %rax
cmpq %rax, %rdi
leaq 0x1ff5c(%rip), %r12     # 0x36a18
je 0x16ac3
callq 0x3310
movq 0x3788(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
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 0x16b16
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16b1e
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 0x1fde0(%rip), %rsi     # 0x36922
callq 0x35e0
movq %r13, 0x3d0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16b73
movq %rdx, 0x3d0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x3e0(%rsp)
jmp 0x16b7d
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 0x1d7c5
movq 0x3d0(%rsp), %rdi
cmpq %r13, %rdi
je 0x16bc2
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x16bd6
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16be4
callq 0x3310
movq 0x37a0(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
movl $0x12, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x1fe17(%rip), %rcx     # 0x36a25
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16c3b
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16c43
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 0x1fcba(%rip), %rsi     # 0x36921
callq 0x35e0
leaq 0x280(%rsp), %rsi
movq %rsi, 0x270(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16ca0
movq %rdx, 0x270(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x280(%rsp)
jmp 0x16ca8
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x278(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x34a4(%rsp), %esi
leaq 0x270(%rsp), %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x16cf5
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x16d09
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16d17
callq 0x3310
cmpb $0x1, 0x34b1(%rsp)
leaq 0x3c0(%rsp), %r13
leaq 0x4c0(%rsp), %r12
jne 0x17234
leaq 0x4d0(%rsp), %rax
movq %rax, 0x4c0(%rsp)
movq %r12, %rdi
leaq 0x1fd3d(%rip), %rsi     # 0x36a8c
leaq 0x1fd52(%rip), %rdx     # 0x36aa8
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
movq %r12, %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
cmpq %rax, %rdi
je 0x16d88
callq 0x3310
movq 0x38e0(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
movl $0x7, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x1fcf7(%rip), %rcx     # 0x36aa9
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16ddf
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16de7
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 0x1fb17(%rip), %rsi     # 0x36922
callq 0x35e0
movq %r13, 0x3b0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16e3c
movq %rdx, 0x3b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x3c0(%rsp)
jmp 0x16e46
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 0x1d7c5
movq 0x3b0(%rsp), %rdi
cmpq %r13, %rdi
je 0x16e8b
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x3a0(%rsp), %r13
je 0x16ea7
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16eb5
callq 0x3310
movq 0x38f8(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
movl $0x7, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x1fbd2(%rip), %rcx     # 0x36ab1
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16f0c
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x16f14
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 0x1f9ea(%rip), %rsi     # 0x36922
callq 0x35e0
movq %r13, 0x390(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x16f69
movq %rdx, 0x390(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x3a0(%rsp)
jmp 0x16f73
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 0x1d7c5
movq 0x390(%rsp), %rdi
cmpq %r13, %rdi
je 0x16fb8
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x380(%rsp), %r13
je 0x16fd4
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x16fe2
callq 0x3310
movq 0x3910(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
movl $0x19, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x1faad(%rip), %rcx     # 0x36ab9
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x17039
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x17041
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 0x1f8bd(%rip), %rsi     # 0x36922
callq 0x35e0
movq %r13, 0x370(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x17096
movq %rdx, 0x370(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x380(%rsp)
jmp 0x170a0
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 0x1d7c5
movq 0x370(%rsp), %rdi
cmpq %r13, %rdi
je 0x170e5
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
leaq 0x360(%rsp), %r13
je 0x17101
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x1710f
callq 0x3310
movq 0x3928(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movq %r15, %rdi
callq 0x1c311
movl $0x12, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x1f99a(%rip), %rcx     # 0x36ad3
callq 0x3370
leaq 0x40(%rsp), %rsi
movq %rsi, 0x30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x17166
movq %rdx, 0x30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x40(%rsp)
jmp 0x1716e
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 0x1f78f(%rip), %rsi     # 0x36921
callq 0x35e0
movq %r13, 0x350(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x171c3
movq %rdx, 0x350(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x360(%rsp)
jmp 0x171cd
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 0x1d7c5
movq 0x350(%rsp), %rdi
cmpq %r13, %rdi
leaq 0x40(%rsp), %rbx
je 0x17217
callq 0x3310
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x17226
callq 0x3310
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x17234
callq 0x3310
movq 0x29d3d(%rip), %rax     # 0x40f78
movq (%rax), %rdi
callq 0x33b0
leaq 0x1(%r14), %rax
movslq 0x3434(%rsp), %rsi
movslq 0x3430(%rsp), %rbx
subq %rbx, %rsi
cmpq %rsi, %r14
movq %rax, %r14
jl 0x155ce
cmpb $0x0, 0x34b2(%rsp)
je 0x1727d
leaq 0x868(%rsp), %rdi
callq 0x32302
cmpb $0x1, 0x34ae(%rsp)
jne 0x17294
leaq 0x868(%rsp), %rdi
callq 0x314a4
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 0x11d8(%rsp), %rbx
leaq 0x1f813(%rip), %rsi     # 0x36ae6
leaq 0x30(%rsp), %rdi
movl $0x23, %edx
callq 0x3390
cvttsd2si 0x28(%rsp), %ebp
leaq 0x30(%rsp), %rdi
movl %ebp, %esi
callq 0x3550
leaq 0x1f80f(%rip), %rsi     # 0x36b0a
movl $0x9, %edx
movq %rax, %rdi
callq 0x3390
leaq 0x38(%rsp), %rsi
movq %rsp, %rdi
callq 0x3490
testl %ebp, %ebp
js 0x17360
leaq 0x750(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x740(%rsp), %rdi
callq 0xbb9a
movzbl 0x34a4(%rsp), %esi
leaq 0x740(%rsp), %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x740(%rsp), %rdi
jmp 0x173a7
leaq 0x770(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1f7a1(%rip), %rsi     # 0x36b14
leaq 0x1f7c2(%rip), %rdx     # 0x36b3c
leaq 0x760(%rsp), %rdi
callq 0x6d9c
movzbl 0x34a4(%rsp), %esi
leaq 0x760(%rsp), %rdi
movq %rbx, %rdx
callq 0x1d7c5
movq 0x760(%rsp), %rdi
cmpq %r14, %rdi
je 0x173b1
callq 0x3310
leaq 0xb28(%rsp), %rdx
leaq 0x1f77d(%rip), %rsi     # 0x36b3d
leaq 0x250(%rsp), %rdi
callq 0xf5f6
leaq 0x340(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1f542(%rip), %rsi     # 0x36922
leaq 0x1f53c(%rip), %rdx     # 0x36923
leaq 0x330(%rsp), %rdi
callq 0x6d9c
leaq 0x260(%rsp), %rbx
movq -0x10(%rbx), %rcx
movq -0x8(%rbx), %r8
movq 0x338(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
cmpq %rbx, %rcx
je 0x17422
movq 0x260(%rsp), %rdi
movq 0x330(%rsp), %rsi
cmpq %rdi, %rax
jbe 0x17446
movl $0xf, %edi
cmpq %r14, %rsi
je 0x17441
movq 0x340(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x17455
leaq 0x250(%rsp), %rdi
callq 0x30e0
jmp 0x17466
leaq 0x330(%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 0x17493
movq %rsi, 0x230(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x240(%rsp)
jmp 0x1749b
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 0x1d7c5
leaq 0x240(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x174ee
callq 0x3310
movq 0x330(%rsp), %rdi
cmpq %r14, %rdi
je 0x17500
callq 0x3310
movq 0x250(%rsp), %rdi
cmpq %rbx, %rdi
je 0x17512
callq 0x3310
leaq 0x730(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1f272(%rip), %rsi     # 0x36797
leaq 0x1f296(%rip), %rdx     # 0x367c2
leaq 0x720(%rsp), %rdi
callq 0x6d9c
leaq 0x11d8(%rsp), %rdx
movzbl 0x34a4(%rsp), %esi
leaq 0x720(%rsp), %rdi
callq 0x1d7c5
movq 0x720(%rsp), %rdi
cmpq %r14, %rdi
je 0x17568
callq 0x3310
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1757b
callq 0x3310
movq 0x29a2e(%rip), %rsi     # 0x40fb0
leaq 0x30(%rsp), %rdi
callq 0x31b0
leaq 0xa0(%rsp), %rdi
callq 0x30f0
leaq 0x868(%rsp), %rdi
callq 0x17c26
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 0x1760a
jmp 0x17660
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x3440
jmp 0x175de
movq %rax, %rbx
movq 0x800(%rsp), %rdi
jmp 0x17b0f
jmp 0x17c00
movq %rax, %rbx
movq 0x740(%rsp), %rdi
jmp 0x1760a
jmp 0x17660
movq %rax, %rbx
movq 0x720(%rsp), %rdi
cmpq %r14, %rdi
jne 0x17659
jmp 0x17663
jmp 0x17660
movq %rax, %rbx
leaq 0x240(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17631
callq 0x3310
jmp 0x17631
movq %rax, %rbx
movq 0x330(%rsp), %rdi
cmpq %r14, %rdi
je 0x17648
callq 0x3310
jmp 0x17648
movq %rax, %rbx
leaq 0x260(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17663
callq 0x3310
jmp 0x17663
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17752
callq 0x3310
jmp 0x17752
jmp 0x1774f
jmp 0x17c00
jmp 0x17c00
movq %rax, %rbx
movq 0x250(%rsp), %rdi
testq %rdi, %rdi
jne 0x17bcb
jmp 0x17c03
jmp 0x17c00
movq %rax, %rbx
movq 0x780(%rsp), %rdi
jmp 0x176ed
jmp 0x17c00
movq %rax, %rbx
movq 0x7a0(%rsp), %rdi
jmp 0x176ed
jmp 0x17c00
movq %rax, %rbx
movq 0x7c0(%rsp), %rdi
jmp 0x176ed
jmp 0x17c00
movq %rax, %rbx
movq 0x7e0(%rsp), %rdi
cmpq %r14, %rdi
jne 0x17bcb
jmp 0x17c03
jmp 0x17c00
movq %rax, %rbx
movq 0x820(%rsp), %rdi
cmpq %r15, %rdi
je 0x1771a
callq 0x3310
jmp 0x1771a
movq %rax, %rbx
movq 0x840(%rsp), %rdi
cmpq %r14, %rdi
je 0x17740
callq 0x3310
jmp 0x17740
jmp 0x17c00
jmp 0x17c00
jmp 0x17c00
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
jmp 0x17bc6
movq %rax, %rbx
movq 0x29857(%rip), %rsi     # 0x40fb0
leaq 0x30(%rsp), %rdi
callq 0x31b0
leaq 0xa0(%rsp), %rdi
callq 0x30f0
jmp 0x17c03
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17b8f
movq %rax, %rbx
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
jmp 0x17a95
jmp 0x17b8a
movq %rax, %rbx
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
jmp 0x17a95
jmp 0x17b8a
movq %rax, %rbx
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
jmp 0x17a95
movq %rax, %rbx
movq 0x500(%rsp), %rdi
leaq 0x510(%rsp), %rax
jmp 0x17bc6
jmp 0x17b8a
movq %rax, %rbx
movq 0x3f0(%rsp), %rdi
jmp 0x17b9f
jmp 0x17b8a
movq %rax, %rbx
movq 0x450(%rsp), %rdi
jmp 0x17b9f
jmp 0x17b8a
movq %rax, %rbx
movq 0x430(%rsp), %rdi
jmp 0x17b9f
jmp 0x17b8a
movq %rax, %rbx
movq 0x410(%rsp), %rdi
jmp 0x17b9f
movq %rax, %rbx
movq 0x4e0(%rsp), %rdi
leaq 0x4f0(%rsp), %rax
jmp 0x17bc6
jmp 0x17b8a
movq %rax, %rbx
movq 0x3d0(%rsp), %rdi
jmp 0x17b9f
jmp 0x17b8a
movq %rax, %rbx
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
jmp 0x17a95
movq %rax, %rbx
movq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
jmp 0x17bc6
jmp 0x17b8a
movq %rax, %rbx
movq 0x3b0(%rsp), %rdi
jmp 0x17b9f
jmp 0x17b8a
movq %rax, %rbx
movq 0x390(%rsp), %rdi
jmp 0x17b9f
jmp 0x17b8a
movq %rax, %rbx
movq 0x370(%rsp), %rdi
jmp 0x17b9f
movq %rax, %rbx
movq 0x350(%rsp), %rdi
jmp 0x17b9f
jmp 0x17b8a
jmp 0x17c00
jmp 0x17c00
jmp 0x17c00
jmp 0x17c00
jmp 0x17c00
jmp 0x17c00
jmp 0x17c00
jmp 0x17b8f
jmp 0x17c00
jmp 0x17c00
jmp 0x17c00
jmp 0x17b8f
movq %rax, %rbx
movq 0x680(%rsp), %rdi
leaq 0x690(%rsp), %rax
jmp 0x17bc6
movq %rax, %rbx
movq 0x660(%rsp), %rdi
leaq 0x670(%rsp), %rax
jmp 0x17bc6
movq %rax, %rbx
movq 0x600(%rsp), %rdi
leaq 0x610(%rsp), %rax
jmp 0x17bc6
movq %rax, %rbx
movq 0x5e0(%rsp), %rdi
leaq 0x5f0(%rsp), %rax
jmp 0x17bc6
movq %rax, %rbx
movq 0x5c0(%rsp), %rdi
leaq 0x5d0(%rsp), %rax
jmp 0x17bc6
movq %rax, %rbx
movq 0x5a0(%rsp), %rdi
leaq 0x5b0(%rsp), %rax
jmp 0x17bc6
jmp 0x17b8a
movq %rax, %rbx
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
jmp 0x17a95
movq %rax, %rbx
movq 0x540(%rsp), %rdi
leaq 0x550(%rsp), %rax
jmp 0x17bc6
jmp 0x17b8a
jmp 0x17b8a
movq %rax, %rbx
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
jne 0x17ba4
jmp 0x17ba9
jmp 0x17c00
jmp 0x17c00
movq %rax, %rbx
movq 0x6e0(%rsp), %rdi
leaq 0x6f0(%rsp), %rax
jmp 0x17bc6
jmp 0x17c00
movq %rax, %rbx
movq 0x6c0(%rsp), %rdi
leaq 0x6d0(%rsp), %rax
jmp 0x17bc6
jmp 0x17c00
movq %rax, %rbx
movq 0x6a0(%rsp), %rdi
leaq 0x6b0(%rsp), %rax
jmp 0x17bc6
jmp 0x17c00
movq %rax, %rbx
movq 0x700(%rsp), %rdi
cmpq %r13, %rdi
jne 0x17bcb
jmp 0x17c03
jmp 0x17c00
movq %rax, %rbx
movq 0x580(%rsp), %rdi
leaq 0x590(%rsp), %rax
jmp 0x17bc6
jmp 0x17c00
movq %rax, %rbx
movq 0x560(%rsp), %rdi
leaq 0x570(%rsp), %rax
jmp 0x17bc6
jmp 0x17c00
movq %rax, %rbx
movq 0x470(%rsp), %rdi
leaq 0x480(%rsp), %rax
jmp 0x17bc6
jmp 0x17c00
movq %rax, %rbx
movq 0x520(%rsp), %rdi
leaq 0x530(%rsp), %rax
jmp 0x17bc6
jmp 0x17c00
movq %rax, %rbx
jmp 0x17bbd
movq %rax, %rbx
jmp 0x17ba9
movq %rax, %rbx
movq 0x490(%rsp), %rdi
cmpq %r13, %rdi
je 0x17ba9
callq 0x3310
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x17bbd
callq 0x3310
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x17c03
callq 0x3310
jmp 0x17c03
jmp 0x17c00
movq %rax, %rbx
movq 0x640(%rsp), %rdi
leaq 0x650(%rsp), %rax
jmp 0x17bc6
jmp 0x17c00
movq %rax, %rbx
movq 0x620(%rsp), %rdi
leaq 0x630(%rsp), %rax
jmp 0x17bc6
movq %rax, %rbx
leaq 0x868(%rsp), %rdi
callq 0x17c26
movq %rbx, %rdi
callq 0x3580