// File: /workspace/github_c_makefile_star2_O1/olcaytaner[P]Isell/univariatetree.c
// Function: solve_for_ldt_second_order_equation
double solve_for_ldt_second_order_equation(double ml, double mr, double sl, double sr, int nl, int nr)
{
 double result, a, b, c, root1, root2;
 a = sl - sr;
 b = 2 * (ml*sr - mr*sl);
 if (nl > 0 && sr > 0 && nr>0 && sl>0)
   c = mr*mr*sl - ml*ml*sr + 2*sl*sr* log2((nl*sqrt(sr))/(nr*sqrt(sl)));
 else
   c = 0;
 if (b*b - 4*a*c < 0)
   result = (ml + mr)/2;
 else
   if (a == 0)
    {
     if (b != 0)
       result = -c/b;
     else
       result = 0;  
    }
   else
    {
     root1 = (-b + sqrt(b*b - 4*a*c))/(2*a);
     root2 = (-b - sqrt(b*b - 4*a*c))/(2*a);
     if (ml > mr)
      {
       if (root1 > mr && root1 < ml)
         result = root1;
       else
         if (root2 > mr && root2 < ml)
           result = root2;
         else
           result = (ml + mr)/2;
      }
     else
       if (root1 < mr && root1 > ml)
         result = root1;
       else
         if (root2 < mr && root2 > ml)
           result = root2;
         else
           result = (ml + mr)/2;
    }
 return result;
}

