void update_gain_gyro(float p13, float p14, float p23, float p24, float p33,
                      float p34, float p43, float p44, float p53, float p54,
                      float p63, float p64, float p73, float p74, float r44,
                      float r55, float *out_8391242881630657245) {
  out_8391242881630657245[0] =
      p13 * (p44 + r55) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) -
      p14 * p43 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[1] =
      -p13 * p34 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) +
      p14 * (p33 + r44) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[2] =
      p23 * (p44 + r55) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) -
      p24 * p43 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[3] =
      -p23 * p34 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) +
      p24 * (p33 + r44) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[4] =
      p33 * (p44 + r55) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) -
      p34 * p43 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[5] =
      -p33 * p34 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) +
      p34 * (p33 + r44) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[6] =
      -p43 * p44 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) +
      p43 * (p44 + r55) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[7] =
      -p34 * p43 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) +
      p44 * (p33 + r44) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[8] =
      -p43 * p54 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) +
      p53 * (p44 + r55) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[9] =
      -p34 * p53 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) +
      p54 * (p33 + r44) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[10] =
      -p43 * p64 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) +
      p63 * (p44 + r55) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[11] =
      -p34 * p63 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) +
      p64 * (p33 + r44) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[12] =
      -p43 * p74 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) +
      p73 * (p44 + r55) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
  out_8391242881630657245[13] =
      -p34 * p73 / (-p34 * p43 + (-p33 - r44) * (-p44 - r55)) +
      p74 * (p33 + r44) / (-p34 * p43 + (-p33 - r44) * (-p44 - r55));
}


