void init_array(int tmax, int nx, int ny, double ex[1000 + 0][1200 + 0],
                double ey[1000 + 0][1200 + 0], double hz[1000 + 0][1200 + 0],
                double _fict_[500 + 0]) {
  int i, j;
  for (i = 0; i < tmax; i++)
    _fict_[i] = (double)i;
  for (i = 0; i < nx; i++)
    for (j = 0; j < ny; j++) {
      ex[i][j] = ((double)i * (j + 1)) / nx;
      ey[i][j] = ((double)i * (j + 2)) / ny;
      hz[i][j] = ((double)i * (j + 3)) / nx;
    }
}


x86 assembly (clang, -O0):
<init_array>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1150 <init_array+0x50>
cvtsi2sdl -0x2c(%rbp),%xmm0
mov    0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1124 <init_array+0x24>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    123c <init_array+0x13c>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1229 <init_array+0x129>
cvtsi2sdl -0x2c(%rbp),%xmm0
mov    -0x30(%rbp),%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
imul   $0x2580,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cvtsi2sdl -0x2c(%rbp),%xmm0
mov    -0x30(%rbp),%eax
add    $0x2,%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl -0xc(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x2c(%rbp),%rcx
imul   $0x2580,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
cvtsi2sdl -0x2c(%rbp),%xmm0
mov    -0x30(%rbp),%eax
add    $0x3,%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movslq -0x2c(%rbp),%rcx
imul   $0x2580,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    116a <init_array+0x6a>
jmp    122e <init_array+0x12e>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1157 <init_array+0x57>
pop    %rbp
ret

x86 assembly (clang, -O2):
<init_array>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %r9,-0x18(%rsp)
mov    %r8,-0x20(%rsp)
mov    %rcx,-0x28(%rsp)
mov    %edx,-0x2c(%rsp)
test   %edi,%edi
jle    1226 <init_array+0x126>
mov    0x38(%rsp),%r14
mov    %edi,%r11d
cmp    $0x4,%edi
jae    1139 <init_array+0x39>
xor    %edi,%edi
jmp    1210 <init_array+0x110>
mov    %r11d,%edi
and    $0xfffffffc,%edi
lea    -0x4(%rdi),%rax
mov    %rax,%r10
shr    $0x2,%r10
add    $0x1,%r10
test   %rax,%rax
je     14ad <init_array+0x3ad>
mov    %r10,%rax
and    $0xfffffffffffffffe,%rax
movdqa 0xe9a(%rip),%xmm0
xor    %ebx,%ebx
movdqa 0xea0(%rip),%xmm1
movdqa 0xea8(%rip),%xmm2
movdqa 0xeb0(%rip),%xmm3
movdqa 0xeb8(%rip),%xmm4
nopl   0x0(%rax,%rax,1)
movdqa %xmm0,%xmm5
cvtdq2pd %xmm0,%xmm6
paddd  %xmm1,%xmm5
cvtdq2pd %xmm5,%xmm5
movups %xmm6,(%r14,%rbx,8)
movups %xmm5,0x10(%r14,%rbx,8)
movdqa %xmm0,%xmm5
paddd  %xmm2,%xmm5
movdqa %xmm0,%xmm6
cvtdq2pd %xmm5,%xmm5
paddd  %xmm3,%xmm6
cvtdq2pd %xmm6,%xmm6
movupd %xmm5,0x20(%r14,%rbx,8)
movupd %xmm6,0x30(%r14,%rbx,8)
add    $0x8,%rbx
paddd  %xmm4,%xmm0
add    $0xfffffffffffffffe,%rax
jne    1190 <init_array+0x90>
test   $0x1,%r10b
je     1202 <init_array+0x102>
cvtdq2pd %xmm0,%xmm1
paddd  0xe1f(%rip),%xmm0
cvtdq2pd %xmm0,%xmm0
movdqu %xmm1,(%r14,%rbx,8)
movdqu %xmm0,0x10(%r14,%rbx,8)
cmp    %r11,%rdi
je     1226 <init_array+0x126>
nopw   0x0(%rax,%rax,1)
xorps  %xmm0,%xmm0
cvtsi2sd %edi,%xmm0
movsd  %xmm0,(%r14,%rdi,8)
add    $0x1,%rdi
cmp    %rdi,%r11
jne    1210 <init_array+0x110>
test   %esi,%esi
mov    -0x2c(%rsp),%edx
jle    14a2 <init_array+0x3a2>
xorps  %xmm0,%xmm0
cvtsi2sd %esi,%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %edx,%xmm1
mov    %esi,%r14d
mov    %edx,%eax
mov    %eax,%r15d
and    $0xfffffffe,%r15d
movapd %xmm0,%xmm15
unpcklpd %xmm0,%xmm15
movapd %xmm1,%xmm13
unpcklpd %xmm1,%xmm13
mov    %rax,-0x10(%rsp)
neg    %rax
mov    %rax,-0x8(%rsp)
xor    %r12d,%r12d
movdqa 0xd87(%rip),%xmm8
pcmpeqd %xmm10,%xmm10
movdqa 0xd89(%rip),%xmm14
movdqa 0xdd0(%rip),%xmm11
movdqa 0xdd7(%rip),%xmm12
mov    -0x18(%rsp),%r13
mov    -0x20(%rsp),%rsi
mov    -0x28(%rsp),%rdi
jmp    12d2 <init_array+0x1d2>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r12
add    $0x2580,%rdi
add    $0x2580,%rsi
add    $0x2580,%r13
cmp    %r14,%r12
je     14a2 <init_array+0x3a2>
test   %edx,%edx
jle    12b0 <init_array+0x1b0>
xorps  %xmm6,%xmm6
cvtsi2sd %r12d,%xmm6
cmp    $0x1,%edx
jne    1380 <init_array+0x280>
xor    %eax,%eax
lea    0x0(,%rax,8),%rbx
add    %r13,%rbx
lea    (%rsi,%rax,8),%rbp
lea    (%rdi,%rax,8),%r10
mov    -0x8(%rsp),%rcx
lea    (%rcx,%rax,1),%r9
xor    %r8d,%r8d
nopl   0x0(%rax,%rax,1)
lea    (%rax,%r8,1),%ecx
add    $0x1,%ecx
xorps  %xmm2,%xmm2
cvtsi2sd %ecx,%xmm2
mulsd  %xmm6,%xmm2
divsd  %xmm0,%xmm2
lea    0x2(%rax,%r8,1),%ecx
xorps  %xmm3,%xmm3
cvtsi2sd %ecx,%xmm3
movsd  %xmm2,(%r10,%r8,8)
mulsd  %xmm6,%xmm3
divsd  %xmm1,%xmm3
movsd  %xmm3,0x0(%rbp,%r8,8)
lea    0x3(%rax,%r8,1),%ecx
xorps  %xmm2,%xmm2
cvtsi2sd %ecx,%xmm2
mulsd  %xmm6,%xmm2
divsd  %xmm0,%xmm2
movsd  %xmm2,(%rbx,%r8,8)
add    $0x1,%r8
mov    %r9,%rcx
add    %r8,%rcx
jne    1310 <init_array+0x210>
jmp    12b0 <init_array+0x1b0>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
imul   $0x2580,%r12,%rbp
mov    -0x28(%rsp),%rax
add    %rbp,%rax
mov    -0x20(%rsp),%rcx
lea    (%rcx,%rbp,1),%rbx
add    -0x18(%rsp),%rbp
mov    -0x10(%rsp),%rdx
lea    (%rax,%rdx,8),%rcx
lea    (%rbx,%rdx,8),%r8
lea    0x0(,%rdx,8),%r9
add    %rbp,%r9
cmp    %r8,%rax
setb   %r10b
cmp    %rcx,%rbx
setb   %r11b
cmp    %r9,%rax
setb   %al
cmp    %rcx,%rbp
setb   %cl
cmp    %r9,%rbx
setb   %bl
cmp    %r8,%rbp
setb   %r8b
test   %r11b,%r10b
jne    1497 <init_array+0x397>
and    %cl,%al
jne    1497 <init_array+0x397>
mov    $0x0,%eax
and    %r8b,%bl
mov    -0x2c(%rsp),%edx
jne    12e9 <init_array+0x1e9>
movapd %xmm6,%xmm5
unpcklpd %xmm6,%xmm5
xor    %eax,%eax
movdqa 0xc3f(%rip),%xmm4
movdqa %xmm8,%xmm3
movdqa %xmm8,%xmm9
nopl   0x0(%rax,%rax,1)
pshufd $0xe8,%xmm4,%xmm2
psubd  %xmm10,%xmm2
cvtdq2pd %xmm2,%xmm2
mulpd  %xmm5,%xmm2
divpd  %xmm15,%xmm2
movupd %xmm2,(%rdi,%rax,8)
paddd  %xmm14,%xmm3
cvtdq2pd %xmm3,%xmm2
mulpd  %xmm5,%xmm2
divpd  %xmm13,%xmm2
movdqa %xmm9,%xmm7
paddd  %xmm11,%xmm7
cvtdq2pd %xmm7,%xmm7
movupd %xmm2,(%rsi,%rax,8)
mulpd  %xmm5,%xmm7
divpd  %xmm15,%xmm7
movupd %xmm7,0x0(%r13,%rax,8)
add    $0x2,%rax
paddq  %xmm12,%xmm4
paddd  %xmm14,%xmm9
cmp    %rax,%r15
jne    1420 <init_array+0x320>
mov    %r15,%rax
cmp    -0x10(%rsp),%r15
je     12b0 <init_array+0x1b0>
jmp    12e9 <init_array+0x1e9>
xor    %eax,%eax
mov    -0x2c(%rsp),%edx
jmp    12e9 <init_array+0x1e9>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
movdqa 0xb4b(%rip),%xmm0
xor    %ebx,%ebx
test   $0x1,%r10b
jne    11e5 <init_array+0xe5>
jmp    1202 <init_array+0x102>

LLVM IR (-O0):
define void @init_array(i32 %0, i32 %1, i32 %2, [1200 x double]* %3, [1200 x double]* %4, [1200 x double]* %5, double* %6) {
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca [1200 x double]*
%12 = alloca [1200 x double]*
%13 = alloca [1200 x double]*
%14 = alloca double*
%15 = alloca i32
%16 = alloca i32
store i32 %0, i32* %8
store i32 %1, i32* %9
store i32 %2, i32* %10
store [1200 x double]* %3, [1200 x double]** %11
store [1200 x double]* %4, [1200 x double]** %12
store [1200 x double]* %5, [1200 x double]** %13
store double* %6, double** %14
store i32 0, i32* %15
br label %17
17: ; preds = %28, %7
%18 = load i32, i32* %15
%19 = load i32, i32* %8
%20 = icmp slt i32 %18, %19
br i1 %20, label %21, label %31
21: ; preds = %17
%22 = load i32, i32* %15
%23 = sitofp i32 %22 to double
%24 = load double*, double** %14
%25 = load i32, i32* %15
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds double, double* %24, i64 %26
store double %23, double* %27
br label %28
28: ; preds = %21
%29 = load i32, i32* %15
%30 = add nsw i32 %29, 1
store i32 %30, i32* %15
br label %17
31: ; preds = %17
store i32 0, i32* %15
br label %32
32: ; preds = %94, %31
%33 = load i32, i32* %15
%34 = load i32, i32* %9
%35 = icmp slt i32 %33, %34
br i1 %35, label %36, label %97
36: ; preds = %32
store i32 0, i32* %16
br label %37
37: ; preds = %90, %36
%38 = load i32, i32* %16
%39 = load i32, i32* %10
%40 = icmp slt i32 %38, %39
br i1 %40, label %41, label %93
41: ; preds = %37
%42 = load i32, i32* %15
%43 = sitofp i32 %42 to double
%44 = load i32, i32* %16
%45 = add nsw i32 %44, 1
%46 = sitofp i32 %45 to double
%47 = fmul double %43, %46
%48 = load i32, i32* %9
%49 = sitofp i32 %48 to double
%50 = fdiv double %47, %49
%51 = load [1200 x double]*, [1200 x double]** %11
%52 = load i32, i32* %15
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds [1200 x double], [1200 x double]* %51, i64 %53
%55 = load i32, i32* %16
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds [1200 x double], [1200 x double]* %54, i64 0, i64 %56
store double %50, double* %57
%58 = load i32, i32* %15
%59 = sitofp i32 %58 to double
%60 = load i32, i32* %16
%61 = add nsw i32 %60, 2
%62 = sitofp i32 %61 to double
%63 = fmul double %59, %62
%64 = load i32, i32* %10
%65 = sitofp i32 %64 to double
%66 = fdiv double %63, %65
%67 = load [1200 x double]*, [1200 x double]** %12
%68 = load i32, i32* %15
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds [1200 x double], [1200 x double]* %67, i64 %69
%71 = load i32, i32* %16
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds [1200 x double], [1200 x double]* %70, i64 0, i64 %72
store double %66, double* %73
%74 = load i32, i32* %15
%75 = sitofp i32 %74 to double
%76 = load i32, i32* %16
%77 = add nsw i32 %76, 3
%78 = sitofp i32 %77 to double
%79 = fmul double %75, %78
%80 = load i32, i32* %9
%81 = sitofp i32 %80 to double
%82 = fdiv double %79, %81
%83 = load [1200 x double]*, [1200 x double]** %13
%84 = load i32, i32* %15
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds [1200 x double], [1200 x double]* %83, i64 %85
%87 = load i32, i32* %16
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [1200 x double], [1200 x double]* %86, i64 0, i64 %88
store double %82, double* %89
br label %90
90: ; preds = %41
%91 = load i32, i32* %16
%92 = add nsw i32 %91, 1
store i32 %92, i32* %16
br label %37
93: ; preds = %37
br label %94
94: ; preds = %93
%95 = load i32, i32* %15
%96 = add nsw i32 %95, 1
store i32 %96, i32* %15
br label %32
97: ; preds = %32
ret void
}

LLVM IR (-O2):
define void @init_array(i32 %0, i32 %1, i32 %2, [1200 x double]* nocapture writeonly %3, [1200 x double]* nocapture writeonly %4, [1200 x double]* nocapture writeonly %5, double* nocapture writeonly %6) {
%8 = icmp sgt i32 %0, 0
br i1 %8, label %9, label %61
9: ; preds = %7
%10 = zext i32 %0 to i64
%11 = icmp ult i32 %0, 4
br i1 %11, label %59, label %12
12: ; preds = %9
%13 = and i64 %10, 4294967292
%14 = add nsw i64 %13, -4
%15 = lshr exact i64 %14, 2
%16 = add nuw nsw i64 %15, 1
%17 = and i64 %16, 1
%18 = icmp eq i64 %14, 0
br i1 %18, label %45, label %19
19: ; preds = %12
%20 = and i64 %16, 9223372036854775806
br label %21
21: ; preds = %21, %19
%22 = phi i64 [ 0, %19 ], [ %41, %21 ]
%23 = phi <2 x i32> [ <i32 0, i32 1>, %19 ], [ %42, %21 ]
%24 = phi i64 [ 0, %19 ], [ %43, %21 ]
%25 = add <2 x i32> %23, <i32 2, i32 2>
%26 = sitofp <2 x i32> %23 to <2 x double>
%27 = sitofp <2 x i32> %25 to <2 x double>
%28 = getelementptr inbounds double, double* %6, i64 %22
%29 = bitcast double* %28 to <2 x double>*
store <2 x double> %26, <2 x double>* %29
%30 = getelementptr inbounds double, double* %28, i64 2
%31 = bitcast double* %30 to <2 x double>*
store <2 x double> %27, <2 x double>* %31
%32 = or i64 %22, 4
%33 = add <2 x i32> %23, <i32 4, i32 4>
%34 = add <2 x i32> %23, <i32 6, i32 6>
%35 = sitofp <2 x i32> %33 to <2 x double>
%36 = sitofp <2 x i32> %34 to <2 x double>
%37 = getelementptr inbounds double, double* %6, i64 %32
%38 = bitcast double* %37 to <2 x double>*
store <2 x double> %35, <2 x double>* %38
%39 = getelementptr inbounds double, double* %37, i64 2
%40 = bitcast double* %39 to <2 x double>*
store <2 x double> %36, <2 x double>* %40
%41 = add nuw i64 %22, 8
%42 = add <2 x i32> %23, <i32 8, i32 8>
%43 = add i64 %24, 2
%44 = icmp eq i64 %43, %20
br i1 %44, label %45, label %21
45: ; preds = %21, %12
%46 = phi i64 [ 0, %12 ], [ %41, %21 ]
%47 = phi <2 x i32> [ <i32 0, i32 1>, %12 ], [ %42, %21 ]
%48 = icmp eq i64 %17, 0
br i1 %48, label %57, label %49
49: ; preds = %45
%50 = add <2 x i32> %47, <i32 2, i32 2>
%51 = sitofp <2 x i32> %47 to <2 x double>
%52 = sitofp <2 x i32> %50 to <2 x double>
%53 = getelementptr inbounds double, double* %6, i64 %46
%54 = bitcast double* %53 to <2 x double>*
store <2 x double> %51, <2 x double>* %54
%55 = getelementptr inbounds double, double* %53, i64 2
%56 = bitcast double* %55 to <2 x double>*
store <2 x double> %52, <2 x double>* %56
br label %57
57: ; preds = %45, %49
%58 = icmp eq i64 %13, %10
br i1 %58, label %61, label %59
59: ; preds = %9, %57
%60 = phi i64 [ 0, %9 ], [ %13, %57 ]
br label %76
61: ; preds = %76, %57, %7
%62 = icmp sgt i32 %1, 0
br i1 %62, label %63, label %165
63: ; preds = %61
%64 = icmp sgt i32 %2, 0
%65 = sitofp i32 %1 to double
%66 = sitofp i32 %2 to double
%67 = zext i32 %1 to i64
%68 = zext i32 %2 to i64
%69 = icmp eq i32 %2, 1
%70 = and i64 %68, 4294967294
%71 = insertelement <2 x double> poison, double %65, i64 0
%72 = shufflevector <2 x double> %71, <2 x double> poison, <2 x i32> zeroinitializer
%73 = insertelement <2 x double> poison, double %66, i64 0
%74 = shufflevector <2 x double> %73, <2 x double> poison, <2 x i32> zeroinitializer
%75 = icmp eq i64 %70, %68
br label %83
76: ; preds = %59, %76
%77 = phi i64 [ %81, %76 ], [ %60, %59 ]
%78 = trunc i64 %77 to i32
%79 = sitofp i32 %78 to double
%80 = getelementptr inbounds double, double* %6, i64 %77
store double %79, double* %80
%81 = add nuw nsw i64 %77, 1
%82 = icmp eq i64 %81, %10
br i1 %82, label %61, label %76
83: ; preds = %63, %162
%84 = phi i64 [ 0, %63 ], [ %163, %162 ]
%85 = getelementptr [1200 x double], [1200 x double]* %3, i64 %84, i64 0
%86 = getelementptr [1200 x double], [1200 x double]* %3, i64 %84, i64 %68
%87 = getelementptr [1200 x double], [1200 x double]* %4, i64 %84, i64 0
%88 = getelementptr [1200 x double], [1200 x double]* %4, i64 %84, i64 %68
%89 = getelementptr [1200 x double], [1200 x double]* %5, i64 %84, i64 0
%90 = getelementptr [1200 x double], [1200 x double]* %5, i64 %84, i64 %68
br i1 %64, label %91, label %162
91: ; preds = %83
%92 = trunc i64 %84 to i32
%93 = sitofp i32 %92 to double
br i1 %69, label %139, label %94
94: ; preds = %91
%95 = icmp ult double* %85, %88
%96 = icmp ult double* %87, %86
%97 = and i1 %95, %96
%98 = icmp ult double* %85, %90
%99 = icmp ult double* %89, %86
%100 = and i1 %98, %99
%101 = or i1 %97, %100
%102 = icmp ult double* %87, %90
%103 = icmp ult double* %89, %88
%104 = and i1 %102, %103
%105 = or i1 %101, %104
br i1 %105, label %139, label %106
106: ; preds = %94
%107 = insertelement <2 x double> poison, double %93, i64 0
%108 = shufflevector <2 x double> %107, <2 x double> poison, <2 x i32> zeroinitializer
br label %109
109: ; preds = %109, %106
%110 = phi i64 [ 0, %106 ], [ %133, %109 ]
%111 = phi <2 x i64> [ <i64 0, i64 1>, %106 ], [ %134, %109 ]
%112 = phi <2 x i32> [ <i32 0, i32 1>, %106 ], [ %135, %109 ]
%113 = phi <2 x i32> [ <i32 0, i32 1>, %106 ], [ %136, %109 ]
%114 = trunc <2 x i64> %111 to <2 x i32>
%115 = add <2 x i32> %114, <i32 1, i32 1>
%116 = sitofp <2 x i32> %115 to <2 x double>
%117 = fmul <2 x double> %108, %116
%118 = fdiv <2 x double> %117, %72
%119 = getelementptr inbounds [1200 x double], [1200 x double]* %3, i64 %84, i64 %110
%120 = bitcast double* %119 to <2 x double>*
store <2 x double> %118, <2 x double>* %120
%121 = add <2 x i32> %112, <i32 2, i32 2>
%122 = sitofp <2 x i32> %121 to <2 x double>
%123 = fmul <2 x double> %108, %122
%124 = fdiv <2 x double> %123, %74
%125 = getelementptr inbounds [1200 x double], [1200 x double]* %4, i64 %84, i64 %110
%126 = bitcast double* %125 to <2 x double>*
store <2 x double> %124, <2 x double>* %126
%127 = add <2 x i32> %113, <i32 3, i32 3>
%128 = sitofp <2 x i32> %127 to <2 x double>
%129 = fmul <2 x double> %108, %128
%130 = fdiv <2 x double> %129, %72
%131 = getelementptr inbounds [1200 x double], [1200 x double]* %5, i64 %84, i64 %110
%132 = bitcast double* %131 to <2 x double>*
store <2 x double> %130, <2 x double>* %132
%133 = add nuw i64 %110, 2
%134 = add <2 x i64> %111, <i64 2, i64 2>
%135 = add <2 x i32> %112, <i32 2, i32 2>
%136 = add <2 x i32> %113, <i32 2, i32 2>
%137 = icmp eq i64 %133, %70
br i1 %137, label %138, label %109
138: ; preds = %109
br i1 %75, label %162, label %139
139: ; preds = %94, %91, %138
%140 = phi i64 [ 0, %94 ], [ 0, %91 ], [ %70, %138 ]
br label %141
141: ; preds = %139, %141
%142 = phi i64 [ %143, %141 ], [ %140, %139 ]
%143 = add nuw nsw i64 %142, 1
%144 = trunc i64 %143 to i32
%145 = sitofp i32 %144 to double
%146 = fmul double %93, %145
%147 = fdiv double %146, %65
%148 = getelementptr inbounds [1200 x double], [1200 x double]* %3, i64 %84, i64 %142
store double %147, double* %148
%149 = trunc i64 %142 to i32
%150 = add i32 %149, 2
%151 = sitofp i32 %150 to double
%152 = fmul double %93, %151
%153 = fdiv double %152, %66
%154 = getelementptr inbounds [1200 x double], [1200 x double]* %4, i64 %84, i64 %142
store double %153, double* %154
%155 = trunc i64 %142 to i32
%156 = add i32 %155, 3
%157 = sitofp i32 %156 to double
%158 = fmul double %93, %157
%159 = fdiv double %158, %65
%160 = getelementptr inbounds [1200 x double], [1200 x double]* %5, i64 %84, i64 %142
store double %159, double* %160
%161 = icmp eq i64 %143, %68
br i1 %161, label %162, label %141
162: ; preds = %141, %138, %83
%163 = add nuw nsw i64 %84, 1
%164 = icmp eq i64 %163, %67
br i1 %164, label %165, label %83
165: ; preds = %162, %61
ret void
}