int jacFun(const double **arg, double **res) {
  double a0 = arg[0] ? arg[0][2] : 0;
  if (res[0] != 0)
    res[0][0] = a0;
  a0 = arg[0] ? arg[0][3] : 0;
  if (res[0] != 0)
    res[0][1] = a0;
  double a1 = arg[0] ? arg[0][1] : 0;
  double a2 = sin(a1);
  double a3 = -8.0000000000000016e-02;
  a2 = (a3 * a2);
  double a4 = jac_pendulum_sq(a0);
  double a5 = (a2 * a4);
  double a6 = arg[1] ? arg[1][0] : 0;
  a5 = (a5 + a6);
  double a7 = cos(a1);
  double a8 = 9.8100000000000009e-01;
  a7 = (a8 * a7);
  double a9 = sin(a1);
  double a10 = (a7 * a9);
  a5 = (a5 + a10);
  a10 = cos(a1);
  double a11 = jac_pendulum_sq(a10);
  double a12 = 1.0000000000000001e-01;
  a11 = (a12 * a11);
  double a13 = 1.1000000000000001e+00;
  a11 = (a13 - a11);
  a5 = (a5 / a11);
  if (res[0] != 0)
    res[0][2] = a5;
  double a14 = cos(a1);
  a14 = (a3 * a14);
  double a15 = sin(a1);
  double a16 = (a14 * a15);
  double a17 = jac_pendulum_sq(a0);
  double a18 = (a16 * a17);
  double a19 = cos(a1);
  a19 = (a6 * a19);
  a18 = (a18 + a19);
  a19 = sin(a1);
  a19 = (a8 * a19);
  a18 = (a18 + a19);
  a19 = sin(a1);
  double a20 = 9.8100000000000005e+00;
  a19 = (a20 * a19);
  a18 = (a18 + a19);
  a19 = cos(a1);
  double a21 = jac_pendulum_sq(a19);
  a21 = (a12 * a21);
  a13 = (a13 - a21);
  a21 = 8.0000000000000004e-01;
  a13 = (a21 * a13);
  a18 = (a18 / a13);
  if (res[0] != 0)
    res[0][3] = a18;
  double a22 = 0.;
  if (res[1] != 0)
    res[1][0] = a22;
  if (res[1] != 0)
    res[1][1] = a22;
  if (res[1] != 0)
    res[1][2] = a22;
  if (res[1] != 0)
    res[1][3] = a22;
  if (res[1] != 0)
    res[1][4] = a22;
  if (res[1] != 0)
    res[1][5] = a22;
  double a23 = cos(a1);
  a23 = (a3 * a23);
  a4 = (a4 * a23);
  a23 = cos(a1);
  a7 = (a7 * a23);
  a23 = sin(a1);
  a23 = (a8 * a23);
  a9 = (a9 * a23);
  a7 = (a7 - a9);
  a4 = (a4 + a7);
  a4 = (a4 / a11);
  a5 = (a5 / a11);
  a10 = (a10 + a10);
  a7 = sin(a1);
  a10 = (a10 * a7);
  a10 = (a12 * a10);
  a5 = (a5 * a10);
  a4 = (a4 - a5);
  if (res[1] != 0)
    res[1][6] = a4;
  a4 = cos(a1);
  a14 = (a14 * a4);
  a4 = sin(a1);
  a3 = (a3 * a4);
  a15 = (a15 * a3);
  a14 = (a14 - a15);
  a17 = (a17 * a14);
  a14 = sin(a1);
  a6 = (a6 * a14);
  a17 = (a17 - a6);
  a6 = cos(a1);
  a8 = (a8 * a6);
  a17 = (a17 + a8);
  a8 = cos(a1);
  a20 = (a20 * a8);
  a17 = (a17 + a20);
  a17 = (a17 / a13);
  a18 = (a18 / a13);
  a19 = (a19 + a19);
  a1 = sin(a1);
  a19 = (a19 * a1);
  a12 = (a12 * a19);
  a21 = (a21 * a12);
  a18 = (a18 * a21);
  a17 = (a17 - a18);
  if (res[1] != 0)
    res[1][7] = a17;
  a17 = 1.;
  if (res[1] != 0)
    res[1][8] = a17;
  if (res[1] != 0)
    res[1][9] = a22;
  if (res[1] != 0)
    res[1][10] = a22;
  if (res[1] != 0)
    res[1][11] = a22;
  if (res[1] != 0)
    res[1][12] = a22;
  if (res[1] != 0)
    res[1][13] = a17;
  a17 = (a0 + a0);
  a2 = (a2 * a17);
  a2 = (a2 / a11);
  if (res[1] != 0)
    res[1][14] = a2;
  a0 = (a0 + a0);
  a16 = (a16 * a0);
  a16 = (a16 / a13);
  if (res[1] != 0)
    res[1][15] = a16;
  return 0;
}


