// File: millanek[P]evo/evo_abba_baba.cpp
// Function: incrementDnumDdenomFrequency(ThreeSetCounts const&, ABBA_BABA_Freq_allResults&)
inline void incrementDnumDdenomFrequency(const ThreeSetCounts& c, ABBA_BABA_Freq_allResults& res) {
    if (c.set1daAF == -1) {
        ABBABABAcounts::noDafInfo++;
    } else if (c.set3daAF == 0) {
        ABBABABAcounts::XXAA++;
    } else if (c.set1daAF == 0 && c.set2daAF == 0) {
        ABBABABAcounts::AABA++;
    } else if (c.set1daAF == 1 && c.set2daAF == 1) {
        ABBABABAcounts::BBBA++;
    } else if (c.set1daAF == c.set2daAF) {
        ABBABABAcounts::p1p2++;
    } else {
        ABBABABAcounts::usedVariantsCounter++;
        // Green et al. (2010) eq. S15.2
        
        double thisDnumerator = ((1-c.set1daAF)*c.set2daAF*c.set3daAF) - (c.set1daAF*(1-c.set2daAF)*c.set3daAF);
        double thisDdenominator = ((1-c.set1daAF)*c.set2daAF*c.set3daAF) + (c.set1daAF*(1-c.set2daAF)*c.set3daAF);
        res.Dnumerator += thisDnumerator; res.lastVarsDnum += thisDnumerator; res.windowDnum += thisDnumerator;
        res.Ddenominator += thisDdenominator; res.lastVarsDdenom += thisDdenominator; res.windowDdenom += thisDdenominator;
        
        double thisF_d_denom;
        if (c.set2daAF > c.set3daAF) {
            thisF_d_denom = ((1-c.set1daAF)*c.set2daAF*c.set2daAF) - (c.set1daAF*(1-c.set2daAF)*c.set2daAF);
        } else {
            thisF_d_denom = ((1-c.set1daAF)*c.set3daAF*c.set3daAF) - (c.set1daAF*(1-c.set3daAF)*c.set3daAF);
        }
        //if (thisF_d_denom != 0) {
        /* if (thisDnumerator/thisF_d_denom > 1) {
         std::cerr << "f_d:\t" << thisDnumerator/thisF_d_denom << std::endl;
         std::cerr << "D num:\t" << thisDnumerator << std::endl;
         std::cerr << "f_d denom:\t" << thisF_d_denom << std::endl;
         std::cerr << "p1:\t" << c.set1daAF << std::endl;
         std::cerr << "p2:\t" << c.set2daAF << std::endl;
         std::cerr << "p3:\t" << c.set3daAF << std::endl;
         } */
        res.f_d_denominator += thisF_d_denom; res.window_f_d_denominator += thisF_d_denom; res.lastVarsF_d_denom += thisF_d_denom;
        res.f_d_num += thisDnumerator; res.window_f_d_num += thisDnumerator; res.lastVarsF_d_num += thisDnumerator;
        ABBABABAcounts::used_f_d_Counter++;
        //}
        
        double thisF_dM_denom;
        if (c.set1daAF <= c.set2daAF) {
            if (c.set2daAF > c.set3daAF) {
                thisF_dM_denom = ((1-c.set1daAF)*c.set2daAF*c.set2daAF) - (c.set1daAF*(1-c.set2daAF)*c.set2daAF);
            } else {
                thisF_dM_denom = ((1-c.set1daAF)*c.set3daAF*c.set3daAF) - (c.set1daAF*(1-c.set3daAF)*c.set3daAF);
            }
        } else {
            if (c.set1daAF > c.set3daAF) {
                thisF_dM_denom = -(((1-c.set1daAF)*c.set2daAF*c.set1daAF) - (c.set1daAF*(1-c.set2daAF)*c.set1daAF));
            } else {
                thisF_dM_denom = -(((1-c.set3daAF)*c.set2daAF*c.set3daAF) - (c.set3daAF*(1-c.set2daAF)*c.set3daAF));
            }
        }
        if (thisF_dM_denom == 0) {
            std::cerr << "f_d:\t" << thisDnumerator/thisF_d_denom << std::endl;
            std::cerr << "D num:\t" << thisDnumerator << std::endl;
            std::cerr << "f_d denom:\t" << thisF_d_denom << std::endl;
            std::cerr << "f_dM denom:\t" << thisF_dM_denom << std::endl;
            std::cerr << "p1:\t" << c.set1daAF << std::endl;
            std::cerr << "p2:\t" << c.set2daAF << std::endl;
            std::cerr << "p3:\t" << c.set3daAF << std::endl;
        }
        res.f_dM_denominator += thisF_dM_denom; res.window_f_dM_denominator += thisF_dM_denom; res.lastVarsF_dM_denom += thisF_dM_denom;
        
        if (c.set3daAF == 1) {
            res.f_G_denom += 1-c.set1daAF; res.f_G_num += thisDnumerator;
            res.lastVarsF_G_denom += 1-c.set1daAF; res.lastVarsF_G_num += thisDnumerator;
        }
        
        if (thisDdenominator == 0) {
            std::cerr << "P1:" << c.set1daAF << " P2:" << c.set2daAF << " P3:" << c.set3daAF << std::endl;
        }
        assert(thisDdenominator != 0);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm0
movsd 0xe248f(%rip), %xmm1    # 0x1336c0
ucomisd %xmm1, %xmm0
jne 0x5124d
jp 0x5124d
movl 0x148c21(%rip), %eax    # 0x199e60
addl $0x1, %eax
movl %eax, 0x148c18(%rip)    # 0x199e60
jmp 0x51b0e
movq -0x8(%rbp), %rax
movsd 0x48(%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x51275
jp 0x51275
movl 0x148bdd(%rip), %eax    # 0x199e44
addl $0x1, %eax
movl %eax, 0x148bd4(%rip)    # 0x199e44
jmp 0x51b0c
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x512b1
jp 0x512b1
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x512b1
jp 0x512b1
movl 0x148b9d(%rip), %eax    # 0x199e40
addl $0x1, %eax
movl %eax, 0x148b94(%rip)    # 0x199e40
jmp 0x51b0a
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm0
movsd 0xe0ff6(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x512f7
jp 0x512f7
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm0
movsd 0xe0fdd(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x512f7
jp 0x512f7
movl 0x148b5f(%rip), %eax    # 0x199e48
addl $0x1, %eax
movl %eax, 0x148b56(%rip)    # 0x199e48
jmp 0x51b08
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm0
movq -0x8(%rbp), %rax
ucomisd 0x40(%rax), %xmm0
jne 0x51321
jp 0x51321
movl 0x148b45(%rip), %eax    # 0x199e58
addl $0x1, %eax
movl %eax, 0x148b3c(%rip)    # 0x199e58
jmp 0x51b06
movl 0x148b3d(%rip), %eax    # 0x199e64
addl $0x1, %eax
movl %eax, 0x148b34(%rip)    # 0x199e64
movq -0x8(%rbp), %rax
movsd 0xe0f7c(%rip), %xmm0    # 0x1322b8
subsd 0x38(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x40(%rax), %xmm0
movq -0x8(%rbp), %rax
movsd 0x48(%rax), %xmm2
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm1
movq -0x8(%rbp), %rax
movsd 0xe0f50(%rip), %xmm3    # 0x1322b8
subsd 0x40(%rax), %xmm3
mulsd %xmm3, %xmm1
movq -0x8(%rbp), %rax
mulsd 0x48(%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x18(%rbp)
movq -0x8(%rbp), %rax
movsd 0xe0f0e(%rip), %xmm0    # 0x1322b8
subsd 0x38(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x40(%rax), %xmm0
movq -0x8(%rbp), %rax
movsd 0x48(%rax), %xmm2
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm1
movq -0x8(%rbp), %rax
movsd 0xe0ee2(%rip), %xmm3    # 0x1322b8
subsd 0x40(%rax), %xmm3
mulsd %xmm3, %xmm1
movq -0x8(%rbp), %rax
mulsd 0x48(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x10(%rax), %xmm0
movsd %xmm0, 0x10(%rax)
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x20(%rax), %xmm0
movsd %xmm0, 0x20(%rax)
movsd -0x20(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rax)
movsd -0x20(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x18(%rax), %xmm0
movsd %xmm0, 0x18(%rax)
movsd -0x20(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x28(%rax), %xmm0
movsd %xmm0, 0x28(%rax)
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm0
movq -0x8(%rbp), %rax
ucomisd 0x48(%rax), %xmm0
jbe 0x514e9
movq -0x8(%rbp), %rax
movsd 0xe0e33(%rip), %xmm0    # 0x1322b8
subsd 0x38(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x40(%rax), %xmm0
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm2
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm1
movq -0x8(%rbp), %rax
movsd 0xe0e07(%rip), %xmm3    # 0x1322b8
subsd 0x40(%rax), %xmm3
mulsd %xmm3, %xmm1
movq -0x8(%rbp), %rax
mulsd 0x40(%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0x51557
movq -0x8(%rbp), %rax
movsd 0xe0dc3(%rip), %xmm0    # 0x1322b8
subsd 0x38(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x48(%rax), %xmm0
movq -0x8(%rbp), %rax
movsd 0x48(%rax), %xmm2
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm1
movq -0x8(%rbp), %rax
movsd 0xe0d97(%rip), %xmm3    # 0x1322b8
subsd 0x48(%rax), %xmm3
mulsd %xmm3, %xmm1
movq -0x8(%rbp), %rax
mulsd 0x48(%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x28(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x30(%rax), %xmm0
movsd %xmm0, 0x30(%rax)
movsd -0x28(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x38(%rax), %xmm0
movsd %xmm0, 0x38(%rax)
movsd -0x28(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x40(%rax), %xmm0
movsd %xmm0, 0x40(%rax)
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x60(%rax), %xmm0
movsd %xmm0, 0x60(%rax)
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x68(%rax), %xmm0
movsd %xmm0, 0x68(%rax)
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x70(%rax), %xmm0
movsd %xmm0, 0x70(%rax)
movl 0x148899(%rip), %eax    # 0x199e68
addl $0x1, %eax
movl %eax, 0x148890(%rip)    # 0x199e68
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm1
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x516eb
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm0
movq -0x8(%rbp), %rax
ucomisd 0x48(%rax), %xmm0
jbe 0x51678
movq -0x8(%rbp), %rax
movsd 0xe0ca4(%rip), %xmm0    # 0x1322b8
subsd 0x38(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x40(%rax), %xmm0
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm2
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm1
movq -0x8(%rbp), %rax
movsd 0xe0c78(%rip), %xmm3    # 0x1322b8
subsd 0x40(%rax), %xmm3
mulsd %xmm3, %xmm1
movq -0x8(%rbp), %rax
mulsd 0x40(%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0x516e6
movq -0x8(%rbp), %rax
movsd 0xe0c34(%rip), %xmm0    # 0x1322b8
subsd 0x38(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x48(%rax), %xmm0
movq -0x8(%rbp), %rax
movsd 0x48(%rax), %xmm2
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm1
movq -0x8(%rbp), %rax
movsd 0xe0c08(%rip), %xmm3    # 0x1322b8
subsd 0x48(%rax), %xmm3
mulsd %xmm3, %xmm1
movq -0x8(%rbp), %rax
mulsd 0x48(%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0x51814
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm0
movq -0x8(%rbp), %rax
ucomisd 0x48(%rax), %xmm0
jbe 0x5178d
movq -0x8(%rbp), %rax
movsd 0xe0ba9(%rip), %xmm0    # 0x1322b8
subsd 0x38(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x40(%rax), %xmm0
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm2
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm1
movq -0x8(%rbp), %rax
movsd 0xe0b7d(%rip), %xmm3    # 0x1322b8
subsd 0x40(%rax), %xmm3
mulsd %xmm3, %xmm1
movq -0x8(%rbp), %rax
mulsd 0x38(%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0x51812
movq -0x8(%rbp), %rax
movsd 0xe0b1f(%rip), %xmm0    # 0x1322b8
subsd 0x48(%rax), %xmm0
movq -0x8(%rbp), %rax
mulsd 0x40(%rax), %xmm0
movq -0x8(%rbp), %rax
movsd 0x48(%rax), %xmm2
movq -0x8(%rbp), %rax
movsd 0x48(%rax), %xmm1
movq -0x8(%rbp), %rax
movsd 0xe0af3(%rip), %xmm3    # 0x1322b8
subsd 0x40(%rax), %xmm3
mulsd %xmm3, %xmm1
movq -0x8(%rbp), %rax
mulsd 0x48(%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0x51814
movsd -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x51986
jp 0x51986
movq 0x1477bd(%rip), %rdi    # 0x198ff0
leaq 0xe2155(%rip), %rsi     # 0x13398f
callq 0xa5c0
movq %rax, %rdi
movsd -0x18(%rbp), %xmm0
divsd -0x28(%rbp), %xmm0
callq 0xabd0
movq %rax, %rdi
movq 0x14772d(%rip), %rsi    # 0x198f88
callq 0xa610
movq 0x147789(%rip), %rdi    # 0x198ff0
leaq 0xe2127(%rip), %rsi     # 0x133995
callq 0xa5c0
movq %rax, %rdi
movsd -0x18(%rbp), %xmm0
callq 0xabd0
movq %rax, %rdi
movq 0x1476fe(%rip), %rsi    # 0x198f88
callq 0xa610
movq 0x14775a(%rip), %rdi    # 0x198ff0
leaq 0xe2100(%rip), %rsi     # 0x13399d
callq 0xa5c0
movq %rax, %rdi
movsd -0x28(%rbp), %xmm0
callq 0xabd0
movq %rax, %rdi
movq 0x1476cf(%rip), %rsi    # 0x198f88
callq 0xa610
movq 0x14772b(%rip), %rdi    # 0x198ff0
leaq 0xe20dd(%rip), %rsi     # 0x1339a9
callq 0xa5c0
movq %rax, %rdi
movsd -0x30(%rbp), %xmm0
callq 0xabd0
movq %rax, %rdi
movq 0x1476a0(%rip), %rsi    # 0x198f88
callq 0xa610
movq 0x1476fc(%rip), %rdi    # 0x198ff0
leaq 0xe20bb(%rip), %rsi     # 0x1339b6
callq 0xa5c0
movq %rax, %rdi
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm0
callq 0xabd0
movq %rax, %rdi
movq 0x14766d(%rip), %rsi    # 0x198f88
callq 0xa610
movq 0x1476c9(%rip), %rdi    # 0x198ff0
leaq 0xe208d(%rip), %rsi     # 0x1339bb
callq 0xa5c0
movq %rax, %rdi
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm0
callq 0xabd0
movq %rax, %rdi
movq 0x14763a(%rip), %rsi    # 0x198f88
callq 0xa610
movq 0x147696(%rip), %rdi    # 0x198ff0
leaq 0xe205f(%rip), %rsi     # 0x1339c0
callq 0xa5c0
movq %rax, %rdi
movq -0x8(%rbp), %rax
movsd 0x48(%rax), %xmm0
callq 0xabd0
movq %rax, %rdi
movq 0x147607(%rip), %rsi    # 0x198f88
callq 0xa610
movsd -0x30(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x48(%rax), %xmm0
movsd %xmm0, 0x48(%rax)
movsd -0x30(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x50(%rax), %xmm0
movsd %xmm0, 0x50(%rax)
movsd -0x30(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x58(%rax), %xmm0
movsd %xmm0, 0x58(%rax)
movq -0x8(%rbp), %rax
movsd 0x48(%rax), %xmm0
movsd 0xe08e8(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x51a4e
jp 0x51a4e
movq -0x8(%rbp), %rax
movsd 0xe08d4(%rip), %xmm0    # 0x1322b8
subsd 0x38(%rax), %xmm0
movq -0x10(%rbp), %rax
addsd 0x78(%rax), %xmm0
movsd %xmm0, 0x78(%rax)
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x80(%rax), %xmm0
movsd %xmm0, 0x80(%rax)
movq -0x8(%rbp), %rax
movsd 0xe089c(%rip), %xmm0    # 0x1322b8
subsd 0x38(%rax), %xmm0
movq -0x10(%rbp), %rax
addsd 0x90(%rax), %xmm0
movsd %xmm0, 0x90(%rax)
movsd -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rax
addsd 0x88(%rax), %xmm0
movsd %xmm0, 0x88(%rax)
movsd -0x20(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x51ad1
jp 0x51ad1
movq 0x14758b(%rip), %rdi    # 0x198ff0
leaq 0xe1f59(%rip), %rsi     # 0x1339c5
callq 0xa5c0
movq %rax, %rdi
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm0
callq 0xabd0
movq %rax, %rdi
leaq 0xe1f3d(%rip), %rsi     # 0x1339c9
callq 0xa5c0
movq %rax, %rdi
movq -0x8(%rbp), %rax
movsd 0x40(%rax), %xmm0
callq 0xabd0
movq %rax, %rdi
leaq 0xe1f22(%rip), %rsi     # 0x1339ce
callq 0xa5c0
movq %rax, %rdi
movq -0x8(%rbp), %rax
movsd 0x48(%rax), %xmm0
callq 0xabd0
movq %rax, %rdi
movq 0x1474bc(%rip), %rsi    # 0x198f88
callq 0xa610
movsd -0x20(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x51ae3
jp 0x51ae3
jmp 0x51ae5
jmp 0x51b04
leaq 0xe1ee7(%rip), %rdi     # 0x1339d3
leaq 0xe1d75(%rip), %rsi     # 0x133868
movl $0xaa, %edx
leaq 0xe1eea(%rip), %rcx     # 0x1339e9
callq 0xa390
jmp 0x51b06
jmp 0x51b08
jmp 0x51b0a
jmp 0x51b0c
jmp 0x51b0e
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop