// File: /workspace/github_c_makefile_star2_O0/ugobas[P]tnm/EC.c
// Function: Find_zero_Newton
int Find_zero_Newton(float *x0, float X_min, float X_max){
  float f1, f, d; int iter;
  float f_opt=1, x_opt=*x0;
  float x_min=*x0, x_max=*x0, f_min=0, f_max=1;
  int i_min=0, i_max=0;
  float x_ini=*x0;

  for(iter=0; iter<IT_MAX; iter++){
    f1=Compute_deriv((*x0), &f);
    if((i_min==0)&&(f<0)){i_min=1; f_min=f; x_min=*x0;}
    if((i_max==0)&&(f>0)){i_max=1; f_max=f; x_max=*x0;}
    if(VERBOSE)printf("%3d %.3g %.2g %.2g\n", iter, *x0, f, f1);
    if(fabs(f)<EPS)return(0);
    if(fabs(f)<fabs(f_opt)){f_opt=f; x_opt=*x0;}
    d = f/f1; //if(d>*x0)d=(*x0)*0.5; // Watch out!
    (*x0) -= d;
    if((*x0<X_min)||(*x0 > X_max))break;
  }
  *x0=x_opt;
  if((i_min)&&(i_max)){
    float x = x_min-f_min*(x_max-x_min)/(f_max-f_min);
    float f=Compute_score(x);
    if(fabs(f) < fabs(f_opt)){*x0=x; f_opt=f;}
  }
  if(fabs(f_opt)<EPS)return(0);
  if(VERBOSE)printf("%3d %.3g %.2g Not converged\n", iter, *x0, f_opt);
  *x0=x_ini;
  return(1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movss %xmm0, -0x14(%rbp)
movss %xmm1, -0x18(%rbp)
movss 0x1b02(%rip), %xmm0     # 0x76090
movss %xmm0, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x30(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x34(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x38(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x3c(%rbp)
movss 0x1ac6(%rip), %xmm0     # 0x76090
movss %xmm0, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
movl $0x0, -0x48(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x4c(%rbp)
movl $0x0, -0x28(%rbp)
cmpl $0x64, -0x28(%rbp)
jge 0x74767
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
leaq -0x20(%rbp), %rdi
callq 0x75020
movss %xmm0, -0x1c(%rbp)
cmpl $0x0, -0x44(%rbp)
jne 0x7463e
xorps %xmm0, %xmm0
ucomiss -0x20(%rbp), %xmm0
jbe 0x7463e
movl $0x1, -0x44(%rbp)
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x3c(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x34(%rbp)
cmpl $0x0, -0x48(%rbp)
jne 0x7466f
movss -0x20(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x7466f
movl $0x1, -0x48(%rbp)
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x40(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x38(%rbp)
movl -0x28(%rbp), %esi
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x20(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movss -0x1c(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
leaq 0xf0dc(%rip), %rdi      # 0x83773
movb $0x3, %al
callq 0x10d0
movss -0x20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movaps 0x7de2(%rip), %xmm0     # 0x7c490
pand %xmm0, %xmm1
movsd 0x7d6e(%rip), %xmm0     # 0x7c428
ucomisd %xmm1, %xmm0
jbe 0x746cc
movl $0x0, -0x4(%rbp)
jmp 0x74872
movss -0x20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movaps 0x7db4(%rip), %xmm0     # 0x7c490
pand %xmm0, %xmm1
movss -0x2c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movaps 0x7da0(%rip), %xmm2     # 0x7c490
pand %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x74711
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x30(%rbp)
movss -0x20(%rbp), %xmm0
divss -0x1c(%rbp), %xmm0
movss %xmm0, -0x24(%rbp)
movss -0x24(%rbp), %xmm1
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
subss %xmm1, %xmm0
movss %xmm0, (%rax)
movq -0x10(%rbp), %rax
movss (%rax), %xmm1
movss -0x14(%rbp), %xmm0
ucomiss %xmm1, %xmm0
ja 0x74755
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
ucomiss -0x18(%rbp), %xmm0
jbe 0x74757
jmp 0x74767
jmp 0x74759
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x745f1
movss -0x30(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, (%rax)
cmpl $0x0, -0x44(%rbp)
je 0x7480d
cmpl $0x0, -0x48(%rbp)
je 0x7480d
movss -0x34(%rbp), %xmm0
movss -0x3c(%rbp), %xmm1
movss -0x38(%rbp), %xmm2
subss -0x34(%rbp), %xmm2
mulss %xmm2, %xmm1
movss -0x40(%rbp), %xmm2
subss -0x3c(%rbp), %xmm2
divss %xmm2, %xmm1
subss %xmm1, %xmm0
movss %xmm0, -0x50(%rbp)
movss -0x50(%rbp), %xmm0
callq 0x75070
movss %xmm0, -0x54(%rbp)
movss -0x54(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movaps 0x7cba(%rip), %xmm0     # 0x7c490
pand %xmm0, %xmm1
movss -0x2c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movaps 0x7ca6(%rip), %xmm2     # 0x7c490
pand %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x7480b
movss -0x50(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, (%rax)
movss -0x54(%rbp), %xmm0
movss %xmm0, -0x2c(%rbp)
jmp 0x7480d
movss -0x2c(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movaps 0x7c73(%rip), %xmm0     # 0x7c490
pand %xmm0, %xmm1
movsd 0x7bff(%rip), %xmm0     # 0x7c428
ucomisd %xmm1, %xmm0
jbe 0x74838
movl $0x0, -0x4(%rbp)
jmp 0x74872
movl -0x28(%rbp), %esi
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x2c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0xef30(%rip), %rdi      # 0x83787
movb $0x2, %al
callq 0x10d0
movss -0x4c(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, (%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax,%rax)