int dcsrch_(double *f, double *g, double *stp, double ftol, double gtol,
            double xtol, double stpmin, double *stpmax, char *task, int *isave,
            double *dsave) {
  double fm, gm, fx, fy, gx, gy, fxm, fym, gxm, gym, stx, sty;
  double finit, ginit, width, ftest, gtest, stmin, stmax, width1;
  int stage, brackt;
  double d1;
  --dsave;
  --isave;
  if (strncmp(task, "START", 5) == 0) {
    if (*stp < stpmin) {
      strcpy(task, "ERROR: STP .LT. STPMIN");
    }
    if (*stp > *stpmax) {
      strcpy(task, "ERROR: STP .GT. STPMAX");
    }
    if (*g >= 0.) {
      strcpy(task, "ERROR: INITIAL G .GE. ZERO");
    }
    if (ftol < 0.) {
      strcpy(task, "ERROR: FTOL .LT. ZERO");
    }
    if (gtol < 0.) {
      strcpy(task, "ERROR: GTOL .LT. ZERO");
    }
    if (xtol < 0.) {
      strcpy(task, "ERROR: XTOL .LT. ZERO");
    }
    if (stpmin < 0.) {
      strcpy(task, "ERROR: STPMIN .LT. ZERO");
    }
    if (*stpmax < stpmin) {
      strcpy(task, "ERROR: STPMAX .LT. STPMIN");
    }
    if (strncmp(task, "ERROR", 5) == 0) {
      return 0;
    }
    brackt = 0;
    stage = 1;
    finit = *f;
    ginit = *g;
    gtest = ftol * ginit;
    width = *stpmax - stpmin;
    width1 = width / .5;
    stx = 0.;
    fx = finit;
    gx = ginit;
    sty = 0.;
    fy = finit;
    gy = ginit;
    stmin = 0.;
    stmax = *stp + *stp * 4.;
    strcpy(task, "FG");
    goto L1000;
  } else {
    if (isave[1] == 1) {
      brackt = 1;
    } else {
      brackt = 0;
    }
    stage = isave[2];
    ginit = dsave[1];
    gtest = dsave[2];
    gx = dsave[3];
    gy = dsave[4];
    finit = dsave[5];
    fx = dsave[6];
    fy = dsave[7];
    stx = dsave[8];
    sty = dsave[9];
    stmin = dsave[10];
    stmax = dsave[11];
    width = dsave[12];
    width1 = dsave[13];
  }
  ftest = finit + *stp * gtest;
  if (stage == 1 && *f <= ftest && *g >= 0.) {
    stage = 2;
  }
  if (brackt && (*stp <= stmin || *stp >= stmax)) {
    strcpy(task, "WARNING: ROUNDING ERRORS PREVENT PROGRESS");
  }
  if (brackt && stmax - stmin <= xtol * stmax) {
    strcpy(task, "WARNING: XTOL TEST SATISFIED");
  }
  if (*stp == *stpmax && *f <= ftest && *g <= gtest) {
    strcpy(task, "WARNING: STP = STPMAX");
  }
  if (*stp == stpmin && (*f > ftest || *g >= gtest)) {
    strcpy(task, "WARNING: STP = STPMIN");
  }
  if (*f <= ftest && fabs(*g) <= gtol * (-ginit)) {
    strcpy(task, "CONVERGENCE");
  }
  if (strncmp(task, "WARN", 4) == 0 || strncmp(task, "CONV", 4) == 0) {
    goto L1000;
  }
  if (stage == 1 && *f <= fx && *f > ftest) {
    fm = *f - *stp * gtest;
    fxm = fx - stx * gtest;
    fym = fy - sty * gtest;
    gm = *g - gtest;
    gxm = gx - gtest;
    gym = gy - gtest;
    dcstep_(&stx, &fxm, &gxm, &sty, &fym, &gym, stp, &fm, &gm, &brackt, &stmin,
            &stmax);
    fx = fxm + stx * gtest;
    fy = fym + sty * gtest;
    gx = gxm + gtest;
    gy = gym + gtest;
  } else {
    dcstep_(&stx, &fx, &gx, &sty, &fy, &gy, stp, f, g, &brackt, &stmin, &stmax);
  }
  if (brackt) {
    if ((d1 = sty - stx, fabs(d1)) >= width1 * .66) {
      *stp = stx + (sty - stx) * .5;
    }
    width1 = width;
    width = (d1 = sty - stx, fabs(d1));
  }
  if (brackt) {
    stmin = ((stx) <= (sty) ? (stx) : (sty));
    stmax = ((stx) >= (sty) ? (stx) : (sty));
  } else {
    stmin = *stp + (*stp - stx) * 1.1;
    stmax = *stp + (*stp - stx) * 4.;
  }
  *stp = ((*stp) >= (stpmin) ? (*stp) : (stpmin));
  *stp = ((*stp) <= (*stpmax) ? (*stp) : (*stpmax));
  if ((brackt && (*stp <= stmin || *stp >= stmax)) ||
      (brackt && stmax - stmin <= xtol * stmax)) {
    *stp = stx;
  }
  strcpy(task, "FG");
L1000:
  if (brackt) {
    isave[1] = 1;
  } else {
    isave[1] = 0;
  }
  isave[2] = stage;
  dsave[1] = ginit;
  dsave[2] = gtest;
  dsave[3] = gx;
  dsave[4] = gy;
  dsave[5] = finit;
  dsave[6] = fx;
  dsave[7] = fy;
  dsave[8] = stx;
  dsave[9] = sty;
  dsave[10] = stmin;
  dsave[11] = stmax;
  dsave[12] = width;
  dsave[13] = width1;
  return 0;
}