x86 assembly (clang, -O0):
<update_gain_gyro>:
push   %rbp
mov    %rsp,%rbp
movss  0x48(%rbp),%xmm8
movss  0x40(%rbp),%xmm8
movss  0x38(%rbp),%xmm8
movss  0x30(%rbp),%xmm8
movss  0x28(%rbp),%xmm8
movss  0x20(%rbp),%xmm8
movss  0x18(%rbp),%xmm8
movss  0x10(%rbp),%xmm8
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  %xmm2,-0xc(%rbp)
movss  %xmm3,-0x10(%rbp)
movss  %xmm4,-0x14(%rbp)
movss  %xmm5,-0x18(%rbp)
movss  %xmm6,-0x1c(%rbp)
movss  %xmm7,-0x20(%rbp)
mov    %rdi,-0x28(%rbp)
movss  -0x4(%rbp),%xmm0
movss  -0x20(%rbp),%xmm1
addss  0x48(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  -0x8(%rbp),%xmm1
mulss  -0x1c(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x4(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  -0x18(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  -0x8(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
addss  0x40(%rbp),%xmm2
mulss  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0xc(%rbp),%xmm0
movss  -0x20(%rbp),%xmm1
addss  0x48(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  -0x10(%rbp),%xmm1
mulss  -0x1c(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x8(%rax)
movss  -0xc(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  -0x18(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  -0x10(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
addss  0x40(%rbp),%xmm2
mulss  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0xc(%rax)
movss  -0x14(%rbp),%xmm0
movss  -0x20(%rbp),%xmm1
addss  0x48(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  -0x18(%rbp),%xmm1
mulss  -0x1c(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
subss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x10(%rax)
movss  -0x14(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  -0x18(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  -0x18(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
addss  0x40(%rbp),%xmm2
mulss  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x14(%rax)
movss  -0x1c(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  -0x20(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  -0x1c(%rbp),%xmm1
movss  -0x20(%rbp),%xmm2
addss  0x48(%rbp),%xmm2
mulss  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x18(%rax)
movss  -0x18(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  -0x1c(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  -0x20(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
addss  0x40(%rbp),%xmm2
mulss  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x1c(%rax)
movss  -0x1c(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  0x18(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  0x10(%rbp),%xmm1
movss  -0x20(%rbp),%xmm2
addss  0x48(%rbp),%xmm2
mulss  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x20(%rax)
movss  -0x18(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  0x10(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  0x18(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
addss  0x40(%rbp),%xmm2
mulss  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x24(%rax)
movss  -0x1c(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  0x28(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  0x20(%rbp),%xmm1
movss  -0x20(%rbp),%xmm2
addss  0x48(%rbp),%xmm2
mulss  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x28(%rax)
movss  -0x18(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  0x20(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  0x28(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
addss  0x40(%rbp),%xmm2
mulss  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x2c(%rax)
movss  -0x1c(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  0x38(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  0x30(%rbp),%xmm1
movss  -0x20(%rbp),%xmm2
addss  0x48(%rbp),%xmm2
mulss  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x30(%rax)
movss  -0x18(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  0x30(%rbp),%xmm0
movss  -0x18(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  -0x1c(%rbp),%xmm3
movss  -0x14(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
subss  0x40(%rbp),%xmm2
movss  -0x20(%rbp),%xmm4
movd   %xmm4,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm4
subss  0x48(%rbp),%xmm4
mulss  %xmm4,%xmm2
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  0x38(%rbp),%xmm1
movss  -0x14(%rbp),%xmm2
addss  0x40(%rbp),%xmm2
mulss  %xmm2,%xmm1
movss  -0x18(%rbp),%xmm2
movd   %xmm2,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm2
movss  -0x1c(%rbp),%xmm4
movss  -0x14(%rbp),%xmm3
movd   %xmm3,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm3
subss  0x40(%rbp),%xmm3
movss  -0x20(%rbp),%xmm5
movd   %xmm5,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm5
subss  0x48(%rbp),%xmm5
mulss  %xmm5,%xmm3
mulss  %xmm4,%xmm2
addss  %xmm3,%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x34(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<update_gain_gyro>:
movaps %xmm7,%xmm10
movaps %xmm5,%xmm11
movaps %xmm3,%xmm8
movaps %xmm1,%xmm5
movss  0x40(%rsp),%xmm3
movss  0x38(%rsp),%xmm15
movaps 0xedc(%rip),%xmm14
movaps %xmm4,%xmm12
xorps  %xmm14,%xmm12
movaps %xmm12,%xmm9
subss  %xmm15,%xmm9
movaps %xmm7,-0x18(%rsp)
xorps  %xmm14,%xmm7
subss  %xmm3,%xmm7
mulss  %xmm9,%xmm7
movaps %xmm6,%xmm9
unpcklps %xmm11,%xmm9
movaps %xmm9,-0x28(%rsp)
xorps  %xmm14,%xmm9
pshufd $0x55,%xmm9,%xmm13
movdqa %xmm13,%xmm1
mulss  %xmm6,%xmm1
addss  %xmm7,%xmm1
unpcklps %xmm15,%xmm3
unpcklps %xmm4,%xmm10
addps  %xmm10,%xmm3
movaps %xmm0,%xmm7
xorps  %xmm14,%xmm7
xorps  %xmm2,%xmm14
movlhps %xmm3,%xmm7
movlhps %xmm3,%xmm14
shufps $0x22,%xmm14,%xmm7
movss  0x28(%rsp),%xmm10
unpcklps %xmm11,%xmm2
unpcklps %xmm11,%xmm0
movlhps %xmm2,%xmm0
movaps %xmm3,%xmm15
mulps  %xmm7,%xmm0
movaps %xmm6,%xmm2
unpcklps %xmm5,%xmm2
shufps $0x4,%xmm8,%xmm2
movaps %xmm3,%xmm14
movlhps %xmm6,%xmm5
shufps $0x58,%xmm3,%xmm5
movlhps %xmm3,%xmm12
unpcklps %xmm11,%xmm4
shufps $0x40,%xmm3,%xmm11
movaps %xmm3,%xmm8
mulss  %xmm10,%xmm3
mulss  %xmm10,%xmm13
shufps $0x55,%xmm15,%xmm15
shufps $0x42,%xmm9,%xmm12
movss  0x30(%rsp),%xmm10
mulss  %xmm10,%xmm9
mulss  %xmm10,%xmm15
divss  %xmm1,%xmm9
divss  %xmm1,%xmm3
divss  %xmm1,%xmm13
movaps %xmm13,%xmm7
divss  %xmm1,%xmm15
movaps %xmm1,%xmm13
shufps $0x0,%xmm1,%xmm13
divps  %xmm13,%xmm0
shufps $0xd8,%xmm5,%xmm5
mulps  %xmm5,%xmm2
divps  %xmm13,%xmm2
movaps %xmm0,%xmm1
subps  %xmm2,%xmm1
addps  %xmm0,%xmm2
shufps $0xd8,%xmm2,%xmm1
shufps $0xd8,%xmm1,%xmm1
movups %xmm1,(%rdi)
movaps -0x18(%rsp),%xmm1
movaps %xmm1,%xmm0
unpcklps %xmm6,%xmm0
movlhps %xmm0,%xmm4
mulps  %xmm12,%xmm4
divps  %xmm13,%xmm4
movlhps %xmm6,%xmm1
shufps $0x1,%xmm6,%xmm8
shufps $0x22,%xmm1,%xmm8
mulps  %xmm11,%xmm8
divps  %xmm13,%xmm8
movaps %xmm4,%xmm0
subps  %xmm8,%xmm0
addps  %xmm4,%xmm8
movss  %xmm0,%xmm8
movups %xmm8,0x10(%rdi)
movss  0x18(%rsp),%xmm0
movss  0x20(%rsp),%xmm1
movaps %xmm1,%xmm2
unpcklps %xmm0,%xmm2
movss  0x8(%rsp),%xmm4
movss  0x10(%rsp),%xmm5
movaps %xmm5,%xmm6
unpcklps %xmm4,%xmm6
movlhps %xmm2,%xmm6
movaps -0x28(%rsp),%xmm2
movlhps %xmm2,%xmm2
mulps  %xmm2,%xmm6
unpcklps %xmm1,%xmm0
unpcklps %xmm5,%xmm4
movlhps %xmm0,%xmm4
movlhps %xmm14,%xmm14
mulps  %xmm14,%xmm4
divps  %xmm13,%xmm6
divps  %xmm13,%xmm4
subps  %xmm6,%xmm4
movups %xmm4,0x20(%rdi)
addss  %xmm9,%xmm3
movss  %xmm3,0x30(%rdi)
addss  %xmm7,%xmm15
movss  %xmm15,0x34(%rdi)
ret

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

LLVM IR (-O2):
define void @update_gain_gyro(float %0, float %1, float %2, float %3, float %4, float %5, float %6, float %7, float %8, float %9, float %10, float %11, float %12, float %13, float %14, float %15, float* nocapture writeonly %16) {
%18 = fneg float %4
%19 = fsub float %18, %14
%20 = fneg float %7
%21 = fsub float %20, %15
%22 = fmul float %19, %21
%23 = insertelement <2 x float> poison, float %6, i64 0
%24 = insertelement <2 x float> %23, float %5, i64 1
%25 = fneg <2 x float> %24
%26 = shufflevector <2 x float> %25, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
%27 = shufflevector <2 x float> %25, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
%28 = extractelement <2 x float> %25, i64 1
%29 = tail call float @llvm.fmuladd.f32(float %28, float %6, float %22)
%30 = fneg float %0
%31 = insertelement <2 x float> poison, float %7, i64 0
%32 = insertelement <2 x float> %31, float %4, i64 1
%33 = insertelement <2 x float> poison, float %15, i64 0
%34 = insertelement <2 x float> %33, float %14, i64 1
%35 = fadd <2 x float> %32, %34
%36 = shufflevector <2 x float> %35, <2 x float> poison, <4 x i32> <i32 undef, i32 1, i32 undef, i32 undef>
%37 = shufflevector <2 x float> %35, <2 x float> poison, <4 x i32> <i32 undef, i32 1, i32 undef, i32 undef>
%38 = shufflevector <2 x float> %35, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
%39 = shufflevector <2 x float> %35, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
%40 = fneg float %2
%41 = extractelement <2 x float> %35, i64 0
%42 = shufflevector <2 x float> %35, <2 x float> undef, <4 x i32> <i32 0, i32 undef, i32 undef, i32 undef>
%43 = insertelement <4 x float> %42, float %30, i64 1
%44 = insertelement <4 x float> %43, float %41, i64 2
%45 = insertelement <4 x float> %44, float %40, i64 3
%46 = insertelement <4 x float> poison, float %0, i64 0
%47 = insertelement <4 x float> %46, float %5, i64 1
%48 = insertelement <4 x float> %47, float %2, i64 2
%49 = insertelement <4 x float> %48, float %5, i64 3
%50 = fmul <4 x float> %45, %49
%51 = insertelement <4 x float> poison, float %29, i64 0
%52 = shufflevector <4 x float> %51, <4 x float> poison, <4 x i32> zeroinitializer
%53 = fdiv <4 x float> %50, %52
%54 = insertelement <4 x float> poison, float %1, i64 0
%55 = insertelement <4 x float> %54, float %6, i64 2
%56 = extractelement <2 x float> %35, i64 1
%57 = shufflevector <4 x float> %55, <4 x float> %38, <4 x i32> <i32 0, i32 5, i32 2, i32 5>
%58 = insertelement <4 x float> poison, float %6, i64 0
%59 = insertelement <4 x float> %58, float %1, i64 1
%60 = insertelement <4 x float> %59, float %3, i64 2
%61 = insertelement <4 x float> %60, float %3, i64 3
%62 = fmul <4 x float> %57, %61
%63 = fdiv <4 x float> %62, %52
%64 = fsub <4 x float> %53, %63
%65 = fadd <4 x float> %53, %63
%66 = shufflevector <4 x float> %64, <4 x float> %65, <4 x i32> <i32 0, i32 5, i32 2, i32 7>
%67 = bitcast float* %16 to <4 x float>*
store <4 x float> %66, <4 x float>* %67
%68 = getelementptr inbounds float, float* %16, i64 4
%69 = insertelement <4 x float> %42, float %18, i64 1
%70 = extractelement <2 x float> %25, i64 0
%71 = shufflevector <4 x float> %69, <4 x float> %26, <4 x i32> <i32 0, i32 1, i32 4, i32 5>
%72 = insertelement <4 x float> poison, float %4, i64 0
%73 = insertelement <4 x float> %72, float %5, i64 1
%74 = insertelement <4 x float> %73, float %7, i64 2
%75 = insertelement <4 x float> %74, float %6, i64 3
%76 = fmul <4 x float> %71, %75
%77 = fdiv <4 x float> %76, %52
%78 = insertelement <4 x float> poison, float %5, i64 0
%79 = shufflevector <4 x float> %78, <4 x float> poison, <4 x i32> <i32 0, i32 0, i32 undef, i32 undef>
%80 = shufflevector <4 x float> %79, <4 x float> %38, <4 x i32> <i32 0, i32 1, i32 4, i32 undef>
%81 = shufflevector <4 x float> %80, <4 x float> %37, <4 x i32> <i32 0, i32 1, i32 2, i32 5>
%82 = insertelement <4 x float> %58, float %6, i64 2
%83 = insertelement <4 x float> %82, float %7, i64 3
%84 = shufflevector <4 x float> %83, <4 x float> %36, <4 x i32> <i32 0, i32 5, i32 2, i32 3>
%85 = fmul <4 x float> %81, %84
%86 = fdiv <4 x float> %85, %52
%87 = fsub <4 x float> %77, %86
%88 = fadd <4 x float> %77, %86
%89 = shufflevector <4 x float> %87, <4 x float> %88, <4 x i32> <i32 0, i32 5, i32 6, i32 7>
%90 = bitcast float* %68 to <4 x float>*
store <4 x float> %89, <4 x float>* %90
%91 = getelementptr inbounds float, float* %16, i64 8
%92 = insertelement <4 x float> poison, float %9, i64 0
%93 = insertelement <4 x float> %92, float %8, i64 1
%94 = insertelement <4 x float> %93, float %11, i64 2
%95 = insertelement <4 x float> %94, float %10, i64 3
%96 = fmul <4 x float> %27, %95
%97 = fdiv <4 x float> %96, %52
%98 = insertelement <4 x float> poison, float %8, i64 0
%99 = insertelement <4 x float> %98, float %9, i64 1
%100 = insertelement <4 x float> %99, float %10, i64 2
%101 = insertelement <4 x float> %100, float %11, i64 3
%102 = fmul <4 x float> %39, %101
%103 = fdiv <4 x float> %102, %52
%104 = fadd <4 x float> %97, %103
%105 = bitcast float* %91 to <4 x float>*
store <4 x float> %104, <4 x float>* %105
%106 = fmul float %70, %13
%107 = fdiv float %106, %29
%108 = fmul float %41, %12
%109 = fdiv float %108, %29
%110 = fadd float %107, %109
%111 = getelementptr inbounds float, float* %16, i64 12
store float %110, float* %111
%112 = fmul float %28, %12
%113 = fdiv float %112, %29
%114 = fmul float %56, %13
%115 = fdiv float %114, %29
%116 = fadd float %113, %115
%117 = getelementptr inbounds float, float* %16, i64 13
store float %116, float* %117
ret void
}