// File: /workspace/github_cpp_makefile_star2_O1/bobverity[P]MavericK/readIn.cpp
// Function: readData(globals&)
void readData(globals &globals) {
    
    cout << "Loading data file...\n";
    writeToFile("Data properties\n", globals.outputLog_on, globals.outputLog_fileStream);
    
    // open file stream
    globals.data_fileStream = safe_ifstream(globals.data_filePath, globals.outputLog_on, globals.outputLog_fileStream);
    
    // read in raw data file as matrix of strings. Skip header line if necessary
    vector< vector<string> > rawEntries;
    vector<string> rawEntries_line;
    string line1;
    int row=0;
    while (safe_getline(globals.data_fileStream, line1))
    {
        if (line1.size()==0)
            continue;
        row++;
        if (row==1 && globals.headerRow_on)
            continue;
        rawEntries_line.clear();
        istringstream ss(line1);
        string line2;
        while (getline(ss, line2, '\t'))
        {
            string line3 = istringstream(line2).str();
            rawEntries_line.push_back(line3);
        }
        rawEntries.push_back(rawEntries_line);
    }
    
    // close file stream
    globals.data_fileStream.close();
    
    // if no data then abort
    if (rawEntries.size()==0) {
        cerrAndLog("\nError: data file appears to be empty\n", globals.outputLog_on, globals.outputLog_fileStream);
        exit(1);
    }
    
    // check same number of values in each row
    int cols = int(rawEntries[0].size());
    for (int i=0; i<int(rawEntries.size()); i++) {
        int row = globals.headerRow_on ? i+2 : i+1;
        if (rawEntries[i].size()!=cols) {
            cerrAndLog("\nError: row "+to_string((long long)row)+string(" in data file does not contain ")+to_string((long long)cols)+string(" entries\n"), globals.outputLog_on, globals.outputLog_fileStream);
            exit(1);
        }
    }
    
    // check that number of columns is compatible with data format options
    int minCols = 2;
    minCols = globals.popCol_on ? minCols+1 : minCols;
    minCols = globals.ploidyCol_on ? minCols+1 : minCols;
    if (cols<minCols) {
        cerrAndLog("\nError: data file must contain at least "+to_string((long long)minCols)+string(" columns under current settings\n"), globals.outputLog_on, globals.outputLog_fileStream);
        exit(1);
    }
    
    // find which columns in data file correspond to special values
    int pop_startRead = -1;
    int ploidy_startRead = -1;
    int data_startRead = 1;
    if (globals.ploidyCol_on) {
        ploidy_startRead = 1;
        data_startRead++;
    }
    if (globals.popCol_on) {
        pop_startRead = 1;
        if (ploidy_startRead!=-1)
            ploidy_startRead++;
        data_startRead++;
    }
    
    // print these to screen and file
    if (globals.headerRow_on)
        coutAndLog("  row 1 = header line\n", globals.outputLog_on, globals.outputLog_fileStream);
    coutAndLog("  column 1 = individual labels\n", globals.outputLog_on, globals.outputLog_fileStream);
    if (pop_startRead!=-1)
        coutAndLog("  column "+to_string((long long)pop_startRead+1)+" = population of origin\n", globals.outputLog_on, globals.outputLog_fileStream);
    if (ploidy_startRead!=-1)
        coutAndLog("  column "+to_string((long long)ploidy_startRead+1)+" = ploidy\n", globals.outputLog_on, globals.outputLog_fileStream);
    
    // split rawData into special columns and data matrix
    vector<string> indLabels_raw, pop_raw, ploidy_raw;
    vector< vector<string> > rawData;
    vector<string> rawData_line;
    for (int i=0; i<int(rawEntries.size()); i++) {
        rawData_line.clear();
        for (int j=0; j<int(rawEntries[i].size()); j++) {
            
            // read in individual labels
            if (j==0)
                indLabels_raw.push_back(rawEntries[i][j]);
            
            // read in population labels
            if (j==pop_startRead)
                pop_raw.push_back(rawEntries[i][j]);
            
            // read in ploidy for each individual
            if (j==ploidy_startRead)
                ploidy_raw.push_back(rawEntries[i][j]);
            
            // read in data
            if (j>=data_startRead)
                rawData_line.push_back(rawEntries[i][j]);
            
        }
        rawData.push_back(rawData_line);
    }
    
    // finally define number of loci
    globals.loci = int(rawData[0].size());
    
    // convert ploidy labels into integer format
    vector<int> ploidy_raw_int(rawEntries.size(),globals.ploidy);
    if (globals.ploidyCol_on) {
        for (int i=0; i<int(ploidy_raw.size()); i++) {
            double param_double=0;
            istringstream(ploidy_raw[i]) >> param_double;
            if (my_round(double(param_double))==param_double && my_round(double(param_double))>=0) {
                ploidy_raw_int[i] = int(param_double);
            } else {
                cerrAndLog("\nError: all ploidy values in data file must be positive integers\n", globals.outputLog_on, globals.outputLog_fileStream);
                exit(1);
            }
        }
    }
    
    // check that ploidy values make sense. Ploidy must be either defined on the first row of an individual (ploidy_format==1), or defined equally for all rows of an individual (ploidy_format==2).
    int thisPloidy=0, countDown=0, ploidy_format=0;
    bool ploidyError = false;
    for (int i=0; i<int(rawEntries.size()); i++) {
        // if new individual
        if (countDown==0) {
            if (ploidy_raw_int[i]!=0) {
                thisPloidy = ploidy_raw_int[i];
                countDown = thisPloidy-1;
            } else {
                ploidyError = true;
            }
        } else {
            if (ploidy_raw_int[i]==0) {
                if (ploidy_format==0 || ploidy_format==1) {
                    ploidy_format = 1;
                    countDown--;
                } else {
                    ploidyError = true;
                }
            } else if (ploidy_raw_int[i]==thisPloidy) {
                if (ploidy_format==0 || ploidy_format==2) {
                    ploidy_format = 2;
                    countDown--;
                } else {
                    ploidyError = true;
                }
            } else {
                ploidyError = true;
            }
        }
        if (ploidyError) {
            cerrAndLog("\nError: when reading ploidy for each individual from file (using the ploidyCol_on=true option) the data file must contain a ploidy value on the first row of each individual, or alternatively the same ploidy value for all rows of an individual\n", globals.outputLog_on, globals.outputLog_fileStream);
            exit(1);
        }
    }
    if (countDown!=0) {
        cerrAndLog("\nError: data file does not contain sufficient rows to account for ploidy values (also check that headerRow_on is specified correctly)\n", globals.outputLog_on, globals.outputLog_fileStream);
        exit(1);
    }
    
    // similarly for pop values. Pop values must be either defined on the first row of an individual (pop_format==1), or defined equally for all rows of an individual (pop_format==2).
    if (globals.popCol_on) {
        countDown=0;
        string thisPop;
        int pop_format=0;
        bool popError = false;
        for (int i=0; i<int(rawEntries.size()); i++) {
            // if new individual
            if (countDown==0) {
                thisPop = pop_raw[i];
                countDown = ploidy_raw_int[i]-1;
            // if not new individual
            } else {
                if (pop_raw[i]=="") {
                    if (pop_format==0 || pop_format==1) {
                        pop_format = 1;
                        countDown--;
                    } else {
                        popError = true;
                    }
                } else if (pop_raw[i]==thisPop) {
                    if (pop_format==0 || pop_format==2) {
                        pop_format = 2;
                        countDown--;
                    } else {
                        popError = true;
                    }
                } else {
                    popError = true;
                }
            }
            if (popError) {
                cerrAndLog("\nError: when reading population of origin for each individual from file (using the popCol_on=true option) the data file must contain a population value on the first row of each individual, or alternatively the same population value for all rows of an individual\n", globals.outputLog_on, globals.outputLog_fileStream);
                exit(1);
            }
        }
    }
    
    // find all unique alleles, and count number of missing values
    globals.J = vector<int>(globals.loci);
    globals.uniqueAlleles = vector< vector<string> >(globals.loci,vector<string>());
    int missingDataCount = 0;
    for (int j=0; j<globals.loci; j++) {
        for (int i=0; i<int(rawData.size()); i++) {
            if (rawData[i][j]==globals.missingData) {
                missingDataCount++;
            } else {
                if (find(globals.uniqueAlleles[j].begin(), globals.uniqueAlleles[j].end(), rawData[i][j]) == globals.uniqueAlleles[j].end()) {
                    globals.uniqueAlleles[j].push_back(rawData[i][j]);
                }
            }
        }
        globals.J[j] = int(globals.uniqueAlleles[j].size());
    }
    
    // reformat data into simple list: data[individual][locus][gene copy]. Recode values to simple list of integers, with 0 meaning missing data. Keep record of missing data elements in data_missing (1=missing, 0=present). Store indLabels_vec, pop_vec, ploidy_vec and missing_vec values.
    countDown=0;
    int ind=-1, gene_copy=0;
    for (int i=0; i<int(rawEntries.size()); i++) {
        // if new individual
        if (countDown==0) {
            ind++;
            globals.indLabels_vec.push_back(indLabels_raw[i]);
            if (globals.popCol_on) {
                globals.pop_vec.push_back(pop_raw[i]);
            } else {
                globals.pop_vec.push_back("NA");
            }
            globals.ploidy_vec.push_back(ploidy_raw_int[i]);
            globals.missing_vec.push_back(0);
            countDown = globals.ploidy_vec[ind]-1;
            gene_copy = 0;
            
            globals.data.push_back(vector< vector<int> >(globals.loci,vector<int>(globals.ploidy_vec[ind])));
            for (int l=0; l<globals.loci; l++) {
                if (rawData[i][l]==globals.missingData) {
                    globals.data[ind][l][gene_copy] = 0;
                    globals.missing_vec[ind]++;
                } else {
                    globals.data[ind][l][gene_copy] = whichFirst(globals.uniqueAlleles[l],rawData[i][l])+1;
                }
            }
        // if not new individual
        } else {
            countDown--;
            gene_copy++;
            for (int l=0; l<globals.loci; l++) {
                if (rawData[i][l]==globals.missingData) {
                    globals.data[ind][l][gene_copy] = 0;
                    globals.missing_vec[ind]++;
                } else {
                    globals.data[ind][l][gene_copy] = whichFirst(globals.uniqueAlleles[l],rawData[i][l])+1;
                }
            }
        }
    }
    
    // finally define number of individuals and gene copies
    globals.n = int(globals.indLabels_vec.size());
    globals.geneCopies = sum(globals.ploidy_vec)*globals.loci;
    
    // check that there is at least one allele at every locus
    for (int l=0; l<globals.loci; l++) {
        bool tmp = true;
        for (int i=0; i<globals.n; i++) {
            for (int p=0; p<globals.ploidy_vec[i]; p++) {
                if (globals.data[i][l][p]!=0)
                    tmp = false;
            }
        }
        if (tmp) {
            coutAndLog("\nError: there must be at least one non-missing observation at every locus\n", globals.outputLog_on, globals.outputLog_fileStream);
            exit(1);
        }
    }
    
    // find number of unique populations and store pop index of each individual
    if (globals.popCol_on) {
        globals.pop_index = vector<int>(globals.n);
        for (int i=0; i<globals.n; i++) {
            if (find(globals.uniquePops.begin(), globals.uniquePops.end(), globals.pop_vec[i]) == globals.uniquePops.end()) {
                globals.uniquePops.push_back(globals.pop_vec[i]);
                globals.pop_index[i] = int(globals.uniquePops.size())-1;
            } else {
                globals.pop_index[i] = int(find(globals.uniquePops.begin(), globals.uniquePops.end(), globals.pop_vec[i]) - globals.uniquePops.begin());
            }
        }
        globals.uniquePop_counts = vector<int>(globals.uniquePops.size());
        for (int i=0; i<globals.n; i++) {
            globals.uniquePop_counts[globals.pop_index[i]]++;
        }
    }
    
    // print basic properties to screen and file
    if (globals.popCol_on)
        coutAndLog("  unique populations = "+to_string((long long)globals.uniquePops.size())+string("\n"), globals.outputLog_on, globals.outputLog_fileStream);
    
    coutAndLog("  individuals = "+to_string((long long)globals.n)+string("\n"), globals.outputLog_on, globals.outputLog_fileStream);
    coutAndLog("  loci = "+to_string((long long)globals.loci)+string("\n"), globals.outputLog_on, globals.outputLog_fileStream);
    
    stringstream alleles;
    alleles << "  alleles per locus = {" << globals.J[0];
    for (int l=1; l<globals.loci; l++) {
        alleles << "," << globals.J[l];
    }
    alleles << "}\n";
    coutAndLog(alleles.str(), globals.outputLog_on, globals.outputLog_fileStream);
    
    coutAndLog("  missing observations = "+to_string((long long)missingDataCount)+string(" of ")+to_string((long long)sum(globals.ploidy_vec)*globals.loci)+string("\n\n"), globals.outputLog_on, globals.outputLog_fileStream);    
    
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x898, %rsp            # imm = 0x898
movq %rdi, %r12
movq 0x17287(%rip), %rdi     # 0x41fb8
leaq 0xd911(%rip), %rsi      # 0x38649
movl $0x15, %edx
callq 0x3390
leaq 0x698(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xd90a(%rip), %rsi      # 0x3865f
leaq 0xd913(%rip), %rdx      # 0x3866f
leaq 0x688(%rsp), %rdi
callq 0x6e56
leaq 0x970(%r12), %r14
cmpb $0x1, 0x2c3c(%r12)
jne 0x2ad9c
movq 0x688(%rsp), %rsi
movq 0x690(%rsp), %rdx
movq %r14, %rdi
callq 0x3390
movq %r14, %rdi
callq 0x31f0
movq 0x688(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2adae
callq 0x3310
leaq 0x888(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x2e0(%r12), %rsi
movq 0x2e8(%r12), %rdx
addq %rsi, %rdx
leaq 0x878(%rsp), %rbx
movq %rbx, %rdi
callq 0xbe10
movzbl 0x2c3c(%r12), %edx
leaq 0x2b0(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rcx
callq 0x1db9f
leaq 0x768(%r12), %rbx
leaq 0x2b0(%rsp), %rsi
movq %rbx, %rdi
callq 0x34c0
movq %r12, 0x8(%rsp)
movq %r14, 0x30(%rsp)
leaq 0x2b0(%rsp), %rdi
callq 0x30b0
movq 0x878(%rsp), %rdi
cmpq %r15, %rdi
je 0x2ae3a
callq 0x3310
xorl %ecx, %ecx
leaq 0x40(%rsp), %rdi
movq %rcx, 0x10(%rdi)
xorpd %xmm0, %xmm0
movapd %xmm0, (%rdi)
leaq 0x210(%rsp), %rax
movq %rcx, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x2a0(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rcx, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x78(%rsp), %rbp
leaq 0x10(%rsp), %r13
leaq 0x4c0(%rsp), %r12
leaq 0x68(%rsp), %r14
movl %ecx, %r15d
movq %rbx, %rdi
leaq 0x290(%rsp), %rsi
callq 0x1df65
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x2b03c
cmpq $0x0, 0x298(%rsp)
je 0x2ae8a
testl %r15d, %r15d
je 0x2b020
movl %r15d, 0x38(%rsp)
movq 0x210(%rsp), %rax
movq 0x218(%rsp), %r15
cmpq %rax, %r15
je 0x2af0f
movq %rax, 0x58(%rsp)
movq %rax, %rbp
movq (%rbp), %rdi
addq $0x10, %rbp
cmpq %rbp, %rdi
je 0x2aef4
callq 0x3310
addq $0x10, %rbp
cmpq %r15, %rbp
jne 0x2aee2
movq 0x58(%rsp), %rax
movq %rax, 0x218(%rsp)
leaq 0x78(%rsp), %rbp
leaq 0x2b0(%rsp), %rdi
leaq 0x290(%rsp), %rsi
movl $0x8, %edx
callq 0x34f0
movl 0x38(%rsp), %eax
incl %eax
movq %rax, 0x38(%rsp)
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movb $0x0, 0x20(%rsp)
leaq 0x40(%rsp), %r15
leaq 0x2b0(%rsp), %rdi
movq %r13, %rsi
movl $0x9, %edx
callq 0x35c0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x2afd1
movq %r12, %rdi
movq %r13, %rsi
movl $0x8, %edx
callq 0x34f0
movq %r14, %rdi
leaq 0x4d0(%rsp), %rsi
callq 0x3490
movq %r12, %rdi
movq 0x1700a(%rip), %rsi     # 0x41fa8
callq 0x3420
leaq 0x538(%rsp), %rdi
callq 0x30f0
leaq 0x210(%rsp), %rdi
movq %r14, %rsi
callq 0x2e630
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2af51
callq 0x3310
jmp 0x2af51
movq %r15, %rdi
leaq 0x210(%rsp), %rsi
callq 0x2e700
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x2aff5
callq 0x3310
leaq 0x2b0(%rsp), %rdi
movq 0x16fa4(%rip), %rsi     # 0x41fa8
callq 0x3420
leaq 0x328(%rsp), %rdi
callq 0x30f0
movq 0x38(%rsp), %rcx
jmp 0x2ae87
movl $0x1, %ecx
movq 0x8(%rsp), %rax
cmpb $0x0, 0x2ba0(%rax)
jne 0x2ae87
jmp 0x2aec0
movq %rbx, %rdi
callq 0x3090
movq 0x40(%rsp), %rdx
movq 0x48(%rsp), %rax
subq %rdx, %rax
movq 0x8(%rsp), %r15
je 0x2d4f8
shrq $0x3, %rax
imull $0xaaaaaaab, %eax, %ecx # imm = 0xAAAAAAAB
leaq 0x8(%rdx), %rsi
movq 0x8(%rdx), %rax
subq (%rdx), %rax
shrq $0x5, %rax
movslq %eax, %rbx
xorl %edx, %edx
testl %ecx, %ecx
cmovlel %edx, %ecx
cmpq %rdx, %rcx
je 0x2b203
movq (%rsi), %rdi
subq -0x8(%rsi), %rdi
incq %rdx
sarq $0x5, %rdi
addq $0x18, %rsi
cmpq %rbx, %rdi
je 0x2b07f
cmpb $0x0, 0x2ba0(%r15)
leal 0x1(%rdx), %eax
cmoveq %rdx, %rax
movl %eax, %esi
leaq 0x68(%rsp), %rdi
callq 0x6d26
leaq 0xd5d6(%rip), %rsi      # 0x38697
leaq 0x10(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x6cb6
leaq 0x160(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0xd5c0(%rip), %rsi      # 0x386a4
leaq 0xd5d8(%rip), %rdx      # 0x386c3
leaq 0x150(%rsp), %rdi
callq 0x6e56
leaq 0x4c0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x150(%rsp), %rdx
callq 0x6c0e
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x6d26
leaq 0x2b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x6c0e
leaq 0xd0(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xd572(%rip), %rsi      # 0x386c4
leaq 0xd574(%rip), %rdx      # 0x386cd
leaq 0xc0(%rsp), %rdi
callq 0x6e56
leaq 0x858(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x6c0e
movq 0x8(%rsp), %rax
movzbl 0x2c3c(%rax), %esi
leaq 0x858(%rsp), %rdi
movq 0x30(%rsp), %rdx
callq 0x1db5c
leaq 0x858(%rsp), %rdi
callq 0x3150
leaq 0xc0(%rsp), %rdi
callq 0x3150
leaq 0x2b0(%rsp), %rdi
callq 0x3150
leaq 0xe0(%rsp), %rdi
callq 0x3150
leaq 0x4c0(%rsp), %rdi
callq 0x3150
leaq 0x150(%rsp), %rdi
callq 0x3150
leaq 0x10(%rsp), %rdi
callq 0x3150
leaq 0x68(%rsp), %rdi
jmp 0x2d4e9
movzbl 0x2ba1(%r15), %r14d
movzbl 0x2ba2(%r15), %r12d
leal (%r12,%r14), %ecx
addl $0x2, %ecx
cmpl %eax, %ecx
jg 0x2d547
cmpb $0x1, 0x2ba0(%r15)
jne 0x2b27f
leaq 0x7a8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xd4d9(%rip), %rsi      # 0x38718
leaq 0xd4e8(%rip), %rdx      # 0x3872e
leaq 0x798(%rsp), %rdi
callq 0x6e56
movzbl 0x2c3c(%r15), %esi
leaq 0x798(%rsp), %rdi
movq 0x30(%rsp), %rdx
callq 0x1db19
movq 0x798(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2b27f
callq 0x3310
leaq 0x788(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xd49d(%rip), %rsi      # 0x3872f
leaq 0xd4b5(%rip), %rdx      # 0x3874e
leaq 0x778(%rsp), %rdi
callq 0x6e56
movzbl 0x2c3c(%r15), %esi
leaq 0x778(%rsp), %rdi
movq 0x30(%rsp), %rdx
callq 0x1db19
leal -0x1(%r14), %ebp
orl $0x1, %ebp
movq 0x778(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2b2d9
callq 0x3310
movl %ebp, %eax
movq %rax, 0x38(%rsp)
testq %r14, %r14
movq 0x8(%rsp), %rbp
je 0x2b451
leaq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
movq %rax, (%rdi)
movl $0x1, %esi
movl $0x2d, %edx
callq 0x33a0
movq 0x38(%rsp), %rax
leaq 0x1(%rax), %rdx
leaq 0x4c0(%rsp), %rbx
movq (%rbx), %rdi
movl $0x1, %esi
callq 0x6dda
leaq 0xd41a(%rip), %rcx      # 0x3874f
movl $0x9, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
leaq 0x2c0(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2b377
movq %rdx, 0x2b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2c0(%rsp)
jmp 0x2b37f
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
leaq 0x2b0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xd3b4(%rip), %rsi      # 0x38759
callq 0x35e0
leaq 0x678(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2b3da
movq %rdx, 0x668(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x678(%rsp)
jmp 0x2b3e3
movupd (%rcx), %xmm0
movupd %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x668(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x2c3c(%rbp), %esi
movq 0x30(%rsp), %rdx
callq 0x1db19
movq 0x668(%rsp), %rdi
cmpq %r15, %rdi
je 0x2b425
callq 0x3310
movq 0x2b0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2b437
callq 0x3310
movq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
cmpq %rax, %rdi
je 0x2b451
callq 0x3310
movzbl %r12b, %r12d
leal -0x1(%r12), %eax
leal 0x1(%r14), %r13d
orl %eax, %r13d
cmpl $-0x1, %r13d
je 0x2b5c9
leaq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
movq %rax, (%rdi)
movl $0x1, %esi
movl $0x2d, %edx
callq 0x33a0
leal 0x1(%r13), %edx
leaq 0x4c0(%rsp), %rbx
movq (%rbx), %rdi
movl $0x1, %esi
callq 0x6dda
leaq 0xd2a2(%rip), %rcx      # 0x3874f
movl $0x9, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
leaq 0x2c0(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2b4ef
movq %rdx, 0x2b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2c0(%rsp)
jmp 0x2b4f7
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
leaq 0x2b0(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xd255(%rip), %rsi      # 0x38772
callq 0x35e0
leaq 0x658(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2b552
movq %rdx, 0x648(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x658(%rsp)
jmp 0x2b55b
movupd (%rcx), %xmm0
movupd %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x648(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x2c3c(%rbp), %esi
movq 0x30(%rsp), %rdx
callq 0x1db19
movq 0x648(%rsp), %rdi
cmpq %r15, %rdi
je 0x2b59d
callq 0x3310
movq 0x2b0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2b5af
callq 0x3310
movq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
cmpq %rax, %rdi
je 0x2b5c9
callq 0x3310
xorpd %xmm0, %xmm0
movapd %xmm0, 0x260(%rsp)
xorl %eax, %eax
movq %rax, 0x270(%rsp)
movq %rax, 0x200(%rsp)
movapd %xmm0, 0x1f0(%rsp)
movq %rax, 0x130(%rsp)
movapd %xmm0, 0x120(%rsp)
movq %rax, 0xa0(%rsp)
movapd %xmm0, 0x90(%rsp)
movq %rax, 0x110(%rsp)
movapd %xmm0, 0x100(%rsp)
movq 0x48(%rsp), %rsi
subq 0x40(%rsp), %rsi
sarq $0x3, %rsi
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %rsi
testl %esi, %esi
jle 0x2b78b
leaq (%r12,%r14), %rbx
incq %rbx
movl %r13d, %r14d
xorl %r12d, %r12d
movq 0x100(%rsp), %r15
movq 0x108(%rsp), %r13
cmpq %r15, %r13
je 0x2b690
movq %r15, %rbp
movq (%rbp), %rdi
addq $0x10, %rbp
cmpq %rbp, %rdi
je 0x2b67f
callq 0x3310
addq $0x10, %rbp
cmpq %r13, %rbp
jne 0x2b66d
movq %r15, 0x108(%rsp)
movq 0x40(%rsp), %rax
leaq (%r12,%r12,2), %r15
movq (%rax,%r15,8), %rsi
movq 0x8(%rax,%r15,8), %rax
subq %rsi, %rax
shrq $0x5, %rax
testl %eax, %eax
jle 0x2b74b
xorl %r13d, %r13d
xorl %ebp, %ebp
testq %rbp, %rbp
jne 0x2b6c8
leaq 0x260(%rsp), %rdi
callq 0x2e630
cmpq %rbp, 0x38(%rsp)
jne 0x2b6e8
movq 0x40(%rsp), %rax
movq (%rax,%r15,8), %rsi
addq %r13, %rsi
leaq 0x1f0(%rsp), %rdi
callq 0x2e630
cmpq %rbp, %r14
jne 0x2b706
movq 0x40(%rsp), %rax
movq (%rax,%r15,8), %rsi
addq %r13, %rsi
leaq 0x120(%rsp), %rdi
callq 0x2e630
cmpq %rbx, %rbp
jb 0x2b724
movq 0x40(%rsp), %rax
movq (%rax,%r15,8), %rsi
addq %r13, %rsi
leaq 0x100(%rsp), %rdi
callq 0x2e630
incq %rbp
movq 0x40(%rsp), %rax
movq (%rax,%r15,8), %rsi
movq 0x8(%rax,%r15,8), %rax
subq %rsi, %rax
shrq $0x5, %rax
cltq
addq $0x20, %r13
cmpq %rax, %rbp
jl 0x2b6b6
leaq 0x90(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x2e700
incq %r12
movq 0x48(%rsp), %rsi
subq 0x40(%rsp), %rsi
sarq $0x3, %rsi
movabsq $-0x5555555555555555, %rax # imm = 0xAAAAAAAAAAAAAAAB
imulq %rax, %rsi
movslq %esi, %rax
cmpq %rax, %r12
jl 0x2b655
movq 0x90(%rsp), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
shrq $0x5, %rcx
movq 0x8(%rsp), %rbx
movl %ecx, 0x2d1c(%rbx)
leaq 0x2ba4(%rbx), %rdx
leaq 0x228(%rsp), %rdi
leaq 0x2b0(%rsp), %rcx
callq 0xed32
cmpb $0x1, 0x2ba2(%rbx)
jne 0x2b8c7
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rax
subq %rsi, %rax
shrq $0x5, %rax
testl %eax, %eax
jle 0x2b8c7
leaq 0x328(%rsp), %rbx
xorl %r15d, %r15d
leaq 0x2b0(%rsp), %r14
leaq 0x4c0(%rsp), %r12
movq 0x16795(%rip), %r13     # 0x41fa8
xorl %ebp, %ebp
movq $0x0, 0x4c0(%rsp)
addq %r15, %rsi
movq %r14, %rdi
movl $0x8, %edx
callq 0x34f0
movq %r14, %rdi
movq %r12, %rsi
callq 0x31e0
movq %r14, %rdi
movq %r13, %rsi
callq 0x3420
movq %rbx, %rdi
callq 0x30f0
movsd 0x4c0(%rsp), %xmm0
callq 0x1aa2c
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movsd 0x4c0(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jne 0x2d44d
jp 0x2d44d
callq 0x1aa2c
testl %eax, %eax
js 0x2d44d
cvttsd2si 0x4c0(%rsp), %eax
movq 0x228(%rsp), %rcx
movl %eax, (%rcx,%rbp,4)
incq %rbp
movq 0x120(%rsp), %rsi
movq 0x128(%rsp), %rax
subq %rsi, %rax
shrq $0x5, %rax
cltq
addq $0x20, %r15
cmpq %rax, %rbp
jl 0x2b815
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
sarq $0x3, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
testl %eax, %eax
movq 0x8(%rsp), %rbp
jle 0x2b973
movq 0x228(%rsp), %rcx
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
xorl %edx, %edx
xorl %r9d, %r9d
xorl %edi, %edi
xorl %r8d, %r8d
xorl %esi, %esi
movl (%rcx,%rdx,4), %r10d
testl %r8d, %r8d
je 0x2b930
testl %r10d, %r10d
je 0x2b93e
xorl %esi, %r10d
movl %edi, %r11d
andl $-0x3, %r11d
orl %r10d, %r11d
jne 0x2b94d
decl %r8d
movl $0x2, %edi
jmp 0x2b958
testl %r10d, %r10d
je 0x2b952
leal -0x1(%r10), %r8d
movl %r10d, %esi
jmp 0x2b958
cmpl $0x1, %edi
ja 0x2b94d
decl %r8d
movl $0x1, %edi
jmp 0x2b958
movb $0x1, %r9b
jmp 0x2b958
movb $0x1, %r9b
xorl %r8d, %r8d
testb $0x1, %r9b
jne 0x2d3fb
incq %rdx
cmpq %rdx, %rax
jne 0x2b909
testl %r8d, %r8d
jne 0x2d5fb
cmpb $0x1, 0x2ba1(%rbp)
jne 0x2baaf
leaq 0x2c0(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
movb $0x0, (%r15)
shrq $0x3, %rax
imull $0xaaaaaaab, %eax, %eax # imm = 0xAAAAAAAB
testl %eax, %eax
jle 0x2ba98
xorl %r13d, %r13d
xorl %ebp, %ebp
xorl %r12d, %r12d
xorl %ebx, %ebx
xorl %r14d, %r14d
movq 0x1f0(%rsp), %rsi
addq %r13, %rsi
testl %r14d, %r14d
je 0x2ba18
movq %rsi, %rdi
leaq 0xbf48(%rip), %rsi      # 0x37923
callq 0x30d0
testl %eax, %eax
je 0x2ba36
movq 0x1f0(%rsp), %rax
movq 0x8(%rax,%r13), %rdx
cmpq 0x2b8(%rsp), %rdx
jne 0x2ba45
testq %rdx, %rdx
je 0x2ba49
movq 0x2b0(%rsp), %rsi
movq (%rax,%r13), %rdi
callq 0x3350
testl %eax, %eax
sete %al
jmp 0x2ba4b
leaq 0x2b0(%rsp), %rdi
callq 0x31c0
movq 0x228(%rsp), %rax
movl (%rax,%rbp,4), %r14d
decl %r14d
jmp 0x2ba68
cmpl $0x1, %ebx
ja 0x2ba65
decl %r14d
movl $0x1, %ebx
jmp 0x2ba68
xorl %eax, %eax
jmp 0x2ba4b
movb $0x1, %al
testl $0xfffffffd, %ebx       # imm = 0xFFFFFFFD
sete %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x2ba65
decl %r14d
movl $0x2, %ebx
jmp 0x2ba68
movb $0x1, %r12b
testb $0x1, %r12b
jne 0x2d49c
incq %rbp
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
shrq $0x3, %rax
imull $0xaaaaaaab, %eax, %eax # imm = 0xAAAAAAAB
cltq
addq $0x20, %r13
cmpq %rax, %rbp
jl 0x2b9c1
movq 0x2b0(%rsp), %rdi
cmpq %r15, %rdi
je 0x2baaa
callq 0x3310
movq 0x8(%rsp), %rbp
movslq 0x2d1c(%rbp), %rsi
leaq 0x2b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rdx
callq 0x6b04
movq 0x2d20(%rbp), %rdi
movapd 0x2b0(%rsp), %xmm0
movq 0x2c0(%rsp), %rax
movq %rdi, 0x2b0(%rsp)
movupd 0x2d28(%rbp), %xmm1
movupd %xmm0, 0x2d20(%rbp)
movq %rax, 0x2d30(%rbp)
movupd %xmm1, 0x2b8(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x2b0(%rsp)
movq $0x0, 0x2c0(%rsp)
testq %rdi, %rdi
je 0x2bb2e
callq 0x3310
movq 0x2b0(%rsp), %rdi
testq %rdi, %rdi
je 0x2bb40
callq 0x3310
movslq 0x2d1c(%rbp), %rsi
xorpd %xmm0, %xmm0
leaq 0x10(%rsp), %rdx
movapd %xmm0, (%rdx)
movq $0x0, 0x10(%rdx)
leaq 0x4c0(%rsp), %rdi
leaq 0x68(%rsp), %rcx
callq 0x2e72c
leaq 0x2b0(%rsp), %rdi
xorpd %xmm0, %xmm0
movapd %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movupd 0x2d38(%rbp), %xmm0
movq 0x2d48(%rbp), %rax
leaq 0x4c0(%rsp), %rbx
movaps (%rbx), %xmm1
movups %xmm1, 0x2d38(%rbp)
movq 0x10(%rbx), %rcx
movq %rcx, 0x2d48(%rbp)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movapd (%rdi), %xmm1
movapd %xmm0, (%rdi)
movapd %xmm1, (%rbx)
movq %rcx, 0x10(%rbx)
callq 0x14bd6
movq %rbx, %rdi
callq 0x14bd6
leaq 0x10(%rsp), %rdi
callq 0xb704
movq $0x0, 0x88(%rsp)
cmpl $0x0, 0x2d1c(%rbp)
jle 0x2bd40
xorl %r15d, %r15d
movq 0x8(%rsp), %r14
movq 0x90(%rsp), %rax
movq 0x98(%rsp), %rcx
subq %rax, %rcx
shrq $0x3, %rcx
imull $0xaaaaaaab, %ecx, %ecx # imm = 0xAAAAAAAB
leaq (%r15,%r15,2), %r12
testl %ecx, %ecx
movq %r15, 0x38(%rsp)
jle 0x2bcf2
shlq $0x5, %r15
xorl %r13d, %r13d
xorl %ebp, %ebp
movq (%rax,%r13), %rbx
movq 0x8(%rbx,%r15), %rdx
addq %r15, %rbx
movq 0x8(%rsp), %rax
cmpq 0x2bb0(%rax), %rdx
jne 0x2bc70
testq %rdx, %rdx
je 0x2bcb0
movq 0x8(%rsp), %rax
movq 0x2ba8(%rax), %rsi
movq (%rbx), %rdi
callq 0x3350
testl %eax, %eax
je 0x2bcb0
movq 0x2d38(%r14), %rax
movq (%rax,%r12,8), %rdi
movq 0x8(%rax,%r12,8), %rsi
movq %rbx, %rdx
callq 0x2ee82
movq 0x2d38(%r14), %rcx
cmpq 0x8(%rcx,%r12,8), %rax
jne 0x2bcc2
leaq (%rcx,%r12,8), %rdi
movq 0x90(%rsp), %rax
movq (%rax,%r13), %rsi
addq %r15, %rsi
callq 0x2e630
jmp 0x2bcc2
movq 0x88(%rsp), %rax
incl %eax
movq %rax, 0x88(%rsp)
incq %rbp
movq 0x90(%rsp), %rax
movq 0x98(%rsp), %rcx
subq %rax, %rcx
shrq $0x3, %rcx
imull $0xaaaaaaab, %ecx, %ecx # imm = 0xAAAAAAAB
movslq %ecx, %rcx
addq $0x18, %r13
cmpq %rcx, %rbp
jl 0x2bc39
movq 0x8(%rsp), %rbp
movq 0x2d20(%rbp), %rax
movq 0x2d38(%rbp), %rcx
movq 0x8(%rcx,%r12,8), %rdx
subq (%rcx,%r12,8), %rdx
shrq $0x5, %rdx
movq 0x38(%rsp), %r15
movl %edx, (%rax,%r15,4)
incq %r15
movslq 0x2d1c(%rbp), %rax
cmpq %rax, %r15
jl 0x2bc02
movq 0x88(%rsp), %rax
cltq
movq %rax, 0x88(%rsp)
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
shrq $0x3, %rax
imull $0xaaaaaaab, %eax, %eax # imm = 0xAAAAAAAB
testl %eax, %eax
jle 0x2c285
leaq 0x2c58(%rbp), %rax
movq %rax, 0x288(%rsp)
leaq 0x2c70(%rbp), %rax
movq %rax, 0x140(%rsp)
leaq 0x2cd0(%rbp), %rax
movq %rax, 0x280(%rsp)
leaq 0x2ce8(%rbp), %rax
movq %rax, 0x148(%rsp)
leaq 0x2d00(%rbp), %rax
movq %rax, 0xb0(%rsp)
movl $0xffffffff, 0x60(%rsp) # imm = 0xFFFFFFFF
movq $0x0, 0x38(%rsp)
leaq 0x2b0(%rsp), %rbx
leaq 0x4c0(%rsp), %r14
xorl %esi, %esi
xorl %r15d, %r15d
testl %r15d, %r15d
je 0x2bf55
incl %esi
cmpl $0x0, 0x2d1c(%rbp)
jle 0x2c256
movl %r15d, 0x64(%rsp)
movslq 0x60(%rsp), %r12
movl %esi, 0xbc(%rsp)
movslq %esi, %rax
movq %rax, 0x58(%rsp)
movl $0x8, %r14d
xorl %ebx, %ebx
xorl %r15d, %r15d
movq 0x90(%rsp), %rax
movq 0x38(%rsp), %rcx
leaq (%rcx,%rcx,2), %r13
movq (%rax,%r13,8), %rax
movq (%rax,%r14), %rdx
cmpq 0x2bb0(%rbp), %rdx
jne 0x2be4d
testq %rdx, %rdx
je 0x2beef
movq 0x2ba8(%rbp), %rsi
movq -0x8(%rax,%r14), %rdi
callq 0x3350
testl %eax, %eax
je 0x2beef
movq 0x2d38(%rbp), %rsi
addq %rbx, %rsi
leaq 0x6a8(%rsp), %rdi
callq 0x2e832
movq 0x90(%rsp), %rax
movq (%rax,%r13,8), %rax
leaq 0x808(%rsp), %r13
movq %r13, 0x7f8(%rsp)
movq -0x8(%rax,%r14), %rsi
movq (%rax,%r14), %rdx
addq %rsi, %rdx
leaq 0x7f8(%rsp), %rbp
movq %rbp, %rdi
callq 0xbe10
leaq 0x6a8(%rsp), %rdi
movq %rbp, %rsi
callq 0x2e7bc
incl %eax
movq 0x8(%rsp), %rbp
movq 0x2d00(%rbp), %rcx
leaq (%r12,%r12,2), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rcx,%rbx), %rcx
movq 0x58(%rsp), %rdx
movl %eax, (%rcx,%rdx,4)
movq 0x7f8(%rsp), %rdi
cmpq %r13, %rdi
je 0x2bee0
callq 0x3310
leaq 0x6a8(%rsp), %rdi
callq 0xb704
jmp 0x2bf19
movq 0x2d00(%rbp), %rax
leaq (%r12,%r12,2), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%rbx), %rax
movq 0x58(%rsp), %rcx
movl $0x0, (%rax,%rcx,4)
movq 0x2ce8(%rbp), %rax
incl (%rax,%r12,4)
incq %r15
movslq 0x2d1c(%rbp), %rax
addq $0x20, %r14
addq $0x18, %rbx
cmpq %rax, %r15
jl 0x2be09
leaq 0x2b0(%rsp), %rbx
leaq 0x4c0(%rsp), %r14
movl 0x64(%rsp), %r15d
movl 0xbc(%rsp), %esi
jmp 0x2c256
movq 0x38(%rsp), %r13
shlq $0x5, %r13
movq 0x260(%rsp), %rsi
addq %r13, %rsi
movq 0x288(%rsp), %rdi
callq 0x2e630
cmpb $0x1, 0x2ba1(%rbp)
jne 0x2bf99
addq 0x1f0(%rsp), %r13
movq 0x140(%rsp), %rdi
movq %r13, %rsi
callq 0x2e630
jmp 0x2bfe9
leaq 0x2c0(%rsp), %rax
movq %rax, 0x2b0(%rsp)
movq %rbx, %rdi
leaq 0xda80(%rip), %rsi      # 0x39a33
leaq 0xda7b(%rip), %rdx      # 0x39a35
callq 0x6e56
movq 0x140(%rsp), %rdi
movq %rbx, %rsi
callq 0x2efb6
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x2bfe9
callq 0x3310
movq 0x38(%rsp), %rax
leaq (,%rax,4), %rdx
addq 0x228(%rsp), %rdx
movq 0x2cd8(%rbp), %rsi
cmpq 0x2ce0(%rbp), %rsi
je 0x2c01f
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x2cd8(%rbp)
jmp 0x2c02c
movq 0x280(%rsp), %rdi
callq 0x6f02
movl $0x0, 0x2b0(%rsp)
movq 0x2cf0(%rbp), %rsi
cmpq 0x2cf8(%rbp), %rsi
je 0x2c05a
movl $0x0, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x2cf0(%rbp)
jmp 0x2c06a
movq 0x148(%rsp), %rdi
movq %rbx, %rdx
callq 0x1d2dc
movl 0x60(%rsp), %eax
incl %eax
movl %eax, 0x60(%rsp)
movslq %eax, %rcx
movq 0x2cd0(%rbp), %rax
movl (%rax,%rcx,4), %r15d
movslq 0x2d1c(%rbp), %r13
movq %rcx, 0x58(%rsp)
movslq (%rax,%rcx,4), %rsi
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x6b04
movq %rbx, %rdi
movq %r13, %rsi
movq %r14, %rdx
leaq 0x68(%rsp), %rcx
callq 0xb674
movq 0xb0(%rsp), %rdi
movq %rbx, %rsi
callq 0x2f1b8
movq %rbx, %rdi
callq 0xb634
movq 0x4c0(%rsp), %rdi
testq %rdi, %rdi
je 0x2c0dc
callq 0x3310
xorl %esi, %esi
cmpl $0x0, 0x2d1c(%rbp)
jle 0x2c256
movl %r15d, 0x64(%rsp)
movl $0x8, %r13d
movq 0x38(%rsp), %rax
leaq (%rax,%rax,2), %r14
xorl %ebx, %ebx
xorl %r15d, %r15d
movq 0x90(%rsp), %rax
movq (%rax,%r14,8), %rax
movq (%rax,%r13), %rdx
cmpq 0x2bb0(%rbp), %rdx
jne 0x2c144
testq %rdx, %rdx
je 0x2c1ef
movq 0x8(%rsp), %rcx
movq 0x2ba8(%rcx), %rsi
movq -0x8(%rax,%r13), %rdi
callq 0x3350
testl %eax, %eax
je 0x2c1ef
movq 0x8(%rsp), %rax
movq 0x2d38(%rax), %rsi
addq %rbx, %rsi
leaq 0x6c0(%rsp), %rdi
callq 0x2e832
movq 0x90(%rsp), %rax
movq %r14, %rbp
movq (%rax,%r14,8), %rax
leaq 0x828(%rsp), %r12
movq %r12, 0x818(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
leaq 0x818(%rsp), %r14
movq %r14, %rdi
callq 0xbe10
leaq 0x6c0(%rsp), %rdi
movq %r14, %rsi
callq 0x2e7bc
incl %eax
movq 0xb0(%rsp), %rcx
movq (%rcx), %rcx
movq 0x58(%rsp), %rdx
leaq (%rdx,%rdx,2), %rdx
movq (%rcx,%rdx,8), %rcx
movq (%rcx,%rbx), %rcx
movl %eax, (%rcx)
movq 0x818(%rsp), %rdi
cmpq %r12, %rdi
je 0x2c1dd
callq 0x3310
leaq 0x6c0(%rsp), %rdi
callq 0xb704
movq %rbp, %r14
jmp 0x2c21f
movq 0xb0(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rsp), %rdx
leaq (%rdx,%rdx,2), %rcx
movq (%rax,%rcx,8), %rax
movq (%rax,%rbx), %rax
movl $0x0, (%rax)
movq 0x148(%rsp), %rax
movq (%rax), %rax
incl (%rax,%rdx,4)
incq %r15
movq 0x8(%rsp), %rbp
movslq 0x2d1c(%rbp), %rax
addq $0x20, %r13
addq $0x18, %rbx
cmpq %rax, %r15
jl 0x2c104
leaq 0x2b0(%rsp), %rbx
leaq 0x4c0(%rsp), %r14
movl 0x64(%rsp), %r15d
xorl %esi, %esi
decl %r15d
movq 0x38(%rsp), %rdx
incq %rdx
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
shrq $0x3, %rax
imull $0xaaaaaaab, %eax, %eax # imm = 0xAAAAAAAB
cltq
movq %rdx, 0x38(%rsp)
cmpq %rax, %rdx
jl 0x2bdcd
movq 0x2c60(%rbp), %rax
movq 0x2cd0(%rbp), %rcx
subq 0x2c58(%rbp), %rax
shrq $0x5, %rax
movl %eax, 0x2d18(%rbp)
movq 0x2cd8(%rbp), %rdx
subq %rcx, %rdx
shrq $0x2, %rdx
testl %edx, %edx
jle 0x2c2cd
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
xorl %edi, %edi
xorl %esi, %esi
addl (%rcx,%rdi,4), %esi
incq %rdi
cmpq %rdi, %rdx
jne 0x2c2c0
jmp 0x2c2cf
xorl %esi, %esi
movslq 0x2d1c(%rbp), %rdx
imull %edx, %esi
movl %esi, 0x2d50(%rbp)
testq %rdx, %rdx
jle 0x2c351
movq 0x2d00(%rbp), %rsi
movl %eax, %edi
andl $0x7fffffff, %edi       # imm = 0x7FFFFFFF
xorl %r8d, %r8d
xorl %r9d, %r9d
testl %eax, %eax
jle 0x2d3a9
movb $0x1, %r10b
leaq (%r9,%r9,2), %r11
xorl %ebx, %ebx
movslq (%rcx,%rbx,4), %r14
testq %r14, %r14
jle 0x2c337
leaq (%rbx,%rbx,2), %r15
movq (%rsi,%r15,8), %r15
movq (%r15,%r11,8), %r15
xorl %r12d, %r12d
cmpl $0x0, (%r15,%r12,4)
movzbl %r10b, %r10d
cmovnel %r8d, %r10d
incq %r12
cmpq %r12, %r14
jne 0x2c322
incq %rbx
cmpq %rdi, %rbx
jne 0x2c30a
testb $0x1, %r10b
jne 0x2d3a9
incq %r9
cmpq %rdx, %r9
jne 0x2c2f9
cmpb $0x0, 0x2ba1(%rbp)
je 0x2c560
movslq %eax, %rsi
leaq 0x2b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rdx
callq 0x6b04
movq 0x2cb8(%rbp), %rdi
movapd 0x2b0(%rsp), %xmm0
movq 0x2c0(%rsp), %rax
movq %rdi, 0x2b0(%rsp)
movupd 0x2cc0(%rbp), %xmm1
movupd %xmm0, 0x2cb8(%rbp)
movq %rax, 0x2cc8(%rbp)
movupd %xmm1, 0x2b8(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x2b0(%rsp)
movq $0x0, 0x2c0(%rsp)
testq %rdi, %rdi
je 0x2c3d9
callq 0x3310
movq 0x2b0(%rsp), %rdi
testq %rdi, %rdi
je 0x2c3eb
callq 0x3310
cmpl $0x0, 0x2d18(%rbp)
jle 0x2c495
leaq 0x2c88(%rbp), %rbx
xorl %r14d, %r14d
xorl %r15d, %r15d
movq 0x2c88(%rbp), %rdi
movq 0x2c90(%rbp), %rsi
movq 0x2c70(%rbp), %rdx
addq %r14, %rdx
callq 0x2ee82
movq 0x2c90(%rbp), %rsi
cmpq %rsi, %rax
je 0x2c44d
movq 0x2c88(%rbp), %rdi
movq 0x2c70(%rbp), %rdx
addq %r14, %rdx
callq 0x2ee82
subq (%rbx), %rax
shrq $0x5, %rax
jmp 0x2c473
movq 0x2c70(%rbp), %rsi
addq %r14, %rsi
movq %rbx, %rdi
callq 0x2e630
movq 0x2c90(%rbp), %rax
subq 0x2c88(%rbp), %rax
shrq $0x5, %rax
decl %eax
movq 0x2cb8(%rbp), %rcx
movl %eax, (%rcx,%r15,4)
incq %r15
movslq 0x2d18(%rbp), %rax
addq $0x20, %r14
cmpq %rax, %r15
jl 0x2c405
movq 0x2c90(%rbp), %rsi
subq 0x2c88(%rbp), %rsi
sarq $0x5, %rsi
leaq 0x2b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rdx
callq 0x6b04
movq 0x2ca0(%rbp), %rdi
movapd 0x2b0(%rsp), %xmm0
movq 0x2c0(%rsp), %rax
movq %rdi, 0x2b0(%rsp)
movupd 0x2ca8(%rbp), %xmm1
movupd %xmm0, 0x2ca0(%rbp)
movq %rax, 0x2cb0(%rbp)
movupd %xmm1, 0x2b8(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x2b0(%rsp)
movq $0x0, 0x2c0(%rsp)
testq %rdi, %rdi
je 0x2c51f
callq 0x3310
movq 0x2b0(%rsp), %rdi
testq %rdi, %rdi
je 0x2c531
callq 0x3310
cmpl $0x0, 0x2d18(%rbp)
jle 0x2c560
movq 0x2ca0(%rbp), %rax
movq 0x2cb8(%rbp), %rcx
xorl %edx, %edx
movslq (%rcx,%rdx,4), %rsi
incl (%rax,%rsi,4)
incq %rdx
movslq 0x2d18(%rbp), %rsi
cmpq %rsi, %rdx
jl 0x2c54a
cmpb $0x1, 0x2ba1(%rbp)
jne 0x2c7de
movq 0x2c90(%rbp), %rbx
subq 0x2c88(%rbp), %rbx
sarq $0x5, %rbx
movq %rbx, %r14
negq %r14
cmovsq %rbx, %r14
movl $0x1, %r12d
cmpq $0xa, %r14
jb 0x2c5e9
movl $0x4, %r12d
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
movq %r14, %rcx
cmpq $0x63, %rcx
jbe 0x2c5e0
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x2c5e6
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x2c5e9
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %r12d
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x2c5a8
addl $-0x3, %r12d
jmp 0x2c5e9
addl $-0x2, %r12d
jmp 0x2c5e9
decl %r12d
shrq $0x3f, %rbx
leal (%rbx,%r12), %esi
leaq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
movq %rax, (%rdi)
movl $0x2d, %edx
callq 0x33a0
leaq 0x4c0(%rsp), %r13
addq (%r13), %rbx
movq %rbx, %rdi
movl %r12d, %esi
movq %r14, %rdx
callq 0x6dda
leaq 0xc45d(%rip), %rcx      # 0x38a8c
movl $0x17, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
leaq 0x2c0(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x4d0(%rsp), %r14
leaq 0x20(%rsp), %r15
movq 0x30(%rsp), %r12
je 0x2c683
movq %rdx, 0x2b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2c0(%rsp)
jmp 0x2c68b
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x2b8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x10(%rsp), %rdi
movq %r15, (%rdi)
leaq 0xb26d(%rip), %rsi      # 0x37922
leaq 0xb267(%rip), %rdx      # 0x37923
callq 0x6e56
movq 0x2b0(%rsp), %rcx
movq 0x2b8(%rsp), %r8
movq 0x18(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %rbx, %rcx
je 0x2c6ec
movq 0x2c0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2c707
movl $0xf, %esi
cmpq %r15, 0x10(%rsp)
je 0x2c702
movq 0x20(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2c71b
movq 0x10(%rsp), %rsi
leaq 0x2b0(%rsp), %rdi
callq 0x30e0
jmp 0x2c729
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
leaq 0x1e0(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x2c756
movq %rsi, 0x1d0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1e0(%rsp)
jmp 0x2c75e
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x1d8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movzbl 0x2c3c(%rbp), %esi
leaq 0x1d0(%rsp), %rdi
movq %r12, %rdx
callq 0x1db19
leaq 0x1e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2c7ab
callq 0x3310
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x2c7ba
callq 0x3310
movq 0x2b0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2c7cc
callq 0x3310
movq 0x4c0(%rsp), %rdi
cmpq %r14, %rdi
je 0x2c7de
callq 0x3310
movslq 0x2d18(%rbp), %r14
movq %r14, %rbx
negq %rbx
cmovsq %r14, %rbx
movl $0x1, %r12d
cmpq $0xa, %rbx
jb 0x2c84f
movl $0x4, %r12d
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
movq %rbx, %rcx
cmpq $0x63, %rcx
jbe 0x2c846
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x2c84c
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x2c84f
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %r12d
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x2c80e
addl $-0x3, %r12d
jmp 0x2c84f
addl $-0x2, %r12d
jmp 0x2c84f
decl %r12d
shrq $0x3f, %r14
leal (%r14,%r12), %esi
leaq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
movq %rax, (%rdi)
movl $0x2d, %edx
callq 0x33a0
leaq 0x4c0(%rsp), %r13
addq (%r13), %r14
movq %r14, %rdi
movl %r12d, %esi
movq %rbx, %rdx
callq 0x6dda
leaq 0xc20f(%rip), %rcx      # 0x38aa4
movl $0x10, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
leaq 0x2c0(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x4d0(%rsp), %rbx
leaq 0x20(%rsp), %r14
movq 0x30(%rsp), %r15
je 0x2c8e9
movq %rdx, 0x2b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2c0(%rsp)
jmp 0x2c8f2
movupd (%rcx), %xmm0
movupd %xmm0, (%rbp)
movq 0x8(%rax), %rdx
movq %rdx, 0x2b8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x10(%rsp), %rdi
movq %r14, (%rdi)
leaq 0xb006(%rip), %rsi      # 0x37922
leaq 0xb000(%rip), %rdx      # 0x37923
callq 0x6e56
movq 0x2b0(%rsp), %rcx
movq 0x2b8(%rsp), %r8
movq 0x18(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %rbp, %rcx
je 0x2c953
movq 0x2c0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2c96e
movl $0xf, %esi
cmpq %r14, 0x10(%rsp)
je 0x2c969
movq 0x20(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2c982
movq 0x10(%rsp), %rsi
leaq 0x2b0(%rsp), %rdi
callq 0x30e0
jmp 0x2c990
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
leaq 0x1c0(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x2c9bd
movq %rsi, 0x1b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1c0(%rsp)
jmp 0x2c9c5
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x1b8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x8(%rsp), %rax
movzbl 0x2c3c(%rax), %esi
leaq 0x1b0(%rsp), %rdi
movq %r15, %rdx
callq 0x1db19
leaq 0x1c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2ca17
callq 0x3310
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x2ca26
callq 0x3310
movq 0x2b0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2ca38
callq 0x3310
movq 0x4c0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2ca4a
callq 0x3310
movq 0x8(%rsp), %rax
movslq 0x2d1c(%rax), %r14
movq %r14, %rbx
negq %rbx
cmovsq %r14, %rbx
movl $0x1, %r12d
cmpq $0xa, %rbx
jb 0x2cac0
movl $0x4, %r12d
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
movq %rbx, %rcx
cmpq $0x63, %rcx
jbe 0x2cab7
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x2cabd
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x2cac0
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %r12d
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x2ca7f
addl $-0x3, %r12d
jmp 0x2cac0
addl $-0x2, %r12d
jmp 0x2cac0
decl %r12d
shrq $0x3f, %r14
leal (%r14,%r12), %esi
leaq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
movq %rax, (%rdi)
movl $0x2d, %edx
callq 0x33a0
leaq 0x4c0(%rsp), %r13
addq (%r13), %r14
movq %r14, %rdi
movl %r12d, %esi
movq %rbx, %rdx
callq 0x6dda
leaq 0xbfaf(%rip), %rcx      # 0x38ab5
movl $0x9, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
movq %rbp, 0x2b0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x4d0(%rsp), %rbx
leaq 0x20(%rsp), %r14
movq 0x30(%rsp), %r12
je 0x2cb56
movq %rdx, 0x2b0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2c0(%rsp)
jmp 0x2cb5f
movupd (%rcx), %xmm0
movupd %xmm0, (%rbp)
movq 0x8(%rax), %rdx
movq %rdx, 0x2b8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x10(%rsp), %rdi
movq %r14, (%rdi)
leaq 0xad99(%rip), %rsi      # 0x37922
leaq 0xad93(%rip), %rdx      # 0x37923
callq 0x6e56
movq 0x2b0(%rsp), %rcx
movq 0x2b8(%rsp), %r8
movq 0x18(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %rbp, %rcx
je 0x2cbc0
movq 0x2c0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2cbdb
movl $0xf, %esi
cmpq %r14, 0x10(%rsp)
je 0x2cbd6
movq 0x20(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2cbef
movq 0x10(%rsp), %rsi
leaq 0x2b0(%rsp), %rdi
callq 0x30e0
jmp 0x2cbfd
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
leaq 0x1a0(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x2cc2a
movq %rsi, 0x190(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1a0(%rsp)
jmp 0x2cc32
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x198(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x8(%rsp), %rax
movzbl 0x2c3c(%rax), %esi
leaq 0x190(%rsp), %rdi
movq %r12, %rdx
callq 0x1db19
leaq 0x1a0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2cc84
callq 0x3310
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x2cc93
callq 0x3310
movq 0x2b0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2cca5
callq 0x3310
movq 0x4c0(%rsp), %rdi
cmpq %rbx, %rdi
leaq 0x78(%rsp), %r13
movq 0x8(%rsp), %rbp
je 0x2ccc1
callq 0x3310
leaq 0x2b0(%rsp), %rdi
callq 0x3210
leaq 0x2c0(%rsp), %rbx
leaq 0xbde2(%rip), %rsi      # 0x38abf
movl $0x17, %edx
movq %rbx, %rdi
callq 0x3390
movq 0x2d20(%rbp), %rax
movl (%rax), %esi
movq %rbx, %rdi
callq 0x3550
cmpl $0x2, 0x2d1c(%rbp)
jl 0x2cd43
movl $0x1, %r15d
leaq 0xa57f(%rip), %r14      # 0x37290
movl $0x1, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3390
movq 0x2d20(%rbp), %rax
movl (%rax,%r15,4), %esi
movq %rbx, %rdi
callq 0x3550
incq %r15
movslq 0x2d1c(%rbp), %rax
cmpq %rax, %r15
jl 0x2cd11
leaq 0xbd8d(%rip), %rsi      # 0x38ad7
movl $0x2, %edx
movq %rbx, %rdi
callq 0x3390
leaq 0x2c8(%rsp), %rsi
leaq 0x7d8(%rsp), %rdi
callq 0x3490
movzbl 0x2c3c(%rbp), %esi
leaq 0x7d8(%rsp), %rdi
movq %r12, %rdx
callq 0x1db19
leaq 0x7e8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
movq 0x88(%rsp), %r15
je 0x2cda1
callq 0x3310
movq %r15, %rbx
negq %rbx
cmovsq %r15, %rbx
movl $0x1, %r14d
cmpq $0xa, %rbx
jb 0x2ce0b
movl $0x4, %r14d
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
movq %rbx, %rcx
cmpq $0x63, %rcx
jbe 0x2ce02
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x2ce08
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x2ce0b
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %r14d
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x2cdca
addl $-0x3, %r14d
jmp 0x2ce0b
addl $-0x2, %r14d
jmp 0x2ce0b
decl %r14d
shrq $0x3f, %r15
leal (%r15,%r14), %esi
leaq 0x160(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x150(%rsp), %rdi
movl $0x2d, %edx
callq 0x33a0
leaq 0x150(%rsp), %r12
addq (%r12), %r15
movq %r15, %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x6dda
leaq 0xbc88(%rip), %rcx      # 0x38ada
movl $0x19, %r8d
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
movq %r13, 0x68(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x20(%rsp), %rbx
je 0x2ce8c
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
jmp 0x2ce96
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x70(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xf0(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0xaceb(%rip), %rsi      # 0x37bac
leaq 0xace8(%rip), %rdx      # 0x37bb0
leaq 0xe0(%rsp), %rdi
callq 0x6e56
movq 0x68(%rsp), %rcx
movq 0x70(%rsp), %r8
movq 0xe8(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
leaq 0x78(%rsp), %rdi
cmpq %rdi, %rcx
je 0x2ceff
movq 0x78(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2cf20
movl $0xf, %esi
cmpq %rbp, 0xe0(%rsp)
je 0x2cf1b
movq 0xf0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2cf34
movq 0xe0(%rsp), %rsi
leaq 0x68(%rsp), %rdi
callq 0x30e0
jmp 0x2cf45
leaq 0xe0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
movq %rbx, 0x10(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x2cf65
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x2cf6d
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x8(%rsp), %rax
movq 0x2cd0(%rax), %rcx
movq 0x2cd8(%rax), %rdx
subq %rcx, %rdx
shrq $0x2, %rdx
xorl %eax, %eax
testl %edx, %edx
jle 0x2cfc3
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
xorl %esi, %esi
movslq (%rcx,%rsi,4), %rdi
cltq
addq %rdi, %rax
incq %rsi
cmpq %rsi, %rdx
jne 0x2cfb2
movq 0x8(%rsp), %rcx
movslq 0x2d1c(%rcx), %rbx
imulq %rax, %rbx
movq %rbx, %r14
negq %r14
cmovsq %rbx, %r14
movl $0x1, %r12d
cmpq $0xa, %r14
jb 0x2d03d
movl $0x4, %r12d
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
movq %r14, %rcx
cmpq $0x63, %rcx
jbe 0x2d034
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x2d03a
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x2d03d
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %r12d
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x2cffc
addl $-0x3, %r12d
jmp 0x2d03d
addl $-0x2, %r12d
jmp 0x2d03d
decl %r12d
shrq $0x3f, %rbx
leal (%rbx,%r12), %esi
leaq 0xd0(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0xc0(%rsp), %rdi
movl $0x2d, %edx
callq 0x33a0
addq 0xc0(%rsp), %rbx
movq %rbx, %rdi
movl %r12d, %esi
movq %r14, %rdx
callq 0x6dda
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %r8
movq 0xc8(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
leaq 0x20(%rsp), %r15
cmpq %r15, %rcx
je 0x2d0a3
movq 0x20(%rsp), %rsi
cmpq %rsi, %rax
leaq 0x4d0(%rsp), %r14
movq 0x30(%rsp), %r12
jbe 0x2d0d1
movl $0xf, %esi
cmpq %r13, 0xc0(%rsp)
je 0x2d0cc
movq 0xd0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2d0e5
movq 0xc0(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x30e0
jmp 0x2d0f6
leaq 0xc0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
movq %r14, 0x4c0(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x2d11f
movq %rdx, 0x4c0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x4d0(%rsp)
jmp 0x2d128
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x4c8(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x250(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xa7c6(%rip), %rsi      # 0x37921
leaq 0xa7c1(%rip), %rdx      # 0x37923
leaq 0x240(%rsp), %rdi
callq 0x6e56
movq 0x4c0(%rsp), %rcx
movq 0x4c8(%rsp), %r8
movq 0x248(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r14, %rcx
je 0x2d19d
movq 0x4d0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2d1be
movl $0xf, %esi
cmpq %rbx, 0x240(%rsp)
je 0x2d1b9
movq 0x250(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x2d1d5
movq 0x240(%rsp), %rsi
leaq 0x4c0(%rsp), %rdi
callq 0x30e0
jmp 0x2d1e6
leaq 0x240(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
leaq 0x180(%rsp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x2d213
movq %rsi, 0x170(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x180(%rsp)
jmp 0x2d21b
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x178(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x8(%rsp), %rax
movzbl 0x2c3c(%rax), %esi
leaq 0x170(%rsp), %rdi
movq %r12, %rdx
callq 0x1db19
leaq 0x180(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d26d
callq 0x3310
movq 0x240(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2d27f
callq 0x3310
movq 0x4c0(%rsp), %rdi
cmpq %r14, %rdi
je 0x2d291
callq 0x3310
movq 0xc0(%rsp), %rdi
cmpq %r13, %rdi
je 0x2d2a3
callq 0x3310
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x2d2b2
callq 0x3310
movq 0xe0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2d2c4
callq 0x3310
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
leaq 0x160(%rsp), %rbp
je 0x2d2e0
callq 0x3310
movq 0x150(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2d2f2
callq 0x3310
movq 0x14c87(%rip), %rsi     # 0x41f80
leaq 0x2b0(%rsp), %rdi
callq 0x3250
leaq 0x330(%rsp), %rdi
callq 0x30f0
movq 0x228(%rsp), %rdi
testq %rdi, %rdi
je 0x2d325
callq 0x3310
leaq 0x100(%rsp), %rdi
callq 0xb704
leaq 0x90(%rsp), %rdi
callq 0x14bd6
leaq 0x120(%rsp), %rdi
callq 0xb704
leaq 0x1f0(%rsp), %rdi
callq 0xb704
leaq 0x260(%rsp), %rdi
callq 0xb704
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x2d380
callq 0x3310
leaq 0x210(%rsp), %rdi
callq 0xb704
leaq 0x40(%rsp), %rdi
callq 0x14bd6
addq $0x898, %rsp            # imm = 0x898
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x6e8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xb685(%rip), %rsi      # 0x38a41
leaq 0xb6c8(%rip), %rdx      # 0x38a8b
leaq 0x6d8(%rsp), %rdi
callq 0x6e56
movq 0x8(%rsp), %rax
movzbl 0x2c3c(%rax), %esi
leaq 0x6d8(%rsp), %rdi
movq 0x30(%rsp), %rdx
callq 0x1db19
leaq 0x6d8(%rsp), %rdi
jmp 0x2d4e9
leaq 0x748(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xb3b1(%rip), %rsi      # 0x387bf
leaq 0xb49d(%rip), %rdx      # 0x388b2
leaq 0x738(%rsp), %rdi
callq 0x6e56
movq 0x8(%rsp), %rax
movzbl 0x2c3c(%rax), %esi
leaq 0x738(%rsp), %rdi
movq 0x30(%rsp), %rdx
callq 0x1db5c
leaq 0x738(%rsp), %rdi
jmp 0x2d4e9
leaq 0x768(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xb31d(%rip), %rsi      # 0x3877d
leaq 0xb357(%rip), %rdx      # 0x387be
leaq 0x758(%rsp), %rdi
callq 0x6e56
movq 0x8(%rsp), %rax
movzbl 0x2c3c(%rax), %esi
leaq 0x758(%rsp), %rdi
movq 0x30(%rsp), %rdx
callq 0x1db5c
leaq 0x758(%rsp), %rdi
jmp 0x2d4e9
leaq 0x708(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xb48b(%rip), %rsi      # 0x3893a
leaq 0xb58a(%rip), %rdx      # 0x38a40
leaq 0x6f8(%rsp), %rdi
callq 0x6e56
movq 0x8(%rsp), %rax
movzbl 0x2c3c(%rax), %esi
leaq 0x6f8(%rsp), %rdi
movq 0x30(%rsp), %rdx
callq 0x1db5c
leaq 0x6f8(%rsp), %rdi
callq 0x3150
movl $0x1, %edi
callq 0x33d0
leaq 0x7c8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xb165(%rip), %rsi      # 0x38670
leaq 0xb184(%rip), %rdx      # 0x38696
leaq 0x7b8(%rsp), %rdi
callq 0x6e56
movq 0x8(%rsp), %rax
movzbl 0x2c3c(%rax), %esi
leaq 0x7b8(%rsp), %rdi
movq 0x30(%rsp), %rdx
callq 0x1db5c
leaq 0x7b8(%rsp), %rdi
jmp 0x2d4e9
movl %ecx, %esi
leaq 0x4c0(%rsp), %rdi
callq 0x6d26
leaq 0xb171(%rip), %rsi      # 0x386ce
leaq 0x2b0(%rsp), %rdi
leaq 0x4c0(%rsp), %rdx
callq 0x6cb6
leaq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
movq %rax, (%rdi)
leaq 0xb171(%rip), %rsi      # 0x386f7
leaq 0xb18a(%rip), %rdx      # 0x38717
callq 0x6e56
leaq 0x838(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x6c0e
movq 0x8(%rsp), %rax
movzbl 0x2c3c(%rax), %esi
leaq 0x838(%rsp), %rdi
movq 0x30(%rsp), %rdx
callq 0x1db5c
leaq 0x838(%rsp), %rdi
callq 0x3150
leaq 0x10(%rsp), %rdi
callq 0x3150
leaq 0x2b0(%rsp), %rdi
callq 0x3150
leaq 0x4c0(%rsp), %rdi
jmp 0x2d4e9
leaq 0x728(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xb2a5(%rip), %rsi      # 0x388b3
leaq 0xb324(%rip), %rdx      # 0x38939
leaq 0x718(%rsp), %rdi
callq 0x6e56
movq 0x8(%rsp), %rax
movzbl 0x2c3c(%rax), %esi
leaq 0x718(%rsp), %rdi
movq 0x30(%rsp), %rdx
callq 0x1db5c
leaq 0x718(%rsp), %rdi
jmp 0x2d4e9
movq %rax, %r14
leaq 0x848(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d686
callq 0x3310
jmp 0x2d686
movq %rax, %r14
leaq 0x868(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d69f
callq 0x3310
jmp 0x2d69f
movq %rax, %r14
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x2d6b6
callq 0x3310
jmp 0x2d6b6
movq %rax, %r14
movq 0xc0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2d6e3
callq 0x3310
jmp 0x2d6e3
movq %rax, %r14
leaq 0x2c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x2d7f4
jmp 0x2d7fe
movq %rax, %r14
movq 0x718(%rsp), %rdi
jmp 0x2db4a
movq %rax, %r14
leaq 0x2c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d718
callq 0x3310
jmp 0x2d718
jmp 0x2d7fb
movq %rax, %r14
movq 0x7b8(%rsp), %rdi
jmp 0x2d9dc
jmp 0x2dc75
movq %rax, %r14
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d825
callq 0x3310
jmp 0x2d825
jmp 0x2dc75
movq %rax, %r14
leaq 0x1e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d75a
callq 0x3310
jmp 0x2d75a
movq %rax, %r14
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x2d773
callq 0x3310
jmp 0x2d773
movq %rax, %r14
movq 0x2b0(%rsp), %rdi
cmpq %rbx, %rdi
jne 0x2d996
jmp 0x2d9a0
jmp 0x2d99d
jmp 0x2dc75
jmp 0x2dc75
movq %rax, %r14
movq 0x668(%rsp), %rdi
jmp 0x2d7d8
jmp 0x2d7e4
jmp 0x2d7fb
jmp 0x2dc48
movq %rax, %r14
movq 0x798(%rsp), %rdi
jmp 0x2d9dc
jmp 0x2dc48
jmp 0x2dc48
jmp 0x2dc48
movq %rax, %r14
movq 0x648(%rsp), %rdi
cmpq %r15, %rdi
je 0x2d7e7
callq 0x3310
jmp 0x2d7e7
movq %rax, %r14
movq 0x2b0(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2d7fe
callq 0x3310
jmp 0x2d7fe
movq %rax, %r14
movq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
jmp 0x2db27
jmp 0x2dc48
jmp 0x2dbe5
jmp 0x2dc48
movq %rax, %r14
movq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
cmpq %rax, %rdi
je 0x2da3c
callq 0x3310
jmp 0x2da3c
movq %rax, %r14
leaq 0x180(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d866
callq 0x3310
jmp 0x2d866
movq %rax, %r14
movq 0x240(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2d87d
callq 0x3310
jmp 0x2d87d
movq %rax, %r14
movq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
cmpq %rax, %rdi
je 0x2d89c
callq 0x3310
jmp 0x2d89c
movq %rax, %r14
movq 0xc0(%rsp), %rdi
cmpq %r13, %rdi
je 0x2d8b3
callq 0x3310
jmp 0x2d8b3
movq %rax, %r14
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x2d8cc
callq 0x3310
jmp 0x2d8cc
movq %rax, %r14
movq 0xe0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2d8e3
callq 0x3310
jmp 0x2d8e3
movq %rax, %r14
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x2d8fc
callq 0x3310
jmp 0x2d8fc
movq %rax, %r14
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x2dc25
callq 0x3310
jmp 0x2dc25
jmp 0x2dc22
movq %rax, %r14
leaq 0x7e8(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x2d90c
jmp 0x2dc75
movq %rax, %r14
leaq 0x1a0(%rsp), %rax
jmp 0x2d95d
jmp 0x2d96d
jmp 0x2d986
jmp 0x2d99d
jmp 0x2dc75
movq %rax, %r14
leaq 0x1c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2d970
callq 0x3310
jmp 0x2d970
movq %rax, %r14
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x2d989
callq 0x3310
jmp 0x2d989
movq %rax, %r14
movq 0x2b0(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2d9a0
callq 0x3310
jmp 0x2d9a0
movq %rax, %r14
movq 0x4c0(%rsp), %rdi
leaq 0x4d0(%rsp), %rax
jmp 0x2da7f
jmp 0x2dc75
movq %rax, %r14
leaq 0x10(%rsp), %rdi
jmp 0x2dc6e
jmp 0x2dc75
jmp 0x2dc8c
movq %rax, %r14
movq 0x778(%rsp), %rdi
cmpq %rbx, %rdi
jne 0x2db30
jmp 0x2dcd0
jmp 0x2dc48
jmp 0x2dc48
movq %rax, %r14
leaq 0x2b0(%rsp), %rdi
callq 0x30b0
jmp 0x2da09
movq %rax, %r14
movq 0x878(%rsp), %rdi
cmpq %r15, %rdi
jne 0x2da2f
jmp 0x2dd01
movq %rax, %r14
movq 0x688(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2dd01
callq 0x3310
jmp 0x2dd01
movq %rax, %r14
movq 0x150(%rsp), %rdi
cmpq %r12, %rdi
je 0x2da9c
callq 0x3310
jmp 0x2da9c
movq %rax, %r14
movq 0x6f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2daca
callq 0x3310
jmp 0x2daca
jmp 0x2dc75
movq %rax, %r14
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
jne 0x2db53
jmp 0x2dc78
jmp 0x2dc75
jmp 0x2dc75
jmp 0x2dac7
movq %rax, %r14
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x2db1d
callq 0x3310
jmp 0x2db1d
jmp 0x2dc22
movq %rax, %r14
movq 0x758(%rsp), %rdi
jmp 0x2db4a
movq %rax, %r14
movq 0x2b0(%rsp), %rdi
cmpq %r15, %rdi
jne 0x2db53
jmp 0x2dc78
movq %rax, %r14
movq 0x738(%rsp), %rdi
jmp 0x2db4a
jmp 0x2dc75
movq %rax, %r14
jmp 0x2db08
jmp 0x2dc75
movq %rax, %r14
leaq 0x2b0(%rsp), %rdi
callq 0xb634
movq 0x4c0(%rsp), %rdi
testq %rdi, %rdi
jne 0x2db53
jmp 0x2dc78
movq %rax, %r14
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x2dcd0
callq 0x3310
jmp 0x2dcd0
jmp 0x2dc75
movq %rax, %r14
movq 0x6d8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x2dc78
callq 0x3310
jmp 0x2dc78
movq %rax, %r14
movq 0x14441(%rip), %rsi     # 0x41fa8
leaq 0x2b0(%rsp), %rdi
callq 0x3420
leaq 0x328(%rsp), %rdi
jmp 0x2dc41
jmp 0x2dc75
jmp 0x2dc75
jmp 0x2dc75
jmp 0x2dc75
jmp 0x2dc48
jmp 0x2dc75
jmp 0x2dc8c
jmp 0x2dc75
movq %rax, %r14
movq 0x68(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2dbe8
callq 0x3310
jmp 0x2dbe8
movq %rax, %r14
movq 0x143e1(%rip), %rsi     # 0x41fa8
leaq 0x4c0(%rsp), %rdi
callq 0x3420
leaq 0x538(%rsp), %rdi
callq 0x30f0
jmp 0x2dbe8
jmp 0x2dbe5
movq %rax, %r14
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x2dbfc
callq 0x3310
movq 0x143a5(%rip), %rsi     # 0x41fa8
leaq 0x2b0(%rsp), %rdi
callq 0x3420
leaq 0x328(%rsp), %rdi
callq 0x30f0
jmp 0x2dcd0
movq %rax, %r14
movq 0x14354(%rip), %rsi     # 0x41f80
leaq 0x2b0(%rsp), %rdi
callq 0x3250
leaq 0x330(%rsp), %rdi
callq 0x30f0
jmp 0x2dc78
movq %rax, %r14
jmp 0x2dcd0
jmp 0x2dc75
movq %rax, %r14
leaq 0x6c0(%rsp), %rdi
jmp 0x2dc6e
jmp 0x2dc75
jmp 0x2dc75
movq %rax, %r14
leaq 0x6a8(%rsp), %rdi
callq 0xb704
jmp 0x2dc78
movq %rax, %r14
movq 0x228(%rsp), %rdi
testq %rdi, %rdi
je 0x2dc8f
callq 0x3310
jmp 0x2dc8f
movq %rax, %r14
leaq 0x100(%rsp), %rdi
callq 0xb704
leaq 0x90(%rsp), %rdi
callq 0x14bd6
leaq 0x120(%rsp), %rdi
callq 0xb704
leaq 0x1f0(%rsp), %rdi
callq 0xb704
leaq 0x260(%rsp), %rdi
callq 0xb704
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x2dcea
callq 0x3310
leaq 0x210(%rsp), %rdi
callq 0xb704
leaq 0x40(%rsp), %rdi
callq 0x14bd6
movq %r14, %rdi
callq 0x3580