void get_key(int h, int k, int l, float *sym, int nsym, int *kh, int *kk,
             int *kl) {
  int o, s, a, b, c;
  *kh = h * 1.0f;
  *kk = k * 1.0f;
  *kl = l * 1.0f;
  for (s = -1; s < 2; s = s + 2) {
    for (o = 0; o < nsym; o++) {
      a = s * (sym[12 * o + 0] * h + sym[12 * o + 3] * k + sym[12 * o + 6] * l);
      b = s * (sym[12 * o + 1] * h + sym[12 * o + 4] * k + sym[12 * o + 7] * l);
      c = s * (sym[12 * o + 2] * h + sym[12 * o + 5] * k + sym[12 * o + 8] * l);
      if (c < *kl)
        continue;
      if (c > *kl) {
        *kh = a;
        *kk = b;
        *kl = c;
        continue;
      }
      if (b < *kk)
        continue;
      if (b > *kk) {
        *kh = a;
        *kk = b;
        *kl = c;
        continue;
      }
      if (a <= *kh)
        continue;
      if (a > *kh) {
        *kh = a;
        *kk = b;
        *kl = c;
        continue;
      }
    }
  }
}


x86 assembly (clang, -O0):
<get_key>:
push   %rbp
mov    %rsp,%rbp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    %r9,-0x28(%rbp)
cvtsi2ssl -0x4(%rbp),%xmm0
movss  0xed2(%rip),%xmm1
mulss  %xmm1,%xmm0
cvttss2si %xmm0,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
cvtsi2ssl -0x8(%rbp),%xmm0
movss  0xeb7(%rip),%xmm1
mulss  %xmm1,%xmm0
cvttss2si %xmm0,%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
cvtsi2ssl -0xc(%rbp),%xmm0
movss  0xe9c(%rip),%xmm1
mulss  %xmm1,%xmm0
cvttss2si %xmm0,%ecx
mov    0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0xffffffff,-0x30(%rbp)
cmpl   $0x2,-0x30(%rbp)
jge    13c9 <get_key+0x2c9>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    13b6 <get_key+0x2b6>
cvtsi2ssl -0x30(%rbp),%xmm0
mov    -0x18(%rbp),%rax
imul   $0xc,-0x2c(%rbp),%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm2
cvtsi2ssl -0x4(%rbp),%xmm3
mov    -0x18(%rbp),%rax
imul   $0xc,-0x2c(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtsi2ssl -0x8(%rbp),%xmm4
mulss  %xmm4,%xmm1
mulss  %xmm3,%xmm2
addss  %xmm1,%xmm2
mov    -0x18(%rbp),%rax
imul   $0xc,-0x2c(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtsi2ssl -0xc(%rbp),%xmm3
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
mulss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x34(%rbp)
cvtsi2ssl -0x30(%rbp),%xmm0
mov    -0x18(%rbp),%rax
imul   $0xc,-0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm2
cvtsi2ssl -0x4(%rbp),%xmm3
mov    -0x18(%rbp),%rax
imul   $0xc,-0x2c(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtsi2ssl -0x8(%rbp),%xmm4
mulss  %xmm4,%xmm1
mulss  %xmm3,%xmm2
addss  %xmm1,%xmm2
mov    -0x18(%rbp),%rax
imul   $0xc,-0x2c(%rbp),%ecx
add    $0x7,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtsi2ssl -0xc(%rbp),%xmm3
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
mulss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x38(%rbp)
cvtsi2ssl -0x30(%rbp),%xmm0
mov    -0x18(%rbp),%rax
imul   $0xc,-0x2c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm2
cvtsi2ssl -0x4(%rbp),%xmm3
mov    -0x18(%rbp),%rax
imul   $0xc,-0x2c(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtsi2ssl -0x8(%rbp),%xmm4
mulss  %xmm4,%xmm1
mulss  %xmm3,%xmm2
addss  %xmm1,%xmm2
mov    -0x18(%rbp),%rax
imul   $0xc,-0x2c(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
cvtsi2ssl -0xc(%rbp),%xmm3
mulss  %xmm3,%xmm1
addss  %xmm2,%xmm1
mulss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    0x18(%rbp),%rcx
cmp    (%rcx),%eax
jge    12ee <get_key+0x1ee>
jmp    13a8 <get_key+0x2a8>
mov    -0x3c(%rbp),%eax
mov    0x18(%rbp),%rcx
cmp    (%rcx),%eax
jle    131d <get_key+0x21d>
mov    -0x34(%rbp),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x3c(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    13a8 <get_key+0x2a8>
mov    -0x38(%rbp),%eax
mov    0x10(%rbp),%rcx
cmp    (%rcx),%eax
jge    1331 <get_key+0x231>
jmp    13a8 <get_key+0x2a8>
mov    -0x38(%rbp),%eax
mov    0x10(%rbp),%rcx
cmp    (%rcx),%eax
jle    1360 <get_key+0x260>
mov    -0x34(%rbp),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x3c(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    13a8 <get_key+0x2a8>
mov    -0x34(%rbp),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jg     1374 <get_key+0x274>
jmp    13a8 <get_key+0x2a8>
mov    -0x34(%rbp),%eax
mov    -0x28(%rbp),%rcx
cmp    (%rcx),%eax
jle    13a3 <get_key+0x2a3>
mov    -0x34(%rbp),%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x3c(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,(%rax)
jmp    13a8 <get_key+0x2a8>
jmp    13a8 <get_key+0x2a8>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    118a <get_key+0x8a>
jmp    13bb <get_key+0x2bb>
mov    -0x30(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x30(%rbp)
jmp    1179 <get_key+0x79>
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_key>:
push   %rbp
push   %r14
push   %rbx
cvtsi2ss %edi,%xmm0
cvttss2si %xmm0,%eax
mov    0x28(%rsp),%r11
cvtsi2ss %esi,%xmm1
mov    0x20(%rsp),%r14
mov    %eax,(%r9)
cvttss2si %xmm1,%eax
mov    %eax,(%r14)
cvtsi2ss %edx,%xmm2
cvttss2si %xmm2,%ebp
mov    %ebp,(%r11)
test   %r8d,%r8d
jle    12fc <get_key+0x1fc>
mov    %r8d,%r10d
mov    %r10,%rax
shl    $0x4,%rax
lea    (%rax,%rax,2),%rdi
xor    %eax,%eax
movaps 0xeb1(%rip),%xmm3
jmp    1178 <get_key+0x78>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %edx,(%r9)
mov    %esi,(%r14)
mov    %ebx,(%r11)
mov    %ebx,%ebp
add    $0x30,%rax
cmp    %rax,%rdi
je     1225 <get_key+0x125>
movss  0x14(%rcx,%rax,1),%xmm4
mulss  %xmm1,%xmm4
movss  0x8(%rcx,%rax,1),%xmm5
mulss  %xmm0,%xmm5
addss  %xmm4,%xmm5
movss  0x20(%rcx,%rax,1),%xmm4
mulss  %xmm2,%xmm4
addss  %xmm5,%xmm4
xorps  %xmm3,%xmm4
cvttss2si %xmm4,%ebx
cmp    %ebx,%ebp
jg     116b <get_key+0x6b>
movss  0xc(%rcx,%rax,1),%xmm4
mulss  %xmm1,%xmm4
movss  (%rcx,%rax,1),%xmm5
mulss  %xmm0,%xmm5
addss  %xmm4,%xmm5
movss  0x18(%rcx,%rax,1),%xmm4
mulss  %xmm2,%xmm4
addss  %xmm5,%xmm4
xorps  %xmm3,%xmm4
cvttss2si %xmm4,%edx
movss  0x10(%rcx,%rax,1),%xmm4
mulss  %xmm1,%xmm4
movss  0x4(%rcx,%rax,1),%xmm5
mulss  %xmm0,%xmm5
addss  %xmm4,%xmm5
movss  0x1c(%rcx,%rax,1),%xmm4
mulss  %xmm2,%xmm4
addss  %xmm5,%xmm4
xorps  %xmm3,%xmm4
cvttss2si %xmm4,%esi
jl     1160 <get_key+0x60>
cmp    %esi,(%r14)
jg     116b <get_key+0x6b>
jl     1160 <get_key+0x60>
cmp    %edx,(%r9)
jl     1160 <get_key+0x60>
jmp    116b <get_key+0x6b>
test   %r8d,%r8d
jle    12fc <get_key+0x1fc>
shl    $0x4,%r10
lea    (%r10,%r10,2),%rax
xor    %edi,%edi
jmp    1258 <get_key+0x158>
nopw   0x0(%rax,%rax,1)
mov    %ebx,(%r9)
mov    %esi,(%r14)
mov    %edx,(%r11)
mov    %edx,%ebp
add    $0x30,%rdi
cmp    %rdi,%rax
je     12fc <get_key+0x1fc>
movss  0x14(%rcx,%rdi,1),%xmm3
mulss  %xmm1,%xmm3
movss  0x8(%rcx,%rdi,1),%xmm4
mulss  %xmm0,%xmm4
addss  %xmm3,%xmm4
movss  0x20(%rcx,%rdi,1),%xmm3
mulss  %xmm2,%xmm3
addss  %xmm4,%xmm3
cvttss2si %xmm3,%edx
cmp    %edx,%ebp
jg     124b <get_key+0x14b>
movss  0xc(%rcx,%rdi,1),%xmm3
mulss  %xmm1,%xmm3
movss  (%rcx,%rdi,1),%xmm4
mulss  %xmm0,%xmm4
addss  %xmm3,%xmm4
movss  0x18(%rcx,%rdi,1),%xmm3
mulss  %xmm2,%xmm3
addss  %xmm4,%xmm3
cvttss2si %xmm3,%ebx
movss  0x10(%rcx,%rdi,1),%xmm3
mulss  %xmm1,%xmm3
movss  0x4(%rcx,%rdi,1),%xmm4
mulss  %xmm0,%xmm4
addss  %xmm3,%xmm4
movss  0x1c(%rcx,%rdi,1),%xmm3
mulss  %xmm2,%xmm3
addss  %xmm4,%xmm3
cvttss2si %xmm3,%esi
jl     1240 <get_key+0x140>
cmp    %esi,(%r14)
jg     124b <get_key+0x14b>
jl     1240 <get_key+0x140>
cmp    %ebx,(%r9)
jl     1240 <get_key+0x140>
jmp    124b <get_key+0x14b>
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
define void @get_key(i32 %0, i32 %1, i32 %2, float* %3, i32 %4, i32* %5, i32* %6, i32* %7) {
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca float*
%13 = alloca i32
%14 = alloca i32*
%15 = alloca i32*
%16 = alloca i32*
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
store i32 %0, i32* %9
store i32 %1, i32* %10
store i32 %2, i32* %11
store float* %3, float** %12
store i32 %4, i32* %13
store i32* %5, i32** %14
store i32* %6, i32** %15
store i32* %7, i32** %16
%22 = load i32, i32* %9
%23 = sitofp i32 %22 to float
%24 = fmul float %23, 1.000000e+00
%25 = fptosi float %24 to i32
%26 = load i32*, i32** %14
store i32 %25, i32* %26
%27 = load i32, i32* %10
%28 = sitofp i32 %27 to float
%29 = fmul float %28, 1.000000e+00
%30 = fptosi float %29 to i32
%31 = load i32*, i32** %15
store i32 %30, i32* %31
%32 = load i32, i32* %11
%33 = sitofp i32 %32 to float
%34 = fmul float %33, 1.000000e+00
%35 = fptosi float %34 to i32
%36 = load i32*, i32** %16
store i32 %35, i32* %36
store i32 -1, i32* %18
br label %37
37: ; preds = %206, %8
%38 = load i32, i32* %18
%39 = icmp slt i32 %38, 2
br i1 %39, label %40, label %209
40: ; preds = %37
store i32 0, i32* %17
br label %41
41: ; preds = %202, %40
%42 = load i32, i32* %17
%43 = load i32, i32* %13
%44 = icmp slt i32 %42, %43
br i1 %44, label %45, label %205
45: ; preds = %41
%46 = load i32, i32* %18
%47 = sitofp i32 %46 to float
%48 = load float*, float** %12
%49 = load i32, i32* %17
%50 = mul nsw i32 12, %49
%51 = add nsw i32 %50, 0
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds float, float* %48, i64 %52
%54 = load float, float* %53
%55 = load i32, i32* %9
%56 = sitofp i32 %55 to float
%57 = load float*, float** %12
%58 = load i32, i32* %17
%59 = mul nsw i32 12, %58
%60 = add nsw i32 %59, 3
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds float, float* %57, i64 %61
%63 = load float, float* %62
%64 = load i32, i32* %10
%65 = sitofp i32 %64 to float
%66 = fmul float %63, %65
%67 = call float @llvm.fmuladd.f32(float %54, float %56, float %66)
%68 = load float*, float** %12
%69 = load i32, i32* %17
%70 = mul nsw i32 12, %69
%71 = add nsw i32 %70, 6
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds float, float* %68, i64 %72
%74 = load float, float* %73
%75 = load i32, i32* %11
%76 = sitofp i32 %75 to float
%77 = call float @llvm.fmuladd.f32(float %74, float %76, float %67)
%78 = fmul float %47, %77
%79 = fptosi float %78 to i32
store i32 %79, i32* %19
%80 = load i32, i32* %18
%81 = sitofp i32 %80 to float
%82 = load float*, float** %12
%83 = load i32, i32* %17
%84 = mul nsw i32 12, %83
%85 = add nsw i32 %84, 1
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds float, float* %82, i64 %86
%88 = load float, float* %87
%89 = load i32, i32* %9
%90 = sitofp i32 %89 to float
%91 = load float*, float** %12
%92 = load i32, i32* %17
%93 = mul nsw i32 12, %92
%94 = add nsw i32 %93, 4
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds float, float* %91, i64 %95
%97 = load float, float* %96
%98 = load i32, i32* %10
%99 = sitofp i32 %98 to float
%100 = fmul float %97, %99
%101 = call float @llvm.fmuladd.f32(float %88, float %90, float %100)
%102 = load float*, float** %12
%103 = load i32, i32* %17
%104 = mul nsw i32 12, %103
%105 = add nsw i32 %104, 7
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds float, float* %102, i64 %106
%108 = load float, float* %107
%109 = load i32, i32* %11
%110 = sitofp i32 %109 to float
%111 = call float @llvm.fmuladd.f32(float %108, float %110, float %101)
%112 = fmul float %81, %111
%113 = fptosi float %112 to i32
store i32 %113, i32* %20
%114 = load i32, i32* %18
%115 = sitofp i32 %114 to float
%116 = load float*, float** %12
%117 = load i32, i32* %17
%118 = mul nsw i32 12, %117
%119 = add nsw i32 %118, 2
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds float, float* %116, i64 %120
%122 = load float, float* %121
%123 = load i32, i32* %9
%124 = sitofp i32 %123 to float
%125 = load float*, float** %12
%126 = load i32, i32* %17
%127 = mul nsw i32 12, %126
%128 = add nsw i32 %127, 5
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds float, float* %125, i64 %129
%131 = load float, float* %130
%132 = load i32, i32* %10
%133 = sitofp i32 %132 to float
%134 = fmul float %131, %133
%135 = call float @llvm.fmuladd.f32(float %122, float %124, float %134)
%136 = load float*, float** %12
%137 = load i32, i32* %17
%138 = mul nsw i32 12, %137
%139 = add nsw i32 %138, 8
%140 = sext i32 %139 to i64
%141 = getelementptr inbounds float, float* %136, i64 %140
%142 = load float, float* %141
%143 = load i32, i32* %11
%144 = sitofp i32 %143 to float
%145 = call float @llvm.fmuladd.f32(float %142, float %144, float %135)
%146 = fmul float %115, %145
%147 = fptosi float %146 to i32
store i32 %147, i32* %21
%148 = load i32, i32* %21
%149 = load i32*, i32** %16
%150 = load i32, i32* %149
%151 = icmp slt i32 %148, %150
br i1 %151, label %152, label %153
152: ; preds = %45
br label %202
153: ; preds = %45
%154 = load i32, i32* %21
%155 = load i32*, i32** %16
%156 = load i32, i32* %155
%157 = icmp sgt i32 %154, %156
br i1 %157, label %158, label %165
158: ; preds = %153
%159 = load i32, i32* %19
%160 = load i32*, i32** %14
store i32 %159, i32* %160
%161 = load i32, i32* %20
%162 = load i32*, i32** %15
store i32 %161, i32* %162
%163 = load i32, i32* %21
%164 = load i32*, i32** %16
store i32 %163, i32* %164
br label %202
165: ; preds = %153
%166 = load i32, i32* %20
%167 = load i32*, i32** %15
%168 = load i32, i32* %167
%169 = icmp slt i32 %166, %168
br i1 %169, label %170, label %171
170: ; preds = %165
br label %202
171: ; preds = %165
%172 = load i32, i32* %20
%173 = load i32*, i32** %15
%174 = load i32, i32* %173
%175 = icmp sgt i32 %172, %174
br i1 %175, label %176, label %183
176: ; preds = %171
%177 = load i32, i32* %19
%178 = load i32*, i32** %14
store i32 %177, i32* %178
%179 = load i32, i32* %20
%180 = load i32*, i32** %15
store i32 %179, i32* %180
%181 = load i32, i32* %21
%182 = load i32*, i32** %16
store i32 %181, i32* %182
br label %202
183: ; preds = %171
%184 = load i32, i32* %19
%185 = load i32*, i32** %14
%186 = load i32, i32* %185
%187 = icmp sle i32 %184, %186
br i1 %187, label %188, label %189
188: ; preds = %183
br label %202
189: ; preds = %183
%190 = load i32, i32* %19
%191 = load i32*, i32** %14
%192 = load i32, i32* %191
%193 = icmp sgt i32 %190, %192
br i1 %193, label %194, label %201
194: ; preds = %189
%195 = load i32, i32* %19
%196 = load i32*, i32** %14
store i32 %195, i32* %196
%197 = load i32, i32* %20
%198 = load i32*, i32** %15
store i32 %197, i32* %198
%199 = load i32, i32* %21
%200 = load i32*, i32** %16
store i32 %199, i32* %200
br label %202
201: ; preds = %189
br label %202
202: ; preds = %201, %194, %188, %176, %170, %158, %152
%203 = load i32, i32* %17
%204 = add nsw i32 %203, 1
store i32 %204, i32* %17
br label %41
205: ; preds = %41
br label %206
206: ; preds = %205
%207 = load i32, i32* %18
%208 = add nsw i32 %207, 2
store i32 %208, i32* %18
br label %37
209: ; preds = %37
ret void
}

LLVM IR (-O2):
define void @get_key(i32 %0, i32 %1, i32 %2, float* nocapture %3, i32 %4, i32* nocapture %5, i32* nocapture %6, i32* nocapture %7) {
%9 = sitofp i32 %0 to float
%10 = fptosi float %9 to i32
store i32 %10, i32* %5
%11 = sitofp i32 %1 to float
%12 = fptosi float %11 to i32
store i32 %12, i32* %6
%13 = sitofp i32 %2 to float
%14 = fptosi float %13 to i32
store i32 %14, i32* %7
%15 = icmp sgt i32 %4, 0
br i1 %15, label %16, label %140
16: ; preds = %8
%17 = zext i32 %4 to i64
br label %18
18: ; preds = %16, %75
%19 = phi i32 [ %14, %16 ], [ %76, %75 ]
%20 = phi i64 [ 0, %16 ], [ %77, %75 ]
%21 = mul nuw nsw i64 %20, 12
%22 = getelementptr inbounds float, float* %3, i64 %21
%23 = load float, float* %22
%24 = or i64 %21, 3
%25 = getelementptr inbounds float, float* %3, i64 %24
%26 = load float, float* %25
%27 = fmul float %26, %11
%28 = tail call float @llvm.fmuladd.f32(float %23, float %9, float %27)
%29 = add nuw nsw i64 %21, 6
%30 = getelementptr inbounds float, float* %3, i64 %29
%31 = load float, float* %30
%32 = tail call float @llvm.fmuladd.f32(float %31, float %13, float %28)
%33 = fneg float %32
%34 = fptosi float %33 to i32
%35 = or i64 %21, 1
%36 = getelementptr inbounds float, float* %3, i64 %35
%37 = load float, float* %36
%38 = add nuw nsw i64 %21, 4
%39 = getelementptr inbounds float, float* %3, i64 %38
%40 = load float, float* %39
%41 = fmul float %40, %11
%42 = tail call float @llvm.fmuladd.f32(float %37, float %9, float %41)
%43 = add nuw nsw i64 %21, 7
%44 = getelementptr inbounds float, float* %3, i64 %43
%45 = load float, float* %44
%46 = tail call float @llvm.fmuladd.f32(float %45, float %13, float %42)
%47 = fneg float %46
%48 = fptosi float %47 to i32
%49 = or i64 %21, 2
%50 = getelementptr inbounds float, float* %3, i64 %49
%51 = load float, float* %50
%52 = add nuw nsw i64 %21, 5
%53 = getelementptr inbounds float, float* %3, i64 %52
%54 = load float, float* %53
%55 = fmul float %54, %11
%56 = tail call float @llvm.fmuladd.f32(float %51, float %9, float %55)
%57 = add nuw nsw i64 %21, 8
%58 = getelementptr inbounds float, float* %3, i64 %57
%59 = load float, float* %58
%60 = tail call float @llvm.fmuladd.f32(float %59, float %13, float %56)
%61 = fneg float %60
%62 = fptosi float %61 to i32
%63 = icmp sgt i32 %19, %62
br i1 %63, label %75, label %64
64: ; preds = %18
%65 = icmp slt i32 %19, %62
br i1 %65, label %74, label %66
66: ; preds = %64
%67 = load i32, i32* %6
%68 = icmp sgt i32 %67, %48
br i1 %68, label %75, label %69
69: ; preds = %66
%70 = icmp slt i32 %67, %48
br i1 %70, label %74, label %71
71: ; preds = %69
%72 = load i32, i32* %5
%73 = icmp slt i32 %72, %34
br i1 %73, label %74, label %75
74: ; preds = %71, %69, %64
store i32 %34, i32* %5
store i32 %48, i32* %6
store i32 %62, i32* %7
br label %75
75: ; preds = %74, %71, %66, %18
%76 = phi i32 [ %19, %71 ], [ %19, %66 ], [ %19, %18 ], [ %62, %74 ]
%77 = add nuw nsw i64 %20, 1
%78 = icmp eq i64 %77, %17
br i1 %78, label %79, label %18
79: ; preds = %75
br i1 %15, label %80, label %140
80: ; preds = %79
%81 = zext i32 %4 to i64
br label %82
82: ; preds = %136, %80
%83 = phi i32 [ %76, %80 ], [ %137, %136 ]
%84 = phi i64 [ 0, %80 ], [ %138, %136 ]
%85 = mul nuw nsw i64 %84, 12
%86 = getelementptr inbounds float, float* %3, i64 %85
%87 = load float, float* %86
%88 = or i64 %85, 3
%89 = getelementptr inbounds float, float* %3, i64 %88
%90 = load float, float* %89
%91 = fmul float %90, %11
%92 = tail call float @llvm.fmuladd.f32(float %87, float %9, float %91)
%93 = add nuw nsw i64 %85, 6
%94 = getelementptr inbounds float, float* %3, i64 %93
%95 = load float, float* %94
%96 = tail call float @llvm.fmuladd.f32(float %95, float %13, float %92)
%97 = fptosi float %96 to i32
%98 = or i64 %85, 1
%99 = getelementptr inbounds float, float* %3, i64 %98
%100 = load float, float* %99
%101 = add nuw nsw i64 %85, 4
%102 = getelementptr inbounds float, float* %3, i64 %101
%103 = load float, float* %102
%104 = fmul float %103, %11
%105 = tail call float @llvm.fmuladd.f32(float %100, float %9, float %104)
%106 = add nuw nsw i64 %85, 7
%107 = getelementptr inbounds float, float* %3, i64 %106
%108 = load float, float* %107
%109 = tail call float @llvm.fmuladd.f32(float %108, float %13, float %105)
%110 = fptosi float %109 to i32
%111 = or i64 %85, 2
%112 = getelementptr inbounds float, float* %3, i64 %111
%113 = load float, float* %112
%114 = add nuw nsw i64 %85, 5
%115 = getelementptr inbounds float, float* %3, i64 %114
%116 = load float, float* %115
%117 = fmul float %116, %11
%118 = tail call float @llvm.fmuladd.f32(float %113, float %9, float %117)
%119 = add nuw nsw i64 %85, 8
%120 = getelementptr inbounds float, float* %3, i64 %119
%121 = load float, float* %120
%122 = tail call float @llvm.fmuladd.f32(float %121, float %13, float %118)
%123 = fptosi float %122 to i32
%124 = icmp sgt i32 %83, %123
br i1 %124, label %136, label %125
125: ; preds = %82
%126 = icmp slt i32 %83, %123
br i1 %126, label %135, label %127
127: ; preds = %125
%128 = load i32, i32* %6
%129 = icmp sgt i32 %128, %110
br i1 %129, label %136, label %130
130: ; preds = %127
%131 = icmp slt i32 %128, %110
br i1 %131, label %135, label %132
132: ; preds = %130
%133 = load i32, i32* %5
%134 = icmp slt i32 %133, %97
br i1 %134, label %135, label %136
135: ; preds = %125, %130, %132
store i32 %97, i32* %5
store i32 %110, i32* %6
store i32 %123, i32* %7
br label %136
136: ; preds = %135, %132, %127, %82
%137 = phi i32 [ %83, %132 ], [ %83, %127 ], [ %83, %82 ], [ %123, %135 ]
%138 = add nuw nsw i64 %84, 1
%139 = icmp eq i64 %138, %81
br i1 %139, label %140, label %82
140: ; preds = %136, %8, %79
ret void
}