void VectorRotXZ(float *vIn, float inc, int flagStop) {
  float alpha, beta;
  float mod;
  float maxAngle = 90.0f * 0.0174533f - 0.00872665f;
  mod = (float)sqrt((vIn[0]) * (vIn[0]) + (vIn[1]) * (vIn[1]) +
                    (vIn[2]) * (vIn[2]));
  if (mod < 0.0001f)
    return;
  vIn[0] = vIn[0] / mod;
  vIn[1] = vIn[1] / mod;
  vIn[2] = vIn[2] / mod;
  if (fabs(vIn[1]) > sin(maxAngle))
    return;
  alpha = (float)acos(vIn[2] / sqrt(vIn[0] * vIn[0] + vIn[2] * vIn[2]));
  if (vIn[0] < 0.0f)
    alpha = 2.0f * 3.14159265359f - alpha;
  beta = (float)asin(vIn[1]);
  if (flagStop) {
    beta += inc;
    if (beta > maxAngle)
      beta = maxAngle;
    else if (beta < -maxAngle)
      beta = -maxAngle;
  } else {
    if (alpha > 3.14159265359f)
      beta += inc;
    else
      beta -= inc;
  }
  vIn[0] = (float)cos(beta) * (float)sin(alpha);
  vIn[1] = (float)sin(beta);
  vIn[2] = (float)cos(beta) * (float)cos(alpha);
  vIn[0] = vIn[0] * mod;
  vIn[1] = vIn[1] * mod;
  vIn[2] = vIn[2] * mod;
}


