#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double DBL_EPSILON;
double fabs(double);
double log10(double);
double sqrt(double const);
int chkder_(int m, int n, double *x, double *fvec, double *fjac, int ldfjac,
            double *xp, double *fvecp, int mode, double *err) {
  const double epsmch = DBL_EPSILON;
  double temp, eps = sqrt(epsmch);
  int i, j;
  if (mode == 1) {
    for (j = 0; j < n; j++) {
      temp = eps * fabs(x[j]);
      if (temp == 0.0) {
        temp = eps;
      }
      xp[j] = x[j] + temp;
    }
  } else {
    const double factor = 100;
    double d, epsf = factor * epsmch;
    double epslog = log10(eps);
    for (i = 0; i < m; i++) {
      err[i] = 0.0;
    }
    for (j = 0; j < n; j++) {
      temp = fabs(x[j]);
      if (temp == 0.0) {
        temp = 1.0;
      }
      for (i = 0; i < m; i++) {
        err[i] += temp * fjac[i + j * ldfjac];
      }
    }
    for (i = 0; i < m; i++) {
      temp = 1.0;
      d = fabs(fvecp[i] - fvec[i]);
      if (fvec[i] != 0.0 && fvecp[i] != 0.0 && d >= epsf * fabs(fvec[i])) {
        d = fabs((fvecp[i] - fvec[i]) / eps - err[i]);
        temp = eps * d / (fabs(fvec[i]) + fabs(fvecp[i]));
      }
      err[i] = 1.0;
      if (temp > epsmch && temp < eps) {
        err[i] = (log10(temp) - epslog) / epslog;
      }
      if (temp >= eps) {
        err[i] = 0.0;
      }
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<chkder_>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9d,-0x24(%rbp)
mov    0x2e94(%rip),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
call   1040 <sqrt@plt>
movsd  %xmm0,-0x40(%rbp)
cmpl   $0x1,0x20(%rbp)
jne    1203 <chkder_+0xe3>
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    11fe <chkder_+0xde>
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0xe6e(%rip),%xmm2
pand   %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11d1 <chkder_+0xb1>
jp     11d1 <chkder_+0xb1>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x38(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    117d <chkder_+0x5d>
jmp    14fb <chkder_+0x3db>
movsd  0xdf5(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xde8(%rip),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x40(%rbp),%xmm0
call   1030 <log10@plt>
movsd  %xmm0,-0x68(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1262 <chkder_+0x142>
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1238 <chkder_+0x118>
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1322 <chkder_+0x202>
mov    -0x10(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movaps 0xd87(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12b7 <chkder_+0x197>
jp     12b7 <chkder_+0x197>
movsd  0xd56(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    130f <chkder_+0x1ef>
movsd  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
mov    -0x48(%rbp),%edx
imul   -0x24(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    12be <chkder_+0x19e>
jmp    1314 <chkder_+0x1f4>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1269 <chkder_+0x149>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    14f6 <chkder_+0x3d6>
movsd  0xccb(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movaps 0xcad(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1391 <chkder_+0x271>
jp     1391 <chkder_+0x271>
jmp    1469 <chkder_+0x349>
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13b6 <chkder_+0x296>
jp     13b6 <chkder_+0x296>
jmp    1469 <chkder_+0x349>
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
mov    -0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movaps 0xc3c(%rip),%xmm3
pand   %xmm3,%xmm2
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jb     1469 <chkder_+0x349>
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
divsd  -0x40(%rbp),%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movaps 0xbf7(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x40(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0xbd0(%rip),%xmm2
pand   %xmm2,%xmm1
mov    0x18(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movaps 0xbb8(%rip),%xmm3
pand   %xmm3,%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  0xb8f(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x38(%rbp),%xmm0
ucomisd -0x30(%rbp),%xmm0
jbe    14c3 <chkder_+0x3a3>
movsd  -0x38(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    14c3 <chkder_+0x3a3>
movsd  -0x38(%rbp),%xmm0
call   1030 <log10@plt>
subsd  -0x68(%rbp),%xmm0
divsd  -0x68(%rbp),%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x38(%rbp),%xmm0
ucomisd -0x40(%rbp),%xmm0
jb     14e3 <chkder_+0x3c3>
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
jmp    14e8 <chkder_+0x3c8>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1329 <chkder_+0x209>
jmp    14fb <chkder_+0x3db>
xor    %eax,%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<chkder_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %r9d,%ebp
mov    %r8,(%rsp)
mov    %rcx,0x20(%rsp)
mov    %rdx,%r15
mov    %esi,%r13d
mov    %edi,%r12d
mov    0xb0(%rsp),%ebx
mov    0x2e87(%rip),%rax
movsd  (%rax),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movsd  %xmm0,0x10(%rsp)
jb     143a <chkder_+0x30a>
sqrtsd %xmm0,%xmm0
cmp    $0x1,%ebx
je     1448 <chkder_+0x318>
mov    0xb8(%rsp),%rbx
movapd %xmm0,0x50(%rsp)
call   1040 <log10@plt>
movsd  %xmm0,0x48(%rsp)
mov    %r12d,%r14d
test   %r12d,%r12d
jle    11b9 <chkder_+0x89>
lea    0x0(,%r14,8),%rdx
mov    %rbx,%rdi
xor    %esi,%esi
call   1030 <memset@plt>
test   %r13d,%r13d
movapd 0x50(%rsp),%xmm10
mov    (%rsp),%r11
jle    1558 <chkder_+0x428>
movslq %ebp,%rcx
mov    %r13d,%ebp
lea    (%rbx,%r14,8),%rax
mov    %rax,0x8(%rsp)
mov    %r14d,%eax
and    $0xfffffffc,%eax
mov    %rax,0x40(%rsp)
add    $0xfffffffffffffffc,%rax
mov    %rax,0x38(%rsp)
mov    %rax,%rdx
shr    $0x2,%rdx
add    $0x1,%rdx
mov    %rdx,%rax
mov    %rdx,0x30(%rsp)
and    $0xfffffffffffffffe,%rdx
mov    %rdx,0x18(%rsp)
mov    %r14,%r13
neg    %r13
lea    0x30(%r11),%rdi
lea    0x0(,%rcx,8),%rsi
lea    0x8(%r11),%r9
xor    %r8d,%r8d
movapd 0xde2(%rip),%xmm8
xorpd  %xmm9,%xmm9
movsd  0xdcd(%rip),%xmm2
mov    %r13,0x28(%rsp)
jmp    1263 <chkder_+0x133>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%r8
add    %rsi,%rdi
add    %rsi,%r9
cmp    %rbp,%r8
je     1558 <chkder_+0x428>
test   %r12d,%r12d
jle    1250 <chkder_+0x120>
mov    %r8,%r10
imul   %rcx,%r10
movsd  (%r15,%r8,8),%xmm3
movapd %xmm3,%xmm4
andpd  %xmm8,%xmm4
cmpeqsd %xmm9,%xmm3
movapd %xmm3,%xmm5
andnpd %xmm4,%xmm5
andpd  %xmm2,%xmm3
orpd   %xmm5,%xmm3
cmp    $0x4,%r12d
jb     12b6 <chkder_+0x186>
lea    (%r10,%r14,1),%rax
lea    (%r11,%rax,8),%rax
cmp    %rbx,%rax
jbe    1329 <chkder_+0x1f9>
lea    (%r11,%r10,8),%rax
cmp    0x8(%rsp),%rax
jae    1329 <chkder_+0x1f9>
xor    %edx,%edx
mov    %rdx,%rax
test   $0x1,%r14b
je     12df <chkder_+0x1af>
add    %rdx,%r10
movsd  (%r11,%r10,8),%xmm0
mulsd  %xmm3,%xmm0
addsd  (%rbx,%rdx,8),%xmm0
movsd  %xmm0,(%rbx,%rdx,8)
mov    %rdx,%rax
or     $0x1,%rax
not    %rdx
cmp    %r13,%rdx
je     1250 <chkder_+0x120>
nopl   0x0(%rax,%rax,1)
movsd  -0x8(%r9,%rax,8),%xmm0
mulsd  %xmm3,%xmm0
addsd  (%rbx,%rax,8),%xmm0
movsd  %xmm0,(%rbx,%rax,8)
movsd  (%r9,%rax,8),%xmm0
mulsd  %xmm3,%xmm0
addsd  0x8(%rbx,%rax,8),%xmm0
movsd  %xmm0,0x8(%rbx,%rax,8)
add    $0x2,%rax
cmp    %rax,%r14
jne    12f0 <chkder_+0x1c0>
jmp    1250 <chkder_+0x120>
movapd %xmm3,%xmm4
unpcklpd %xmm3,%xmm4
cmpq   $0x0,0x38(%rsp)
je     142e <chkder_+0x2fe>
mov    0x18(%rsp),%r13
xor    %r11d,%r11d
cs nopw 0x0(%rax,%rax,1)
nop
movupd -0x30(%rdi,%r11,8),%xmm5
movupd -0x20(%rdi,%r11,8),%xmm6
mulpd  %xmm4,%xmm5
movupd (%rbx,%r11,8),%xmm7
addpd  %xmm5,%xmm7
movupd 0x10(%rbx,%r11,8),%xmm5
movupd 0x20(%rbx,%r11,8),%xmm0
movupd 0x30(%rbx,%r11,8),%xmm1
mulpd  %xmm4,%xmm6
addpd  %xmm5,%xmm6
movupd %xmm7,(%rbx,%r11,8)
movupd %xmm6,0x10(%rbx,%r11,8)
movupd -0x10(%rdi,%r11,8),%xmm5
movupd (%rdi,%r11,8),%xmm6
mulpd  %xmm4,%xmm5
addpd  %xmm0,%xmm5
mulpd  %xmm4,%xmm6
addpd  %xmm1,%xmm6
movupd %xmm5,0x20(%rbx,%r11,8)
movupd %xmm6,0x30(%rbx,%r11,8)
add    $0x8,%r11
add    $0xfffffffffffffffe,%r13
jne    1350 <chkder_+0x220>
testb  $0x1,0x30(%rsp)
je     140f <chkder_+0x2df>
lea    (%r11,%r10,1),%rax
mov    (%rsp),%rdx
movupd (%rdx,%rax,8),%xmm0
movupd 0x10(%rdx,%rax,8),%xmm1
movupd (%rbx,%r11,8),%xmm5
movupd 0x10(%rbx,%r11,8),%xmm6
mulpd  %xmm4,%xmm0
addpd  %xmm5,%xmm0
mulpd  %xmm4,%xmm1
addpd  %xmm6,%xmm1
movupd %xmm0,(%rbx,%r11,8)
movupd %xmm1,0x10(%rbx,%r11,8)
mov    0x40(%rsp),%rax
mov    %rax,%rdx
cmp    %r14,%rax
mov    (%rsp),%r11
mov    0x28(%rsp),%r13
je     1250 <chkder_+0x120>
jmp    12b8 <chkder_+0x188>
xor    %r11d,%r11d
testb  $0x1,0x30(%rsp)
jne    13d2 <chkder_+0x2a2>
jmp    140f <chkder_+0x2df>
call   1050 <sqrt@plt>
cmp    $0x1,%ebx
jne    1186 <chkder_+0x56>
test   %r13d,%r13d
jle    1744 <chkder_+0x614>
mov    0xa0(%rsp),%rax
mov    %r13d,%ecx
cmp    $0x4,%r13d
jb     147c <chkder_+0x34c>
lea    (%r15,%rcx,8),%rdx
cmp    %rax,%rdx
jbe    1695 <chkder_+0x565>
lea    (%rax,%rcx,8),%rdx
cmp    %r15,%rdx
jbe    1695 <chkder_+0x565>
xor    %edx,%edx
mov    %rdx,%rsi
not    %rsi
test   $0x1,%cl
je     14c5 <chkder_+0x395>
movsd  (%r15,%rdx,8),%xmm4
movapd 0xb79(%rip),%xmm1
andpd  %xmm4,%xmm1
mulsd  %xmm0,%xmm1
xorpd  %xmm2,%xmm2
cmpeqsd %xmm1,%xmm2
movapd %xmm2,%xmm3
andnpd %xmm1,%xmm3
andpd  %xmm0,%xmm2
orpd   %xmm3,%xmm2
addsd  %xmm4,%xmm2
movsd  %xmm2,(%rax,%rdx,8)
or     $0x1,%rdx
add    %rcx,%rsi
je     1744 <chkder_+0x614>
movapd 0xb3a(%rip),%xmm6
xorpd  %xmm1,%xmm1
nopw   0x0(%rax,%rax,1)
movsd  (%r15,%rdx,8),%xmm2
movapd %xmm2,%xmm3
andpd  %xmm6,%xmm3
mulsd  %xmm0,%xmm3
movapd %xmm3,%xmm4
cmpeqsd %xmm1,%xmm4
movapd %xmm4,%xmm5
andnpd %xmm3,%xmm5
andpd  %xmm0,%xmm4
orpd   %xmm5,%xmm4
addsd  %xmm2,%xmm4
movsd  %xmm4,(%rax,%rdx,8)
movsd  0x8(%r15,%rdx,8),%xmm2
movapd %xmm2,%xmm3
andpd  %xmm6,%xmm3
mulsd  %xmm0,%xmm3
movapd %xmm3,%xmm4
cmpeqsd %xmm1,%xmm4
movapd %xmm4,%xmm5
andnpd %xmm3,%xmm5
andpd  %xmm0,%xmm4
orpd   %xmm5,%xmm4
addsd  %xmm2,%xmm4
movsd  %xmm4,0x8(%rax,%rdx,8)
add    $0x2,%rdx
cmp    %rdx,%rcx
jne    14e0 <chkder_+0x3b0>
jmp    1744 <chkder_+0x614>
test   %r12d,%r12d
mov    0x20(%rsp),%r13
movsd  0x10(%rsp),%xmm5
jle    1744 <chkder_+0x614>
mov    0xa8(%rsp),%r15
movsd  0xa84(%rip),%xmm0
mulsd  %xmm5,%xmm0
movsd  %xmm0,0x8(%rsp)
xor    %ebp,%ebp
xorpd  %xmm6,%xmm6
movsd  0xa74(%rip),%xmm7
movabs $0x3ff0000000000000,%r12
jmp    15ad <chkder_+0x47d>
add    $0x1,%rbp
cmp    %rbp,%r14
je     1744 <chkder_+0x614>
movsd  0x0(%r13,%rbp,8),%xmm0
ucomisd %xmm6,%xmm0
movapd %xmm7,%xmm3
jne    15c0 <chkder_+0x490>
jnp    162d <chkder_+0x4fd>
movsd  (%r15,%rbp,8),%xmm1
ucomisd %xmm6,%xmm1
movapd %xmm7,%xmm3
jne    15d2 <chkder_+0x4a2>
jnp    162d <chkder_+0x4fd>
movapd %xmm1,%xmm2
subsd  %xmm0,%xmm2
movapd %xmm2,%xmm3
movapd 0xa2a(%rip),%xmm4
andpd  %xmm4,%xmm3
andpd  %xmm4,%xmm0
movsd  0x8(%rsp),%xmm4
mulsd  %xmm0,%xmm4
ucomisd %xmm4,%xmm3
movapd %xmm7,%xmm3
jb     162d <chkder_+0x4fd>
divsd  %xmm10,%xmm2
subsd  (%rbx,%rbp,8),%xmm2
movapd 0x9fc(%rip),%xmm3
andpd  %xmm3,%xmm2
mulsd  %xmm10,%xmm2
andpd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
divsd  %xmm1,%xmm2
movapd %xmm2,%xmm3
mov    %r12,(%rbx,%rbp,8)
ucomisd %xmm5,%xmm3
jbe    167d <chkder_+0x54d>
ucomisd %xmm3,%xmm10
jbe    167d <chkder_+0x54d>
movapd %xmm3,%xmm0
movsd  %xmm3,(%rsp)
call   1040 <log10@plt>
movsd  (%rsp),%xmm3
movsd  0x9af(%rip),%xmm7
xorpd  %xmm6,%xmm6
movsd  0x10(%rsp),%xmm5
movapd 0x50(%rsp),%xmm10
movsd  0x48(%rsp),%xmm1
subsd  %xmm1,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rbx,%rbp,8)
ucomisd %xmm10,%xmm3
jb     15a0 <chkder_+0x470>
movq   $0x0,(%rbx,%rbp,8)
jmp    15a0 <chkder_+0x470>
mov    %ecx,%edx
and    $0xfffffffc,%edx
movapd %xmm0,%xmm10
unpcklpd %xmm0,%xmm10
lea    0x0(,%rcx,8),%rsi
and    $0xffffffffffffffe0,%rsi
xor    %edi,%edi
movapd 0x955(%rip),%xmm8
xorpd  %xmm9,%xmm9
movupd (%r15,%rdi,1),%xmm3
movupd 0x10(%r15,%rdi,1),%xmm1
movapd %xmm3,%xmm5
andpd  %xmm8,%xmm5
movapd %xmm1,%xmm4
andpd  %xmm8,%xmm4
mulpd  %xmm10,%xmm5
mulpd  %xmm10,%xmm4
movapd %xmm5,%xmm7
cmpeqpd %xmm9,%xmm7
movapd %xmm4,%xmm6
cmpeqpd %xmm9,%xmm6
movapd %xmm10,%xmm2
andpd  %xmm7,%xmm2
andnpd %xmm5,%xmm7
orpd   %xmm2,%xmm7
movapd %xmm10,%xmm2
andpd  %xmm6,%xmm2
andnpd %xmm4,%xmm6
orpd   %xmm2,%xmm6
addpd  %xmm3,%xmm7
addpd  %xmm1,%xmm6
movupd %xmm7,(%rax,%rdi,1)
movupd %xmm6,0x10(%rax,%rdi,1)
add    $0x20,%rdi
cmp    %rdi,%rsi
jne    16c0 <chkder_+0x590>
cmp    %rcx,%rdx
jne    147e <chkder_+0x34e>
xor    %eax,%eax
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@DBL_EPSILON = global double 0.000000e+00
define i32 @chkder_(i32 %0, i32 %1, double* %2, double* %3, double* %4, i32 %5, double* %6, double* %7, i32 %8, double* %9) {
%11 = alloca i32
%12 = alloca i32
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca i32
%17 = alloca double*
%18 = alloca double*
%19 = alloca i32
%20 = alloca double*
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca i32
%25 = alloca i32
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
store i32 %0, i32* %11
store i32 %1, i32* %12
store double* %2, double** %13
store double* %3, double** %14
store double* %4, double** %15
store i32 %5, i32* %16
store double* %6, double** %17
store double* %7, double** %18
store i32 %8, i32* %19
store double* %9, double** %20
%30 = load double, double* @DBL_EPSILON
store double %30, double* %21
%31 = load double, double* %21
%32 = call double @sqrt(double %31)
store double %32, double* %23
%33 = load i32, i32* %19
%34 = icmp eq i32 %33, 1
br i1 %34, label %35, label %69
35: ; preds = %10
store i32 0, i32* %25
br label %36
36: ; preds = %65, %35
%37 = load i32, i32* %25
%38 = load i32, i32* %12
%39 = icmp slt i32 %37, %38
br i1 %39, label %40, label %68
40: ; preds = %36
%41 = load double, double* %23
%42 = load double*, double** %13
%43 = load i32, i32* %25
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds double, double* %42, i64 %44
%46 = load double, double* %45
%47 = call double @llvm.fabs.f64(double %46)
%48 = fmul double %41, %47
store double %48, double* %22
%49 = load double, double* %22
%50 = fcmp oeq double %49, 0.000000e+00
br i1 %50, label %51, label %53
51: ; preds = %40
%52 = load double, double* %23
store double %52, double* %22
br label %53
53: ; preds = %51, %40
%54 = load double*, double** %13
%55 = load i32, i32* %25
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds double, double* %54, i64 %56
%58 = load double, double* %57
%59 = load double, double* %22
%60 = fadd double %58, %59
%61 = load double*, double** %17
%62 = load i32, i32* %25
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds double, double* %61, i64 %63
store double %60, double* %64
br label %65
65: ; preds = %53
%66 = load i32, i32* %25
%67 = add nsw i32 %66, 1
store i32 %67, i32* %25
br label %36
68: ; preds = %36
br label %247
69: ; preds = %10
store double 1.000000e+02, double* %26
%70 = load double, double* %21
%71 = fmul double 1.000000e+02, %70
store double %71, double* %28
%72 = load double, double* %23
%73 = call double @log10(double %72)
store double %73, double* %29
store i32 0, i32* %24
br label %74
74: ; preds = %83, %69
%75 = load i32, i32* %24
%76 = load i32, i32* %11
%77 = icmp slt i32 %75, %76
br i1 %77, label %78, label %86
78: ; preds = %74
%79 = load double*, double** %20
%80 = load i32, i32* %24
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds double, double* %79, i64 %81
store double 0.000000e+00, double* %82
br label %83
83: ; preds = %78
%84 = load i32, i32* %24
%85 = add nsw i32 %84, 1
store i32 %85, i32* %24
br label %74
86: ; preds = %74
store i32 0, i32* %25
br label %87
87: ; preds = %127, %86
%88 = load i32, i32* %25
%89 = load i32, i32* %12
%90 = icmp slt i32 %88, %89
br i1 %90, label %91, label %130
91: ; preds = %87
%92 = load double*, double** %13
%93 = load i32, i32* %25
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds double, double* %92, i64 %94
%96 = load double, double* %95
%97 = call double @llvm.fabs.f64(double %96)
store double %97, double* %22
%98 = load double, double* %22
%99 = fcmp oeq double %98, 0.000000e+00
br i1 %99, label %100, label %101
100: ; preds = %91
store double 1.000000e+00, double* %22
br label %101
101: ; preds = %100, %91
store i32 0, i32* %24
br label %102
102: ; preds = %123, %101
%103 = load i32, i32* %24
%104 = load i32, i32* %11
%105 = icmp slt i32 %103, %104
br i1 %105, label %106, label %126
106: ; preds = %102
%107 = load double, double* %22
%108 = load double*, double** %15
%109 = load i32, i32* %24
%110 = load i32, i32* %25
%111 = load i32, i32* %16
%112 = mul nsw i32 %110, %111
%113 = add nsw i32 %109, %112
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds double, double* %108, i64 %114
%116 = load double, double* %115
%117 = load double*, double** %20
%118 = load i32, i32* %24
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds double, double* %117, i64 %119
%121 = load double, double* %120
%122 = call double @llvm.fmuladd.f64(double %107, double %116, double %121)
store double %122, double* %120
br label %123
123: ; preds = %106
%124 = load i32, i32* %24
%125 = add nsw i32 %124, 1
store i32 %125, i32* %24
br label %102
126: ; preds = %102
br label %127
127: ; preds = %126
%128 = load i32, i32* %25
%129 = add nsw i32 %128, 1
store i32 %129, i32* %25
br label %87
130: ; preds = %87
store i32 0, i32* %24
br label %131
131: ; preds = %243, %130
%132 = load i32, i32* %24
%133 = load i32, i32* %11
%134 = icmp slt i32 %132, %133
br i1 %134, label %135, label %246
135: ; preds = %131
store double 1.000000e+00, double* %22
%136 = load double*, double** %18
%137 = load i32, i32* %24
%138 = sext i32 %137 to i64
%139 = getelementptr inbounds double, double* %136, i64 %138
%140 = load double, double* %139
%141 = load double*, double** %14
%142 = load i32, i32* %24
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds double, double* %141, i64 %143
%145 = load double, double* %144
%146 = fsub double %140, %145
%147 = call double @llvm.fabs.f64(double %146)
store double %147, double* %27
%148 = load double*, double** %14
%149 = load i32, i32* %24
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds double, double* %148, i64 %150
%152 = load double, double* %151
%153 = fcmp une double %152, 0.000000e+00
br i1 %153, label %154, label %210
154: ; preds = %135
%155 = load double*, double** %18
%156 = load i32, i32* %24
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds double, double* %155, i64 %157
%159 = load double, double* %158
%160 = fcmp une double %159, 0.000000e+00
br i1 %160, label %161, label %210
161: ; preds = %154
%162 = load double, double* %27
%163 = load double, double* %28
%164 = load double*, double** %14
%165 = load i32, i32* %24
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds double, double* %164, i64 %166
%168 = load double, double* %167
%169 = call double @llvm.fabs.f64(double %168)
%170 = fmul double %163, %169
%171 = fcmp oge double %162, %170
br i1 %171, label %172, label %210
172: ; preds = %161
%173 = load double*, double** %18
%174 = load i32, i32* %24
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds double, double* %173, i64 %175
%177 = load double, double* %176
%178 = load double*, double** %14
%179 = load i32, i32* %24
%180 = sext i32 %179 to i64
%181 = getelementptr inbounds double, double* %178, i64 %180
%182 = load double, double* %181
%183 = fsub double %177, %182
%184 = load double, double* %23
%185 = fdiv double %183, %184
%186 = load double*, double** %20
%187 = load i32, i32* %24
%188 = sext i32 %187 to i64
%189 = getelementptr inbounds double, double* %186, i64 %188
%190 = load double, double* %189
%191 = fsub double %185, %190
%192 = call double @llvm.fabs.f64(double %191)
store double %192, double* %27
%193 = load double, double* %23
%194 = load double, double* %27
%195 = fmul double %193, %194
%196 = load double*, double** %14
%197 = load i32, i32* %24
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds double, double* %196, i64 %198
%200 = load double, double* %199
%201 = call double @llvm.fabs.f64(double %200)
%202 = load double*, double** %18
%203 = load i32, i32* %24
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds double, double* %202, i64 %204
%206 = load double, double* %205
%207 = call double @llvm.fabs.f64(double %206)
%208 = fadd double %201, %207
%209 = fdiv double %195, %208
store double %209, double* %22
br label %210
210: ; preds = %172, %161, %154, %135
%211 = load double*, double** %20
%212 = load i32, i32* %24
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds double, double* %211, i64 %213
store double 1.000000e+00, double* %214
%215 = load double, double* %22
%216 = load double, double* %21
%217 = fcmp ogt double %215, %216
br i1 %217, label %218, label %233
218: ; preds = %210
%219 = load double, double* %22
%220 = load double, double* %23
%221 = fcmp olt double %219, %220
br i1 %221, label %222, label %233
222: ; preds = %218
%223 = load double, double* %22
%224 = call double @log10(double %223)
%225 = load double, double* %29
%226 = fsub double %224, %225
%227 = load double, double* %29
%228 = fdiv double %226, %227
%229 = load double*, double** %20
%230 = load i32, i32* %24
%231 = sext i32 %230 to i64
%232 = getelementptr inbounds double, double* %229, i64 %231
store double %228, double* %232
br label %233
233: ; preds = %222, %218, %210
%234 = load double, double* %22
%235 = load double, double* %23
%236 = fcmp oge double %234, %235
br i1 %236, label %237, label %242
237: ; preds = %233
%238 = load double*, double** %20
%239 = load i32, i32* %24
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds double, double* %238, i64 %240
store double 0.000000e+00, double* %241
br label %242
242: ; preds = %237, %233
br label %243
243: ; preds = %242
%244 = load i32, i32* %24
%245 = add nsw i32 %244, 1
store i32 %245, i32* %24
br label %131
246: ; preds = %131
br label %247
247: ; preds = %246, %68
ret i32 0
}

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