void augmentImage(int **image, int rows, int cols, int **augimage) {
  int row, col;
  int rowsaug = rows + 2;
  int colsaug = cols + 2;
  for (row = 0; row < rowsaug; row++) {
    augimage[row][0] = 0;
    augimage[row][colsaug - 1] = 0;
  }
  for (col = 0; col < colsaug; col++) {
    augimage[0][col] = 0;
    augimage[rowsaug - 1][col] = 0;
  }
  for (row = 1; row < rowsaug - 1; row++)
    for (col = 1; col < colsaug - 1; col++)
      augimage[row][col] = image[row - 1][col - 1];
}


x86 assembly (clang, -O0):
<augmentImage>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    -0xc(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x28(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    1173 <augmentImage+0x73>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movl   $0x0,(%rax)
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    112b <augmentImage+0x2b>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    11c2 <augmentImage+0xc2>
mov    -0x18(%rbp),%rax
mov    (%rax),%rax
movslq -0x20(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x20(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    117a <augmentImage+0x7a>
movl   $0x1,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1243 <augmentImage+0x143>
movl   $0x1,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1230 <augmentImage+0x130>
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x20(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    11e1 <augmentImage+0xe1>
jmp    1235 <augmentImage+0x135>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11c9 <augmentImage+0xc9>
pop    %rbp
ret

x86 assembly (clang, -O2):
<augmentImage>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
cmp    $0xffffffff,%esi
jl     11cc <augmentImage+0xcc>
lea    0x1(%rdx),%eax
cltq
lea    0x2(%rsi),%r9d
lea    -0x1(%r9),%rbx
mov    %r9d,%r8d
and    $0x3,%r8d
cmp    $0x3,%rbx
jae    1131 <augmentImage+0x31>
xor    %ebx,%ebx
jmp    1198 <augmentImage+0x98>
and    $0xfffffffc,%r9d
xor    %ebx,%ebx
nopw   0x0(%rax,%rax,1)
mov    (%rcx,%rbx,8),%rbp
movl   $0x0,0x0(%rbp)
movl   $0x0,0x0(%rbp,%rax,4)
mov    0x8(%rcx,%rbx,8),%rbp
movl   $0x0,0x0(%rbp)
movl   $0x0,0x0(%rbp,%rax,4)
mov    0x10(%rcx,%rbx,8),%rbp
movl   $0x0,0x0(%rbp)
movl   $0x0,0x0(%rbp,%rax,4)
mov    0x18(%rcx,%rbx,8),%rbp
movl   $0x0,0x0(%rbp)
movl   $0x0,0x0(%rbp,%rax,4)
add    $0x4,%rbx
cmp    %rbx,%r9
jne    1140 <augmentImage+0x40>
test   %r8,%r8
je     11cc <augmentImage+0xcc>
lea    (%rcx,%rbx,8),%r9
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    (%r9,%rbx,8),%rbp
movl   $0x0,0x0(%rbp)
movl   $0x0,0x0(%rbp,%rax,4)
add    $0x1,%rbx
cmp    %rbx,%r8
jne    11b0 <augmentImage+0xb0>
cmp    $0xffffffff,%edx
jl     1378 <augmentImage+0x278>
mov    (%rcx),%r9
movslq %esi,%rax
mov    0x8(%rcx,%rax,8),%rbx
lea    0x2(%rdx),%r8d
cmp    $0x8,%r8d
jb     1204 <augmentImage+0x104>
lea    (%rbx,%r8,4),%rax
cmp    %rax,%r9
jae    12a0 <augmentImage+0x1a0>
lea    (%r9,%r8,4),%rax
cmp    %rax,%rbx
jae    12a0 <augmentImage+0x1a0>
xor    %eax,%eax
mov    %rax,%r10
not    %r10
add    %r8,%r10
mov    %r8,%rbp
and    $0x3,%rbp
je     1239 <augmentImage+0x139>
nopl   0x0(%rax,%rax,1)
movl   $0x0,(%r9,%rax,4)
movl   $0x0,(%rbx,%rax,4)
add    $0x1,%rax
add    $0xffffffffffffffff,%rbp
jne    1220 <augmentImage+0x120>
cmp    $0x3,%r10
jb     1378 <augmentImage+0x278>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movl   $0x0,(%r9,%rax,4)
movl   $0x0,(%rbx,%rax,4)
movl   $0x0,0x4(%r9,%rax,4)
movl   $0x0,0x4(%rbx,%rax,4)
movl   $0x0,0x8(%r9,%rax,4)
movl   $0x0,0x8(%rbx,%rax,4)
movl   $0x0,0xc(%r9,%rax,4)
movl   $0x0,0xc(%rbx,%rax,4)
add    $0x4,%rax
cmp    %rax,%r8
jne    1250 <augmentImage+0x150>
jmp    1378 <augmentImage+0x278>
mov    %r8d,%eax
and    $0xfffffff8,%eax
lea    -0x8(%rax),%rbp
mov    %rbp,%r11
shr    $0x3,%r11
add    $0x1,%r11
mov    %r11d,%r10d
and    $0x3,%r10d
cmp    $0x18,%rbp
jae    12c6 <augmentImage+0x1c6>
xor    %ebp,%ebp
jmp    1330 <augmentImage+0x230>
and    $0xfffffffffffffffc,%r11
xor    %ebp,%ebp
xorps  %xmm0,%xmm0
nop
movups %xmm0,(%r9,%rbp,4)
movups %xmm0,0x10(%r9,%rbp,4)
movups %xmm0,(%rbx,%rbp,4)
movups %xmm0,0x10(%rbx,%rbp,4)
movups %xmm0,0x20(%r9,%rbp,4)
movups %xmm0,0x30(%r9,%rbp,4)
movups %xmm0,0x20(%rbx,%rbp,4)
movups %xmm0,0x30(%rbx,%rbp,4)
movups %xmm0,0x40(%r9,%rbp,4)
movups %xmm0,0x50(%r9,%rbp,4)
movups %xmm0,0x40(%rbx,%rbp,4)
movups %xmm0,0x50(%rbx,%rbp,4)
movups %xmm0,0x60(%r9,%rbp,4)
movups %xmm0,0x70(%r9,%rbp,4)
movups %xmm0,0x60(%rbx,%rbp,4)
movups %xmm0,0x70(%rbx,%rbp,4)
add    $0x20,%rbp
add    $0xfffffffffffffffc,%r11
jne    12d0 <augmentImage+0x1d0>
test   %r10,%r10
je     136f <augmentImage+0x26f>
lea    (%rbx,%rbp,4),%r11
add    $0x10,%r11
lea    (%r9,%rbp,4),%r14
add    $0x10,%r14
shl    $0x5,%r10
xor    %ebp,%ebp
xorps  %xmm0,%xmm0
xchg   %ax,%ax
movups %xmm0,-0x10(%r14,%rbp,1)
movups %xmm0,(%r14,%rbp,1)
movups %xmm0,-0x10(%r11,%rbp,1)
movups %xmm0,(%r11,%rbp,1)
add    $0x20,%rbp
cmp    %rbp,%r10
jne    1350 <augmentImage+0x250>
cmp    %r8,%rax
jne    1206 <augmentImage+0x106>
test   %esi,%esi
jle    1550 <augmentImage+0x450>
lea    0x1(%rdx),%r14d
add    $0x1,%esi
lea    -0x1(%r14),%r8
lea    -0x9(%r14),%r9
mov    %r9,-0x8(%rsp)
shr    $0x3,%r9
add    $0x1,%r9
mov    %r8,%rax
and    $0xfffffffffffffff8,%rax
mov    %rax,-0x10(%rsp)
add    $0x1,%rax
mov    %rax,-0x18(%rsp)
mov    %r9d,%r15d
and    $0x3,%r15d
and    $0xfffffffffffffffc,%r9
mov    $0x1,%r12d
jmp    13dd <augmentImage+0x2dd>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x1,%r12
cmp    %rsi,%r12
je     1550 <augmentImage+0x450>
test   %edx,%edx
jle    13d0 <augmentImage+0x2d0>
mov    -0x8(%rdi,%r12,8),%r11
mov    (%rcx,%r12,8),%rax
mov    $0x1,%ebp
cmp    $0x8,%r8
jb     14e0 <augmentImage+0x3e0>
lea    0x4(%rax),%r10
lea    (%r11,%r8,4),%rbx
cmp    %rbx,%r10
jae    1413 <augmentImage+0x313>
lea    (%rax,%r14,4),%rbx
cmp    %rbx,%r11
jb     14e0 <augmentImage+0x3e0>
cmpq   $0x18,-0x8(%rsp)
jae    141f <augmentImage+0x31f>
xor    %ebp,%ebp
jmp    1491 <augmentImage+0x391>
mov    %r9,%r10
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movups (%r11,%rbp,4),%xmm0
movups 0x10(%r11,%rbp,4),%xmm1
movups %xmm0,0x4(%rax,%rbp,4)
movups %xmm1,0x14(%rax,%rbp,4)
movups 0x20(%r11,%rbp,4),%xmm0
movups 0x30(%r11,%rbp,4),%xmm1
movups %xmm0,0x24(%rax,%rbp,4)
movups %xmm1,0x34(%rax,%rbp,4)
movups 0x40(%r11,%rbp,4),%xmm0
movups 0x50(%r11,%rbp,4),%xmm1
movups %xmm0,0x44(%rax,%rbp,4)
movups %xmm1,0x54(%rax,%rbp,4)
movups 0x60(%r11,%rbp,4),%xmm0
movups 0x70(%r11,%rbp,4),%xmm1
movups %xmm0,0x64(%rax,%rbp,4)
movups %xmm1,0x74(%rax,%rbp,4)
add    $0x20,%rbp
add    $0xfffffffffffffffc,%r10
jne    1430 <augmentImage+0x330>
test   %r15,%r15
je     14ca <augmentImage+0x3ca>
mov    %r15,%r10
nopl   0x0(%rax)
lea    0x0(,%rbp,4),%rbx
movups (%r11,%rbp,4),%xmm0
movups 0x10(%r11,%rbp,4),%xmm1
or     $0x4,%rbx
movups %xmm0,(%rax,%rbx,1)
movups %xmm1,0x10(%rax,%rbx,1)
add    $0x8,%rbp
add    $0xffffffffffffffff,%r10
jne    14a0 <augmentImage+0x3a0>
mov    -0x18(%rsp),%rbp
cmp    -0x10(%rsp),%r8
je     13d0 <augmentImage+0x2d0>
nopw   0x0(%rax,%rax,1)
mov    %r14d,%r13d
sub    %ebp,%r13d
mov    %rbp,%r10
not    %r10
add    %r14,%r10
and    $0x3,%r13
je     1512 <augmentImage+0x412>
cs nopw 0x0(%rax,%rax,1)
nop
mov    -0x4(%r11,%rbp,4),%ebx
mov    %ebx,(%rax,%rbp,4)
add    $0x1,%rbp
add    $0xffffffffffffffff,%r13
jne    1500 <augmentImage+0x400>
cmp    $0x3,%r10
jb     13d0 <augmentImage+0x2d0>
nopl   0x0(%rax)
mov    -0x4(%r11,%rbp,4),%ebx
mov    %ebx,(%rax,%rbp,4)
mov    (%r11,%rbp,4),%ebx
mov    %ebx,0x4(%rax,%rbp,4)
mov    0x4(%r11,%rbp,4),%ebx
mov    %ebx,0x8(%rax,%rbp,4)
mov    0x8(%r11,%rbp,4),%ebx
mov    %ebx,0xc(%rax,%rbp,4)
add    $0x4,%rbp
cmp    %rbp,%r14
jne    1520 <augmentImage+0x420>
jmp    13d0 <augmentImage+0x2d0>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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