// Assembly:
pushq %rbx
subq $0x70, %rsp
movapd %xmm0, %xmm7
movapd %xmm2, %xmm8
subsd %xmm3, %xmm8
movapd %xmm1, %xmm0
mulsd %xmm2, %xmm0
movapd %xmm7, %xmm4
mulsd %xmm3, %xmm4
subsd %xmm0, %xmm4
addsd %xmm4, %xmm4
xorpd %xmm6, %xmm6
ucomisd %xmm6, %xmm2
xorpd %xmm5, %xmm5
jbe 0x9e9a0
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm3
jbe 0x9e9a0
testl %edi, %edi
jle 0x9e9a0
movl %esi, %ebx
testl %esi, %esi
jle 0x9e9a0
movapd %xmm1, %xmm0
mulsd %xmm1, %xmm0
movapd %xmm7, %xmm6
mulsd %xmm7, %xmm6
mulsd %xmm3, %xmm6
mulsd %xmm2, %xmm0
movapd %xmm2, %xmm5
cvtsi2sd %edi, %xmm10
addsd %xmm2, %xmm5
xorpd %xmm9, %xmm9
ucomisd %xmm9, %xmm3
movsd %xmm7, 0x18(%rsp)
movsd %xmm1, 0x10(%rsp)
movsd %xmm8, 0x8(%rsp)
movapd %xmm4, 0x50(%rsp)
jb 0x9e8b9
xorps %xmm1, %xmm1
sqrtsd %xmm3, %xmm1
jmp 0x9e913
movsd %xmm0, 0x20(%rsp)
movapd %xmm3, %xmm0
movapd %xmm5, 0x40(%rsp)
movsd %xmm2, (%rsp)
movsd %xmm3, 0x38(%rsp)
movsd %xmm6, 0x68(%rsp)
movsd %xmm10, 0x60(%rsp)
callq 0x4300
movsd 0x60(%rsp), %xmm10
xorpd %xmm9, %xmm9
movsd 0x68(%rsp), %xmm6
movsd 0x38(%rsp), %xmm3
movsd (%rsp), %xmm2
movapd 0x40(%rsp), %xmm5
movapd %xmm0, %xmm1
movsd 0x20(%rsp), %xmm0
mulsd %xmm10, %xmm1
subsd %xmm6, %xmm0
movsd %xmm0, 0x20(%rsp)
mulsd %xmm3, %xmm5
movapd %xmm5, 0x40(%rsp)
xorps %xmm3, %xmm3
cvtsi2sd %ebx, %xmm3
ucomisd %xmm9, %xmm2
jb 0x9e943
xorps %xmm0, %xmm0
sqrtsd %xmm2, %xmm0
jmp 0x9e962
movapd %xmm2, %xmm0
movsd %xmm1, (%rsp)
movsd %xmm3, 0x38(%rsp)
callq 0x4300
movsd 0x38(%rsp), %xmm3
movsd (%rsp), %xmm1
mulsd %xmm3, %xmm0
divsd %xmm0, %xmm1
movapd %xmm1, %xmm0
callq 0x38e99
movapd 0x40(%rsp), %xmm5
mulsd %xmm0, %xmm5
addsd 0x20(%rsp), %xmm5
movsd 0x18(%rsp), %xmm7
movsd 0x10(%rsp), %xmm1
movsd 0x8(%rsp), %xmm8
movapd 0x50(%rsp), %xmm4
xorpd %xmm6, %xmm6
movsd 0xd3b0(%rip), %xmm0     # 0xabd58
mulsd %xmm8, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm4, %xmm2
mulsd %xmm4, %xmm2
addsd %xmm0, %xmm2
ucomisd %xmm2, %xmm6
jbe 0x9e9d5
addsd %xmm1, %xmm7
mulsd 0x4349(%rip), %xmm7     # 0xa2d18
movapd %xmm7, %xmm6
jmp 0x9e9f6
ucomisd %xmm6, %xmm8
jne 0x9ea00
jp 0x9ea00
ucomisd %xmm6, %xmm4
jne 0x9e9e6
jnp 0x9e9f6
xorpd 0x47e2(%rip), %xmm5     # 0xa31d0
divsd %xmm4, %xmm5
movapd %xmm5, %xmm6
movapd %xmm6, %xmm0
addq $0x70, %rsp
popq %rbx
retq
movapd 0x47c8(%rip), %xmm0     # 0xa31d0
xorpd %xmm4, %xmm0
movapd %xmm0, 0x40(%rsp)
xorps %xmm3, %xmm3
sqrtsd %xmm2, %xmm3
ucomisd %xmm6, %xmm2
movapd %xmm3, %xmm6
movsd %xmm7, 0x18(%rsp)
movsd %xmm1, 0x10(%rsp)
jae 0x9ea78
movapd %xmm2, %xmm0
movsd %xmm8, 0x8(%rsp)
movapd %xmm4, 0x50(%rsp)
movapd %xmm2, 0x20(%rsp)
movsd %xmm3, (%rsp)
callq 0x4300
movsd (%rsp), %xmm3
movapd 0x20(%rsp), %xmm2
movapd 0x50(%rsp), %xmm4
movsd 0x8(%rsp), %xmm8
movsd 0x10(%rsp), %xmm1
movsd 0x18(%rsp), %xmm7
movapd %xmm0, %xmm6
subsd %xmm4, %xmm6
addsd %xmm8, %xmm8
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm2
jae 0x9eabe
movapd %xmm2, %xmm0
movsd %xmm8, 0x8(%rsp)
movsd %xmm6, 0x20(%rsp)
callq 0x4300
movsd 0x20(%rsp), %xmm6
movsd 0x8(%rsp), %xmm8
movsd 0x10(%rsp), %xmm1
movsd 0x18(%rsp), %xmm7
movapd %xmm0, %xmm3
divsd %xmm8, %xmm6
movapd 0x40(%rsp), %xmm0
subsd %xmm3, %xmm0
divsd %xmm8, %xmm0
ucomisd %xmm1, %xmm7
jbe 0x9eaf8
ucomisd %xmm1, %xmm6
jbe 0x9eae8
ucomisd %xmm6, %xmm7
ja 0x9e9f6
ucomisd %xmm1, %xmm0
jbe 0x9e9c3
ucomisd %xmm0, %xmm7
jmp 0x9eb16
ucomisd %xmm6, %xmm1
jbe 0x9eb08
ucomisd %xmm7, %xmm6
ja 0x9e9f6
ucomisd %xmm0, %xmm1
jbe 0x9e9c3
ucomisd %xmm7, %xmm0
movapd %xmm0, %xmm6
ja 0x9e9f6
jmp 0x9e9c3