#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
float fabs(float);
float sqrt(float);
void airy(float x, float *ai, float *bi, float *aip, float *bip) {
  void bessik(float x, float xnu, float *ri, float *rk, float *rip, float *rkp);
  void bessjy(float x, float xnu, float *rj, float *ry, float *rjp, float *ryp);
  float absx, ri, rip, rj, rjp, rk, rkp, rootx, ry, ryp, z;
  absx = fabs(x);
  rootx = sqrt(absx);
  z = (2.0 * (1.0 / 3.0)) * absx * rootx;
  if (x > 0.0) {
    bessik(z, (1.0 / 3.0), &ri, &rk, &rip, &rkp);
    *ai = rootx * 0.57735027 * rk / 3.1415927;
    *bi = rootx * (rk / 3.1415927 + 2.0 * 0.57735027 * ri);
    bessik(z, (2.0 * (1.0 / 3.0)), &ri, &rk, &rip, &rkp);
    *aip = -x * 0.57735027 * rk / 3.1415927;
    *bip = x * (rk / 3.1415927 + 2.0 * 0.57735027 * ri);
  } else if (x < 0.0) {
    bessjy(z, (1.0 / 3.0), &rj, &ry, &rjp, &ryp);
    *ai = 0.5 * rootx * (rj - 0.57735027 * ry);
    *bi = -0.5 * rootx * (ry + 0.57735027 * rj);
    bessjy(z, (2.0 * (1.0 / 3.0)), &rj, &ry, &rjp, &ryp);
    *aip = 0.5 * absx * (0.57735027 * ry + rj);
    *bip = 0.5 * absx * (0.57735027 * rj - ry);
  } else {
    *ai = 0.35502805;
    *bi = (*ai) / 0.57735027;
    *aip = -0.25881940;
    *bip = -(*aip) / 0.57735027;
  }
}


