// File: /workspace/github_cpp_makefile_star2_O3/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 0xae62
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 0xafde
leaq 0x2cd0(%r13), %rsi
movq 0x88(%rsp), %rdi
callq 0xafde
leaq 0x2c88(%r13), %rsi
movq 0x98(%rsp), %rdi
callq 0xb0ba
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 0x6a48
movq 0xc0(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0xc0(%r14)
movq 0x20(%rsp), %rax
movq %rax, 0xd0(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x71f6
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x71f6
callq 0x3310
movslq 0x20(%r14), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xb22a
movq 0xe8(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0xe8(%r14)
movups 0xd8(%r14), %xmm1
movups %xmm0, 0xd8(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0xb2a8
movq %r15, %rdi
callq 0xb2a8
cmpl $0x0, 0x20(%r14)
jle 0x7380
movl 0x24(%r14), %eax
xorl %r12d, %r12d
leaq 0x30(%rsp), %r15
leaq 0x10(%rsp), %r13
movslq %eax, %rsi
movq %r15, %rdi
leaq 0x50(%rsp), %rdx
callq 0xb2e8
movq 0xd8(%r14), %rax
leaq (%r12,%r12,2), %rbx
movq 0x10(%rax,%rbx,8), %rcx
movaps 0x30(%rsp), %xmm0
movups (%rax,%rbx,8), %xmm1
movups %xmm0, (%rax,%rbx,8)
movq 0x40(%rsp), %rdx
movq %rdx, 0x10(%rax,%rbx,8)
movaps %xmm1, 0x10(%rsp)
movq %rcx, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
movq %r13, %rdi
callq 0xb366
movq %r15, %rdi
callq 0xb366
movl 0x24(%r14), %eax
testl %eax, %eax
jle 0x7370
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 0x6a48
movq 0x80(%rsp), %rax
movq (%rax), %rax
movq (%rax,%rbx,8), %rax
movq (%rax,%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, (%rax,%r14)
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rax,%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7356
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7356
callq 0x3310
incq %rbp
movq 0x28(%rsp), %rax
movslq 0x24(%rax), %rax
addq $0x18, %r14
cmpq %rax, %rbp
jl 0x72eb
movq 0x28(%rsp), %r14
incq %r12
movslq 0x20(%r14), %rcx
cmpq %rcx, %r12
jl 0x7278
movq 0x90(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0xae62
movslq 0x1c(%r14), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xb22a
movq 0x120(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x120(%r14)
movups 0x110(%r14), %xmm1
movups %xmm0, 0x110(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0xb2a8
movq %r15, %rdi
callq 0xb2a8
movslq 0x1c(%r14), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xb2e8
movq 0x138(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x138(%r14)
movups 0x128(%r14), %xmm1
movups %xmm0, 0x128(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0xb366
movq %r15, %rdi
callq 0xb366
movslq 0x1c(%r14), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0x59ac
movq 0x150(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x150(%r14)
movups 0x140(%r14), %xmm1
movups %xmm0, 0x140(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x5a2a
movq %r15, %rdi
callq 0x5a2a
movslq 0x1c(%r14), %rsi
testq %rsi, %rsi
jle 0x7716
movl 0x24(%r14), %eax
xorl %r12d, %r12d
leaq 0x30(%rsp), %r15
leaq 0x50(%rsp), %rbx
leaq 0x10(%rsp), %r13
movslq %eax, %rsi
movq %r15, %rdi
movq %rbx, %rdx
callq 0xb2e8
movq 0x110(%r14), %rax
leaq (%r12,%r12,2), %rbp
movq 0x10(%rax,%rbp,8), %rcx
movaps 0x30(%rsp), %xmm0
movups (%rax,%rbp,8), %xmm1
movups %xmm0, (%rax,%rbp,8)
movq 0x40(%rsp), %rdx
movq %rdx, 0x10(%rax,%rbp,8)
movaps %xmm1, 0x10(%rsp)
movq %rcx, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
movq %r13, %rdi
callq 0xb366
movq %r15, %rdi
callq 0xb366
movslq 0x24(%r14), %rsi
movq %r13, %rdi
movq %r15, %rdx
callq 0x6a48
movq 0xa0(%rsp), %rax
movq (%rax), %rax
movq (%rax,%rbp,8), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, (%rax,%rbp,8)
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rax,%rbp,8)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x75a5
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x75a5
callq 0x3310
movslq 0x24(%r14), %rsi
movq %r15, %rdi
movq %rbx, %rdx
callq 0x5a6a
movq 0x140(%r14), %rax
movq 0x10(%rax,%rbp,8), %rcx
movaps 0x30(%rsp), %xmm0
movups (%rax,%rbp,8), %xmm1
movups %xmm0, (%rax,%rbp,8)
movq 0x40(%rsp), %rdx
movq %rdx, 0x10(%rax,%rbp,8)
movaps %xmm1, 0x10(%rsp)
movq %rcx, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
movq %r13, %rdi
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movl 0x24(%r14), %eax
testl %eax, %eax
jle 0x7706
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 0x6a48
movq 0xb0(%rsp), %rax
movq (%rax), %rax
movq (%rax,%rbp,8), %rax
movq (%rax,%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, (%rax,%r14)
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rax,%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x767b
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x767b
callq 0x3310
movq 0x78(%rsp), %rax
movq (%rax), %rax
movslq (%rax,%rbx,4), %rsi
movq %r13, %rdi
movq %r15, %rdx
callq 0x588e
movq 0xa8(%rsp), %rax
movq (%rax), %rax
movq (%rax,%rbp,8), %rax
movq (%rax,%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, (%rax,%r14)
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rax,%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x76e3
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x76e3
callq 0x3310
incq %rbx
movq 0x28(%rsp), %rax
movslq 0x24(%rax), %rax
addq $0x18, %r14
cmpq %rax, %rbx
jl 0x7613
movq 0x28(%rsp), %r14
leaq 0x50(%rsp), %rbx
incq %r12
movslq 0x1c(%r14), %rsi
cmpq %rsi, %r12
jl 0x74ea
movslq 0x20(%r14), %r15
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x6a48
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0xb3ac
movq 0x198(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x198(%r14)
movups 0x188(%r14), %xmm1
movups %xmm0, 0x188(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0xb366
movq %r15, %rdi
callq 0xb366
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x77a2
callq 0x3310
movslq 0x20(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6a48
movq 0x1a0(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0x1a0(%r14)
movq 0x20(%rsp), %rax
movq %rax, 0x1b0(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x77ff
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x77ff
callq 0x3310
movslq 0x20(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x588e
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x591c
movq 0x1c8(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x1c8(%r14)
movups 0x1b8(%r14), %xmm1
movups %xmm0, 0x1b8(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x788f
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x588e
movq 0x238(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0x238(%r14)
movq 0x20(%rsp), %rax
movq %rax, 0x248(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x78ec
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x78ec
callq 0x3310
xorps %xmm0, %xmm0
movups %xmm0, 0x250(%r14)
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x588e
movq 0x260(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0x260(%r14)
movq 0x20(%rsp), %rax
movq %rax, 0x270(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7954
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7954
callq 0x3310
movq $0x0, 0x278(%r14)
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x588e
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x591c
movq 0x290(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x290(%r14)
movups 0x280(%r14), %xmm1
movups %xmm0, 0x280(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x79ef
callq 0x3310
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x588e
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x591c
movq 0x2a8(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x2a8(%r14)
movups 0x298(%r14), %xmm1
movups %xmm0, 0x298(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7a7f
callq 0x3310
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x588e
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x591c
movq 0x2c0(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x2c0(%r14)
movups 0x2b0(%r14), %xmm1
movups %xmm0, 0x2b0(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7b0f
callq 0x3310
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x588e
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x591c
movq 0x2d8(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x2d8(%r14)
movups 0x2c8(%r14), %xmm1
movups %xmm0, 0x2c8(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7b9f
callq 0x3310
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x588e
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x591c
movq 0x2f0(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x2f0(%r14)
movups 0x2e0(%r14), %xmm1
movups %xmm0, 0x2e0(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7c2f
callq 0x3310
movslq 0x70(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x588e
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x591c
movq 0x308(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x308(%r14)
movups 0x2f8(%r14), %xmm1
movups %xmm0, 0x2f8(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7cbf
callq 0x3310
movslq 0x20(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x588e
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x591c
movq 0x320(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x320(%r14)
movups 0x310(%r14), %xmm1
movups %xmm0, 0x310(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7d4f
callq 0x3310
movq 0x58(%r14), %rbx
movq 0x60(%r14), %r15
movslq 0x1c(%r14), %rsi
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x588e
subq %rbx, %r15
sarq $0x5, %r15
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x591c
movq 0x338(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x338(%r14)
movups 0x328(%r14), %xmm1
movups %xmm0, 0x328(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7dea
callq 0x3310
movslq 0x1c(%r14), %r15
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %r15, %rsi
callq 0x588e
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq %r15, %rsi
callq 0x591c
movq 0x350(%r14), %rax
leaq 0x30(%rsp), %r15
movaps (%r15), %xmm0
movq 0x10(%r15), %rcx
movq %rcx, 0x350(%r14)
movups 0x340(%r14), %xmm1
movups %xmm0, 0x340(%r14)
leaq 0x10(%rsp), %rdi
movaps %xmm1, (%rdi)
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movaps %xmm0, (%r15)
movq $0x0, 0x10(%r15)
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x7e79
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6a48
movq 0x370(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0x370(%r14)
movq 0x20(%rsp), %rax
movq %rax, 0x380(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7ed6
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7ed6
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6a48
movq 0x388(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0x388(%r14)
movq 0x20(%rsp), %rax
movq %rax, 0x398(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7f33
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7f33
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6a48
movq 0x3a0(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0x3a0(%r14)
movq 0x20(%rsp), %rax
movq %rax, 0x3b0(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7f90
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7f90
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6a48
movq 0x3b8(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0x3b8(%r14)
movq 0x20(%rsp), %rax
movq %rax, 0x3c8(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x7fed
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x7fed
callq 0x3310
movslq 0x1c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6a48
movq 0x3d0(%r14), %rdi
movaps 0x10(%rsp), %xmm0
movups %xmm0, 0x3d0(%r14)
movq 0x20(%rsp), %rax
movq %rax, 0x3e0(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
testq %rdi, %rdi
je 0x804a
callq 0x3310
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x804a
callq 0x3310
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x80bc
jmp 0x80bc
jmp 0x80bc
jmp 0x80bc
jmp 0x80bc
jmp 0x8094
jmp 0x80c5
jmp 0x8094
jmp 0x80c5
jmp 0x8094
jmp 0x80c5
jmp 0x8094
jmp 0x80c5
jmp 0x8094
jmp 0x80c5
jmp 0x8094
jmp 0x80c5
jmp 0x8094
jmp 0x80c5
jmp 0x8094
jmp 0x80c5
jmp 0x8094
jmp 0x80c5
jmp 0x80bc
jmp 0x80bc
jmp 0x8094
jmp 0x80c5
jmp 0x80bc
movq %rax, %r12
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x80c8
callq 0x3310
jmp 0x80c8
jmp 0x80c5
jmp 0x80bc
jmp 0x80bc
jmp 0x80bc
jmp 0x80bc
jmp 0x80bc
jmp 0x80bc
jmp 0x80bc
jmp 0x80bc
jmp 0x80bc
movq %rax, %r12
jmp 0x80cd
jmp 0x80c5
jmp 0x80c5
movq %rax, %r12
movq 0x28(%rsp), %r14
movq 0x3d0(%r14), %rdi
testq %rdi, %rdi
je 0x80de
callq 0x3310
movq 0x3b8(%r14), %rdi
testq %rdi, %rdi
je 0x80ef
callq 0x3310
movq 0x3a0(%r14), %rdi
testq %rdi, %rdi
je 0x8100
callq 0x3310
movq 0x388(%r14), %rdi
testq %rdi, %rdi
je 0x8111
callq 0x3310
movq 0x370(%r14), %rdi
testq %rdi, %rdi
je 0x8122
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 0x8194
callq 0x3310
addq $0x238, %r14            # imm = 0x238
movq %r13, %rdi
callq 0x5ae8
movq %r15, %rdi
callq 0x5ae8
movq 0xb8(%rsp), %rdi
callq 0x5ae8
movq 0xc0(%rsp), %rdi
callq 0x5ae8
movq 0xc8(%rsp), %rdi
callq 0x5ae8
movq 0x68(%rsp), %rdi
callq 0x5ae8
movq 0x70(%rsp), %rdi
callq 0x5ae8
movq %rbp, %rdi
callq 0x5ae8
movq 0xd0(%rsp), %rdi
callq 0x5ae8
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x8208
callq 0x3310
movq 0x28(%rsp), %rax
leaq 0x1f8(%rax), %rbx
movq (%r14), %rdi
testq %rdi, %rdi
je 0x8221
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 0x8246
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 0xb366
movq 0x68(%rsp), %rdi
callq 0x5ae8
movq 0x1a0(%r14), %rdi
testq %rdi, %rdi
je 0x828a
callq 0x3310
movq %r13, %rdi
callq 0xb366
movq 0x70(%rsp), %rdi
callq 0xb366
movq %rbp, %rdi
callq 0xb2a8
movq 0xa8(%rsp), %rdi
callq 0x5a2a
movq 0xa0(%rsp), %rdi
callq 0xb366
movq 0xb0(%rsp), %rdi
callq 0xb2a8
movq 0x90(%rsp), %rdi
callq 0xb2a8
movq 0x80(%rsp), %rdi
callq 0xb2a8
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x82f2
callq 0x3310
movq 0x98(%rsp), %rdi
callq 0xb43c
movq 0x88(%rsp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0x8314
callq 0x3310
movq 0x78(%rsp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0x8326
callq 0x3310
movq %r14, %rdi
callq 0xb2a8
movq %r12, %rdi
callq 0x3580