#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 */
int /*<<< orphan*/ vcons(long, double);
scalar_t__ vnorm(int /*<<< orphan*/);
scalar_t__ vsume(int /*<<< orphan*/);
double case20() {
  double acc = 0.0;
  acc += vnorm(vcons((long)vsume(vcons(0, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(1, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(2, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(3, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(4, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(5, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(6, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(7, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(8, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(9, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(10, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(11, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(12, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(13, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(14, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(15, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(16, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(17, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(18, 1.0)), 2.0));
  acc += vnorm(vcons((long)vsume(vcons(19, 1.0)), 2.0));
  return (acc);
}


x86 assembly (clang, -O0):
<case20>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rbp)
xor    %eax,%eax
mov    %eax,%edi
movsd  0xebc(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xe9d(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x1,%edi
movsd  0xe7d(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xe5e(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x2,%edi
movsd  0xe3e(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xe1f(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x3,%edi
movsd  0xdff(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xde0(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x4,%edi
movsd  0xdc0(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xda1(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x5,%edi
movsd  0xd81(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xd62(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x6,%edi
movsd  0xd42(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xd23(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x7,%edi
movsd  0xd03(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xce4(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x8,%edi
movsd  0xcc4(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xca5(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x9,%edi
movsd  0xc85(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xc66(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0xa,%edi
movsd  0xc46(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xc27(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0xb,%edi
movsd  0xc07(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xbe8(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0xc,%edi
movsd  0xbc8(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xba9(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0xd,%edi
movsd  0xb89(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xb6a(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0xe,%edi
movsd  0xb4a(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xb2b(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0xf,%edi
movsd  0xb0b(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xaec(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x10,%edi
movsd  0xacc(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xaad(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x11,%edi
movsd  0xa8d(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xa6e(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x12,%edi
movsd  0xa4e(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xa2f(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
mov    $0x13,%edi
movsd  0xa0f(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0x9f0(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
cvtsi2sd %rax,%xmm0
addsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<case20>:
push   %rax
movsd  0xec7(%rip),%xmm0
xor    %edi,%edi
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
movsd  0xeb9(%rip),%xmm0
mov    %rax,%rdi
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
movsd  %xmm0,(%rsp)
mov    $0x1,%edi
movsd  0xe88(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xe79(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x2,%edi
movsd  0xe46(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xe37(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x3,%edi
movsd  0xe04(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xdf5(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x4,%edi
movsd  0xdc2(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xdb3(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x5,%edi
movsd  0xd80(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xd71(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x6,%edi
movsd  0xd3e(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xd2f(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x7,%edi
movsd  0xcfc(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xced(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x8,%edi
movsd  0xcba(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xcab(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x9,%edi
movsd  0xc78(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xc69(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0xa,%edi
movsd  0xc36(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xc27(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0xb,%edi
movsd  0xbf4(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xbe5(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0xc,%edi
movsd  0xbb2(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xba3(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0xd,%edi
movsd  0xb70(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xb61(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0xe,%edi
movsd  0xb2e(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xb1f(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0xf,%edi
movsd  0xaec(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xadd(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x10,%edi
movsd  0xaaa(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xa9b(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x11,%edi
movsd  0xa68(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xa59(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x12,%edi
movsd  0xa26(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0xa17(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
mov    $0x13,%edi
movsd  0x9e4(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1040 <vsume@plt>
mov    %rax,%rdi
movsd  0x9d5(%rip),%xmm0
call   1030 <vcons@plt>
mov    %eax,%edi
call   1050 <vnorm@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
addsd  (%rsp),%xmm0
pop    %rax
ret

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

LLVM IR (-O2):
define double @case20() {
%1 = tail call i32 @vcons(i64 0, double 1.000000e+00)
%2 = tail call i64 @vsume(i32 %1)
%3 = tail call i32 @vcons(i64 %2, double 2.000000e+00)
%4 = tail call i64 @vnorm(i32 %3)
%5 = sitofp i64 %4 to double
%6 = tail call i32 @vcons(i64 1, double 1.000000e+00)
%7 = tail call i64 @vsume(i32 %6)
%8 = tail call i32 @vcons(i64 %7, double 2.000000e+00)
%9 = tail call i64 @vnorm(i32 %8)
%10 = sitofp i64 %9 to double
%11 = fadd double %5, %10
%12 = tail call i32 @vcons(i64 2, double 1.000000e+00)
%13 = tail call i64 @vsume(i32 %12)
%14 = tail call i32 @vcons(i64 %13, double 2.000000e+00)
%15 = tail call i64 @vnorm(i32 %14)
%16 = sitofp i64 %15 to double
%17 = fadd double %11, %16
%18 = tail call i32 @vcons(i64 3, double 1.000000e+00)
%19 = tail call i64 @vsume(i32 %18)
%20 = tail call i32 @vcons(i64 %19, double 2.000000e+00)
%21 = tail call i64 @vnorm(i32 %20)
%22 = sitofp i64 %21 to double
%23 = fadd double %17, %22
%24 = tail call i32 @vcons(i64 4, double 1.000000e+00)
%25 = tail call i64 @vsume(i32 %24)
%26 = tail call i32 @vcons(i64 %25, double 2.000000e+00)
%27 = tail call i64 @vnorm(i32 %26)
%28 = sitofp i64 %27 to double
%29 = fadd double %23, %28
%30 = tail call i32 @vcons(i64 5, double 1.000000e+00)
%31 = tail call i64 @vsume(i32 %30)
%32 = tail call i32 @vcons(i64 %31, double 2.000000e+00)
%33 = tail call i64 @vnorm(i32 %32)
%34 = sitofp i64 %33 to double
%35 = fadd double %29, %34
%36 = tail call i32 @vcons(i64 6, double 1.000000e+00)
%37 = tail call i64 @vsume(i32 %36)
%38 = tail call i32 @vcons(i64 %37, double 2.000000e+00)
%39 = tail call i64 @vnorm(i32 %38)
%40 = sitofp i64 %39 to double
%41 = fadd double %35, %40
%42 = tail call i32 @vcons(i64 7, double 1.000000e+00)
%43 = tail call i64 @vsume(i32 %42)
%44 = tail call i32 @vcons(i64 %43, double 2.000000e+00)
%45 = tail call i64 @vnorm(i32 %44)
%46 = sitofp i64 %45 to double
%47 = fadd double %41, %46
%48 = tail call i32 @vcons(i64 8, double 1.000000e+00)
%49 = tail call i64 @vsume(i32 %48)
%50 = tail call i32 @vcons(i64 %49, double 2.000000e+00)
%51 = tail call i64 @vnorm(i32 %50)
%52 = sitofp i64 %51 to double
%53 = fadd double %47, %52
%54 = tail call i32 @vcons(i64 9, double 1.000000e+00)
%55 = tail call i64 @vsume(i32 %54)
%56 = tail call i32 @vcons(i64 %55, double 2.000000e+00)
%57 = tail call i64 @vnorm(i32 %56)
%58 = sitofp i64 %57 to double
%59 = fadd double %53, %58
%60 = tail call i32 @vcons(i64 10, double 1.000000e+00)
%61 = tail call i64 @vsume(i32 %60)
%62 = tail call i32 @vcons(i64 %61, double 2.000000e+00)
%63 = tail call i64 @vnorm(i32 %62)
%64 = sitofp i64 %63 to double
%65 = fadd double %59, %64
%66 = tail call i32 @vcons(i64 11, double 1.000000e+00)
%67 = tail call i64 @vsume(i32 %66)
%68 = tail call i32 @vcons(i64 %67, double 2.000000e+00)
%69 = tail call i64 @vnorm(i32 %68)
%70 = sitofp i64 %69 to double
%71 = fadd double %65, %70
%72 = tail call i32 @vcons(i64 12, double 1.000000e+00)
%73 = tail call i64 @vsume(i32 %72)
%74 = tail call i32 @vcons(i64 %73, double 2.000000e+00)
%75 = tail call i64 @vnorm(i32 %74)
%76 = sitofp i64 %75 to double
%77 = fadd double %71, %76
%78 = tail call i32 @vcons(i64 13, double 1.000000e+00)
%79 = tail call i64 @vsume(i32 %78)
%80 = tail call i32 @vcons(i64 %79, double 2.000000e+00)
%81 = tail call i64 @vnorm(i32 %80)
%82 = sitofp i64 %81 to double
%83 = fadd double %77, %82
%84 = tail call i32 @vcons(i64 14, double 1.000000e+00)
%85 = tail call i64 @vsume(i32 %84)
%86 = tail call i32 @vcons(i64 %85, double 2.000000e+00)
%87 = tail call i64 @vnorm(i32 %86)
%88 = sitofp i64 %87 to double
%89 = fadd double %83, %88
%90 = tail call i32 @vcons(i64 15, double 1.000000e+00)
%91 = tail call i64 @vsume(i32 %90)
%92 = tail call i32 @vcons(i64 %91, double 2.000000e+00)
%93 = tail call i64 @vnorm(i32 %92)
%94 = sitofp i64 %93 to double
%95 = fadd double %89, %94
%96 = tail call i32 @vcons(i64 16, double 1.000000e+00)
%97 = tail call i64 @vsume(i32 %96)
%98 = tail call i32 @vcons(i64 %97, double 2.000000e+00)
%99 = tail call i64 @vnorm(i32 %98)
%100 = sitofp i64 %99 to double
%101 = fadd double %95, %100
%102 = tail call i32 @vcons(i64 17, double 1.000000e+00)
%103 = tail call i64 @vsume(i32 %102)
%104 = tail call i32 @vcons(i64 %103, double 2.000000e+00)
%105 = tail call i64 @vnorm(i32 %104)
%106 = sitofp i64 %105 to double
%107 = fadd double %101, %106
%108 = tail call i32 @vcons(i64 18, double 1.000000e+00)
%109 = tail call i64 @vsume(i32 %108)
%110 = tail call i32 @vcons(i64 %109, double 2.000000e+00)
%111 = tail call i64 @vnorm(i32 %110)
%112 = sitofp i64 %111 to double
%113 = fadd double %107, %112
%114 = tail call i32 @vcons(i64 19, double 1.000000e+00)
%115 = tail call i64 @vsume(i32 %114)
%116 = tail call i32 @vcons(i64 %115, double 2.000000e+00)
%117 = tail call i64 @vnorm(i32 %116)
%118 = sitofp i64 %117 to double
%119 = fadd double %113, %118
ret double %119
}