// File: /workspace/github_c_makefile_star2_O0/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 %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movsd %xmm0, -0x8(%rbp)
movsd %xmm1, -0x10(%rbp)
movsd %xmm2, -0x18(%rbp)
movsd %xmm3, -0x20(%rbp)
movl %edi, -0x24(%rbp)
movl %esi, -0x28(%rbp)
movsd -0x18(%rbp), %xmm0
subsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x8(%rbp), %xmm1
movsd -0x20(%rbp), %xmm2
movsd -0x10(%rbp), %xmm0
mulsd -0x18(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x4aa1(%rip), %xmm0     # 0xe2ca0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
cmpl $0x0, -0x24(%rbp)
jle 0xde308
movsd -0x20(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xde308
cmpl $0x0, -0x28(%rbp)
jle 0xde308
movsd -0x18(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xde308
movsd -0x10(%rbp), %xmm0
mulsd -0x10(%rbp), %xmm0
movsd -0x18(%rbp), %xmm2
movsd -0x8(%rbp), %xmm1
mulsd -0x8(%rbp), %xmm1
mulsd -0x20(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
movsd 0x4a16(%rip), %xmm0     # 0xe2ca0
mulsd -0x18(%rbp), %xmm0
mulsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
cvtsi2sdl -0x24(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x42a0
movaps %xmm0, %xmm1
movsd -0x80(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
cvtsi2sdl -0x28(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd -0x18(%rbp), %xmm0
callq 0x42a0
movsd -0x78(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x70(%rbp), %xmm0
mulsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x52ad0
movsd -0x68(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x60(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
jmp 0xde310
xorps %xmm0, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x40(%rbp), %xmm1
movsd -0x40(%rbp), %xmm2
movsd 0x475e(%rip), %xmm0     # 0xe2a80
mulsd -0x38(%rbp), %xmm0
mulsd -0x48(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0xde374
movsd -0x8(%rbp), %xmm0
addsd -0x10(%rbp), %xmm0
movsd 0x493a(%rip), %xmm1     # 0xe2ca0
divsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0xde5cb
movsd -0x38(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xde3cb
jp 0xde3cb
movsd -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xde396
jp 0xde396
jmp 0xde3be
movsd -0x48(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
divsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0xde3c6
xorps %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0xde5c9
movsd -0x40(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x90(%rbp)
movsd -0x40(%rbp), %xmm0
movsd -0x40(%rbp), %xmm2
movsd 0x467f(%rip), %xmm1     # 0xe2a80
mulsd -0x38(%rbp), %xmm1
mulsd -0x48(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x42a0
movaps %xmm0, %xmm1
movsd -0x90(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd 0x485a(%rip), %xmm1     # 0xe2ca0
mulsd -0x38(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x40(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x88(%rbp)
movsd -0x40(%rbp), %xmm0
movsd -0x40(%rbp), %xmm2
movsd 0x45f6(%rip), %xmm1     # 0xe2a80
mulsd -0x38(%rbp), %xmm1
mulsd -0x48(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x42a0
movaps %xmm0, %xmm1
movsd -0x88(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd 0x47d1(%rip), %xmm1     # 0xe2ca0
mulsd -0x38(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x8(%rbp), %xmm0
ucomisd -0x10(%rbp), %xmm0
jbe 0xde558
movsd -0x50(%rbp), %xmm0
ucomisd -0x10(%rbp), %xmm0
jbe 0xde511
movsd -0x50(%rbp), %xmm1
movsd -0x8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xde511
movsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0xde556
movsd -0x58(%rbp), %xmm0
ucomisd -0x10(%rbp), %xmm0
jbe 0xde539
movsd -0x58(%rbp), %xmm1
movsd -0x8(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xde539
movsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0xde554
movsd -0x8(%rbp), %xmm0
addsd -0x10(%rbp), %xmm0
movsd 0x4755(%rip), %xmm1     # 0xe2ca0
divsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0xde556
jmp 0xde5c7
movsd -0x50(%rbp), %xmm1
movsd -0x10(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xde580
movsd -0x50(%rbp), %xmm0
ucomisd -0x8(%rbp), %xmm0
jbe 0xde580
movsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0xde5c5
movsd -0x58(%rbp), %xmm1
movsd -0x10(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xde5a8
movsd -0x58(%rbp), %xmm0
ucomisd -0x8(%rbp), %xmm0
jbe 0xde5a8
movsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0xde5c3
movsd -0x8(%rbp), %xmm0
addsd -0x10(%rbp), %xmm0
movsd 0x46e6(%rip), %xmm1     # 0xe2ca0
divsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0xde5c5
jmp 0xde5c7
jmp 0xde5c9
jmp 0xde5cb
movsd -0x30(%rbp), %xmm0
addq $0x90, %rsp
popq %rbp
retq
nopl (%rax)