x86 assembly (clang, -O0):
<jacFun>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     116a <jacFun+0x3a>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
jmp    117a <jacFun+0x4a>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
jmp    117a <jacFun+0x4a>
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     11a5 <jacFun+0x75>
movsd  -0x18(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     11cc <jacFun+0x9c>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
jmp    11dc <jacFun+0xac>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
jmp    11dc <jacFun+0xac>
movsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     1208 <jacFun+0xd8>
movsd  -0x18(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     122f <jacFun+0xff>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
jmp    123f <jacFun+0x10f>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
jmp    123f <jacFun+0x10f>
movsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  0xd9d(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
mov    $0x1,%al
call   1030 <jac_pendulum_sq@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     12c3 <jacFun+0x193>
mov    -0x8(%rbp),%rax
mov    0x8(%rax),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
jmp    12d3 <jacFun+0x1a3>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
jmp    12d3 <jacFun+0x1a3>
movsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x48(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x50(%rbp)
movsd  0xd12(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x60(%rbp)
movsd  -0x50(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x40(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
mov    $0x1,%al
call   1030 <jac_pendulum_sq@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xc9d(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xc79(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
divsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     13d1 <jacFun+0x2a1>
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x20(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
mov    $0x1,%al
call   1030 <jac_pendulum_sq@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xb3e(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
mov    $0x1,%al
call   1030 <jac_pendulum_sq@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
subsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
movsd  0xaa2(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0xa8(%rbp),%xmm0
ff
divsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     15cf <jacFun+0x49f>
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,0x18(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     15fd <jacFun+0x4cd>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1621 <jacFun+0x4f1>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1645 <jacFun+0x515>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1669 <jacFun+0x539>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     168d <jacFun+0x55d>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     16b1 <jacFun+0x581>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x20(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x38(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x50(%rbp),%xmm0
subsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x38(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm0
divsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x68(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x20(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x50(%rbp)
movsd  -0x68(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x78(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x40(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x38(%rbp),%xmm0
subsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     17fe <jacFun+0x6ce>
movsd  -0x38(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x20(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x30(%rbp),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x48(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x48(%rbp)
movsd  -0x58(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x58(%rbp)
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
divsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
divsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x20(%rbp)
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mulsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1a0e <jacFun+0x8de>
movsd  -0xa0(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x38(%rax)
movsd  0x61a(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1a42 <jacFun+0x912>
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1a66 <jacFun+0x936>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1a8a <jacFun+0x95a>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1aae <jacFun+0x97e>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1ad2 <jacFun+0x9a2>
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1af6 <jacFun+0x9c6>
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x18(%rbp),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
divsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1b4a <jacFun+0xa1a>
movsd  -0x28(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x18(%rbp),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x98(%rbp),%xmm0
ff
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
divsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1ba7 <jacFun+0xa77>
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x78(%rax)
xor    %eax,%eax
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<jacFun>:
push   %r14
push   %rbx
sub    $0xf8,%rsp
mov    %rsi,%r14
mov    %rdi,%rbx
mov    (%rdi),%rax
test   %rax,%rax
je     114f <jacFun+0x1f>
movsd  0x10(%rax),%xmm0
jmp    1153 <jacFun+0x23>
xorpd  %xmm0,%xmm0
mov    (%r14),%rcx
test   %rcx,%rcx
je     115f <jacFun+0x2f>
movsd  %xmm0,(%rcx)
test   %rax,%rax
je     116b <jacFun+0x3b>
movsd  0x18(%rax),%xmm0
jmp    116f <jacFun+0x3f>
xorpd  %xmm0,%xmm0
movapd %xmm0,0x60(%rsp)
test   %rcx,%rcx
je     1185 <jacFun+0x55>
movapd 0x60(%rsp),%xmm0
movsd  %xmm0,0x8(%rcx)
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x28(%rsp)
xorpd  %xmm0,%xmm0
test   %rax,%rax
je     119d <jacFun+0x6d>
movsd  0x8(%rax),%xmm0
movsd  %xmm0,0x8(%rsp)
call   1040 <sin@plt>
mulsd  0xe50(%rip),%xmm0
movapd %xmm0,0xd0(%rsp)
movaps 0x60(%rsp),%xmm0
mov    $0x1,%al
call   1030 <jac_pendulum_sq@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd 0xd0(%rsp),%xmm1
movsd  %xmm0,0x58(%rsp)
mulsd  %xmm0,%xmm1
mov    0x8(%rbx),%rax
test   %rax,%rax
je     11f2 <jacFun+0xc2>
movsd  (%rax),%xmm0
movsd  %xmm0,0x28(%rsp)
addsd  0x28(%rsp),%xmm1
movapd %xmm1,0x30(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
mulsd  0xdf7(%rip),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  0x20(%rsp),%xmm1
movsd  %xmm0,0x50(%rsp)
mulsd  %xmm0,%xmm1
addsd  0x30(%rsp),%xmm1
movsd  %xmm1,0x30(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x48(%rsp)
mov    $0x1,%al
call   1030 <jac_pendulum_sq@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xdab(%rip),%xmm0
addsd  0xdab(%rip),%xmm0
movapd %xmm0,0xb0(%rsp)
movsd  0x30(%rsp),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
mov    (%r14),%rax
test   %rax,%rax
je     1291 <jacFun+0x161>
movsd  %xmm0,0x10(%rax)
movsd  %xmm0,0x30(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
mulsd  0xd56(%rip),%xmm0
movsd  %xmm0,0x78(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  0x78(%rsp),%xmm1
movsd  %xmm0,0xa8(%rsp)
mulsd  %xmm0,%xmm1
movapd %xmm1,0xc0(%rsp)
movaps 0x60(%rsp),%xmm0
mov    $0x1,%al
call   1030 <jac_pendulum_sq@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd 0xc0(%rsp),%xmm1
movsd  %xmm0,0xa0(%rsp)
mulsd  %xmm0,%xmm1
movapd %xmm1,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
mulsd  0x28(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0xcd2(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0xccb(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x98(%rsp)
mov    $0x1,%al
call   1030 <jac_pendulum_sq@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xc85(%rip),%xmm0
addsd  0xc85(%rip),%xmm0
mulsd  0xc8d(%rip),%xmm0
movapd %xmm0,0xe0(%rsp)
movsd  0x10(%rsp),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
mov    (%r14),%rax
test   %rax,%rax
je     13bf <jacFun+0x28f>
movsd  %xmm0,0x18(%rax)
movsd  %xmm0,0x10(%rsp)
mov    0x8(%r14),%rax
test   %rax,%rax
je     13e0 <jacFun+0x2b0>
xorpd  %xmm0,%xmm0
movupd %xmm0,0x20(%rax)
movupd %xmm0,0x10(%rax)
movupd %xmm0,(%rax)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x90(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x88(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x80(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
mov    0x8(%r14),%rax
test   %rax,%rax
je     14b7 <jacFun+0x387>
movsd  0x90(%rsp),%xmm3
mulsd  0xbbb(%rip),%xmm3
mulsd  0x58(%rsp),%xmm3
movsd  0x20(%rsp),%xmm1
mulsd  0x88(%rsp),%xmm1
movsd  0x80(%rsp),%xmm4
mulsd  0xbc5(%rip),%xmm4
movsd  0x50(%rsp),%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm1,%xmm2
addsd  %xmm3,%xmm2
movapd 0xb0(%rsp),%xmm1
divsd  %xmm1,%xmm2
movsd  0x48(%rsp),%xmm3
addsd  %xmm3,%xmm3
mulsd  %xmm0,%xmm3
mulsd  0xb70(%rip),%xmm3
movsd  0x30(%rsp),%xmm0
divsd  %xmm1,%xmm0
mulsd  %xmm0,%xmm3
addsd  %xmm2,%xmm3
movsd  %xmm3,0x30(%rax)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x58(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x48(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x30(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
mov    0x8(%r14),%rax
test   %rax,%rax
je     162b <jacFun+0x4fb>
movsd  0x48(%rsp),%xmm3
mulsd  0xb06(%rip),%xmm3
movsd  0x78(%rsp),%xmm1
mulsd  0x58(%rsp),%xmm1
movsd  0xa8(%rsp),%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mulsd  0xa0(%rsp),%xmm2
movsd  0x28(%rsp),%xmm1
mulsd  0x50(%rsp),%xmm1
subsd  %xmm1,%xmm2
movsd  0x20(%rsp),%xmm1
mulsd  0xa92(%rip),%xmm1
addsd  %xmm2,%xmm1
movsd  0x30(%rsp),%xmm3
mulsd  0xa98(%rip),%xmm3
addsd  %xmm1,%xmm3
movsd  0x98(%rsp),%xmm1
addsd  %xmm1,%xmm1
mulsd  %xmm0,%xmm1
mulsd  0xa6b(%rip),%xmm1
movapd 0xe0(%rsp),%xmm2
movsd  0x10(%rsp),%xmm0
divsd  %xmm2,%xmm0
mulsd  0xa68(%rip),%xmm1
mulsd  %xmm0,%xmm1
divsd  %xmm2,%xmm3
addsd  %xmm3,%xmm1
movsd  %xmm1,0x38(%rax)
movabs $0x3ff0000000000000,%rcx
mov    %rcx,0x40(%rax)
xorpd  %xmm0,%xmm0
movupd %xmm0,0x48(%rax)
movupd %xmm0,0x58(%rax)
movapd 0xd0(%rsp),%xmm1
unpcklpd 0xc0(%rsp),%xmm1
movapd 0x60(%rsp),%xmm0
addsd  %xmm0,%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm0,%xmm1
movapd 0xb0(%rsp),%xmm0
unpcklpd %xmm2,%xmm0
divpd  %xmm0,%xmm1
mov    %rcx,0x68(%rax)
movupd %xmm1,0x70(%rax)
xor    %eax,%eax
add    $0xf8,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
define i32 @jacFun(double** nocapture %0, double** nocapture %1) {
%3 = load double*, double** %0
%4 = icmp eq double* %3, null
br i1 %4, label %8, label %5
5: ; preds = %2
%6 = getelementptr inbounds double, double* %3, i64 2
%7 = load double, double* %6
br label %8
8: ; preds = %2, %5
%9 = phi double [ %7, %5 ], [ 0.000000e+00, %2 ]
%10 = load double*, double** %1
%11 = icmp eq double* %10, null
br i1 %11, label %13, label %12
12: ; preds = %8
store double %9, double* %10
br label %13
13: ; preds = %12, %8
br i1 %4, label %17, label %14
14: ; preds = %13
%15 = getelementptr inbounds double, double* %3, i64 3
%16 = load double, double* %15
br label %17
17: ; preds = %13, %14
%18 = phi double [ %16, %14 ], [ 0.000000e+00, %13 ]
br i1 %11, label %21, label %19
19: ; preds = %17
%20 = getelementptr inbounds double, double* %10, i64 1
store double %18, double* %20
br label %21
21: ; preds = %19, %17
br i1 %4, label %25, label %22
22: ; preds = %21
%23 = getelementptr inbounds double, double* %3, i64 1
%24 = load double, double* %23
br label %25
25: ; preds = %21, %22
%26 = phi double [ %24, %22 ], [ 0.000000e+00, %21 ]
%27 = tail call double @sin(double %26)
%28 = fmul double %27, 0xBFB47AE147AE147C
%29 = tail call i32 (double, ...) bitcast (i32 (...)* @jac_pendulum_sq to i32 (double, ...)*)(double %18)
%30 = sitofp i32 %29 to double
%31 = fmul double %28, %30
%32 = getelementptr inbounds double*, double** %0, i64 1
%33 = load double*, double** %32
%34 = icmp eq double* %33, null
br i1 %34, label %37, label %35
35: ; preds = %25
%36 = load double, double* %33
br label %37
37: ; preds = %25, %35
%38 = phi double [ %36, %35 ], [ 0.000000e+00, %25 ]
%39 = fadd double %31, %38
%40 = tail call double @cos(double %26)
%41 = fmul double %40, 0x3FEF645A1CAC0832
%42 = tail call double @sin(double %26)
%43 = fmul double %41, %42
%44 = fadd double %39, %43
%45 = tail call double @cos(double %26)
%46 = tail call i32 (double, ...) bitcast (i32 (...)* @jac_pendulum_sq to i32 (double, ...)*)(double %45)
%47 = sitofp i32 %46 to double
%48 = fmul double %47, 1.000000e-01
%49 = fsub double 1.100000e+00, %48
%50 = fdiv double %44, %49
%51 = load double*, double** %1
%52 = icmp eq double* %51, null
br i1 %52, label %55, label %53
53: ; preds = %37
%54 = getelementptr inbounds double, double* %51, i64 2
store double %50, double* %54
br label %55
55: ; preds = %53, %37
%56 = tail call double @cos(double %26)
%57 = fmul double %56, 0xBFB47AE147AE147C
%58 = tail call double @sin(double %26)
%59 = fmul double %57, %58
%60 = tail call i32 (double, ...) bitcast (i32 (...)* @jac_pendulum_sq to i32 (double, ...)*)(double %18)
%61 = sitofp i32 %60 to double
%62 = fmul double %59, %61
%63 = tail call double @cos(double %26)
%64 = fmul double %38, %63
%65 = fadd double %62, %64
%66 = tail call double @sin(double %26)
%67 = fmul double %66, 0x3FEF645A1CAC0832
%68 = fadd double %65, %67
%69 = tail call double @sin(double %26)
%70 = fmul double %69, 9.810000e+00
%71 = fadd double %68, %70
%72 = tail call double @cos(double %26)
%73 = tail call i32 (double, ...) bitcast (i32 (...)* @jac_pendulum_sq to i32 (double, ...)*)(double %72)
%74 = sitofp i32 %73 to double
%75 = fmul double %74, 1.000000e-01
%76 = fsub double 1.100000e+00, %75
%77 = fmul double %76, 8.000000e-01
%78 = fdiv double %71, %77
%79 = load double*, double** %1
%80 = icmp eq double* %79, null
br i1 %80, label %83, label %81
81: ; preds = %55
%82 = getelementptr inbounds double, double* %79, i64 3
store double %78, double* %82
br label %83
83: ; preds = %81, %55
%84 = getelementptr inbounds double*, double** %1, i64 1
%85 = load double*, double** %84
%86 = icmp eq double* %85, null
br i1 %86, label %89, label %87
87: ; preds = %83
%88 = bitcast double* %85 to i8*
br label %89
89: ; preds = %83, %87
%90 = tail call double @cos(double %26)
%91 = tail call double @cos(double %26)
%92 = tail call double @sin(double %26)
%93 = tail call double @sin(double %26)
%94 = load double*, double** %84
%95 = icmp eq double* %94, null
br i1 %95, label %112, label %96
96: ; preds = %89
%97 = fmul double %90, 0x3FB47AE147AE147C
%98 = fmul double %97, %30
%99 = fmul double %41, %91
%100 = fmul double %92, 0x3FEF645A1CAC0832
%101 = fmul double %42, %100
%102 = fsub double %99, %101
%103 = fsub double %102, %98
%104 = fdiv double %103, %49
%105 = fdiv double %50, %49
%106 = fadd double %45, %45
%107 = fmul double %106, %93
%108 = fmul double %107, 1.000000e-01
%109 = fmul double %105, %108
%110 = fsub double %104, %109
%111 = getelementptr inbounds double, double* %94, i64 6
store double %110, double* %111
br label %112
112: ; preds = %96, %89
%113 = tail call double @cos(double %26)
%114 = tail call double @sin(double %26)
%115 = tail call double @sin(double %26)
%116 = tail call double @cos(double %26)
%117 = tail call double @cos(double %26)
%118 = tail call double @sin(double %26)
%119 = load double*, double** %84
%120 = icmp eq double* %119, null
br i1 %120, label %157, label %121
121: ; preds = %112
%122 = fmul double %57, %113
%123 = fmul double %114, 0x3FB47AE147AE147C
%124 = fmul double %58, %123
%125 = fadd double %122, %124
%126 = fmul double %125, %61
%127 = fmul double %38, %115
%128 = fsub double %126, %127
%129 = fmul double %116, 0x3FEF645A1CAC0832
%130 = fadd double %129, %128
%131 = fmul double %117, 9.810000e+00
%132 = fadd double %131, %130
%133 = fdiv double %132, %77
%134 = fdiv double %78, %77
%135 = fadd double %72, %72
%136 = fmul double %135, %118
%137 = fmul double %136, 1.000000e-01
%138 = fmul double %137, 8.000000e-01
%139 = fmul double %134, %138
%140 = fsub double %133, %139
%141 = getelementptr inbounds double, double* %119, i64 7
store double %140, double* %141
%142 = getelementptr inbounds double, double* %119, i64 8
store double 1.000000e+00, double* %142
%143 = getelementptr inbounds double, double* %119, i64 9
%144 = getelementptr inbounds double, double* %119, i64 13
%145 = bitcast double* %143 to i8*
store double 1.000000e+00, double* %144
%146 = fadd double %18, %18
%147 = getelementptr inbounds double, double* %119, i64 14
%148 = insertelement <2 x double> poison, double %146, i64 0
%149 = shufflevector <2 x double> %148, <2 x double> poison, <2 x i32> zeroinitializer
%150 = insertelement <2 x double> poison, double %28, i64 0
%151 = insertelement <2 x double> %150, double %59, i64 1
%152 = fmul <2 x double> %149, %151
%153 = insertelement <2 x double> poison, double %49, i64 0
%154 = insertelement <2 x double> %153, double %77, i64 1
%155 = fdiv <2 x double> %152, %154
%156 = bitcast double* %147 to <2 x double>*
store <2 x double> %155, <2 x double>* %156
br label %157
157: ; preds = %112, %121
ret i32 0
}