void gaussian_blur(int w, int h, unsigned int **dst, unsigned int **src) {
  int i, j, l, i32opt, i32filtker[3][3], i32Sum;
  unsigned int filt[5][5];
  for (i = 0; i < 2; i++) {
    for (j = 0; j < w; j++) {
      dst[i][j] = src[i][j];
    }
  }
  printf("\t\t\tEnter the value of Sigma :\n");
  printf("\t\t\t 1> 1.0 :\n");
  printf("\t\t\t 2> 1.2 :\n");
  printf("\t\t\t 3> 1.4 :\n");
  printf("\t\t\t 4> 1.6 :\n");
  printf("\t\t\t 5> 1.8 :\n");
  printf("\t\t\t 6> 2.0 :\n");
  printf("\t\t\t Enter one of the options, [1/2/3/4/5/6]: ");
  scanf("%d", &i32opt);
  switch (i32opt) {
  case 1:
    i32filtker[0][0] = 1;
    i32filtker[0][1] = 5;
    i32filtker[0][2] = 8;
    i32filtker[1][0] = 5;
    i32filtker[1][1] = 23;
    i32filtker[1][2] = 38;
    i32filtker[2][0] = 8;
    i32filtker[2][1] = 38;
    i32filtker[2][2] = 63;
    i32Sum = 383;
    break;
  case 2:
    i32filtker[0][0] = 2;
    i32filtker[0][1] = 5;
    i32filtker[0][2] = 8;
    i32filtker[1][0] = 5;
    i32filtker[1][1] = 15;
    i32filtker[1][2] = 21;
    i32filtker[2][0] = 8;
    i32filtker[2][1] = 21;
    i32filtker[2][2] = 30;
    i32Sum = 254;
    break;
  case 3:
    i32filtker[0][0] = 2;
    i32filtker[0][1] = 4;
    i32filtker[0][2] = 5;
    i32filtker[1][0] = 4;
    i32filtker[1][1] = 9;
    i32filtker[1][2] = 12;
    i32filtker[2][0] = 5;
    i32filtker[2][1] = 12;
    i32filtker[2][2] = 15;
    i32Sum = 159;
    break;
  case 4:
    i32filtker[0][0] = 4;
    i32filtker[0][1] = 8;
    i32filtker[0][2] = 9;
    i32filtker[1][0] = 8;
    i32filtker[1][1] = 14;
    i32filtker[1][2] = 17;
    i32filtker[2][0] = 9;
    i32filtker[2][1] = 17;
    i32filtker[2][2] = 20;
    i32Sum = 260;
    break;
  case 5:
    i32filtker[0][0] = 5;
    i32filtker[0][1] = 8;
    i32filtker[0][2] = 10;
    i32filtker[1][0] = 8;
    i32filtker[1][1] = 13;
    i32filtker[1][2] = 15;
    i32filtker[2][0] = 10;
    i32filtker[2][1] = 15;
    i32filtker[2][2] = 18;
    i32Sum = 254;
    break;
  case 6:
    i32filtker[0][0] = 6;
    i32filtker[0][1] = 9;
    i32filtker[0][2] = 10;
    i32filtker[1][0] = 9;
    i32filtker[1][1] = 13;
    i32filtker[1][2] = 14;
    i32filtker[2][0] = 10;
    i32filtker[2][1] = 14;
    i32filtker[2][2] = 16;
    i32Sum = 260;
    break;
  default:
    i32filtker[0][0] = 2;
    i32filtker[0][1] = 4;
    i32filtker[0][2] = 5;
    i32filtker[1][0] = 4;
    i32filtker[1][1] = 9;
    i32filtker[1][2] = 12;
    i32filtker[2][0] = 5;
    i32filtker[2][1] = 12;
    i32filtker[2][2] = 15;
    i32Sum = 159;
    break;
  }
  for (i = 2; i < h - 2; i++) {
    dst[i][0] = src[i][0];
    dst[i][1] = src[i][1];
    for (j = 2; j < w - 2; j++) {
      for (l = 0; l < 5; l++) {
        filt[0][l] = src[i - 2][j - 2 + l];
        filt[1][l] = src[i - 1][j - 2 + l];
        filt[2][l] = src[i][j - 2 + l];
        filt[3][l] = src[i + 1][j - 2 + l];
        filt[4][l] = src[i + 2][j - 2 + l];
      }
      dst[i][j] =
          ((filt[0][0] + filt[4][0]) * i32filtker[0][0] +
           (filt[0][1] + filt[4][1]) * i32filtker[0][1] +
           (filt[0][2] + filt[4][2]) * i32filtker[0][2] +
           (filt[0][3] + filt[4][3]) * i32filtker[0][1] +
           (filt[0][4] + filt[4][4]) * i32filtker[0][0] +
           (filt[1][0] + filt[3][0]) * i32filtker[1][0] +
           (filt[1][1] + filt[3][1]) * i32filtker[1][1] +
           (filt[1][2] + filt[3][2]) * i32filtker[1][2] +
           (filt[1][3] + filt[3][3]) * i32filtker[1][1] +
           (filt[1][4] + filt[3][4]) * i32filtker[1][0] +
           filt[2][0] * i32filtker[2][0] + filt[2][1] * i32filtker[2][1] +
           filt[2][2] * i32filtker[2][2] + filt[2][3] * i32filtker[2][1] +
           filt[2][4] * i32filtker[2][0]) /
          i32Sum;
    }
    dst[i][j] = src[i][j];
    dst[i][j + 1] = src[i][j + 1];
  }
  for (l = i; l < h; l++) {
    for (j = 0; j < w; j++) {
      dst[l][j] = src[l][j];
    }
  }
}


