// File: /workspace/github_cpp_makefile_star2_O1/bobverity[P]MavericK/mainMCMC.cpp
// Function: mainMCMC_noAdmixture(globals&, int)
void mainMCMC_noAdmixture(globals &globals, int Kindex) {
    int K = globals.Kmin+Kindex;
    
    // define temporary Qmatrix objects for calculating mean and sd over mainRepeats
    vector< vector< vector<double> > > Qmatrix_ind_allReps(globals.n, vector< vector<double> >(K, vector<double>(globals.mainRepeats)));
    vector< vector< vector<double> > > Qmatrix_pop_allReps(globals.uniquePops.size(), vector< vector<double> >(K, vector<double>(globals.mainRepeats)));
    
    // define MCMC object
    MCMCobject_noAdmixture mainMCMC(globals, Kindex, globals.mainBurnin, globals.mainSamples, globals.mainThinning, 1.0);
    
    // repeat analysis multiple times
    for (int mainRep=0; mainRep<globals.mainRepeats; mainRep++) {
        coutAndLog("  analysis "+to_string((long long)mainRep+1)+" of "+to_string((long long)globals.mainRepeats)+"\n", globals.outputLog_on, globals.outputLog_fileStream);
        
        // perform MCMC
        if (mainRep==0) {
            mainMCMC.reset(true);
        } else {
            mainMCMC.reset(false);
        }
        mainMCMC.perform_MCMC(globals, true, false, globals.fixLabels_on, globals.outputLikelihood_on, globals.outputPosteriorGrouping_on, mainRep);
        
        // save Qmatrix values
        if (globals.fixLabels_on) {
            for (int i=0; i<globals.n; i++) {
                for (int k=0; k<K; k++) {
                    Qmatrix_ind_allReps[i][k][mainRep] = mainMCMC.Qmatrix_ind[i][k];
                }
            }
            if (globals.outputQmatrix_pop_on) {
                for (int i=0; i<int(globals.uniquePops.size()); i++) {
                    for (int k=0; k<K; k++) {
                        Qmatrix_pop_allReps[i][k][mainRep] = mainMCMC.Qmatrix_pop[i][k];
                    }
                }
            }
        }
        
        // save harmonic mean of marginal likelihoods
        globals.logEvidence_harmonic[Kindex][mainRep] = mainMCMC.harmonic;
        
        // calculate Structure estimator from joint likelihoods
        globals.structure_loglike_mean[Kindex][mainRep] = mainMCMC.logLikeJoint_sum/double(globals.mainSamples);
        globals.structure_loglike_var[Kindex][mainRep] = mainMCMC.logLikeJoint_sumSquared/double(globals.mainSamples) - globals.structure_loglike_mean[Kindex][mainRep]*globals.structure_loglike_mean[Kindex][mainRep];
        globals.logEvidence_structure[Kindex][mainRep] = globals.structure_loglike_mean[Kindex][mainRep] - 0.5*globals.structure_loglike_var[Kindex][mainRep];
        
        // calculate elements of Evanno's delta K for the *previous* iteration
        if (Kindex>0)
            globals.L_1[Kindex][mainRep] = globals.logEvidence_structure[Kindex][mainRep]-globals.logEvidence_structure[Kindex-1][mainRep];
        if (Kindex>1) {
            globals.L_2[Kindex-1][mainRep] = abs(globals.L_1[Kindex][mainRep]-globals.L_1[Kindex-1][mainRep]);
        }
        
    }
    
    // save Qmatrices
    if (globals.fixLabels_on) {
        for (int i=0; i<globals.n; i++) {
            for (int k=0; k<K; k++) {
                globals.Qmatrix_ind[Kindex][i][k] = mean(Qmatrix_ind_allReps[i][k]);
                globals.QmatrixError_ind[Kindex][i][k] = sqrt(var(Qmatrix_ind_allReps[i][k])/double(globals.mainRepeats));
            }
        }
        if (globals.outputQmatrix_pop_on) {
            for (int i=0; i<int(globals.uniquePops.size()); i++) {
                for (int k=0; k<K; k++) {
                    globals.Qmatrix_pop[Kindex][i][k] = mean(Qmatrix_pop_allReps[i][k]);
                    globals.QmatrixError_pop[Kindex][i][k] = sqrt(var(Qmatrix_pop_allReps[i][k]));
                }
            }
        }
    }
    
    // calculate grand mean and standard error of harmonic mean estimator
    globals.logEvidence_harmonic_grandMean[Kindex] = mean(globals.logEvidence_harmonic[Kindex]);
    if (globals.mainRepeats>1) {
        globals.logEvidence_harmonic_grandSE[Kindex] = sqrt(var(globals.logEvidence_harmonic[Kindex], 0, true)/globals.mainRepeats);
    }
    
    // calculate grand mean and standard error of Structure estimator
    globals.logEvidence_structure_grandMean[Kindex] = mean(globals.logEvidence_structure[Kindex]);
    if (globals.mainRepeats>1) {
        globals.logEvidence_structure_grandSE[Kindex] = sqrt(var(globals.logEvidence_structure[Kindex], 0, true)/globals.mainRepeats);
    }
    
    // finalise calculation of Evanno's delta K for *previous* iteration
    if (Kindex>1) {
        globals.delta_K[Kindex-1] = mean(globals.L_2[Kindex-1])/sqrt(var(globals.logEvidence_structure[Kindex-1], 0, true));
    }
    
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x418, %rsp            # imm = 0x418
movl %esi, %ebp
movq %rdi, %r14
movl 0x2bc8(%rdi), %r13d
addl %esi, %r13d
movslq 0x2d18(%rdi), %r12
movslq 0x2c0c(%rdi), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x5916
movslq %r13d, %rsi
leaq 0x128(%rsp), %rdi
leaq 0x10(%rsp), %rdx
leaq 0x78(%rsp), %rcx
movq %rsi, 0x8(%rsp)
callq 0x59a0
leaq 0x110(%rsp), %rdi
leaq 0x128(%rsp), %rdx
leaq 0x98(%rsp), %rcx
movq %r12, %rsi
callq 0x1a7de
leaq 0x128(%rsp), %rdi
callq 0x5b7a
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x18a4c
callq 0x3310
movq 0x2c90(%r14), %r12
subq 0x2c88(%r14), %r12
movslq 0x2c0c(%r14), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x5916
leaq 0x128(%rsp), %rdi
leaq 0x10(%rsp), %rdx
leaq 0x78(%rsp), %rcx
movq 0x8(%rsp), %rsi
callq 0x59a0
sarq $0x5, %r12
leaq 0xf8(%rsp), %rdi
leaq 0x128(%rsp), %rdx
leaq 0x98(%rsp), %rcx
movq %r12, %rsi
callq 0x1a7de
leaq 0x128(%rsp), %rdi
callq 0x5b7a
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x18acc
callq 0x3310
movl 0x2c10(%r14), %ecx
movl 0x2c14(%r14), %r8d
movl 0x2c18(%r14), %r9d
leaq 0x128(%rsp), %rdi
movsd 0x1e76f(%rip), %xmm0    # 0x37260
movq %r14, %rsi
movl %ebp, %edx
callq 0xc304
cmpl $0x0, 0x2c0c(%r14)
movslq %ebp, %rax
movq %rax, 0x30(%rsp)
movl %r13d, 0x4(%rsp)
jle 0x19162
leaq 0x970(%r14), %rax
movq %rax, 0xe8(%rsp)
movl %ebp, %eax
movq %rax, 0xe0(%rsp)
leal -0x1(%rbp), %eax
movl %r13d, %r15d
xorl %ebx, %ebx
shlq $0x3, %rax
movq %rax, 0xd8(%rsp)
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
movq %rbp, 0xf0(%rsp)
leaq 0x1(%rbx), %r12
movl $0x1, %ebp
cmpq $0x9, %rbx
leaq 0x98(%rsp), %r13
jb 0x18bb1
movl $0x4, %ebp
movq %r12, %rcx
cmpq $0x63, %rcx
jbe 0x18baa
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x18baf
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x18bb1
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %ebp
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x18b74
addl $-0x3, %ebp
jmp 0x18bb1
addl $-0x2, %ebp
jmp 0x18bb1
decl %ebp
movl %ebp, %esi
leaq 0xa8(%rsp), %rax
movq %rax, 0x98(%rsp)
movq %r13, %rdi
movl $0x2d, %edx
callq 0x33a0
movq 0x98(%rsp), %rdi
movl %ebp, %esi
movq %r12, %rdx
callq 0x6dda
movl $0xb, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x1efaa(%rip), %rcx     # 0x37ba0
callq 0x3370
leaq 0x88(%rsp), %rsi
movq %rsi, 0x78(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x48(%rsp), %r12
je 0x18c2e
movq %rdx, 0x78(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x88(%rsp)
jmp 0x18c36
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x80(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x78(%rsp), %rdi
leaq 0x1ef4f(%rip), %rsi     # 0x37bac
callq 0x35e0
movq %r12, 0x38(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
je 0x18c8f
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
jmp 0x18c99
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x40(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movslq 0x2c0c(%r14), %r13
movq %r13, %r12
negq %r12
cmovsq %r13, %r12
movl $0x1, %ebp
cmpq $0xa, %r12
jb 0x18d12
movl $0x4, %ebp
movq %r12, %rcx
cmpq $0x63, %rcx
jbe 0x18d0b
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x18d10
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x18d12
movq %rcx, %rax
mulq %rsi
shrq $0xb, %rdx
addl $0x4, %ebp
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x18cd5
addl $-0x3, %ebp
jmp 0x18d12
addl $-0x2, %ebp
jmp 0x18d12
decl %ebp
shrq $0x3f, %r13
leal (%r13,%rbp), %esi
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0x58(%rsp), %rdi
movl $0x2d, %edx
callq 0x33a0
addq 0x58(%rsp), %r13
movq %r13, %rdi
movl %ebp, %esi
movq %r12, %rdx
callq 0x6dda
movq 0x38(%rsp), %rcx
movl $0xf, %esi
leaq 0x48(%rsp), %rax
cmpq %rax, %rcx
je 0x18d5f
movq 0x48(%rsp), %rsi
movq 0x40(%rsp), %r8
movq 0x60(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
movq 0xf0(%rsp), %rbp
movl 0x4(%rsp), %r13d
jbe 0x18d9a
movl $0xf, %esi
leaq 0x68(%rsp), %rdi
cmpq %rdi, 0x58(%rsp)
je 0x18d95
movq 0x68(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x18dab
movq 0x58(%rsp), %rsi
leaq 0x38(%rsp), %rdi
callq 0x30e0
jmp 0x18db9
leaq 0x58(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3370
leaq 0x20(%rsp), %rsi
movq %rsi, 0x10(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x18dde
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0x18de6
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x10(%rsp), %rdi
leaq 0x1eb13(%rip), %rsi     # 0x37922
callq 0x35e0
leaq 0xc8(%rsp), %rsi
movq %rsi, 0xb8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x18e48
movq %rdx, 0xb8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xc8(%rsp)
jmp 0x18e50
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0xc0(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movzbl 0x2c3c(%r14), %esi
leaq 0xb8(%rsp), %rdi
movq 0xe8(%rsp), %rdx
callq 0x1db19
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x18ea2
callq 0x3310
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x18eb6
callq 0x3310
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x18eca
callq 0x3310
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x18ede
callq 0x3310
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x18ef5
callq 0x3310
movq %rbp, %r12
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x18f12
callq 0x3310
xorl %esi, %esi
testq %rbx, %rbx
sete %sil
leaq 0x128(%rsp), %rbp
movq %rbp, %rdi
callq 0xd30e
movzbl 0x2c4f(%r14), %r8d
movzbl 0x2c3d(%r14), %r9d
movzbl 0x2c48(%r14), %eax
movq %rbp, %rdi
movq %r14, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
pushq %rbx
pushq %rax
callq 0xda82
addq $0x10, %rsp
cmpb $0x1, 0x2c4f(%r14)
movq %r12, %rbp
movq 0x30(%rsp), %r11
jne 0x19044
movslq 0x2d18(%r14), %rax
testq %rax, %rax
jle 0x18fce
movq 0x340(%rsp), %rcx
movq 0x110(%rsp), %rdx
xorl %esi, %esi
testl %r13d, %r13d
jle 0x18fc6
leaq (,%rsi,8), %rdi
leaq (%rdi,%rdi,2), %r8
movq (%rcx,%r8), %rdi
movq (%rdx,%r8), %r8
xorl %r9d, %r9d
movsd (%rdi,%r9,8), %xmm0
movq (%r8), %r10
movsd %xmm0, (%r10,%rbx,8)
incq %r9
addq $0x18, %r8
cmpq %r9, %r15
jne 0x18fab
incq %rsi
cmpq %rax, %rsi
jne 0x18f8f
cmpb $0x1, 0x2c3f(%r14)
jne 0x19044
movq 0x2c90(%r14), %rax
subq 0x2c88(%r14), %rax
shrq $0x5, %rax
testl %eax, %eax
jle 0x19044
movq 0x358(%rsp), %rcx
movq 0xf8(%rsp), %rdx
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
xorl %esi, %esi
testl %r13d, %r13d
jle 0x1903c
leaq (,%rsi,8), %rdi
leaq (%rdi,%rdi,2), %r8
movq (%rcx,%r8), %rdi
movq (%rdx,%r8), %r8
xorl %r9d, %r9d
movsd (%rdi,%r9,8), %xmm0
movq (%r8), %r10
movsd %xmm0, (%r10,%rbx,8)
incq %r9
addq $0x18, %r8
cmpq %r9, %r15
jne 0x19021
incq %rsi
cmpq %rax, %rsi
jne 0x19005
leaq (,%r11,8), %rax
movsd 0x290(%rsp), %xmm0
movq 0x2e18(%r14), %rcx
leaq (%rax,%rax,2), %rdx
movq (%rcx,%rdx), %rax
movsd %xmm0, (%rax,%rbx,8)
movsd 0x280(%rsp), %xmm1
cvtsi2sdl 0x2c14(%r14), %xmm2
divsd %xmm2, %xmm1
movq 0x2e60(%r14), %rax
movq (%rax,%rdx), %rax
movsd %xmm1, (%rax,%rbx,8)
movsd 0x288(%rsp), %xmm0
divsd %xmm2, %xmm0
mulsd %xmm1, %xmm1
subsd %xmm1, %xmm0
movq 0x2e78(%r14), %rcx
movq (%rcx,%rdx), %rcx
movsd %xmm0, (%rcx,%rbx,8)
mulsd 0x1ea9c(%rip), %xmm0    # 0x37b58
addsd (%rax,%rbx,8), %xmm0
movq 0x2e90(%r14), %rax
movq (%rax,%rdx), %rcx
movsd %xmm0, (%rcx,%rbx,8)
testl %ebp, %ebp
jle 0x190ff
movq 0xe0(%rsp), %rcx
leaq (%rcx,%rcx,2), %rcx
movq -0x18(%rax,%rcx,8), %rax
subsd (%rax,%rbx,8), %xmm0
movq 0x30d8(%r14), %rax
leaq (%r11,%r11,2), %rcx
movq (%rax,%rcx,8), %rax
movsd %xmm0, (%rax,%rbx,8)
cmpl $0x2, %ebp
movabsq $0x346dc5d63886594b, %rsi # imm = 0x346DC5D63886594B
jl 0x1914f
leaq (%r11,%r11,2), %rax
movq 0x30d8(%r14), %rcx
movq (%rcx,%rax,8), %rax
movsd (%rax,%rbx,8), %xmm0
movq 0xd8(%rsp), %rax
leaq (%rax,%rax,2), %rax
movq (%rcx,%rax), %rcx
subsd (%rcx,%rbx,8), %xmm0
movq 0x30f0(%r14), %rcx
andpd 0x1ea2a(%rip), %xmm0    # 0x37b70
movq (%rcx,%rax), %rax
movlpd %xmm0, (%rax,%rbx,8)
incq %rbx
movslq 0x2c0c(%r14), %rax
cmpq %rax, %rbx
jl 0x18b55
cmpb $0x1, 0x2c4f(%r14)
jne 0x193d7
cmpl $0x0, 0x2d18(%r14)
jle 0x19298
xorl %ebx, %ebx
movq 0x30(%rsp), %rax
leaq (%rax,%rax,2), %r15
testl %r13d, %r13d
jle 0x19280
leaq (%rbx,%rbx,2), %r12
xorl %r13d, %r13d
movq 0x110(%rsp), %rax
movq (%rax,%r12,8), %rax
leaq (,%r13,2), %rdx
addq %r13, %rdx
movq (%rax,%rdx,8), %rsi
movq 0x8(%rax,%rdx,8), %rcx
subq %rsi, %rcx
movq %rcx, %rdi
shrq $0x3, %rdi
testl %edi, %edi
jle 0x191e4
andl $0x7fffffff, %edi       # imm = 0x7FFFFFFF
xorpd %xmm0, %xmm0
xorl %r8d, %r8d
addsd (%rsi,%r8,8), %xmm0
incq %r8
cmpq %r8, %rdi
jne 0x191d4
jmp 0x191e8
xorpd %xmm0, %xmm0
leaq (%rax,%rdx,8), %rdi
sarq $0x3, %rcx
movq %rcx, %xmm1
punpckldq 0x1e983(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1e98b(%rip), %xmm1    # 0x37b90
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq 0x2da0(%r14), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r13,8)
xorpd %xmm0, %xmm0
movl $0x1, %esi
callq 0x1a86e
xorps %xmm1, %xmm1
cvtsi2sdl 0x2c0c(%r14), %xmm1
divsd %xmm1, %xmm0
ucomisd 0x1de58(%rip), %xmm0    # 0x370a8
jb 0x19258
sqrtsd %xmm0, %xmm0
jmp 0x1925d
callq 0x3280
movq 0x2db8(%r14), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r13,8)
incq %r13
cmpq 0x8(%rsp), %r13
jne 0x19199
incq %rbx
movslq 0x2d18(%r14), %rax
cmpq %rax, %rbx
movl 0x4(%rsp), %r13d
jl 0x19189
cmpb $0x1, 0x2c3f(%r14)
jne 0x193d7
movq 0x2c90(%r14), %rax
subq 0x2c88(%r14), %rax
shrq $0x5, %rax
testl %eax, %eax
jle 0x193d7
xorl %ebx, %ebx
movq 0x30(%rsp), %rax
leaq (%rax,%rax,2), %r15
testl %r13d, %r13d
jle 0x193b2
leaq (%rbx,%rbx,2), %r12
xorl %r13d, %r13d
movq 0xf8(%rsp), %rax
movq (%rax,%r12,8), %rax
leaq (,%r13,2), %rdx
addq %r13, %rdx
movq (%rax,%rdx,8), %rsi
movq 0x8(%rax,%rdx,8), %rcx
subq %rsi, %rcx
movq %rcx, %rdi
shrq $0x3, %rdi
testl %edi, %edi
jle 0x19326
andl $0x7fffffff, %edi       # imm = 0x7FFFFFFF
xorpd %xmm0, %xmm0
xorl %r8d, %r8d
addsd (%rsi,%r8,8), %xmm0
incq %r8
cmpq %r8, %rdi
jne 0x19316
jmp 0x1932a
xorpd %xmm0, %xmm0
leaq (%rax,%rdx,8), %rdi
sarq $0x3, %rcx
movq %rcx, %xmm1
punpckldq 0x1e841(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1e849(%rip), %xmm1    # 0x37b90
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq 0x2dd0(%r14), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r13,8)
xorpd %xmm0, %xmm0
movl $0x1, %esi
callq 0x1a86e
ucomisd 0x1dd26(%rip), %xmm0    # 0x370a8
jb 0x1938a
sqrtsd %xmm0, %xmm0
jmp 0x1938f
callq 0x3280
movq 0x2de8(%r14), %rax
movq (%rax,%r15,8), %rax
movq (%rax,%r12,8), %rax
movsd %xmm0, (%rax,%r13,8)
incq %r13
cmpq 0x8(%rsp), %r13
jne 0x192db
movq 0x2c90(%r14), %rax
subq 0x2c88(%r14), %rax
incq %rbx
shrq $0x5, %rax
cltq
cmpq %rax, %rbx
movl 0x4(%rsp), %r13d
jl 0x192cb
movq 0x2e18(%r14), %rax
movq 0x30(%rsp), %r15
leaq (%r15,%r15,2), %rbx
movq (%rax,%rbx,8), %rdx
movq 0x8(%rax,%rbx,8), %rcx
subq %rdx, %rcx
movq %rcx, %rsi
shrq $0x3, %rsi
testl %esi, %esi
jle 0x19419
andl $0x7fffffff, %esi       # imm = 0x7FFFFFFF
xorpd %xmm0, %xmm0
xorl %edi, %edi
addsd (%rdx,%rdi,8), %xmm0
incq %rdi
cmpq %rdi, %rsi
jne 0x1940a
jmp 0x1941d
xorpd %xmm0, %xmm0
sarq $0x3, %rcx
movq %rcx, %xmm1
punpckldq 0x1e752(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1e75a(%rip), %xmm1    # 0x37b90
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq 0x2e30(%r14), %rcx
movsd %xmm0, (%rcx,%r15,8)
cmpl $0x2, 0x2c0c(%r14)
jl 0x194a1
leaq (%rax,%rbx,8), %rdi
xorpd %xmm0, %xmm0
movl $0x1, %esi
callq 0x1a86e
xorps %xmm1, %xmm1
cvtsi2sdl 0x2c0c(%r14), %xmm1
divsd %xmm1, %xmm0
ucomisd 0x1dc21(%rip), %xmm0    # 0x370a8
jb 0x1948f
sqrtsd %xmm0, %xmm0
jmp 0x19494
callq 0x3280
movq 0x2e48(%r14), %rax
movsd %xmm0, (%rax,%r15,8)
movq 0x2e90(%r14), %rax
movq (%rax,%rbx,8), %rdx
movq 0x8(%rax,%rbx,8), %rcx
subq %rdx, %rcx
movq %rcx, %rsi
shrq $0x3, %rsi
testl %esi, %esi
jle 0x194da
andl $0x7fffffff, %esi       # imm = 0x7FFFFFFF
xorpd %xmm0, %xmm0
xorl %edi, %edi
addsd (%rdx,%rdi,8), %xmm0
incq %rdi
cmpq %rdi, %rsi
jne 0x194cb
jmp 0x194de
xorpd %xmm0, %xmm0
sarq $0x3, %rcx
movq %rcx, %xmm1
punpckldq 0x1e691(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1e699(%rip), %xmm1    # 0x37b90
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movq 0x2ea8(%r14), %rcx
movsd %xmm0, (%rcx,%r15,8)
cmpl $0x2, 0x2c0c(%r14)
jl 0x19562
leaq (%rax,%rbx,8), %rdi
xorpd %xmm0, %xmm0
movl $0x1, %esi
callq 0x1a86e
xorps %xmm1, %xmm1
cvtsi2sdl 0x2c0c(%r14), %xmm1
divsd %xmm1, %xmm0
ucomisd 0x1db60(%rip), %xmm0    # 0x370a8
jb 0x19550
sqrtsd %xmm0, %xmm0
jmp 0x19555
callq 0x3280
movq 0x2ec0(%r14), %rax
movsd %xmm0, (%rax,%r15,8)
cmpl $0x2, %ebp
jl 0x19622
decl %ebp
movq 0x30f0(%r14), %rax
leaq (,%rbp,2), %rdi
addq %rbp, %rdi
movq (%rax,%rdi,8), %rcx
movq 0x8(%rax,%rdi,8), %rax
subq %rcx, %rax
movq %rax, %rdx
shrq $0x3, %rdx
xorpd %xmm2, %xmm2
testl %edx, %edx
jle 0x195af
andl $0x7fffffff, %edx       # imm = 0x7FFFFFFF
xorl %esi, %esi
addsd (%rcx,%rsi,8), %xmm2
incq %rsi
cmpq %rsi, %rdx
jne 0x195a2
sarq $0x3, %rax
movq %rax, %xmm0
punpckldq 0x1e5c0(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x1e5c8(%rip), %xmm0    # 0x37b90
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
divsd %xmm1, %xmm2
movsd %xmm2, 0x8(%rsp)
shlq $0x3, %rdi
addq 0x2e90(%r14), %rdi
xorpd %xmm0, %xmm0
movl $0x1, %esi
callq 0x1a86e
ucomisd 0x1daa9(%rip), %xmm0    # 0x370a8
jb 0x19607
sqrtsd %xmm0, %xmm0
jmp 0x1960c
callq 0x3280
movsd 0x8(%rsp), %xmm1
divsd %xmm0, %xmm1
movq 0x3108(%r14), %rax
movsd %xmm1, (%rax,%rbp,8)
leaq 0x128(%rsp), %rdi
callq 0xfa06
leaq 0xf8(%rsp), %rdi
callq 0x5ab8
leaq 0x110(%rsp), %rdi
callq 0x5ab8
addq $0x418, %rsp            # imm = 0x418
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x1978a
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x5b7a
jmp 0x19678
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x19797
callq 0x3310
jmp 0x19797
movq %rax, %rbx
jmp 0x19797
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0x5b7a
jmp 0x196ad
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x197a4
callq 0x3310
jmp 0x197a4
movq %rax, %rbx
jmp 0x197a4
jmp 0x1977a
movq %rax, %rbx
jmp 0x1975e
movq %rax, %rbx
jmp 0x19747
movq %rax, %rbx
jmp 0x19733
movq %rax, %rbx
jmp 0x1970b
movq %rax, %rbx
jmp 0x1971f
movq %rax, %rbx
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x1970b
callq 0x3310
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1971f
callq 0x3310
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x19733
callq 0x3310
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x19747
callq 0x3310
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x1975e
callq 0x3310
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x1977d
callq 0x3310
jmp 0x1977d
movq %rax, %rbx
leaq 0x128(%rsp), %rdi
callq 0xfa06
leaq 0xf8(%rsp), %rdi
callq 0x5ab8
leaq 0x110(%rsp), %rdi
callq 0x5ab8
movq %rbx, %rdi
callq 0x3580