#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 sin(double);
void car_dyanmics_jacobian(double *x, double *J) {
  J[0] = cos(x[1] / 10 + x[5]) / 600 + cos(x[1] / 20 + x[5]) / 300;
  J[1] = sin(x[1] / 10 + x[5]) / 600 + sin(x[1] / 20 + x[5]) / 300;
  J[2] = 0.1;
  J[4] = -(sin(x[1] / 10 + x[5]) * (x[0] / 10 + x[4])) / 600 -
         (sin(x[1] / 20 + x[5]) * (x[0] / 20 + x[4])) / 300;
  J[5] = (cos(x[1] / 10 + x[5]) * (x[0] / 10 + x[4])) / 600 +
         (cos(x[1] / 20 + x[5]) * (x[0] / 20 + x[4])) / 300;
  J[7] = 0.1;
  J[8] = 1;
  J[13] = 1;
  J[16] =
      cos(x[1] / 10 + x[5]) / 60 + cos(x[1] / 20 + x[5]) / 15 + cos(x[5]) / 60;
  J[17] =
      sin(x[1] / 10 + x[5]) / 60 + sin(x[1] / 20 + x[5]) / 15 + sin(x[5]) / 60;
  J[18] = 1;
  J[20] = -(x[4] * sin(x[5])) / 60 -
          (sin(x[1] / 10 + x[5]) * (x[0] / 10 + x[4])) / 60 -
          (sin(x[1] / 20 + x[5]) * (x[0] / 20 + x[4])) / 15;
  J[21] = (x[4] * cos(x[5])) / 60 +
          (cos(x[1] / 10 + x[5]) * (x[0] / 10 + x[4])) / 60 +
          (cos(x[1] / 20 + x[5]) * (x[0] / 20 + x[4])) / 15;
  J[23] = 1;
}


