#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 cos(double);
double jac_pendulum_sq(double);
double sin(double);
int jacFun(const double **arg, double **res, int *iw, double *w, int mem) {
  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    $0x110,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8d,-0x24(%rbp)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     1176 <jacFun+0x46>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
jmp    1186 <jacFun+0x56>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
jmp    1186 <jacFun+0x56>
movsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     11b1 <jacFun+0x81>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     11d8 <jacFun+0xa8>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
jmp    11e8 <jacFun+0xb8>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
jmp    11e8 <jacFun+0xb8>
movsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     1214 <jacFun+0xe4>
movsd  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
cmpq   $0x0,(%rax)
je     123b <jacFun+0x10b>
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
jmp    124b <jacFun+0x11b>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
jmp    124b <jacFun+0x11b>
movsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  0xd91(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x30(%rbp),%xmm0
call   1030 <jac_pendulum_sq@plt>
movsd  %xmm0,-0x50(%rbp)
movsd  -0x40(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x8(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     12c9 <jacFun+0x199>
mov    -0x8(%rbp),%rax
mov    0x8(%rax),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
jmp    12d9 <jacFun+0x1a9>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
jmp    12d9 <jacFun+0x1a9>
movsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x58(%rbp),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  0xd0c(%rip),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  -0x68(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x58(%rbp),%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
call   1030 <jac_pendulum_sq@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xc9a(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xc6a(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
divsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     13ef <jacFun+0x2bf>
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x38(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xa0(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1030 <jac_pendulum_sq@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xb26(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
call   1030 <jac_pendulum_sq@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xa87(%rip),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
divsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rax
cmpq   $0x0,(%rax)
je     15f3 <jacFun+0x4c3>
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movsd  %xmm0,0x18(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1621 <jacFun+0x4f1>
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1645 <jacFun+0x515>
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1669 <jacFun+0x539>
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     168d <jacFun+0x55d>
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     16b1 <jacFun+0x581>
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     16d5 <jacFun+0x5a5>
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x38(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x50(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
divsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x58(%rbp),%xmm0
divsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x80(%rbp),%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  -0x80(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x58(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
subsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     182b <jacFun+0x6fb>
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x38(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x50(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x60(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,-0x70(%rbp)
movsd  -0xd0(%rbp),%xmm0
ff
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
divsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
divsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1a4a <jacFun+0x91a>
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x38(%rax)
movsd  0x5de(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1a7e <jacFun+0x94e>
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1aa2 <jacFun+0x972>
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1ac6 <jacFun+0x996>
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1aea <jacFun+0x9ba>
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1b0e <jacFun+0x9de>
movsd  -0xe0(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1b32 <jacFun+0xa02>
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x30(%rbp),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
mulsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
divsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1b89 <jacFun+0xa59>
movsd  -0x40(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x30(%rbp),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
divsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%rbp),%rax
cmpq   $0x0,0x8(%rax)
je     1be9 <jacFun+0xab9>
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movsd  %xmm0,0x78(%rax)
xor    %eax,%eax
add    $0x110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<jacFun>:
push   %r14
push   %rbx
sub    $0xe8,%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,0x50(%rsp)
test   %rcx,%rcx
je     1185 <jacFun+0x55>
movapd 0x50(%rsp),%xmm0
movsd  %xmm0,0x8(%rcx)
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x30(%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,0xc0(%rsp)
movapd 0x50(%rsp),%xmm0
call   1030 <jac_pendulum_sq@plt>
movapd 0xc0(%rsp),%xmm1
movsd  %xmm0,0x48(%rsp)
mulsd  %xmm0,%xmm1
mov    0x8(%rbx),%rax
test   %rax,%rax
je     11ea <jacFun+0xba>
movsd  (%rax),%xmm0
movsd  %xmm0,0x30(%rsp)
addsd  0x30(%rsp),%xmm1
movapd %xmm1,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
mulsd  0xdff(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  0x28(%rsp),%xmm1
movsd  %xmm0,0x40(%rsp)
mulsd  %xmm0,%xmm1
addsd  0x10(%rsp),%xmm1
movsd  %xmm1,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x38(%rsp)
call   1030 <jac_pendulum_sq@plt>
mulsd  0xdbc(%rip),%xmm0
addsd  0xdbc(%rip),%xmm0
movapd %xmm0,0xa0(%rsp)
movsd  0x20(%rsp),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
mov    (%r14),%rax
test   %rax,%rax
je     1280 <jacFun+0x150>
movsd  %xmm0,0x10(%rax)
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
mulsd  0xd67(%rip),%xmm0
movsd  %xmm0,0x68(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  0x68(%rsp),%xmm1
movsd  %xmm0,0x90(%rsp)
mulsd  %xmm0,%xmm1
movapd %xmm1,0xb0(%rsp)
movapd 0x50(%rsp),%xmm0
call   1030 <jac_pendulum_sq@plt>
movapd 0xb0(%rsp),%xmm1
movsd  %xmm0,0x98(%rsp)
mulsd  %xmm0,%xmm1
movapd %xmm1,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
mulsd  0x30(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0xceb(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
mulsd  0xce4(%rip),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x88(%rsp)
call   1030 <jac_pendulum_sq@plt>
mulsd  0xca7(%rip),%xmm0
addsd  0xca7(%rip),%xmm0
mulsd  0xcaf(%rip),%xmm0
movapd %xmm0,0xd0(%rsp)
movsd  0x10(%rsp),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
mov    (%r14),%rax
test   %rax,%rax
je     139d <jacFun+0x26d>
movsd  %xmm0,0x18(%rax)
movsd  %xmm0,0x10(%rsp)
mov    0x8(%r14),%rax
test   %rax,%rax
je     13be <jacFun+0x28e>
xorpd  %xmm0,%xmm0
movupd %xmm0,0x20(%rax)
movupd %xmm0,0x10(%rax)
movupd %xmm0,(%rax)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x80(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x78(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x70(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
mov    0x8(%r14),%rax
test   %rax,%rax
je     148d <jacFun+0x35d>
movsd  0x80(%rsp),%xmm2
mulsd  0xbe3(%rip),%xmm2
movsd  0x48(%rsp),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x28(%rsp),%xmm3
mulsd  0x78(%rsp),%xmm3
movsd  0x70(%rsp),%xmm4
mulsd  0xbef(%rip),%xmm4
movsd  0x40(%rsp),%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movapd 0xa0(%rsp),%xmm1
divsd  %xmm1,%xmm2
movsd  0x38(%rsp),%xmm3
addsd  %xmm3,%xmm3
mulsd  %xmm0,%xmm3
mulsd  0xb9a(%rip),%xmm3
movsd  0x20(%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,0x48(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x38(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
movsd  %xmm0,0x40(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
call   1050 <cos@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1040 <sin@plt>
mov    0x8(%r14),%rax
test   %rax,%rax
je     1605 <jacFun+0x4d5>
movsd  0x38(%rsp),%xmm2
mulsd  0xb30(%rip),%xmm2
movsd  0x68(%rsp),%xmm1
mulsd  0x48(%rsp),%xmm1
movsd  0x90(%rsp),%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm1,%xmm3
movsd  0x98(%rsp),%xmm2
mulsd  %xmm3,%xmm2
movsd  0x30(%rsp),%xmm1
mulsd  0x40(%rsp),%xmm1
subsd  %xmm1,%xmm2
movsd  0x28(%rsp),%xmm1
mulsd  0xab8(%rip),%xmm1
addsd  %xmm2,%xmm1
movsd  0x20(%rsp),%xmm3
mulsd  0xabe(%rip),%xmm3
addsd  %xmm1,%xmm3
movsd  0x88(%rsp),%xmm1
addsd  %xmm1,%xmm1
mulsd  %xmm0,%xmm1
mulsd  0xa91(%rip),%xmm1
movapd 0xd0(%rsp),%xmm2
movsd  0x10(%rsp),%xmm0
divsd  %xmm2,%xmm0
mulsd  0xa8e(%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 0xc0(%rsp),%xmm1
unpcklpd 0xb0(%rsp),%xmm1
movapd 0x50(%rsp),%xmm0
addsd  %xmm0,%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm0,%xmm1
movapd 0xa0(%rsp),%xmm0
unpcklpd %xmm2,%xmm0
divpd  %xmm0,%xmm1
mov    %rcx,0x68(%rax)
movupd %xmm1,0x70(%rax)
xor    %eax,%eax
add    $0xe8,%rsp
pop    %rbx
pop    %r14
ret

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

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