x86 assembly (clang, -O0):
<dcsrch_>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %rbx
sub    $0x158,%rsp
mov    0x10(%rbp),%rax
mov    %rdi,-0x28(%rbp)
mov    %rsi,-0x30(%rbp)
mov    %rdx,-0x38(%rbp)
movsd  %xmm0,-0x40(%rbp)
movsd  %xmm1,-0x48(%rbp)
movsd  %xmm2,-0x50(%rbp)
movsd  %xmm3,-0x58(%rbp)
mov    %rcx,-0x60(%rbp)
mov    %r8,-0x68(%rbp)
mov    %r9,-0x70(%rbp)
mov    0x10(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,0x10(%rbp)
mov    -0x70(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x70(%rbp)
mov    -0x68(%rbp),%rdi
lea    0xe9d(%rip),%rsi
mov    $0x5,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    13f9 <dcsrch_+0x2c9>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x58(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    11cd <dcsrch_+0x9d>
mov    -0x68(%rbp),%rdi
lea    0xe6e(%rip),%rsi
call   1040 <strcpy@plt>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x60(%rbp),%rax
ucomisd (%rax),%xmm0
jbe    11f3 <dcsrch_+0xc3>
mov    -0x68(%rbp),%rdi
lea    0xe5f(%rip),%rsi
call   1040 <strcpy@plt>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1218 <dcsrch_+0xe8>
mov    -0x68(%rbp),%rdi
lea    0xe51(%rip),%rsi
call   1040 <strcpy@plt>
xorps  %xmm0,%xmm0
ucomisd -0x40(%rbp),%xmm0
jbe    1236 <dcsrch_+0x106>
mov    -0x68(%rbp),%rdi
lea    0xe4e(%rip),%rsi
call   1040 <strcpy@plt>
xorps  %xmm0,%xmm0
ucomisd -0x48(%rbp),%xmm0
jbe    1254 <dcsrch_+0x124>
mov    -0x68(%rbp),%rdi
lea    0xe46(%rip),%rsi
call   1040 <strcpy@plt>
xorps  %xmm0,%xmm0
ucomisd -0x50(%rbp),%xmm0
jbe    1272 <dcsrch_+0x142>
mov    -0x68(%rbp),%rdi
lea    0xe3e(%rip),%rsi
call   1040 <strcpy@plt>
xorps  %xmm0,%xmm0
ucomisd -0x58(%rbp),%xmm0
jbe    1290 <dcsrch_+0x160>
mov    -0x68(%rbp),%rdi
lea    0xe36(%rip),%rsi
call   1040 <strcpy@plt>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x58(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    12b7 <dcsrch_+0x187>
mov    -0x68(%rbp),%rdi
lea    0xe27(%rip),%rsi
call   1040 <strcpy@plt>
mov    -0x68(%rbp),%rdi
lea    0xe31(%rip),%rsi
mov    $0x5,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    12e1 <dcsrch_+0x1b1>
movl   $0x0,-0x1c(%rbp)
jmp    1e1c <dcsrch_+0xcec>
movl   $0x0,-0x118(%rbp)
movl   $0x1,-0x114(%rbp)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0xcc9(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xc4c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x68(%rbp),%rdi
lea    0xd0a(%rip),%rsi
call   1040 <strcpy@plt>
jmp    1d03 <dcsrch_+0xbd3>
mov    -0x70(%rbp),%rax
cmpl   $0x1,0x4(%rax)
jne    1416 <dcsrch_+0x2e6>
movl   $0x1,-0x118(%rbp)
jmp    1420 <dcsrch_+0x2f0>
movl   $0x0,-0x118(%rbp)
mov    -0x70(%rbp),%rax
mov    0x8(%rax),%eax
mov    %eax,-0x114(%rbp)
mov    0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xd8(%rbp),%xmm1
ff
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0xf8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
cmpl   $0x1,-0x114(%rbp)
jne    1578 <dcsrch_+0x448>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1578 <dcsrch_+0x448>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1578 <dcsrch_+0x448>
movl   $0x2,-0x114(%rbp)
cmpl   $0x0,-0x118(%rbp)
je     15c5 <dcsrch_+0x495>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x100(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    15b5 <dcsrch_+0x485>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0x108(%rbp),%xmm0
ff
jb     15c5 <dcsrch_+0x495>
mov    -0x68(%rbp),%rdi
lea    0xb3c(%rip),%rsi
call   1040 <strcpy@plt>
cmpl   $0x0,-0x118(%rbp)
je     1609 <dcsrch_+0x4d9>
movsd  -0x108(%rbp),%xmm1
ff
subsd  -0x100(%rbp),%xmm1
ff
movsd  -0x50(%rbp),%xmm0
mulsd  -0x108(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1609 <dcsrch_+0x4d9>
mov    -0x68(%rbp),%rdi
lea    0xb22(%rip),%rsi
call   1040 <strcpy@plt>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x60(%rbp),%rax
ucomisd (%rax),%xmm0
jne    1669 <dcsrch_+0x539>
jp     1669 <dcsrch_+0x539>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1669 <dcsrch_+0x539>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1669 <dcsrch_+0x539>
mov    -0x68(%rbp),%rdi
lea    0xadf(%rip),%rsi
call   1040 <strcpy@plt>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0x58(%rbp),%xmm0
jne    16be <dcsrch_+0x58e>
jp     16be <dcsrch_+0x58e>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0xf0(%rbp),%xmm0
ff
ja     16ae <dcsrch_+0x57e>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0xf8(%rbp),%xmm0
ff
jb     16be <dcsrch_+0x58e>
mov    -0x68(%rbp),%rdi
lea    0xaa0(%rip),%rsi
call   1040 <strcpy@plt>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     172d <dcsrch_+0x5fd>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm1
movaps 0x919(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
movsd  -0xe0(%rbp),%xmm2
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jb     172d <dcsrch_+0x5fd>
mov    -0x68(%rbp),%rdi
lea    0xa47(%rip),%rsi
call   1040 <strcpy@plt>
mov    -0x68(%rbp),%rdi
lea    0xa43(%rip),%rsi
mov    $0x4,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
je     1769 <dcsrch_+0x639>
mov    -0x68(%rbp),%rdi
lea    0xa2a(%rip),%rsi
mov    $0x4,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    176e <dcsrch_+0x63e>
jmp    1d03 <dcsrch_+0xbd3>
cmpl   $0x1,-0x114(%rbp)
jne    199e <dcsrch_+0x86e>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x88(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     199e <dcsrch_+0x86e>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0xf0(%rbp),%xmm0
ff
jbe    199e <dcsrch_+0x86e>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0xf8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x88(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x38(%rbp),%r15
lea    -0xc8(%rbp),%rdi
lea    -0xa8(%rbp),%rsi
lea    -0xb8(%rbp),%rdx
lea    -0xd0(%rbp),%rcx
lea    -0xb0(%rbp),%r8
lea    -0xc0(%rbp),%r9
lea    -0x78(%rbp),%r14
lea    -0x80(%rbp),%rbx
lea    -0x118(%rbp),%r11
lea    -0x100(%rbp),%r10
lea    -0x108(%rbp),%rax
mov    %r15,(%rsp)
mov    %r14,0x8(%rsp)
mov    %rbx,0x10(%rsp)
mov    %r11,0x18(%rsp)
mov    %r10,0x20(%rsp)
mov    %rax,0x28(%rsp)
mov    $0x0,%al
call   1050 <dcstep_@plt>
movsd  -0xa8(%rbp),%xmm1
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xb0(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xf8(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
jmp    1a0d <dcsrch_+0x8dd>
mov    -0x38(%rbp),%r15
mov    -0x28(%rbp),%r14
mov    -0x30(%rbp),%rbx
lea    -0xc8(%rbp),%rdi
lea    -0x88(%rbp),%rsi
lea    -0x98(%rbp),%rdx
lea    -0xd0(%rbp),%rcx
lea    -0x90(%rbp),%r8
lea    -0xa0(%rbp),%r9
lea    -0x118(%rbp),%r11
lea    -0x100(%rbp),%r10
lea    -0x108(%rbp),%rax
mov    %r15,(%rsp)
mov    %r14,0x8(%rsp)
mov    %rbx,0x10(%rsp)
mov    %r11,0x18(%rsp)
mov    %r10,0x20(%rsp)
mov    %rax,0x28(%rsp)
mov    $0x0,%al
call   1050 <dcstep_@plt>
cmpl   $0x0,-0x118(%rbp)
je     1ad2 <dcsrch_+0x9a2>
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movaps 0x5bf(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0x5c3(%rip),%xmm1
mulsd  -0x110(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jb     1a8f <dcsrch_+0x95f>
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  0x599(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movaps 0x53a(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
cmpl   $0x0,-0x118(%rbp)
je     1b7e <dcsrch_+0xa4e>
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1b0e <dcsrch_+0x9de>
movsd  -0xc8(%rbp),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
jmp    1b1e <dcsrch_+0x9ee>
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
ucomisd -0xd0(%rbp),%xmm0
ff
jb     1b59 <dcsrch_+0xa29>
movsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
jmp    1b69 <dcsrch_+0xa39>
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
jmp    1bde <dcsrch_+0xaae>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0xc8(%rbp),%xmm0
ff
movsd  0x48a(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0xc8(%rbp),%xmm0
ff
movsd  0x452(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0x58(%rbp),%xmm0
jb     1c06 <dcsrch_+0xad6>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
jmp    1c13 <dcsrch_+0xae3>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jb     1c52 <dcsrch_+0xb22>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
jmp    1c62 <dcsrch_+0xb32>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x0,-0x118(%rbp)
je     1caf <dcsrch_+0xb7f>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x100(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    1ce3 <dcsrch_+0xbb3>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0x108(%rbp),%xmm0
ff
jae    1ce3 <dcsrch_+0xbb3>
cmpl   $0x0,-0x118(%rbp)
je     1cf3 <dcsrch_+0xbc3>
movsd  -0x108(%rbp),%xmm1
ff
subsd  -0x100(%rbp),%xmm1
ff
movsd  -0x50(%rbp),%xmm0
mulsd  -0x108(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1cf3 <dcsrch_+0xbc3>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x68(%rbp),%rdi
lea    0x3fb(%rip),%rsi
call   1040 <strcpy@plt>
cmpl   $0x0,-0x118(%rbp)
je     1d20 <dcsrch_+0xbf0>
mov    -0x70(%rbp),%rax
movl   $0x1,0x4(%rax)
jmp    1d2b <dcsrch_+0xbfb>
mov    -0x70(%rbp),%rax
movl   $0x0,0x4(%rax)
mov    -0x114(%rbp),%ecx
mov    -0x70(%rbp),%rax
mov    %ecx,0x8(%rax)
movsd  -0xe0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x88(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x90(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x100(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x108(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x110(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x158,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<dcsrch_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x158,%rsp
mov    %r9,%rbp
mov    %r8,%r15
mov    %rcx,%rbx
movaps %xmm3,0xe0(%rsp)
movsd  %xmm2,0xa8(%rsp)
movsd  %xmm1,0x60(%rsp)
movsd  %xmm0,0x8(%rsp)
mov    %rdx,%r13
mov    %rsi,%r14
mov    %rdi,0x30(%rsp)
mov    0x190(%rsp),%r12
lea    0xecf(%rip),%rsi
mov    $0x5,%edx
mov    %r8,%rdi
call   1030 <strncmp@plt>
test   %eax,%eax
je     15f8 <dcsrch_+0x4d8>
mov    %r14,0x10(%rsp)
mov    %rbx,0xb0(%rsp)
mov    0x0(%rbp),%eax
xor    %r14d,%r14d
cmp    $0x1,%eax
sete   %r14b
mov    %r14d,0x4(%rsp)
mov    %rbp,0xb8(%rsp)
mov    0x4(%rbp),%ebx
movsd  (%r12),%xmm8
movsd  0x8(%r12),%xmm3
movsd  0x10(%r12),%xmm0
movsd  %xmm0,0x80(%rsp)
movsd  %xmm0,0x48(%rsp)
movsd  0x18(%r12),%xmm0
movsd  %xmm0,0x70(%rsp)
movsd  %xmm0,0x40(%rsp)
movsd  0x20(%r12),%xmm1
movsd  0x28(%r12),%xmm11
movsd  %xmm11,0x58(%rsp)
movsd  0x30(%r12),%xmm0
movsd  %xmm0,0x88(%rsp)
movsd  %xmm0,0x50(%rsp)
movsd  0x38(%r12),%xmm10
movsd  %xmm10,0x20(%rsp)
movsd  0x40(%r12),%xmm12
movsd  %xmm12,0x18(%rsp)
movsd  0x48(%r12),%xmm6
movsd  %xmm6,0x28(%rsp)
movsd  0x50(%r12),%xmm5
movsd  %xmm5,0x38(%rsp)
movsd  0x0(%r13),%xmm0
movapd %xmm0,%xmm7
mulsd  %xmm3,%xmm7
movsd  %xmm1,0xa0(%rsp)
addsd  %xmm1,%xmm7
cmp    $0x1,%ebx
movapd 0xe0(%rsp),%xmm4
mov    0x30(%rsp),%rdx
jne    1298 <dcsrch_+0x178>
mov    $0x1,%ebx
ucomisd (%rdx),%xmm7
jb     1298 <dcsrch_+0x178>
mov    0x10(%rsp),%rcx
movsd  (%rcx),%xmm1
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm1
jb     1298 <dcsrch_+0x178>
mov    $0x2,%ebx
movsd  0x58(%r12),%xmm9
movsd  0x60(%r12),%xmm2
cmp    $0x1,%eax
jne    1310 <dcsrch_+0x1f0>
ucomisd %xmm0,%xmm6
jae    12b7 <dcsrch_+0x197>
ucomisd %xmm5,%xmm0
jb     12dc <dcsrch_+0x1bc>
movups 0xe68(%rip),%xmm0
movups %xmm0,0x1a(%r15)
movups 0xe52(%rip),%xmm0
movups %xmm0,0x10(%r15)
movupd 0xe35(%rip),%xmm0
movupd %xmm0,(%r15)
movapd %xmm5,%xmm0
subsd  %xmm6,%xmm0
movapd %xmm5,%xmm1
mulsd  0xa8(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jb     1310 <dcsrch_+0x1f0>
movups 0xe45(%rip),%xmm0
movups %xmm0,0xd(%r15)
movupd 0xe2b(%rip),%xmm0
movupd %xmm0,(%r15)
movsd  0x0(%r13),%xmm0
mov    0xb0(%rsp),%rax
ucomisd (%rax),%xmm0
jne    1356 <dcsrch_+0x236>
jp     1356 <dcsrch_+0x236>
ucomisd (%rdx),%xmm7
jb     1356 <dcsrch_+0x236>
mov    0x10(%rsp),%rax
ucomisd (%rax),%xmm3
jb     1356 <dcsrch_+0x236>
movups 0xe15(%rip),%xmm0
movups %xmm0,(%r15)
movabs $0x58414d50545320,%rax
mov    %rax,0xe(%r15)
movsd  0x0(%r13),%xmm0
ucomisd %xmm4,%xmm0
jne    1392 <dcsrch_+0x272>
jp     1392 <dcsrch_+0x272>
movsd  (%rdx),%xmm0
ucomisd %xmm7,%xmm0
ja     1377 <dcsrch_+0x257>
mov    0x10(%rsp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm3,%xmm0
jb     1392 <dcsrch_+0x272>
movupd 0xdea(%rip),%xmm0
movupd %xmm0,(%r15)
movabs $0x4e494d50545320,%rax
mov    %rax,0xe(%r15)
movsd  %xmm11,0x78(%rsp)
movaps %xmm12,0xf0(%rsp)
movapd %xmm6,0x130(%rsp)
movapd %xmm5,0x140(%rsp)
movaps %xmm10,0x100(%rsp)
movsd  %xmm2,0x90(%rsp)
movsd  %xmm9,0x98(%rsp)
movsd  %xmm3,0x8(%rsp)
movsd  %xmm7,0x118(%rsp)
ucomisd (%rdx),%xmm7
jb     1424 <dcsrch_+0x304>
mov    0x10(%rsp),%rax
movsd  (%rax),%xmm0
andpd  0xc0a(%rip),%xmm0
movapd 0xc12(%rip),%xmm1
xorpd  %xmm8,%xmm1
mulsd  0x60(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jb     1424 <dcsrch_+0x304>
movabs $0x45475245564e4f43,%rax
52 47 45
mov    %rax,(%r15)
movl   $0x45434e,0x8(%r15)
movapd %xmm8,0x60(%rsp)
lea    0xd59(%rip),%rsi
mov    $0x4,%edx
mov    %r15,%rdi
call   1030 <strncmp@plt>
test   %eax,%eax
je     1810 <dcsrch_+0x6f0>
lea    0xd42(%rip),%rsi
mov    $0x4,%edx
mov    %r15,%rdi
call   1030 <strncmp@plt>
test   %eax,%eax
je     1810 <dcsrch_+0x6f0>
cmp    $0x1,%ebx
movapd 0x100(%rsp),%xmm2
movsd  0x88(%rsp),%xmm3
movsd  0x80(%rsp),%xmm4
movapd 0xf0(%rsp),%xmm5
movsd  0x78(%rsp),%xmm6
jne    1882 <dcsrch_+0x762>
mov    0x30(%rsp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm0,%xmm6
jb     1882 <dcsrch_+0x762>
ucomisd 0x118(%rsp),%xmm0
jbe    1882 <dcsrch_+0x762>
mov    %r13,%r14
movsd  0x0(%r13),%xmm1
movsd  0x8(%rsp),%xmm7
mulsd  %xmm7,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x128(%rsp)
mulsd  %xmm7,%xmm2
subsd  %xmm2,%xmm6
movsd  %xmm6,0xd8(%rsp)
mulsd  %xmm7,%xmm5
subsd  %xmm5,%xmm3
movsd  %xmm3,0xd0(%rsp)
mov    0x10(%rsp),%rax
movsd  (%rax),%xmm0
subsd  %xmm7,%xmm0
movsd  %xmm0,0x120(%rsp)
subsd  %xmm7,%xmm4
movsd  %xmm4,0xc8(%rsp)
movsd  0x70(%rsp),%xmm0
subsd  %xmm7,%xmm0
movsd  %xmm0,0xc0(%rsp)
lea    0x38(%rsp),%r11
lea    0x28(%rsp),%r10
lea    0x20(%rsp),%rdi
lea    0xd8(%rsp),%rsi
lea    0xc8(%rsp),%rdx
lea    0x18(%rsp),%rcx
lea    0xd0(%rsp),%r8
lea    0xc0(%rsp),%r9
mov    $0x0,%eax
push   %r11
push   %r10
lea    0x14(%rsp),%rbp
push   %rbp
lea    0x138(%rsp),%rbp
push   %rbp
lea    0x148(%rsp),%rbp
push   %rbp
push   %r13
call   1040 <dcstep_@plt>
movsd  0x38(%rsp),%xmm8
add    $0x30,%rsp
movsd  0x20(%rsp),%xmm0
mulsd  %xmm8,%xmm0
addsd  0xd8(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
mulsd  %xmm8,%xmm1
addsd  0xd0(%rsp),%xmm1
movsd  %xmm0,0x58(%rsp)
movsd  %xmm1,0x50(%rsp)
movsd  0xc8(%rsp),%xmm0
addsd  %xmm8,%xmm0
movsd  %xmm0,0x48(%rsp)
movsd  0xc0(%rsp),%xmm0
addsd  %xmm8,%xmm0
movsd  %xmm0,0x40(%rsp)
jmp    18d4 <dcsrch_+0x7b4>
movsd  0x0(%r13),%xmm0
movapd 0xe0(%rsp),%xmm3
ucomisd %xmm0,%xmm3
jbe    162c <dcsrch_+0x50c>
movups 0xa32(%rip),%xmm0
movups %xmm0,(%r15)
movabs $0x4e494d50545320,%rax
mov    %rax,0xf(%r15)
movsd  0x0(%r13),%xmm0
ucomisd (%rbx),%xmm0
movsd  0x8(%rsp),%xmm2
jbe    1653 <dcsrch_+0x533>
movupd 0xa1d(%rip),%xmm0
movupd %xmm0,(%r15)
movabs $0x58414d50545320,%rax
mov    %rax,0xf(%r15)
movsd  (%r14),%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jb     167b <dcsrch_+0x55b>
movups 0xa16(%rip),%xmm1
movups %xmm1,0xb(%r15)
movupd 0x9fe(%rip),%xmm1
movupd %xmm1,(%r15)
ucomisd %xmm2,%xmm0
jbe    169c <dcsrch_+0x57c>
movupd 0xa06(%rip),%xmm0
movupd %xmm0,(%r15)
movabs $0x4f52455a202e54,%rax
mov    %rax,0xe(%r15)
xorpd  %xmm0,%xmm0
ucomisd 0x60(%rsp),%xmm0
jbe    16c3 <dcsrch_+0x5a3>
movupd 0x9f5(%rip),%xmm1
movupd %xmm1,(%r15)
movabs $0x4f52455a202e54,%rax
mov    %rax,0xe(%r15)
ucomisd 0xa8(%rsp),%xmm0
jbe    16e9 <dcsrch_+0x5c9>
movupd 0x9e5(%rip),%xmm0
movupd %xmm0,(%r15)
movabs $0x4f52455a202e54,%rax
mov    %rax,0xe(%r15)
xorpd  %xmm0,%xmm0
ucomisd %xmm3,%xmm0
jbe    170e <dcsrch_+0x5ee>
movupd 0x9d6(%rip),%xmm0
movupd %xmm0,(%r15)
movabs $0x4f52455a202e54,%rax
mov    %rax,0x10(%r15)
ucomisd (%rbx),%xmm3
jbe    172d <dcsrch_+0x60d>
movups 0x9d8(%rip),%xmm0
movups %xmm0,0xa(%r15)
movupd 0x9c1(%rip),%xmm0
movupd %xmm0,(%r15)
lea    0x9cf(%rip),%rsi
mov    $0x5,%edx
mov    %r15,%rdi
call   1030 <strncmp@plt>
test   %eax,%eax
je     1af0 <dcsrch_+0x9d0>
mov    %rbp,0xb8(%rsp)
movl   $0x0,0x4(%rsp)
mov    0x30(%rsp),%rax
movsd  (%rax),%xmm3
movsd  (%r14),%xmm1
movsd  0x8(%rsp),%xmm8
mulsd  %xmm1,%xmm8
movsd  (%rbx),%xmm10
subsd  0xe0(%rsp),%xmm10
movapd %xmm10,%xmm12
addsd  %xmm10,%xmm12
movq   $0x0,0x20(%rsp)
movsd  %xmm3,0x58(%rsp)
movsd  %xmm1,0x48(%rsp)
movq   $0x0,0x18(%rsp)
movsd  %xmm3,0x50(%rsp)
movsd  %xmm1,0x40(%rsp)
movq   $0x0,0x28(%rsp)
movsd  0x0(%r13),%xmm0
movsd  0x86b(%rip),%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm2,0x38(%rsp)
movb   $0x0,0x2(%r15)
movw   $0x4746,(%r15)
mov    $0x1,%ebx
xor    %r14d,%r14d
xorpd  %xmm4,%xmm4
xorps  %xmm6,%xmm6
xorpd  %xmm11,%xmm11
movapd %xmm3,%xmm7
movapd %xmm1,%xmm5
movapd %xmm3,%xmm0
movapd %xmm1,%xmm9
jmp    1a80 <dcsrch_+0x960>
movsd  0x8(%rsp),%xmm8
movapd 0x60(%rsp),%xmm9
movsd  0xa0(%rsp),%xmm0
movsd  0x98(%rsp),%xmm10
movsd  0x90(%rsp),%xmm12
movapd 0x100(%rsp),%xmm11
movapd 0x140(%rsp),%xmm2
movapd 0x130(%rsp),%xmm4
movsd  0x70(%rsp),%xmm1
movsd  0x88(%rsp),%xmm3
movsd  0x80(%rsp),%xmm5
movaps 0xf0(%rsp),%xmm6
movsd  0x78(%rsp),%xmm7
jmp    1a80 <dcsrch_+0x960>
lea    0x38(%rsp),%r10
lea    0x28(%rsp),%r11
lea    0x4(%rsp),%r14
lea    0x20(%rsp),%rdi
lea    0x58(%rsp),%rsi
lea    0x48(%rsp),%rdx
lea    0x18(%rsp),%rcx
lea    0x50(%rsp),%r8
lea    0x40(%rsp),%r9
mov    $0x0,%eax
push   %r10
push   %r11
push   %r14
push   0x28(%rsp)
push   0x50(%rsp)
push   %r13
call   1040 <dcstep_@plt>
add    $0x30,%rsp
movsd  0x8(%rsp),%xmm8
mov    0x4(%rsp),%r14d
test   %r14d,%r14d
movsd  0x98(%rsp),%xmm10
movsd  0x90(%rsp),%xmm12
je     1933 <dcsrch_+0x813>
movsd  0x18(%rsp),%xmm5
movsd  0x20(%rsp),%xmm11
movapd %xmm5,%xmm0
subsd  %xmm11,%xmm0
movapd 0x6f0(%rip),%xmm1
andpd  %xmm0,%xmm1
mulsd  0x703(%rip),%xmm12
ucomisd %xmm12,%xmm1
movapd 0x60(%rsp),%xmm9
jae    1974 <dcsrch_+0x854>
movsd  0x0(%r13),%xmm0
jmp    1981 <dcsrch_+0x861>
movsd  0x0(%r13),%xmm0
movsd  0x20(%rsp),%xmm11
movapd %xmm0,%xmm2
subsd  %xmm11,%xmm2
movsd  0x6df(%rip),%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm0,%xmm4
movsd  %xmm4,0x28(%rsp)
mulsd  0x6d1(%rip),%xmm2
addsd  %xmm0,%xmm2
movapd 0x60(%rsp),%xmm9
jmp    19c7 <dcsrch_+0x8a7>
mulsd  0x6ac(%rip),%xmm0
addsd  %xmm11,%xmm0
movapd %xmm11,%xmm4
cmplesd %xmm5,%xmm4
movapd %xmm4,%xmm3
andpd  %xmm11,%xmm3
andnpd %xmm5,%xmm4
orpd   %xmm3,%xmm4
movlpd %xmm4,0x28(%rsp)
movapd %xmm5,%xmm2
cmplesd %xmm11,%xmm2
movapd %xmm2,%xmm3
andpd  %xmm11,%xmm3
andnpd %xmm5,%xmm2
orpd   %xmm3,%xmm2
movapd %xmm10,%xmm12
movapd %xmm1,%xmm10
movsd  %xmm2,0x38(%rsp)
movapd 0xe0(%rsp),%xmm3
movapd %xmm3,%xmm1
cmplesd %xmm0,%xmm1
andpd  %xmm1,%xmm0
andnpd %xmm3,%xmm1
orpd   %xmm0,%xmm1
movlpd %xmm1,0x0(%r13)
mov    0xb0(%rsp),%rax
movsd  (%rax),%xmm5
movapd %xmm1,%xmm0
cmplesd %xmm5,%xmm0
movapd %xmm0,%xmm3
andpd  %xmm1,%xmm3
andnpd %xmm5,%xmm0
orpd   %xmm3,%xmm0
movlpd %xmm0,0x0(%r13)
test   %r14d,%r14d
je     1a4e <dcsrch_+0x92e>
ucomisd %xmm0,%xmm4
jae    1a48 <dcsrch_+0x928>
ucomisd %xmm2,%xmm0
jae    1a48 <dcsrch_+0x928>
movapd %xmm2,%xmm0
subsd  %xmm4,%xmm0
movsd  0xa8(%rsp),%xmm1
mulsd  %xmm2,%xmm1
ucomisd %xmm0,%xmm1
jb     1a4e <dcsrch_+0x92e>
movsd  %xmm11,0x0(%r13)
movb   $0x0,0x2(%r15)
movw   $0x4746,(%r15)
movsd  0x48(%rsp),%xmm5
movsd  0x40(%rsp),%xmm1
movsd  0x58(%rsp),%xmm7
movsd  0x50(%rsp),%xmm3
movsd  0x18(%rsp),%xmm6
movsd  0xa0(%rsp),%xmm0
xor    %eax,%eax
test   %r14d,%r14d
setne  %al
mov    0xb8(%rsp),%rbp
mov    %eax,0x0(%rbp)
mov    %ebx,0x4(%rbp)
movsd  %xmm9,(%r12)
movsd  %xmm8,0x8(%r12)
movsd  %xmm5,0x10(%r12)
movsd  %xmm1,0x18(%r12)
movsd  %xmm0,0x20(%r12)
movsd  %xmm7,0x28(%r12)
movsd  %xmm3,0x30(%r12)
movsd  %xmm11,0x38(%r12)
movsd  %xmm6,0x40(%r12)
movsd  %xmm4,0x48(%r12)
movsd  %xmm2,0x50(%r12)
movsd  %xmm10,0x58(%r12)
movsd  %xmm12,0x60(%r12)
xor    %eax,%eax
add    $0x158,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [6 x i8] c"START\00"
@.str.1 = [23 x i8] c"ERROR: STP .LT. STPMIN\00"
@.str.2 = [23 x i8] c"ERROR: STP .GT. STPMAX\00"
@.str.3 = [27 x i8] c"ERROR: INITIAL G .GE. ZERO\00"
@.str.4 = [22 x i8] c"ERROR: FTOL .LT. ZERO\00"
@.str.5 = [22 x i8] c"ERROR: GTOL .LT. ZERO\00"
@.str.6 = [22 x i8] c"ERROR: XTOL .LT. ZERO\00"
@.str.7 = [24 x i8] c"ERROR: STPMIN .LT. ZERO\00"
@.str.8 = [26 x i8] c"ERROR: STPMAX .LT. STPMIN\00"
@.str.9 = [6 x i8] c"ERROR\00"
@.str.10 = [3 x i8] c"FG\00"
@.str.11 = [42 x i8] c"WARNING: ROUNDING ERRORS PREVENT PROGRESS\00"
@.str.12 = [29 x i8] c"WARNING: XTOL TEST SATISFIED\00"
@.str.13 = [22 x i8] c"WARNING: STP = STPMAX\00"
@.str.14 = [22 x i8] c"WARNING: STP = STPMIN\00"
@.str.15 = [12 x i8] c"CONVERGENCE\00"
@.str.16 = [5 x i8] c"WARN\00"
@.str.17 = [5 x i8] c"CONV\00"
define i32 @dcsrch_(double* %0, double* %1, double* %2, double %3, double %4, double %5, double %6, double* %7, i8* %8, i32* %9, double* %10) {
%12 = alloca i32
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double*
%21 = alloca i8*
%22 = alloca i32*
%23 = alloca double*
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca i32
%45 = alloca i32
%46 = alloca double
store double* %0, double** %13
store double* %1, double** %14
store double* %2, double** %15
store double %3, double* %16
store double %4, double* %17
store double %5, double* %18
store double %6, double* %19
store double* %7, double** %20
store i8* %8, i8** %21
store i32* %9, i32** %22
store double* %10, double** %23
%47 = load double*, double** %23
%48 = getelementptr inbounds double, double* %47, i32 -1
store double* %48, double** %23
%49 = load i32*, i32** %22
%50 = getelementptr inbounds i32, i32* %49, i32 -1
store i32* %50, i32** %22
%51 = load i8*, i8** %21
%52 = call i32 @strncmp(i8* %51, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), i64 5)
%53 = icmp eq i32 %52, 0
br i1 %53, label %54, label %140
54: ; preds = %11
%55 = load double*, double** %15
%56 = load double, double* %55
%57 = load double, double* %19
%58 = fcmp olt double %56, %57
br i1 %58, label %59, label %62
59: ; preds = %54
%60 = load i8*, i8** %21
%61 = call i8* @strcpy(i8* %60, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0))
br label %62
62: ; preds = %59, %54
%63 = load double*, double** %15
%64 = load double, double* %63
%65 = load double*, double** %20
%66 = load double, double* %65
%67 = fcmp ogt double %64, %66
br i1 %67, label %68, label %71
68: ; preds = %62
%69 = load i8*, i8** %21
%70 = call i8* @strcpy(i8* %69, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.2, i64 0, i64 0))
br label %71
71: ; preds = %68, %62
%72 = load double*, double** %14
%73 = load double, double* %72
%74 = fcmp oge double %73, 0.000000e+00
br i1 %74, label %75, label %78
75: ; preds = %71
%76 = load i8*, i8** %21
%77 = call i8* @strcpy(i8* %76, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.3, i64 0, i64 0))
br label %78
78: ; preds = %75, %71
%79 = load double, double* %16
%80 = fcmp olt double %79, 0.000000e+00
br i1 %80, label %81, label %84
81: ; preds = %78
%82 = load i8*, i8** %21
%83 = call i8* @strcpy(i8* %82, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i64 0, i64 0))
br label %84
84: ; preds = %81, %78
%85 = load double, double* %17
%86 = fcmp olt double %85, 0.000000e+00
br i1 %86, label %87, label %90
87: ; preds = %84
%88 = load i8*, i8** %21
%89 = call i8* @strcpy(i8* %88, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0))
br label %90
90: ; preds = %87, %84
%91 = load double, double* %18
%92 = fcmp olt double %91, 0.000000e+00
br i1 %92, label %93, label %96
93: ; preds = %90
%94 = load i8*, i8** %21
%95 = call i8* @strcpy(i8* %94, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.6, i64 0, i64 0))
br label %96
96: ; preds = %93, %90
%97 = load double, double* %19
%98 = fcmp olt double %97, 0.000000e+00
br i1 %98, label %99, label %102
99: ; preds = %96
%100 = load i8*, i8** %21
%101 = call i8* @strcpy(i8* %100, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0))
br label %102
102: ; preds = %99, %96
%103 = load double*, double** %20
%104 = load double, double* %103
%105 = load double, double* %19
%106 = fcmp olt double %104, %105
br i1 %106, label %107, label %110
107: ; preds = %102
%108 = load i8*, i8** %21
%109 = call i8* @strcpy(i8* %108, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.8, i64 0, i64 0))
br label %110
110: ; preds = %107, %102
%111 = load i8*, i8** %21
%112 = call i32 @strncmp(i8* %111, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0), i64 5)
%113 = icmp eq i32 %112, 0
br i1 %113, label %114, label %115
114: ; preds = %110
store i32 0, i32* %12
br label %534
115: ; preds = %110
store i32 0, i32* %45
store i32 1, i32* %44
%116 = load double*, double** %13
%117 = load double, double* %116
store double %117, double* %36
%118 = load double*, double** %14
%119 = load double, double* %118
store double %119, double* %37
%120 = load double, double* %16
%121 = load double, double* %37
%122 = fmul double %120, %121
store double %122, double* %40
%123 = load double*, double** %20
%124 = load double, double* %123
%125 = load double, double* %19
%126 = fsub double %124, %125
store double %126, double* %38
%127 = load double, double* %38
%128 = fdiv double %127, 5.000000e-01
store double %128, double* %43
store double 0.000000e+00, double* %34
%129 = load double, double* %36
store double %129, double* %26
%130 = load double, double* %37
store double %130, double* %28
store double 0.000000e+00, double* %35
%131 = load double, double* %36
store double %131, double* %27
%132 = load double, double* %37
store double %132, double* %29
store double 0.000000e+00, double* %41
%133 = load double*, double** %15
%134 = load double, double* %133
%135 = load double*, double** %15
%136 = load double, double* %135
%137 = call double @llvm.fmuladd.f64(double %136, double 4.000000e+00, double %134)
store double %137, double* %42
%138 = load i8*, i8** %21
%139 = call i8* @strcpy(i8* %138, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
br label %482
140: ; preds = %11
%141 = load i32*, i32** %22
%142 = getelementptr inbounds i32, i32* %141, i64 1
%143 = load i32, i32* %142
%144 = icmp eq i32 %143, 1
br i1 %144, label %145, label %146
145: ; preds = %140
store i32 1, i32* %45
br label %147
146: ; preds = %140
store i32 0, i32* %45
br label %147
147: ; preds = %146, %145
%148 = load i32*, i32** %22
%149 = getelementptr inbounds i32, i32* %148, i64 2
%150 = load i32, i32* %149
store i32 %150, i32* %44
%151 = load double*, double** %23
%152 = getelementptr inbounds double, double* %151, i64 1
%153 = load double, double* %152
store double %153, double* %37
%154 = load double*, double** %23
%155 = getelementptr inbounds double, double* %154, i64 2
%156 = load double, double* %155
store double %156, double* %40
%157 = load double*, double** %23
%158 = getelementptr inbounds double, double* %157, i64 3
%159 = load double, double* %158
store double %159, double* %28
%160 = load double*, double** %23
%161 = getelementptr inbounds double, double* %160, i64 4
%162 = load double, double* %161
store double %162, double* %29
%163 = load double*, double** %23
%164 = getelementptr inbounds double, double* %163, i64 5
%165 = load double, double* %164
store double %165, double* %36
%166 = load double*, double** %23
%167 = getelementptr inbounds double, double* %166, i64 6
%168 = load double, double* %167
store double %168, double* %26
%169 = load double*, double** %23
%170 = getelementptr inbounds double, double* %169, i64 7
%171 = load double, double* %170
store double %171, double* %27
%172 = load double*, double** %23
%173 = getelementptr inbounds double, double* %172, i64 8
%174 = load double, double* %173
store double %174, double* %34
%175 = load double*, double** %23
%176 = getelementptr inbounds double, double* %175, i64 9
%177 = load double, double* %176
store double %177, double* %35
%178 = load double*, double** %23
%179 = getelementptr inbounds double, double* %178, i64 10
%180 = load double, double* %179
store double %180, double* %41
%181 = load double*, double** %23
%182 = getelementptr inbounds double, double* %181, i64 11
%183 = load double, double* %182
store double %183, double* %42
%184 = load double*, double** %23
%185 = getelementptr inbounds double, double* %184, i64 12
%186 = load double, double* %185
store double %186, double* %38
%187 = load double*, double** %23
%188 = getelementptr inbounds double, double* %187, i64 13
%189 = load double, double* %188
store double %189, double* %43
br label %190
190: ; preds = %147
%191 = load double, double* %36
%192 = load double*, double** %15
%193 = load double, double* %192
%194 = load double, double* %40
%195 = call double @llvm.fmuladd.f64(double %193, double %194, double %191)
store double %195, double* %39
%196 = load i32, i32* %44
%197 = icmp eq i32 %196, 1
br i1 %197, label %198, label %208
198: ; preds = %190
%199 = load double*, double** %13
%200 = load double, double* %199
%201 = load double, double* %39
%202 = fcmp ole double %200, %201
br i1 %202, label %203, label %208
203: ; preds = %198
%204 = load double*, double** %14
%205 = load double, double* %204
%206 = fcmp oge double %205, 0.000000e+00
br i1 %206, label %207, label %208
207: ; preds = %203
store i32 2, i32* %44
br label %208
208: ; preds = %207, %203, %198, %190
%209 = load i32, i32* %45
%210 = icmp ne i32 %209, 0
br i1 %210, label %211, label %224
211: ; preds = %208
%212 = load double*, double** %15
%213 = load double, double* %212
%214 = load double, double* %41
%215 = fcmp ole double %213, %214
br i1 %215, label %221, label %216
216: ; preds = %211
%217 = load double*, double** %15
%218 = load double, double* %217
%219 = load double, double* %42
%220 = fcmp oge double %218, %219
br i1 %220, label %221, label %224
221: ; preds = %216, %211
%222 = load i8*, i8** %21
%223 = call i8* @strcpy(i8* %222, i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.11, i64 0, i64 0))
br label %224
224: ; preds = %221, %216, %208
%225 = load i32, i32* %45
%226 = icmp ne i32 %225, 0
br i1 %226, label %227, label %238
227: ; preds = %224
%228 = load double, double* %42
%229 = load double, double* %41
%230 = fsub double %228, %229
%231 = load double, double* %18
%232 = load double, double* %42
%233 = fmul double %231, %232
%234 = fcmp ole double %230, %233
br i1 %234, label %235, label %238
235: ; preds = %227
%236 = load i8*, i8** %21
%237 = call i8* @strcpy(i8* %236, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.12, i64 0, i64 0))
br label %238
238: ; preds = %235, %227, %224
%239 = load double*, double** %15
%240 = load double, double* %239
%241 = load double*, double** %20
%242 = load double, double* %241
%243 = fcmp oeq double %240, %242
br i1 %243, label %244, label %257
244: ; preds = %238
%245 = load double*, double** %13
%246 = load double, double* %245
%247 = load double, double* %39
%248 = fcmp ole double %246, %247
br i1 %248, label %249, label %257
249: ; preds = %244
%250 = load double*, double** %14
%251 = load double, double* %250
%252 = load double, double* %40
%253 = fcmp ole double %251, %252
br i1 %253, label %254, label %257
254: ; preds = %249
%255 = load i8*, i8** %21
%256 = call i8* @strcpy(i8* %255, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.13, i64 0, i64 0))
br label %257
257: ; preds = %254, %249, %244, %238
%258 = load double*, double** %15
%259 = load double, double* %258
%260 = load double, double* %19
%261 = fcmp oeq double %259, %260
br i1 %261, label %262, label %275
262: ; preds = %257
%263 = load double*, double** %13
%264 = load double, double* %263
%265 = load double, double* %39
%266 = fcmp ogt double %264, %265
br i1 %266, label %272, label %267
267: ; preds = %262
%268 = load double*, double** %14
%269 = load double, double* %268
%270 = load double, double* %40
%271 = fcmp oge double %269, %270
br i1 %271, label %272, label %275
272: ; preds = %267, %262
%273 = load i8*, i8** %21
%274 = call i8* @strcpy(i8* %273, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.14, i64 0, i64 0))
br label %275
275: ; preds = %272, %267, %257
%276 = load double*, double** %13
%277 = load double, double* %276
%278 = load double, double* %39
%279 = fcmp ole double %277, %278
br i1 %279, label %280, label %292
280: ; preds = %275
%281 = load double*, double** %14
%282 = load double, double* %281
%283 = call double @llvm.fabs.f64(double %282)
%284 = load double, double* %17
%285 = load double, double* %37
%286 = fneg double %285
%287 = fmul double %284, %286
%288 = fcmp ole double %283, %287
br i1 %288, label %289, label %292
289: ; preds = %280
%290 = load i8*, i8** %21
%291 = call i8* @strcpy(i8* %290, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.15, i64 0, i64 0))
br label %292
292: ; preds = %289, %280, %275
%293 = load i8*, i8** %21
%294 = call i32 @strncmp(i8* %293, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0), i64 4)
%295 = icmp eq i32 %294, 0
br i1 %295, label %300, label %296
296: ; preds = %292
%297 = load i8*, i8** %21
%298 = call i32 @strncmp(i8* %297, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.17, i64 0, i64 0), i64 4)
%299 = icmp eq i32 %298, 0
br i1 %299, label %300, label %301
300: ; preds = %296, %292
br label %482
301: ; preds = %296
%302 = load i32, i32* %44
%303 = icmp eq i32 %302, 1
br i1 %303, label %304, label %358
304: ; preds = %301
%305 = load double*, double** %13
%306 = load double, double* %305
%307 = load double, double* %26
%308 = fcmp ole double %306, %307
br i1 %308, label %309, label %358
309: ; preds = %304
%310 = load double*, double** %13
%311 = load double, double* %310
%312 = load double, double* %39
%313 = fcmp ogt double %311, %312
br i1 %313, label %314, label %358
314: ; preds = %309
%315 = load double*, double** %13
%316 = load double, double* %315
%317 = load double*, double** %15
%318 = load double, double* %317
%319 = load double, double* %40
%320 = fneg double %318
%321 = call double @llvm.fmuladd.f64(double %320, double %319, double %316)
store double %321, double* %24
%322 = load double, double* %26
%323 = load double, double* %34
%324 = load double, double* %40
%325 = fneg double %323
%326 = call double @llvm.fmuladd.f64(double %325, double %324, double %322)
store double %326, double* %30
%327 = load double, double* %27
%328 = load double, double* %35
%329 = load double, double* %40
%330 = fneg double %328
%331 = call double @llvm.fmuladd.f64(double %330, double %329, double %327)
store double %331, double* %31
%332 = load double*, double** %14
%333 = load double, double* %332
%334 = load double, double* %40
%335 = fsub double %333, %334
store double %335, double* %25
%336 = load double, double* %28
%337 = load double, double* %40
%338 = fsub double %336, %337
store double %338, double* %32
%339 = load double, double* %29
%340 = load double, double* %40
%341 = fsub double %339, %340
store double %341, double* %33
%342 = load double*, double** %15
%343 = call i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, i32*, double*, double*, ...) bitcast (i32 (...)* @dcstep_ to i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, i32*, double*, double*, ...)*)(double* %34, double* %30, double* %32, double* %35, double* %31, double* %33, double* %342, double* %24, double* %25, i32* %45, double* %41, double* %42)
%344 = load double, double* %30
%345 = load double, double* %34
%346 = load double, double* %40
%347 = call double @llvm.fmuladd.f64(double %345, double %346, double %344)
store double %347, double* %26
%348 = load double, double* %31
%349 = load double, double* %35
%350 = load double, double* %40
%351 = call double @llvm.fmuladd.f64(double %349, double %350, double %348)
store double %351, double* %27
%352 = load double, double* %32
%353 = load double, double* %40
%354 = fadd double %352, %353
store double %354, double* %28
%355 = load double, double* %33
%356 = load double, double* %40
%357 = fadd double %355, %356
store double %357, double* %29
br label %363
358: ; preds = %309, %304, %301
%359 = load double*, double** %15
%360 = load double*, double** %13
%361 = load double*, double** %14
%362 = call i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, i32*, double*, double*, ...) bitcast (i32 (...)* @dcstep_ to i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, i32*, double*, double*, ...)*)(double* %34, double* %26, double* %28, double* %35, double* %27, double* %29, double* %359, double* %360, double* %361, i32* %45, double* %41, double* %42)
br label %363
363: ; preds = %358, %314
%364 = load i32, i32* %45
%365 = icmp ne i32 %364, 0
br i1 %365, label %366, label %389
366: ; preds = %363
%367 = load double, double* %35
%368 = load double, double* %34
%369 = fsub double %367, %368
store double %369, double* %46
%370 = load double, double* %46
%371 = call double @llvm.fabs.f64(double %370)
%372 = load double, double* %43
%373 = fmul double %372, 6.600000e-01
%374 = fcmp oge double %371, %373
br i1 %374, label %375, label %382
375: ; preds = %366
%376 = load double, double* %34
%377 = load double, double* %35
%378 = load double, double* %34
%379 = fsub double %377, %378
%380 = call double @llvm.fmuladd.f64(double %379, double 5.000000e-01, double %376)
%381 = load double*, double** %15
store double %380, double* %381
br label %382
382: ; preds = %375, %366
%383 = load double, double* %38
store double %383, double* %43
%384 = load double, double* %35
%385 = load double, double* %34
%386 = fsub double %384, %385
store double %386, double* %46
%387 = load double, double* %46
%388 = call double @llvm.fabs.f64(double %387)
store double %388, double* %38
br label %389
389: ; preds = %382, %363
%390 = load i32, i32* %45
%391 = icmp ne i32 %390, 0
br i1 %391, label %392, label %411
392: ; preds = %389
%393 = load double, double* %34
%394 = load double, double* %35
%395 = fcmp ole double %393, %394
br i1 %395, label %396, label %398
396: ; preds = %392
%397 = load double, double* %34
br label %400
398: ; preds = %392
%399 = load double, double* %35
br label %400
400: ; preds = %398, %396
%401 = phi double [ %397, %396 ], [ %399, %398 ]
store double %401, double* %41
%402 = load double, double* %34
%403 = load double, double* %35
%404 = fcmp oge double %402, %403
br i1 %404, label %405, label %407
405: ; preds = %400
%406 = load double, double* %34
br label %409
407: ; preds = %400
%408 = load double, double* %35
br label %409
409: ; preds = %407, %405
%410 = phi double [ %406, %405 ], [ %408, %407 ]
store double %410, double* %42
br label %426
411: ; preds = %389
%412 = load double*, double** %15
%413 = load double, double* %412
%414 = load double*, double** %15
%415 = load double, double* %414
%416 = load double, double* %34
%417 = fsub double %415, %416
%418 = call double @llvm.fmuladd.f64(double %417, double 1.100000e+00, double %413)
store double %418, double* %41
%419 = load double*, double** %15
%420 = load double, double* %419
%421 = load double*, double** %15
%422 = load double, double* %421
%423 = load double, double* %34
%424 = fsub double %422, %423
%425 = call double @llvm.fmuladd.f64(double %424, double 4.000000e+00, double %420)
store double %425, double* %42
br label %426
426: ; preds = %411, %409
%427 = load double*, double** %15
%428 = load double, double* %427
%429 = load double, double* %19
%430 = fcmp oge double %428, %429
br i1 %430, label %431, label %434
431: ; preds = %426
%432 = load double*, double** %15
%433 = load double, double* %432
br label %436
434: ; preds = %426
%435 = load double, double* %19
br label %436
436: ; preds = %434, %431
%437 = phi double [ %433, %431 ], [ %435, %434 ]
%438 = load double*, double** %15
store double %437, double* %438
%439 = load double*, double** %15
%440 = load double, double* %439
%441 = load double*, double** %20
%442 = load double, double* %441
%443 = fcmp ole double %440, %442
br i1 %443, label %444, label %447
444: ; preds = %436
%445 = load double*, double** %15
%446 = load double, double* %445
br label %450
447: ; preds = %436
%448 = load double*, double** %20
%449 = load double, double* %448
br label %450
450: ; preds = %447, %444
%451 = phi double [ %446, %444 ], [ %449, %447 ]
%452 = load double*, double** %15
store double %451, double* %452
%453 = load i32, i32* %45
%454 = icmp ne i32 %453, 0
br i1 %454, label %455, label %465
455: ; preds = %450
%456 = load double*, double** %15
%457 = load double, double* %456
%458 = load double, double* %41
%459 = fcmp ole double %457, %458
br i1 %459, label %476, label %460
460: ; preds = %455
%461 = load double*, double** %15
%462 = load double, double* %461
%463 = load double, double* %42
%464 = fcmp oge double %462, %463
br i1 %464, label %476, label %465
465: ; preds = %460, %450
%466 = load i32, i32* %45
%467 = icmp ne i32 %466, 0
br i1 %467, label %468, label %479
468: ; preds = %465
%469 = load double, double* %42
%470 = load double, double* %41
%471 = fsub double %469, %470
%472 = load double, double* %18
%473 = load double, double* %42
%474 = fmul double %472, %473
%475 = fcmp ole double %471, %474
br i1 %475, label %476, label %479
476: ; preds = %468, %460, %455
%477 = load double, double* %34
%478 = load double*, double** %15
store double %477, double* %478
br label %479
479: ; preds = %476, %468, %465
%480 = load i8*, i8** %21
%481 = call i8* @strcpy(i8* %480, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
br label %482
482: ; preds = %479, %300, %115
%483 = load i32, i32* %45
%484 = icmp ne i32 %483, 0
br i1 %484, label %485, label %488
485: ; preds = %482
%486 = load i32*, i32** %22
%487 = getelementptr inbounds i32, i32* %486, i64 1
store i32 1, i32* %487
br label %491
488: ; preds = %482
%489 = load i32*, i32** %22
%490 = getelementptr inbounds i32, i32* %489, i64 1
store i32 0, i32* %490
br label %491
491: ; preds = %488, %485
%492 = load i32, i32* %44
%493 = load i32*, i32** %22
%494 = getelementptr inbounds i32, i32* %493, i64 2
store i32 %492, i32* %494
%495 = load double, double* %37
%496 = load double*, double** %23
%497 = getelementptr inbounds double, double* %496, i64 1
store double %495, double* %497
%498 = load double, double* %40
%499 = load double*, double** %23
%500 = getelementptr inbounds double, double* %499, i64 2
store double %498, double* %500
%501 = load double, double* %28
%502 = load double*, double** %23
%503 = getelementptr inbounds double, double* %502, i64 3
store double %501, double* %503
%504 = load double, double* %29
%505 = load double*, double** %23
%506 = getelementptr inbounds double, double* %505, i64 4
store double %504, double* %506
%507 = load double, double* %36
%508 = load double*, double** %23
%509 = getelementptr inbounds double, double* %508, i64 5
store double %507, double* %509
%510 = load double, double* %26
%511 = load double*, double** %23
%512 = getelementptr inbounds double, double* %511, i64 6
store double %510, double* %512
%513 = load double, double* %27
%514 = load double*, double** %23
%515 = getelementptr inbounds double, double* %514, i64 7
store double %513, double* %515
%516 = load double, double* %34
%517 = load double*, double** %23
%518 = getelementptr inbounds double, double* %517, i64 8
store double %516, double* %518
%519 = load double, double* %35
%520 = load double*, double** %23
%521 = getelementptr inbounds double, double* %520, i64 9
store double %519, double* %521
%522 = load double, double* %41
%523 = load double*, double** %23
%524 = getelementptr inbounds double, double* %523, i64 10
store double %522, double* %524
%525 = load double, double* %42
%526 = load double*, double** %23
%527 = getelementptr inbounds double, double* %526, i64 11
store double %525, double* %527
%528 = load double, double* %38
%529 = load double*, double** %23
%530 = getelementptr inbounds double, double* %529, i64 12
store double %528, double* %530
%531 = load double, double* %43
%532 = load double*, double** %23
%533 = getelementptr inbounds double, double* %532, i64 13
store double %531, double* %533
store i32 0, i32* %12
br label %534
534: ; preds = %491, %114
%535 = load i32, i32* %12
ret i32 %535
}

LLVM IR (-O2):
@.str = [6 x i8] c"START\00"
@.str.1 = [23 x i8] c"ERROR: STP .LT. STPMIN\00"
@.str.2 = [23 x i8] c"ERROR: STP .GT. STPMAX\00"
@.str.3 = [27 x i8] c"ERROR: INITIAL G .GE. ZERO\00"
@.str.4 = [22 x i8] c"ERROR: FTOL .LT. ZERO\00"
@.str.5 = [22 x i8] c"ERROR: GTOL .LT. ZERO\00"
@.str.6 = [22 x i8] c"ERROR: XTOL .LT. ZERO\00"
@.str.7 = [24 x i8] c"ERROR: STPMIN .LT. ZERO\00"
@.str.8 = [26 x i8] c"ERROR: STPMAX .LT. STPMIN\00"
@.str.9 = [6 x i8] c"ERROR\00"
@.str.10 = [3 x i8] c"FG\00"
@.str.11 = [42 x i8] c"WARNING: ROUNDING ERRORS PREVENT PROGRESS\00"
@.str.12 = [29 x i8] c"WARNING: XTOL TEST SATISFIED\00"
@.str.13 = [22 x i8] c"WARNING: STP = STPMAX\00"
@.str.14 = [22 x i8] c"WARNING: STP = STPMIN\00"
@.str.15 = [12 x i8] c"CONVERGENCE\00"
@.str.16 = [5 x i8] c"WARN\00"
@.str.17 = [5 x i8] c"CONV\00"
define i32 @dcsrch_(double* %0, double* %1, double* %2, double %3, double %4, double %5, double %6, double* nocapture %7, i8* nocapture %8, i32* nocapture %9, double* %10) {
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca i32
%27 = bitcast double* %12 to i8*
%28 = bitcast double* %13 to i8*
%29 = bitcast double* %14 to i8*
%30 = bitcast double* %15 to i8*
%31 = bitcast double* %16 to i8*
%32 = bitcast double* %17 to i8*
%33 = bitcast double* %18 to i8*
%34 = bitcast double* %19 to i8*
%35 = bitcast double* %20 to i8*
%36 = bitcast double* %21 to i8*
%37 = bitcast double* %22 to i8*
%38 = bitcast double* %23 to i8*
%39 = bitcast double* %24 to i8*
%40 = bitcast double* %25 to i8*
%41 = bitcast i32* %26 to i8*
%42 = tail call i32 @strncmp(i8* dereferenceable(1) %8, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), i64 5)
%43 = icmp eq i32 %42, 0
br i1 %43, label %44, label %86
44: ; preds = %11
%45 = load double, double* %2
%46 = fcmp olt double %45, %6
br i1 %46, label %47, label %49
47: ; preds = %44
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(23) %8, i8* align 1 dereferenceable(23) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0), i64 23, i1 false)
%48 = load double, double* %2
br label %49
49: ; preds = %47, %44
%50 = phi double [ %48, %47 ], [ %45, %44 ]
%51 = load double, double* %7
%52 = fcmp ogt double %50, %51
br i1 %52, label %53, label %54
53: ; preds = %49
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(23) %8, i8* align 1 dereferenceable(23) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.2, i64 0, i64 0), i64 23, i1 false)
br label %54
54: ; preds = %53, %49
%55 = load double, double* %1
%56 = fcmp ult double %55, 0.000000e+00
br i1 %56, label %58, label %57
57: ; preds = %54
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(27) %8, i8* align 1 dereferenceable(27) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.3, i64 0, i64 0), i64 27, i1 false)
br label %58
58: ; preds = %57, %54
%59 = fcmp olt double %3, 0.000000e+00
br i1 %59, label %60, label %61
60: ; preds = %58
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(22) %8, i8* align 1 dereferenceable(22) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i64 0, i64 0), i64 22, i1 false)
br label %61
61: ; preds = %60, %58
%62 = fcmp olt double %4, 0.000000e+00
br i1 %62, label %63, label %64
63: ; preds = %61
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(22) %8, i8* align 1 dereferenceable(22) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0), i64 22, i1 false)
br label %64
64: ; preds = %63, %61
%65 = fcmp olt double %5, 0.000000e+00
br i1 %65, label %66, label %67
66: ; preds = %64
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(22) %8, i8* align 1 dereferenceable(22) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.6, i64 0, i64 0), i64 22, i1 false)
br label %67
67: ; preds = %66, %64
%68 = fcmp olt double %6, 0.000000e+00
br i1 %68, label %69, label %70
69: ; preds = %67
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(24) %8, i8* align 1 dereferenceable(24) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0), i64 24, i1 false)
br label %70
70: ; preds = %69, %67
%71 = load double, double* %7
%72 = fcmp olt double %71, %6
br i1 %72, label %73, label %74
73: ; preds = %70
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(26) %8, i8* align 1 dereferenceable(26) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.8, i64 0, i64 0), i64 26, i1 false)
br label %74
74: ; preds = %73, %70
%75 = tail call i32 @strncmp(i8* dereferenceable(1) %8, i8* dereferenceable(6) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.9, i64 0, i64 0), i64 5)
%76 = icmp eq i32 %75, 0
br i1 %76, label %293, label %77
77: ; preds = %74
store i32 0, i32* %26
%78 = load double, double* %0
%79 = load double, double* %1
%80 = fmul double %79, %3
%81 = load double, double* %7
%82 = fsub double %81, %6
%83 = fmul double %82, 2.000000e+00
store double 0.000000e+00, double* %22
store double %78, double* %14
store double %79, double* %16
store double 0.000000e+00, double* %23
store double %78, double* %15
store double %79, double* %17
store double 0.000000e+00, double* %24
%84 = load double, double* %2
%85 = tail call double @llvm.fmuladd.f64(double %84, double 4.000000e+00, double %84)
store double %85, double* %25
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(3) %8, i8* align 1 dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0), i64 3, i1 false)
br label %262
86: ; preds = %11
%87 = load i32, i32* %9
%88 = icmp eq i32 %87, 1
%89 = zext i1 %88 to i32
store i32 %89, i32* %26
%90 = getelementptr inbounds i32, i32* %9, i64 1
%91 = load i32, i32* %90
%92 = load double, double* %10
%93 = getelementptr inbounds double, double* %10, i64 1
%94 = load double, double* %93
%95 = getelementptr inbounds double, double* %10, i64 2
%96 = load double, double* %95
store double %96, double* %16
%97 = getelementptr inbounds double, double* %10, i64 3
%98 = load double, double* %97
store double %98, double* %17
%99 = getelementptr inbounds double, double* %10, i64 4
%100 = load double, double* %99
%101 = getelementptr inbounds double, double* %10, i64 5
%102 = load double, double* %101
store double %102, double* %14
%103 = getelementptr inbounds double, double* %10, i64 6
%104 = load double, double* %103
store double %104, double* %15
%105 = getelementptr inbounds double, double* %10, i64 7
%106 = load double, double* %105
store double %106, double* %22
%107 = getelementptr inbounds double, double* %10, i64 8
%108 = load double, double* %107
store double %108, double* %23
%109 = getelementptr inbounds double, double* %10, i64 9
%110 = load double, double* %109
store double %110, double* %24
%111 = getelementptr inbounds double, double* %10, i64 10
%112 = load double, double* %111
store double %112, double* %25
%113 = getelementptr inbounds double, double* %10, i64 11
%114 = load double, double* %113
%115 = getelementptr inbounds double, double* %10, i64 12
%116 = load double, double* %115
%117 = load double, double* %2
%118 = tail call double @llvm.fmuladd.f64(double %117, double %94, double %100)
%119 = icmp eq i32 %91, 1
br i1 %119, label %120, label %127
120: ; preds = %86
%121 = load double, double* %0
%122 = fcmp ugt double %121, %118
br i1 %122, label %127, label %123
123: ; preds = %120
%124 = load double, double* %1
%125 = fcmp ult double %124, 0.000000e+00
br i1 %125, label %127, label %126
126: ; preds = %123
br label %127
127: ; preds = %126, %123, %120, %86
%128 = phi i32 [ 2, %126 ], [ 1, %123 ], [ 1, %120 ], [ %91, %86 ]
br i1 %88, label %129, label %139
129: ; preds = %127
%130 = fcmp ugt double %117, %110
%131 = fcmp ult double %117, %112
%132 = select i1 %130, i1 %131, i1 false
br i1 %132, label %134, label %133
133: ; preds = %129
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(42) %8, i8* align 1 dereferenceable(42) getelementptr inbounds ([42 x i8], [42 x i8]* @.str.11, i64 0, i64 0), i64 42, i1 false)
br label %134
134: ; preds = %129, %133
%135 = fsub double %112, %110
%136 = fmul double %112, %5
%137 = fcmp ugt double %135, %136
br i1 %137, label %139, label %138
138: ; preds = %134
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(29) %8, i8* align 1 dereferenceable(29) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.12, i64 0, i64 0), i64 29, i1 false)
br label %139
139: ; preds = %127, %138, %134
%140 = load double, double* %2
%141 = load double, double* %7
%142 = fcmp oeq double %140, %141
br i1 %142, label %143, label %151
143: ; preds = %139
%144 = load double, double* %0
%145 = fcmp ugt double %144, %118
br i1 %145, label %151, label %146
146: ; preds = %143
%147 = load double, double* %1
%148 = fcmp ugt double %147, %94
br i1 %148, label %151, label %149
149: ; preds = %146
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(22) %8, i8* align 1 dereferenceable(22) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.13, i64 0, i64 0), i64 22, i1 false)
%150 = load double, double* %2
br label %151
151: ; preds = %149, %146, %143, %139
%152 = phi double [ %150, %149 ], [ %140, %146 ], [ %140, %143 ], [ %140, %139 ]
%153 = fcmp oeq double %152, %6
br i1 %153, label %154, label %161
154: ; preds = %151
%155 = load double, double* %0
%156 = fcmp ogt double %155, %118
br i1 %156, label %160, label %157
157: ; preds = %154
%158 = load double, double* %1
%159 = fcmp ult double %158, %94
br i1 %159, label %161, label %160
160: ; preds = %157, %154
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(22) %8, i8* align 1 dereferenceable(22) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.14, i64 0, i64 0), i64 22, i1 false)
br label %161
161: ; preds = %160, %157, %151
%162 = load double, double* %0
%163 = fcmp ugt double %162, %118
br i1 %163, label %171, label %164
164: ; preds = %161
%165 = load double, double* %1
%166 = tail call double @llvm.fabs.f64(double %165)
%167 = fneg double %92
%168 = fmul double %167, %4
%169 = fcmp ugt double %166, %168
br i1 %169, label %171, label %170
170: ; preds = %164
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 dereferenceable(12) %8, i8* align 1 dereferenceable(12) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.15, i64 0, i64 0), i64 12, i1 false)
br label %171
171: ; preds = %170, %164, %161
%172 = tail call i32 @strncmp(i8* dereferenceable(1) %8, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0), i64 4)
%173 = icmp eq i32 %172, 0
br i1 %173, label %262, label %174
174: ; preds = %171
%175 = tail call i32 @strncmp(i8* dereferenceable(1) %8, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.17, i64 0, i64 0), i64 4)
%176 = icmp eq i32 %175, 0
br i1 %176, label %262, label %177
177: ; preds = %174
%178 = icmp eq i32 %128, 1
br i1 %178, label %179, label %207
179: ; preds = %177
%180 = load double, double* %0
%181 = fcmp ole double %180, %102
%182 = fcmp ogt double %180, %118
%183 = select i1 %181, i1 %182, i1 false
br i1 %183, label %184, label %207
184: ; preds = %179
%185 = load double, double* %2
%186 = fneg double %185
%187 = tail call double @llvm.fmuladd.f64(double %186, double %94, double %180)
store double %187, double* %12
%188 = fneg double %106
%189 = tail call double @llvm.fmuladd.f64(double %188, double %94, double %102)
store double %189, double* %18
%190 = fneg double %108
%191 = tail call double @llvm.fmuladd.f64(double %190, double %94, double %104)
store double %191, double* %19
%192 = load double, double* %1
%193 = fsub double %192, %94
store double %193, double* %13
%194 = fsub double %96, %94
store double %194, double* %20
%195 = fsub double %98, %94
store double %195, double* %21
%196 = call i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, i32*, double*, double*, ...) bitcast (i32 (...)* @dcstep_ to i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, i32*, double*, double*, ...)*)(double* %22, double* %18, double* %20, double* %23, double* %19, double* %21, double* %2, double* %12, double* %13, i32* %26, double* %24, double* %25)
%197 = load double, double* %18
%198 = load double, double* %22
%199 = call double @llvm.fmuladd.f64(double %198, double %94, double %197)
store double %199, double* %14
%200 = load double, double* %19
%201 = load double, double* %23
%202 = call double @llvm.fmuladd.f64(double %201, double %94, double %200)
store double %202, double* %15
%203 = load double, double* %20
%204 = fadd double %94, %203
store double %204, double* %16
%205 = load double, double* %21
%206 = fadd double %94, %205
store double %206, double* %17
br label %209
207: ; preds = %179, %177
%208 = call i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, i32*, double*, double*, ...) bitcast (i32 (...)* @dcstep_ to i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, i32*, double*, double*, ...)*)(double* %22, double* %14, double* %16, double* %23, double* %15, double* %17, double* %2, double* %0, double* %1, i32* %26, double* %24, double* %25)
br label %209
209: ; preds = %207, %184
%210 = load i32, i32* %26
%211 = icmp eq i32 %210, 0
br i1 %211, label %229, label %212
212: ; preds = %209
%213 = load double, double* %23
%214 = load double, double* %22
%215 = fsub double %213, %214
%216 = call double @llvm.fabs.f64(double %215)
%217 = fmul double %116, 6.600000e-01
%218 = fcmp ult double %216, %217
br i1 %218, label %219, label %221
219: ; preds = %212
%220 = load double, double* %2
br label %223
221: ; preds = %212
%222 = call double @llvm.fmuladd.f64(double %215, double 5.000000e-01, double %214)
br label %223
223: ; preds = %219, %221
%224 = phi double [ %220, %219 ], [ %222, %221 ]
%225 = fcmp ole double %214, %213
%226 = select i1 %225, double %214, double %213
store double %226, double* %24
%227 = fcmp oge double %214, %213
%228 = select i1 %227, double %214, double %213
br label %235
229: ; preds = %209
%230 = load double, double* %2
%231 = load double, double* %22
%232 = fsub double %230, %231
%233 = call double @llvm.fmuladd.f64(double %232, double 1.100000e+00, double %230)
store double %233, double* %24
%234 = call double @llvm.fmuladd.f64(double %232, double 4.000000e+00, double %230)
br label %235
235: ; preds = %229, %223
%236 = phi double [ %231, %229 ], [ %214, %223 ]
%237 = phi double [ %233, %229 ], [ %226, %223 ]
%238 = phi double [ %230, %229 ], [ %224, %223 ]
%239 = phi double [ %116, %229 ], [ %114, %223 ]
%240 = phi double [ %114, %229 ], [ %216, %223 ]
%241 = phi double [ %234, %229 ], [ %228, %223 ]
store double %241, double* %25
%242 = fcmp oge double %238, %6
%243 = select i1 %242, double %238, double %6
store double %243, double* %2
%244 = load double, double* %7
%245 = fcmp ole double %243, %244
%246 = select i1 %245, double %243, double %244
store double %246, double* %2
br i1 %211, label %256, label %247
247: ; preds = %235
%248 = fcmp ugt double %246, %237
%249 = fcmp ult double %246, %241
%250 = select i1 %248, i1 %249, i1 false
br i1 %250, label %251, label %255
251: ; preds = %247
%252 = fsub double %241, %237
%253 = fmul double %241, %5
%254 = fcmp ugt double %252, %253
br i1 %254, label %256, label %255
255: ; preds = %251, %247
store double %236, double* %2
br label %256
256: ; preds = %235, %255, %251
%257 = load double, double* %16
%258 = load double, double* %17
%259 = load double, double* %14
%260 = load double, double* %15
%261 = load double, double* %23
br label %262
262: ; preds = %171, %174, %256, %77
%263 = phi double [ %85, %77 ], [ %112, %171 ], [ %112, %174 ], [ %241, %256 ]
%264 = phi double [ 0.000000e+00, %77 ], [ %110, %171 ], [ %110, %174 ], [ %237, %256 ]
%265 = phi double [ 0.000000e+00, %77 ], [ %108, %171 ], [ %108, %174 ], [ %261, %256 ]
%266 = phi double [ 0.000000e+00, %77 ], [ %106, %171 ], [ %106, %174 ], [ %236, %256 ]
%267 = phi double [ %78, %77 ], [ %104, %171 ], [ %104, %174 ], [ %260, %256 ]
%268 = phi double [ %78, %77 ], [ %102, %171 ], [ %102, %174 ], [ %259, %256 ]
%269 = phi double [ %79, %77 ], [ %98, %171 ], [ %98, %174 ], [ %258, %256 ]
%270 = phi double [ %79, %77 ], [ %96, %171 ], [ %96, %174 ], [ %257, %256 ]
%271 = phi i32 [ 0, %77 ], [ %89, %171 ], [ %89, %174 ], [ %210, %256 ]
%272 = phi double [ %78, %77 ], [ %100, %171 ], [ %100, %174 ], [ %100, %256 ]
%273 = phi double [ %79, %77 ], [ %92, %171 ], [ %92, %174 ], [ %92, %256 ]
%274 = phi double [ %82, %77 ], [ %114, %171 ], [ %114, %174 ], [ %240, %256 ]
%275 = phi double [ %80, %77 ], [ %94, %171 ], [ %94, %174 ], [ %94, %256 ]
%276 = phi double [ %83, %77 ], [ %116, %171 ], [ %116, %174 ], [ %239, %256 ]
%277 = phi i32 [ 1, %77 ], [ %128, %171 ], [ %128, %174 ], [ %128, %256 ]
%278 = icmp ne i32 %271, 0
%279 = zext i1 %278 to i32
store i32 %279, i32* %9
%280 = getelementptr inbounds i32, i32* %9, i64 1
store i32 %277, i32* %280
store double %273, double* %10
%281 = getelementptr inbounds double, double* %10, i64 1
store double %275, double* %281
%282 = getelementptr inbounds double, double* %10, i64 2
store double %270, double* %282
%283 = getelementptr inbounds double, double* %10, i64 3
store double %269, double* %283
%284 = getelementptr inbounds double, double* %10, i64 4
store double %272, double* %284
%285 = getelementptr inbounds double, double* %10, i64 5
store double %268, double* %285
%286 = getelementptr inbounds double, double* %10, i64 6
store double %267, double* %286
%287 = getelementptr inbounds double, double* %10, i64 7
store double %266, double* %287
%288 = getelementptr inbounds double, double* %10, i64 8
store double %265, double* %288
%289 = getelementptr inbounds double, double* %10, i64 9
store double %264, double* %289
%290 = getelementptr inbounds double, double* %10, i64 10
store double %263, double* %290
%291 = getelementptr inbounds double, double* %10, i64 11
store double %274, double* %291
%292 = getelementptr inbounds double, double* %10, i64 12
store double %276, double* %292
br label %293
293: ; preds = %74, %262
ret i32 0
}