void kernel_fin(float *initvalu, int initvalu_offset_ecc,
                int initvalu_offset_Dyad, int initvalu_offset_SL,
                int initvalu_offset_Cyt, float *parameter, float *finavalu,
                float JCaDyad, float JCaSL, float JCaCyt) {
  float BtotDyad;
  float CaMKIItotDyad;
  float Vmyo;
  float Vdyad;
  float VSL;
  float kSLmyo;
  float k0Boff;
  float k0Bon;
  float k2Boff;
  float k2Bon;
  float k4Bon;
  float CaMtotDyad;
  float Bdyad;
  float J_cam_dyadSL;
  float J_ca2cam_dyadSL;
  float J_ca4cam_dyadSL;
  float J_cam_SLmyo;
  float J_ca2cam_SLmyo;
  float J_ca4cam_SLmyo;
  BtotDyad = parameter[2];
  CaMKIItotDyad = parameter[3];
  Vmyo = 2.1454e-11;
  Vdyad = 1.7790e-14;
  VSL = 6.6013e-13;
  kSLmyo = 8.587e-15;
  k0Boff = 0.0014;
  k0Bon = k0Boff / 0.2;
  k2Boff = k0Boff / 100;
  k2Bon = k0Bon;
  k4Bon = k0Bon;
  finavalu[initvalu_offset_ecc + 35] =
      finavalu[initvalu_offset_ecc + 35] + 1e-3 * JCaDyad;
  finavalu[initvalu_offset_ecc + 36] =
      finavalu[initvalu_offset_ecc + 36] + 1e-3 * JCaSL;
  finavalu[initvalu_offset_ecc + 37] =
      finavalu[initvalu_offset_ecc + 37] + 1e-3 * JCaCyt;
  CaMtotDyad =
      initvalu[initvalu_offset_Dyad + 0] + initvalu[initvalu_offset_Dyad + 1] +
      initvalu[initvalu_offset_Dyad + 2] + initvalu[initvalu_offset_Dyad + 3] +
      initvalu[initvalu_offset_Dyad + 4] + initvalu[initvalu_offset_Dyad + 5] +
      CaMKIItotDyad * (initvalu[initvalu_offset_Dyad + 6] +
                       initvalu[initvalu_offset_Dyad + 7] +
                       initvalu[initvalu_offset_Dyad + 8] +
                       initvalu[initvalu_offset_Dyad + 9]) +
      initvalu[initvalu_offset_Dyad + 12] +
      initvalu[initvalu_offset_Dyad + 13] + initvalu[initvalu_offset_Dyad + 14];
  Bdyad = BtotDyad - CaMtotDyad;
  J_cam_dyadSL = 1e-3 * (k0Boff * initvalu[initvalu_offset_Dyad + 0] -
                         k0Bon * Bdyad * initvalu[initvalu_offset_SL + 0]);
  J_ca2cam_dyadSL = 1e-3 * (k2Boff * initvalu[initvalu_offset_Dyad + 1] -
                            k2Bon * Bdyad * initvalu[initvalu_offset_SL + 1]);
  J_ca4cam_dyadSL = 1e-3 * (k2Boff * initvalu[initvalu_offset_Dyad + 2] -
                            k4Bon * Bdyad * initvalu[initvalu_offset_SL + 2]);
  J_cam_SLmyo = kSLmyo * (initvalu[initvalu_offset_SL + 0] -
                          initvalu[initvalu_offset_Cyt + 0]);
  J_ca2cam_SLmyo = kSLmyo * (initvalu[initvalu_offset_SL + 1] -
                             initvalu[initvalu_offset_Cyt + 1]);
  J_ca4cam_SLmyo = kSLmyo * (initvalu[initvalu_offset_SL + 2] -
                             initvalu[initvalu_offset_Cyt + 2]);
  finavalu[initvalu_offset_Dyad + 0] =
      finavalu[initvalu_offset_Dyad + 0] - J_cam_dyadSL;
  finavalu[initvalu_offset_Dyad + 1] =
      finavalu[initvalu_offset_Dyad + 1] - J_ca2cam_dyadSL;
  finavalu[initvalu_offset_Dyad + 2] =
      finavalu[initvalu_offset_Dyad + 2] - J_ca4cam_dyadSL;
  finavalu[initvalu_offset_SL + 0] = finavalu[initvalu_offset_SL + 0] +
                                     J_cam_dyadSL * Vdyad / VSL -
                                     J_cam_SLmyo / VSL;
  finavalu[initvalu_offset_SL + 1] = finavalu[initvalu_offset_SL + 1] +
                                     J_ca2cam_dyadSL * Vdyad / VSL -
                                     J_ca2cam_SLmyo / VSL;
  finavalu[initvalu_offset_SL + 2] = finavalu[initvalu_offset_SL + 2] +
                                     J_ca4cam_dyadSL * Vdyad / VSL -
                                     J_ca4cam_SLmyo / VSL;
  finavalu[initvalu_offset_Cyt + 0] =
      finavalu[initvalu_offset_Cyt + 0] + J_cam_SLmyo / Vmyo;
  finavalu[initvalu_offset_Cyt + 1] =
      finavalu[initvalu_offset_Cyt + 1] + J_ca2cam_SLmyo / Vmyo;
  finavalu[initvalu_offset_Cyt + 2] =
      finavalu[initvalu_offset_Cyt + 2] + J_ca4cam_SLmyo / Vmyo;
}