x86 assembly (clang, -O0):
<airy>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
movss  %xmm0,-0x4(%rbp)
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
movss  -0x4(%rbp),%xmm0
call   1050 <fabs@plt>
movss  %xmm0,-0x2c(%rbp)
movss  -0x2c(%rbp),%xmm0
call   1060 <sqrt@plt>
movss  %xmm0,-0x48(%rbp)
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe74(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x48(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x4(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1314 <airy+0x1d4>
movss  -0x54(%rbp),%xmm0
movss  0xe7b(%rip),%xmm1
lea    -0x30(%rbp),%rdi
lea    -0x40(%rbp),%rsi
lea    -0x34(%rbp),%rdx
lea    -0x44(%rbp),%rcx
call   1030 <bessik@plt>
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe19(%rip),%xmm1
mulsd  %xmm1,%xmm0
movss  -0x40(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe28(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x40(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xdfe(%rip),%xmm1
divsd  %xmm1,%xmm2
movss  -0x30(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xde1(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x54(%rbp),%xmm0
movss  0xdd4(%rip),%xmm1
lea    -0x30(%rbp),%rdi
lea    -0x40(%rbp),%rsi
lea    -0x34(%rbp),%rdx
lea    -0x44(%rbp),%rcx
call   1030 <bessik@plt>
movss  -0x4(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd69(%rip),%xmm1
mulsd  %xmm1,%xmm0
movss  -0x40(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd78(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x4(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x40(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xd4e(%rip),%xmm1
divsd  %xmm1,%xmm2
movss  -0x30(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xd31(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1520 <airy+0x3e0>
movss  -0x4(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    14a6 <airy+0x366>
movss  -0x54(%rbp),%xmm0
movss  0xd0d(%rip),%xmm1
lea    -0x38(%rbp),%rdi
lea    -0x4c(%rbp),%rsi
lea    -0x3c(%rbp),%rdx
lea    -0x50(%rbp),%rcx
call   1040 <bessjy@plt>
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xcb3(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x38(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movss  -0x4c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xca5(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xc74(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x4c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movss  -0x38(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xc46(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x54(%rbp),%xmm0
movss  0xc59(%rip),%xmm1
lea    -0x38(%rbp),%rdi
lea    -0x4c(%rbp),%rsi
lea    -0x3c(%rbp),%rdx
lea    -0x50(%rbp),%rcx
call   1040 <bessjy@plt>
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xc03(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x4c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movss  -0x38(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
movsd  0xbdd(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xbbc(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x38(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movss  -0x4c(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
movsd  0xb7f(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
jmp    151b <airy+0x3db>
mov    -0x10(%rbp),%rax
movss  0xb8a(%rip),%xmm0
movss  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb3e(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x18(%rbp),%rax
movss  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movss  0xb52(%rip),%xmm0
movss  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xafd(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
jmp    1520 <airy+0x3e0>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<airy>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %rcx,%rbp
mov    %rdx,%r15
mov    %rsi,%r12
mov    %rdi,%rbx
movaps 0xeaf(%rip),%xmm1
andps  %xmm0,%xmm1
xorps  %xmm5,%xmm5
ucomiss %xmm5,%xmm1
movaps %xmm0,0x30(%rsp)
jb     116d <airy+0x3d>
movaps %xmm0,%xmm3
xorps  %xmm0,%xmm0
sqrtss %xmm1,%xmm0
jmp    1187 <airy+0x57>
movaps %xmm1,%xmm0
movaps %xmm1,0x20(%rsp)
call   1050 <sqrt@plt>
movaps 0x20(%rsp),%xmm1
xorps  %xmm5,%xmm5
movaps 0x30(%rsp),%xmm3
cvtss2sd %xmm1,%xmm4
movsd  0xe8d(%rip),%xmm1
mulsd  %xmm4,%xmm1
cvtss2sd %xmm0,%xmm2
mulsd  %xmm2,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
ucomiss %xmm5,%xmm3
jbe    12d2 <airy+0x1a2>
xorps  %xmm1,%xmm1
cvtss2sd %xmm3,%xmm1
movsd  %xmm1,0x40(%rsp)
movss  0xe98(%rip),%xmm1
lea    0x8(%rsp),%rdi
lea    0xc(%rsp),%r13
lea    0x14(%rsp),%r14
lea    0x10(%rsp),%rcx
mov    %r13,%rsi
mov    %r14,%rdx
movss  %xmm0,0x20(%rsp)
movsd  %xmm2,0x18(%rsp)
call   1030 <bessik@plt>
movsd  0x18(%rsp),%xmm3
movapd %xmm3,%xmm0
mulsd  0xe3f(%rip),%xmm0
movss  0xc(%rsp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe31(%rip),%xmm2
divsd  %xmm2,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%rbx)
divsd  %xmm2,%xmm1
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  0xe17(%rip),%xmm0
addsd  %xmm1,%xmm0
mulsd  %xmm3,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%r12)
movss  0xe0d(%rip),%xmm1
movss  0x20(%rsp),%xmm0
lea    0x8(%rsp),%rdi
mov    %r13,%rsi
mov    %r14,%rdx
lea    0x10(%rsp),%rcx
call   1030 <bessik@plt>
movaps 0x30(%rsp),%xmm0
xorps  0xd96(%rip),%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  0xdba(%rip),%xmm0
movss  0xc(%rsp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdac(%rip),%xmm2
divsd  %xmm2,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,(%r15)
divsd  %xmm2,%xmm1
movss  0x8(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  0xd91(%rip),%xmm0
addsd  %xmm1,%xmm0
mulsd  0x40(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
jmp    1418 <airy+0x2e8>
xorps  %xmm1,%xmm1
ucomiss %xmm3,%xmm1
jbe    13fb <airy+0x2cb>
movss  0xd76(%rip),%xmm1
lea    0x8(%rsp),%r13
lea    0xc(%rsp),%r14
lea    0x14(%rsp),%rdx
lea    0x10(%rsp),%rcx
mov    %r13,%rdi
mov    %r14,%rsi
movss  %xmm0,0x20(%rsp)
movsd  %xmm2,0x18(%rsp)
movsd  %xmm4,0x30(%rsp)
call   1040 <bessjy@plt>
movsd  0x18(%rsp),%xmm4
movapd %xmm4,%xmm0
mulsd  0xcff(%rip),%xmm0
movss  0x8(%rsp),%xmm1
cvtss2sd %xmm1,%xmm1
movss  0xc(%rsp),%xmm2
cvtss2sd %xmm2,%xmm2
movsd  0xceb(%rip),%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm1,%xmm3
mulsd  %xmm0,%xmm3
xorps  %xmm0,%xmm0
cvtsd2ss %xmm3,%xmm0
mulsd  0xcd8(%rip),%xmm4
movss  %xmm0,(%rbx)
mulsd  0xcd4(%rip),%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm4,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  %xmm0,(%r12)
movss  0xcd7(%rip),%xmm1
movss  0x20(%rsp),%xmm0
mov    %r13,%rdi
mov    %r14,%rsi
lea    0x14(%rsp),%rdx
lea    0x10(%rsp),%rcx
call   1040 <bessjy@plt>
movsd  0x30(%rsp),%xmm3
mulsd  0xc76(%rip),%xmm3
movss  0xc(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  0x8(%rsp),%xmm1
cvtss2sd %xmm1,%xmm1
movaps %xmm0,%xmm2
movsd  0xc6f(%rip),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm1,%xmm2
mulsd  %xmm3,%xmm2
cvtsd2ss %xmm2,%xmm2
movss  %xmm2,(%r15)
mulsd  %xmm4,%xmm1
subsd  %xmm0,%xmm1
mulsd  %xmm3,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
jmp    1418 <airy+0x2e8>
movl   $0x3eb5c63d,(%rbx)
movl   $0x3f1d6bd5,(%r12)
3f
movl   $0xbe8483fa,(%r15)
movss  0xc40(%rip),%xmm0
movss  %xmm0,0x0(%rbp)
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @airy(float %0, float* %1, float* %2, float* %3, float* %4) {
%6 = alloca float
%7 = alloca float*
%8 = alloca float*
%9 = alloca float*
%10 = alloca float*
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca float
%16 = alloca float
%17 = alloca float
%18 = alloca float
%19 = alloca float
%20 = alloca float
%21 = alloca float
store float %0, float* %6
store float* %1, float** %7
store float* %2, float** %8
store float* %3, float** %9
store float* %4, float** %10
%22 = load float, float* %6
%23 = call float @fabs(float %22)
store float %23, float* %11
%24 = load float, float* %11
%25 = call float @sqrt(float %24)
store float %25, float* %18
%26 = load float, float* %11
%27 = fpext float %26 to double
%28 = fmul double 0x3FE5555555555555, %27
%29 = load float, float* %18
%30 = fpext float %29 to double
%31 = fmul double %28, %30
%32 = fptrunc double %31 to float
store float %32, float* %21
%33 = load float, float* %6
%34 = fpext float %33 to double
%35 = fcmp ogt double %34, 0.000000e+00
br i1 %35, label %36, label %80
36: ; preds = %5
%37 = load float, float* %21
%38 = load float, float* %18
%39 = fpext float %38 to double
%40 = fmul double %39, 0x3FE279A745FF939F
%41 = load float, float* %16
%42 = fpext float %41 to double
%43 = fmul double %40, %42
%44 = fdiv double %43, 0x400921FB5A7ED197
%45 = fptrunc double %44 to float
%46 = load float*, float** %7
store float %45, float* %46
%47 = load float, float* %18
%48 = fpext float %47 to double
%49 = load float, float* %16
%50 = fpext float %49 to double
%51 = fdiv double %50, 0x400921FB5A7ED197
%52 = load float, float* %12
%53 = fpext float %52 to double
%54 = call double @llvm.fmuladd.f64(double 0x3FF279A745FF939F, double %53, double %51)
%55 = fmul double %48, %54
%56 = fptrunc double %55 to float
%57 = load float*, float** %8
store float %56, float* %57
%58 = load float, float* %21
%59 = load float, float* %6
%60 = fneg float %59
%61 = fpext float %60 to double
%62 = fmul double %61, 0x3FE279A745FF939F
%63 = load float, float* %16
%64 = fpext float %63 to double
%65 = fmul double %62, %64
%66 = fdiv double %65, 0x400921FB5A7ED197
%67 = fptrunc double %66 to float
%68 = load float*, float** %9
store float %67, float* %68
%69 = load float, float* %6
%70 = fpext float %69 to double
%71 = load float, float* %16
%72 = fpext float %71 to double
%73 = fdiv double %72, 0x400921FB5A7ED197
%74 = load float, float* %12
%75 = fpext float %74 to double
%76 = call double @llvm.fmuladd.f64(double 0x3FF279A745FF939F, double %75, double %73)
%77 = fmul double %70, %76
%78 = fptrunc double %77 to float
%79 = load float*, float** %10
store float %78, float* %79
br label %149
80: ; preds = %5
%81 = load float, float* %6
%82 = fpext float %81 to double
%83 = fcmp olt double %82, 0.000000e+00
br i1 %83, label %84, label %132
84: ; preds = %80
%85 = load float, float* %21
%86 = load float, float* %18
%87 = fpext float %86 to double
%88 = fmul double 5.000000e-01, %87
%89 = load float, float* %14
%90 = fpext float %89 to double
%91 = load float, float* %19
%92 = fpext float %91 to double
%93 = call double @llvm.fmuladd.f64(double 0xBFE279A745FF939F, double %92, double %90)
%94 = fmul double %88, %93
%95 = fptrunc double %94 to float
%96 = load float*, float** %7
store float %95, float* %96
%97 = load float, float* %18
%98 = fpext float %97 to double
%99 = fmul double -5.000000e-01, %98
%100 = load float, float* %19
%101 = fpext float %100 to double
%102 = load float, float* %14
%103 = fpext float %102 to double
%104 = call double @llvm.fmuladd.f64(double 0x3FE279A745FF939F, double %103, double %101)
%105 = fmul double %99, %104
%106 = fptrunc double %105 to float
%107 = load float*, float** %8
store float %106, float* %107
%108 = load float, float* %21
%109 = load float, float* %11
%110 = fpext float %109 to double
%111 = fmul double 5.000000e-01, %110
%112 = load float, float* %19
%113 = fpext float %112 to double
%114 = load float, float* %14
%115 = fpext float %114 to double
%116 = call double @llvm.fmuladd.f64(double 0x3FE279A745FF939F, double %113, double %115)
%117 = fmul double %111, %116
%118 = fptrunc double %117 to float
%119 = load float*, float** %9
store float %118, float* %119
%120 = load float, float* %11
%121 = fpext float %120 to double
%122 = fmul double 5.000000e-01, %121
%123 = load float, float* %14
%124 = fpext float %123 to double
%125 = load float, float* %19
%126 = fpext float %125 to double
%127 = fneg double %126
%128 = call double @llvm.fmuladd.f64(double 0x3FE279A745FF939F, double %124, double %127)
%129 = fmul double %122, %128
%130 = fptrunc double %129 to float
%131 = load float*, float** %10
store float %130, float* %131
br label %148
132: ; preds = %80
%133 = load float*, float** %7
store float 0x3FD6B8C7A0000000, float* %133
%134 = load float*, float** %7
%135 = load float, float* %134
%136 = fpext float %135 to double
%137 = fdiv double %136, 0x3FE279A745FF939F
%138 = fptrunc double %137 to float
%139 = load float*, float** %8
store float %138, float* %139
%140 = load float*, float** %9
store float 0xBFD0907F40000000, float* %140
%141 = load float*, float** %9
%142 = load float, float* %141
%143 = fneg float %142
%144 = fpext float %143 to double
%145 = fdiv double %144, 0x3FE279A745FF939F
%146 = fptrunc double %145 to float
%147 = load float*, float** %10
store float %146, float* %147
br label %148
148: ; preds = %132, %84
br label %149
149: ; preds = %148, %36
ret void
}

LLVM IR (-O2):
define void @airy(float %0, float* nocapture writeonly %1, float* nocapture writeonly %2, float* nocapture writeonly %3, float* nocapture writeonly %4) {
%6 = alloca float
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = bitcast float* %6 to i8*
%15 = bitcast float* %7 to i8*
%16 = bitcast float* %8 to i8*
%17 = bitcast float* %9 to i8*
%18 = bitcast float* %10 to i8*
%19 = bitcast float* %11 to i8*
%20 = bitcast float* %12 to i8*
%21 = bitcast float* %13 to i8*
%22 = tail call float @llvm.fabs.f32(float %0)
%23 = tail call float @sqrt(float %22)
%24 = fpext float %22 to double
%25 = fmul double %24, 0x3FE5555555555555
%26 = fpext float %23 to double
%27 = fmul double %25, %26
%28 = fptrunc double %27 to float
%29 = fcmp ogt float %0, 0.000000e+00
br i1 %29, label %30, label %58
30: ; preds = %5
%31 = fpext float %0 to double
%32 = fmul double %26, 0x3FE279A745FF939F
%33 = load float, float* %10
%34 = fpext float %33 to double
%35 = fmul double %32, %34
%36 = fdiv double %35, 0x400921FB5A7ED197
%37 = fptrunc double %36 to float
store float %37, float* %1
%38 = fdiv double %34, 0x400921FB5A7ED197
%39 = load float, float* %6
%40 = fpext float %39 to double
%41 = call double @llvm.fmuladd.f64(double %40, double 0x3FF279A745FF939F, double %38)
%42 = fmul double %41, %26
%43 = fptrunc double %42 to float
store float %43, float* %2
%44 = fneg float %0
%45 = fpext float %44 to double
%46 = fmul double %45, 0x3FE279A745FF939F
%47 = load float, float* %10
%48 = fpext float %47 to double
%49 = fmul double %46, %48
%50 = fdiv double %49, 0x400921FB5A7ED197
%51 = fptrunc double %50 to float
store float %51, float* %3
%52 = fdiv double %48, 0x400921FB5A7ED197
%53 = load float, float* %6
%54 = fpext float %53 to double
%55 = call double @llvm.fmuladd.f64(double %54, double 0x3FF279A745FF939F, double %52)
%56 = fmul double %55, %31
%57 = fptrunc double %56 to float
br label %86
58: ; preds = %5
%59 = fcmp olt float %0, 0.000000e+00
br i1 %59, label %60, label %85
60: ; preds = %58
%61 = fmul double %26, 5.000000e-01
%62 = load float, float* %8
%63 = fpext float %62 to double
%64 = load float, float* %12
%65 = fpext float %64 to double
%66 = call double @llvm.fmuladd.f64(double %65, double 0xBFE279A745FF939F, double %63)
%67 = fmul double %61, %66
%68 = fptrunc double %67 to float
store float %68, float* %1
%69 = fmul double %26, -5.000000e-01
%70 = call double @llvm.fmuladd.f64(double %63, double 0x3FE279A745FF939F, double %65)
%71 = fmul double %69, %70
%72 = fptrunc double %71 to float
store float %72, float* %2
%73 = fmul double %24, 5.000000e-01
%74 = load float, float* %12
%75 = fpext float %74 to double
%76 = load float, float* %8
%77 = fpext float %76 to double
%78 = call double @llvm.fmuladd.f64(double %75, double 0x3FE279A745FF939F, double %77)
%79 = fmul double %73, %78
%80 = fptrunc double %79 to float
store float %80, float* %3
%81 = fneg double %75
%82 = call double @llvm.fmuladd.f64(double %77, double 0x3FE279A745FF939F, double %81)
%83 = fmul double %73, %82
%84 = fptrunc double %83 to float
br label %86
85: ; preds = %58
store float 0x3FD6B8C7A0000000, float* %1
store float 0x3FE3AD7AA0000000, float* %2
store float 0xBFD0907F40000000, float* %3
br label %86
86: ; preds = %60, %85, %30
%87 = phi float [ %84, %60 ], [ 0x3FDCB0C1A0000000, %85 ], [ %57, %30 ]
store float %87, float* %4
ret void
}