x86 assembly (clang, -O0):
<VectorRotXZ>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
movss  %xmm0,-0xc(%rbp)
mov    %esi,-0x10(%rbp)
movss  0xe98(%rip),%xmm0
movss  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movss  (%rax),%xmm1
mov    -0x8(%rbp),%rax
movss  (%rax),%xmm2
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm0
mov    -0x8(%rbp),%rax
mulss  0x4(%rax),%xmm0
mulss  %xmm2,%xmm1
addss  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
call   1070 <sqrt@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  0xe31(%rip),%xmm0
ucomiss -0x1c(%rbp),%xmm0
jbe    11de <VectorRotXZ+0x8e>
jmp    1492 <VectorRotXZ+0x342>
mov    -0x8(%rbp),%rax
movss  (%rax),%xmm0
divss  -0x1c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm0
divss  -0x1c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x4(%rax)
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm0
divss  -0x1c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movaps 0xddb(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movss  -0x20(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x28(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1263 <VectorRotXZ+0x113>
jmp    1492 <VectorRotXZ+0x342>
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movss  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movss  (%rax),%xmm2
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulss  0x8(%rax),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
call   1070 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x30(%rbp),%xmm0
divsd  %xmm1,%xmm0
call   1030 <acos@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x14(%rbp)
mov    -0x8(%rbp),%rax
xorps  %xmm0,%xmm0
ucomiss (%rax),%xmm0
jbe    12e4 <VectorRotXZ+0x194>
movss  0xd2e(%rip),%xmm0
subss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
call   1050 <asin@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x18(%rbp)
cmpl   $0x0,-0x10(%rbp)
je     1377 <VectorRotXZ+0x227>
movss  -0xc(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x18(%rbp),%xmm0
ucomiss -0x20(%rbp),%xmm0
jbe    1336 <VectorRotXZ+0x1e6>
movss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
jmp    1372 <VectorRotXZ+0x222>
movss  -0x18(%rbp),%xmm1
movss  -0x20(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
ucomiss %xmm1,%xmm0
jbe    136d <VectorRotXZ+0x21d>
movss  -0x20(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0x18(%rbp)
jmp    1372 <VectorRotXZ+0x222>
jmp    13b9 <VectorRotXZ+0x269>
movss  -0x14(%rbp),%xmm0
movss  0xc88(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    13a1 <VectorRotXZ+0x251>
movss  -0xc(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
jmp    13b4 <VectorRotXZ+0x264>
movss  -0xc(%rbp),%xmm1
movss  -0x18(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x18(%rbp)
jmp    13b9 <VectorRotXZ+0x269>
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1060 <cos@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x14(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1040 <sin@plt>
movaps %xmm0,%xmm1
movss  -0x38(%rbp),%xmm0
cvtsd2ss %xmm1,%xmm1
mulss  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1040 <sin@plt>
cvtsd2ss %xmm0,%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x18(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1060 <cos@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x14(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movss  -0x34(%rbp),%xmm0
cvtsd2ss %xmm1,%xmm1
mulss  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x8(%rax)
mov    -0x8(%rbp),%rax
movss  (%rax),%xmm0
mulss  -0x1c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movss  0x4(%rax),%xmm0
mulss  -0x1c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x4(%rax)
mov    -0x8(%rbp),%rax
movss  0x8(%rax),%xmm0
mulss  -0x1c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movss  %xmm0,0x8(%rax)
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<VectorRotXZ>:
push   %rbp
push   %rbx
sub    $0x28,%rsp
mov    %esi,%ebp
movss  %xmm0,(%rsp)
mov    %rdi,%rbx
movss  (%rdi),%xmm1
movss  0x4(%rdi),%xmm0
mulss  %xmm0,%xmm0
mulss  %xmm1,%xmm1
addss  %xmm0,%xmm1
movss  0x8(%rdi),%xmm0
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     11a0 <VectorRotXZ+0x40>
sqrtss %xmm0,%xmm3
jmp    11a8 <VectorRotXZ+0x48>
call   1060 <sqrtf@plt>
movaps %xmm0,%xmm3
movss  0xe50(%rip),%xmm0
ucomiss %xmm3,%xmm0
ja     136b <VectorRotXZ+0x20b>
movss  (%rbx),%xmm0
movss  0x4(%rbx),%xmm2
divss  %xmm3,%xmm0
movss  %xmm0,(%rbx)
divss  %xmm3,%xmm2
movss  %xmm2,0x4(%rbx)
movss  0x8(%rbx),%xmm1
divss  %xmm3,%xmm1
movss  %xmm1,0x8(%rbx)
andps  0xe38(%rip),%xmm2
cvtss2sd %xmm2,%xmm2
ucomisd 0xe3c(%rip),%xmm2
ja     136b <VectorRotXZ+0x20b>
xorps  %xmm2,%xmm2
cvtss2sd %xmm1,%xmm2
mulss  %xmm1,%xmm1
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movss  %xmm3,0xc(%rsp)
jb     1226 <VectorRotXZ+0xc6>
sqrtsd %xmm0,%xmm0
jmp    1237 <VectorRotXZ+0xd7>
movsd  %xmm2,0x10(%rsp)
call   1080 <sqrt@plt>
movsd  0x10(%rsp),%xmm2
divsd  %xmm0,%xmm2
movapd %xmm2,%xmm0
call   1030 <acos@plt>
cvtsd2ss %xmm0,%xmm0
movss  0xdb4(%rip),%xmm1
subss  %xmm0,%xmm1
movss  (%rbx),%xmm4
movss  0x4(%rbx),%xmm2
xorps  %xmm3,%xmm3
cmpltss %xmm3,%xmm4
andps  %xmm4,%xmm1
andnps %xmm0,%xmm4
orps   %xmm1,%xmm4
movaps %xmm4,0x10(%rsp)
xorps  %xmm0,%xmm0
cvtss2sd %xmm2,%xmm0
call   1050 <asin@plt>
cvtsd2ss %xmm0,%xmm0
test   %ebp,%ebp
je     12ae <VectorRotXZ+0x14e>
addss  (%rsp),%xmm0
movss  0xd74(%rip),%xmm1
ucomiss %xmm1,%xmm0
ja     12cb <VectorRotXZ+0x16b>
movss  0xd6b(%rip),%xmm2
ucomiss %xmm0,%xmm2
movaps %xmm0,%xmm1
jbe    12cb <VectorRotXZ+0x16b>
movaps %xmm2,%xmm1
jmp    12cb <VectorRotXZ+0x16b>
movaps 0x10(%rsp),%xmm1
ucomiss 0xd56(%rip),%xmm1
jbe    12c3 <VectorRotXZ+0x163>
addss  (%rsp),%xmm0
jmp    12c8 <VectorRotXZ+0x168>
subss  (%rsp),%xmm0
movaps %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
movsd  %xmm0,(%rsp)
call   1070 <cos@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x8(%rsp)
movaps 0x10(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x10(%rsp)
call   1040 <sin@plt>
cvtsd2ss %xmm0,%xmm0
mulss  0x8(%rsp),%xmm0
movss  %xmm0,(%rbx)
movsd  (%rsp),%xmm0
call   1040 <sin@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0x4(%rbx)
movsd  (%rsp),%xmm0
call   1070 <cos@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rsp)
movsd  0x10(%rsp),%xmm0
call   1070 <cos@plt>
cvtsd2ss %xmm0,%xmm0
mulss  (%rsp),%xmm0
movss  (%rbx),%xmm1
movss  0xc(%rsp),%xmm2
mulss  %xmm2,%xmm1
movss  %xmm1,(%rbx)
movss  0x4(%rbx),%xmm1
mulss  %xmm2,%xmm1
movss  %xmm1,0x4(%rbx)
mulss  %xmm2,%xmm0
movss  %xmm0,0x8(%rbx)
add    $0x28,%rsp
pop    %rbx
pop    %rbp
ret

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

LLVM IR (-O2):
define void @VectorRotXZ(float* nocapture %0, float %1, i32 %2) {
%4 = load float, float* %0
%5 = getelementptr inbounds float, float* %0, i64 1
%6 = load float, float* %5
%7 = fmul float %6, %6
%8 = tail call float @llvm.fmuladd.f32(float %4, float %4, float %7)
%9 = getelementptr inbounds float, float* %0, i64 2
%10 = load float, float* %9
%11 = tail call float @llvm.fmuladd.f32(float %10, float %10, float %8)
%12 = tail call float @sqrtf(float %11)
%13 = fcmp olt float %12, 0x3F1A36E2E0000000
br i1 %13, label %75, label %14
14: ; preds = %3
%15 = load float, float* %0
%16 = fdiv float %15, %12
store float %16, float* %0
%17 = load float, float* %5
%18 = fdiv float %17, %12
store float %18, float* %5
%19 = load float, float* %9
%20 = fdiv float %19, %12
store float %20, float* %9
%21 = tail call float @llvm.fabs.f32(float %18)
%22 = fpext float %21 to double
%23 = fcmp ogt double %22, 0x3FEFFFB028D4575E
br i1 %23, label %75, label %24
24: ; preds = %14
%25 = fpext float %20 to double
%26 = fmul float %20, %20
%27 = tail call float @llvm.fmuladd.f32(float %16, float %16, float %26)
%28 = fpext float %27 to double
%29 = tail call double @sqrt(double %28)
%30 = fdiv double %25, %29
%31 = tail call double @acos(double %30)
%32 = fptrunc double %31 to float
%33 = load float, float* %0
%34 = fcmp olt float %33, 0.000000e+00
%35 = fsub float 0x401921FB60000000, %32
%36 = select i1 %34, float %35, float %32
%37 = load float, float* %5
%38 = fpext float %37 to double
%39 = tail call double @asin(double %38)
%40 = fptrunc double %39 to float
%41 = icmp eq i32 %2, 0
br i1 %41, label %48, label %42
42: ; preds = %24
%43 = fadd float %40, %1
%44 = fcmp ogt float %43, 0x3FF8FE3D80000000
br i1 %44, label %54, label %45
45: ; preds = %42
%46 = fcmp olt float %43, 0xBFF8FE3D80000000
br i1 %46, label %47, label %54
47: ; preds = %45
br label %54
48: ; preds = %24
%49 = fcmp ogt float %36, 0x400921FB60000000
br i1 %49, label %50, label %52
50: ; preds = %48
%51 = fadd float %40, %1
br label %54
52: ; preds = %48
%53 = fsub float %40, %1
br label %54
54: ; preds = %42, %50, %52, %47, %45
%55 = phi float [ 0xBFF8FE3D80000000, %47 ], [ %43, %45 ], [ %51, %50 ], [ %53, %52 ], [ 0x3FF8FE3D80000000, %42 ]
%56 = fpext float %55 to double
%57 = tail call double @cos(double %56)
%58 = fptrunc double %57 to float
%59 = fpext float %36 to double
%60 = tail call double @sin(double %59)
%61 = fptrunc double %60 to float
%62 = fmul float %58, %61
store float %62, float* %0
%63 = tail call double @sin(double %56)
%64 = fptrunc double %63 to float
store float %64, float* %5
%65 = tail call double @cos(double %56)
%66 = fptrunc double %65 to float
%67 = tail call double @cos(double %59)
%68 = fptrunc double %67 to float
%69 = fmul float %66, %68
%70 = load float, float* %0
%71 = fmul float %12, %70
store float %71, float* %0
%72 = load float, float* %5
%73 = fmul float %12, %72
store float %73, float* %5
%74 = fmul float %12, %69
store float %74, float* %9
br label %75
75: ; preds = %14, %3, %54
ret void
}