// File: /workspace/github_c_makefile_star2_O0/ugobas[P]tnm/EC.c
// Function: Find_zero_quad
int Find_zero_quad(float *x0)
{
  int iter=0;
  float x1=(*x0)*(0.98), x2=*x0*(1.02), x1_new, x2_new;
  float f_opt=1, x_opt=x1;
  float x_min=x1, x_max=x1, f_min=0, f_max=1;
  int i_min=0, i_max=0;
  double f1, f2, b;

  // Initialization

  f1=Compute_score(x1); f1*=f1;
  f2=Compute_score(x2); f2*=f2;
  for(iter=0; iter<IT_MAX; iter++){
    if(VERBOSE)printf("%3d %.3g %.3g %.2g %.2g\n", iter,x1,x2,f1,f2);
    if(f1<f_opt){f_opt=f1; x_opt=x1;}
    if(f2<f_opt){f_opt=f2; x_opt=x2;}
    if((i_min==0)&&(f1<0)){i_min=1; f_min=f1; x_min=x1;}
    if((i_min==0)&&(f2<0)){i_min=1; f_min=f2; x_min=x2;}
    if((i_max==0)&&(f1>0)){i_max=1; f_max=f1; x_max=x1;}
    if((i_max==0)&&(f2>0)){i_max=1; f_max=f2; x_max=x2;}
    b=f1/f2;
    if(b==1)break;
    x1_new=(x1-b*x2)/(1-b);
    x2_new=(x1+b*x2)/(1+b);
    f1=Compute_score(x1_new); f1*=f1;
    f2=Compute_score(x2_new); f2*=f2;
    if(f1 <EPS2){*x0=x1_new; return(0);}
    if((x1_new<X_MIN)||(x2_new<X_MIN))break;
    if((x1_new>X_MAX)||(x2_new>X_MAX))break;
    x1=x1_new; x2=x2_new;
  }
  // Not converged
  *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), f2=f*f;
    if(f_opt > f2){*x0=x; f_opt=f2;}
  }
  if(VERBOSE)printf("%3d %.3f %.8f\n", iter, *x0, f_opt);
  if(f_opt <EPS2)return(0);
  return(1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xb7d1(%rip), %xmm1     # 0x80078
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xee18(%rip), %xmm1     # 0x836e0
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
movss 0x17b3(%rip), %xmm0     # 0x76090
movss %xmm0, -0x28(%rbp)
movss -0x18(%rbp), %xmm0
movss %xmm0, -0x2c(%rbp)
movss -0x18(%rbp), %xmm0
movss %xmm0, -0x30(%rbp)
movss -0x18(%rbp), %xmm0
movss %xmm0, -0x34(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x38(%rbp)
movss 0x1780(%rip), %xmm0     # 0x76090
movss %xmm0, -0x3c(%rbp)
movl $0x0, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
movss -0x18(%rbp), %xmm0
callq 0x75070
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x50(%rbp), %xmm0
mulsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movss -0x1c(%rbp), %xmm0
callq 0x75070
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x58(%rbp), %xmm0
mulsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movl $0x0, -0x14(%rbp)
cmpl $0x64, -0x14(%rbp)
jge 0x74c45
movl -0x14(%rbp), %esi
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x1c(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
movsd -0x50(%rbp), %xmm2
movsd -0x58(%rbp), %xmm3
leaq 0xee06(%rip), %rdi      # 0x837a4
movb $0x4, %al
callq 0x10d0
movsd -0x50(%rbp), %xmm1
movss -0x28(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x749d1
movsd -0x50(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x28(%rbp)
movss -0x18(%rbp), %xmm0
movss %xmm0, -0x2c(%rbp)
movsd -0x58(%rbp), %xmm1
movss -0x28(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x749fd
movsd -0x58(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x28(%rbp)
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0x2c(%rbp)
cmpl $0x0, -0x40(%rbp)
jne 0x74a2c
xorps %xmm0, %xmm0
ucomisd -0x50(%rbp), %xmm0
jbe 0x74a2c
movl $0x1, -0x40(%rbp)
movsd -0x50(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x38(%rbp)
movss -0x18(%rbp), %xmm0
movss %xmm0, -0x30(%rbp)
cmpl $0x0, -0x40(%rbp)
jne 0x74a5b
xorps %xmm0, %xmm0
ucomisd -0x58(%rbp), %xmm0
jbe 0x74a5b
movl $0x1, -0x40(%rbp)
movsd -0x58(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x38(%rbp)
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0x30(%rbp)
cmpl $0x0, -0x44(%rbp)
jne 0x74a8e
movsd -0x50(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x74a8e
movl $0x1, -0x44(%rbp)
movsd -0x50(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x3c(%rbp)
movss -0x18(%rbp), %xmm0
movss %xmm0, -0x34(%rbp)
cmpl $0x0, -0x44(%rbp)
jne 0x74ac1
movsd -0x58(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x74ac1
movl $0x1, -0x44(%rbp)
movsd -0x58(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x3c(%rbp)
movss -0x1c(%rbp), %xmm0
movss %xmm0, -0x34(%rbp)
movsd -0x50(%rbp), %xmm0
divsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x60(%rbp), %xmm0
movsd 0x156b(%rip), %xmm1     # 0x76048
ucomisd %xmm1, %xmm0
jne 0x74aea
jp 0x74aea
jmp 0x74c45
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd -0x60(%rbp), %xmm0
movss -0x1c(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x1520(%rip), %xmm1     # 0x76048
subsd -0x60(%rbp), %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x20(%rbp)
movss -0x18(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd -0x60(%rbp), %xmm0
movss -0x1c(%rbp), %xmm2
cvtss2sd %xmm2, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x14e7(%rip), %xmm1     # 0x76048
addsd -0x60(%rbp), %xmm1
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0x24(%rbp)
movss -0x20(%rbp), %xmm0
callq 0x75070
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x50(%rbp), %xmm0
mulsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
movss -0x24(%rbp), %xmm0
callq 0x75070
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x58(%rbp), %xmm0
mulsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0xeb09(%rip), %xmm0     # 0x836c8
ucomisd -0x50(%rbp), %xmm0
jbe 0x74bdf
movss -0x20(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, (%rax)
movl $0x0, -0x4(%rbp)
jmp 0x74d1c
movss 0x9f2d(%rip), %xmm0     # 0x7eb14
ucomiss -0x20(%rbp), %xmm0
ja 0x74bfb
movss 0x9f1f(%rip), %xmm0     # 0x7eb14
ucomiss -0x24(%rbp), %xmm0
jbe 0x74bfd
jmp 0x74c45
movss -0x20(%rbp), %xmm0
movss 0x73ea(%rip), %xmm1     # 0x7bff4
ucomiss %xmm1, %xmm0
ja 0x74c21
movss -0x24(%rbp), %xmm0
movss 0x73d8(%rip), %xmm1     # 0x7bff4
ucomiss %xmm1, %xmm0
jbe 0x74c23
jmp 0x74c45
movss -0x20(%rbp), %xmm0
movss %xmm0, -0x18(%rbp)
movss -0x24(%rbp), %xmm0
movss %xmm0, -0x1c(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x7496e
movss -0x2c(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, (%rax)
cmpl $0x0, -0x40(%rbp)
je 0x74ccf
cmpl $0x0, -0x44(%rbp)
je 0x74ccf
movss -0x30(%rbp), %xmm0
movss -0x38(%rbp), %xmm1
movss -0x34(%rbp), %xmm2
subss -0x30(%rbp), %xmm2
mulss %xmm2, %xmm1
movss -0x3c(%rbp), %xmm2
subss -0x38(%rbp), %xmm2
divss %xmm2, %xmm1
subss %xmm1, %xmm0
movss %xmm0, -0x64(%rbp)
movss -0x64(%rbp), %xmm0
callq 0x75070
movss %xmm0, -0x68(%rbp)
movss -0x68(%rbp), %xmm0
mulss -0x68(%rbp), %xmm0
movss %xmm0, -0x6c(%rbp)
movss -0x28(%rbp), %xmm0
ucomiss -0x6c(%rbp), %xmm0
jbe 0x74ccd
movss -0x64(%rbp), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, (%rax)
movss -0x6c(%rbp), %xmm0
movss %xmm0, -0x28(%rbp)
jmp 0x74ccf
movl -0x14(%rbp), %esi
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movss -0x28(%rbp), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0xeacf(%rip), %rdi      # 0x837bd
movb $0x2, %al
callq 0x10d0
movss -0x28(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0xe9c2(%rip), %xmm0     # 0x836c8
ucomisd %xmm1, %xmm0
jbe 0x74d15
movl $0x0, -0x4(%rbp)
jmp 0x74d1c
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)