// File: millanek[P]evo/evo_ABS.cpp
// Function: calculateABSfromAFs(double, double, double, double, double, double, double, double)
inline std::vector<double> calculateABSfromAFs(double pW, double pX, double pY, double pZ,
                                               double pWAlleleCount, double pXAlleleCount, double pYAlleleCount, double pZAlleleCount) {
    // std::cerr << "p:\t" << p1 << "\t" << p2 << "\t" << p3 <<  std::endl;
    double FstWX; double FstWY; double FstWZ;
    double FstXY; double FstXZ; double FstYZ;
    double powerWX = pow(pW-pX, 2); double powerWY = pow(pW-pY, 2);
    double powerWZ = pow(pW-pZ, 2); double powerXY = pow(pX-pY, 2);
    double powerXZ = pow(pX-pZ, 2); double powerYZ = pow(pY-pZ, 2);
    double fractionX = (pW*(1-pW))/(pWAlleleCount-1); double fractionW = (pX*(1-pX))/(pXAlleleCount-1);
    double fractionY = (pY*(1-pY))/(pYAlleleCount-1); double fractionZ = (pZ*(1-pZ))/(pZAlleleCount-1);
    double numeratorWX = powerWX - fractionW - fractionX;
    double numeratorWY = powerWY - fractionW - fractionY;
    double numeratorWZ = powerWZ - fractionW - fractionZ;
    double numeratorXY = powerXY - fractionX - fractionY;
    double numeratorXZ = powerXZ - fractionX - fractionZ;
    double numeratorYZ = powerYZ - fractionY - fractionZ;
    double denominatorWX = (pW*(1-pX))+(pX*(1-pW)); double denominatorWY = (pW*(1-pY))+(pY*(1-pW));
    double denominatorWZ = (pW*(1-pZ))+(pZ*(1-pW)); double denominatorXY = (pX*(1-pY))+(pY*(1-pX));
    double denominatorXZ = (pX*(1-pZ))+(pZ*(1-pX)); double denominatorYZ = (pY*(1-pZ))+(pZ*(1-pY));
    if ((pW == 0 && pX == 0) || (pW == 1 && pX == 1)) { FstWX = 0.0; } else { FstWX = numeratorWX/denominatorWX; }
    if ((pW == 0 && pY == 0) || (pW == 1 && pY == 1)) { FstWY = 0.0; } else { FstWY = numeratorWY/denominatorWY; }
    if ((pW == 0 && pZ == 0) || (pW == 1 && pZ == 1)) { FstWZ = 0.0; } else { FstWZ = numeratorWZ/denominatorWZ; }
    if ((pX == 0 && pY == 0) || (pX == 1 && pY == 1)) { FstXY = 0.0; } else { FstXY = numeratorXY/denominatorXY; }
    if ((pX == 0 && pZ == 0) || (pX == 1 && pZ == 1)) { FstXZ = 0.0; } else { FstXZ = numeratorXZ/denominatorXZ; }
    if ((pY == 0 && pZ == 0) || (pY == 1 && pZ == 1)) { FstYZ = 0.0; } else { FstYZ = numeratorYZ/denominatorYZ; }
    // std::cerr << Fst12 << "\t" << Fst13 << "\t" << Fst23 <<  std::endl;
    if (FstWX < 0) FstWX = 0; if (FstWY < 0) FstWY = 0; if (FstWZ < 0) FstWZ = 0;
    if (FstXY < 0) FstXY = 0; if (FstXZ < 0) FstXZ = 0; if (FstYZ < 0) FstYZ = 0;
    if (FstWX == 1) FstWX = 1 - (FstWX/((pWAlleleCount+pXAlleleCount)/2.0));
    if (FstWY == 1) FstWY = 1 - (FstWY/((pWAlleleCount+pYAlleleCount)/2.0));
    if (FstWZ == 1) FstWZ = 1 - (FstWZ/((pWAlleleCount+pZAlleleCount)/2.0));
    if (FstXY == 1) FstXY = 1 - (FstXY/((pXAlleleCount+pYAlleleCount)/2.0));
    if (FstXZ == 1) FstXZ = 1 - (FstXZ/((pXAlleleCount+pZAlleleCount)/2.0));
    if (FstYZ == 1) FstYZ = 1 - (FstYZ/((pYAlleleCount+pZAlleleCount)/2.0));
    double TWX = -log(1-FstWX); double TWY = -log(1-FstWY); double TWZ = -log(1-FstWZ);
    double TXY = -log(1-FstXY); double TXZ = -log(1-FstXZ); double TYZ = -log(1-FstYZ);
    double TWYTXZ = TWY + TXZ; double TWZTXY = TWZ + TXY; double TWXTYZ = TWX + TYZ;
    double twoMax; if (TWYTXZ >= TWZTXY) { twoMax = TWYTXZ; } else { twoMax = TWZTXY; }
    double ABSalt = (twoMax-TWXTYZ)/2.0;
    double threeMax; double threeMin;
    if (TWYTXZ >= TWZTXY && TWYTXZ >= TWXTYZ) { threeMax = TWYTXZ; if (TWZTXY <= TWXTYZ) { threeMin = TWZTXY;} else { threeMin = TWXTYZ;}}
    else if (TWZTXY >= TWYTXZ && TWZTXY >= TWXTYZ) { threeMax = TWZTXY; if (TWYTXZ <= TWXTYZ) { threeMin = TWYTXZ;} else { threeMin = TWXTYZ;}}
    else { threeMax = TWXTYZ; if (TWYTXZ <= TWZTXY) { threeMin = TWYTXZ;} else { threeMin = TWZTXY;} }
    double ABSmain = (threeMax-threeMin)/2.0;
    //if (PBS1 < 0) PBS1 = 0; if (PBS2 < 0) PBS2 = 0; if (PBS3 < 0) PBS3 = 0;
    //std::cerr << PBS1 << "\t" << PBS2 << "\t" << PBS3 <<  std::endl;
    std::vector<double> ABS; ABS.push_back(ABSmain); ABS.push_back(ABSalt);
    return ABS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x1c0(%rbp)
movq %rdi, %rax
movq %rax, -0x1b8(%rbp)
movq %rdi, -0x8(%rbp)
movsd %xmm0, -0x10(%rbp)
movsd %xmm1, -0x18(%rbp)
movsd %xmm2, -0x20(%rbp)
movsd %xmm3, -0x28(%rbp)
movsd %xmm4, -0x30(%rbp)
movsd %xmm5, -0x38(%rbp)
movsd %xmm6, -0x40(%rbp)
movsd %xmm7, -0x48(%rbp)
movsd -0x10(%rbp), %xmm0
subsd -0x18(%rbp), %xmm0
movl $0x2, %edi
callq 0x835c0
movsd %xmm0, -0x80(%rbp)
movsd -0x10(%rbp), %xmm0
subsd -0x20(%rbp), %xmm0
movl $0x2, %edi
callq 0x835c0
movsd %xmm0, -0x88(%rbp)
movsd -0x10(%rbp), %xmm0
subsd -0x28(%rbp), %xmm0
movl $0x2, %edi
callq 0x835c0
movsd %xmm0, -0x90(%rbp)
movsd -0x18(%rbp), %xmm0
subsd -0x20(%rbp), %xmm0
movl $0x2, %edi
callq 0x835c0
movsd %xmm0, -0x98(%rbp)
movsd -0x18(%rbp), %xmm0
subsd -0x28(%rbp), %xmm0
movl $0x2, %edi
callq 0x835c0
movsd %xmm0, -0xa0(%rbp)
movsd -0x20(%rbp), %xmm0
subsd -0x28(%rbp), %xmm0
movl $0x2, %edi
callq 0x835c0
movsd %xmm0, -0xa8(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0x25abe(%rip), %xmm1    # 0x1322b8
subsd -0x10(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd -0x30(%rbp), %xmm1
movsd 0x25aa8(%rip), %xmm2    # 0x1322b8
subsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xb0(%rbp)
movsd -0x18(%rbp), %xmm0
movsd 0x25a8b(%rip), %xmm1    # 0x1322b8
subsd -0x18(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd -0x38(%rbp), %xmm1
movsd 0x25a75(%rip), %xmm2    # 0x1322b8
subsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xb8(%rbp)
movsd -0x20(%rbp), %xmm0
movsd 0x25a58(%rip), %xmm1    # 0x1322b8
subsd -0x20(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd -0x40(%rbp), %xmm1
movsd 0x25a42(%rip), %xmm2    # 0x1322b8
subsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
movsd -0x28(%rbp), %xmm0
movsd 0x25a25(%rip), %xmm1    # 0x1322b8
subsd -0x28(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd -0x48(%rbp), %xmm1
movsd 0x25a0f(%rip), %xmm2    # 0x1322b8
subsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xc8(%rbp)
movsd -0x80(%rbp), %xmm0
subsd -0xb8(%rbp), %xmm0
subsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0xd0(%rbp)
movsd -0x88(%rbp), %xmm0
subsd -0xb8(%rbp), %xmm0
subsd -0xc0(%rbp), %xmm0
movsd %xmm0, -0xd8(%rbp)
movsd -0x90(%rbp), %xmm0
subsd -0xb8(%rbp), %xmm0
subsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0xe0(%rbp)
movsd -0x98(%rbp), %xmm0
subsd -0xb0(%rbp), %xmm0
subsd -0xc0(%rbp), %xmm0
movsd %xmm0, -0xe8(%rbp)
movsd -0xa0(%rbp), %xmm0
subsd -0xb0(%rbp), %xmm0
subsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0xf0(%rbp)
movsd -0xa8(%rbp), %xmm0
subsd -0xc0(%rbp), %xmm0
subsd -0xc8(%rbp), %xmm0
movsd %xmm0, -0xf8(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0x25935(%rip), %xmm2    # 0x1322b8
subsd -0x18(%rbp), %xmm2
movsd -0x18(%rbp), %xmm1
movsd 0x25923(%rip), %xmm3    # 0x1322b8
subsd -0x10(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x100(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0x258fd(%rip), %xmm2    # 0x1322b8
subsd -0x20(%rbp), %xmm2
movsd -0x20(%rbp), %xmm1
movsd 0x258eb(%rip), %xmm3    # 0x1322b8
subsd -0x10(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x108(%rbp)
movsd -0x10(%rbp), %xmm0
movsd 0x258c5(%rip), %xmm2    # 0x1322b8
subsd -0x28(%rbp), %xmm2
movsd -0x28(%rbp), %xmm1
movsd 0x258b3(%rip), %xmm3    # 0x1322b8
subsd -0x10(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x110(%rbp)
movsd -0x18(%rbp), %xmm0
movsd 0x2588d(%rip), %xmm2    # 0x1322b8
subsd -0x20(%rbp), %xmm2
movsd -0x20(%rbp), %xmm1
movsd 0x2587b(%rip), %xmm3    # 0x1322b8
subsd -0x18(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x118(%rbp)
movsd -0x18(%rbp), %xmm0
movsd 0x25855(%rip), %xmm2    # 0x1322b8
subsd -0x28(%rbp), %xmm2
movsd -0x28(%rbp), %xmm1
movsd 0x25843(%rip), %xmm3    # 0x1322b8
subsd -0x18(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x120(%rbp)
movsd -0x20(%rbp), %xmm0
movsd 0x2581d(%rip), %xmm2    # 0x1322b8
subsd -0x28(%rbp), %xmm2
movsd -0x28(%rbp), %xmm1
movsd 0x2580b(%rip), %xmm3    # 0x1322b8
subsd -0x20(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x128(%rbp)
movsd -0x10(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10cae8
jp 0x10cae8
movsd -0x18(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10cae8
jp 0x10cae8
jmp 0x10cb12
movsd -0x10(%rbp), %xmm0
movsd 0x257c3(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cb1c
jp 0x10cb1c
movsd -0x18(%rbp), %xmm0
movsd 0x257ae(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cb1c
jp 0x10cb1c
xorps %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
jmp 0x10cb31
movsd -0xd0(%rbp), %xmm0
divsd -0x100(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x10(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10cb53
jp 0x10cb53
movsd -0x20(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10cb53
jp 0x10cb53
jmp 0x10cb7d
movsd -0x10(%rbp), %xmm0
movsd 0x25758(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cb87
jp 0x10cb87
movsd -0x20(%rbp), %xmm0
movsd 0x25743(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cb87
jp 0x10cb87
xorps %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x10cb9c
movsd -0xd8(%rbp), %xmm0
divsd -0x108(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x10(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10cbbe
jp 0x10cbbe
movsd -0x28(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10cbbe
jp 0x10cbbe
jmp 0x10cbe8
movsd -0x10(%rbp), %xmm0
movsd 0x256ed(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cbf2
jp 0x10cbf2
movsd -0x28(%rbp), %xmm0
movsd 0x256d8(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cbf2
jp 0x10cbf2
xorps %xmm0, %xmm0
movsd %xmm0, -0x60(%rbp)
jmp 0x10cc07
movsd -0xe0(%rbp), %xmm0
divsd -0x110(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x18(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10cc29
jp 0x10cc29
movsd -0x20(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10cc29
jp 0x10cc29
jmp 0x10cc53
movsd -0x18(%rbp), %xmm0
movsd 0x25682(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cc5d
jp 0x10cc5d
movsd -0x20(%rbp), %xmm0
movsd 0x2566d(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cc5d
jp 0x10cc5d
xorps %xmm0, %xmm0
movsd %xmm0, -0x68(%rbp)
jmp 0x10cc72
movsd -0xe8(%rbp), %xmm0
divsd -0x118(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movsd -0x18(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10cc94
jp 0x10cc94
movsd -0x28(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10cc94
jp 0x10cc94
jmp 0x10ccbe
movsd -0x18(%rbp), %xmm0
movsd 0x25617(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10ccc8
jp 0x10ccc8
movsd -0x28(%rbp), %xmm0
movsd 0x25602(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10ccc8
jp 0x10ccc8
xorps %xmm0, %xmm0
movsd %xmm0, -0x70(%rbp)
jmp 0x10ccdd
movsd -0xf0(%rbp), %xmm0
divsd -0x120(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x20(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10ccff
jp 0x10ccff
movsd -0x28(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x10ccff
jp 0x10ccff
jmp 0x10cd29
movsd -0x20(%rbp), %xmm0
movsd 0x255ac(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cd33
jp 0x10cd33
movsd -0x28(%rbp), %xmm0
movsd 0x25597(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cd33
jp 0x10cd33
xorps %xmm0, %xmm0
movsd %xmm0, -0x78(%rbp)
jmp 0x10cd48
movsd -0xf8(%rbp), %xmm0
divsd -0x128(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x50(%rbp), %xmm0
jbe 0x10cd5a
xorps %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x58(%rbp), %xmm0
jbe 0x10cd6c
xorps %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x60(%rbp), %xmm0
jbe 0x10cd7e
xorps %xmm0, %xmm0
movsd %xmm0, -0x60(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x68(%rbp), %xmm0
jbe 0x10cd90
xorps %xmm0, %xmm0
movsd %xmm0, -0x68(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x70(%rbp), %xmm0
jbe 0x10cda2
xorps %xmm0, %xmm0
movsd %xmm0, -0x70(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x78(%rbp), %xmm0
jbe 0x10cdb4
xorps %xmm0, %xmm0
movsd %xmm0, -0x78(%rbp)
movsd -0x50(%rbp), %xmm0
movsd 0x254f7(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cdf9
jp 0x10cdf9
movsd -0x50(%rbp), %xmm1
movsd -0x30(%rbp), %xmm0
addsd -0x38(%rbp), %xmm0
movsd 0x268e8(%rip), %xmm2    # 0x1336c8
divsd %xmm2, %xmm0
divsd %xmm0, %xmm1
movsd 0x254c8(%rip), %xmm0    # 0x1322b8
subsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x58(%rbp), %xmm0
movsd 0x254b2(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10ce3e
jp 0x10ce3e
movsd -0x58(%rbp), %xmm1
movsd -0x30(%rbp), %xmm0
addsd -0x40(%rbp), %xmm0
movsd 0x268a3(%rip), %xmm2    # 0x1336c8
divsd %xmm2, %xmm0
divsd %xmm0, %xmm1
movsd 0x25483(%rip), %xmm0    # 0x1322b8
subsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x60(%rbp), %xmm0
movsd 0x2546d(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10ce83
jp 0x10ce83
movsd -0x60(%rbp), %xmm1
movsd -0x30(%rbp), %xmm0
addsd -0x48(%rbp), %xmm0
movsd 0x2685e(%rip), %xmm2    # 0x1336c8
divsd %xmm2, %xmm0
divsd %xmm0, %xmm1
movsd 0x2543e(%rip), %xmm0    # 0x1322b8
subsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x68(%rbp), %xmm0
movsd 0x25428(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cec8
jp 0x10cec8
movsd -0x68(%rbp), %xmm1
movsd -0x38(%rbp), %xmm0
addsd -0x40(%rbp), %xmm0
movsd 0x26819(%rip), %xmm2    # 0x1336c8
divsd %xmm2, %xmm0
divsd %xmm0, %xmm1
movsd 0x253f9(%rip), %xmm0    # 0x1322b8
subsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
movsd -0x70(%rbp), %xmm0
movsd 0x253e3(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cf0d
jp 0x10cf0d
movsd -0x70(%rbp), %xmm1
movsd -0x38(%rbp), %xmm0
addsd -0x48(%rbp), %xmm0
movsd 0x267d4(%rip), %xmm2    # 0x1336c8
divsd %xmm2, %xmm0
divsd %xmm0, %xmm1
movsd 0x253b4(%rip), %xmm0    # 0x1322b8
subsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x78(%rbp), %xmm0
movsd 0x2539e(%rip), %xmm1    # 0x1322b8
ucomisd %xmm1, %xmm0
jne 0x10cf52
jp 0x10cf52
movsd -0x78(%rbp), %xmm1
movsd -0x40(%rbp), %xmm0
addsd -0x48(%rbp), %xmm0
movsd 0x2678f(%rip), %xmm2    # 0x1336c8
divsd %xmm2, %xmm0
divsd %xmm0, %xmm1
movsd 0x2536f(%rip), %xmm0    # 0x1322b8
subsd %xmm1, %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0x2535e(%rip), %xmm0    # 0x1322b8
subsd -0x50(%rbp), %xmm0
callq 0xa4a0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x130(%rbp)
movsd 0x2532d(%rip), %xmm0    # 0x1322b8
subsd -0x58(%rbp), %xmm0
callq 0xa4a0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x138(%rbp)
movsd 0x252fc(%rip), %xmm0    # 0x1322b8
subsd -0x60(%rbp), %xmm0
callq 0xa4a0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x140(%rbp)
movsd 0x252cb(%rip), %xmm0    # 0x1322b8
subsd -0x68(%rbp), %xmm0
callq 0xa4a0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x148(%rbp)
movsd 0x2529a(%rip), %xmm0    # 0x1322b8
subsd -0x70(%rbp), %xmm0
callq 0xa4a0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x150(%rbp)
movsd 0x25269(%rip), %xmm0    # 0x1322b8
subsd -0x78(%rbp), %xmm0
callq 0xa4a0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x158(%rbp)
movsd -0x138(%rbp), %xmm0
addsd -0x150(%rbp), %xmm0
movsd %xmm0, -0x160(%rbp)
movsd -0x140(%rbp), %xmm0
addsd -0x148(%rbp), %xmm0
movsd %xmm0, -0x168(%rbp)
movsd -0x130(%rbp), %xmm0
addsd -0x158(%rbp), %xmm0
movsd %xmm0, -0x170(%rbp)
movsd -0x160(%rbp), %xmm0
ucomisd -0x168(%rbp), %xmm0
jb 0x10d0e4
movsd -0x160(%rbp), %xmm0
movsd %xmm0, -0x178(%rbp)
jmp 0x10d0f4
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x178(%rbp)
movsd -0x178(%rbp), %xmm0
subsd -0x170(%rbp), %xmm0
movsd 0x265bc(%rip), %xmm1    # 0x1336c8
divsd %xmm1, %xmm0
movsd %xmm0, -0x180(%rbp)
movsd -0x160(%rbp), %xmm0
ucomisd -0x168(%rbp), %xmm0
jb 0x10d189
movsd -0x160(%rbp), %xmm0
ucomisd -0x170(%rbp), %xmm0
jb 0x10d189
movsd -0x160(%rbp), %xmm0
movsd %xmm0, -0x188(%rbp)
movsd -0x168(%rbp), %xmm1
movsd -0x170(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x10d174
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x190(%rbp)
jmp 0x10d184
movsd -0x170(%rbp), %xmm0
movsd %xmm0, -0x190(%rbp)
jmp 0x10d243
movsd -0x168(%rbp), %xmm0
ucomisd -0x160(%rbp), %xmm0
jb 0x10d1f7
movsd -0x168(%rbp), %xmm0
ucomisd -0x170(%rbp), %xmm0
jb 0x10d1f7
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x188(%rbp)
movsd -0x160(%rbp), %xmm1
movsd -0x170(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x10d1e5
movsd -0x160(%rbp), %xmm0
movsd %xmm0, -0x190(%rbp)
jmp 0x10d1f5
movsd -0x170(%rbp), %xmm0
movsd %xmm0, -0x190(%rbp)
jmp 0x10d241
movsd -0x170(%rbp), %xmm0
movsd %xmm0, -0x188(%rbp)
movsd -0x160(%rbp), %xmm1
movsd -0x168(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x10d22f
movsd -0x160(%rbp), %xmm0
movsd %xmm0, -0x190(%rbp)
jmp 0x10d23f
movsd -0x168(%rbp), %xmm0
movsd %xmm0, -0x190(%rbp)
jmp 0x10d241
jmp 0x10d243
movq -0x1c0(%rbp), %rdi
movsd -0x188(%rbp), %xmm0
movsd -0x190(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd 0x20ea2(%rip), %xmm1    # 0x12e108
mulsd %xmm1, %xmm0
movsd %xmm0, -0x198(%rbp)
movb $0x0, -0x199(%rbp)
callq 0x48410
movq -0x1c0(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0xb77b0
jmp 0x10d293
movq -0x1c0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xb77b0
jmp 0x10d2a8
movb $0x1, -0x199(%rbp)
testb $0x1, -0x199(%rbp)
jne 0x10d2e6
jmp 0x10d2da
movq -0x1c0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
callq 0x3ecb0
jmp 0x10d2f6
movq -0x1c0(%rbp), %rdi
callq 0x3ecb0
movq -0x1b8(%rbp), %rax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
movq -0x1a8(%rbp), %rdi
callq 0xab50
nopw %cs:(%rax,%rax)
nopl (%rax)