void meshgrid_double(double *x, double *y, double *z, double *outArr, int r,
                     int c, int d) {
  int i, j, k, offset;
  for (k = 0; k < d / 3; k++) {
    for (i = 0; i < r; i++) {
      for (j = 0; j < c; j++) {
        offset = (d * j) + (c * d * i) + k;
        *(outArr + offset) = *(x + j);
        *(outArr + offset + (3 * 2 + 1)) = *(y + i);
        *(outArr + offset + 2 * (3 * 2 + 1)) = *(z + k);
      }
    }
  }
}


x86 assembly (clang, -O0):
<meshgrid_double>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8d,-0x24(%rbp)
mov    %r9d,-0x28(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    0x10(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x3c(%rbp),%eax
cmp    %ecx,%eax
jge    1208 <meshgrid_double+0x108>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    11f5 <meshgrid_double+0xf5>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    11e2 <meshgrid_double+0xe2>
mov    0x10(%rbp),%eax
imul   -0x30(%rbp),%eax
mov    -0x28(%rbp),%ecx
imul   0x10(%rbp),%ecx
imul   -0x2c(%rbp),%ecx
add    %ecx,%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,0x38(%rax,%rcx,8)
mov    -0x18(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,0x70(%rax,%rcx,8)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    115e <meshgrid_double+0x5e>
jmp    11e7 <meshgrid_double+0xe7>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    114b <meshgrid_double+0x4b>
jmp    11fa <meshgrid_double+0xfa>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1126 <meshgrid_double+0x26>
pop    %rbp
ret

x86 assembly (clang, -O2):
<meshgrid_double>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x10,%rsp
mov    %r8d,-0x74(%rsp)
mov    0x48(%rsp),%eax
cmp    $0x3,%eax
jl     14bb <meshgrid_double+0x3bb>
mov    0x48(%rsp),%ebp
mov    %ebp,%eax
mov    $0xaaaaaaab,%ebx
imul   %rax,%rbx
shr    $0x21,%rbx
mov    %rbx,-0x40(%rsp)
mov    -0x74(%rsp),%eax
mov    %rax,0x8(%rsp)
mov    %r9d,%r11d
lea    -0x1(%r11),%rax
mov    %rax,-0x8(%rsp)
lea    (%rdi,%r11,8),%rax
mov    %rax,-0x18(%rsp)
lea    (%rcx,%r11,8),%rax
add    $0x70,%rax
mov    %rax,-0x20(%rsp)
mov    %r11d,%eax
and    $0xfffffffe,%eax
mov    %rax,-0x28(%rsp)
add    $0xfffffffffffffffe,%rax
mov    %rax,-0x30(%rsp)
mov    %rax,%rbx
shr    %rbx
add    $0x1,%rbx
mov    %rbx,%rax
mov    %rbx,-0x38(%rsp)
and    $0xfffffffffffffffe,%rbx
mov    %rbx,-0x48(%rsp)
mov    %r11,%rax
neg    %rax
mov    %rax,(%rsp)
lea    0x0(%rbp,%rbp,1),%r10d
mov    %ebp,%eax
imul   %r9d,%eax
mov    %eax,-0x54(%rsp)
lea    0x0(,%rbp,4),%eax
mov    %eax,-0x5c(%rsp)
xor    %r12d,%r12d
mov    %r9d,-0x58(%rsp)
jmp    11cf <meshgrid_double+0xcf>
add    $0x1,%r12
cmp    -0x40(%rsp),%r12
je     14bb <meshgrid_double+0x3bb>
cmpl   $0x0,-0x74(%rsp)
jle    11c0 <meshgrid_double+0xc0>
lea    (%rdx,%r12,8),%r13
lea    (%rdx,%r12,8),%rax
add    $0x8,%rax
mov    %rax,-0x10(%rsp)
xor    %eax,%eax
mov    %rax,-0x68(%rsp)
mov    $0x1,%r14d
mov    %r12d,%eax
mov    %r12d,-0x78(%rsp)
xor    %r8d,%r8d
mov    %r13,-0x70(%rsp)
jmp    1237 <meshgrid_double+0x137>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%r8
mov    -0x78(%rsp),%eax
add    -0x54(%rsp),%eax
mov    %eax,-0x78(%rsp)
mov    -0x68(%rsp),%rax
add    %r9d,%eax
mov    %rax,-0x68(%rsp)
add    %r9d,%r14d
cmp    0x8(%rsp),%r8
je     11c0 <meshgrid_double+0xc0>
test   %r9d,%r9d
jle    1210 <meshgrid_double+0x110>
mov    %r8d,%eax
imul   %r9d,%eax
mov    %rax,-0x50(%rsp)
cmp    $0x1,%r9d
je     1370 <meshgrid_double+0x270>
mov    0x48(%rsp),%eax
cmp    $0x1,%eax
jne    1370 <meshgrid_double+0x270>
mov    %r8,%rax
imul   %r11,%rax
add    %r12,%rax
mov    -0x8(%rsp),%rbp
lea    (%rax,%rbp,1),%ebx
cmp    %eax,%ebx
jl     1370 <meshgrid_double+0x270>
mov    %rbp,%rbx
shr    $0x20,%rbx
mov    $0x0,%r15d
jne    1373 <meshgrid_double+0x273>
cltq
lea    (%rcx,%rax,8),%rbp
mov    -0x20(%rsp),%rbx
lea    (%rbx,%rax,8),%rax
lea    (%rsi,%r8,8),%rbx
cmp    %rdi,%rax
seta   -0x79(%rsp)
lea    (%rsi,%r8,8),%r15
add    $0x8,%r15
cmp    -0x18(%rsp),%rbp
setb   -0x7a(%rsp)
cmp    %rax,%rbx
setb   %bl
cmp    %r15,%rbp
setb   %r15b
cmp    %rax,%r13
setb   %r13b
cmp    -0x10(%rsp),%rbp
setb   %bpl
mov    -0x7a(%rsp),%al
test   %al,-0x79(%rsp)
jne    144e <meshgrid_double+0x34e>
and    %r15b,%bl
jne    144e <meshgrid_double+0x34e>
mov    $0x0,%r15d
and    %bpl,%r13b
mov    -0x70(%rsp),%r13
jne    1373 <meshgrid_double+0x273>
cmpq   $0x0,-0x30(%rsp)
je     145b <meshgrid_double+0x35b>
movsd  (%rsi,%r8,8),%xmm0
movlhps %xmm0,%xmm0
movsd  (%rdx,%r12,8),%xmm1
movlhps %xmm1,%xmm1
mov    -0x48(%rsp),%r9
mov    -0x78(%rsp),%eax
xor    %ebp,%ebp
mov    -0x5c(%rsp),%r13d
nopl   0x0(%rax,%rax,1)
movups (%rdi,%rbp,8),%xmm2
cltq
movups %xmm2,(%rcx,%rax,8)
movups %xmm0,0x38(%rcx,%rax,8)
movups %xmm1,0x70(%rcx,%rax,8)
lea    (%r10,%rax,1),%r15d
movups 0x10(%rdi,%rbp,8),%xmm2
movslq %r15d,%rbx
movups %xmm2,(%rcx,%rbx,8)
movups %xmm0,0x38(%rcx,%rbx,8)
movups %xmm1,0x70(%rcx,%rbx,8)
add    $0x4,%rbp
add    %r13d,%eax
add    $0xfffffffffffffffe,%r9
jne    1330 <meshgrid_double+0x230>
jmp    145d <meshgrid_double+0x35d>
xor    %r15d,%r15d
mov    %r15,%rbp
test   $0x1,%r11b
je     13bb <meshgrid_double+0x2bb>
mov    -0x50(%rsp),%rbx
add    %r15d,%ebx
mov    0x48(%rsp),%eax
imul   %eax,%ebx
add    %r12d,%ebx
movsd  (%rdi,%r15,8),%xmm0
movslq %ebx,%rax
movsd  %xmm0,(%rcx,%rax,8)
movsd  (%rsi,%r8,8),%xmm0
movsd  %xmm0,0x38(%rcx,%rax,8)
movsd  (%rdx,%r12,8),%xmm0
movsd  %xmm0,0x70(%rcx,%rax,8)
mov    %r15,%rbp
or     $0x1,%rbp
not    %r15
cmp    (%rsp),%r15
je     1210 <meshgrid_double+0x110>
mov    -0x68(%rsp),%rax
add    %ebp,%eax
mov    0x48(%rsp),%ebx
mov    %rbx,%r15
imul   %r15d,%eax
add    %r12d,%eax
lea    (%r14,%rbp,1),%ebx
imul   %r15d,%ebx
add    %r12d,%ebx
nopl   0x0(%rax,%rax,1)
movsd  (%rdi,%rbp,8),%xmm0
cltq
movsd  %xmm0,(%rcx,%rax,8)
movsd  (%rsi,%r8,8),%xmm0
movsd  %xmm0,0x38(%rcx,%rax,8)
movsd  (%rdx,%r12,8),%xmm0
movsd  %xmm0,0x70(%rcx,%rax,8)
movsd  0x8(%rdi,%rbp,8),%xmm0
movslq %ebx,%rbx
movsd  %xmm0,(%rcx,%rbx,8)
movsd  (%rsi,%r8,8),%xmm0
movsd  %xmm0,0x38(%rcx,%rbx,8)
movsd  (%rdx,%r12,8),%xmm0
movsd  %xmm0,0x70(%rcx,%rbx,8)
add    $0x2,%rbp
add    %r10d,%eax
add    %r10d,%ebx
cmp    %rbp,%r11
jne    13f0 <meshgrid_double+0x2f0>
jmp    1210 <meshgrid_double+0x110>
xor    %r15d,%r15d
mov    -0x70(%rsp),%r13
jmp    1373 <meshgrid_double+0x273>
xor    %ebp,%ebp
testb  $0x1,-0x38(%rsp)
mov    -0x58(%rsp),%r9d
mov    -0x70(%rsp),%r13
je     14a5 <meshgrid_double+0x3a5>
mov    -0x50(%rsp),%rax
add    %ebp,%eax
mov    0x48(%rsp),%ebx
imul   %ebx,%eax
add    %r12d,%eax
movups (%rdi,%rbp,8),%xmm0
cltq
movups %xmm0,(%rcx,%rax,8)
movsd  (%rsi,%r8,8),%xmm0
movlhps %xmm0,%xmm0
movups %xmm0,0x38(%rcx,%rax,8)
movsd  (%rdx,%r12,8),%xmm0
movlhps %xmm0,%xmm0
movups %xmm0,0x70(%rcx,%rax,8)
mov    -0x28(%rsp),%rax
mov    %rax,%r15
cmp    %r11,%rax
je     1210 <meshgrid_double+0x110>
jmp    1373 <meshgrid_double+0x273>
add    $0x10,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @meshgrid_double(double* nocapture %0, double* nocapture %1, double* nocapture %2, double* nocapture writeonly %3, i32 %4, i32 %5, i32 %6) {
%8 = icmp sgt i32 %6, 2
br i1 %8, label %9, label %208
9: ; preds = %7
%10 = udiv i32 %6, 3
%11 = icmp sgt i32 %4, 0
%12 = icmp sgt i32 %5, 0
%13 = zext i32 %10 to i64
%14 = zext i32 %4 to i64
%15 = zext i32 %5 to i64
%16 = add nsw i64 %15, -1
%17 = getelementptr double, double* %0, i64 %15
%18 = add nuw nsw i64 %15, 14
%19 = getelementptr double, double* %3, i64 %18
%20 = and i64 %15, 4294967294
%21 = add nsw i64 %20, -2
%22 = lshr exact i64 %21, 1
%23 = add nuw i64 %22, 1
%24 = icmp eq i32 %5, 1
%25 = icmp ne i32 %6, 1
%26 = trunc i64 %16 to i32
%27 = icmp ugt i64 %16, 4294967295
%28 = and i64 %15, 4294967294
%29 = and i64 %23, 1
%30 = icmp eq i64 %21, 0
%31 = and i64 %23, -2
%32 = icmp eq i64 %29, 0
%33 = icmp eq i64 %28, %15
%34 = and i64 %15, 1
%35 = icmp eq i64 %34, 0
%36 = sub nsw i64 0, %15
br label %37
37: ; preds = %9, %205
%38 = phi i64 [ 0, %9 ], [ %206, %205 ]
%39 = getelementptr double, double* %2, i64 %38
%40 = add nuw i64 %38, 1
%41 = getelementptr double, double* %2, i64 %40
br i1 %11, label %42, label %205
42: ; preds = %37
%43 = getelementptr inbounds double, double* %2, i64 %38
%44 = trunc i64 %38 to i32
br label %45
45: ; preds = %42, %202
%46 = phi i64 [ 0, %42 ], [ %203, %202 ]
%47 = mul i64 %46, %15
%48 = add i64 %38, %47
%49 = shl i64 %48, 32
%50 = ashr exact i64 %49, 32
%51 = getelementptr double, double* %3, i64 %50
%52 = getelementptr double, double* %19, i64 %50
%53 = getelementptr double, double* %1, i64 %46
%54 = add nuw i64 %46, 1
%55 = getelementptr double, double* %1, i64 %54
%56 = mul i64 %46, %15
%57 = add i64 %38, %56
%58 = trunc i64 %57 to i32
br i1 %12, label %59, label %202
59: ; preds = %45
%60 = trunc i64 %46 to i32
%61 = mul i32 %60, %5
%62 = getelementptr inbounds double, double* %1, i64 %46
br i1 %24, label %153, label %63
63: ; preds = %59
%64 = add i32 %58, %26
%65 = icmp slt i32 %64, %58
%66 = or i1 %65, %27
%67 = or i1 %25, %66
br i1 %67, label %153, label %68
68: ; preds = %63
%69 = icmp ugt double* %52, %0
%70 = icmp ult double* %51, %17
%71 = and i1 %69, %70
%72 = icmp ult double* %53, %52
%73 = icmp ult double* %51, %55
%74 = and i1 %72, %73
%75 = or i1 %71, %74
%76 = icmp ult double* %39, %52
%77 = icmp ult double* %51, %41
%78 = and i1 %76, %77
%79 = or i1 %75, %78
br i1 %79, label %153, label %80
80: ; preds = %68
br i1 %30, label %129, label %81
81: ; preds = %80
%82 = load double, double* %62
%83 = insertelement <2 x double> poison, double %82, i64 0
%84 = shufflevector <2 x double> %83, <2 x double> poison, <2 x i32> zeroinitializer
%85 = load double, double* %43
%86 = insertelement <2 x double> poison, double %85, i64 0
%87 = shufflevector <2 x double> %86, <2 x double> poison, <2 x i32> zeroinitializer
%88 = load double, double* %62
%89 = insertelement <2 x double> poison, double %88, i64 0
%90 = shufflevector <2 x double> %89, <2 x double> poison, <2 x i32> zeroinitializer
%91 = load double, double* %43
%92 = insertelement <2 x double> poison, double %91, i64 0
%93 = shufflevector <2 x double> %92, <2 x double> poison, <2 x i32> zeroinitializer
br label %94
94: ; preds = %94, %81
%95 = phi i64 [ 0, %81 ], [ %126, %94 ]
%96 = phi i64 [ 0, %81 ], [ %127, %94 ]
%97 = trunc i64 %95 to i32
%98 = add i32 %61, %97
%99 = mul i32 %98, %6
%100 = add i32 %99, %44
%101 = getelementptr inbounds double, double* %0, i64 %95
%102 = bitcast double* %101 to <2 x double>*
%103 = load <2 x double>, <2 x double>* %102
%104 = sext i32 %100 to i64
%105 = getelementptr inbounds double, double* %3, i64 %104
%106 = bitcast double* %105 to <2 x double>*
store <2 x double> %103, <2 x double>* %106
%107 = getelementptr inbounds double, double* %105, i64 7
%108 = bitcast double* %107 to <2 x double>*
store <2 x double> %84, <2 x double>* %108
%109 = getelementptr inbounds double, double* %105, i64 14
%110 = bitcast double* %109 to <2 x double>*
store <2 x double> %87, <2 x double>* %110
%111 = or i64 %95, 2
%112 = trunc i64 %111 to i32
%113 = add i32 %61, %112
%114 = mul i32 %113, %6
%115 = add i32 %114, %44
%116 = getelementptr inbounds double, double* %0, i64 %111
%117 = bitcast double* %116 to <2 x double>*
%118 = load <2 x double>, <2 x double>* %117
%119 = sext i32 %115 to i64
%120 = getelementptr inbounds double, double* %3, i64 %119
%121 = bitcast double* %120 to <2 x double>*
store <2 x double> %118, <2 x double>* %121
%122 = getelementptr inbounds double, double* %120, i64 7
%123 = bitcast double* %122 to <2 x double>*
store <2 x double> %90, <2 x double>* %123
%124 = getelementptr inbounds double, double* %120, i64 14
%125 = bitcast double* %124 to <2 x double>*
store <2 x double> %93, <2 x double>* %125
%126 = add nuw i64 %95, 4
%127 = add nuw i64 %96, 2
%128 = icmp eq i64 %127, %31
br i1 %128, label %129, label %94
129: ; preds = %94, %80
%130 = phi i64 [ 0, %80 ], [ %126, %94 ]
br i1 %32, label %152, label %131
131: ; preds = %129
%132 = trunc i64 %130 to i32
%133 = add i32 %61, %132
%134 = mul i32 %133, %6
%135 = add i32 %134, %44
%136 = getelementptr inbounds double, double* %0, i64 %130
%137 = bitcast double* %136 to <2 x double>*
%138 = load <2 x double>, <2 x double>* %137
%139 = sext i32 %135 to i64
%140 = getelementptr inbounds double, double* %3, i64 %139
%141 = bitcast double* %140 to <2 x double>*
store <2 x double> %138, <2 x double>* %141
%142 = load double, double* %62
%143 = insertelement <2 x double> poison, double %142, i64 0
%144 = shufflevector <2 x double> %143, <2 x double> poison, <2 x i32> zeroinitializer
%145 = getelementptr inbounds double, double* %140, i64 7
%146 = bitcast double* %145 to <2 x double>*
store <2 x double> %144, <2 x double>* %146
%147 = load double, double* %43
%148 = insertelement <2 x double> poison, double %147, i64 0
%149 = shufflevector <2 x double> %148, <2 x double> poison, <2 x i32> zeroinitializer
%150 = getelementptr inbounds double, double* %140, i64 14
%151 = bitcast double* %150 to <2 x double>*
store <2 x double> %149, <2 x double>* %151
br label %152
152: ; preds = %129, %131
br i1 %33, label %202, label %153
153: ; preds = %68, %63, %59, %152
%154 = phi i64 [ 0, %68 ], [ 0, %63 ], [ 0, %59 ], [ %28, %152 ]
%155 = xor i64 %154, -1
br i1 %35, label %170, label %156
156: ; preds = %153
%157 = trunc i64 %154 to i32
%158 = add i32 %61, %157
%159 = mul i32 %158, %6
%160 = add i32 %159, %44
%161 = getelementptr inbounds double, double* %0, i64 %154
%162 = load double, double* %161
%163 = sext i32 %160 to i64
%164 = getelementptr inbounds double, double* %3, i64 %163
store double %162, double* %164
%165 = load double, double* %62
%166 = getelementptr inbounds double, double* %164, i64 7
store double %165, double* %166
%167 = load double, double* %43
%168 = getelementptr inbounds double, double* %164, i64 14
store double %167, double* %168
%169 = or i64 %154, 1
br label %170
170: ; preds = %156, %153
%171 = phi i64 [ %154, %153 ], [ %169, %156 ]
%172 = icmp eq i64 %155, %36
br i1 %172, label %202, label %173
173: ; preds = %170, %173
%174 = phi i64 [ %200, %173 ], [ %171, %170 ]
%175 = trunc i64 %174 to i32
%176 = add i32 %61, %175
%177 = mul i32 %176, %6
%178 = add i32 %177, %44
%179 = getelementptr inbounds double, double* %0, i64 %174
%180 = load double, double* %179
%181 = sext i32 %178 to i64
%182 = getelementptr inbounds double, double* %3, i64 %181
store double %180, double* %182
%183 = load double, double* %62
%184 = getelementptr inbounds double, double* %182, i64 7
store double %183, double* %184
%185 = load double, double* %43
%186 = getelementptr inbounds double, double* %182, i64 14
store double %185, double* %186
%187 = add nuw nsw i64 %174, 1
%188 = trunc i64 %187 to i32
%189 = add i32 %61, %188
%190 = mul i32 %189, %6
%191 = add i32 %190, %44
%192 = getelementptr inbounds double, double* %0, i64 %187
%193 = load double, double* %192
%194 = sext i32 %191 to i64
%195 = getelementptr inbounds double, double* %3, i64 %194
store double %193, double* %195
%196 = load double, double* %62
%197 = getelementptr inbounds double, double* %195, i64 7
store double %196, double* %197
%198 = load double, double* %43
%199 = getelementptr inbounds double, double* %195, i64 14
store double %198, double* %199
%200 = add nuw nsw i64 %174, 2
%201 = icmp eq i64 %200, %15
br i1 %201, label %202, label %173
202: ; preds = %170, %173, %152, %45
%203 = add nuw nsw i64 %46, 1
%204 = icmp eq i64 %203, %14
br i1 %204, label %205, label %45
205: ; preds = %202, %37
%206 = add nuw nsw i64 %38, 1
%207 = icmp eq i64 %206, %13
br i1 %207, label %208, label %37
208: ; preds = %205, %7
ret void
}