#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 */
double sqrt(double);
double PeriLargeCalcSide(int h, int a, int b, int c, int d, int e) {
  double addarray[8] = {4.0, 4.0, 2.0, 2.0, 4.0, 2.0, 2.0, 2.7017787186};
  double l = 0.0;
  if ((b < h) && (c > h) && (e >= h))
    l += sqrt(2.0) - 2.0;
  if ((b < h) && (a > h) && (d >= h))
    l += sqrt(2.0) - 2.0;
  if (b > h) {
    if ((c < h) && (e > h))
      l += sqrt(8.0) - 4.0;
    else if ((a > h) && (d > h)) {
      if ((c > h) && (e > h))
        l -= sqrt(20.0) - sqrt(8.0);
      else
        l -= sqrt(8.0);
    }
    if ((a <= h) && (c <= h))
      l -= 2.0;
    else if ((d <= h) && (e <= h))
      l -= 2.0;
    else if ((a <= h) && (e <= h))
      l -= 2.0;
    else if ((c <= h) && (d <= h))
      l -= 2.0;
  }
  if (b >= h)
    return (l);
  else {
    if (a < h) {
      if ((c >= h) && (e >= h))
        return (l + sqrt(2.0));
      return (l + 2.0);
    } else
      return (
          l +
          sqrt(addarray[(((c) >= (h) ? 1 : 0) << 2) +
                        (((d) >= (h) ? 1 : 0) << 1) + ((e) >= (h) ? 1 : 0)]));
  }
}


