// File: /workspace/github_cpp_makefile_star2_O1/millanek[P]evo/evo_abba_baba.cpp
// Function: incrementDnumDdenomSingleSequence(ThreeSetCounts&, ABBA_BABA_Freq_allResults&)
inline void incrementDnumDdenomSingleSequence(ThreeSetCounts& c, ABBA_BABA_Freq_allResults& res) {
    if (c.set1daAF == -1) {
        ABBABABAcounts::noDafInfo++;
    } else if (c.set3daAF == 0) {
        ABBABABAcounts::XXAA++;
    } else {
        if (c.set3daAF == 0.5) { c.set3daAF = sample01(0.5); } // If hets then randomly sample one of the alleles
        if (c.set2daAF == 0.5) { c.set2daAF = sample01(0.5); }
        if (c.set1daAF == 0.5) { c.set1daAF = sample01(0.5); }
        
        if (c.set3daAF == 1) {
            ABBABABAcounts::XXBA++;
            // Green et al. (2010) eq. S15.1
            if (c.set1daAF == 0 && c.set2daAF == 1) {
                ABBABABAcounts::ABBA++; ABBABABAcounts::usedVariantsCounter++;
                res.Ddenominator++; res.Dnumerator++; res.lastVarsDdenom++; res.lastVarsDnum++; res.windowDdenom++; res.windowDnum++;
            } else if (c.set1daAF == 1 && c.set2daAF == 0) {
                ABBABABAcounts::BABA++; ABBABABAcounts::usedVariantsCounter++;
                res.Ddenominator++; res.Dnumerator--; res.lastVarsDdenom++; res.lastVarsDnum--; res.windowDdenom++; res.windowDnum--;
            }
        }
    }
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movsd 0x38(%rdi), %xmm0
ucomisd 0x953bb(%rip), %xmm0    # 0xcf448
jne 0x3a099
jp 0x3a099
incl 0xd18e1(%rip)           # 0x10b978
jmp 0x3a0b3
movq %rdi, %r14
movsd 0x48(%rdi), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x3a0bb
jp 0x3a0bb
incl 0xd18a9(%rip)           # 0x10b95c
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq %rsi, %rbx
ucomisd 0x9538a(%rip), %xmm0    # 0xcf450
jne 0x3a0fa
jp 0x3a0fa
callq 0x8140
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
mulss 0x95392(%rip), %xmm0    # 0xcf470
ucomiss 0x8ff1f(%rip), %xmm0    # 0xca004
ja 0x3a0ec
xorps %xmm0, %xmm0
jmp 0x3a0f4
movsd 0x9534c(%rip), %xmm0    # 0xcf440
movsd %xmm0, 0x48(%r14)
movsd 0x40(%r14), %xmm0
ucomisd 0x95348(%rip), %xmm0    # 0xcf450
jne 0x3a13c
jp 0x3a13c
callq 0x8140
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
mulss 0x95350(%rip), %xmm0    # 0xcf470
ucomiss 0x8fedd(%rip), %xmm0    # 0xca004
ja 0x3a12e
xorps %xmm0, %xmm0
jmp 0x3a136
movsd 0x9530a(%rip), %xmm0    # 0xcf440
movsd %xmm0, 0x40(%r14)
movsd 0x38(%r14), %xmm0
ucomisd 0x95306(%rip), %xmm0    # 0xcf450
jne 0x3a17e
jp 0x3a17e
callq 0x8140
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
mulss 0x9530e(%rip), %xmm0    # 0xcf470
ucomiss 0x8fe9b(%rip), %xmm0    # 0xca004
ja 0x3a170
xorps %xmm0, %xmm0
jmp 0x3a178
movsd 0x952c8(%rip), %xmm0    # 0xcf440
movsd %xmm0, 0x38(%r14)
movsd 0x48(%r14), %xmm0
ucomisd 0x952b4(%rip), %xmm0    # 0xcf440
jne 0x3a0b3
jp 0x3a0b3
incl 0xd17c6(%rip)           # 0x10b964
movsd 0x38(%r14), %xmm1
movsd 0x40(%r14), %xmm0
xorpd %xmm2, %xmm2
ucomisd %xmm2, %xmm1
jne 0x3a229
jp 0x3a229
ucomisd 0x95282(%rip), %xmm0    # 0xcf440
jne 0x3a229
jp 0x3a229
incl 0xd17a0(%rip)           # 0x10b968
incl 0xd17ae(%rip)           # 0x10b97c
movsd 0x9526a(%rip), %xmm0    # 0xcf440
movsd 0x8(%rbx), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rbx)
movsd (%rbx), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rbx)
movsd 0x18(%rbx), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x18(%rbx)
movsd 0x10(%rbx), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x10(%rbx)
movsd 0x28(%rbx), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x28(%rbx)
addsd 0x20(%rbx), %xmm0
movsd %xmm0, 0x20(%rbx)
jmp 0x3a0b3
ucomisd 0x9520f(%rip), %xmm1    # 0xcf440
jne 0x3a0b3
jp 0x3a0b3
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x3a0b3
jp 0x3a0b3
incl 0xd1715(%rip)           # 0x10b96c
incl 0xd171f(%rip)           # 0x10b97c
movsd 0x951db(%rip), %xmm0    # 0xcf440
movsd 0x8(%rbx), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rbx)
movsd 0x951cd(%rip), %xmm1    # 0xcf448
movsd (%rbx), %xmm2
addsd %xmm1, %xmm2
movsd %xmm2, (%rbx)
movsd 0x18(%rbx), %xmm2
addsd %xmm0, %xmm2
movsd %xmm2, 0x18(%rbx)
movsd 0x10(%rbx), %xmm2
addsd %xmm1, %xmm2
movsd %xmm2, 0x10(%rbx)
addsd 0x28(%rbx), %xmm0
movsd %xmm0, 0x28(%rbx)
addsd 0x20(%rbx), %xmm1
movsd %xmm1, 0x20(%rbx)
jmp 0x3a0b3