#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*/ abort();
void init_ft(size_t count_i, char type_j, double *ft) {
  switch (type_j) {
  case 'S':
    for (size_t i = 0; i < count_i; i++) {
      *ft++ = 3.0;
    }
    return;
  case 'L':
    for (size_t i = 0; i < count_i; i++) {
      *ft++ = 3.0;
      *ft++ = 5.0;
      *ft++ = 5.0;
      *ft++ = 5.0;
    }
    return;
  case 'P':
    for (size_t i = 0; i < count_i; i++) {
      *ft++ = 5.0;
      *ft++ = 5.0;
      *ft++ = 5.0;
    }
    return;
  case 'D':
    for (size_t i = 0; i < count_i; i++) {
      *ft++ = 7.0;
      *ft++ = 7.0;
      *ft++ = 7.0;
      *ft++ = 7.0;
      *ft++ = 7.0;
      *ft++ = 7.0;
    }
    return;
  case 'F':
    for (size_t i = 0; i < count_i; i++) {
      *ft++ = 9.0;
      *ft++ = 9.0;
      *ft++ = 9.0;
      *ft++ = 9.0;
      *ft++ = 9.0;
      *ft++ = 9.0;
      *ft++ = 9.0;
      *ft++ = 9.0;
      *ft++ = 9.0;
      *ft++ = 9.0;
    }
    return;
  }
  abort();
}