x86 assembly (clang, -O0):
<car_dyanmics_jacobian>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xedc(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
movsd  0xeda(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xe98(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
movsd  0xe96(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xe65(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1030 <sin@plt>
movsd  0xe63(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xe21(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1030 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm0
movsd  0xe1f(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  0xdfa(%rip),%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xddc(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1030 <sin@plt>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0xdba(%rip),%xmm2
divsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
addsd  0x20(%rax),%xmm1
mulsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xda2(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xd60(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1030 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
movsd  0xd36(%rip),%xmm3
divsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
addsd  0x20(%rax),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd3d(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xd0b(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0xce9(%rip),%xmm2
divsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
addsd  0x20(%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xce8(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xca6(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
movsd  0xc7c(%rip),%xmm3
divsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
addsd  0x20(%rax),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc83(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  0xc5e(%rip),%xmm0
movsd  %xmm0,0x38(%rax)
mov    -0x10(%rbp),%rax
movsd  0xc25(%rip),%xmm0
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
movsd  0xc14(%rip),%xmm0
movsd  %xmm0,0x68(%rax)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xc1e(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
movsd  0xbfc(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xbda(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x60(%rbp),%xmm0
movsd  0xbb0(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x58(%rbp),%xmm0
movsd  0xb95(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x80(%rax)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xb78(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1030 <sin@plt>
movsd  0xb56(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xb34(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1030 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x50(%rbp),%xmm0
movsd  0xb0a(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
call   1030 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
movsd  0xaef(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x88(%rax)
mov    -0x10(%rbp),%rax
movsd  0xab7(%rip),%xmm0
movsd  %xmm0,0x90(%rax)
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
call   1030 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xa80(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0xa6e(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1030 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x38(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
movsd  0xa44(%rip),%xmm3
divsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
addsd  0x20(%rax),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xa23(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0x9fd(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1030 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x30(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
movsd  0x9d3(%rip),%xmm3
divsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
addsd  0x20(%rax),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x9b2(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xa0(%rax)
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x28(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  0x97e(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0x96c(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x20(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
movsd  0x942(%rip),%xmm3
divsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
addsd  0x20(%rax),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x921(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  0x8fb(%rip),%xmm1
divsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
addsd  0x28(%rax),%xmm0
call   1040 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0x18(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
movsd  0x8d1(%rip),%xmm3
divsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
addsd  0x20(%rax),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x8b0(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xa8(%rax)
mov    -0x10(%rbp),%rax
movsd  0x888(%rip),%xmm0
movsd  %xmm0,0xb8(%rax)
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<car_dyanmics_jacobian>:
push   %r15
push   %r14
push   %rbx
sub    $0x10,%rsp
mov    %rsi,%r14
mov    %rdi,%rbx
movsd  0x8(%rdi),%xmm0
divsd  0xec4(%rip),%xmm0
addsd  0x28(%rdi),%xmm0
call   1040 <cos@plt>
divsd  0xeba(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x8(%rbx),%xmm0
divsd  0xeb0(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1040 <cos@plt>
divsd  0xea6(%rip),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%r14)
movsd  0x8(%rbx),%xmm0
divsd  0xe77(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1030 <sin@plt>
divsd  0xe6d(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x8(%rbx),%xmm0
divsd  0xe63(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1030 <sin@plt>
divsd  0xe59(%rip),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,0x8(%r14)
movabs $0x3fb999999999999a,%rax
99 b9 3f
mov    %rax,0x10(%r14)
movsd  0x8(%rbx),%xmm0
divsd  0xe1b(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1030 <sin@plt>
movapd %xmm0,%xmm2
movsd  (%rbx),%xmm1
divsd  0xe01(%rip),%xmm1
addsd  0x20(%rbx),%xmm1
movsd  0x8(%rbx),%xmm0
xorpd  0xe1f(%rip),%xmm2
mulsd  %xmm1,%xmm2
divsd  0xdeb(%rip),%xmm2
movapd %xmm2,(%rsp)
divsd  0xde6(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1030 <sin@plt>
movsd  (%rbx),%xmm1
divsd  0xdd0(%rip),%xmm1
addsd  0x20(%rbx),%xmm1
mulsd  %xmm0,%xmm1
divsd  0xdc7(%rip),%xmm1
movapd (%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%r14)
movsd  0x8(%rbx),%xmm0
divsd  0xd93(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1040 <cos@plt>
movsd  (%rbx),%xmm2
movsd  0x8(%rbx),%xmm1
divsd  0xd78(%rip),%xmm2
addsd  0x20(%rbx),%xmm2
mulsd  %xmm0,%xmm2
divsd  0xd6f(%rip),%xmm2
movsd  %xmm2,(%rsp)
divsd  0xd6a(%rip),%xmm1
addsd  0x28(%rbx),%xmm1
movapd %xmm1,%xmm0
call   1040 <cos@plt>
movsd  (%rbx),%xmm1
divsd  0xd50(%rip),%xmm1
addsd  0x20(%rbx),%xmm1
mulsd  %xmm0,%xmm1
divsd  0xd47(%rip),%xmm1
addsd  (%rsp),%xmm1
movsd  %xmm1,0x28(%r14)
movaps 0xd5d(%rip),%xmm0
movups %xmm0,0x38(%r14)
movabs $0x3ff0000000000000,%r15
mov    %r15,0x68(%r14)
movsd  0x8(%rbx),%xmm0
divsd  0xcfd(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1040 <cos@plt>
divsd  0xd0b(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x8(%rbx),%xmm0
divsd  0xce9(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1040 <cos@plt>
divsd  0xcef(%rip),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x28(%rbx),%xmm0
call   1040 <cos@plt>
divsd  0xccb(%rip),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,0x80(%r14)
movsd  0x8(%rbx),%xmm0
divsd  0xc90(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1030 <sin@plt>
divsd  0xc9e(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x8(%rbx),%xmm0
divsd  0xc7c(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1030 <sin@plt>
divsd  0xc82(%rip),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x28(%rbx),%xmm0
call   1030 <sin@plt>
divsd  0xc5e(%rip),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,0x88(%r14)
mov    %r15,0x90(%r14)
movsd  0x28(%rbx),%xmm0
movsd  0x20(%rbx),%xmm1
movaps %xmm1,(%rsp)
call   1030 <sin@plt>
movapd (%rsp),%xmm1
xorpd  0xc39(%rip),%xmm1
mulsd  %xmm0,%xmm1
divsd  0xc1d(%rip),%xmm1
movapd %xmm1,(%rsp)
movsd  0x8(%rbx),%xmm0
divsd  0xbeb(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1030 <sin@plt>
movsd  (%rbx),%xmm2
movsd  0x8(%rbx),%xmm1
divsd  0xbd0(%rip),%xmm2
addsd  0x20(%rbx),%xmm2
mulsd  %xmm0,%xmm2
divsd  0xbdf(%rip),%xmm2
movapd (%rsp),%xmm0
subsd  %xmm2,%xmm0
movapd %xmm0,(%rsp)
divsd  0xbb9(%rip),%xmm1
addsd  0x28(%rbx),%xmm1
movapd %xmm1,%xmm0
call   1030 <sin@plt>
movsd  (%rbx),%xmm1
divsd  0xb9f(%rip),%xmm1
addsd  0x20(%rbx),%xmm1
mulsd  %xmm0,%xmm1
divsd  0xba6(%rip),%xmm1
movapd (%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0xa0(%r14)
movsd  0x20(%rbx),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x28(%rbx),%xmm0
call   1040 <cos@plt>
mulsd  (%rsp),%xmm0
divsd  0xb6b(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x8(%rbx),%xmm0
divsd  0xb39(%rip),%xmm0
addsd  0x28(%rbx),%xmm0
call   1040 <cos@plt>
movsd  (%rbx),%xmm2
movsd  0x8(%rbx),%xmm1
divsd  0xb1e(%rip),%xmm2
addsd  0x20(%rbx),%xmm2
mulsd  %xmm0,%xmm2
divsd  0xb2d(%rip),%xmm2
addsd  (%rsp),%xmm2
movsd  %xmm2,(%rsp)
divsd  0xb0b(%rip),%xmm1
addsd  0x28(%rbx),%xmm1
movapd %xmm1,%xmm0
call   1040 <cos@plt>
movsd  (%rbx),%xmm1
divsd  0xaf1(%rip),%xmm1
addsd  0x20(%rbx),%xmm1
mulsd  %xmm0,%xmm1
divsd  0xaf8(%rip),%xmm1
addsd  (%rsp),%xmm1
movsd  %xmm1,0xa8(%r14)
mov    %r15,0xb8(%r14)
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
define void @car_dyanmics_jacobian(double* %0, double* %1) {
%3 = alloca double*
%4 = alloca double*
store double* %0, double** %3
store double* %1, double** %4
%5 = load double*, double** %3
%6 = getelementptr inbounds double, double* %5, i64 1
%7 = load double, double* %6
%8 = fdiv double %7, 1.000000e+01
%9 = load double*, double** %3
%10 = getelementptr inbounds double, double* %9, i64 5
%11 = load double, double* %10
%12 = fadd double %8, %11
%13 = call double @cos(double %12)
%14 = fdiv double %13, 6.000000e+02
%15 = load double*, double** %3
%16 = getelementptr inbounds double, double* %15, i64 1
%17 = load double, double* %16
%18 = fdiv double %17, 2.000000e+01
%19 = load double*, double** %3
%20 = getelementptr inbounds double, double* %19, i64 5
%21 = load double, double* %20
%22 = fadd double %18, %21
%23 = call double @cos(double %22)
%24 = fdiv double %23, 3.000000e+02
%25 = fadd double %14, %24
%26 = load double*, double** %4
%27 = getelementptr inbounds double, double* %26, i64 0
store double %25, double* %27
%28 = load double*, double** %3
%29 = getelementptr inbounds double, double* %28, i64 1
%30 = load double, double* %29
%31 = fdiv double %30, 1.000000e+01
%32 = load double*, double** %3
%33 = getelementptr inbounds double, double* %32, i64 5
%34 = load double, double* %33
%35 = fadd double %31, %34
%36 = call double @sin(double %35)
%37 = fdiv double %36, 6.000000e+02
%38 = load double*, double** %3
%39 = getelementptr inbounds double, double* %38, i64 1
%40 = load double, double* %39
%41 = fdiv double %40, 2.000000e+01
%42 = load double*, double** %3
%43 = getelementptr inbounds double, double* %42, i64 5
%44 = load double, double* %43
%45 = fadd double %41, %44
%46 = call double @sin(double %45)
%47 = fdiv double %46, 3.000000e+02
%48 = fadd double %37, %47
%49 = load double*, double** %4
%50 = getelementptr inbounds double, double* %49, i64 1
store double %48, double* %50
%51 = load double*, double** %4
%52 = getelementptr inbounds double, double* %51, i64 2
store double 1.000000e-01, double* %52
%53 = load double*, double** %3
%54 = getelementptr inbounds double, double* %53, i64 1
%55 = load double, double* %54
%56 = fdiv double %55, 1.000000e+01
%57 = load double*, double** %3
%58 = getelementptr inbounds double, double* %57, i64 5
%59 = load double, double* %58
%60 = fadd double %56, %59
%61 = call double @sin(double %60)
%62 = load double*, double** %3
%63 = getelementptr inbounds double, double* %62, i64 0
%64 = load double, double* %63
%65 = fdiv double %64, 1.000000e+01
%66 = load double*, double** %3
%67 = getelementptr inbounds double, double* %66, i64 4
%68 = load double, double* %67
%69 = fadd double %65, %68
%70 = fmul double %61, %69
%71 = fneg double %70
%72 = fdiv double %71, 6.000000e+02
%73 = load double*, double** %3
%74 = getelementptr inbounds double, double* %73, i64 1
%75 = load double, double* %74
%76 = fdiv double %75, 2.000000e+01
%77 = load double*, double** %3
%78 = getelementptr inbounds double, double* %77, i64 5
%79 = load double, double* %78
%80 = fadd double %76, %79
%81 = call double @sin(double %80)
%82 = load double*, double** %3
%83 = getelementptr inbounds double, double* %82, i64 0
%84 = load double, double* %83
%85 = fdiv double %84, 2.000000e+01
%86 = load double*, double** %3
%87 = getelementptr inbounds double, double* %86, i64 4
%88 = load double, double* %87
%89 = fadd double %85, %88
%90 = fmul double %81, %89
%91 = fdiv double %90, 3.000000e+02
%92 = fsub double %72, %91
%93 = load double*, double** %4
%94 = getelementptr inbounds double, double* %93, i64 4
store double %92, double* %94
%95 = load double*, double** %3
%96 = getelementptr inbounds double, double* %95, i64 1
%97 = load double, double* %96
%98 = fdiv double %97, 1.000000e+01
%99 = load double*, double** %3
%100 = getelementptr inbounds double, double* %99, i64 5
%101 = load double, double* %100
%102 = fadd double %98, %101
%103 = call double @cos(double %102)
%104 = load double*, double** %3
%105 = getelementptr inbounds double, double* %104, i64 0
%106 = load double, double* %105
%107 = fdiv double %106, 1.000000e+01
%108 = load double*, double** %3
%109 = getelementptr inbounds double, double* %108, i64 4
%110 = load double, double* %109
%111 = fadd double %107, %110
%112 = fmul double %103, %111
%113 = fdiv double %112, 6.000000e+02
%114 = load double*, double** %3
%115 = getelementptr inbounds double, double* %114, i64 1
%116 = load double, double* %115
%117 = fdiv double %116, 2.000000e+01
%118 = load double*, double** %3
%119 = getelementptr inbounds double, double* %118, i64 5
%120 = load double, double* %119
%121 = fadd double %117, %120
%122 = call double @cos(double %121)
%123 = load double*, double** %3
%124 = getelementptr inbounds double, double* %123, i64 0
%125 = load double, double* %124
%126 = fdiv double %125, 2.000000e+01
%127 = load double*, double** %3
%128 = getelementptr inbounds double, double* %127, i64 4
%129 = load double, double* %128
%130 = fadd double %126, %129
%131 = fmul double %122, %130
%132 = fdiv double %131, 3.000000e+02
%133 = fadd double %113, %132
%134 = load double*, double** %4
%135 = getelementptr inbounds double, double* %134, i64 5
store double %133, double* %135
%136 = load double*, double** %4
%137 = getelementptr inbounds double, double* %136, i64 7
store double 1.000000e-01, double* %137
%138 = load double*, double** %4
%139 = getelementptr inbounds double, double* %138, i64 8
store double 1.000000e+00, double* %139
%140 = load double*, double** %4
%141 = getelementptr inbounds double, double* %140, i64 13
store double 1.000000e+00, double* %141
%142 = load double*, double** %3
%143 = getelementptr inbounds double, double* %142, i64 1
%144 = load double, double* %143
%145 = fdiv double %144, 1.000000e+01
%146 = load double*, double** %3
%147 = getelementptr inbounds double, double* %146, i64 5
%148 = load double, double* %147
%149 = fadd double %145, %148
%150 = call double @cos(double %149)
%151 = fdiv double %150, 6.000000e+01
%152 = load double*, double** %3
%153 = getelementptr inbounds double, double* %152, i64 1
%154 = load double, double* %153
%155 = fdiv double %154, 2.000000e+01
%156 = load double*, double** %3
%157 = getelementptr inbounds double, double* %156, i64 5
%158 = load double, double* %157
%159 = fadd double %155, %158
%160 = call double @cos(double %159)
%161 = fdiv double %160, 1.500000e+01
%162 = fadd double %151, %161
%163 = load double*, double** %3
%164 = getelementptr inbounds double, double* %163, i64 5
%165 = load double, double* %164
%166 = call double @cos(double %165)
%167 = fdiv double %166, 6.000000e+01
%168 = fadd double %162, %167
%169 = load double*, double** %4
%170 = getelementptr inbounds double, double* %169, i64 16
store double %168, double* %170
%171 = load double*, double** %3
%172 = getelementptr inbounds double, double* %171, i64 1
%173 = load double, double* %172
%174 = fdiv double %173, 1.000000e+01
%175 = load double*, double** %3
%176 = getelementptr inbounds double, double* %175, i64 5
%177 = load double, double* %176
%178 = fadd double %174, %177
%179 = call double @sin(double %178)
%180 = fdiv double %179, 6.000000e+01
%181 = load double*, double** %3
%182 = getelementptr inbounds double, double* %181, i64 1
%183 = load double, double* %182
%184 = fdiv double %183, 2.000000e+01
%185 = load double*, double** %3
%186 = getelementptr inbounds double, double* %185, i64 5
%187 = load double, double* %186
%188 = fadd double %184, %187
%189 = call double @sin(double %188)
%190 = fdiv double %189, 1.500000e+01
%191 = fadd double %180, %190
%192 = load double*, double** %3
%193 = getelementptr inbounds double, double* %192, i64 5
%194 = load double, double* %193
%195 = call double @sin(double %194)
%196 = fdiv double %195, 6.000000e+01
%197 = fadd double %191, %196
%198 = load double*, double** %4
%199 = getelementptr inbounds double, double* %198, i64 17
store double %197, double* %199
%200 = load double*, double** %4
%201 = getelementptr inbounds double, double* %200, i64 18
store double 1.000000e+00, double* %201
%202 = load double*, double** %3
%203 = getelementptr inbounds double, double* %202, i64 4
%204 = load double, double* %203
%205 = load double*, double** %3
%206 = getelementptr inbounds double, double* %205, i64 5
%207 = load double, double* %206
%208 = call double @sin(double %207)
%209 = fmul double %204, %208
%210 = fneg double %209
%211 = fdiv double %210, 6.000000e+01
%212 = load double*, double** %3
%213 = getelementptr inbounds double, double* %212, i64 1
%214 = load double, double* %213
%215 = fdiv double %214, 1.000000e+01
%216 = load double*, double** %3
%217 = getelementptr inbounds double, double* %216, i64 5
%218 = load double, double* %217
%219 = fadd double %215, %218
%220 = call double @sin(double %219)
%221 = load double*, double** %3
%222 = getelementptr inbounds double, double* %221, i64 0
%223 = load double, double* %222
%224 = fdiv double %223, 1.000000e+01
%225 = load double*, double** %3
%226 = getelementptr inbounds double, double* %225, i64 4
%227 = load double, double* %226
%228 = fadd double %224, %227
%229 = fmul double %220, %228
%230 = fdiv double %229, 6.000000e+01
%231 = fsub double %211, %230
%232 = load double*, double** %3
%233 = getelementptr inbounds double, double* %232, i64 1
%234 = load double, double* %233
%235 = fdiv double %234, 2.000000e+01
%236 = load double*, double** %3
%237 = getelementptr inbounds double, double* %236, i64 5
%238 = load double, double* %237
%239 = fadd double %235, %238
%240 = call double @sin(double %239)
%241 = load double*, double** %3
%242 = getelementptr inbounds double, double* %241, i64 0
%243 = load double, double* %242
%244 = fdiv double %243, 2.000000e+01
%245 = load double*, double** %3
%246 = getelementptr inbounds double, double* %245, i64 4
%247 = load double, double* %246
%248 = fadd double %244, %247
%249 = fmul double %240, %248
%250 = fdiv double %249, 1.500000e+01
%251 = fsub double %231, %250
%252 = load double*, double** %4
%253 = getelementptr inbounds double, double* %252, i64 20
store double %251, double* %253
%254 = load double*, double** %3
%255 = getelementptr inbounds double, double* %254, i64 4
%256 = load double, double* %255
%257 = load double*, double** %3
%258 = getelementptr inbounds double, double* %257, i64 5
%259 = load double, double* %258
%260 = call double @cos(double %259)
%261 = fmul double %256, %260
%262 = fdiv double %261, 6.000000e+01
%263 = load double*, double** %3
%264 = getelementptr inbounds double, double* %263, i64 1
%265 = load double, double* %264
%266 = fdiv double %265, 1.000000e+01
%267 = load double*, double** %3
%268 = getelementptr inbounds double, double* %267, i64 5
%269 = load double, double* %268
%270 = fadd double %266, %269
%271 = call double @cos(double %270)
%272 = load double*, double** %3
%273 = getelementptr inbounds double, double* %272, i64 0
%274 = load double, double* %273
%275 = fdiv double %274, 1.000000e+01
%276 = load double*, double** %3
%277 = getelementptr inbounds double, double* %276, i64 4
%278 = load double, double* %277
%279 = fadd double %275, %278
%280 = fmul double %271, %279
%281 = fdiv double %280, 6.000000e+01
%282 = fadd double %262, %281
%283 = load double*, double** %3
%284 = getelementptr inbounds double, double* %283, i64 1
%285 = load double, double* %284
%286 = fdiv double %285, 2.000000e+01
%287 = load double*, double** %3
%288 = getelementptr inbounds double, double* %287, i64 5
%289 = load double, double* %288
%290 = fadd double %286, %289
%291 = call double @cos(double %290)
%292 = load double*, double** %3
%293 = getelementptr inbounds double, double* %292, i64 0
%294 = load double, double* %293
%295 = fdiv double %294, 2.000000e+01
%296 = load double*, double** %3
%297 = getelementptr inbounds double, double* %296, i64 4
%298 = load double, double* %297
%299 = fadd double %295, %298
%300 = fmul double %291, %299
%301 = fdiv double %300, 1.500000e+01
%302 = fadd double %282, %301
%303 = load double*, double** %4
%304 = getelementptr inbounds double, double* %303, i64 21
store double %302, double* %304
%305 = load double*, double** %4
%306 = getelementptr inbounds double, double* %305, i64 23
store double 1.000000e+00, double* %306
ret void
}

LLVM IR (-O2):
define void @car_dyanmics_jacobian(double* nocapture %0, double* nocapture writeonly %1) {
%3 = getelementptr inbounds double, double* %0, i64 1
%4 = load double, double* %3
%5 = fdiv double %4, 1.000000e+01
%6 = getelementptr inbounds double, double* %0, i64 5
%7 = load double, double* %6
%8 = fadd double %5, %7
%9 = tail call double @cos(double %8)
%10 = fdiv double %9, 6.000000e+02
%11 = load double, double* %3
%12 = fdiv double %11, 2.000000e+01
%13 = load double, double* %6
%14 = fadd double %12, %13
%15 = tail call double @cos(double %14)
%16 = fdiv double %15, 3.000000e+02
%17 = fadd double %10, %16
store double %17, double* %1
%18 = load double, double* %3
%19 = fdiv double %18, 1.000000e+01
%20 = load double, double* %6
%21 = fadd double %19, %20
%22 = tail call double @sin(double %21)
%23 = fdiv double %22, 6.000000e+02
%24 = load double, double* %3
%25 = fdiv double %24, 2.000000e+01
%26 = load double, double* %6
%27 = fadd double %25, %26
%28 = tail call double @sin(double %27)
%29 = fdiv double %28, 3.000000e+02
%30 = fadd double %23, %29
%31 = getelementptr inbounds double, double* %1, i64 1
store double %30, double* %31
%32 = getelementptr inbounds double, double* %1, i64 2
store double 1.000000e-01, double* %32
%33 = load double, double* %3
%34 = fdiv double %33, 1.000000e+01
%35 = load double, double* %6
%36 = fadd double %34, %35
%37 = tail call double @sin(double %36)
%38 = load double, double* %0
%39 = fdiv double %38, 1.000000e+01
%40 = getelementptr inbounds double, double* %0, i64 4
%41 = load double, double* %40
%42 = fadd double %39, %41
%43 = fneg double %37
%44 = fmul double %42, %43
%45 = fdiv double %44, 6.000000e+02
%46 = load double, double* %3
%47 = fdiv double %46, 2.000000e+01
%48 = load double, double* %6
%49 = fadd double %47, %48
%50 = tail call double @sin(double %49)
%51 = load double, double* %0
%52 = fdiv double %51, 2.000000e+01
%53 = load double, double* %40
%54 = fadd double %52, %53
%55 = fmul double %50, %54
%56 = fdiv double %55, 3.000000e+02
%57 = fsub double %45, %56
%58 = getelementptr inbounds double, double* %1, i64 4
store double %57, double* %58
%59 = load double, double* %3
%60 = fdiv double %59, 1.000000e+01
%61 = load double, double* %6
%62 = fadd double %60, %61
%63 = tail call double @cos(double %62)
%64 = load double, double* %0
%65 = fdiv double %64, 1.000000e+01
%66 = load double, double* %40
%67 = fadd double %65, %66
%68 = fmul double %63, %67
%69 = fdiv double %68, 6.000000e+02
%70 = load double, double* %3
%71 = fdiv double %70, 2.000000e+01
%72 = load double, double* %6
%73 = fadd double %71, %72
%74 = tail call double @cos(double %73)
%75 = load double, double* %0
%76 = fdiv double %75, 2.000000e+01
%77 = load double, double* %40
%78 = fadd double %76, %77
%79 = fmul double %74, %78
%80 = fdiv double %79, 3.000000e+02
%81 = fadd double %69, %80
%82 = getelementptr inbounds double, double* %1, i64 5
store double %81, double* %82
%83 = getelementptr inbounds double, double* %1, i64 7
%84 = bitcast double* %83 to <2 x double>*
store <2 x double> <double 1.000000e-01, double 1.000000e+00>, <2 x double>* %84
%85 = getelementptr inbounds double, double* %1, i64 13
store double 1.000000e+00, double* %85
%86 = load double, double* %3
%87 = fdiv double %86, 1.000000e+01
%88 = load double, double* %6
%89 = fadd double %87, %88
%90 = tail call double @cos(double %89)
%91 = fdiv double %90, 6.000000e+01
%92 = load double, double* %3
%93 = fdiv double %92, 2.000000e+01
%94 = load double, double* %6
%95 = fadd double %93, %94
%96 = tail call double @cos(double %95)
%97 = fdiv double %96, 1.500000e+01
%98 = fadd double %91, %97
%99 = load double, double* %6
%100 = tail call double @cos(double %99)
%101 = fdiv double %100, 6.000000e+01
%102 = fadd double %98, %101
%103 = getelementptr inbounds double, double* %1, i64 16
store double %102, double* %103
%104 = load double, double* %3
%105 = fdiv double %104, 1.000000e+01
%106 = load double, double* %6
%107 = fadd double %105, %106
%108 = tail call double @sin(double %107)
%109 = fdiv double %108, 6.000000e+01
%110 = load double, double* %3
%111 = fdiv double %110, 2.000000e+01
%112 = load double, double* %6
%113 = fadd double %111, %112
%114 = tail call double @sin(double %113)
%115 = fdiv double %114, 1.500000e+01
%116 = fadd double %109, %115
%117 = load double, double* %6
%118 = tail call double @sin(double %117)
%119 = fdiv double %118, 6.000000e+01
%120 = fadd double %116, %119
%121 = getelementptr inbounds double, double* %1, i64 17
store double %120, double* %121
%122 = getelementptr inbounds double, double* %1, i64 18
store double 1.000000e+00, double* %122
%123 = load double, double* %40
%124 = load double, double* %6
%125 = tail call double @sin(double %124)
%126 = fneg double %123
%127 = fmul double %125, %126
%128 = fdiv double %127, 6.000000e+01
%129 = load double, double* %3
%130 = fdiv double %129, 1.000000e+01
%131 = load double, double* %6
%132 = fadd double %130, %131
%133 = tail call double @sin(double %132)
%134 = load double, double* %0
%135 = fdiv double %134, 1.000000e+01
%136 = load double, double* %40
%137 = fadd double %135, %136
%138 = fmul double %133, %137
%139 = fdiv double %138, 6.000000e+01
%140 = fsub double %128, %139
%141 = load double, double* %3
%142 = fdiv double %141, 2.000000e+01
%143 = load double, double* %6
%144 = fadd double %142, %143
%145 = tail call double @sin(double %144)
%146 = load double, double* %0
%147 = fdiv double %146, 2.000000e+01
%148 = load double, double* %40
%149 = fadd double %147, %148
%150 = fmul double %145, %149
%151 = fdiv double %150, 1.500000e+01
%152 = fsub double %140, %151
%153 = getelementptr inbounds double, double* %1, i64 20
store double %152, double* %153
%154 = load double, double* %40
%155 = load double, double* %6
%156 = tail call double @cos(double %155)
%157 = fmul double %154, %156
%158 = fdiv double %157, 6.000000e+01
%159 = load double, double* %3
%160 = fdiv double %159, 1.000000e+01
%161 = load double, double* %6
%162 = fadd double %160, %161
%163 = tail call double @cos(double %162)
%164 = load double, double* %0
%165 = fdiv double %164, 1.000000e+01
%166 = load double, double* %40
%167 = fadd double %165, %166
%168 = fmul double %163, %167
%169 = fdiv double %168, 6.000000e+01
%170 = fadd double %158, %169
%171 = load double, double* %3
%172 = fdiv double %171, 2.000000e+01
%173 = load double, double* %6
%174 = fadd double %172, %173
%175 = tail call double @cos(double %174)
%176 = load double, double* %0
%177 = fdiv double %176, 2.000000e+01
%178 = load double, double* %40
%179 = fadd double %177, %178
%180 = fmul double %175, %179
%181 = fdiv double %180, 1.500000e+01
%182 = fadd double %170, %181
%183 = getelementptr inbounds double, double* %1, i64 21
store double %182, double* %183
%184 = getelementptr inbounds double, double* %1, i64 23
store double 1.000000e+00, double* %184
ret void
}