Perp(v1, v) double v1[3], v[3];
{
  if ((v[0] != 0.0) && (v[1] != 0.0)) {
    v1[0] = -1.0 / v[0];
    v1[1] = 1.0 / v[1];
    v1[2] = 0.0;
  } else if ((v[1] != 0.0) && (v[2] != 0.0)) {
    v1[0] = 0.0;
    v1[1] = -1.0 / v[1];
    v1[2] = 1.0 / v[2];
  } else if ((v[0] != 0.0) && (v[2] != 0.0)) {
    v1[0] = -1.0 / v[0];
    v1[1] = 0.0;
    v1[2] = 1.0 / v[2];
  } else if ((v[0] == 0.0) && (v[1] == 0.0) && (v[2] != 0.0)) {
    v1[0] = 1.0;
    v1[1] = 0.0;
    v1[2] = 0.0;
  } else if ((v[0] != 0.0) && (v[1] == 0.0) && (v[2] == 0.0)) {
    v1[0] = 0.0;
    v1[1] = 1.0;
    v1[2] = 0.0;
  } else if ((v[0] == 0.0) && (v[1] != 0.0) && (v[2] == 0.0)) {
    v1[0] = 1.0;
    v1[1] = 0.0;
    v1[2] = 0.0;
  } else {
    v1[0] = 1.0;
    v1[1] = 0.0;
    v1[2] = 0.0;
  }
}