x86 assembly (clang, -O0):
<gaussian_blur>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x2,-0x1c(%rbp)
jge    11a4 <gaussian_blur+0x84>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1191 <gaussian_blur+0x71>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%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    1151 <gaussian_blur+0x31>
jmp    1196 <gaussian_blur+0x76>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1140 <gaussian_blur+0x20>
lea    0xe6d(%rip),%rdi
xor    %eax,%eax
mov    %al,-0xc9(%rbp)
call   1030 <printf@plt>
mov    -0xc9(%rbp),%al
lea    0xe72(%rip),%rdi
call   1030 <printf@plt>
mov    -0xc9(%rbp),%al
lea    0xe6e(%rip),%rdi
call   1030 <printf@plt>
mov    -0xc9(%rbp),%al
lea    0xe6a(%rip),%rdi
call   1030 <printf@plt>
mov    -0xc9(%rbp),%al
lea    0xe66(%rip),%rdi
call   1030 <printf@plt>
mov    -0xc9(%rbp),%al
lea    0xe62(%rip),%rdi
call   1030 <printf@plt>
mov    -0xc9(%rbp),%al
lea    0xe5e(%rip),%rdi
call   1030 <printf@plt>
mov    -0xc9(%rbp),%al
lea    0xe5a(%rip),%rdi
call   1030 <printf@plt>
mov    -0xc9(%rbp),%al
lea    0xe76(%rip),%rdi
lea    -0x28(%rbp),%rsi
call   1040 <scanf@plt>
mov    -0x28(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0xc8(%rbp)
sub    $0x5,%eax
ja     143d <gaussian_blur+0x31d>
mov    -0xc8(%rbp),%rax
lea    0xd8e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x1,-0x50(%rbp)
movl   $0x5,-0x4c(%rbp)
movl   $0x8,-0x48(%rbp)
movl   $0x5,-0x44(%rbp)
movl   $0x17,-0x40(%rbp)
movl   $0x26,-0x3c(%rbp)
movl   $0x8,-0x38(%rbp)
movl   $0x26,-0x34(%rbp)
movl   $0x3f,-0x30(%rbp)
movl   $0x17f,-0x54(%rbp)
jmp    1483 <gaussian_blur+0x363>
movl   $0x2,-0x50(%rbp)
movl   $0x5,-0x4c(%rbp)
movl   $0x8,-0x48(%rbp)
movl   $0x5,-0x44(%rbp)
movl   $0xf,-0x40(%rbp)
movl   $0x15,-0x3c(%rbp)
movl   $0x8,-0x38(%rbp)
movl   $0x15,-0x34(%rbp)
movl   $0x1e,-0x30(%rbp)
movl   $0xfe,-0x54(%rbp)
jmp    1483 <gaussian_blur+0x363>
movl   $0x2,-0x50(%rbp)
movl   $0x4,-0x4c(%rbp)
movl   $0x5,-0x48(%rbp)
movl   $0x4,-0x44(%rbp)
movl   $0x9,-0x40(%rbp)
movl   $0xc,-0x3c(%rbp)
movl   $0x5,-0x38(%rbp)
movl   $0xc,-0x34(%rbp)
movl   $0xf,-0x30(%rbp)
movl   $0x9f,-0x54(%rbp)
jmp    1483 <gaussian_blur+0x363>
movl   $0x4,-0x50(%rbp)
movl   $0x8,-0x4c(%rbp)
movl   $0x9,-0x48(%rbp)
movl   $0x8,-0x44(%rbp)
movl   $0xe,-0x40(%rbp)
movl   $0x11,-0x3c(%rbp)
movl   $0x9,-0x38(%rbp)
movl   $0x11,-0x34(%rbp)
movl   $0x14,-0x30(%rbp)
movl   $0x104,-0x54(%rbp)
jmp    1483 <gaussian_blur+0x363>
movl   $0x5,-0x50(%rbp)
movl   $0x8,-0x4c(%rbp)
movl   $0xa,-0x48(%rbp)
movl   $0x8,-0x44(%rbp)
movl   $0xd,-0x40(%rbp)
movl   $0xf,-0x3c(%rbp)
movl   $0xa,-0x38(%rbp)
movl   $0xf,-0x34(%rbp)
movl   $0x12,-0x30(%rbp)
movl   $0xfe,-0x54(%rbp)
jmp    1483 <gaussian_blur+0x363>
movl   $0x6,-0x50(%rbp)
movl   $0x9,-0x4c(%rbp)
movl   $0xa,-0x48(%rbp)
movl   $0x9,-0x44(%rbp)
movl   $0xd,-0x40(%rbp)
movl   $0xe,-0x3c(%rbp)
movl   $0xa,-0x38(%rbp)
movl   $0xe,-0x34(%rbp)
movl   $0x10,-0x30(%rbp)
movl   $0x104,-0x54(%rbp)
jmp    1483 <gaussian_blur+0x363>
movl   $0x2,-0x50(%rbp)
movl   $0x4,-0x4c(%rbp)
movl   $0x5,-0x48(%rbp)
movl   $0x4,-0x44(%rbp)
movl   $0x9,-0x40(%rbp)
movl   $0xc,-0x3c(%rbp)
movl   $0x5,-0x38(%rbp)
movl   $0xc,-0x34(%rbp)
movl   $0xf,-0x30(%rbp)
movl   $0x9f,-0x54(%rbp)
movl   $0x2,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jge    173a <gaussian_blur+0x61a>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    (%rax),%ecx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    0x4(%rax),%ecx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rdx
mov    (%rax,%rdx,8),%rax
mov    %ecx,0x4(%rax)
movl   $0x2,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x2,%ecx
cmp    %ecx,%eax
jge    16d6 <gaussian_blur+0x5b6>
movl   $0x0,-0x24(%rbp)
cmpl   $0x5,-0x24(%rbp)
jge    15db <gaussian_blur+0x4bb>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
sub    $0x2,%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x24(%rbp),%rax
mov    %ecx,-0xc0(%rbp,%rax,4)
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
sub    $0x2,%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x24(%rbp),%rax
mov    %ecx,-0xac(%rbp,%rax,4)
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
sub    $0x2,%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x24(%rbp),%rax
mov    %ecx,-0x98(%rbp,%rax,4)
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
sub    $0x2,%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x24(%rbp),%rax
mov    %ecx,-0x84(%rbp,%rax,4)
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
sub    $0x2,%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x24(%rbp),%rax
mov    %ecx,-0x70(%rbp,%rax,4)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    14f4 <gaussian_blur+0x3d4>
mov    -0xc0(%rbp),%eax
add    -0x70(%rbp),%eax
imul   -0x50(%rbp),%eax
mov    -0xbc(%rbp),%ecx
add    -0x6c(%rbp),%ecx
imul   -0x4c(%rbp),%ecx
add    %ecx,%eax
mov    -0xb8(%rbp),%ecx
add    -0x68(%rbp),%ecx
imul   -0x48(%rbp),%ecx
add    %ecx,%eax
mov    -0xb4(%rbp),%ecx
add    -0x64(%rbp),%ecx
imul   -0x4c(%rbp),%ecx
add    %ecx,%eax
mov    -0xb0(%rbp),%ecx
add    -0x60(%rbp),%ecx
imul   -0x50(%rbp),%ecx
add    %ecx,%eax
mov    -0xac(%rbp),%ecx
add    -0x84(%rbp),%ecx
imul   -0x44(%rbp),%ecx
add    %ecx,%eax
mov    -0xa8(%rbp),%ecx
add    -0x80(%rbp),%ecx
imul   -0x40(%rbp),%ecx
add    %ecx,%eax
mov    -0xa4(%rbp),%ecx
add    -0x7c(%rbp),%ecx
imul   -0x3c(%rbp),%ecx
add    %ecx,%eax
mov    -0xa0(%rbp),%ecx
add    -0x78(%rbp),%ecx
imul   -0x40(%rbp),%ecx
add    %ecx,%eax
mov    -0x9c(%rbp),%ecx
add    -0x74(%rbp),%ecx
imul   -0x44(%rbp),%ecx
add    %ecx,%eax
mov    -0x98(%rbp),%ecx
imul   -0x38(%rbp),%ecx
add    %ecx,%eax
mov    -0x94(%rbp),%ecx
imul   -0x34(%rbp),%ecx
add    %ecx,%eax
mov    -0x90(%rbp),%ecx
imul   -0x30(%rbp),%ecx
add    %ecx,%eax
mov    -0x8c(%rbp),%ecx
imul   -0x34(%rbp),%ecx
add    %ecx,%eax
mov    -0x88(%rbp),%ecx
imul   -0x38(%rbp),%ecx
add    %ecx,%eax
xor    %edx,%edx
divl   -0x54(%rbp)
mov    %eax,%edx
mov    -0x10(%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    14dc <gaussian_blur+0x3bc>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x20(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    148a <gaussian_blur+0x36a>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    17a6 <gaussian_blur+0x686>
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1793 <gaussian_blur+0x673>
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%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    1753 <gaussian_blur+0x633>
jmp    1798 <gaussian_blur+0x678>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1740 <gaussian_blur+0x620>
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gaussian_blur>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x178,%rsp
mov    %rcx,%r12
mov    %rdx,0x28(%rsp)
mov    %esi,%r14d
mov    %edi,%r13d
mov    %edi,%ebp
test   %edi,%edi
mov    %r13,0x20(%rsp)
mov    %rbp,0x8(%rsp)
jle    1453 <gaussian_blur+0x323>
mov    (%r12),%rax
mov    0x28(%rsp),%rcx
mov    (%rcx),%rcx
cmp    $0x8,%r13d
jb     1187 <gaussian_blur+0x57>
lea    (%rax,%rbp,4),%rdx
cmp    %rdx,%rcx
jae    11ec <gaussian_blur+0xbc>
lea    (%rcx,%rbp,4),%rdx
cmp    %rdx,%rax
jae    11ec <gaussian_blur+0xbc>
xor    %edx,%edx
mov    %rdx,%rsi
not    %rsi
add    %rbp,%rsi
mov    %rbp,%rdi
and    $0x3,%rdi
je     11b0 <gaussian_blur+0x80>
nopl   0x0(%rax,%rax,1)
mov    (%rax,%rdx,4),%ebp
mov    %ebp,(%rcx,%rdx,4)
add    $0x1,%rdx
add    $0xffffffffffffffff,%rdi
jne    11a0 <gaussian_blur+0x70>
cmp    $0x3,%rsi
mov    0x8(%rsp),%rbp
jb     12d3 <gaussian_blur+0x1a3>
nop
mov    (%rax,%rdx,4),%esi
mov    %esi,(%rcx,%rdx,4)
mov    0x4(%rax,%rdx,4),%esi
mov    %esi,0x4(%rcx,%rdx,4)
mov    0x8(%rax,%rdx,4),%esi
mov    %esi,0x8(%rcx,%rdx,4)
mov    0xc(%rax,%rdx,4),%esi
mov    %esi,0xc(%rcx,%rdx,4)
add    $0x4,%rdx
cmp    %rdx,%rbp
jne    11c0 <gaussian_blur+0x90>
jmp    12d3 <gaussian_blur+0x1a3>
mov    %ebp,%edx
and    $0xfffffff8,%edx
lea    -0x8(%rdx),%rbp
mov    %rbp,%rdi
shr    $0x3,%rdi
add    $0x1,%rdi
mov    %edi,%esi
and    $0x3,%esi
cmp    $0x18,%rbp
jae    120f <gaussian_blur+0xdf>
xor    %ebp,%ebp
jmp    127c <gaussian_blur+0x14c>
and    $0xfffffffffffffffc,%rdi
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
movups (%rax,%rbp,4),%xmm0
movups 0x10(%rax,%rbp,4),%xmm1
movups %xmm0,(%rcx,%rbp,4)
movups %xmm1,0x10(%rcx,%rbp,4)
movups 0x20(%rax,%rbp,4),%xmm0
movups 0x30(%rax,%rbp,4),%xmm1
movups %xmm0,0x20(%rcx,%rbp,4)
movups %xmm1,0x30(%rcx,%rbp,4)
movups 0x40(%rax,%rbp,4),%xmm0
movups 0x50(%rax,%rbp,4),%xmm1
movups %xmm0,0x40(%rcx,%rbp,4)
movups %xmm1,0x50(%rcx,%rbp,4)
movdqu 0x60(%rax,%rbp,4),%xmm0
movdqu 0x70(%rax,%rbp,4),%xmm1
movdqu %xmm0,0x60(%rcx,%rbp,4)
movdqu %xmm1,0x70(%rcx,%rbp,4)
add    $0x20,%rbp
add    $0xfffffffffffffffc,%rdi
jne    1220 <gaussian_blur+0xf0>
test   %rsi,%rsi
je     12c0 <gaussian_blur+0x190>
lea    (%rcx,%rbp,4),%rdi
add    $0x10,%rdi
lea    (%rax,%rbp,4),%rbp
add    $0x10,%rbp
shl    $0x5,%rsi
xor    %ebx,%ebx
nopw   0x0(%rax,%rax,1)
movdqu -0x10(%rbp,%rbx,1),%xmm0
movdqu 0x0(%rbp,%rbx,1),%xmm1
movdqu %xmm0,-0x10(%rdi,%rbx,1)
movdqu %xmm1,(%rdi,%rbx,1)
add    $0x20,%rbx
cmp    %rbx,%rsi
jne    12a0 <gaussian_blur+0x170>
mov    0x8(%rsp),%rbp
cmp    %rbp,%rdx
mov    0x20(%rsp),%r13
jne    1189 <gaussian_blur+0x59>
test   %r13d,%r13d
jle    1453 <gaussian_blur+0x323>
mov    0x8(%r12),%rax
mov    0x28(%rsp),%rcx
mov    0x8(%rcx),%rcx
cmp    $0x8,%r13d
jb     1302 <gaussian_blur+0x1d2>
lea    (%rax,%rbp,4),%rdx
cmp    %rdx,%rcx
jae    136c <gaussian_blur+0x23c>
lea    (%rcx,%rbp,4),%rdx
cmp    %rdx,%rax
jae    136c <gaussian_blur+0x23c>
xor    %edx,%edx
mov    %rdx,%rsi
not    %rsi
add    %rbp,%rsi
mov    %rbp,%rdi
and    $0x3,%rdi
je     1330 <gaussian_blur+0x200>
cs nopw 0x0(%rax,%rax,1)
mov    (%rax,%rdx,4),%ebp
mov    %ebp,(%rcx,%rdx,4)
add    $0x1,%rdx
add    $0xffffffffffffffff,%rdi
jne    1320 <gaussian_blur+0x1f0>
cmp    $0x3,%rsi
mov    0x8(%rsp),%rbp
jb     1453 <gaussian_blur+0x323>
nop
mov    (%rax,%rdx,4),%esi
mov    %esi,(%rcx,%rdx,4)
mov    0x4(%rax,%rdx,4),%esi
mov    %esi,0x4(%rcx,%rdx,4)
mov    0x8(%rax,%rdx,4),%esi
mov    %esi,0x8(%rcx,%rdx,4)
mov    0xc(%rax,%rdx,4),%esi
mov    %esi,0xc(%rcx,%rdx,4)
add    $0x4,%rdx
cmp    %rdx,%rbp
jne    1340 <gaussian_blur+0x210>
jmp    1453 <gaussian_blur+0x323>
mov    %ebp,%edx
and    $0xfffffff8,%edx
lea    -0x8(%rdx),%rbp
mov    %rbp,%rdi
shr    $0x3,%rdi
add    $0x1,%rdi
mov    %edi,%esi
and    $0x3,%esi
cmp    $0x18,%rbp
jae    138f <gaussian_blur+0x25f>
xor    %ebp,%ebp
jmp    13fc <gaussian_blur+0x2cc>
and    $0xfffffffffffffffc,%rdi
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
movups (%rax,%rbp,4),%xmm0
movups 0x10(%rax,%rbp,4),%xmm1
movups %xmm0,(%rcx,%rbp,4)
movups %xmm1,0x10(%rcx,%rbp,4)
movups 0x20(%rax,%rbp,4),%xmm0
movups 0x30(%rax,%rbp,4),%xmm1
movups %xmm0,0x20(%rcx,%rbp,4)
movups %xmm1,0x30(%rcx,%rbp,4)
movups 0x40(%rax,%rbp,4),%xmm0
movups 0x50(%rax,%rbp,4),%xmm1
movups %xmm0,0x40(%rcx,%rbp,4)
movups %xmm1,0x50(%rcx,%rbp,4)
movdqu 0x60(%rax,%rbp,4),%xmm0
movdqu 0x70(%rax,%rbp,4),%xmm1
movdqu %xmm0,0x60(%rcx,%rbp,4)
movdqu %xmm1,0x70(%rcx,%rbp,4)
add    $0x20,%rbp
add    $0xfffffffffffffffc,%rdi
jne    13a0 <gaussian_blur+0x270>
test   %rsi,%rsi
je     1440 <gaussian_blur+0x310>
lea    (%rcx,%rbp,4),%rdi
add    $0x10,%rdi
lea    (%rax,%rbp,4),%rbp
add    $0x10,%rbp
shl    $0x5,%rsi
xor    %ebx,%ebx
nopw   0x0(%rax,%rax,1)
movdqu -0x10(%rbp,%rbx,1),%xmm0
movdqu 0x0(%rbp,%rbx,1),%xmm1
movdqu %xmm0,-0x10(%rdi,%rbx,1)
movdqu %xmm1,(%rdi,%rbx,1)
add    $0x20,%rbx
cmp    %rbx,%rsi
jne    1420 <gaussian_blur+0x2f0>
mov    0x8(%rsp),%rbp
cmp    %rbp,%rdx
mov    0x20(%rsp),%r13
jne    1304 <gaussian_blur+0x1d4>
lea    0xbd7(%rip),%rdi
call   1030 <puts@plt>
lea    0xbe9(%rip),%rdi
call   1030 <puts@plt>
lea    0xbea(%rip),%rdi
call   1030 <puts@plt>
lea    0xbeb(%rip),%rdi
call   1030 <puts@plt>
lea    0xbec(%rip),%rdi
call   1030 <puts@plt>
lea    0xbed(%rip),%rdi
call   1030 <puts@plt>
lea    0xbee(%rip),%rdi
call   1030 <puts@plt>
lea    0xb52(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xb72(%rip),%rdi
lea    0x6c(%rsp),%rsi
xor    %eax,%eax
call   1050 <scanf@plt>
mov    0x6c(%rsp),%eax
add    $0xffffffff,%eax
mov    $0x2,%edx
cmp    $0x5,%eax
ja     1535 <gaussian_blur+0x405>
cltq
lea    0xbbe(%rip),%rcx
mov    (%rcx,%rax,4),%ecx
mov    %ecx,0x14(%rsp)
lea    0xbc8(%rip),%rcx
mov    (%rcx,%rax,4),%r9d
lea    0xbd5(%rip),%rcx
mov    (%rcx,%rax,4),%r8d
lea    0xbe2(%rip),%rcx
mov    (%rcx,%rax,4),%edi
lea    0xbf0(%rip),%rcx
mov    (%rcx,%rax,4),%esi
lea    0xbfe(%rip),%rcx
mov    (%rcx,%rax,4),%r15d
lea    0xc0b(%rip),%rcx
mov    (%rcx,%rax,4),%eax
mov    %esi,%ecx
cmp    $0x5,%r14d
jge    1568 <gaussian_blur+0x438>
jmp    1c62 <gaussian_blur+0xb32>
mov    $0x9f,%eax
mov    $0x4,%ecx
mov    $0x5,%edi
mov    $0x9,%r8d
mov    $0xc,%r9d
movl   $0xf,0x14(%rsp)
mov    $0x2,%r15d
cmp    $0x5,%r14d
jl     1c62 <gaussian_blur+0xb32>
mov    %r14,0x90(%rsp)
mov    %eax,%edx
lea    -0x2(%r14),%eax
lea    -0x2(%r13),%r14d
mov    %eax,0x54(%rsp)
mov    %eax,%eax
lea    0x2(%r14),%rsi
mov    %rsi,0xa8(%rsp)
lea    -0x2(%r14),%rsi
mov    %rsi,0x80(%rsp)
and    $0xfffffffffffffffc,%rsi
mov    %rsi,0xa0(%rsp)
add    $0x2,%rsi
mov    %rsi,0x98(%rsp)
movd   0x14(%rsp),%xmm0
pshufd $0x0,%xmm0,%xmm4
mov    %ecx,0x5c(%rsp)
movd   %ecx,%xmm0
pshufd $0x0,%xmm0,%xmm5
mov    %r9d,0x68(%rsp)
movd   %r9d,%xmm0
mov    %rax,%r9
pshufd $0x0,%xmm0,%xmm1
mov    %edi,0x60(%rsp)
movd   %edi,%xmm0
pshufd $0x0,%xmm0,%xmm2
mov    %r8d,0x64(%rsp)
movd   %r8d,%xmm0
pshufd $0x0,%xmm0,%xmm8
movd   %r15d,%xmm0
pshufd $0x0,%xmm0,%xmm12
mov    %edx,0x58(%rsp)
movd   %edx,%xmm0
pshufd $0x0,%xmm0,%xmm3
mov    $0x2,%eax
movdqa %xmm4,0x100(%rsp)
pshufd $0xf5,%xmm4,%xmm0
movdqa %xmm0,0x120(%rsp)
movdqa %xmm5,0xd0(%rsp)
pshufd $0xf5,%xmm5,%xmm0
movdqa %xmm1,0x160(%rsp)
pshufd $0xf5,%xmm1,%xmm15
movdqa %xmm2,%xmm13
pshufd $0xf5,%xmm2,%xmm14
pshufd $0xf5,%xmm8,%xmm5
pshufd $0xf5,%xmm12,%xmm4
pshufd $0xff,%xmm3,%xmm6
pshufd $0xee,%xmm3,%xmm7
mov    %r12,0x70(%rsp)
mov    %r14,0x40(%rsp)
mov    %r9,0x78(%rsp)
movdqa %xmm3,0x150(%rsp)
movdqa %xmm12,0x140(%rsp)
movdqa %xmm14,0x130(%rsp)
movdqa %xmm5,0x110(%rsp)
movdqa %xmm4,0xf0(%rsp)
movdqa %xmm6,0xe0(%rsp)
movdqa %xmm7,0xc0(%rsp)
movdqa %xmm0,0xb0(%rsp)
mov    %r15d,0x30(%rsp)
jmp    16f8 <gaussian_blur+0x5c8>
nopl   0x0(%rax)
add    $0x1,%rax
mov    $0x2,%ecx
mov    %rax,%rdx
mov    %ecx,%eax
mov    (%rdi,%rax,4),%ecx
mov    %ecx,(%rbx,%rax,4)
mov    0x4(%rdi,%rax,4),%ecx
mov    %ecx,0x4(%rbx,%rax,4)
mov    %rdx,%rax
cmp    %r9,%rdx
je     1c56 <gaussian_blur+0xb26>
mov    (%r12,%rax,8),%rdi
mov    (%rdi),%ecx
mov    0x28(%rsp),%rdx
mov    (%rdx,%rax,8),%rbx
mov    %ecx,(%rbx)
mov    0x4(%rdi),%ecx
mov    %ecx,0x4(%rbx)
cmp    $0x4,%r13d
jle    16d0 <gaussian_blur+0x5a0>
lea    0x1(%rax),%rcx
mov    %rcx,0x88(%rsp)
lea    0x2(%rax),%ecx
mov    -0x10(%r12,%rax,8),%r13
mov    -0x8(%r12,%rax,8),%r11
mov    0x8(%r12,%rax,8),%r8
mov    (%r12,%rcx,8),%r12
mov    $0x2,%eax
cmpq   $0x4,0x80(%rsp)
mov    %rbx,0x18(%rsp)
jae    1880 <gaussian_blur+0x750>
lea    (%r12,%rax,4),%r14
lea    (%r8,%rax,4),%r12
mov    %rdi,0x38(%rsp)
lea    (%rdi,%rax,4),%rbp
lea    (%r11,%rax,4),%rsi
lea    0x0(%r13,%rax,4),%rdi
lea    (%rbx,%rax,4),%rcx
mov    %rcx,0x48(%rsp)
mov    0x40(%rsp),%r11
sub    %rax,%r11
xor    %ecx,%ecx
mov    0x68(%rsp),%r10d
mov    0x64(%rsp),%r9d
mov    0x60(%rsp),%r15d
mov    0x5c(%rsp),%r8d
mov    0x58(%rsp),%r13d
cs nopw 0x0(%rax,%rax,1)
mov    -0x8(%r14,%rcx,4),%eax
mov    -0x4(%r12,%rcx,4),%edx
add    -0x4(%rsi,%rcx,4),%edx
add    0x4(%rsi,%rcx,4),%edx
add    0x4(%r12,%rcx,4),%edx
mov    -0x4(%r14,%rcx,4),%ebx
imul   %r9d,%edx
add    -0x8(%rdi,%rcx,4),%eax
add    0x8(%rdi,%rcx,4),%eax
add    0x8(%r14,%rcx,4),%eax
imul   0x30(%rsp),%eax
add    %edx,%eax
mov    0x0(%rbp,%rcx,4),%edx
imul   0x14(%rsp),%edx
add    %edx,%eax
mov    (%r12,%rcx,4),%edx
add    -0x4(%rdi,%rcx,4),%ebx
add    0x4(%rdi,%rcx,4),%ebx
add    0x4(%r14,%rcx,4),%ebx
add    -0x8(%rsi,%rcx,4),%ebx
add    -0x8(%r12,%rcx,4),%ebx
add    0x8(%rsi,%rcx,4),%ebx
add    0x8(%r12,%rcx,4),%ebx
add    (%rsi,%rcx,4),%edx
add    -0x4(%rbp,%rcx,4),%edx
imul   %r8d,%ebx
add    0x4(%rbp,%rcx,4),%edx
add    %ebx,%eax
mov    (%r14,%rcx,4),%ebx
imul   %r10d,%edx
add    (%rdi,%rcx,4),%ebx
add    -0x8(%rbp,%rcx,4),%ebx
add    0x8(%rbp,%rcx,4),%ebx
add    %edx,%eax
imul   %r15d,%ebx
add    %ebx,%eax
xor    %edx,%edx
div    %r13d
mov    0x48(%rsp),%rdx
mov    %eax,(%rdx,%rcx,4)
add    $0x1,%rcx
cmp    %rcx,%r11
jne    17a0 <gaussian_blur+0x670>
mov    0x40(%rsp),%r14
mov    %r14d,%ecx
mov    0x70(%rsp),%r12
mov    0x20(%rsp),%r13
mov    0x8(%rsp),%rbp
mov    0x30(%rsp),%r15d
mov    0x78(%rsp),%r9
mov    0x38(%rsp),%rdi
mov    0x18(%rsp),%rbx
mov    0x88(%rsp),%rdx
jmp    16dc <gaussian_blur+0x5ac>
lea    0x8(%rbx),%rsi
lea    (%rbx,%r14,4),%r14
mov    %rdi,%r10
mov    0xa8(%rsp),%rdi
lea    0x0(,%rdi,4),%rcx
add    %r13,%rcx
lea    (%r11,%rdi,4),%rdx
lea    (%r10,%rdi,4),%rbx
lea    (%r8,%rdi,4),%rbp
lea    (%r12,%rdi,4),%rdi
cmp    %rcx,%rsi
setb   0x48(%rsp)
cmp    %r14,%r13
setb   0x38(%rsp)
cmp    %rdx,%rsi
setb   %cl
cmp    %r14,%r11
setb   0x7(%rsp)
cmp    %rbx,%rsi
setb   %dl
mov    %r10,%r9
cmp    %r14,%r10
setb   0x6(%rsp)
cmp    %rbp,%rsi
setb   %r10b
cmp    %r14,%r8
setb   %bpl
cmp    %rdi,%rsi
setb   %sil
cmp    %r14,%r12
setb   %r14b
mov    0x38(%rsp),%bl
test   %bl,0x48(%rsp)
jne    1c49 <gaussian_blur+0xb19>
and    0x7(%rsp),%cl
jne    1c49 <gaussian_blur+0xb19>
mov    %ebp,%ecx
and    0x6(%rsp),%dl
mov    0x8(%rsp),%rbp
mov    %r9,%rdi
jne    1c4c <gaussian_blur+0xb1c>
and    %cl,%r10b
jne    1c4c <gaussian_blur+0xb1c>
and    %r14b,%sil
mov    0x18(%rsp),%rbx
mov    0x78(%rsp),%r9
jne    1750 <gaussian_blur+0x620>
xor    %r14d,%r14d
mov    0xa0(%rsp),%rsi
nopl   0x0(%rax)
movdqu 0x0(%r13,%r14,4),%xmm4
movdqu 0x4(%r13,%r14,4),%xmm12
movdqu 0x8(%r13,%r14,4),%xmm9
movdqu (%r11,%r14,4),%xmm0
movdqu 0x4(%r11,%r14,4),%xmm5
movdqa %xmm13,%xmm14
movdqu 0x8(%r11,%r14,4),%xmm7
movdqu 0x4(%rdi,%r14,4),%xmm3
movdqu 0xc(%rdi,%r14,4),%xmm6
paddd  %xmm3,%xmm6
movdqu (%r8,%r14,4),%xmm3
paddd  %xmm0,%xmm3
movdqu 0x4(%r8,%r14,4),%xmm1
paddd  %xmm5,%xmm1
movdqa %xmm15,%xmm13
movdqa %xmm8,%xmm15
movdqu 0x8(%r8,%r14,4),%xmm8
paddd  %xmm7,%xmm8
movdqa %xmm14,%xmm7
movdqa 0x120(%rsp),%xmm14
movdqu 0xc(%r11,%r14,4),%xmm5
paddd  %xmm6,%xmm8
movdqu 0xc(%r8,%r14,4),%xmm0
paddd  %xmm5,%xmm0
movdqu 0xc(%r13,%r14,4),%xmm5
paddd  %xmm1,%xmm0
movdqu (%r12,%r14,4),%xmm1
paddd  %xmm4,%xmm1
movdqu 0x4(%r12,%r14,4),%xmm4
paddd  %xmm12,%xmm4
movdqu 0x8(%r12,%r14,4),%xmm2
paddd  %xmm9,%xmm2
movdqu 0xc(%r12,%r14,4),%xmm6
paddd  %xmm5,%xmm6
movdqa 0xd0(%rsp),%xmm11
paddd  %xmm4,%xmm6
movdqu 0x10(%r11,%r14,4),%xmm4
paddd  %xmm3,%xmm4
movdqu (%rdi,%r14,4),%xmm3
paddd  %xmm6,%xmm4
movdqa 0x160(%rsp),%xmm6
movdqu 0x10(%rdi,%r14,4),%xmm12
paddd  %xmm3,%xmm12
movdqu 0x10(%r13,%r14,4),%xmm3
paddd  %xmm2,%xmm12
movdqu 0x10(%r8,%r14,4),%xmm2
paddd  %xmm4,%xmm2
movdqa 0x100(%rsp),%xmm4
movdqu 0x10(%r12,%r14,4),%xmm10
paddd  %xmm3,%xmm10
movdqu 0x8(%rdi,%r14,4),%xmm3
paddd  %xmm1,%xmm10
pshufd $0xf5,%xmm3,%xmm1
pmuludq %xmm4,%xmm3
pshufd $0xe8,%xmm3,%xmm9
pmuludq %xmm14,%xmm1
pshufd $0xe8,%xmm1,%xmm1
punpckldq %xmm1,%xmm9
pshufd $0xf5,%xmm2,%xmm1
pmuludq %xmm11,%xmm2
pshufd $0xe8,%xmm2,%xmm11
pmuludq 0xb0(%rsp),%xmm1
pshufd $0xe8,%xmm1,%xmm1
punpckldq %xmm1,%xmm11
pshufd $0xf5,%xmm8,%xmm1
pmuludq %xmm6,%xmm8
pshufd $0xe8,%xmm8,%xmm2
movdqa %xmm15,%xmm8
movdqa %xmm13,%xmm15
pmuludq %xmm13,%xmm1
pshufd $0xe8,%xmm1,%xmm1
punpckldq %xmm1,%xmm2
pshufd $0xf5,%xmm12,%xmm3
movdqa %xmm7,%xmm13
pmuludq %xmm7,%xmm12
pshufd $0xe8,%xmm12,%xmm1
movdqa 0x110(%rsp),%xmm5
movdqa 0x130(%rsp),%xmm14
movdqa 0x140(%rsp),%xmm12
pmuludq %xmm14,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm1
paddd  %xmm2,%xmm1
pshufd $0xf5,%xmm0,%xmm2
pmuludq %xmm8,%xmm0
pshufd $0xe8,%xmm0,%xmm3
pmuludq %xmm5,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm3
pshufd $0xf5,%xmm10,%xmm2
pmuludq %xmm12,%xmm10
pshufd $0xe8,%xmm10,%xmm0
movdqa 0xf0(%rsp),%xmm4
pmuludq %xmm4,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm0
paddd  %xmm3,%xmm0
movdqa 0x150(%rsp),%xmm3
paddd  %xmm9,%xmm0
movdqa 0xc0(%rsp),%xmm7
movdqa 0xe0(%rsp),%xmm6
paddd  %xmm11,%xmm0
paddd  %xmm1,%xmm0
pshufd $0xff,%xmm0,%xmm1
movd   %xmm1,%eax
movd   %xmm6,%ecx
xor    %edx,%edx
div    %ecx
movd   %eax,%xmm1
pshufd $0xee,%xmm0,%xmm2
movd   %xmm2,%eax
movd   %xmm7,%ecx
xor    %edx,%edx
div    %ecx
movd   %eax,%xmm2
punpckldq %xmm1,%xmm2
movd   %xmm0,%eax
movd   %xmm3,%ecx
xor    %edx,%edx
div    %ecx
movd   %eax,%xmm1
pshufd $0x55,%xmm0,%xmm0
movd   %xmm0,%eax
pshufd $0x55,%xmm3,%xmm0
movd   %xmm0,%ecx
xor    %edx,%edx
div    %ecx
movd   %eax,%xmm0
punpckldq %xmm0,%xmm1
punpcklqdq %xmm2,%xmm1
movdqu %xmm1,0x8(%rbx,%r14,4)
add    $0x4,%r14
cmp    %r14,%rsi
jne    1950 <gaussian_blur+0x820>
mov    0x98(%rsp),%rax
cmp    %rsi,0x80(%rsp)
jne    1750 <gaussian_blur+0x620>
mov    0x40(%rsp),%r14
mov    %r14d,%ecx
mov    0x70(%rsp),%r12
mov    0x20(%rsp),%r13
jmp    1873 <gaussian_blur+0x743>
mov    %r9,%rdi
mov    0x18(%rsp),%rbx
jmp    1750 <gaussian_blur+0x620>
mov    0x90(%rsp),%r14
mov    0x54(%rsp),%edx
cmp    %r14d,%edx
jge    1e15 <gaussian_blur+0xce5>
mov    %r12,%r8
mov    %edx,%eax
mov    %r14d,%r14d
mov    %ebp,%r11d
and    $0xfffffff8,%r11d
lea    -0x8(%r11),%r10
mov    %r10,0x30(%rsp)
shr    $0x3,%r10
add    $0x1,%r10
mov    %r10d,%r9d
and    $0x3,%r9d
and    $0xfffffffffffffffc,%r10
mov    %ebp,%r15d
and    $0x3,%r15d
mov    %r9,%r12
shl    $0x5,%r12
jmp    1cbd <gaussian_blur+0xb8d>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%rax
cmp    %r14,%rax
je     1e15 <gaussian_blur+0xce5>
test   %r13d,%r13d
jle    1cb0 <gaussian_blur+0xb80>
mov    (%r8,%rax,8),%rsi
mov    0x28(%rsp),%rcx
mov    (%rcx,%rax,8),%rdi
cmp    $0x8,%r13d
jb     1ce7 <gaussian_blur+0xbb7>
lea    (%rsi,%rbp,4),%rcx
cmp    %rcx,%rdi
jae    1d4c <gaussian_blur+0xc1c>
lea    (%rdi,%rbp,4),%rcx
cmp    %rcx,%rsi
jae    1d4c <gaussian_blur+0xc1c>
xor    %edx,%edx
mov    %rdx,%rcx
not    %rcx
add    %rbp,%rcx
test   %r15,%r15
je     1d10 <gaussian_blur+0xbe0>
mov    %r15,%rbx
nopw   0x0(%rax,%rax,1)
mov    (%rsi,%rdx,4),%ebp
mov    %ebp,(%rdi,%rdx,4)
add    $0x1,%rdx
add    $0xffffffffffffffff,%rbx
jne    1d00 <gaussian_blur+0xbd0>
cmp    $0x3,%rcx
mov    0x20(%rsp),%r13
mov    0x8(%rsp),%rbp
jb     1cb0 <gaussian_blur+0xb80>
mov    (%rsi,%rdx,4),%ecx
mov    %ecx,(%rdi,%rdx,4)
mov    0x4(%rsi,%rdx,4),%ecx
mov    %ecx,0x4(%rdi,%rdx,4)
mov    0x8(%rsi,%rdx,4),%ecx
mov    %ecx,0x8(%rdi,%rdx,4)
mov    0xc(%rsi,%rdx,4),%ecx
mov    %ecx,0xc(%rdi,%rdx,4)
add    $0x4,%rdx
cmp    %rdx,%rbp
jne    1d20 <gaussian_blur+0xbf0>
jmp    1cb0 <gaussian_blur+0xb80>
cmpq   $0x18,0x30(%rsp)
jae    1d58 <gaussian_blur+0xc28>
xor    %edx,%edx
jmp    1dbc <gaussian_blur+0xc8c>
mov    %r10,%rcx
xor    %edx,%edx
nopl   (%rax)
movups (%rsi,%rdx,4),%xmm0
movups 0x10(%rsi,%rdx,4),%xmm1
movups %xmm0,(%rdi,%rdx,4)
movups %xmm1,0x10(%rdi,%rdx,4)
movups 0x20(%rsi,%rdx,4),%xmm0
movups 0x30(%rsi,%rdx,4),%xmm1
movups %xmm0,0x20(%rdi,%rdx,4)
movups %xmm1,0x30(%rdi,%rdx,4)
movups 0x40(%rsi,%rdx,4),%xmm0
movups 0x50(%rsi,%rdx,4),%xmm1
movups %xmm0,0x40(%rdi,%rdx,4)
movups %xmm1,0x50(%rdi,%rdx,4)
movdqu 0x60(%rsi,%rdx,4),%xmm0
movdqu 0x70(%rsi,%rdx,4),%xmm1
movdqu %xmm0,0x60(%rdi,%rdx,4)
movdqu %xmm1,0x70(%rdi,%rdx,4)
add    $0x20,%rdx
add    $0xfffffffffffffffc,%rcx
jne    1d60 <gaussian_blur+0xc30>
test   %r9,%r9
je     1dff <gaussian_blur+0xccf>
lea    (%rdi,%rdx,4),%rcx
add    $0x10,%rcx
lea    (%rsi,%rdx,4),%rdx
add    $0x10,%rdx
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movdqu -0x10(%rdx,%rbx,1),%xmm0
movdqu (%rdx,%rbx,1),%xmm1
movdqu %xmm0,-0x10(%rcx,%rbx,1)
movdqu %xmm1,(%rcx,%rbx,1)
add    $0x20,%rbx
cmp    %rbx,%r12
jne    1de0 <gaussian_blur+0xcb0>
mov    %r11,%rdx
cmp    %rbp,%r11
mov    0x20(%rsp),%r13
je     1cb0 <gaussian_blur+0xb80>
jmp    1ce9 <gaussian_blur+0xbb9>
add    $0x178,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [31 x i8] c"\09\09\09Enter the value of Sigma :\0A\00"
@.str.1 = [14 x i8] c"\09\09\09 1> 1.0 :\0A\00"
@.str.2 = [14 x i8] c"\09\09\09 2> 1.2 :\0A\00"
@.str.3 = [14 x i8] c"\09\09\09 3> 1.4 :\0A\00"
@.str.4 = [14 x i8] c"\09\09\09 4> 1.6 :\0A\00"
@.str.5 = [14 x i8] c"\09\09\09 5> 1.8 :\0A\00"
@.str.6 = [14 x i8] c"\09\09\09 6> 2.0 :\0A\00"
@.str.7 = [46 x i8] c"\09\09\09 Enter one of the options, [1/2/3/4/5/6]: \00"
@.str.8 = [3 x i8] c"%d\00"
define void @gaussian_blur(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
%13 = alloca [3 x [3 x i32]]
%14 = alloca i32
%15 = alloca [5 x [5 x i32]]
store i32 %0, i32* %5
store i32 %1, i32* %6
store i32** %2, i32*** %7
store i32** %3, i32*** %8
store i32 0, i32* %9
br label %16
16: ; preds = %46, %4
%17 = load i32, i32* %9
%18 = icmp slt i32 %17, 2
br i1 %18, label %19, label %49
19: ; preds = %16
store i32 0, i32* %10
br label %20
20: ; preds = %42, %19
%21 = load i32, i32* %10
%22 = load i32, i32* %5
%23 = icmp slt i32 %21, %22
br i1 %23, label %24, label %45
24: ; preds = %20
%25 = load i32**, i32*** %8
%26 = load i32, i32* %9
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i32*, i32** %25, i64 %27
%29 = load i32*, i32** %28
%30 = load i32, i32* %10
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds i32, i32* %29, i64 %31
%33 = load i32, i32* %32
%34 = load i32**, i32*** %7
%35 = load i32, i32* %9
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds i32*, i32** %34, i64 %36
%38 = load i32*, i32** %37
%39 = load i32, i32* %10
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds i32, i32* %38, i64 %40
store i32 %33, i32* %41
br label %42
42: ; preds = %24
%43 = load i32, i32* %10
%44 = add nsw i32 %43, 1
store i32 %44, i32* %10
br label %20
45: ; preds = %20
br label %46
46: ; preds = %45
%47 = load i32, i32* %9
%48 = add nsw i32 %47, 1
store i32 %48, i32* %9
br label %16
49: ; preds = %16
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str, i64 0, i64 0))
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.1, i64 0, i64 0))
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0))
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0))
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.4, i64 0, i64 0))
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.5, i64 0, i64 0))
%56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.6, i64 0, i64 0))
%57 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0))
%58 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0), i32* %12)
%59 = load i32, i32* %12
switch i32 %59, label %174 [
i32 1, label %60
i32 2, label %79
i32 3, label %98
i32 4, label %117
i32 5, label %136
i32 6, label %155
]
60: ; preds = %49
%61 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%62 = getelementptr inbounds [3 x i32], [3 x i32]* %61, i64 0, i64 0
store i32 1, i32* %62
%63 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%64 = getelementptr inbounds [3 x i32], [3 x i32]* %63, i64 0, i64 1
store i32 5, i32* %64
%65 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%66 = getelementptr inbounds [3 x i32], [3 x i32]* %65, i64 0, i64 2
store i32 8, i32* %66
%67 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%68 = getelementptr inbounds [3 x i32], [3 x i32]* %67, i64 0, i64 0
store i32 5, i32* %68
%69 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%70 = getelementptr inbounds [3 x i32], [3 x i32]* %69, i64 0, i64 1
store i32 23, i32* %70
%71 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%72 = getelementptr inbounds [3 x i32], [3 x i32]* %71, i64 0, i64 2
store i32 38, i32* %72
%73 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%74 = getelementptr inbounds [3 x i32], [3 x i32]* %73, i64 0, i64 0
store i32 8, i32* %74
%75 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%76 = getelementptr inbounds [3 x i32], [3 x i32]* %75, i64 0, i64 1
store i32 38, i32* %76
%77 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%78 = getelementptr inbounds [3 x i32], [3 x i32]* %77, i64 0, i64 2
store i32 63, i32* %78
store i32 383, i32* %14
br label %193
79: ; preds = %49
%80 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%81 = getelementptr inbounds [3 x i32], [3 x i32]* %80, i64 0, i64 0
store i32 2, i32* %81
%82 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%83 = getelementptr inbounds [3 x i32], [3 x i32]* %82, i64 0, i64 1
store i32 5, i32* %83
%84 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%85 = getelementptr inbounds [3 x i32], [3 x i32]* %84, i64 0, i64 2
store i32 8, i32* %85
%86 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%87 = getelementptr inbounds [3 x i32], [3 x i32]* %86, i64 0, i64 0
store i32 5, i32* %87
%88 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%89 = getelementptr inbounds [3 x i32], [3 x i32]* %88, i64 0, i64 1
store i32 15, i32* %89
%90 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%91 = getelementptr inbounds [3 x i32], [3 x i32]* %90, i64 0, i64 2
store i32 21, i32* %91
%92 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%93 = getelementptr inbounds [3 x i32], [3 x i32]* %92, i64 0, i64 0
store i32 8, i32* %93
%94 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%95 = getelementptr inbounds [3 x i32], [3 x i32]* %94, i64 0, i64 1
store i32 21, i32* %95
%96 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%97 = getelementptr inbounds [3 x i32], [3 x i32]* %96, i64 0, i64 2
store i32 30, i32* %97
store i32 254, i32* %14
br label %193
98: ; preds = %49
%99 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%100 = getelementptr inbounds [3 x i32], [3 x i32]* %99, i64 0, i64 0
store i32 2, i32* %100
%101 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%102 = getelementptr inbounds [3 x i32], [3 x i32]* %101, i64 0, i64 1
store i32 4, i32* %102
%103 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%104 = getelementptr inbounds [3 x i32], [3 x i32]* %103, i64 0, i64 2
store i32 5, i32* %104
%105 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%106 = getelementptr inbounds [3 x i32], [3 x i32]* %105, i64 0, i64 0
store i32 4, i32* %106
%107 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%108 = getelementptr inbounds [3 x i32], [3 x i32]* %107, i64 0, i64 1
store i32 9, i32* %108
%109 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%110 = getelementptr inbounds [3 x i32], [3 x i32]* %109, i64 0, i64 2
store i32 12, i32* %110
%111 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%112 = getelementptr inbounds [3 x i32], [3 x i32]* %111, i64 0, i64 0
store i32 5, i32* %112
%113 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%114 = getelementptr inbounds [3 x i32], [3 x i32]* %113, i64 0, i64 1
store i32 12, i32* %114
%115 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%116 = getelementptr inbounds [3 x i32], [3 x i32]* %115, i64 0, i64 2
store i32 15, i32* %116
store i32 159, i32* %14
br label %193
117: ; preds = %49
%118 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%119 = getelementptr inbounds [3 x i32], [3 x i32]* %118, i64 0, i64 0
store i32 4, i32* %119
%120 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%121 = getelementptr inbounds [3 x i32], [3 x i32]* %120, i64 0, i64 1
store i32 8, i32* %121
%122 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%123 = getelementptr inbounds [3 x i32], [3 x i32]* %122, i64 0, i64 2
store i32 9, i32* %123
%124 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%125 = getelementptr inbounds [3 x i32], [3 x i32]* %124, i64 0, i64 0
store i32 8, i32* %125
%126 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%127 = getelementptr inbounds [3 x i32], [3 x i32]* %126, i64 0, i64 1
store i32 14, i32* %127
%128 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%129 = getelementptr inbounds [3 x i32], [3 x i32]* %128, i64 0, i64 2
store i32 17, i32* %129
%130 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%131 = getelementptr inbounds [3 x i32], [3 x i32]* %130, i64 0, i64 0
store i32 9, i32* %131
%132 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%133 = getelementptr inbounds [3 x i32], [3 x i32]* %132, i64 0, i64 1
store i32 17, i32* %133
%134 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%135 = getelementptr inbounds [3 x i32], [3 x i32]* %134, i64 0, i64 2
store i32 20, i32* %135
store i32 260, i32* %14
br label %193
136: ; preds = %49
%137 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%138 = getelementptr inbounds [3 x i32], [3 x i32]* %137, i64 0, i64 0
store i32 5, i32* %138
%139 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%140 = getelementptr inbounds [3 x i32], [3 x i32]* %139, i64 0, i64 1
store i32 8, i32* %140
%141 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%142 = getelementptr inbounds [3 x i32], [3 x i32]* %141, i64 0, i64 2
store i32 10, i32* %142
%143 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%144 = getelementptr inbounds [3 x i32], [3 x i32]* %143, i64 0, i64 0
store i32 8, i32* %144
%145 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%146 = getelementptr inbounds [3 x i32], [3 x i32]* %145, i64 0, i64 1
store i32 13, i32* %146
%147 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%148 = getelementptr inbounds [3 x i32], [3 x i32]* %147, i64 0, i64 2
store i32 15, i32* %148
%149 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%150 = getelementptr inbounds [3 x i32], [3 x i32]* %149, i64 0, i64 0
store i32 10, i32* %150
%151 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%152 = getelementptr inbounds [3 x i32], [3 x i32]* %151, i64 0, i64 1
store i32 15, i32* %152
%153 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%154 = getelementptr inbounds [3 x i32], [3 x i32]* %153, i64 0, i64 2
store i32 18, i32* %154
store i32 254, i32* %14
br label %193
155: ; preds = %49
%156 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%157 = getelementptr inbounds [3 x i32], [3 x i32]* %156, i64 0, i64 0
store i32 6, i32* %157
%158 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%159 = getelementptr inbounds [3 x i32], [3 x i32]* %158, i64 0, i64 1
store i32 9, i32* %159
%160 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%161 = getelementptr inbounds [3 x i32], [3 x i32]* %160, i64 0, i64 2
store i32 10, i32* %161
%162 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%163 = getelementptr inbounds [3 x i32], [3 x i32]* %162, i64 0, i64 0
store i32 9, i32* %163
%164 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%165 = getelementptr inbounds [3 x i32], [3 x i32]* %164, i64 0, i64 1
store i32 13, i32* %165
%166 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%167 = getelementptr inbounds [3 x i32], [3 x i32]* %166, i64 0, i64 2
store i32 14, i32* %167
%168 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%169 = getelementptr inbounds [3 x i32], [3 x i32]* %168, i64 0, i64 0
store i32 10, i32* %169
%170 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%171 = getelementptr inbounds [3 x i32], [3 x i32]* %170, i64 0, i64 1
store i32 14, i32* %171
%172 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%173 = getelementptr inbounds [3 x i32], [3 x i32]* %172, i64 0, i64 2
store i32 16, i32* %173
store i32 260, i32* %14
br label %193
174: ; preds = %49
%175 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%176 = getelementptr inbounds [3 x i32], [3 x i32]* %175, i64 0, i64 0
store i32 2, i32* %176
%177 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%178 = getelementptr inbounds [3 x i32], [3 x i32]* %177, i64 0, i64 1
store i32 4, i32* %178
%179 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%180 = getelementptr inbounds [3 x i32], [3 x i32]* %179, i64 0, i64 2
store i32 5, i32* %180
%181 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%182 = getelementptr inbounds [3 x i32], [3 x i32]* %181, i64 0, i64 0
store i32 4, i32* %182
%183 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%184 = getelementptr inbounds [3 x i32], [3 x i32]* %183, i64 0, i64 1
store i32 9, i32* %184
%185 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%186 = getelementptr inbounds [3 x i32], [3 x i32]* %185, i64 0, i64 2
store i32 12, i32* %186
%187 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%188 = getelementptr inbounds [3 x i32], [3 x i32]* %187, i64 0, i64 0
store i32 5, i32* %188
%189 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%190 = getelementptr inbounds [3 x i32], [3 x i32]* %189, i64 0, i64 1
store i32 12, i32* %190
%191 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%192 = getelementptr inbounds [3 x i32], [3 x i32]* %191, i64 0, i64 2
store i32 15, i32* %192
store i32 159, i32* %14
br label %193
193: ; preds = %174, %155, %136, %117, %98, %79, %60
store i32 2, i32* %9
br label %194
194: ; preds = %533, %193
%195 = load i32, i32* %9
%196 = load i32, i32* %6
%197 = sub nsw i32 %196, 2
%198 = icmp slt i32 %195, %197
br i1 %198, label %199, label %536
199: ; preds = %194
%200 = load i32**, i32*** %8
%201 = load i32, i32* %9
%202 = sext i32 %201 to i64
%203 = getelementptr inbounds i32*, i32** %200, i64 %202
%204 = load i32*, i32** %203
%205 = getelementptr inbounds i32, i32* %204, i64 0
%206 = load i32, i32* %205
%207 = load i32**, i32*** %7
%208 = load i32, i32* %9
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds i32*, i32** %207, i64 %209
%211 = load i32*, i32** %210
%212 = getelementptr inbounds i32, i32* %211, i64 0
store i32 %206, i32* %212
%213 = load i32**, i32*** %8
%214 = load i32, i32* %9
%215 = sext i32 %214 to i64
%216 = getelementptr inbounds i32*, i32** %213, i64 %215
%217 = load i32*, i32** %216
%218 = getelementptr inbounds i32, i32* %217, i64 1
%219 = load i32, i32* %218
%220 = load i32**, i32*** %7
%221 = load i32, i32* %9
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds i32*, i32** %220, i64 %222
%224 = load i32*, i32** %223
%225 = getelementptr inbounds i32, i32* %224, i64 1
store i32 %219, i32* %225
store i32 2, i32* %10
br label %226
226: ; preds = %493, %199
%227 = load i32, i32* %10
%228 = load i32, i32* %5
%229 = sub nsw i32 %228, 2
%230 = icmp slt i32 %227, %229
br i1 %230, label %231, label %496
231: ; preds = %226
store i32 0, i32* %11
br label %232
232: ; preds = %320, %231
%233 = load i32, i32* %11
%234 = icmp slt i32 %233, 5
br i1 %234, label %235, label %323
235: ; preds = %232
%236 = load i32**, i32*** %8
%237 = load i32, i32* %9
%238 = sub nsw i32 %237, 2
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds i32*, i32** %236, i64 %239
%241 = load i32*, i32** %240
%242 = load i32, i32* %10
%243 = sub nsw i32 %242, 2
%244 = load i32, i32* %11
%245 = add nsw i32 %243, %244
%246 = sext i32 %245 to i64
%247 = getelementptr inbounds i32, i32* %241, i64 %246
%248 = load i32, i32* %247
%249 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 0
%250 = load i32, i32* %11
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds [5 x i32], [5 x i32]* %249, i64 0, i64 %251
store i32 %248, i32* %252
%253 = load i32**, i32*** %8
%254 = load i32, i32* %9
%255 = sub nsw i32 %254, 1
%256 = sext i32 %255 to i64
%257 = getelementptr inbounds i32*, i32** %253, i64 %256
%258 = load i32*, i32** %257
%259 = load i32, i32* %10
%260 = sub nsw i32 %259, 2
%261 = load i32, i32* %11
%262 = add nsw i32 %260, %261
%263 = sext i32 %262 to i64
%264 = getelementptr inbounds i32, i32* %258, i64 %263
%265 = load i32, i32* %264
%266 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 1
%267 = load i32, i32* %11
%268 = sext i32 %267 to i64
%269 = getelementptr inbounds [5 x i32], [5 x i32]* %266, i64 0, i64 %268
store i32 %265, i32* %269
%270 = load i32**, i32*** %8
%271 = load i32, i32* %9
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds i32*, i32** %270, i64 %272
%274 = load i32*, i32** %273
%275 = load i32, i32* %10
%276 = sub nsw i32 %275, 2
%277 = load i32, i32* %11
%278 = add nsw i32 %276, %277
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds i32, i32* %274, i64 %279
%281 = load i32, i32* %280
%282 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 2
%283 = load i32, i32* %11
%284 = sext i32 %283 to i64
%285 = getelementptr inbounds [5 x i32], [5 x i32]* %282, i64 0, i64 %284
store i32 %281, i32* %285
%286 = load i32**, i32*** %8
%287 = load i32, i32* %9
%288 = add nsw i32 %287, 1
%289 = sext i32 %288 to i64
%290 = getelementptr inbounds i32*, i32** %286, i64 %289
%291 = load i32*, i32** %290
%292 = load i32, i32* %10
%293 = sub nsw i32 %292, 2
%294 = load i32, i32* %11
%295 = add nsw i32 %293, %294
%296 = sext i32 %295 to i64
%297 = getelementptr inbounds i32, i32* %291, i64 %296
%298 = load i32, i32* %297
%299 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 3
%300 = load i32, i32* %11
%301 = sext i32 %300 to i64
%302 = getelementptr inbounds [5 x i32], [5 x i32]* %299, i64 0, i64 %301
store i32 %298, i32* %302
%303 = load i32**, i32*** %8
%304 = load i32, i32* %9
%305 = add nsw i32 %304, 2
%306 = sext i32 %305 to i64
%307 = getelementptr inbounds i32*, i32** %303, i64 %306
%308 = load i32*, i32** %307
%309 = load i32, i32* %10
%310 = sub nsw i32 %309, 2
%311 = load i32, i32* %11
%312 = add nsw i32 %310, %311
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds i32, i32* %308, i64 %313
%315 = load i32, i32* %314
%316 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 4
%317 = load i32, i32* %11
%318 = sext i32 %317 to i64
%319 = getelementptr inbounds [5 x i32], [5 x i32]* %316, i64 0, i64 %318
store i32 %315, i32* %319
br label %320
320: ; preds = %235
%321 = load i32, i32* %11
%322 = add nsw i32 %321, 1
store i32 %322, i32* %11
br label %232
323: ; preds = %232
%324 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 0
%325 = getelementptr inbounds [5 x i32], [5 x i32]* %324, i64 0, i64 0
%326 = load i32, i32* %325
%327 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 4
%328 = getelementptr inbounds [5 x i32], [5 x i32]* %327, i64 0, i64 0
%329 = load i32, i32* %328
%330 = add i32 %326, %329
%331 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%332 = getelementptr inbounds [3 x i32], [3 x i32]* %331, i64 0, i64 0
%333 = load i32, i32* %332
%334 = mul i32 %330, %333
%335 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 0
%336 = getelementptr inbounds [5 x i32], [5 x i32]* %335, i64 0, i64 1
%337 = load i32, i32* %336
%338 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 4
%339 = getelementptr inbounds [5 x i32], [5 x i32]* %338, i64 0, i64 1
%340 = load i32, i32* %339
%341 = add i32 %337, %340
%342 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%343 = getelementptr inbounds [3 x i32], [3 x i32]* %342, i64 0, i64 1
%344 = load i32, i32* %343
%345 = mul i32 %341, %344
%346 = add i32 %334, %345
%347 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 0
%348 = getelementptr inbounds [5 x i32], [5 x i32]* %347, i64 0, i64 2
%349 = load i32, i32* %348
%350 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 4
%351 = getelementptr inbounds [5 x i32], [5 x i32]* %350, i64 0, i64 2
%352 = load i32, i32* %351
%353 = add i32 %349, %352
%354 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%355 = getelementptr inbounds [3 x i32], [3 x i32]* %354, i64 0, i64 2
%356 = load i32, i32* %355
%357 = mul i32 %353, %356
%358 = add i32 %346, %357
%359 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 0
%360 = getelementptr inbounds [5 x i32], [5 x i32]* %359, i64 0, i64 3
%361 = load i32, i32* %360
%362 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 4
%363 = getelementptr inbounds [5 x i32], [5 x i32]* %362, i64 0, i64 3
%364 = load i32, i32* %363
%365 = add i32 %361, %364
%366 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%367 = getelementptr inbounds [3 x i32], [3 x i32]* %366, i64 0, i64 1
%368 = load i32, i32* %367
%369 = mul i32 %365, %368
%370 = add i32 %358, %369
%371 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 0
%372 = getelementptr inbounds [5 x i32], [5 x i32]* %371, i64 0, i64 4
%373 = load i32, i32* %372
%374 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 4
%375 = getelementptr inbounds [5 x i32], [5 x i32]* %374, i64 0, i64 4
%376 = load i32, i32* %375
%377 = add i32 %373, %376
%378 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 0
%379 = getelementptr inbounds [3 x i32], [3 x i32]* %378, i64 0, i64 0
%380 = load i32, i32* %379
%381 = mul i32 %377, %380
%382 = add i32 %370, %381
%383 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 1
%384 = getelementptr inbounds [5 x i32], [5 x i32]* %383, i64 0, i64 0
%385 = load i32, i32* %384
%386 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 3
%387 = getelementptr inbounds [5 x i32], [5 x i32]* %386, i64 0, i64 0
%388 = load i32, i32* %387
%389 = add i32 %385, %388
%390 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%391 = getelementptr inbounds [3 x i32], [3 x i32]* %390, i64 0, i64 0
%392 = load i32, i32* %391
%393 = mul i32 %389, %392
%394 = add i32 %382, %393
%395 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 1
%396 = getelementptr inbounds [5 x i32], [5 x i32]* %395, i64 0, i64 1
%397 = load i32, i32* %396
%398 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 3
%399 = getelementptr inbounds [5 x i32], [5 x i32]* %398, i64 0, i64 1
%400 = load i32, i32* %399
%401 = add i32 %397, %400
%402 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%403 = getelementptr inbounds [3 x i32], [3 x i32]* %402, i64 0, i64 1
%404 = load i32, i32* %403
%405 = mul i32 %401, %404
%406 = add i32 %394, %405
%407 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 1
%408 = getelementptr inbounds [5 x i32], [5 x i32]* %407, i64 0, i64 2
%409 = load i32, i32* %408
%410 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 3
%411 = getelementptr inbounds [5 x i32], [5 x i32]* %410, i64 0, i64 2
%412 = load i32, i32* %411
%413 = add i32 %409, %412
%414 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%415 = getelementptr inbounds [3 x i32], [3 x i32]* %414, i64 0, i64 2
%416 = load i32, i32* %415
%417 = mul i32 %413, %416
%418 = add i32 %406, %417
%419 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 1
%420 = getelementptr inbounds [5 x i32], [5 x i32]* %419, i64 0, i64 3
%421 = load i32, i32* %420
%422 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 3
%423 = getelementptr inbounds [5 x i32], [5 x i32]* %422, i64 0, i64 3
%424 = load i32, i32* %423
%425 = add i32 %421, %424
%426 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%427 = getelementptr inbounds [3 x i32], [3 x i32]* %426, i64 0, i64 1
%428 = load i32, i32* %427
%429 = mul i32 %425, %428
%430 = add i32 %418, %429
%431 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 1
%432 = getelementptr inbounds [5 x i32], [5 x i32]* %431, i64 0, i64 4
%433 = load i32, i32* %432
%434 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 3
%435 = getelementptr inbounds [5 x i32], [5 x i32]* %434, i64 0, i64 4
%436 = load i32, i32* %435
%437 = add i32 %433, %436
%438 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 1
%439 = getelementptr inbounds [3 x i32], [3 x i32]* %438, i64 0, i64 0
%440 = load i32, i32* %439
%441 = mul i32 %437, %440
%442 = add i32 %430, %441
%443 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 2
%444 = getelementptr inbounds [5 x i32], [5 x i32]* %443, i64 0, i64 0
%445 = load i32, i32* %444
%446 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%447 = getelementptr inbounds [3 x i32], [3 x i32]* %446, i64 0, i64 0
%448 = load i32, i32* %447
%449 = mul i32 %445, %448
%450 = add i32 %442, %449
%451 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 2
%452 = getelementptr inbounds [5 x i32], [5 x i32]* %451, i64 0, i64 1
%453 = load i32, i32* %452
%454 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%455 = getelementptr inbounds [3 x i32], [3 x i32]* %454, i64 0, i64 1
%456 = load i32, i32* %455
%457 = mul i32 %453, %456
%458 = add i32 %450, %457
%459 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 2
%460 = getelementptr inbounds [5 x i32], [5 x i32]* %459, i64 0, i64 2
%461 = load i32, i32* %460
%462 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%463 = getelementptr inbounds [3 x i32], [3 x i32]* %462, i64 0, i64 2
%464 = load i32, i32* %463
%465 = mul i32 %461, %464
%466 = add i32 %458, %465
%467 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 2
%468 = getelementptr inbounds [5 x i32], [5 x i32]* %467, i64 0, i64 3
%469 = load i32, i32* %468
%470 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%471 = getelementptr inbounds [3 x i32], [3 x i32]* %470, i64 0, i64 1
%472 = load i32, i32* %471
%473 = mul i32 %469, %472
%474 = add i32 %466, %473
%475 = getelementptr inbounds [5 x [5 x i32]], [5 x [5 x i32]]* %15, i64 0, i64 2
%476 = getelementptr inbounds [5 x i32], [5 x i32]* %475, i64 0, i64 4
%477 = load i32, i32* %476
%478 = getelementptr inbounds [3 x [3 x i32]], [3 x [3 x i32]]* %13, i64 0, i64 2
%479 = getelementptr inbounds [3 x i32], [3 x i32]* %478, i64 0, i64 0
%480 = load i32, i32* %479
%481 = mul i32 %477, %480
%482 = add i32 %474, %481
%483 = load i32, i32* %14
%484 = udiv i32 %482, %483
%485 = load i32**, i32*** %7
%486 = load i32, i32* %9
%487 = sext i32 %486 to i64
%488 = getelementptr inbounds i32*, i32** %485, i64 %487
%489 = load i32*, i32** %488
%490 = load i32, i32* %10
%491 = sext i32 %490 to i64
%492 = getelementptr inbounds i32, i32* %489, i64 %491
store i32 %484, i32* %492
br label %493
493: ; preds = %323
%494 = load i32, i32* %10
%495 = add nsw i32 %494, 1
store i32 %495, i32* %10
br label %226
496: ; preds = %226
%497 = load i32**, i32*** %8
%498 = load i32, i32* %9
%499 = sext i32 %498 to i64
%500 = getelementptr inbounds i32*, i32** %497, i64 %499
%501 = load i32*, i32** %500
%502 = load i32, i32* %10
%503 = sext i32 %502 to i64
%504 = getelementptr inbounds i32, i32* %501, i64 %503
%505 = load i32, i32* %504
%506 = load i32**, i32*** %7
%507 = load i32, i32* %9
%508 = sext i32 %507 to i64
%509 = getelementptr inbounds i32*, i32** %506, i64 %508
%510 = load i32*, i32** %509
%511 = load i32, i32* %10
%512 = sext i32 %511 to i64
%513 = getelementptr inbounds i32, i32* %510, i64 %512
store i32 %505, i32* %513
%514 = load i32**, i32*** %8
%515 = load i32, i32* %9
%516 = sext i32 %515 to i64
%517 = getelementptr inbounds i32*, i32** %514, i64 %516
%518 = load i32*, i32** %517
%519 = load i32, i32* %10
%520 = add nsw i32 %519, 1
%521 = sext i32 %520 to i64
%522 = getelementptr inbounds i32, i32* %518, i64 %521
%523 = load i32, i32* %522
%524 = load i32**, i32*** %7
%525 = load i32, i32* %9
%526 = sext i32 %525 to i64
%527 = getelementptr inbounds i32*, i32** %524, i64 %526
%528 = load i32*, i32** %527
%529 = load i32, i32* %10
%530 = add nsw i32 %529, 1
%531 = sext i32 %530 to i64
%532 = getelementptr inbounds i32, i32* %528, i64 %531
store i32 %523, i32* %532
br label %533
533: ; preds = %496
%534 = load i32, i32* %9
%535 = add nsw i32 %534, 1
store i32 %535, i32* %9
br label %194
536: ; preds = %194
%537 = load i32, i32* %9
store i32 %537, i32* %11
br label %538
538: ; preds = %569, %536
%539 = load i32, i32* %11
%540 = load i32, i32* %6
%541 = icmp slt i32 %539, %540
br i1 %541, label %542, label %572
542: ; preds = %538
store i32 0, i32* %10
br label %543
543: ; preds = %565, %542
%544 = load i32, i32* %10
%545 = load i32, i32* %5
%546 = icmp slt i32 %544, %545
br i1 %546, label %547, label %568
547: ; preds = %543
%548 = load i32**, i32*** %8
%549 = load i32, i32* %11
%550 = sext i32 %549 to i64
%551 = getelementptr inbounds i32*, i32** %548, i64 %550
%552 = load i32*, i32** %551
%553 = load i32, i32* %10
%554 = sext i32 %553 to i64
%555 = getelementptr inbounds i32, i32* %552, i64 %554
%556 = load i32, i32* %555
%557 = load i32**, i32*** %7
%558 = load i32, i32* %11
%559 = sext i32 %558 to i64
%560 = getelementptr inbounds i32*, i32** %557, i64 %559
%561 = load i32*, i32** %560
%562 = load i32, i32* %10
%563 = sext i32 %562 to i64
%564 = getelementptr inbounds i32, i32* %561, i64 %563
store i32 %556, i32* %564
br label %565
565: ; preds = %547
%566 = load i32, i32* %10
%567 = add nsw i32 %566, 1
store i32 %567, i32* %10
br label %543
568: ; preds = %543
br label %569
569: ; preds = %568
%570 = load i32, i32* %11
%571 = add nsw i32 %570, 1
store i32 %571, i32* %11
br label %538
572: ; preds = %538
ret void
}

