float *dna_update_only_a(const float *profa, const float *profb, float *newp,
                         int *path, int sipa, int sipb) {
  int i, c;
  for (i = 22; i--;) {
    newp[i] = profa[i];
  }
  profa += 22;
  profb += 22;
  newp += 22;
  c = 1;
  while (path[c] != 3) {
    if (!path[c]) {
      for (i = 22; i--;) {
        newp[i] = profa[i];
      }
      profa += 22;
      profb += 22;
    }
    if (path[c] & 1) {
      for (i = 22; i--;) {
        newp[i] = 0.0f;
      }
      profb += 22;
      newp[5] = 1000000;
      newp[6] = 1000000;
      newp[7] = 1000000;
    }
    if (path[c] & 2) {
      for (i = 22; i--;) {
        newp[i] = profa[i];
      }
      profa += 22;
    }
    newp += 22;
    c++;
  }
  for (i = 22; i--;) {
    newp[i] = profa[i];
  }
  newp -= (path[0] + 1) * 22;
  return newp;
}


x86 assembly (clang, -O0):
<dna_update_only_a>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8d,-0x24(%rbp)
mov    %r9d,-0x28(%rbp)
movl   $0x16,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x2c(%rbp)
cmp    $0x0,%eax
je     1156 <dna_update_only_a+0x56>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    1123 <dna_update_only_a+0x23>
mov    -0x8(%rbp),%rax
add    $0x58,%rax
mov    %rax,-0x8(%rbp)
mov    -0x10(%rbp),%rax
add    $0x58,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x58,%rax
mov    %rax,-0x18(%rbp)
movl   $0x1,-0x30(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
cmpl   $0x3,(%rax,%rcx,4)
je     12f4 <dna_update_only_a+0x1f4>
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    11f7 <dna_update_only_a+0xf7>
movl   $0x16,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x2c(%rbp)
cmp    $0x0,%eax
je     11df <dna_update_only_a+0xdf>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    11ac <dna_update_only_a+0xac>
mov    -0x8(%rbp),%rax
add    $0x58,%rax
mov    %rax,-0x8(%rbp)
mov    -0x10(%rbp),%rax
add    $0x58,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     127d <dna_update_only_a+0x17d>
movl   $0x16,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x2c(%rbp)
cmp    $0x0,%eax
je     123e <dna_update_only_a+0x13e>
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    1215 <dna_update_only_a+0x115>
mov    -0x10(%rbp),%rax
add    $0x58,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
movss  0xdaa(%rip),%xmm0
movss  %xmm0,0x14(%rax)
mov    -0x18(%rbp),%rax
movss  0xd99(%rip),%xmm0
movss  %xmm0,0x18(%rax)
mov    -0x18(%rbp),%rax
movss  0xd88(%rip),%xmm0
movss  %xmm0,0x1c(%rax)
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     12da <dna_update_only_a+0x1da>
movl   $0x16,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x2c(%rbp)
cmp    $0x0,%eax
je     12ce <dna_update_only_a+0x1ce>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    129b <dna_update_only_a+0x19b>
mov    -0x8(%rbp),%rax
add    $0x58,%rax
mov    %rax,-0x8(%rbp)
mov    -0x18(%rbp),%rax
add    $0x58,%rax
mov    %rax,-0x18(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1181 <dna_update_only_a+0x81>
movl   $0x16,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x2c(%rbp)
cmp    $0x0,%eax
je     132e <dna_update_only_a+0x22e>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    12fb <dna_update_only_a+0x1fb>
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
add    $0x1,%eax
imul   $0x16,%eax,%ecx
mov    -0x18(%rbp),%rax
movslq %ecx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<dna_update_only_a>:
mov    %rdx,%rax
movss  0x54(%rdi),%xmm0
movss  %xmm0,0x54(%rdx)
movss  0x50(%rdi),%xmm0
movss  %xmm0,0x50(%rdx)
movss  0x4c(%rdi),%xmm0
movss  %xmm0,0x4c(%rdx)
movss  0x48(%rdi),%xmm0
movss  %xmm0,0x48(%rdx)
movss  0x44(%rdi),%xmm0
movss  %xmm0,0x44(%rdx)
movss  0x40(%rdi),%xmm0
movss  %xmm0,0x40(%rdx)
movss  0x3c(%rdi),%xmm0
movss  %xmm0,0x3c(%rdx)
movss  0x38(%rdi),%xmm0
movss  %xmm0,0x38(%rdx)
movss  0x34(%rdi),%xmm0
movss  %xmm0,0x34(%rdx)
movss  0x30(%rdi),%xmm0
movss  %xmm0,0x30(%rdx)
movss  0x2c(%rdi),%xmm0
movss  %xmm0,0x2c(%rdx)
movss  0x28(%rdi),%xmm0
movss  %xmm0,0x28(%rdx)
movss  0x24(%rdi),%xmm0
movss  %xmm0,0x24(%rdx)
movss  0x20(%rdi),%xmm0
movss  %xmm0,0x20(%rdx)
movss  0x1c(%rdi),%xmm0
movss  %xmm0,0x1c(%rdx)
movss  0x18(%rdi),%xmm0
movss  %xmm0,0x18(%rdx)
movss  0x14(%rdi),%xmm0
movss  %xmm0,0x14(%rdx)
movss  0x10(%rdi),%xmm0
movss  %xmm0,0x10(%rdx)
movss  0xc(%rdi),%xmm0
movss  %xmm0,0xc(%rdx)
movss  0x8(%rdi),%xmm0
movss  %xmm0,0x8(%rdx)
movss  0x4(%rdi),%xmm0
movss  %xmm0,0x4(%rdx)
movss  (%rdi),%xmm0
movss  %xmm0,(%rdx)
add    $0x58,%rdi
lea    0x4(%rcx),%rdx
add    $0x58,%rax
xorps  %xmm0,%xmm0
movabs $0x4974240049742400,%r8
24 74 49
jmp    12e6 <dna_update_only_a+0x1e6>
nopl   0x0(%rax,%rax,1)
movss  0x54(%rdi),%xmm1
movss  %xmm1,0x54(%rax)
movss  0x50(%rdi),%xmm1
movss  %xmm1,0x50(%rax)
movss  0x4c(%rdi),%xmm1
movss  %xmm1,0x4c(%rax)
movss  0x48(%rdi),%xmm1
movss  %xmm1,0x48(%rax)
movss  0x44(%rdi),%xmm1
movss  %xmm1,0x44(%rax)
movss  0x40(%rdi),%xmm1
movss  %xmm1,0x40(%rax)
movss  0x3c(%rdi),%xmm1
movss  %xmm1,0x3c(%rax)
movss  0x38(%rdi),%xmm1
movss  %xmm1,0x38(%rax)
movss  0x34(%rdi),%xmm1
movss  %xmm1,0x34(%rax)
movss  0x30(%rdi),%xmm1
movss  %xmm1,0x30(%rax)
movss  0x2c(%rdi),%xmm1
movss  %xmm1,0x2c(%rax)
movss  0x28(%rdi),%xmm1
movss  %xmm1,0x28(%rax)
movss  0x24(%rdi),%xmm1
movss  %xmm1,0x24(%rax)
movss  0x20(%rdi),%xmm1
movss  %xmm1,0x20(%rax)
movss  0x1c(%rdi),%xmm1
movss  %xmm1,0x1c(%rax)
movss  0x18(%rdi),%xmm1
movss  %xmm1,0x18(%rax)
movss  0x14(%rdi),%xmm1
movss  %xmm1,0x14(%rax)
movss  0x10(%rdi),%xmm1
movss  %xmm1,0x10(%rax)
movss  0xc(%rdi),%xmm1
movss  %xmm1,0xc(%rax)
movss  0x8(%rdi),%xmm1
movss  %xmm1,0x8(%rax)
movss  0x4(%rdi),%xmm1
movss  %xmm1,0x4(%rax)
movss  (%rdi),%xmm1
movss  %xmm1,(%rax)
add    $0x58,%rdi
add    $0x4,%rdx
add    $0x58,%rax
mov    (%rdx),%esi
test   %esi,%esi
je     1200 <dna_update_only_a+0x100>
cmp    $0x3,%esi
je     132d <dna_update_only_a+0x22d>
test   $0x1,%sil
je     1321 <dna_update_only_a+0x221>
movups %xmm0,0x10(%rax)
movups %xmm0,0x40(%rax)
movups %xmm0,0x30(%rax)
movups %xmm0,0x20(%rax)
movups %xmm0,(%rax)
movq   $0x0,0x50(%rax)
mov    %r8,0x14(%rax)
movl   $0x49742400,0x1c(%rax)
test   $0x2,%sil
jne    1200 <dna_update_only_a+0x100>
jmp    12de <dna_update_only_a+0x1de>
movss  0x54(%rdi),%xmm0
movss  %xmm0,0x54(%rax)
movss  0x50(%rdi),%xmm0
movss  %xmm0,0x50(%rax)
movss  0x4c(%rdi),%xmm0
movss  %xmm0,0x4c(%rax)
movss  0x48(%rdi),%xmm0
movss  %xmm0,0x48(%rax)
movss  0x44(%rdi),%xmm0
movss  %xmm0,0x44(%rax)
movss  0x40(%rdi),%xmm0
movss  %xmm0,0x40(%rax)
movss  0x3c(%rdi),%xmm0
movss  %xmm0,0x3c(%rax)
movss  0x38(%rdi),%xmm0
movss  %xmm0,0x38(%rax)
movss  0x34(%rdi),%xmm0
movss  %xmm0,0x34(%rax)
movss  0x30(%rdi),%xmm0
movss  %xmm0,0x30(%rax)
movss  0x2c(%rdi),%xmm0
movss  %xmm0,0x2c(%rax)
movss  0x28(%rdi),%xmm0
movss  %xmm0,0x28(%rax)
movss  0x24(%rdi),%xmm0
movss  %xmm0,0x24(%rax)
movss  0x20(%rdi),%xmm0
movss  %xmm0,0x20(%rax)
movss  0x1c(%rdi),%xmm0
movss  %xmm0,0x1c(%rax)
movss  0x18(%rdi),%xmm0
movss  %xmm0,0x18(%rax)
movss  0x14(%rdi),%xmm0
movss  %xmm0,0x14(%rax)
movss  0x10(%rdi),%xmm0
movss  %xmm0,0x10(%rax)
movss  0xc(%rdi),%xmm0
movss  %xmm0,0xc(%rax)
movss  0x8(%rdi),%xmm0
movss  %xmm0,0x8(%rax)
movss  0x4(%rdi),%xmm0
movss  %xmm0,0x4(%rax)
movss  (%rdi),%xmm0
movss  %xmm0,(%rax)
mov    (%rcx),%ecx
lea    (%rcx,%rcx,4),%edx
lea    (%rcx,%rdx,4),%edx
add    %edx,%ecx
add    $0x16,%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
sub    %rcx,%rax
ret

LLVM IR (-O0):
define float* @dna_update_only_a(float* %0, float* %1, float* %2, i32* %3, i32 %4, i32 %5) {
%7 = alloca float*
%8 = alloca float*
%9 = alloca float*
%10 = alloca i32*
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
store float* %0, float** %7
store float* %1, float** %8
store float* %2, float** %9
store i32* %3, i32** %10
store i32 %4, i32* %11
store i32 %5, i32* %12
store i32 22, i32* %13
br label %15
15: ; preds = %19, %6
%16 = load i32, i32* %13
%17 = add nsw i32 %16, -1
store i32 %17, i32* %13
%18 = icmp ne i32 %16, 0
br i1 %18, label %19, label %29
19: ; preds = %15
%20 = load float*, float** %7
%21 = load i32, i32* %13
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds float, float* %20, i64 %22
%24 = load float, float* %23
%25 = load float*, float** %9
%26 = load i32, i32* %13
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds float, float* %25, i64 %27
store float %24, float* %28
br label %15
29: ; preds = %15
%30 = load float*, float** %7
%31 = getelementptr inbounds float, float* %30, i64 22
store float* %31, float** %7
%32 = load float*, float** %8
%33 = getelementptr inbounds float, float* %32, i64 22
store float* %33, float** %8
%34 = load float*, float** %9
%35 = getelementptr inbounds float, float* %34, i64 22
store float* %35, float** %9
store i32 1, i32* %14
br label %36
36: ; preds = %123, %29
%37 = load i32*, i32** %10
%38 = load i32, i32* %14
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds i32, i32* %37, i64 %39
%41 = load i32, i32* %40
%42 = icmp ne i32 %41, 3
br i1 %42, label %43, label %128
43: ; preds = %36
%44 = load i32*, i32** %10
%45 = load i32, i32* %14
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds i32, i32* %44, i64 %46
%48 = load i32, i32* %47
%49 = icmp ne i32 %48, 0
br i1 %49, label %70, label %50
50: ; preds = %43
store i32 22, i32* %13
br label %51
51: ; preds = %55, %50
%52 = load i32, i32* %13
%53 = add nsw i32 %52, -1
store i32 %53, i32* %13
%54 = icmp ne i32 %52, 0
br i1 %54, label %55, label %65
55: ; preds = %51
%56 = load float*, float** %7
%57 = load i32, i32* %13
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds float, float* %56, i64 %58
%60 = load float, float* %59
%61 = load float*, float** %9
%62 = load i32, i32* %13
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds float, float* %61, i64 %63
store float %60, float* %64
br label %51
65: ; preds = %51
%66 = load float*, float** %7
%67 = getelementptr inbounds float, float* %66, i64 22
store float* %67, float** %7
%68 = load float*, float** %8
%69 = getelementptr inbounds float, float* %68, i64 22
store float* %69, float** %8
br label %70
70: ; preds = %65, %43
%71 = load i32*, i32** %10
%72 = load i32, i32* %14
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds i32, i32* %71, i64 %73
%75 = load i32, i32* %74
%76 = and i32 %75, 1
%77 = icmp ne i32 %76, 0
br i1 %77, label %78, label %97
78: ; preds = %70
store i32 22, i32* %13
br label %79
79: ; preds = %83, %78
%80 = load i32, i32* %13
%81 = add nsw i32 %80, -1
store i32 %81, i32* %13
%82 = icmp ne i32 %80, 0
br i1 %82, label %83, label %88
83: ; preds = %79
%84 = load float*, float** %9
%85 = load i32, i32* %13
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds float, float* %84, i64 %86
store float 0.000000e+00, float* %87
br label %79
88: ; preds = %79
%89 = load float*, float** %8
%90 = getelementptr inbounds float, float* %89, i64 22
store float* %90, float** %8
%91 = load float*, float** %9
%92 = getelementptr inbounds float, float* %91, i64 5
store float 1.000000e+06, float* %92
%93 = load float*, float** %9
%94 = getelementptr inbounds float, float* %93, i64 6
store float 1.000000e+06, float* %94
%95 = load float*, float** %9
%96 = getelementptr inbounds float, float* %95, i64 7
store float 1.000000e+06, float* %96
br label %97
97: ; preds = %88, %70
%98 = load i32*, i32** %10
%99 = load i32, i32* %14
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds i32, i32* %98, i64 %100
%102 = load i32, i32* %101
%103 = and i32 %102, 2
%104 = icmp ne i32 %103, 0
br i1 %104, label %105, label %123
105: ; preds = %97
store i32 22, i32* %13
br label %106
106: ; preds = %110, %105
%107 = load i32, i32* %13
%108 = add nsw i32 %107, -1
store i32 %108, i32* %13
%109 = icmp ne i32 %107, 0
br i1 %109, label %110, label %120
110: ; preds = %106
%111 = load float*, float** %7
%112 = load i32, i32* %13
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds float, float* %111, i64 %113
%115 = load float, float* %114
%116 = load float*, float** %9
%117 = load i32, i32* %13
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds float, float* %116, i64 %118
store float %115, float* %119
br label %106
120: ; preds = %106
%121 = load float*, float** %7
%122 = getelementptr inbounds float, float* %121, i64 22
store float* %122, float** %7
br label %123
123: ; preds = %120, %97
%124 = load float*, float** %9
%125 = getelementptr inbounds float, float* %124, i64 22
store float* %125, float** %9
%126 = load i32, i32* %14
%127 = add nsw i32 %126, 1
store i32 %127, i32* %14
br label %36
128: ; preds = %36
store i32 22, i32* %13
br label %129
129: ; preds = %133, %128
%130 = load i32, i32* %13
%131 = add nsw i32 %130, -1
store i32 %131, i32* %13
%132 = icmp ne i32 %130, 0
br i1 %132, label %133, label %143
133: ; preds = %129
%134 = load float*, float** %7
%135 = load i32, i32* %13
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds float, float* %134, i64 %136
%138 = load float, float* %137
%139 = load float*, float** %9
%140 = load i32, i32* %13
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds float, float* %139, i64 %141
store float %138, float* %142
br label %129
143: ; preds = %129
%144 = load i32*, i32** %10
%145 = getelementptr inbounds i32, i32* %144, i64 0
%146 = load i32, i32* %145
%147 = add nsw i32 %146, 1
%148 = mul nsw i32 %147, 22
%149 = load float*, float** %9
%150 = sext i32 %148 to i64
%151 = sub i64 0, %150
%152 = getelementptr inbounds float, float* %149, i64 %151
store float* %152, float** %9
%153 = load float*, float** %9
ret float* %153
}

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