// File: /workspace/github_cpp_makefile_star2_O1/bobverity[P]MavericK/MCMCobject_admixture.cpp
// Function: MCMCobject_admixture::MCMCobject_admixture(globals&, int, int, int, int, double)
MCMCobject_admixture::MCMCobject_admixture(globals &globals, int _Kindex, int _burnin, int _samples, int _thinning, double _beta) {
    
    // copy some values over from globals object
    data = globals.data;
    
    Kindex = _Kindex;
    K = globals.Kmin+Kindex;
    n = globals.n;
    loci = globals.loci;
    J = globals.J;
    ploidy_vec = globals.ploidy_vec;
    uniquePops = globals.uniquePops;
    geneCopies = globals.geneCopies;
    
    lambda = globals.lambda;
    fixAlpha_on = globals.fixAlpha_on;
    alpha = globals.alpha[Kindex];
    alphaPropSD = globals.alphaPropSD[Kindex];
    beta = _beta;
    
    outputQmatrix_pop_on = globals.outputQmatrix_pop_on;
    
    burnin = _burnin;
    samples = _samples;
    thinning = _thinning;
    
    //log_lookup = globals.log_lookup;
    
    linearGroup = vector<int>(geneCopies);
    group = vector< vector< vector<int> > >(n);
    for (int ind=0; ind<n; ind++) {
        group[ind] = vector< vector<int> >(loci);
        for (int l=0; l<loci; l++) {
            group[ind][l] = vector<int>(ploidy_vec[ind]);
        }
    }
    group_propose = group;
    
    // initialise allele counts and frequencies
    alleleCounts = vector< vector< vector<int> > >(K);
    alleleCountsTotals = vector< vector<int> >(K);
    alleleFreqs = vector< vector< vector<double> > >(K);
    for (int k=0; k<K; k++) {
        alleleCounts[k] = vector< vector<int> >(loci);
        alleleCountsTotals[k] = vector<int>(loci);
        alleleFreqs[k] = vector< vector<double> >(loci);
        for (int l=0; l<loci; l++) {
            alleleCounts[k][l] = vector<int>(J[l]);
            alleleFreqs[k][l] = vector<double>(J[l]);
        }
    }
    
    // initialise admix counts and frequencies
    admixCounts = vector< vector<int> >(n,vector<int>(K));
    admixCountsTotals = vector<int>(n);
    admixFreqs = vector< vector<double> >(n,vector<double>(K));
    
    // initialise objects for calculating assignment probabilities
    logProbVec = vector<double>(K);
    logProbVecSum = 0;  // (used in Qmatrix calculation)
    logProbVecMax = 0;
    probVec = vector<double>(K);
    probVecSum = 0;
    
    // initialise Qmatrices
    logQmatrix_gene_old = vector< vector<double> >(geneCopies, vector<double>(K));
    logQmatrix_gene_new = vector< vector<double> >(geneCopies, vector<double>(K));
    Qmatrix_gene_new = vector< vector<double> >(geneCopies, vector<double>(K));
    logQmatrix_gene_running = vector< vector<double> >(geneCopies, vector<double>(K));
    
    logQmatrix_gene = vector< vector<double> >(geneCopies, vector<double>(K));
    Qmatrix_gene = vector< vector<double> >(geneCopies, vector<double>(K));
    Qmatrix_ind = vector< vector<double> >(n, vector<double>(K));
    Qmatrix_pop = vector< vector<double> >(uniquePops.size(), vector<double>(K));
    
    // initialise objects for Hungarian algorithm
    costMat = vector< vector<double> >(K, vector<double>(K));
    bestPermOrder = vector<int>(K);
    
    edgesLeft = vector<int>(K);
    edgesRight = vector<int>(K);
    blockedLeft = vector<int>(K);
    blockedRight = vector<int>(K);
    
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movsd %xmm0, 0x68(%rsp)
movl %r9d, %ebp
movl %r8d, %r12d
movl %ecx, 0x70(%rsp)
movl %edx, %r15d
movq %rsi, %r13
movq %rdi, %r14
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
xorl %eax, %eax
movq %rax, 0x10(%rdi)
leaq 0x28(%rdi), %rcx
movq %rcx, 0x78(%rsp)
leaq 0x40(%rdi), %rcx
movq %rcx, 0x88(%rsp)
leaq 0x58(%rdi), %rcx
movq %rcx, 0x98(%rsp)
leaq 0xd8(%rdi), %rcx
movq %rcx, 0x80(%rsp)
leaq 0xf0(%rdi), %rcx
movq %rcx, 0x90(%rsp)
leaq 0x110(%rdi), %rdi
leaq 0x128(%r14), %rcx
movq %rcx, 0xa0(%rsp)
leaq 0x140(%r14), %rcx
movq %rcx, 0xa8(%rsp)
movups %xmm0, 0x1f8(%r14)
movq %rax, 0x208(%r14)
movups %xmm0, 0x238(%r14)
movq %rax, 0x248(%r14)
movups %xmm0, 0x260(%r14)
movq %rax, 0x270(%r14)
movups %xmm0, 0x28(%r14)
movups %xmm0, 0x38(%r14)
movups %xmm0, 0x48(%r14)
movups %xmm0, 0x58(%r14)
movq %rax, 0x68(%r14)
movq %rax, 0x100(%r14)
leaq 0x280(%r14), %rbx
movups %xmm0, 0xc0(%r14)
movups %xmm0, 0xd0(%r14)
movups %xmm0, 0xe0(%r14)
movups %xmm0, 0xf0(%r14)
leaq 0x2d00(%rsi), %rax
movq %rax, 0x28(%rsp)
movl $0xd8, %edx
movq %rdi, 0xb0(%rsp)
xorl %esi, %esi
callq 0x31d0
movl $0x168, %edx            # imm = 0x168
movq %rbx, 0xd0(%rsp)
movq %rbx, %rdi
xorl %esi, %esi
callq 0x31d0
movq %r14, %rdi
movq 0x28(%rsp), %rsi
movq %r14, 0x28(%rsp)
callq 0xb17e
movl %r15d, 0x18(%r14)
addl 0x2bc8(%r13), %r15d
movl %r15d, 0x1c(%r14)
movq 0x2d18(%r13), %rax
movq %rax, 0x20(%r14)
leaq 0x2d20(%r13), %rsi
movq 0x78(%rsp), %rdi
callq 0xb2d4
leaq 0x2cd0(%r13), %rsi
movq 0x88(%rsp), %rdi
callq 0xb2d4
leaq 0x2c88(%r13), %rsi
movq 0x98(%rsp), %rdi
callq 0xb3a2
movslq 0x2d50(%r13), %rsi
movl %esi, 0x70(%r14)
movsd 0x2c50(%r13), %xmm0
movsd %xmm0, 0x78(%r14)
movb 0x2bd1(%r13), %al
movb %al, 0x80(%r14)
movslq 0x18(%r14), %rax
movq 0x2bd8(%r13), %rcx
movsd (%rcx,%rax,8), %xmm0
movsd %xmm0, 0x88(%r14)
movq 0x2bf0(%r13), %rcx
movsd (%rcx,%rax,8), %xmm0
movsd %xmm0, 0x90(%r14)
movsd 0x68(%rsp), %xmm0
movsd %xmm0, 0x98(%r14)
movb 0x2c3f(%r13), %al
movb %al, 0xa0(%r14)
movl 0x70(%rsp), %eax
movl %eax, 0xa4(%r14)
movl %r12d, 0xa8(%r14)
movl %ebp, 0xac(%r14)
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6b04
movq 0xc0(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movq 0x20(%rsp), %rax
movq %rdi, 0x10(%rsp)
movups 0xc8(%r14), %xmm1
movups %xmm0, 0xc0(%r14)
movq %rax, 0xd0(%r14)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x72ad
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x72bc
callq 0x3310
movslq 0x20(%r14), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xb4ea
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0xd8(%r14), %xmm0
movq 0xe8(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0xd8(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0xe8(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0xb572
movq %r15, %rdi
callq 0xb572
cmpl $0x0, 0x20(%r14)
jle 0x7478
xorl %r12d, %r12d
leaq 0x30(%rsp), %r15
leaq 0x10(%rsp), %r13
movslq 0x24(%r14), %rsi
movq %r15, %rdi
leaq 0x50(%rsp), %rdx
callq 0xb5ac
movq 0xd8(%r14), %rax
leaq (%r12,%r12,2), %rbx
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
movups (%rax,%rbx,8), %xmm0
movq 0x10(%rax,%rbx,8), %rcx
movaps 0x30(%rsp), %xmm1
movups %xmm1, (%rax,%rbx,8)
movq 0x40(%rsp), %rdx
movq %rdx, 0x10(%rax,%rbx,8)
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x30(%rsp)
movq %rax, 0x40(%rsp)
movq %r13, %rdi
callq 0xb634
movq %r15, %rdi
callq 0xb634
cmpl $0x0, 0x24(%r14)
jle 0x7463
xorl %r14d, %r14d
xorl %ebp, %ebp
movq 0x88(%rsp), %rax
movq (%rax), %rax
movslq (%rax,%r12,4), %rsi
movq %r13, %rdi
movq %r15, %rdx
callq 0x6b04
movq 0x80(%rsp), %rax
movq (%rax), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups 0x8(%rax,%r14), %xmm1
movups %xmm0, (%rax,%r14)
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rax,%r14)
movq %rdi, 0x10(%rsp)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x743b
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x744a
callq 0x3310
incq %rbp
movq 0x28(%rsp), %rax
movslq 0x24(%rax), %rax
addq $0x18, %r14
cmpq %rax, %rbp
jl 0x73cf
incq %r12
movq 0x28(%rsp), %r14
movslq 0x20(%r14), %rax
cmpq %rax, %r12
jl 0x7348
movq 0x90(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0xb17e
movslq 0x1c(%r14), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xb4ea
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x110(%r14), %xmm0
movq 0x120(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x110(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x120(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0xb572
movq %r15, %rdi
callq 0xb572
movslq 0x1c(%r14), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xb5ac
leaq 0x10(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x128(%r14), %xmm0
movq 0x138(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x128(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x138(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0xb634
movq %r15, %rdi
callq 0xb634
movslq 0x1c(%r14), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x5a30
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x140(%r14), %xmm0
movq 0x150(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x140(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x150(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0x5ab8
movq %r15, %rdi
callq 0x5ab8
movl 0x1c(%r14), %eax
testl %eax, %eax
jle 0x788a
xorl %r12d, %r12d
leaq 0x30(%rsp), %r15
leaq 0x50(%rsp), %rbx
leaq 0x10(%rsp), %r13
movslq 0x24(%r14), %rsi
movq %r15, %rdi
movq %rbx, %rdx
callq 0xb5ac
movq 0x110(%r14), %rax
leaq (%r12,%r12,2), %rbp
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
movups (%rax,%rbp,8), %xmm0
movq 0x10(%rax,%rbp,8), %rcx
movaps 0x30(%rsp), %xmm1
movups %xmm1, (%rax,%rbp,8)
movq 0x40(%rsp), %rdx
movq %rdx, 0x10(%rax,%rbp,8)
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x30(%rsp)
movq %rax, 0x40(%rsp)
movq %r13, %rdi
callq 0xb634
movq %r15, %rdi
callq 0xb634
movslq 0x24(%r14), %rsi
movq %r13, %rdi
movq %r15, %rdx
callq 0x6b04
movq 0xa0(%rsp), %rax
movq (%rax), %rax
movq (%rax,%rbp,8), %rdi
movaps 0x10(%rsp), %xmm0
movups 0x8(%rax,%rbp,8), %xmm1
movups %xmm0, (%rax,%rbp,8)
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rax,%rbp,8)
movq %rdi, 0x10(%rsp)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x76d7
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x76e6
callq 0x3310
movslq 0x24(%r14), %rsi
movq %r15, %rdi
movq %rbx, %rdx
callq 0x5af2
movq 0x140(%r14), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
movups (%rax,%rbp,8), %xmm0
movq 0x10(%rax,%rbp,8), %rcx
movaps 0x30(%rsp), %xmm1
movups %xmm1, (%rax,%rbp,8)
movq 0x40(%rsp), %rdx
movq %rdx, 0x10(%rax,%rbp,8)
movq 0x20(%rsp), %rax
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x30(%rsp)
movq %rax, 0x40(%rsp)
movq %r13, %rdi
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
cmpl $0x0, 0x24(%r14)
jle 0x7870
xorl %r14d, %r14d
xorl %ebx, %ebx
movq 0x78(%rsp), %rax
movq (%rax), %rax
movslq (%rax,%rbx,4), %rsi
movq %r13, %rdi
movq %r15, %rdx
callq 0x6b04
movq 0xb0(%rsp), %rax
movq (%rax), %rax
movq (%rax,%rbp,8), %rax
movq (%rax,%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups 0x8(%rax,%r14), %xmm1
movups %xmm0, (%rax,%r14)
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rax,%r14)
movq %rdi, 0x10(%rsp)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x77d0
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x77df
callq 0x3310
movq 0x78(%rsp), %rax
movq (%rax), %rax
movslq (%rax,%rbx,4), %rsi
movq %r13, %rdi
movq %r15, %rdx
callq 0x5916
movq 0xa8(%rsp), %rax
movq (%rax), %rax
movq (%rax,%rbp,8), %rax
movq (%rax,%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups 0x8(%rax,%r14), %xmm1
movups %xmm0, (%rax,%r14)
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rax,%r14)
movq %rdi, 0x10(%rsp)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7848
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7857
callq 0x3310
incq %rbx
movq 0x28(%rsp), %rax
movslq 0x24(%rax), %rax
addq $0x18, %r14
cmpq %rax, %rbx
jl 0x7767
incq %r12
movq 0x28(%rsp), %r14
movslq 0x1c(%r14), %rax
cmpq %rax, %r12
leaq 0x50(%rsp), %rbx
jl 0x7607
movslq 0x20(%r14), %r15
movslq %eax, %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x6b04
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0xb674
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x188(%r14), %xmm0
movq 0x198(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x188(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x198(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0xb634
movq %r15, %rdi
callq 0xb634
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7927
callq 0x3310
movslq 0x20(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6b04
movq 0x1a0(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movq 0x20(%rsp), %rax
movq %rdi, 0x10(%rsp)
movups 0x1a8(%r14), %xmm1
movups %xmm0, 0x1a0(%r14)
movq %rax, 0x1b0(%r14)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7987
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7996
callq 0x3310
movslq 0x20(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5916
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x59a0
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x1b8(%r14), %xmm0
movq 0x1c8(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x1b8(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x1c8(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7a34
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x5916
movq 0x238(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movq 0x20(%rsp), %rax
movq %rdi, 0x10(%rsp)
movups 0x240(%r14), %xmm1
movups %xmm0, 0x238(%r14)
movq %rax, 0x248(%r14)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7a94
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7aa3
callq 0x3310
xorps %xmm0, %xmm0
movups %xmm0, 0x250(%r14)
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x5916
movq 0x260(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movq 0x20(%rsp), %rax
movq %rdi, 0x10(%rsp)
movups 0x268(%r14), %xmm1
movups %xmm0, 0x260(%r14)
movq %rax, 0x270(%r14)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7b0e
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7b1d
callq 0x3310
movq $0x0, 0x278(%r14)
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5916
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x59a0
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x280(%r14), %xmm0
movq 0x290(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x280(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x290(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7bc6
callq 0x3310
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5916
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x59a0
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x298(%r14), %xmm0
movq 0x2a8(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x298(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x2a8(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7c64
callq 0x3310
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5916
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x59a0
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x2b0(%r14), %xmm0
movq 0x2c0(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x2b0(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x2c0(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7d02
callq 0x3310
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5916
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x59a0
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x2c8(%r14), %xmm0
movq 0x2d8(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x2c8(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x2d8(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7da0
callq 0x3310
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5916
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x59a0
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x2e0(%r14), %xmm0
movq 0x2f0(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x2e0(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x2f0(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7e3e
callq 0x3310
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5916
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x59a0
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x2f8(%r14), %xmm0
movq 0x308(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x2f8(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x308(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7edc
callq 0x3310
movslq 0x20(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5916
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x59a0
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x310(%r14), %xmm0
movq 0x320(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x310(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x320(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7f7a
callq 0x3310
movq 0x58(%r14), %rbx
movq 0x60(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5916
subq %rbx, %r15
sarq $0x5, %r15
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x59a0
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x328(%r14), %xmm0
movq 0x338(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x328(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x338(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x8023
callq 0x3310
movslq 0x1c(%r14), %r15
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %r15, %rsi
callq 0x5916
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x59a0
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movups 0x340(%r14), %xmm0
movq 0x350(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm1
movups %xmm1, 0x340(%r14)
movq 0x10(%r15), %rcx
movq %rcx, 0x350(%r14)
movq 0x10(%rdi), %rcx
movq %rax, 0x10(%rdi)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movaps %xmm1, (%r15)
movq %rcx, 0x10(%r15)
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x80c0
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6b04
movq 0x370(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movq 0x20(%rsp), %rax
movq %rdi, 0x10(%rsp)
movups 0x378(%r14), %xmm1
movups %xmm0, 0x370(%r14)
movq %rax, 0x380(%r14)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x8120
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x812f
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6b04
movq 0x388(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movq 0x20(%rsp), %rax
movq %rdi, 0x10(%rsp)
movups 0x390(%r14), %xmm1
movups %xmm0, 0x388(%r14)
movq %rax, 0x398(%r14)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x818f
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x819e
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6b04
movq 0x3a0(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movq 0x20(%rsp), %rax
movq %rdi, 0x10(%rsp)
movups 0x3a8(%r14), %xmm1
movups %xmm0, 0x3a0(%r14)
movq %rax, 0x3b0(%r14)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x81fe
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x820d
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6b04
movq 0x3b8(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movq 0x20(%rsp), %rax
movq %rdi, 0x10(%rsp)
movups 0x3c0(%r14), %xmm1
movups %xmm0, 0x3b8(%r14)
movq %rax, 0x3c8(%r14)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x826d
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x827c
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6b04
movq 0x3d0(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movq 0x20(%rsp), %rax
movq %rdi, 0x10(%rsp)
movups 0x3d8(%r14), %xmm1
movups %xmm0, 0x3d0(%r14)
movq %rax, 0x3e0(%r14)
movups %xmm1, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x82dc
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x82eb
callq 0x3310
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x835d
jmp 0x835d
jmp 0x835d
jmp 0x835d
jmp 0x835d
jmp 0x8335
jmp 0x8366
jmp 0x8335
jmp 0x8366
jmp 0x8335
jmp 0x8366
jmp 0x8335
jmp 0x8366
jmp 0x8335
jmp 0x8366
jmp 0x8335
jmp 0x8366
jmp 0x8335
jmp 0x8366
jmp 0x8335
jmp 0x8366
jmp 0x8335
jmp 0x8366
jmp 0x835d
jmp 0x835d
jmp 0x8335
jmp 0x8366
jmp 0x835d
movq %rax, %r12
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x8369
callq 0x3310
jmp 0x8369
jmp 0x8366
jmp 0x835d
jmp 0x835d
jmp 0x835d
jmp 0x835d
jmp 0x835d
jmp 0x835d
jmp 0x835d
jmp 0x835d
jmp 0x835d
movq %rax, %r12
jmp 0x836e
jmp 0x8366
jmp 0x8366
movq %rax, %r12
movq 0x28(%rsp), %r14
movq 0x3d0(%r14), %rdi
testq %rdi, %rdi
je 0x837f
callq 0x3310
movq 0x3b8(%r14), %rdi
testq %rdi, %rdi
je 0x8390
callq 0x3310
movq 0x3a0(%r14), %rdi
testq %rdi, %rdi
je 0x83a1
callq 0x3310
movq 0x388(%r14), %rdi
testq %rdi, %rdi
je 0x83b2
callq 0x3310
movq 0x370(%r14), %rdi
testq %rdi, %rdi
je 0x83c3
callq 0x3310
leaq 0x260(%r14), %rbx
leaq 0x298(%r14), %rbp
leaq 0x2b0(%r14), %rax
movq %rax, 0x70(%rsp)
leaq 0x2c8(%r14), %rax
movq %rax, 0x68(%rsp)
leaq 0x2e0(%r14), %rax
movq %rax, 0xc8(%rsp)
leaq 0x2f8(%r14), %rax
movq %rax, 0xc0(%rsp)
leaq 0x310(%r14), %rax
movq %rax, 0xb8(%rsp)
leaq 0x328(%r14), %r15
leaq 0x340(%r14), %r13
movq 0x358(%r14), %rdi
testq %rdi, %rdi
je 0x8435
callq 0x3310
addq $0x238, %r14            # imm = 0x238
movq %r13, %rdi
callq 0x5b7a
movq %r15, %rdi
callq 0x5b7a
movq 0xb8(%rsp), %rdi
callq 0x5b7a
movq 0xc0(%rsp), %rdi
callq 0x5b7a
movq 0xc8(%rsp), %rdi
callq 0x5b7a
movq 0x68(%rsp), %rdi
callq 0x5b7a
movq 0x70(%rsp), %rdi
callq 0x5b7a
movq %rbp, %rdi
callq 0x5b7a
movq 0xd0(%rsp), %rdi
callq 0x5b7a
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x84a9
callq 0x3310
movq 0x28(%rsp), %rax
leaq 0x1f8(%rax), %rbx
movq (%r14), %rdi
testq %rdi, %rdi
je 0x84c2
callq 0x3310
movq 0x28(%rsp), %r14
leaq 0x1b8(%r14), %rax
movq %rax, 0x68(%rsp)
leaq 0x1d0(%r14), %r15
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x84e7
callq 0x3310
leaq 0xc0(%r14), %rbx
leaq 0x158(%r14), %rbp
leaq 0x170(%r14), %rax
movq %rax, 0x70(%rsp)
leaq 0x188(%r14), %r13
movq %r15, %rdi
callq 0xb634
movq 0x68(%rsp), %rdi
callq 0x5b7a
movq 0x1a0(%r14), %rdi
testq %rdi, %rdi
je 0x852b
callq 0x3310
movq %r13, %rdi
callq 0xb634
movq 0x70(%rsp), %rdi
callq 0xb634
movq %rbp, %rdi
callq 0xb572
movq 0xa8(%rsp), %rdi
callq 0x5ab8
movq 0xa0(%rsp), %rdi
callq 0xb634
movq 0xb0(%rsp), %rdi
callq 0xb572
movq 0x90(%rsp), %rdi
callq 0xb572
movq 0x80(%rsp), %rdi
callq 0xb572
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8593
callq 0x3310
movq 0x98(%rsp), %rdi
callq 0xb704
movq 0x88(%rsp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0x85b5
callq 0x3310
movq 0x78(%rsp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0x85c7
callq 0x3310
movq %r14, %rdi
callq 0xb572
movq %r12, %rdi
callq 0x3580
nop