x86 assembly (clang, -O0):
<PeriLargeCalcSide>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
mov    %edi,-0xc(%rbp)
mov    %esi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    %r9d,-0x20(%rbp)
lea    -0x60(%rbp),%rdi
lea    0xed6(%rip),%rsi
mov    $0x40,%edx
call   1030 <memcpy@plt>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    11a3 <PeriLargeCalcSide+0x83>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jle    11a3 <PeriLargeCalcSide+0x83>
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     11a3 <PeriLargeCalcSide+0x83>
movsd  0xe78(%rip),%xmm0
call   1040 <sqrt@plt>
movsd  0xe6b(%rip),%xmm1
subsd  %xmm1,%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    11ea <PeriLargeCalcSide+0xca>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jle    11ea <PeriLargeCalcSide+0xca>
mov    -0x1c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     11ea <PeriLargeCalcSide+0xca>
movsd  0xe31(%rip),%xmm0
call   1040 <sqrt@plt>
movsd  0xe24(%rip),%xmm1
subsd  %xmm1,%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jle    13a4 <PeriLargeCalcSide+0x284>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1236 <PeriLargeCalcSide+0x116>
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jle    1236 <PeriLargeCalcSide+0x116>
movsd  0xdf2(%rip),%xmm0
call   1040 <sqrt@plt>
movsd  0xdf5(%rip),%xmm1
subsd  %xmm1,%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    12c9 <PeriLargeCalcSide+0x1a9>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jle    12c4 <PeriLargeCalcSide+0x1a4>
mov    -0x1c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jle    12c4 <PeriLargeCalcSide+0x1a4>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jle    12a1 <PeriLargeCalcSide+0x181>
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jle    12a1 <PeriLargeCalcSide+0x181>
movsd  0xda2(%rip),%xmm0
call   1040 <sqrt@plt>
movsd  %xmm0,-0x70(%rbp)
movsd  0xd88(%rip),%xmm0
call   1040 <sqrt@plt>
movsd  -0x70(%rbp),%xmm1
subsd  %xmm0,%xmm1
movsd  -0x68(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    12bf <PeriLargeCalcSide+0x19f>
movsd  0xd5f(%rip),%xmm0
call   1040 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x68(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    12c4 <PeriLargeCalcSide+0x1a4>
jmp    12c9 <PeriLargeCalcSide+0x1a9>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     12fc <PeriLargeCalcSide+0x1dc>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     12fc <PeriLargeCalcSide+0x1dc>
movsd  -0x68(%rbp),%xmm0
movsd  0xd12(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    139f <PeriLargeCalcSide+0x27f>
mov    -0x1c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     132f <PeriLargeCalcSide+0x20f>
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     132f <PeriLargeCalcSide+0x20f>
movsd  -0x68(%rbp),%xmm0
movsd  0xcdf(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    139a <PeriLargeCalcSide+0x27a>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     1362 <PeriLargeCalcSide+0x242>
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     1362 <PeriLargeCalcSide+0x242>
movsd  -0x68(%rbp),%xmm0
movsd  0xcac(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    1395 <PeriLargeCalcSide+0x275>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     1390 <PeriLargeCalcSide+0x270>
mov    -0x1c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     1390 <PeriLargeCalcSide+0x270>
movsd  -0x68(%rbp),%xmm0
movsd  0xc79(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    1395 <PeriLargeCalcSide+0x275>
jmp    139a <PeriLargeCalcSide+0x27a>
jmp    139f <PeriLargeCalcSide+0x27f>
jmp    13a4 <PeriLargeCalcSide+0x284>
mov    -0x14(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     13bf <PeriLargeCalcSide+0x29f>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    148f <PeriLargeCalcSide+0x36f>
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1427 <PeriLargeCalcSide+0x307>
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     1410 <PeriLargeCalcSide+0x2f0>
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jl     1410 <PeriLargeCalcSide+0x2f0>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0xc0b(%rip),%xmm0
call   1040 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    148f <PeriLargeCalcSide+0x36f>
movsd  0xbe8(%rip),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    148f <PeriLargeCalcSide+0x36f>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x18(%rbp),%edx
mov    -0xc(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovge %ecx,%eax
shl    $0x2,%eax
mov    -0x1c(%rbp),%esi
mov    -0xc(%rbp),%edi
xor    %ecx,%ecx
mov    $0x1,%edx
cmp    %edi,%esi
cmovge %edx,%ecx
shl    $0x1,%ecx
add    %ecx,%eax
mov    -0x20(%rbp),%esi
mov    -0xc(%rbp),%edi
xor    %ecx,%ecx
mov    $0x1,%edx
cmp    %edi,%esi
cmovge %edx,%ecx
add    %ecx,%eax
cltq
movsd  -0x60(%rbp,%rax,8),%xmm0
call   1040 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x80(%rbp),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<PeriLargeCalcSide>:
push   %rax
movsd  0xee7(%rip),%xmm0
xorpd  %xmm2,%xmm2
movapd %xmm0,%xmm1
cmp    %edi,%ecx
jle    113c <PeriLargeCalcSide+0x2c>
cmp    %edi,%edx
jge    1144 <PeriLargeCalcSide+0x34>
cmp    %edi,%r9d
jge    114d <PeriLargeCalcSide+0x3d>
cmp    %edi,%edx
jl     1155 <PeriLargeCalcSide+0x45>
movapd %xmm2,%xmm0
cmp    %edi,%esi
jle    115d <PeriLargeCalcSide+0x4d>
jmp    1161 <PeriLargeCalcSide+0x51>
xorpd  %xmm1,%xmm1
cmp    %edi,%edx
jl     1129 <PeriLargeCalcSide+0x19>
xorpd  %xmm1,%xmm1
cmp    %edi,%r9d
jl     112e <PeriLargeCalcSide+0x1e>
movapd %xmm1,%xmm2
cmp    %edi,%edx
jge    1132 <PeriLargeCalcSide+0x22>
addsd  %xmm2,%xmm0
cmp    %edi,%esi
jg     1161 <PeriLargeCalcSide+0x51>
movapd %xmm2,%xmm0
cmp    %edi,%r8d
jge    116c <PeriLargeCalcSide+0x5c>
cmp    %edi,%edx
jg     1174 <PeriLargeCalcSide+0x64>
jmp    11b1 <PeriLargeCalcSide+0xa1>
movapd %xmm0,%xmm2
cmp    %edi,%edx
jle    11b1 <PeriLargeCalcSide+0xa1>
cmp    %edi,%ecx
jge    11d0 <PeriLargeCalcSide+0xc0>
cmp    %edi,%r9d
jle    11d0 <PeriLargeCalcSide+0xc0>
addsd  0xe93(%rip),%xmm2
cmp    %edi,%esi
jg     118d <PeriLargeCalcSide+0x7d>
cmp    %edi,%ecx
jle    11a9 <PeriLargeCalcSide+0x99>
cmp    %edi,%r8d
jg     1197 <PeriLargeCalcSide+0x87>
cmp    %edi,%r9d
jle    11a9 <PeriLargeCalcSide+0x99>
cmp    %edi,%esi
jg     11a0 <PeriLargeCalcSide+0x90>
cmp    %edi,%r9d
jle    11a9 <PeriLargeCalcSide+0x99>
cmp    %edi,%ecx
jg     11b1 <PeriLargeCalcSide+0xa1>
cmp    %edi,%r8d
jg     11b1 <PeriLargeCalcSide+0xa1>
addsd  0xe6f(%rip),%xmm2
cmp    %edi,%edx
jge    1247 <PeriLargeCalcSide+0x137>
cmp    %edi,%esi
jge    11ec <PeriLargeCalcSide+0xdc>
cmp    %edi,%ecx
jl     122a <PeriLargeCalcSide+0x11a>
cmp    %edi,%r9d
jl     122a <PeriLargeCalcSide+0x11a>
addsd  0xe5a(%rip),%xmm2
jmp    1247 <PeriLargeCalcSide+0x137>
cmp    %edi,%esi
jle    1185 <PeriLargeCalcSide+0x75>
cmp    %edi,%r8d
jle    1185 <PeriLargeCalcSide+0x75>
cmp    %edi,%ecx
jle    124d <PeriLargeCalcSide+0x13d>
cmp    %edi,%r9d
jle    124d <PeriLargeCalcSide+0x13d>
addsd  0xe26(%rip),%xmm2
jmp    1185 <PeriLargeCalcSide+0x75>
xor    %eax,%eax
cmp    %edi,%ecx
setge  %al
xor    %ecx,%ecx
cmp    %edi,%r8d
setge  %cl
shl    $0x2,%rax
lea    (%rax,%rcx,2),%rax
xor    %ecx,%ecx
cmp    %edi,%r9d
setge  %cl
or     %rax,%rcx
lea    0xe2b(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1234 <PeriLargeCalcSide+0x124>
sqrtsd %xmm0,%xmm0
jmp    1243 <PeriLargeCalcSide+0x133>
addsd  0xdfe(%rip),%xmm2
jmp    1247 <PeriLargeCalcSide+0x137>
movsd  %xmm2,(%rsp)
call   1030 <sqrt@plt>
movsd  (%rsp),%xmm2
addsd  %xmm0,%xmm2
movapd %xmm2,%xmm0
pop    %rax
ret
addsd  0xdb3(%rip),%xmm2
jmp    1185 <PeriLargeCalcSide+0x75>

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

LLVM IR (-O2):
@__const.PeriLargeCalcSide.addarray = [8 x double] [double 4.000000e+00, double 4.000000e+00, double 2.000000e+00, double 2.000000e+00, double 4.000000e+00, double 2.000000e+00, double 2.000000e+00, double 0x40059D3E292B5388]
define double @PeriLargeCalcSide(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5) {
%7 = icmp slt i32 %2, %0
%8 = icmp sgt i32 %3, %0
%9 = and i1 %7, %8
%10 = xor i1 %9, true
%11 = icmp slt i32 %5, %0
%12 = or i1 %11, %10
%13 = select i1 %12, double 0.000000e+00, double 0xBFE2BEC333018866
%14 = icmp sgt i32 %1, %0
%15 = and i1 %14, %7
%16 = xor i1 %15, true
%17 = icmp slt i32 %4, %0
%18 = or i1 %17, %16
%19 = fadd double %13, 0xBFE2BEC333018866
%20 = select i1 %18, double %13, double %19
%21 = icmp sgt i32 %2, %0
br i1 %21, label %22, label %55
22: ; preds = %6
%23 = icmp slt i32 %3, %0
%24 = icmp sgt i32 %5, %0
%25 = and i1 %23, %24
br i1 %25, label %26, label %28
26: ; preds = %22
%27 = fadd double %20, 0xBFF2BEC333018866
br label %37
28: ; preds = %22
%29 = icmp sgt i32 %4, %0
%30 = and i1 %14, %29
br i1 %30, label %31, label %37
31: ; preds = %28
%32 = and i1 %8, %24
br i1 %32, label %33, label %35
33: ; preds = %31
%34 = fadd double %20, 0xBFFA4CA1A1615B06
br label %37
35: ; preds = %31
%36 = fadd double %20, 0xC006A09E667F3BCD
br label %37
37: ; preds = %28, %35, %33, %26
%38 = phi double [ %27, %26 ], [ %34, %33 ], [ %36, %35 ], [ %20, %28 ]
%39 = or i1 %14, %8
br i1 %39, label %42, label %40
40: ; preds = %37
%41 = fadd double %38, -2.000000e+00
br label %55
42: ; preds = %37
%43 = icmp sgt i32 %4, %0
%44 = or i1 %43, %24
br i1 %44, label %47, label %45
45: ; preds = %42
%46 = fadd double %38, -2.000000e+00
br label %55
47: ; preds = %42
%48 = or i1 %14, %24
br i1 %48, label %51, label %49
49: ; preds = %47
%50 = fadd double %38, -2.000000e+00
br label %55
51: ; preds = %47
br i1 %8, label %55, label %52
52: ; preds = %51
%53 = fadd double %38, -2.000000e+00
%54 = select i1 %43, double %38, double %53
br label %55
55: ; preds = %52, %40, %49, %51, %45, %6
%56 = phi double [ %41, %40 ], [ %46, %45 ], [ %50, %49 ], [ %38, %51 ], [ %20, %6 ], [ %54, %52 ]
br i1 %7, label %57, label %77
57: ; preds = %55
%58 = icmp slt i32 %1, %0
%59 = icmp slt i32 %3, %0
br i1 %58, label %60, label %66
60: ; preds = %57
%61 = or i1 %59, %11
br i1 %61, label %64, label %62
62: ; preds = %60
%63 = fadd double %56, 0x3FF6A09E667F3BCD
br label %77
64: ; preds = %60
%65 = fadd double %56, 2.000000e+00
br label %77
66: ; preds = %57
%67 = select i1 %59, i64 0, i64 4
%68 = select i1 %17, i64 0, i64 2
%69 = or i64 %68, %67
%70 = icmp sge i32 %5, %0
%71 = zext i1 %70 to i64
%72 = or i64 %69, %71
%73 = getelementptr inbounds [8 x double], [8 x double]* @__const.PeriLargeCalcSide.addarray, i64 0, i64 %72
%74 = load double, double* %73
%75 = tail call double @sqrt(double %74)
%76 = fadd double %56, %75
br label %77
77: ; preds = %55, %66, %64, %62
%78 = phi double [ %63, %62 ], [ %65, %64 ], [ %76, %66 ], [ %56, %55 ]
ret double %78
}