x86 assembly (clang, -O0):
<Perp>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    112c <Perp+0x2c>
jp     112c <Perp+0x2c>
jmp    1190 <Perp+0x90>
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    114d <Perp+0x4d>
jp     114d <Perp+0x4d>
jmp    1190 <Perp+0x90>
mov    -0x18(%rbp),%rax
movsd  0xeaf(%rip),%xmm0
divsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  0xe8f(%rip),%xmm0
divsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
jmp    146a <Perp+0x36a>
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11b1 <Perp+0xb1>
jp     11b1 <Perp+0xb1>
jmp    1216 <Perp+0x116>
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11d2 <Perp+0xd2>
jp     11d2 <Perp+0xd2>
jmp    1216 <Perp+0x116>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
movsd  0xe1f(%rip),%xmm0
divsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x18(%rbp),%rax
movsd  0xdfd(%rip),%xmm0
divsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    1465 <Perp+0x365>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1236 <Perp+0x136>
jp     1236 <Perp+0x136>
jmp    129a <Perp+0x19a>
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1257 <Perp+0x157>
jp     1257 <Perp+0x157>
jmp    129a <Perp+0x19a>
mov    -0x18(%rbp),%rax
movsd  0xda5(%rip),%xmm0
divsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x18(%rbp),%rax
movsd  0xd79(%rip),%xmm0
divsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
jmp    1460 <Perp+0x360>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    131f <Perp+0x21f>
jp     131f <Perp+0x21f>
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    131f <Perp+0x21f>
jp     131f <Perp+0x21f>
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12f2 <Perp+0x1f2>
jp     12f2 <Perp+0x1f2>
jmp    131f <Perp+0x21f>
mov    -0x10(%rbp),%rax
movsd  0xd02(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
jmp    145b <Perp+0x35b>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    133f <Perp+0x23f>
jp     133f <Perp+0x23f>
jmp    13a4 <Perp+0x2a4>
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13a4 <Perp+0x2a4>
jp     13a4 <Perp+0x2a4>
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13a4 <Perp+0x2a4>
jp     13a4 <Perp+0x2a4>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0xc72(%rip),%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
jmp    1456 <Perp+0x356>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1429 <Perp+0x329>
jp     1429 <Perp+0x329>
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13e0 <Perp+0x2e0>
jp     13e0 <Perp+0x2e0>
jmp    1429 <Perp+0x329>
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1429 <Perp+0x329>
jp     1429 <Perp+0x329>
mov    -0x10(%rbp),%rax
movsd  0xbf8(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
jmp    1451 <Perp+0x351>
mov    -0x10(%rbp),%rax
movsd  0xbcb(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,0x10(%rax)
jmp    1456 <Perp+0x356>
jmp    145b <Perp+0x35b>
jmp    1460 <Perp+0x360>
jmp    1465 <Perp+0x365>
jmp    146a <Perp+0x36a>
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<Perp>:
movsd  (%rsi),%xmm0
movsd  0x8(%rsi),%xmm1
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
jne    1115 <Perp+0x15>
jnp    1148 <Perp+0x48>
ucomisd %xmm2,%xmm1
jne    111d <Perp+0x1d>
jnp    1148 <Perp+0x48>
movsd  0xee3(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,(%rdi)
movsd  0xecb(%rip),%xmm0
divsd  0x8(%rsi),%xmm0
movsd  %xmm0,0x8(%rdi)
movq   $0x0,0x10(%rdi)
ret
ucomisd %xmm2,%xmm1
jne    1150 <Perp+0x50>
jnp    117c <Perp+0x7c>
movsd  0x10(%rsi),%xmm2
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm2
jne    1161 <Perp+0x61>
jnp    117c <Perp+0x7c>
movq   $0x0,(%rdi)
movsd  0xe98(%rip),%xmm0
divsd  0x8(%rsi),%xmm0
movsd  %xmm0,0x8(%rdi)
jmp    11ad <Perp+0xad>
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
jne    1188 <Perp+0x88>
jnp    11c0 <Perp+0xc0>
movsd  0x10(%rsi),%xmm3
ucomisd %xmm2,%xmm3
jne    1195 <Perp+0x95>
jnp    11c0 <Perp+0xc0>
movsd  0xe6b(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,(%rdi)
movq   $0x0,0x8(%rdi)
movsd  0xe4b(%rip),%xmm0
divsd  0x10(%rsi),%xmm0
movsd  %xmm0,0x10(%rdi)
ret
ucomisd %xmm2,%xmm0
jne    11e1 <Perp+0xe1>
jp     11e1 <Perp+0xe1>
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm1
jne    11e1 <Perp+0xe1>
jp     11e1 <Perp+0xe1>
movsd  0x10(%rsi),%xmm3
ucomisd %xmm2,%xmm3
jne    123c <Perp+0x13c>
jp     123c <Perp+0x13c>
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
jne    11ed <Perp+0xed>
jnp    121f <Perp+0x11f>
ucomisd %xmm2,%xmm1
jne    121f <Perp+0x11f>
jp     121f <Perp+0x11f>
movsd  0x10(%rsi),%xmm3
xorpd  %xmm4,%xmm4
ucomisd %xmm4,%xmm3
jne    121f <Perp+0x11f>
jp     121f <Perp+0x11f>
xorpd  %xmm0,%xmm0
movhpd 0xdee(%rip),%xmm0
movupd %xmm0,(%rdi)
movq   $0x0,0x10(%rdi)
ret
ucomisd %xmm2,%xmm0
jne    123c <Perp+0x13c>
jp     123c <Perp+0x13c>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jne    1233 <Perp+0x133>
jnp    123c <Perp+0x13c>
movsd  0x10(%rsi),%xmm1
ucomisd %xmm0,%xmm1
movabs $0x3ff0000000000000,%rax
mov    %rax,(%rdi)
xorpd  %xmm0,%xmm0
movupd %xmm0,0x8(%rdi)
ret

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

LLVM IR (-O2):
define i32 @Perp(double* writeonly %0, double* nocapture %1) {
%3 = load double, double* %1
%4 = fcmp une double %3, 0.000000e+00
%5 = getelementptr inbounds double, double* %1, i64 1
%6 = load double, double* %5
%7 = fcmp une double %6, 0.000000e+00
%8 = select i1 %4, i1 %7, i1 false
br i1 %8, label %9, label %15
9: ; preds = %2
%10 = fdiv double -1.000000e+00, %3
store double %10, double* %0
%11 = load double, double* %5
%12 = fdiv double 1.000000e+00, %11
%13 = getelementptr inbounds double, double* %0, i64 1
store double %12, double* %13
%14 = getelementptr inbounds double, double* %0, i64 2
store double 0.000000e+00, double* %14
br label %72
15: ; preds = %2
%16 = getelementptr inbounds double, double* %1, i64 1
%17 = fcmp une double %6, 0.000000e+00
br i1 %17, label %18, label %29
18: ; preds = %15
%19 = getelementptr inbounds double, double* %1, i64 2
%20 = load double, double* %19
%21 = fcmp une double %20, 0.000000e+00
br i1 %21, label %22, label %29
22: ; preds = %18
store double 0.000000e+00, double* %0
%23 = load double, double* %16
%24 = fdiv double -1.000000e+00, %23
%25 = getelementptr inbounds double, double* %0, i64 1
store double %24, double* %25
%26 = load double, double* %19
%27 = fdiv double 1.000000e+00, %26
%28 = getelementptr inbounds double, double* %0, i64 2
store double %27, double* %28
br label %72
29: ; preds = %18, %15
br i1 %4, label %30, label %40
30: ; preds = %29
%31 = getelementptr inbounds double, double* %1, i64 2
%32 = load double, double* %31
%33 = fcmp une double %32, 0.000000e+00
br i1 %33, label %34, label %40
34: ; preds = %30
%35 = fdiv double -1.000000e+00, %3
store double %35, double* %0
%36 = getelementptr inbounds double, double* %0, i64 1
store double 0.000000e+00, double* %36
%37 = load double, double* %31
%38 = fdiv double 1.000000e+00, %37
%39 = getelementptr inbounds double, double* %0, i64 2
store double %38, double* %39
br label %72
40: ; preds = %30, %29
%41 = fcmp oeq double %3, 0.000000e+00
%42 = fcmp oeq double %6, 0.000000e+00
%43 = select i1 %41, i1 %42, i1 false
br i1 %43, label %44, label %51
44: ; preds = %40
%45 = getelementptr inbounds double, double* %1, i64 2
%46 = load double, double* %45
%47 = fcmp une double %46, 0.000000e+00
br i1 %47, label %48, label %51
48: ; preds = %44
store double 1.000000e+00, double* %0
%49 = getelementptr inbounds double, double* %0, i64 1
%50 = bitcast double* %49 to i8*
br label %72
51: ; preds = %44, %40
%52 = select i1 %4, i1 %42, i1 false
br i1 %52, label %53, label %60
53: ; preds = %51
%54 = getelementptr inbounds double, double* %1, i64 2
%55 = load double, double* %54
%56 = fcmp oeq double %55, 0.000000e+00
br i1 %56, label %57, label %60
57: ; preds = %53
%58 = bitcast double* %0 to <2 x double>*
store <2 x double> <double 0.000000e+00, double 1.000000e+00>, <2 x double>* %58
%59 = getelementptr inbounds double, double* %0, i64 2
store double 0.000000e+00, double* %59
br label %72
60: ; preds = %53, %51
%61 = select i1 %41, i1 %17, i1 false
br i1 %61, label %62, label %69
62: ; preds = %60
%63 = getelementptr inbounds double, double* %1, i64 2
%64 = load double, double* %63
%65 = fcmp oeq double %64, 0.000000e+00
br i1 %65, label %66, label %69
66: ; preds = %62
store double 1.000000e+00, double* %0
%67 = getelementptr inbounds double, double* %0, i64 1
%68 = bitcast double* %67 to i8*
br label %72
69: ; preds = %60, %62
store double 1.000000e+00, double* %0
%70 = getelementptr inbounds double, double* %0, i64 1
%71 = bitcast double* %70 to i8*
br label %72
72: ; preds = %22, %48, %66, %69, %57, %34, %9
ret i32 undef
}