x86 assembly (clang, -O0):
<kernel_fin>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
mov    %r9,-0x20(%rbp)
movss  %xmm0,-0x24(%rbp)
movss  %xmm1,-0x28(%rbp)
movss  %xmm2,-0x2c(%rbp)
mov    -0x20(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0x30(%rbp)
mov    -0x20(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  0xed4(%rip),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  0xec3(%rip),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  0xeb2(%rip),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  0xea1(%rip),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  0xe90(%rip),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe6e(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x48(%rbp),%xmm0
movss  0xe5c(%rip),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x58(%rbp)
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x23,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe08(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x23,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x24,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x28(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xdc3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x24,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x25,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd7e(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x25,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm1
movss  -0x34(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm2
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x7,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm2
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm2
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x9,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0xc,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0xd,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x30(%rbp),%xmm0
subss  -0x5c(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x48(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm2
movss  -0x4c(%rbp),%xmm1
mulss  -0x60(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
mulss  (%rax,%rcx,4),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xc01(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x50(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm2
movss  -0x54(%rbp),%xmm1
mulss  -0x60(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulss  (%rax,%rcx,4),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xba0(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x50(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm2
movss  -0x58(%rbp),%xmm1
mulss  -0x60(%rbp),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mulss  (%rax,%rcx,4),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xb3f(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x44(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x44(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x44(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
mov    0x10(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
subss  -0x64(%rbp),%xmm0
mov    0x10(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
subss  -0x68(%rbp),%xmm0
mov    0x10(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
subss  -0x6c(%rbp),%xmm0
mov    0x10(%rbp),%rax
mov    -0x10(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x64(%rbp),%xmm1
mulss  -0x3c(%rbp),%xmm1
divss  -0x40(%rbp),%xmm1
addss  %xmm1,%xmm0
movss  -0x70(%rbp),%xmm1
divss  -0x40(%rbp),%xmm1
subss  %xmm1,%xmm0
mov    0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x68(%rbp),%xmm1
mulss  -0x3c(%rbp),%xmm1
divss  -0x40(%rbp),%xmm1
addss  %xmm1,%xmm0
movss  -0x74(%rbp),%xmm1
divss  -0x40(%rbp),%xmm1
subss  %xmm1,%xmm0
mov    0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x6c(%rbp),%xmm1
mulss  -0x3c(%rbp),%xmm1
divss  -0x40(%rbp),%xmm1
addss  %xmm1,%xmm0
movss  -0x78(%rbp),%xmm1
divss  -0x40(%rbp),%xmm1
subss  %xmm1,%xmm0
mov    0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x70(%rbp),%xmm1
divss  -0x38(%rbp),%xmm1
addss  %xmm1,%xmm0
mov    0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x74(%rbp),%xmm1
divss  -0x38(%rbp),%xmm1
addss  %xmm1,%xmm0
mov    0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
movss  -0x78(%rbp),%xmm1
divss  -0x38(%rbp),%xmm1
addss  %xmm1,%xmm0
mov    0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_fin>:
mov    0x8(%rsp),%rax
movss  0x8(%r9),%xmm3
movss  0xc(%r9),%xmm6
movslq %esi,%rsi
movss  0x8c(%rax,%rsi,4),%xmm4
cvtss2sd %xmm4,%xmm5
cvtss2sd %xmm0,%xmm0
movsd  0xed2(%rip),%xmm8
mulsd  %xmm8,%xmm0
addsd  %xmm5,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  0x90(%rax,%rsi,4),%xmm5
movss  %xmm0,0x8c(%rax,%rsi,4)
xorps  %xmm0,%xmm0
cvtss2sd %xmm5,%xmm0
cvtss2sd %xmm1,%xmm1
mulsd  %xmm8,%xmm1
addsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  %xmm0,0x90(%rax,%rsi,4)
movss  0x94(%rax,%rsi,4),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm2,%xmm1
mulsd  %xmm8,%xmm1
addsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  %xmm0,0x94(%rax,%rsi,4)
movslq %edx,%rdx
movss  (%rdi,%rdx,4),%xmm7
movss  0x4(%rdi,%rdx,4),%xmm2
movaps %xmm7,%xmm0
addss  %xmm2,%xmm0
movss  0x8(%rdi,%rdx,4),%xmm5
addss  %xmm5,%xmm0
addss  0xc(%rdi,%rdx,4),%xmm0
addss  0x10(%rdi,%rdx,4),%xmm0
addss  0x14(%rdi,%rdx,4),%xmm0
movss  0x18(%rdi,%rdx,4),%xmm1
addss  0x1c(%rdi,%rdx,4),%xmm1
addss  0x20(%rdi,%rdx,4),%xmm1
addss  0x24(%rdi,%rdx,4),%xmm1
mulss  %xmm6,%xmm1
addss  %xmm0,%xmm1
addss  0x30(%rdi,%rdx,4),%xmm1
addss  0x34(%rdi,%rdx,4),%xmm1
addss  0x38(%rdi,%rdx,4),%xmm1
subss  %xmm1,%xmm3
movslq %ecx,%rcx
mulss  0xdf8(%rip),%xmm3
movss  (%rdi,%rcx,4),%xmm0
movss  0x4(%rdi,%rcx,4),%xmm9
movaps %xmm0,%xmm6
mulss  %xmm3,%xmm6
mulss  0xde1(%rip),%xmm7
addss  %xmm6,%xmm7
xorps  %xmm6,%xmm6
cvtss2sd %xmm7,%xmm6
mulsd  %xmm8,%xmm6
cvtsd2ss %xmm6,%xmm6
movaps %xmm9,%xmm7
mulss  %xmm3,%xmm7
movss  0xdc1(%rip),%xmm4
mulss  %xmm4,%xmm2
addss  %xmm7,%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm8,%xmm2
xorps  %xmm7,%xmm7
cvtsd2ss %xmm2,%xmm7
movss  0x8(%rdi,%rcx,4),%xmm2
mulss  %xmm2,%xmm3
mulss  %xmm4,%xmm5
addss  %xmm3,%xmm5
xorps  %xmm3,%xmm3
cvtss2sd %xmm5,%xmm3
mulsd  %xmm8,%xmm3
cvtsd2ss %xmm3,%xmm3
movslq %r8d,%rsi
subss  (%rdi,%rsi,4),%xmm0
movss  0xd7a(%rip),%xmm8
subss  0x4(%rdi,%rsi,4),%xmm9
subss  0x8(%rdi,%rsi,4),%xmm2
mulss  %xmm8,%xmm0
movss  (%rax,%rdx,4),%xmm5
subss  %xmm6,%xmm5
movss  %xmm5,(%rax,%rdx,4)
movss  0x4(%rax,%rdx,4),%xmm5
movss  0x8(%rax,%rdx,4),%xmm4
subss  %xmm7,%xmm5
movss  %xmm5,0x4(%rax,%rdx,4)
subss  %xmm3,%xmm4
movss  %xmm4,0x8(%rax,%rdx,4)
movss  0xd36(%rip),%xmm4
mulss  %xmm4,%xmm6
movss  0xd2e(%rip),%xmm5
divss  %xmm5,%xmm6
addss  (%rax,%rcx,4),%xmm6
movaps %xmm0,%xmm1
divss  %xmm5,%xmm1
subss  %xmm1,%xmm6
mulss  %xmm8,%xmm9
movss  %xmm6,(%rax,%rcx,4)
mulss  %xmm4,%xmm7
divss  %xmm5,%xmm7
addss  0x4(%rax,%rcx,4),%xmm7
mulss  %xmm8,%xmm2
movaps %xmm9,%xmm1
divss  %xmm5,%xmm1
subss  %xmm1,%xmm7
movss  %xmm7,0x4(%rax,%rcx,4)
mulss  %xmm4,%xmm3
divss  %xmm5,%xmm3
addss  0x8(%rax,%rcx,4),%xmm3
movaps %xmm2,%xmm1
divss  %xmm5,%xmm1
subss  %xmm1,%xmm3
movss  %xmm3,0x8(%rax,%rcx,4)
movss  0xcc8(%rip),%xmm1
divss  %xmm1,%xmm0
addss  (%rax,%rsi,4),%xmm0
movss  %xmm0,(%rax,%rsi,4)
divss  %xmm1,%xmm9
addss  0x4(%rax,%rsi,4),%xmm9
movss  %xmm9,0x4(%rax,%rsi,4)
divss  %xmm1,%xmm2
addss  0x8(%rax,%rsi,4),%xmm2
movss  %xmm2,0x8(%rax,%rsi,4)
ret

LLVM IR (-O0):
define void @kernel_fin(float* %0, i32 %1, i32 %2, i32 %3, i32 %4, float* %5, float* %6, float %7, float %8, float %9) {
%11 = alloca float*
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca float*
%17 = alloca float*
%18 = alloca float
%19 = alloca float
%20 = alloca float
%21 = alloca float
%22 = alloca float
%23 = alloca float
%24 = alloca float
%25 = alloca float
%26 = alloca float
%27 = alloca float
%28 = alloca float
%29 = alloca float
%30 = alloca float
%31 = alloca float
%32 = alloca float
%33 = alloca float
%34 = alloca float
%35 = alloca float
%36 = alloca float
%37 = alloca float
%38 = alloca float
%39 = alloca float
store float* %0, float** %11
store i32 %1, i32* %12
store i32 %2, i32* %13
store i32 %3, i32* %14
store i32 %4, i32* %15
store float* %5, float** %16
store float* %6, float** %17
store float %7, float* %18
store float %8, float* %19
store float %9, float* %20
%40 = load float*, float** %16
%41 = getelementptr inbounds float, float* %40, i64 2
%42 = load float, float* %41
store float %42, float* %21
%43 = load float*, float** %16
%44 = getelementptr inbounds float, float* %43, i64 3
%45 = load float, float* %44
store float %45, float* %22
store float 0x3DB796C3A0000000, float* %23
store float 0x3D14079E40000000, float* %24
store float 0x3D6739EC20000000, float* %25
store float 0x3D03561180000000, float* %26
store float 0x3F56F00680000000, float* %27
%46 = load float, float* %27
%47 = fpext float %46 to double
%48 = fdiv double %47, 2.000000e-01
%49 = fptrunc double %48 to float
store float %49, float* %28
%50 = load float, float* %27
%51 = fdiv float %50, 1.000000e+02
store float %51, float* %29
%52 = load float, float* %28
store float %52, float* %30
%53 = load float, float* %28
store float %53, float* %31
%54 = load float*, float** %17
%55 = load i32, i32* %12
%56 = add nsw i32 %55, 35
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds float, float* %54, i64 %57
%59 = load float, float* %58
%60 = fpext float %59 to double
%61 = load float, float* %18
%62 = fpext float %61 to double
%63 = call double @llvm.fmuladd.f64(double 1.000000e-03, double %62, double %60)
%64 = fptrunc double %63 to float
%65 = load float*, float** %17
%66 = load i32, i32* %12
%67 = add nsw i32 %66, 35
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds float, float* %65, i64 %68
store float %64, float* %69
%70 = load float*, float** %17
%71 = load i32, i32* %12
%72 = add nsw i32 %71, 36
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds float, float* %70, i64 %73
%75 = load float, float* %74
%76 = fpext float %75 to double
%77 = load float, float* %19
%78 = fpext float %77 to double
%79 = call double @llvm.fmuladd.f64(double 1.000000e-03, double %78, double %76)
%80 = fptrunc double %79 to float
%81 = load float*, float** %17
%82 = load i32, i32* %12
%83 = add nsw i32 %82, 36
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds float, float* %81, i64 %84
store float %80, float* %85
%86 = load float*, float** %17
%87 = load i32, i32* %12
%88 = add nsw i32 %87, 37
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds float, float* %86, i64 %89
%91 = load float, float* %90
%92 = fpext float %91 to double
%93 = load float, float* %20
%94 = fpext float %93 to double
%95 = call double @llvm.fmuladd.f64(double 1.000000e-03, double %94, double %92)
%96 = fptrunc double %95 to float
%97 = load float*, float** %17
%98 = load i32, i32* %12
%99 = add nsw i32 %98, 37
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds float, float* %97, i64 %100
store float %96, float* %101
%102 = load float*, float** %11
%103 = load i32, i32* %13
%104 = add nsw i32 %103, 0
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds float, float* %102, i64 %105
%107 = load float, float* %106
%108 = load float*, float** %11
%109 = load i32, i32* %13
%110 = add nsw i32 %109, 1
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds float, float* %108, i64 %111
%113 = load float, float* %112
%114 = fadd float %107, %113
%115 = load float*, float** %11
%116 = load i32, i32* %13
%117 = add nsw i32 %116, 2
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds float, float* %115, i64 %118
%120 = load float, float* %119
%121 = fadd float %114, %120
%122 = load float*, float** %11
%123 = load i32, i32* %13
%124 = add nsw i32 %123, 3
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds float, float* %122, i64 %125
%127 = load float, float* %126
%128 = fadd float %121, %127
%129 = load float*, float** %11
%130 = load i32, i32* %13
%131 = add nsw i32 %130, 4
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds float, float* %129, i64 %132
%134 = load float, float* %133
%135 = fadd float %128, %134
%136 = load float*, float** %11
%137 = load i32, i32* %13
%138 = add nsw i32 %137, 5
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds float, float* %136, i64 %139
%141 = load float, float* %140
%142 = fadd float %135, %141
%143 = load float, float* %22
%144 = load float*, float** %11
%145 = load i32, i32* %13
%146 = add nsw i32 %145, 6
%147 = sext i32 %146 to i64
%148 = getelementptr inbounds float, float* %144, i64 %147
%149 = load float, float* %148
%150 = load float*, float** %11
%151 = load i32, i32* %13
%152 = add nsw i32 %151, 7
%153 = sext i32 %152 to i64
%154 = getelementptr inbounds float, float* %150, i64 %153
%155 = load float, float* %154
%156 = fadd float %149, %155
%157 = load float*, float** %11
%158 = load i32, i32* %13
%159 = add nsw i32 %158, 8
%160 = sext i32 %159 to i64
%161 = getelementptr inbounds float, float* %157, i64 %160
%162 = load float, float* %161
%163 = fadd float %156, %162
%164 = load float*, float** %11
%165 = load i32, i32* %13
%166 = add nsw i32 %165, 9
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds float, float* %164, i64 %167
%169 = load float, float* %168
%170 = fadd float %163, %169
%171 = call float @llvm.fmuladd.f32(float %143, float %170, float %142)
%172 = load float*, float** %11
%173 = load i32, i32* %13
%174 = add nsw i32 %173, 12
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds float, float* %172, i64 %175
%177 = load float, float* %176
%178 = fadd float %171, %177
%179 = load float*, float** %11
%180 = load i32, i32* %13
%181 = add nsw i32 %180, 13
%182 = sext i32 %181 to i64
%183 = getelementptr inbounds float, float* %179, i64 %182
%184 = load float, float* %183
%185 = fadd float %178, %184
%186 = load float*, float** %11
%187 = load i32, i32* %13
%188 = add nsw i32 %187, 14
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds float, float* %186, i64 %189
%191 = load float, float* %190
%192 = fadd float %185, %191
store float %192, float* %32
%193 = load float, float* %21
%194 = load float, float* %32
%195 = fsub float %193, %194
store float %195, float* %33
%196 = load float, float* %27
%197 = load float*, float** %11
%198 = load i32, i32* %13
%199 = add nsw i32 %198, 0
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds float, float* %197, i64 %200
%202 = load float, float* %201
%203 = load float, float* %28
%204 = load float, float* %33
%205 = fmul float %203, %204
%206 = load float*, float** %11
%207 = load i32, i32* %14
%208 = add nsw i32 %207, 0
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds float, float* %206, i64 %209
%211 = load float, float* %210
%212 = fmul float %205, %211
%213 = fneg float %212
%214 = call float @llvm.fmuladd.f32(float %196, float %202, float %213)
%215 = fpext float %214 to double
%216 = fmul double 1.000000e-03, %215
%217 = fptrunc double %216 to float
store float %217, float* %34
%218 = load float, float* %29
%219 = load float*, float** %11
%220 = load i32, i32* %13
%221 = add nsw i32 %220, 1
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds float, float* %219, i64 %222
%224 = load float, float* %223
%225 = load float, float* %30
%226 = load float, float* %33
%227 = fmul float %225, %226
%228 = load float*, float** %11
%229 = load i32, i32* %14
%230 = add nsw i32 %229, 1
%231 = sext i32 %230 to i64
%232 = getelementptr inbounds float, float* %228, i64 %231
%233 = load float, float* %232
%234 = fmul float %227, %233
%235 = fneg float %234
%236 = call float @llvm.fmuladd.f32(float %218, float %224, float %235)
%237 = fpext float %236 to double
%238 = fmul double 1.000000e-03, %237
%239 = fptrunc double %238 to float
store float %239, float* %35
%240 = load float, float* %29
%241 = load float*, float** %11
%242 = load i32, i32* %13
%243 = add nsw i32 %242, 2
%244 = sext i32 %243 to i64
%245 = getelementptr inbounds float, float* %241, i64 %244
%246 = load float, float* %245
%247 = load float, float* %31
%248 = load float, float* %33
%249 = fmul float %247, %248
%250 = load float*, float** %11
%251 = load i32, i32* %14
%252 = add nsw i32 %251, 2
%253 = sext i32 %252 to i64
%254 = getelementptr inbounds float, float* %250, i64 %253
%255 = load float, float* %254
%256 = fmul float %249, %255
%257 = fneg float %256
%258 = call float @llvm.fmuladd.f32(float %240, float %246, float %257)
%259 = fpext float %258 to double
%260 = fmul double 1.000000e-03, %259
%261 = fptrunc double %260 to float
store float %261, float* %36
%262 = load float, float* %26
%263 = load float*, float** %11
%264 = load i32, i32* %14
%265 = add nsw i32 %264, 0
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds float, float* %263, i64 %266
%268 = load float, float* %267
%269 = load float*, float** %11
%270 = load i32, i32* %15
%271 = add nsw i32 %270, 0
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds float, float* %269, i64 %272
%274 = load float, float* %273
%275 = fsub float %268, %274
%276 = fmul float %262, %275
store float %276, float* %37
%277 = load float, float* %26
%278 = load float*, float** %11
%279 = load i32, i32* %14
%280 = add nsw i32 %279, 1
%281 = sext i32 %280 to i64
%282 = getelementptr inbounds float, float* %278, i64 %281
%283 = load float, float* %282
%284 = load float*, float** %11
%285 = load i32, i32* %15
%286 = add nsw i32 %285, 1
%287 = sext i32 %286 to i64
%288 = getelementptr inbounds float, float* %284, i64 %287
%289 = load float, float* %288
%290 = fsub float %283, %289
%291 = fmul float %277, %290
store float %291, float* %38
%292 = load float, float* %26
%293 = load float*, float** %11
%294 = load i32, i32* %14
%295 = add nsw i32 %294, 2
%296 = sext i32 %295 to i64
%297 = getelementptr inbounds float, float* %293, i64 %296
%298 = load float, float* %297
%299 = load float*, float** %11
%300 = load i32, i32* %15
%301 = add nsw i32 %300, 2
%302 = sext i32 %301 to i64
%303 = getelementptr inbounds float, float* %299, i64 %302
%304 = load float, float* %303
%305 = fsub float %298, %304
%306 = fmul float %292, %305
store float %306, float* %39
%307 = load float*, float** %17
%308 = load i32, i32* %13
%309 = add nsw i32 %308, 0
%310 = sext i32 %309 to i64
%311 = getelementptr inbounds float, float* %307, i64 %310
%312 = load float, float* %311
%313 = load float, float* %34
%314 = fsub float %312, %313
%315 = load float*, float** %17
%316 = load i32, i32* %13
%317 = add nsw i32 %316, 0
%318 = sext i32 %317 to i64
%319 = getelementptr inbounds float, float* %315, i64 %318
store float %314, float* %319
%320 = load float*, float** %17
%321 = load i32, i32* %13
%322 = add nsw i32 %321, 1
%323 = sext i32 %322 to i64
%324 = getelementptr inbounds float, float* %320, i64 %323
%325 = load float, float* %324
%326 = load float, float* %35
%327 = fsub float %325, %326
%328 = load float*, float** %17
%329 = load i32, i32* %13
%330 = add nsw i32 %329, 1
%331 = sext i32 %330 to i64
%332 = getelementptr inbounds float, float* %328, i64 %331
store float %327, float* %332
%333 = load float*, float** %17
%334 = load i32, i32* %13
%335 = add nsw i32 %334, 2
%336 = sext i32 %335 to i64
%337 = getelementptr inbounds float, float* %333, i64 %336
%338 = load float, float* %337
%339 = load float, float* %36
%340 = fsub float %338, %339
%341 = load float*, float** %17
%342 = load i32, i32* %13
%343 = add nsw i32 %342, 2
%344 = sext i32 %343 to i64
%345 = getelementptr inbounds float, float* %341, i64 %344
store float %340, float* %345
%346 = load float*, float** %17
%347 = load i32, i32* %14
%348 = add nsw i32 %347, 0
%349 = sext i32 %348 to i64
%350 = getelementptr inbounds float, float* %346, i64 %349
%351 = load float, float* %350
%352 = load float, float* %34
%353 = load float, float* %24
%354 = fmul float %352, %353
%355 = load float, float* %25
%356 = fdiv float %354, %355
%357 = fadd float %351, %356
%358 = load float, float* %37
%359 = load float, float* %25
%360 = fdiv float %358, %359
%361 = fsub float %357, %360
%362 = load float*, float** %17
%363 = load i32, i32* %14
%364 = add nsw i32 %363, 0
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds float, float* %362, i64 %365
store float %361, float* %366
%367 = load float*, float** %17
%368 = load i32, i32* %14
%369 = add nsw i32 %368, 1
%370 = sext i32 %369 to i64
%371 = getelementptr inbounds float, float* %367, i64 %370
%372 = load float, float* %371
%373 = load float, float* %35
%374 = load float, float* %24
%375 = fmul float %373, %374
%376 = load float, float* %25
%377 = fdiv float %375, %376
%378 = fadd float %372, %377
%379 = load float, float* %38
%380 = load float, float* %25
%381 = fdiv float %379, %380
%382 = fsub float %378, %381
%383 = load float*, float** %17
%384 = load i32, i32* %14
%385 = add nsw i32 %384, 1
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds float, float* %383, i64 %386
store float %382, float* %387
%388 = load float*, float** %17
%389 = load i32, i32* %14
%390 = add nsw i32 %389, 2
%391 = sext i32 %390 to i64
%392 = getelementptr inbounds float, float* %388, i64 %391
%393 = load float, float* %392
%394 = load float, float* %36
%395 = load float, float* %24
%396 = fmul float %394, %395
%397 = load float, float* %25
%398 = fdiv float %396, %397
%399 = fadd float %393, %398
%400 = load float, float* %39
%401 = load float, float* %25
%402 = fdiv float %400, %401
%403 = fsub float %399, %402
%404 = load float*, float** %17
%405 = load i32, i32* %14
%406 = add nsw i32 %405, 2
%407 = sext i32 %406 to i64
%408 = getelementptr inbounds float, float* %404, i64 %407
store float %403, float* %408
%409 = load float*, float** %17
%410 = load i32, i32* %15
%411 = add nsw i32 %410, 0
%412 = sext i32 %411 to i64
%413 = getelementptr inbounds float, float* %409, i64 %412
%414 = load float, float* %413
%415 = load float, float* %37
%416 = load float, float* %23
%417 = fdiv float %415, %416
%418 = fadd float %414, %417
%419 = load float*, float** %17
%420 = load i32, i32* %15
%421 = add nsw i32 %420, 0
%422 = sext i32 %421 to i64
%423 = getelementptr inbounds float, float* %419, i64 %422
store float %418, float* %423
%424 = load float*, float** %17
%425 = load i32, i32* %15
%426 = add nsw i32 %425, 1
%427 = sext i32 %426 to i64
%428 = getelementptr inbounds float, float* %424, i64 %427
%429 = load float, float* %428
%430 = load float, float* %38
%431 = load float, float* %23
%432 = fdiv float %430, %431
%433 = fadd float %429, %432
%434 = load float*, float** %17
%435 = load i32, i32* %15
%436 = add nsw i32 %435, 1
%437 = sext i32 %436 to i64
%438 = getelementptr inbounds float, float* %434, i64 %437
store float %433, float* %438
%439 = load float*, float** %17
%440 = load i32, i32* %15
%441 = add nsw i32 %440, 2
%442 = sext i32 %441 to i64
%443 = getelementptr inbounds float, float* %439, i64 %442
%444 = load float, float* %443
%445 = load float, float* %39
%446 = load float, float* %23
%447 = fdiv float %445, %446
%448 = fadd float %444, %447
%449 = load float*, float** %17
%450 = load i32, i32* %15
%451 = add nsw i32 %450, 2
%452 = sext i32 %451 to i64
%453 = getelementptr inbounds float, float* %449, i64 %452
store float %448, float* %453
ret void
}

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