x86 assembly (clang, -O0):
<init_ft>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %sil,%al
mov    %rdi,-0x8(%rbp)
mov    %al,-0x9(%rbp)
mov    %rdx,-0x18(%rbp)
movsbl -0x9(%rbp),%eax
add    $0xffffffbc,%eax
mov    %eax,%ecx
mov    %rcx,-0x48(%rbp)
sub    $0xf,%eax
ja     14b4 <init_ft+0x3a4>
mov    -0x48(%rbp),%rax
lea    0xed9(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movq   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%rax
cmp    -0x8(%rbp),%rax
jae    1192 <init_ft+0x82>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xe9b(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x20(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x20(%rbp)
jmp    1158 <init_ft+0x48>
jmp    14bb <init_ft+0x3ab>
movq   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x8(%rbp),%rax
jae    122a <init_ft+0x11a>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xe54(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xe31(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xe16(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xdfb(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    119f <init_ft+0x8f>
jmp    14bb <init_ft+0x3ab>
movq   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%rax
cmp    -0x8(%rbp),%rax
jae    12a7 <init_ft+0x197>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xdb4(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xd99(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xd7e(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
jmp    1237 <init_ft+0x127>
jmp    14bb <init_ft+0x3ab>
movq   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x8(%rbp),%rax
jae    1375 <init_ft+0x265>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xd2f(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xd14(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xcf9(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xcde(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xcc3(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xca8(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    12b4 <init_ft+0x1a4>
jmp    14bb <init_ft+0x3ab>
movq   $0x0,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x8(%rbp),%rax
jae    14af <init_ft+0x39f>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xc59(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xc3e(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xc23(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xc08(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xbed(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xbd2(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xbb7(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xb9c(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xb81(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x18(%rbp)
movsd  0xb66(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
jmp    1382 <init_ft+0x272>
jmp    14bb <init_ft+0x3ab>
mov    $0x0,%al
call   1030 <abort@plt>
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<init_ft>:
push   %rax
add    $0xffffffbc,%esi
cmp    $0xf,%esi
ja     159f <init_ft+0x48f>
lea    0xf2c(%rip),%rax
movslq (%rax,%rsi,4),%rcx
add    %rax,%rcx
jmp    *%rcx
test   %rdi,%rdi
je     159d <init_ft+0x48d>
lea    -0x1(%rdi),%rcx
mov    %edi,%eax
and    $0x3,%eax
cmp    $0x3,%rcx
jb     1198 <init_ft+0x88>
and    $0xfffffffffffffffc,%rdi
movaps 0xec0(%rip),%xmm0
movups %xmm0,(%rdx)
movups %xmm0,0x10(%rdx)
movups %xmm0,0x20(%rdx)
movups %xmm0,0x30(%rdx)
movups %xmm0,0x40(%rdx)
movups %xmm0,0x50(%rdx)
movups %xmm0,0x60(%rdx)
movups %xmm0,0x70(%rdx)
movups %xmm0,0x80(%rdx)
movups %xmm0,0x90(%rdx)
movups %xmm0,0xa0(%rdx)
movups %xmm0,0xb0(%rdx)
add    $0xc0,%rdx
add    $0xfffffffffffffffc,%rdi
jne    1150 <init_ft+0x40>
test   %rax,%rax
je     159d <init_ft+0x48d>
shl    $0x4,%rax
lea    (%rax,%rax,2),%rax
xor    %ecx,%ecx
movaps 0xe5e(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movups %xmm0,(%rdx,%rcx,1)
movups %xmm0,0x10(%rdx,%rcx,1)
movups %xmm0,0x20(%rdx,%rcx,1)
add    $0x30,%rcx
cmp    %rcx,%rax
jne    11c0 <init_ft+0xb0>
jmp    159d <init_ft+0x48d>
test   %rdi,%rdi
je     159d <init_ft+0x48d>
lea    -0x1(%rdi),%rcx
mov    %edi,%eax
and    $0x3,%eax
cmp    $0x3,%rcx
jb     1290 <init_ft+0x180>
and    $0xfffffffffffffffc,%rdi
movaps 0xdfd(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movups %xmm0,(%rdx)
movups %xmm0,0x10(%rdx)
movups %xmm0,0x20(%rdx)
movups %xmm0,0x30(%rdx)
movups %xmm0,0x40(%rdx)
movups %xmm0,0x50(%rdx)
movups %xmm0,0x60(%rdx)
movups %xmm0,0x70(%rdx)
movups %xmm0,0x80(%rdx)
movups %xmm0,0x90(%rdx)
movups %xmm0,0xa0(%rdx)
movups %xmm0,0xb0(%rdx)
movups %xmm0,0xc0(%rdx)
movups %xmm0,0xd0(%rdx)
movups %xmm0,0xe0(%rdx)
movups %xmm0,0xf0(%rdx)
movups %xmm0,0x100(%rdx)
movups %xmm0,0x110(%rdx)
movups %xmm0,0x120(%rdx)
movups %xmm0,0x130(%rdx)
add    $0x140,%rdx
add    $0xfffffffffffffffc,%rdi
jne    1210 <init_ft+0x100>
test   %rax,%rax
je     159d <init_ft+0x48d>
shl    $0x4,%rax
lea    (%rax,%rax,4),%rax
xor    %ecx,%ecx
movaps 0xd56(%rip),%xmm0
nopw   0x0(%rax,%rax,1)
movups %xmm0,(%rdx,%rcx,1)
movups %xmm0,0x10(%rdx,%rcx,1)
movups %xmm0,0x20(%rdx,%rcx,1)
movups %xmm0,0x30(%rdx,%rcx,1)
movups %xmm0,0x40(%rdx,%rcx,1)
add    $0x50,%rcx
cmp    %rcx,%rax
jne    12b0 <init_ft+0x1a0>
jmp    159d <init_ft+0x48d>
test   %rdi,%rdi
je     159d <init_ft+0x48d>
lea    -0x1(%rdi),%rcx
mov    %edi,%eax
and    $0x7,%eax
cmp    $0x7,%rcx
jb     1364 <init_ft+0x254>
and    $0xfffffffffffffff8,%rdi
movaps 0xd37(%rip),%xmm0
movaps 0xd20(%rip),%xmm1
movups %xmm0,(%rdx)
movups %xmm1,0x10(%rdx)
movups %xmm0,0x20(%rdx)
movups %xmm1,0x30(%rdx)
movups %xmm0,0x40(%rdx)
movups %xmm1,0x50(%rdx)
movups %xmm0,0x60(%rdx)
movups %xmm1,0x70(%rdx)
movups %xmm0,0x80(%rdx)
movups %xmm1,0x90(%rdx)
movups %xmm0,0xa0(%rdx)
movups %xmm1,0xb0(%rdx)
movups %xmm0,0xc0(%rdx)
movups %xmm1,0xd0(%rdx)
movups %xmm0,0xe0(%rdx)
movups %xmm1,0xf0(%rdx)
add    $0x100,%rdx
add    $0xfffffffffffffff8,%rdi
jne    1300 <init_ft+0x1f0>
test   %rax,%rax
je     159d <init_ft+0x48d>
shl    $0x5,%rax
xor    %ecx,%ecx
movaps 0xcb6(%rip),%xmm0
movaps 0xc9f(%rip),%xmm1
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movups %xmm0,(%rdx,%rcx,1)
movups %xmm1,0x10(%rdx,%rcx,1)
add    $0x20,%rcx
cmp    %rcx,%rax
jne    1390 <init_ft+0x280>
jmp    159d <init_ft+0x48d>
test   %rdi,%rdi
je     159d <init_ft+0x48d>
lea    -0x1(%rdi),%rsi
mov    %edi,%ecx
and    $0x7,%ecx
movabs $0x4014000000000000,%rax
cmp    $0x7,%rsi
jb     143b <init_ft+0x32b>
and    $0xfffffffffffffff8,%rdi
movaps 0xc4c(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movups %xmm0,(%rdx)
mov    %rax,0x10(%rdx)
movups %xmm0,0x18(%rdx)
mov    %rax,0x28(%rdx)
movups %xmm0,0x30(%rdx)
mov    %rax,0x40(%rdx)
movups %xmm0,0x48(%rdx)
mov    %rax,0x58(%rdx)
movups %xmm0,0x60(%rdx)
mov    %rax,0x70(%rdx)
movups %xmm0,0x78(%rdx)
mov    %rax,0x88(%rdx)
movups %xmm0,0x90(%rdx)
mov    %rax,0xa0(%rdx)
movups %xmm0,0xa8(%rdx)
mov    %rax,0xb8(%rdx)
add    $0xc0,%rdx
add    $0xfffffffffffffff8,%rdi
jne    13e0 <init_ft+0x2d0>
test   %rcx,%rcx
je     159d <init_ft+0x48d>
shl    $0x3,%rcx
lea    (%rcx,%rcx,2),%rcx
xor    %esi,%esi
movaps 0xbcb(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nop
movups %xmm0,(%rdx,%rsi,1)
mov    %rax,0x10(%rdx,%rsi,1)
add    $0x18,%rsi
cmp    %rsi,%rcx
jne    1460 <init_ft+0x350>
jmp    159d <init_ft+0x48d>
test   %rdi,%rdi
je     159d <init_ft+0x48d>
cmp    $0x4,%rdi
jae    148e <init_ft+0x37e>
xor    %r8d,%r8d
jmp    157b <init_ft+0x46b>
mov    %rdi,%r8
and    $0xfffffffffffffffc,%r8
lea    -0x4(%r8),%rax
mov    %rax,%rsi
shr    $0x2,%rsi
add    $0x1,%rsi
mov    %esi,%ecx
and    $0x7,%ecx
cmp    $0x1c,%rax
jae    14b6 <init_ft+0x3a6>
xor    %eax,%eax
jmp    1541 <init_ft+0x431>
and    $0xfffffffffffffff8,%rsi
xor    %eax,%eax
movaps 0xb7d(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movups %xmm0,(%rdx,%rax,8)
movups %xmm0,0x10(%rdx,%rax,8)
movups %xmm0,0x20(%rdx,%rax,8)
movups %xmm0,0x30(%rdx,%rax,8)
movups %xmm0,0x40(%rdx,%rax,8)
movups %xmm0,0x50(%rdx,%rax,8)
movups %xmm0,0x60(%rdx,%rax,8)
movups %xmm0,0x70(%rdx,%rax,8)
movups %xmm0,0x80(%rdx,%rax,8)
movups %xmm0,0x90(%rdx,%rax,8)
movups %xmm0,0xa0(%rdx,%rax,8)
movups %xmm0,0xb0(%rdx,%rax,8)
movups %xmm0,0xc0(%rdx,%rax,8)
movups %xmm0,0xd0(%rdx,%rax,8)
movups %xmm0,0xe0(%rdx,%rax,8)
movups %xmm0,0xf0(%rdx,%rax,8)
add    $0x20,%rax
add    $0xfffffffffffffff8,%rsi
jne    14d0 <init_ft+0x3c0>
test   %rcx,%rcx
je     1572 <init_ft+0x462>
lea    (%rdx,%rax,8),%rax
add    $0x10,%rax
shl    $0x5,%rcx
xor    %esi,%esi
movaps 0xae5(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movups %xmm0,-0x10(%rax,%rsi,1)
movups %xmm0,(%rax,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rcx
jne    1560 <init_ft+0x450>
cmp    %rdi,%r8
je     159d <init_ft+0x48d>
lea    (%rdx,%r8,8),%rdx
sub    %r8,%rdi
xor    %eax,%eax
movabs $0x4008000000000000,%rcx
nopw   0x0(%rax,%rax,1)
mov    %rcx,(%rdx,%rax,8)
add    $0x1,%rax
cmp    %rax,%rdi
jne    1590 <init_ft+0x480>
pop    %rax
ret
xor    %eax,%eax
call   1030 <abort@plt>

LLVM IR (-O0):
define void @init_ft(i64 %0, i8 signext %1, double* %2) {
%4 = alloca i64
%5 = alloca i8
%6 = alloca double*
%7 = alloca i64
%8 = alloca i64
%9 = alloca i64
%10 = alloca i64
%11 = alloca i64
store i64 %0, i64* %4
store i8 %1, i8* %5
store double* %2, double** %6
%12 = load i8, i8* %5
%13 = sext i8 %12 to i32
switch i32 %13, label %112 [
i32 83, label %14
i32 76, label %26
i32 80, label %44
i32 68, label %60
i32 70, label %82
]
14: ; preds = %3
store i64 0, i64* %7
br label %15
15: ; preds = %22, %14
%16 = load i64, i64* %7
%17 = load i64, i64* %4
%18 = icmp ult i64 %16, %17
br i1 %18, label %19, label %25
19: ; preds = %15
%20 = load double*, double** %6
%21 = getelementptr inbounds double, double* %20, i32 1
store double* %21, double** %6
store double 3.000000e+00, double* %20
br label %22
22: ; preds = %19
%23 = load i64, i64* %7
%24 = add i64 %23, 1
store i64 %24, i64* %7
br label %15
25: ; preds = %15
br label %114
26: ; preds = %3
store i64 0, i64* %8
br label %27
27: ; preds = %40, %26
%28 = load i64, i64* %8
%29 = load i64, i64* %4
%30 = icmp ult i64 %28, %29
br i1 %30, label %31, label %43
31: ; preds = %27
%32 = load double*, double** %6
%33 = getelementptr inbounds double, double* %32, i32 1
store double* %33, double** %6
store double 3.000000e+00, double* %32
%34 = load double*, double** %6
%35 = getelementptr inbounds double, double* %34, i32 1
store double* %35, double** %6
store double 5.000000e+00, double* %34
%36 = load double*, double** %6
%37 = getelementptr inbounds double, double* %36, i32 1
store double* %37, double** %6
store double 5.000000e+00, double* %36
%38 = load double*, double** %6
%39 = getelementptr inbounds double, double* %38, i32 1
store double* %39, double** %6
store double 5.000000e+00, double* %38
br label %40
40: ; preds = %31
%41 = load i64, i64* %8
%42 = add i64 %41, 1
store i64 %42, i64* %8
br label %27
43: ; preds = %27
br label %114
44: ; preds = %3
store i64 0, i64* %9
br label %45
45: ; preds = %56, %44
%46 = load i64, i64* %9
%47 = load i64, i64* %4
%48 = icmp ult i64 %46, %47
br i1 %48, label %49, label %59
49: ; preds = %45
%50 = load double*, double** %6
%51 = getelementptr inbounds double, double* %50, i32 1
store double* %51, double** %6
store double 5.000000e+00, double* %50
%52 = load double*, double** %6
%53 = getelementptr inbounds double, double* %52, i32 1
store double* %53, double** %6
store double 5.000000e+00, double* %52
%54 = load double*, double** %6
%55 = getelementptr inbounds double, double* %54, i32 1
store double* %55, double** %6
store double 5.000000e+00, double* %54
br label %56
56: ; preds = %49
%57 = load i64, i64* %9
%58 = add i64 %57, 1
store i64 %58, i64* %9
br label %45
59: ; preds = %45
br label %114
60: ; preds = %3
store i64 0, i64* %10
br label %61
61: ; preds = %78, %60
%62 = load i64, i64* %10
%63 = load i64, i64* %4
%64 = icmp ult i64 %62, %63
br i1 %64, label %65, label %81
65: ; preds = %61
%66 = load double*, double** %6
%67 = getelementptr inbounds double, double* %66, i32 1
store double* %67, double** %6
store double 7.000000e+00, double* %66
%68 = load double*, double** %6
%69 = getelementptr inbounds double, double* %68, i32 1
store double* %69, double** %6
store double 7.000000e+00, double* %68
%70 = load double*, double** %6
%71 = getelementptr inbounds double, double* %70, i32 1
store double* %71, double** %6
store double 7.000000e+00, double* %70
%72 = load double*, double** %6
%73 = getelementptr inbounds double, double* %72, i32 1
store double* %73, double** %6
store double 7.000000e+00, double* %72
%74 = load double*, double** %6
%75 = getelementptr inbounds double, double* %74, i32 1
store double* %75, double** %6
store double 7.000000e+00, double* %74
%76 = load double*, double** %6
%77 = getelementptr inbounds double, double* %76, i32 1
store double* %77, double** %6
store double 7.000000e+00, double* %76
br label %78
78: ; preds = %65
%79 = load i64, i64* %10
%80 = add i64 %79, 1
store i64 %80, i64* %10
br label %61
81: ; preds = %61
br label %114
82: ; preds = %3
store i64 0, i64* %11
br label %83
83: ; preds = %108, %82
%84 = load i64, i64* %11
%85 = load i64, i64* %4
%86 = icmp ult i64 %84, %85
br i1 %86, label %87, label %111
87: ; preds = %83
%88 = load double*, double** %6
%89 = getelementptr inbounds double, double* %88, i32 1
store double* %89, double** %6
store double 9.000000e+00, double* %88
%90 = load double*, double** %6
%91 = getelementptr inbounds double, double* %90, i32 1
store double* %91, double** %6
store double 9.000000e+00, double* %90
%92 = load double*, double** %6
%93 = getelementptr inbounds double, double* %92, i32 1
store double* %93, double** %6
store double 9.000000e+00, double* %92
%94 = load double*, double** %6
%95 = getelementptr inbounds double, double* %94, i32 1
store double* %95, double** %6
store double 9.000000e+00, double* %94
%96 = load double*, double** %6
%97 = getelementptr inbounds double, double* %96, i32 1
store double* %97, double** %6
store double 9.000000e+00, double* %96
%98 = load double*, double** %6
%99 = getelementptr inbounds double, double* %98, i32 1
store double* %99, double** %6
store double 9.000000e+00, double* %98
%100 = load double*, double** %6
%101 = getelementptr inbounds double, double* %100, i32 1
store double* %101, double** %6
store double 9.000000e+00, double* %100
%102 = load double*, double** %6
%103 = getelementptr inbounds double, double* %102, i32 1
store double* %103, double** %6
store double 9.000000e+00, double* %102
%104 = load double*, double** %6
%105 = getelementptr inbounds double, double* %104, i32 1
store double* %105, double** %6
store double 9.000000e+00, double* %104
%106 = load double*, double** %6
%107 = getelementptr inbounds double, double* %106, i32 1
store double* %107, double** %6
store double 9.000000e+00, double* %106
br label %108
108: ; preds = %87
%109 = load i64, i64* %11
%110 = add i64 %109, 1
store i64 %110, i64* %11
br label %83
111: ; preds = %83
br label %114
112: ; preds = %3
%113 = call i32 (...) @abort()
unreachable
114: ; preds = %111, %81, %59, %43, %25
ret void
}

LLVM IR (-O2):
define void @init_ft(i64 %0, i8 signext %1, double* nocapture writeonly %2) {
%4 = sext i8 %1 to i32
switch i32 %4, label %260 [
i32 83, label %37
i32 76, label %29
i32 80, label %21
i32 68, label %13
i32 70, label %5
]
5: ; preds = %3
%6 = icmp eq i64 %0, 0
br i1 %6, label %317, label %7
7: ; preds = %5
%8 = add i64 %0, -1
%9 = and i64 %0, 3
%10 = icmp ult i64 %8, 3
br i1 %10, label %299, label %11
11: ; preds = %7
%12 = and i64 %0, -4
br label %215
13: ; preds = %3
%14 = icmp eq i64 %0, 0
br i1 %14, label %317, label %15
15: ; preds = %13
%16 = add i64 %0, -1
%17 = and i64 %0, 3
%18 = icmp ult i64 %16, 3
br i1 %18, label %285, label %19
19: ; preds = %15
%20 = and i64 %0, -4
br label %186
21: ; preds = %3
%22 = icmp eq i64 %0, 0
br i1 %22, label %317, label %23
23: ; preds = %21
%24 = add i64 %0, -1
%25 = and i64 %0, 7
%26 = icmp ult i64 %24, 7
br i1 %26, label %274, label %27
27: ; preds = %23
%28 = and i64 %0, -8
br label %157
29: ; preds = %3
%30 = icmp eq i64 %0, 0
br i1 %30, label %317, label %31
31: ; preds = %29
%32 = add i64 %0, -1
%33 = and i64 %0, 7
%34 = icmp ult i64 %32, 7
br i1 %34, label %262, label %35
35: ; preds = %31
%36 = and i64 %0, -8
br label %120
37: ; preds = %3
%38 = icmp eq i64 %0, 0
br i1 %38, label %317, label %39
39: ; preds = %37
%40 = icmp ult i64 %0, 4
br i1 %40, label %111, label %41
41: ; preds = %39
%42 = and i64 %0, -4
%43 = getelementptr double, double* %2, i64 %42
%44 = add i64 %42, -4
%45 = lshr exact i64 %44, 2
%46 = add nuw nsw i64 %45, 1
%47 = and i64 %46, 7
%48 = icmp ult i64 %44, 28
br i1 %48, label %96, label %49
49: ; preds = %41
%50 = and i64 %46, 9223372036854775800
br label %51
51: ; preds = %51, %49
%52 = phi i64 [ 0, %49 ], [ %93, %51 ]
%53 = phi i64 [ 0, %49 ], [ %94, %51 ]
%54 = getelementptr double, double* %2, i64 %52
%55 = bitcast double* %54 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %55
%56 = getelementptr double, double* %54, i64 2
%57 = bitcast double* %56 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %57
%58 = or i64 %52, 4
%59 = getelementptr double, double* %2, i64 %58
%60 = bitcast double* %59 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %60
%61 = getelementptr double, double* %59, i64 2
%62 = bitcast double* %61 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %62
%63 = or i64 %52, 8
%64 = getelementptr double, double* %2, i64 %63
%65 = bitcast double* %64 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %65
%66 = getelementptr double, double* %64, i64 2
%67 = bitcast double* %66 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %67
%68 = or i64 %52, 12
%69 = getelementptr double, double* %2, i64 %68
%70 = bitcast double* %69 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %70
%71 = getelementptr double, double* %69, i64 2
%72 = bitcast double* %71 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %72
%73 = or i64 %52, 16
%74 = getelementptr double, double* %2, i64 %73
%75 = bitcast double* %74 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %75
%76 = getelementptr double, double* %74, i64 2
%77 = bitcast double* %76 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %77
%78 = or i64 %52, 20
%79 = getelementptr double, double* %2, i64 %78
%80 = bitcast double* %79 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %80
%81 = getelementptr double, double* %79, i64 2
%82 = bitcast double* %81 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %82
%83 = or i64 %52, 24
%84 = getelementptr double, double* %2, i64 %83
%85 = bitcast double* %84 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %85
%86 = getelementptr double, double* %84, i64 2
%87 = bitcast double* %86 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %87
%88 = or i64 %52, 28
%89 = getelementptr double, double* %2, i64 %88
%90 = bitcast double* %89 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %90
%91 = getelementptr double, double* %89, i64 2
%92 = bitcast double* %91 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %92
%93 = add nuw i64 %52, 32
%94 = add i64 %53, 8
%95 = icmp eq i64 %94, %50
br i1 %95, label %96, label %51
96: ; preds = %51, %41
%97 = phi i64 [ 0, %41 ], [ %93, %51 ]
%98 = icmp eq i64 %47, 0
br i1 %98, label %109, label %99
99: ; preds = %96, %99
%100 = phi i64 [ %106, %99 ], [ %97, %96 ]
%101 = phi i64 [ %107, %99 ], [ 0, %96 ]
%102 = getelementptr double, double* %2, i64 %100
%103 = bitcast double* %102 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %103
%104 = getelementptr double, double* %102, i64 2
%105 = bitcast double* %104 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 3.000000e+00>, <2 x double>* %105
%106 = add nuw i64 %100, 4
%107 = add i64 %101, 1
%108 = icmp eq i64 %107, %47
br i1 %108, label %109, label %99
109: ; preds = %99, %96
%110 = icmp eq i64 %42, %0
br i1 %110, label %317, label %111
111: ; preds = %39, %109
%112 = phi i64 [ 0, %39 ], [ %42, %109 ]
%113 = phi double* [ %2, %39 ], [ %43, %109 ]
br label %114
114: ; preds = %111, %114
%115 = phi i64 [ %118, %114 ], [ %112, %111 ]
%116 = phi double* [ %117, %114 ], [ %113, %111 ]
%117 = getelementptr inbounds double, double* %116, i64 1
store double 3.000000e+00, double* %116
%118 = add nuw i64 %115, 1
%119 = icmp eq i64 %118, %0
br i1 %119, label %317, label %114
120: ; preds = %120, %35
%121 = phi double* [ %2, %35 ], [ %153, %120 ]
%122 = phi i64 [ 0, %35 ], [ %155, %120 ]
%123 = getelementptr inbounds double, double* %121, i64 2
%124 = bitcast double* %121 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 5.000000e+00>, <2 x double>* %124
%125 = getelementptr inbounds double, double* %121, i64 4
%126 = bitcast double* %123 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %126
%127 = getelementptr inbounds double, double* %121, i64 6
%128 = bitcast double* %125 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 5.000000e+00>, <2 x double>* %128
%129 = getelementptr inbounds double, double* %121, i64 8
%130 = bitcast double* %127 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %130
%131 = getelementptr inbounds double, double* %121, i64 10
%132 = bitcast double* %129 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 5.000000e+00>, <2 x double>* %132
%133 = getelementptr inbounds double, double* %121, i64 12
%134 = bitcast double* %131 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %134
%135 = getelementptr inbounds double, double* %121, i64 14
%136 = bitcast double* %133 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 5.000000e+00>, <2 x double>* %136
%137 = getelementptr inbounds double, double* %121, i64 16
%138 = bitcast double* %135 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %138
%139 = getelementptr inbounds double, double* %121, i64 18
%140 = bitcast double* %137 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 5.000000e+00>, <2 x double>* %140
%141 = getelementptr inbounds double, double* %121, i64 20
%142 = bitcast double* %139 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %142
%143 = getelementptr inbounds double, double* %121, i64 22
%144 = bitcast double* %141 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 5.000000e+00>, <2 x double>* %144
%145 = getelementptr inbounds double, double* %121, i64 24
%146 = bitcast double* %143 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %146
%147 = getelementptr inbounds double, double* %121, i64 26
%148 = bitcast double* %145 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 5.000000e+00>, <2 x double>* %148
%149 = getelementptr inbounds double, double* %121, i64 28
%150 = bitcast double* %147 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %150
%151 = getelementptr inbounds double, double* %121, i64 30
%152 = bitcast double* %149 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 5.000000e+00>, <2 x double>* %152
%153 = getelementptr inbounds double, double* %121, i64 32
%154 = bitcast double* %151 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %154
%155 = add i64 %122, 8
%156 = icmp eq i64 %155, %36
br i1 %156, label %262, label %120
157: ; preds = %157, %27
%158 = phi double* [ %2, %27 ], [ %183, %157 ]
%159 = phi i64 [ 0, %27 ], [ %184, %157 ]
%160 = getelementptr inbounds double, double* %158, i64 2
%161 = bitcast double* %158 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %161
%162 = getelementptr inbounds double, double* %158, i64 3
store double 5.000000e+00, double* %160
%163 = getelementptr inbounds double, double* %158, i64 5
%164 = bitcast double* %162 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %164
%165 = getelementptr inbounds double, double* %158, i64 6
store double 5.000000e+00, double* %163
%166 = getelementptr inbounds double, double* %158, i64 8
%167 = bitcast double* %165 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %167
%168 = getelementptr inbounds double, double* %158, i64 9
store double 5.000000e+00, double* %166
%169 = getelementptr inbounds double, double* %158, i64 11
%170 = bitcast double* %168 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %170
%171 = getelementptr inbounds double, double* %158, i64 12
store double 5.000000e+00, double* %169
%172 = getelementptr inbounds double, double* %158, i64 14
%173 = bitcast double* %171 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %173
%174 = getelementptr inbounds double, double* %158, i64 15
store double 5.000000e+00, double* %172
%175 = getelementptr inbounds double, double* %158, i64 17
%176 = bitcast double* %174 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %176
%177 = getelementptr inbounds double, double* %158, i64 18
store double 5.000000e+00, double* %175
%178 = getelementptr inbounds double, double* %158, i64 20
%179 = bitcast double* %177 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %179
%180 = getelementptr inbounds double, double* %158, i64 21
store double 5.000000e+00, double* %178
%181 = getelementptr inbounds double, double* %158, i64 23
%182 = bitcast double* %180 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %182
%183 = getelementptr inbounds double, double* %158, i64 24
store double 5.000000e+00, double* %181
%184 = add i64 %159, 8
%185 = icmp eq i64 %184, %28
br i1 %185, label %274, label %157
186: ; preds = %186, %19
%187 = phi double* [ %2, %19 ], [ %211, %186 ]
%188 = phi i64 [ 0, %19 ], [ %213, %186 ]
%189 = getelementptr inbounds double, double* %187, i64 2
%190 = bitcast double* %187 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %190
%191 = getelementptr inbounds double, double* %187, i64 4
%192 = bitcast double* %189 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %192
%193 = getelementptr inbounds double, double* %187, i64 6
%194 = bitcast double* %191 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %194
%195 = getelementptr inbounds double, double* %187, i64 8
%196 = bitcast double* %193 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %196
%197 = getelementptr inbounds double, double* %187, i64 10
%198 = bitcast double* %195 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %198
%199 = getelementptr inbounds double, double* %187, i64 12
%200 = bitcast double* %197 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %200
%201 = getelementptr inbounds double, double* %187, i64 14
%202 = bitcast double* %199 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %202
%203 = getelementptr inbounds double, double* %187, i64 16
%204 = bitcast double* %201 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %204
%205 = getelementptr inbounds double, double* %187, i64 18
%206 = bitcast double* %203 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %206
%207 = getelementptr inbounds double, double* %187, i64 20
%208 = bitcast double* %205 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %208
%209 = getelementptr inbounds double, double* %187, i64 22
%210 = bitcast double* %207 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %210
%211 = getelementptr inbounds double, double* %187, i64 24
%212 = bitcast double* %209 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %212
%213 = add i64 %188, 4
%214 = icmp eq i64 %213, %20
br i1 %214, label %285, label %186
215: ; preds = %215, %11
%216 = phi double* [ %2, %11 ], [ %256, %215 ]
%217 = phi i64 [ 0, %11 ], [ %258, %215 ]
%218 = getelementptr inbounds double, double* %216, i64 2
%219 = bitcast double* %216 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %219
%220 = getelementptr inbounds double, double* %216, i64 4
%221 = bitcast double* %218 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %221
%222 = getelementptr inbounds double, double* %216, i64 6
%223 = bitcast double* %220 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %223
%224 = getelementptr inbounds double, double* %216, i64 8
%225 = bitcast double* %222 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %225
%226 = getelementptr inbounds double, double* %216, i64 10
%227 = bitcast double* %224 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %227
%228 = getelementptr inbounds double, double* %216, i64 12
%229 = bitcast double* %226 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %229
%230 = getelementptr inbounds double, double* %216, i64 14
%231 = bitcast double* %228 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %231
%232 = getelementptr inbounds double, double* %216, i64 16
%233 = bitcast double* %230 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %233
%234 = getelementptr inbounds double, double* %216, i64 18
%235 = bitcast double* %232 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %235
%236 = getelementptr inbounds double, double* %216, i64 20
%237 = bitcast double* %234 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %237
%238 = getelementptr inbounds double, double* %216, i64 22
%239 = bitcast double* %236 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %239
%240 = getelementptr inbounds double, double* %216, i64 24
%241 = bitcast double* %238 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %241
%242 = getelementptr inbounds double, double* %216, i64 26
%243 = bitcast double* %240 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %243
%244 = getelementptr inbounds double, double* %216, i64 28
%245 = bitcast double* %242 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %245
%246 = getelementptr inbounds double, double* %216, i64 30
%247 = bitcast double* %244 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %247
%248 = getelementptr inbounds double, double* %216, i64 32
%249 = bitcast double* %246 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %249
%250 = getelementptr inbounds double, double* %216, i64 34
%251 = bitcast double* %248 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %251
%252 = getelementptr inbounds double, double* %216, i64 36
%253 = bitcast double* %250 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %253
%254 = getelementptr inbounds double, double* %216, i64 38
%255 = bitcast double* %252 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %255
%256 = getelementptr inbounds double, double* %216, i64 40
%257 = bitcast double* %254 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %257
%258 = add i64 %217, 4
%259 = icmp eq i64 %258, %12
br i1 %259, label %299, label %215
260: ; preds = %3
%261 = tail call i32 (...) @abort()
unreachable
262: ; preds = %120, %31
%263 = phi double* [ %2, %31 ], [ %153, %120 ]
%264 = icmp eq i64 %33, 0
br i1 %264, label %317, label %265
265: ; preds = %262, %265
%266 = phi double* [ %270, %265 ], [ %263, %262 ]
%267 = phi i64 [ %272, %265 ], [ 0, %262 ]
%268 = getelementptr inbounds double, double* %266, i64 2
%269 = bitcast double* %266 to <2 x double>*
store <2 x double> <double 3.000000e+00, double 5.000000e+00>, <2 x double>* %269
%270 = getelementptr inbounds double, double* %266, i64 4
%271 = bitcast double* %268 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %271
%272 = add i64 %267, 1
%273 = icmp eq i64 %272, %33
br i1 %273, label %317, label %265
274: ; preds = %157, %23
%275 = phi double* [ %2, %23 ], [ %183, %157 ]
%276 = icmp eq i64 %25, 0
br i1 %276, label %317, label %277
277: ; preds = %274, %277
%278 = phi double* [ %282, %277 ], [ %275, %274 ]
%279 = phi i64 [ %283, %277 ], [ 0, %274 ]
%280 = getelementptr inbounds double, double* %278, i64 2
%281 = bitcast double* %278 to <2 x double>*
store <2 x double> <double 5.000000e+00, double 5.000000e+00>, <2 x double>* %281
%282 = getelementptr inbounds double, double* %278, i64 3
store double 5.000000e+00, double* %280
%283 = add i64 %279, 1
%284 = icmp eq i64 %283, %25
br i1 %284, label %317, label %277
285: ; preds = %186, %15
%286 = phi double* [ %2, %15 ], [ %211, %186 ]
%287 = icmp eq i64 %17, 0
br i1 %287, label %317, label %288
288: ; preds = %285, %288
%289 = phi double* [ %295, %288 ], [ %286, %285 ]
%290 = phi i64 [ %297, %288 ], [ 0, %285 ]
%291 = getelementptr inbounds double, double* %289, i64 2
%292 = bitcast double* %289 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %292
%293 = getelementptr inbounds double, double* %289, i64 4
%294 = bitcast double* %291 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %294
%295 = getelementptr inbounds double, double* %289, i64 6
%296 = bitcast double* %293 to <2 x double>*
store <2 x double> <double 7.000000e+00, double 7.000000e+00>, <2 x double>* %296
%297 = add i64 %290, 1
%298 = icmp eq i64 %297, %17
br i1 %298, label %317, label %288
299: ; preds = %215, %7
%300 = phi double* [ %2, %7 ], [ %256, %215 ]
%301 = icmp eq i64 %9, 0
br i1 %301, label %317, label %302
302: ; preds = %299, %302
%303 = phi double* [ %313, %302 ], [ %300, %299 ]
%304 = phi i64 [ %315, %302 ], [ 0, %299 ]
%305 = getelementptr inbounds double, double* %303, i64 2
%306 = bitcast double* %303 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %306
%307 = getelementptr inbounds double, double* %303, i64 4
%308 = bitcast double* %305 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %308
%309 = getelementptr inbounds double, double* %303, i64 6
%310 = bitcast double* %307 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %310
%311 = getelementptr inbounds double, double* %303, i64 8
%312 = bitcast double* %309 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %312
%313 = getelementptr inbounds double, double* %303, i64 10
%314 = bitcast double* %311 to <2 x double>*
store <2 x double> <double 9.000000e+00, double 9.000000e+00>, <2 x double>* %314
%315 = add i64 %304, 1
%316 = icmp eq i64 %315, %9
br i1 %316, label %317, label %302
317: ; preds = %299, %302, %285, %288, %274, %277, %262, %265, %114, %109, %5, %13, %21, %29, %37
ret void
}