LLVM IR (-O2):
@.str.7 = [46 x i8] c"\09\09\09 Enter one of the options, [1/2/3/4/5/6]: \00"
@.str.8 = [3 x i8] c"%d\00"
@str = [30 x i8] c"\09\09\09Enter the value of Sigma :\00"
@str.9 = [13 x i8] c"\09\09\09 1> 1.0 :\00"
@str.10 = [13 x i8] c"\09\09\09 2> 1.2 :\00"
@str.11 = [13 x i8] c"\09\09\09 3> 1.4 :\00"
@str.12 = [13 x i8] c"\09\09\09 4> 1.6 :\00"
@str.13 = [13 x i8] c"\09\09\09 5> 1.8 :\00"
@str.14 = [13 x i8] c"\09\09\09 6> 2.0 :\00"
@switch.table.gaussian_blur = [6 x i32] [i32 63, i32 30, i32 15, i32 20, i32 18, i32 16]
@switch.table.gaussian_blur.15 = [6 x i32] [i32 38, i32 21, i32 12, i32 17, i32 15, i32 14]
@switch.table.gaussian_blur.16 = [6 x i32] [i32 23, i32 15, i32 9, i32 14, i32 13, i32 13]
@switch.table.gaussian_blur.17 = [6 x i32] [i32 8, i32 8, i32 5, i32 9, i32 10, i32 10]
@switch.table.gaussian_blur.18 = [6 x i32] [i32 5, i32 5, i32 4, i32 8, i32 8, i32 9]
@switch.table.gaussian_blur.19 = [6 x i32] [i32 1, i32 2, i32 2, i32 4, i32 5, i32 6]
@switch.table.gaussian_blur.20 = [6 x i32] [i32 383, i32 254, i32 159, i32 260, i32 254, i32 260]
define void @gaussian_blur(i32 %0, i32 %1, i32** nocapture %2, i32** nocapture %3) {
%5 = alloca i32
%6 = bitcast i32* %5 to i8*
%7 = icmp sgt i32 %0, 0
br i1 %7, label %8, label %265
8: ; preds = %4
%9 = load i32*, i32** %3
%10 = load i32*, i32** %2
%11 = zext i32 %0 to i64
%12 = icmp ult i32 %0, 8
br i1 %12, label %98, label %13
13: ; preds = %8
%14 = getelementptr i32, i32* %10, i64 %11
%15 = getelementptr i32, i32* %9, i64 %11
%16 = icmp ult i32* %10, %15
%17 = icmp ult i32* %9, %14
%18 = and i1 %16, %17
br i1 %18, label %98, label %19
19: ; preds = %13
%20 = and i64 %11, 4294967288
%21 = add nsw i64 %20, -8
%22 = lshr exact i64 %21, 3
%23 = add nuw nsw i64 %22, 1
%24 = and i64 %23, 3
%25 = icmp ult i64 %21, 24
br i1 %25, label %77, label %26
26: ; preds = %19
%27 = and i64 %23, 4611686018427387900
br label %28
28: ; preds = %28, %26
%29 = phi i64 [ 0, %26 ], [ %74, %28 ]
%30 = phi i64 [ 0, %26 ], [ %75, %28 ]
%31 = getelementptr inbounds i32, i32* %9, i64 %29
%32 = bitcast i32* %31 to <4 x i32>*
%33 = load <4 x i32>, <4 x i32>* %32
%34 = getelementptr inbounds i32, i32* %31, i64 4
%35 = bitcast i32* %34 to <4 x i32>*
%36 = load <4 x i32>, <4 x i32>* %35
%37 = getelementptr inbounds i32, i32* %10, i64 %29
%38 = bitcast i32* %37 to <4 x i32>*
store <4 x i32> %33, <4 x i32>* %38
%39 = getelementptr inbounds i32, i32* %37, i64 4
%40 = bitcast i32* %39 to <4 x i32>*
store <4 x i32> %36, <4 x i32>* %40
%41 = or i64 %29, 8
%42 = getelementptr inbounds i32, i32* %9, i64 %41
%43 = bitcast i32* %42 to <4 x i32>*
%44 = load <4 x i32>, <4 x i32>* %43
%45 = getelementptr inbounds i32, i32* %42, i64 4
%46 = bitcast i32* %45 to <4 x i32>*
%47 = load <4 x i32>, <4 x i32>* %46
%48 = getelementptr inbounds i32, i32* %10, i64 %41
%49 = bitcast i32* %48 to <4 x i32>*
store <4 x i32> %44, <4 x i32>* %49
%50 = getelementptr inbounds i32, i32* %48, i64 4
%51 = bitcast i32* %50 to <4 x i32>*
store <4 x i32> %47, <4 x i32>* %51
%52 = or i64 %29, 16
%53 = getelementptr inbounds i32, i32* %9, i64 %52
%54 = bitcast i32* %53 to <4 x i32>*
%55 = load <4 x i32>, <4 x i32>* %54
%56 = getelementptr inbounds i32, i32* %53, i64 4
%57 = bitcast i32* %56 to <4 x i32>*
%58 = load <4 x i32>, <4 x i32>* %57
%59 = getelementptr inbounds i32, i32* %10, i64 %52
%60 = bitcast i32* %59 to <4 x i32>*
store <4 x i32> %55, <4 x i32>* %60
%61 = getelementptr inbounds i32, i32* %59, i64 4
%62 = bitcast i32* %61 to <4 x i32>*
store <4 x i32> %58, <4 x i32>* %62
%63 = or i64 %29, 24
%64 = getelementptr inbounds i32, i32* %9, i64 %63
%65 = bitcast i32* %64 to <4 x i32>*
%66 = load <4 x i32>, <4 x i32>* %65
%67 = getelementptr inbounds i32, i32* %64, i64 4
%68 = bitcast i32* %67 to <4 x i32>*
%69 = load <4 x i32>, <4 x i32>* %68
%70 = getelementptr inbounds i32, i32* %10, i64 %63
%71 = bitcast i32* %70 to <4 x i32>*
store <4 x i32> %66, <4 x i32>* %71
%72 = getelementptr inbounds i32, i32* %70, i64 4
%73 = bitcast i32* %72 to <4 x i32>*
store <4 x i32> %69, <4 x i32>* %73
%74 = add nuw i64 %29, 32
%75 = add i64 %30, 4
%76 = icmp eq i64 %75, %27
br i1 %76, label %77, label %28
77: ; preds = %28, %19
%78 = phi i64 [ 0, %19 ], [ %74, %28 ]
%79 = icmp eq i64 %24, 0
br i1 %79, label %96, label %80
80: ; preds = %77, %80
%81 = phi i64 [ %93, %80 ], [ %78, %77 ]
%82 = phi i64 [ %94, %80 ], [ 0, %77 ]
%83 = getelementptr inbounds i32, i32* %9, i64 %81
%84 = bitcast i32* %83 to <4 x i32>*
%85 = load <4 x i32>, <4 x i32>* %84
%86 = getelementptr inbounds i32, i32* %83, i64 4
%87 = bitcast i32* %86 to <4 x i32>*
%88 = load <4 x i32>, <4 x i32>* %87
%89 = getelementptr inbounds i32, i32* %10, i64 %81
%90 = bitcast i32* %89 to <4 x i32>*
store <4 x i32> %85, <4 x i32>* %90
%91 = getelementptr inbounds i32, i32* %89, i64 4
%92 = bitcast i32* %91 to <4 x i32>*
store <4 x i32> %88, <4 x i32>* %92
%93 = add nuw i64 %81, 8
%94 = add i64 %82, 1
%95 = icmp eq i64 %94, %24
br i1 %95, label %96, label %80
96: ; preds = %80, %77
%97 = icmp eq i64 %20, %11
br i1 %97, label %135, label %98
98: ; preds = %13, %8, %96
%99 = phi i64 [ 0, %13 ], [ 0, %8 ], [ %20, %96 ]
%100 = xor i64 %99, -1
%101 = add nsw i64 %100, %11
%102 = and i64 %11, 3
%103 = icmp eq i64 %102, 0
br i1 %103, label %113, label %104
104: ; preds = %98, %104
%105 = phi i64 [ %110, %104 ], [ %99, %98 ]
%106 = phi i64 [ %111, %104 ], [ 0, %98 ]
%107 = getelementptr inbounds i32, i32* %9, i64 %105
%108 = load i32, i32* %107
%109 = getelementptr inbounds i32, i32* %10, i64 %105
store i32 %108, i32* %109
%110 = add nuw nsw i64 %105, 1
%111 = add i64 %106, 1
%112 = icmp eq i64 %111, %102
br i1 %112, label %113, label %104
113: ; preds = %104, %98
%114 = phi i64 [ %99, %98 ], [ %110, %104 ]
%115 = icmp ult i64 %101, 3
br i1 %115, label %135, label %116
116: ; preds = %113, %116
%117 = phi i64 [ %133, %116 ], [ %114, %113 ]
%118 = getelementptr inbounds i32, i32* %9, i64 %117
%119 = load i32, i32* %118
%120 = getelementptr inbounds i32, i32* %10, i64 %117
store i32 %119, i32* %120
%121 = add nuw nsw i64 %117, 1
%122 = getelementptr inbounds i32, i32* %9, i64 %121
%123 = load i32, i32* %122
%124 = getelementptr inbounds i32, i32* %10, i64 %121
store i32 %123, i32* %124
%125 = add nuw nsw i64 %117, 2
%126 = getelementptr inbounds i32, i32* %9, i64 %125
%127 = load i32, i32* %126
%128 = getelementptr inbounds i32, i32* %10, i64 %125
store i32 %127, i32* %128
%129 = add nuw nsw i64 %117, 3
%130 = getelementptr inbounds i32, i32* %9, i64 %129
%131 = load i32, i32* %130
%132 = getelementptr inbounds i32, i32* %10, i64 %129
store i32 %131, i32* %132
%133 = add nuw nsw i64 %117, 4
%134 = icmp eq i64 %133, %11
br i1 %134, label %135, label %116
135: ; preds = %113, %116, %96
br i1 %7, label %136, label %265
136: ; preds = %135
%137 = getelementptr inbounds i32*, i32** %3, i64 1
%138 = load i32*, i32** %137
%139 = getelementptr inbounds i32*, i32** %2, i64 1
%140 = load i32*, i32** %139
%141 = zext i32 %0 to i64
%142 = icmp ult i32 %0, 8
br i1 %142, label %228, label %143
143: ; preds = %136
%144 = getelementptr i32, i32* %140, i64 %11
%145 = getelementptr i32, i32* %138, i64 %11
%146 = icmp ult i32* %140, %145
%147 = icmp ult i32* %138, %144
%148 = and i1 %146, %147
br i1 %148, label %228, label %149
149: ; preds = %143
%150 = and i64 %11, 4294967288
%151 = add nsw i64 %150, -8
%152 = lshr exact i64 %151, 3
%153 = add nuw nsw i64 %152, 1
%154 = and i64 %153, 3
%155 = icmp ult i64 %151, 24
br i1 %155, label %207, label %156
156: ; preds = %149
%157 = and i64 %153, 4611686018427387900
br label %158
158: ; preds = %158, %156
%159 = phi i64 [ 0, %156 ], [ %204, %158 ]
%160 = phi i64 [ 0, %156 ], [ %205, %158 ]
%161 = getelementptr inbounds i32, i32* %138, i64 %159
%162 = bitcast i32* %161 to <4 x i32>*
%163 = load <4 x i32>, <4 x i32>* %162
%164 = getelementptr inbounds i32, i32* %161, i64 4
%165 = bitcast i32* %164 to <4 x i32>*
%166 = load <4 x i32>, <4 x i32>* %165
%167 = getelementptr inbounds i32, i32* %140, i64 %159
%168 = bitcast i32* %167 to <4 x i32>*
store <4 x i32> %163, <4 x i32>* %168
%169 = getelementptr inbounds i32, i32* %167, i64 4
%170 = bitcast i32* %169 to <4 x i32>*
store <4 x i32> %166, <4 x i32>* %170
%171 = or i64 %159, 8
%172 = getelementptr inbounds i32, i32* %138, i64 %171
%173 = bitcast i32* %172 to <4 x i32>*
%174 = load <4 x i32>, <4 x i32>* %173
%175 = getelementptr inbounds i32, i32* %172, i64 4
%176 = bitcast i32* %175 to <4 x i32>*
%177 = load <4 x i32>, <4 x i32>* %176
%178 = getelementptr inbounds i32, i32* %140, i64 %171
%179 = bitcast i32* %178 to <4 x i32>*
store <4 x i32> %174, <4 x i32>* %179
%180 = getelementptr inbounds i32, i32* %178, i64 4
%181 = bitcast i32* %180 to <4 x i32>*
store <4 x i32> %177, <4 x i32>* %181
%182 = or i64 %159, 16
%183 = getelementptr inbounds i32, i32* %138, i64 %182
%184 = bitcast i32* %183 to <4 x i32>*
%185 = load <4 x i32>, <4 x i32>* %184
%186 = getelementptr inbounds i32, i32* %183, i64 4
%187 = bitcast i32* %186 to <4 x i32>*
%188 = load <4 x i32>, <4 x i32>* %187
%189 = getelementptr inbounds i32, i32* %140, i64 %182
%190 = bitcast i32* %189 to <4 x i32>*
store <4 x i32> %185, <4 x i32>* %190
%191 = getelementptr inbounds i32, i32* %189, i64 4
%192 = bitcast i32* %191 to <4 x i32>*
store <4 x i32> %188, <4 x i32>* %192
%193 = or i64 %159, 24
%194 = getelementptr inbounds i32, i32* %138, i64 %193
%195 = bitcast i32* %194 to <4 x i32>*
%196 = load <4 x i32>, <4 x i32>* %195
%197 = getelementptr inbounds i32, i32* %194, i64 4
%198 = bitcast i32* %197 to <4 x i32>*
%199 = load <4 x i32>, <4 x i32>* %198
%200 = getelementptr inbounds i32, i32* %140, i64 %193
%201 = bitcast i32* %200 to <4 x i32>*
store <4 x i32> %196, <4 x i32>* %201
%202 = getelementptr inbounds i32, i32* %200, i64 4
%203 = bitcast i32* %202 to <4 x i32>*
store <4 x i32> %199, <4 x i32>* %203
%204 = add nuw i64 %159, 32
%205 = add i64 %160, 4
%206 = icmp eq i64 %205, %157
br i1 %206, label %207, label %158
207: ; preds = %158, %149
%208 = phi i64 [ 0, %149 ], [ %204, %158 ]
%209 = icmp eq i64 %154, 0
br i1 %209, label %226, label %210
210: ; preds = %207, %210
%211 = phi i64 [ %223, %210 ], [ %208, %207 ]
%212 = phi i64 [ %224, %210 ], [ 0, %207 ]
%213 = getelementptr inbounds i32, i32* %138, i64 %211
%214 = bitcast i32* %213 to <4 x i32>*
%215 = load <4 x i32>, <4 x i32>* %214
%216 = getelementptr inbounds i32, i32* %213, i64 4
%217 = bitcast i32* %216 to <4 x i32>*
%218 = load <4 x i32>, <4 x i32>* %217
%219 = getelementptr inbounds i32, i32* %140, i64 %211
%220 = bitcast i32* %219 to <4 x i32>*
store <4 x i32> %215, <4 x i32>* %220
%221 = getelementptr inbounds i32, i32* %219, i64 4
%222 = bitcast i32* %221 to <4 x i32>*
store <4 x i32> %218, <4 x i32>* %222
%223 = add nuw i64 %211, 8
%224 = add i64 %212, 1
%225 = icmp eq i64 %224, %154
br i1 %225, label %226, label %210
226: ; preds = %210, %207
%227 = icmp eq i64 %150, %11
br i1 %227, label %265, label %228
228: ; preds = %143, %136, %226
%229 = phi i64 [ 0, %143 ], [ 0, %136 ], [ %150, %226 ]
%230 = xor i64 %229, -1
%231 = add nsw i64 %230, %11
%232 = and i64 %11, 3
%233 = icmp eq i64 %232, 0
br i1 %233, label %243, label %234
234: ; preds = %228, %234
%235 = phi i64 [ %240, %234 ], [ %229, %228 ]
%236 = phi i64 [ %241, %234 ], [ 0, %228 ]
%237 = getelementptr inbounds i32, i32* %138, i64 %235
%238 = load i32, i32* %237
%239 = getelementptr inbounds i32, i32* %140, i64 %235
store i32 %238, i32* %239
%240 = add nuw nsw i64 %235, 1
%241 = add i64 %236, 1
%242 = icmp eq i64 %241, %232
br i1 %242, label %243, label %234
243: ; preds = %234, %228
%244 = phi i64 [ %229, %228 ], [ %240, %234 ]
%245 = icmp ult i64 %231, 3
br i1 %245, label %265, label %246
246: ; preds = %243, %246
%247 = phi i64 [ %263, %246 ], [ %244, %243 ]
%248 = getelementptr inbounds i32, i32* %138, i64 %247
%249 = load i32, i32* %248
%250 = getelementptr inbounds i32, i32* %140, i64 %247
store i32 %249, i32* %250
%251 = add nuw nsw i64 %247, 1
%252 = getelementptr inbounds i32, i32* %138, i64 %251
%253 = load i32, i32* %252
%254 = getelementptr inbounds i32, i32* %140, i64 %251
store i32 %253, i32* %254
%255 = add nuw nsw i64 %247, 2
%256 = getelementptr inbounds i32, i32* %138, i64 %255
%257 = load i32, i32* %256
%258 = getelementptr inbounds i32, i32* %140, i64 %255
store i32 %257, i32* %258
%259 = add nuw nsw i64 %247, 3
%260 = getelementptr inbounds i32, i32* %138, i64 %259
%261 = load i32, i32* %260
%262 = getelementptr inbounds i32, i32* %140, i64 %259
store i32 %261, i32* %262
%263 = add nuw nsw i64 %247, 4
%264 = icmp eq i64 %263, %141
br i1 %264, label %265, label %246
265: ; preds = %243, %246, %226, %4, %135
%266 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str, i64 0, i64 0))
%267 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.9, i64 0, i64 0))
%268 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.10, i64 0, i64 0))
%269 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.11, i64 0, i64 0))
%270 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.12, i64 0, i64 0))
%271 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.13, i64 0, i64 0))
%272 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @str.14, i64 0, i64 0))
%273 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.7, i64 0, i64 0))
%274 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0), i32* %5)
%275 = load i32, i32* %5
%276 = add i32 %275, -1
%277 = icmp ult i32 %276, 6
br i1 %277, label %278, label %300
278: ; preds = %265
%279 = sext i32 %276 to i64
%280 = getelementptr inbounds [6 x i32], [6 x i32]* @switch.table.gaussian_blur, i64 0, i64 %279
%281 = load i32, i32* %280
%282 = sext i32 %276 to i64
%283 = getelementptr inbounds [6 x i32], [6 x i32]* @switch.table.gaussian_blur.15, i64 0, i64 %282
%284 = load i32, i32* %283
%285 = sext i32 %276 to i64
%286 = getelementptr inbounds [6 x i32], [6 x i32]* @switch.table.gaussian_blur.16, i64 0, i64 %285
%287 = load i32, i32* %286
%288 = sext i32 %276 to i64
%289 = getelementptr inbounds [6 x i32], [6 x i32]* @switch.table.gaussian_blur.17, i64 0, i64 %288
%290 = load i32, i32* %289
%291 = sext i32 %276 to i64
%292 = getelementptr inbounds [6 x i32], [6 x i32]* @switch.table.gaussian_blur.18, i64 0, i64 %291
%293 = load i32, i32* %292
%294 = sext i32 %276 to i64
%295 = getelementptr inbounds [6 x i32], [6 x i32]* @switch.table.gaussian_blur.19, i64 0, i64 %294
%296 = load i32, i32* %295
%297 = sext i32 %276 to i64
%298 = getelementptr inbounds [6 x i32], [6 x i32]* @switch.table.gaussian_blur.20, i64 0, i64 %297
%299 = load i32, i32* %298
br label %300
300: ; preds = %265, %278
%301 = phi i32 [ %281, %278 ], [ 15, %265 ]
%302 = phi i32 [ %284, %278 ], [ 12, %265 ]
%303 = phi i32 [ %287, %278 ], [ 9, %265 ]
%304 = phi i32 [ %290, %278 ], [ 5, %265 ]
%305 = phi i32 [ %293, %278 ], [ 4, %265 ]
%306 = phi i32 [ %296, %278 ], [ 2, %265 ]
%307 = phi i32 [ %299, %278 ], [ 159, %265 ]
%308 = add i32 %1, -2
%309 = icmp sgt i32 %1, 4
br i1 %309, label %310, label %335
310: ; preds = %300
%311 = add i32 %0, -2
%312 = icmp sgt i32 %0, 4
%313 = zext i32 %308 to i64
%314 = zext i32 %311 to i64
%315 = add nuw nsw i64 %314, 2
%316 = add nsw i64 %314, -2
%317 = icmp ult i64 %316, 4
%318 = and i64 %316, -4
%319 = or i64 %318, 2
%320 = insertelement <4 x i32> poison, i32 %301, i64 0
%321 = shufflevector <4 x i32> %320, <4 x i32> poison, <4 x i32> zeroinitializer
%322 = insertelement <4 x i32> poison, i32 %305, i64 0
%323 = shufflevector <4 x i32> %322, <4 x i32> poison, <4 x i32> zeroinitializer
%324 = insertelement <4 x i32> poison, i32 %302, i64 0
%325 = shufflevector <4 x i32> %324, <4 x i32> poison, <4 x i32> zeroinitializer
%326 = insertelement <4 x i32> poison, i32 %304, i64 0
%327 = shufflevector <4 x i32> %326, <4 x i32> poison, <4 x i32> zeroinitializer
%328 = insertelement <4 x i32> poison, i32 %303, i64 0
%329 = shufflevector <4 x i32> %328, <4 x i32> poison, <4 x i32> zeroinitializer
%330 = insertelement <4 x i32> poison, i32 %306, i64 0
%331 = shufflevector <4 x i32> %330, <4 x i32> poison, <4 x i32> zeroinitializer
%332 = insertelement <4 x i32> poison, i32 %307, i64 0
%333 = shufflevector <4 x i32> %332, <4 x i32> poison, <4 x i32> zeroinitializer
%334 = icmp eq i64 %316, %318
br label %355
335: ; preds = %617, %300
%336 = phi i32 [ 2, %300 ], [ %308, %617 ]
%337 = icmp slt i32 %336, %1
br i1 %337, label %338, label %750
338: ; preds = %335
%339 = zext i32 %336 to i64
%340 = zext i32 %1 to i64
%341 = zext i32 %0 to i64
%342 = and i64 %341, 4294967288
%343 = add nsw i64 %342, -8
%344 = lshr exact i64 %343, 3
%345 = add nuw nsw i64 %344, 1
%346 = icmp ult i32 %0, 8
%347 = and i64 %341, 4294967288
%348 = and i64 %345, 3
%349 = icmp ult i64 %343, 24
%350 = and i64 %345, 4611686018427387900
%351 = icmp eq i64 %348, 0
%352 = icmp eq i64 %347, %341
%353 = and i64 %341, 3
%354 = icmp eq i64 %353, 0
br label %630
355: ; preds = %310, %617
%356 = phi i64 [ 2, %310 ], [ %618, %617 ]
%357 = getelementptr inbounds i32*, i32** %3, i64 %356
%358 = load i32*, i32** %357
%359 = load i32, i32* %358
%360 = getelementptr inbounds i32*, i32** %2, i64 %356
%361 = load i32*, i32** %360
store i32 %359, i32* %361
%362 = getelementptr inbounds i32, i32* %358, i64 1
%363 = load i32, i32* %362
%364 = getelementptr inbounds i32, i32* %361, i64 1
store i32 %363, i32* %364
br i1 %312, label %367, label %365
365: ; preds = %355
%366 = add nuw nsw i64 %356, 1
br label %617
367: ; preds = %355
%368 = add nsw i64 %356, -2
%369 = getelementptr inbounds i32*, i32** %3, i64 %368
%370 = load i32*, i32** %369
%371 = add nsw i64 %356, -1
%372 = getelementptr inbounds i32*, i32** %3, i64 %371
%373 = load i32*, i32** %372
%374 = add nuw nsw i64 %356, 1
%375 = getelementptr inbounds i32*, i32** %3, i64 %374
%376 = load i32*, i32** %375
%377 = add i64 %356, 2
%378 = and i64 %377, 4294967295
%379 = getelementptr inbounds i32*, i32** %3, i64 %378
%380 = load i32*, i32** %379
br i1 %317, label %525, label %381
381: ; preds = %367
%382 = getelementptr i32, i32* %361, i64 2
%383 = getelementptr i32, i32* %361, i64 %314
%384 = getelementptr i32, i32* %370, i64 %315
%385 = getelementptr i32, i32* %373, i64 %315
%386 = getelementptr i32, i32* %358, i64 %315
%387 = getelementptr i32, i32* %376, i64 %315
%388 = getelementptr i32, i32* %380, i64 %315
%389 = icmp ult i32* %382, %384
%390 = icmp ult i32* %370, %383
%391 = and i1 %389, %390
%392 = icmp ult i32* %382, %385
%393 = icmp ult i32* %373, %383
%394 = and i1 %392, %393
%395 = or i1 %391, %394
%396 = icmp ult i32* %382, %386
%397 = icmp ult i32* %358, %383
%398 = and i1 %396, %397
%399 = or i1 %395, %398
%400 = icmp ult i32* %382, %387
%401 = icmp ult i32* %376, %383
%402 = and i1 %400, %401
%403 = or i1 %399, %402
%404 = icmp ult i32* %382, %388
%405 = icmp ult i32* %380, %383
%406 = and i1 %404, %405
%407 = or i1 %403, %406
br i1 %407, label %525, label %408
408: ; preds = %381, %408
%409 = phi i64 [ %522, %408 ], [ 0, %381 ]
%410 = or i64 %409, 2
%411 = getelementptr inbounds i32, i32* %370, i64 %409
%412 = bitcast i32* %411 to <4 x i32>*
%413 = load <4 x i32>, <4 x i32>* %412
%414 = getelementptr inbounds i32, i32* %373, i64 %409
%415 = bitcast i32* %414 to <4 x i32>*
%416 = load <4 x i32>, <4 x i32>* %415
%417 = getelementptr inbounds i32, i32* %358, i64 %409
%418 = bitcast i32* %417 to <4 x i32>*
%419 = load <4 x i32>, <4 x i32>* %418
%420 = getelementptr inbounds i32, i32* %376, i64 %409
%421 = bitcast i32* %420 to <4 x i32>*
%422 = load <4 x i32>, <4 x i32>* %421
%423 = getelementptr inbounds i32, i32* %380, i64 %409
%424 = bitcast i32* %423 to <4 x i32>*
%425 = load <4 x i32>, <4 x i32>* %424
%426 = or i64 %409, 1
%427 = getelementptr inbounds i32, i32* %370, i64 %426
%428 = bitcast i32* %427 to <4 x i32>*
%429 = load <4 x i32>, <4 x i32>* %428
%430 = getelementptr inbounds i32, i32* %373, i64 %426
%431 = bitcast i32* %430 to <4 x i32>*
%432 = load <4 x i32>, <4 x i32>* %431
%433 = getelementptr inbounds i32, i32* %358, i64 %426
%434 = bitcast i32* %433 to <4 x i32>*
%435 = load <4 x i32>, <4 x i32>* %434
%436 = getelementptr inbounds i32, i32* %376, i64 %426
%437 = bitcast i32* %436 to <4 x i32>*
%438 = load <4 x i32>, <4 x i32>* %437
%439 = getelementptr inbounds i32, i32* %380, i64 %426
%440 = bitcast i32* %439 to <4 x i32>*
%441 = load <4 x i32>, <4 x i32>* %440
%442 = getelementptr inbounds i32, i32* %370, i64 %410
%443 = bitcast i32* %442 to <4 x i32>*
%444 = load <4 x i32>, <4 x i32>* %443
%445 = getelementptr inbounds i32, i32* %373, i64 %410
%446 = bitcast i32* %445 to <4 x i32>*
%447 = load <4 x i32>, <4 x i32>* %446
%448 = getelementptr inbounds i32, i32* %358, i64 %410
%449 = bitcast i32* %448 to <4 x i32>*
%450 = load <4 x i32>, <4 x i32>* %449
%451 = getelementptr inbounds i32, i32* %376, i64 %410
%452 = bitcast i32* %451 to <4 x i32>*
%453 = load <4 x i32>, <4 x i32>* %452
%454 = getelementptr inbounds i32, i32* %380, i64 %410
%455 = bitcast i32* %454 to <4 x i32>*
%456 = load <4 x i32>, <4 x i32>* %455
%457 = or i64 %409, 3
%458 = getelementptr inbounds i32, i32* %370, i64 %457
%459 = bitcast i32* %458 to <4 x i32>*
%460 = load <4 x i32>, <4 x i32>* %459
%461 = getelementptr inbounds i32, i32* %373, i64 %457
%462 = bitcast i32* %461 to <4 x i32>*
%463 = load <4 x i32>, <4 x i32>* %462
%464 = getelementptr inbounds i32, i32* %358, i64 %457
%465 = bitcast i32* %464 to <4 x i32>*
%466 = load <4 x i32>, <4 x i32>* %465
%467 = getelementptr inbounds i32, i32* %376, i64 %457
%468 = bitcast i32* %467 to <4 x i32>*
%469 = load <4 x i32>, <4 x i32>* %468
%470 = getelementptr inbounds i32, i32* %380, i64 %457
%471 = bitcast i32* %470 to <4 x i32>*
%472 = load <4 x i32>, <4 x i32>* %471
%473 = add i64 %409, 4
%474 = getelementptr inbounds i32, i32* %370, i64 %473
%475 = bitcast i32* %474 to <4 x i32>*
%476 = load <4 x i32>, <4 x i32>* %475
%477 = getelementptr inbounds i32, i32* %373, i64 %473
%478 = bitcast i32* %477 to <4 x i32>*
%479 = load <4 x i32>, <4 x i32>* %478
%480 = getelementptr inbounds i32, i32* %358, i64 %473
%481 = bitcast i32* %480 to <4 x i32>*
%482 = load <4 x i32>, <4 x i32>* %481
%483 = getelementptr inbounds i32, i32* %376, i64 %473
%484 = bitcast i32* %483 to <4 x i32>*
%485 = load <4 x i32>, <4 x i32>* %484
%486 = getelementptr inbounds i32, i32* %380, i64 %473
%487 = bitcast i32* %486 to <4 x i32>*
%488 = load <4 x i32>, <4 x i32>* %487
%489 = mul <4 x i32> %450, %321
%490 = add <4 x i32> %441, %429
%491 = add <4 x i32> %490, %460
%492 = add <4 x i32> %491, %472
%493 = add <4 x i32> %492, %416
%494 = add <4 x i32> %493, %422
%495 = add <4 x i32> %494, %479
%496 = add <4 x i32> %495, %485
%497 = mul <4 x i32> %496, %323
%498 = add <4 x i32> %453, %447
%499 = add <4 x i32> %498, %435
%500 = add <4 x i32> %499, %466
%501 = mul <4 x i32> %500, %325
%502 = add <4 x i32> %456, %444
%503 = add <4 x i32> %502, %419
%504 = add <4 x i32> %503, %482
%505 = mul <4 x i32> %504, %327
%506 = add <4 x i32> %438, %432
%507 = add <4 x i32> %506, %463
%508 = add <4 x i32> %507, %469
%509 = mul <4 x i32> %508, %329
%510 = add <4 x i32> %425, %413
%511 = add <4 x i32> %510, %476
%512 = add <4 x i32> %511, %488
%513 = mul <4 x i32> %512, %331
%514 = add <4 x i32> %509, %513
%515 = add <4 x i32> %514, %489
%516 = add <4 x i32> %515, %497
%517 = add <4 x i32> %516, %501
%518 = add <4 x i32> %517, %505
%519 = udiv <4 x i32> %518, %333
%520 = getelementptr inbounds i32, i32* %361, i64 %410
%521 = bitcast i32* %520 to <4 x i32>*
store <4 x i32> %519, <4 x i32>* %521
%522 = add nuw i64 %409, 4
%523 = icmp eq i64 %522, %318
br i1 %523, label %524, label %408
524: ; preds = %408
br i1 %334, label %617, label %525
525: ; preds = %381, %367, %524
%526 = phi i64 [ 2, %381 ], [ 2, %367 ], [ %319, %524 ]
br label %527
527: ; preds = %525, %527
%528 = phi i64 [ %615, %527 ], [ %526, %525 ]
%529 = add nsw i64 %528, -2
%530 = getelementptr inbounds i32, i32* %370, i64 %529
%531 = load i32, i32* %530
%532 = getelementptr inbounds i32, i32* %373, i64 %529
%533 = load i32, i32* %532
%534 = getelementptr inbounds i32, i32* %358, i64 %529
%535 = load i32, i32* %534
%536 = getelementptr inbounds i32, i32* %376, i64 %529
%537 = load i32, i32* %536
%538 = getelementptr inbounds i32, i32* %380, i64 %529
%539 = load i32, i32* %538
%540 = add nsw i64 %528, -1
%541 = getelementptr inbounds i32, i32* %370, i64 %540
%542 = load i32, i32* %541
%543 = getelementptr inbounds i32, i32* %373, i64 %540
%544 = load i32, i32* %543
%545 = getelementptr inbounds i32, i32* %358, i64 %540
%546 = load i32, i32* %545
%547 = getelementptr inbounds i32, i32* %376, i64 %540
%548 = load i32, i32* %547
%549 = getelementptr inbounds i32, i32* %380, i64 %540
%550 = load i32, i32* %549
%551 = getelementptr inbounds i32, i32* %370, i64 %528
%552 = load i32, i32* %551
%553 = getelementptr inbounds i32, i32* %373, i64 %528
%554 = load i32, i32* %553
%555 = getelementptr inbounds i32, i32* %358, i64 %528
%556 = load i32, i32* %555
%557 = getelementptr inbounds i32, i32* %376, i64 %528
%558 = load i32, i32* %557
%559 = getelementptr inbounds i32, i32* %380, i64 %528
%560 = load i32, i32* %559
%561 = add nuw nsw i64 %528, 1
%562 = getelementptr inbounds i32, i32* %370, i64 %561
%563 = load i32, i32* %562
%564 = getelementptr inbounds i32, i32* %373, i64 %561
%565 = load i32, i32* %564
%566 = getelementptr inbounds i32, i32* %358, i64 %561
%567 = load i32, i32* %566
%568 = getelementptr inbounds i32, i32* %376, i64 %561
%569 = load i32, i32* %568
%570 = getelementptr inbounds i32, i32* %380, i64 %561
%571 = load i32, i32* %570
%572 = add nuw nsw i64 %528, 2
%573 = getelementptr inbounds i32, i32* %370, i64 %572
%574 = load i32, i32* %573
%575 = getelementptr inbounds i32, i32* %373, i64 %572
%576 = load i32, i32* %575
%577 = getelementptr inbounds i32, i32* %358, i64 %572
%578 = load i32, i32* %577
%579 = getelementptr inbounds i32, i32* %376, i64 %572
%580 = load i32, i32* %579
%581 = getelementptr inbounds i32, i32* %380, i64 %572
%582 = load i32, i32* %581
%583 = mul i32 %556, %301
%584 = add i32 %550, %542
%585 = add i32 %584, %563
%586 = add i32 %585, %571
%587 = add i32 %586, %533
%588 = add i32 %587, %537
%589 = add i32 %588, %576
%590 = add i32 %589, %580
%591 = mul i32 %590, %305
%592 = add i32 %558, %554
%593 = add i32 %592, %546
%594 = add i32 %593, %567
%595 = mul i32 %594, %302
%596 = add i32 %560, %552
%597 = add i32 %596, %535
%598 = add i32 %597, %578
%599 = mul i32 %598, %304
%600 = add i32 %548, %544
%601 = add i32 %600, %565
%602 = add i32 %601, %569
%603 = mul i32 %602, %303
%604 = add i32 %539, %531
%605 = add i32 %604, %574
%606 = add i32 %605, %582
%607 = mul i32 %606, %306
%608 = add i32 %603, %607
%609 = add i32 %608, %583
%610 = add i32 %609, %591
%611 = add i32 %610, %595
%612 = add i32 %611, %599
%613 = udiv i32 %612, %307
%614 = getelementptr inbounds i32, i32* %361, i64 %528
store i32 %613, i32* %614
%615 = add nuw nsw i64 %528, 1
%616 = icmp eq i64 %615, %314
br i1 %616, label %617, label %527
617: ; preds = %527, %524, %365
%618 = phi i64 [ %366, %365 ], [ %374, %524 ], [ %374, %527 ]
%619 = phi i32 [ 2, %365 ], [ %311, %524 ], [ %311, %527 ]
%620 = zext i32 %619 to i64
%621 = getelementptr inbounds i32, i32* %358, i64 %620
%622 = load i32, i32* %621
%623 = getelementptr inbounds i32, i32* %361, i64 %620
store i32 %622, i32* %623
%624 = add nuw nsw i32 %619, 1
%625 = zext i32 %624 to i64
%626 = getelementptr inbounds i32, i32* %358, i64 %625
%627 = load i32, i32* %626
%628 = getelementptr inbounds i32, i32* %361, i64 %625
store i32 %627, i32* %628
%629 = icmp eq i64 %618, %313
br i1 %629, label %335, label %355
630: ; preds = %338, %747
%631 = phi i64 [ %339, %338 ], [ %748, %747 ]
br i1 %7, label %632, label %747
632: ; preds = %630
%633 = getelementptr inbounds i32*, i32** %3, i64 %631
%634 = load i32*, i32** %633
%635 = getelementptr inbounds i32*, i32** %2, i64 %631
%636 = load i32*, i32** %635
br i1 %346, label %712, label %637
637: ; preds = %632
%638 = getelementptr i32, i32* %636, i64 %341
%639 = getelementptr i32, i32* %634, i64 %341
%640 = icmp ult i32* %636, %639
%641 = icmp ult i32* %634, %638
%642 = and i1 %640, %641
br i1 %642, label %712, label %643
643: ; preds = %637
br i1 %349, label %693, label %644
644: ; preds = %643, %644
%645 = phi i64 [ %690, %644 ], [ 0, %643 ]
%646 = phi i64 [ %691, %644 ], [ 0, %643 ]
%647 = getelementptr inbounds i32, i32* %634, i64 %645
%648 = bitcast i32* %647 to <4 x i32>*
%649 = load <4 x i32>, <4 x i32>* %648
%650 = getelementptr inbounds i32, i32* %647, i64 4
%651 = bitcast i32* %650 to <4 x i32>*
%652 = load <4 x i32>, <4 x i32>* %651
%653 = getelementptr inbounds i32, i32* %636, i64 %645
%654 = bitcast i32* %653 to <4 x i32>*
store <4 x i32> %649, <4 x i32>* %654
%655 = getelementptr inbounds i32, i32* %653, i64 4
%656 = bitcast i32* %655 to <4 x i32>*
store <4 x i32> %652, <4 x i32>* %656
%657 = or i64 %645, 8
%658 = getelementptr inbounds i32, i32* %634, i64 %657
%659 = bitcast i32* %658 to <4 x i32>*
%660 = load <4 x i32>, <4 x i32>* %659
%661 = getelementptr inbounds i32, i32* %658, i64 4
%662 = bitcast i32* %661 to <4 x i32>*
%663 = load <4 x i32>, <4 x i32>* %662
%664 = getelementptr inbounds i32, i32* %636, i64 %657
%665 = bitcast i32* %664 to <4 x i32>*
store <4 x i32> %660, <4 x i32>* %665
%666 = getelementptr inbounds i32, i32* %664, i64 4
%667 = bitcast i32* %666 to <4 x i32>*
store <4 x i32> %663, <4 x i32>* %667
%668 = or i64 %645, 16
%669 = getelementptr inbounds i32, i32* %634, i64 %668
%670 = bitcast i32* %669 to <4 x i32>*
%671 = load <4 x i32>, <4 x i32>* %670
%672 = getelementptr inbounds i32, i32* %669, i64 4
%673 = bitcast i32* %672 to <4 x i32>*
%674 = load <4 x i32>, <4 x i32>* %673
%675 = getelementptr inbounds i32, i32* %636, i64 %668
%676 = bitcast i32* %675 to <4 x i32>*
store <4 x i32> %671, <4 x i32>* %676
%677 = getelementptr inbounds i32, i32* %675, i64 4
%678 = bitcast i32* %677 to <4 x i32>*
store <4 x i32> %674, <4 x i32>* %678
%679 = or i64 %645, 24
%680 = getelementptr inbounds i32, i32* %634, i64 %679
%681 = bitcast i32* %680 to <4 x i32>*
%682 = load <4 x i32>, <4 x i32>* %681
%683 = getelementptr inbounds i32, i32* %680, i64 4
%684 = bitcast i32* %683 to <4 x i32>*
%685 = load <4 x i32>, <4 x i32>* %684
%686 = getelementptr inbounds i32, i32* %636, i64 %679
%687 = bitcast i32* %686 to <4 x i32>*
store <4 x i32> %682, <4 x i32>* %687
%688 = getelementptr inbounds i32, i32* %686, i64 4
%689 = bitcast i32* %688 to <4 x i32>*
store <4 x i32> %685, <4 x i32>* %689
%690 = add nuw i64 %645, 32
%691 = add i64 %646, 4
%692 = icmp eq i64 %691, %350
br i1 %692, label %693, label %644
693: ; preds = %644, %643
%694 = phi i64 [ 0, %643 ], [ %690, %644 ]
br i1 %351, label %711, label %695
695: ; preds = %693, %695
%696 = phi i64 [ %708, %695 ], [ %694, %693 ]
%697 = phi i64 [ %709, %695 ], [ 0, %693 ]
%698 = getelementptr inbounds i32, i32* %634, i64 %696
%699 = bitcast i32* %698 to <4 x i32>*
%700 = load <4 x i32>, <4 x i32>* %699
%701 = getelementptr inbounds i32, i32* %698, i64 4
%702 = bitcast i32* %701 to <4 x i32>*
%703 = load <4 x i32>, <4 x i32>* %702
%704 = getelementptr inbounds i32, i32* %636, i64 %696
%705 = bitcast i32* %704 to <4 x i32>*
store <4 x i32> %700, <4 x i32>* %705
%706 = getelementptr inbounds i32, i32* %704, i64 4
%707 = bitcast i32* %706 to <4 x i32>*
store <4 x i32> %703, <4 x i32>* %707
%708 = add nuw i64 %696, 8
%709 = add i64 %697, 1
%710 = icmp eq i64 %709, %348
br i1 %710, label %711, label %695
711: ; preds = %695, %693
br i1 %352, label %747, label %712
712: ; preds = %637, %632, %711
%713 = phi i64 [ 0, %637 ], [ 0, %632 ], [ %347, %711 ]
%714 = xor i64 %713, -1
%715 = add nsw i64 %714, %341
br i1 %354, label %725, label %716
716: ; preds = %712, %716
%717 = phi i64 [ %722, %716 ], [ %713, %712 ]
%718 = phi i64 [ %723, %716 ], [ 0, %712 ]
%719 = getelementptr inbounds i32, i32* %634, i64 %717
%720 = load i32, i32* %719
%721 = getelementptr inbounds i32, i32* %636, i64 %717
store i32 %720, i32* %721
%722 = add nuw nsw i64 %717, 1
%723 = add i64 %718, 1
%724 = icmp eq i64 %723, %353
br i1 %724, label %725, label %716
725: ; preds = %716, %712
%726 = phi i64 [ %713, %712 ], [ %722, %716 ]
%727 = icmp ult i64 %715, 3
br i1 %727, label %747, label %728
728: ; preds = %725, %728
%729 = phi i64 [ %745, %728 ], [ %726, %725 ]
%730 = getelementptr inbounds i32, i32* %634, i64 %729
%731 = load i32, i32* %730
%732 = getelementptr inbounds i32, i32* %636, i64 %729
store i32 %731, i32* %732
%733 = add nuw nsw i64 %729, 1
%734 = getelementptr inbounds i32, i32* %634, i64 %733
%735 = load i32, i32* %734
%736 = getelementptr inbounds i32, i32* %636, i64 %733
store i32 %735, i32* %736
%737 = add nuw nsw i64 %729, 2
%738 = getelementptr inbounds i32, i32* %634, i64 %737
%739 = load i32, i32* %738
%740 = getelementptr inbounds i32, i32* %636, i64 %737
store i32 %739, i32* %740
%741 = add nuw nsw i64 %729, 3
%742 = getelementptr inbounds i32, i32* %634, i64 %741
%743 = load i32, i32* %742
%744 = getelementptr inbounds i32, i32* %636, i64 %741
store i32 %743, i32* %744
%745 = add nuw nsw i64 %729, 4
%746 = icmp eq i64 %745, %341
br i1 %746, label %747, label %728
747: ; preds = %725, %728, %711, %630
%748 = add nuw nsw i64 %631, 1
%749 = icmp eq i64 %748, %340
br i1 %749, label %750, label %630
750: ; preds = %747, %335
ret void
}