void marr_aux(double s, int *image, int width, int height, int depth) {
  int gaussian_width;
  int i, j, d, n;
  float *lgau, *smx;
  gaussian_width = 3.35 * s + 0.33;
  n = gaussian_width + gaussian_width + 1;
  lgau = (float *)malloc(n * n * sizeof(float));
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      float dist = distance((float)i, (float)j, (float)gaussian_width,
                            (float)gaussian_width);
      lgau[((n) * (j) + (i) + (n) * (n) * (0))] = LoG(dist, (float)s);
    }
  }
  smx = (float *)malloc(height * width * depth * sizeof(float));
  marr_convolution(image, lgau, n, n, smx, height, width, depth);
  zero_cross(smx, image, width, height, depth);
  for (d = 0; d < depth; d++) {
    for (i = 0; i < height; i++) {
      image[((height) * (0) + (i) + (width) * (height) * (d))] = 0;
      image[((height) * (width - 1) + (i) + (width) * (height) * (d))] = 0;
    }
    for (i = 0; i < width; i++) {
      image[((height) * (i) + (0) + (width) * (height) * (d))] = 0;
      image[((height) * (i) + (height - 1) + (width) * (height) * (d))] = 0;
    }
  }
  free(smx);
  free(lgau);
}


x86 assembly (clang, -O0):
<marr_aux>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xe79(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe75(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
add    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
imul   -0x30(%rbp),%eax
movslq %eax,%rdi
shl    $0x2,%rdi
call   1050 <malloc@plt>
mov    %rax,-0x38(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    127f <marr_aux+0x11f>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    126c <marr_aux+0x10c>
cvtsi2ssl -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
cvtsi2ssl -0x28(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
cvtsi2ssl -0x20(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
cvtsi2ssl -0x20(%rbp),%xmm3
cvtss2sd %xmm3,%xmm3
mov    $0x4,%al
call   1080 <distance@plt>
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  -0x8(%rbp),%xmm1
cvtsd2ss %xmm1,%xmm1
cvtss2sd %xmm1,%xmm1
mov    $0x2,%al
call   1070 <LoG@plt>
cvtsi2ss %eax,%xmm0
mov    -0x38(%rbp),%rax
mov    -0x30(%rbp),%ecx
imul   -0x28(%rbp),%ecx
add    -0x24(%rbp),%ecx
mov    -0x30(%rbp),%edx
imul   -0x30(%rbp),%edx
imul   $0x0,%edx,%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    11db <marr_aux+0x7b>
jmp    1271 <marr_aux+0x111>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11c8 <marr_aux+0x68>
mov    -0x18(%rbp),%eax
imul   -0x14(%rbp),%eax
imul   -0x1c(%rbp),%eax
movslq %eax,%rdi
shl    $0x2,%rdi
call   1050 <malloc@plt>
mov    %rax,-0x40(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x38(%rbp),%rsi
mov    -0x30(%rbp),%edx
mov    -0x30(%rbp),%ecx
mov    -0x40(%rbp),%r8
mov    -0x18(%rbp),%r9d
mov    -0x14(%rbp),%r10d
mov    -0x1c(%rbp),%eax
mov    %r10d,(%rsp)
mov    %eax,0x8(%rsp)
mov    $0x0,%al
call   1040 <marr_convolution@plt>
mov    -0x40(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    -0x18(%rbp),%ecx
mov    -0x1c(%rbp),%r8d
mov    $0x0,%al
call   1060 <zero_cross@plt>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    13e2 <marr_aux+0x282>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    135f <marr_aux+0x1ff>
mov    -0x10(%rbp),%rax
imul   $0x0,-0x18(%rbp),%ecx
add    -0x24(%rbp),%ecx
mov    -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
imul   -0x2c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
imul   %edx,%ecx
add    -0x24(%rbp),%ecx
mov    -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
imul   -0x2c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    12f9 <marr_aux+0x199>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    13cf <marr_aux+0x26f>
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0x24(%rbp),%ecx
add    $0x0,%ecx
mov    -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
imul   -0x2c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
imul   -0x24(%rbp),%ecx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
add    %edx,%ecx
mov    -0x14(%rbp),%edx
imul   -0x18(%rbp),%edx
imul   -0x2c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1366 <marr_aux+0x206>
jmp    13d4 <marr_aux+0x274>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    12e6 <marr_aux+0x186>
mov    -0x40(%rbp),%rdi
call   1030 <free@plt>
mov    -0x38(%rbp),%rdi
call   1030 <free@plt>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<marr_aux>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x138,%rsp
movsd  0xe87(%rip),%xmm1
movsd  %xmm0,0x18(%rsp)
mulsd  %xmm0,%xmm1
addsd  0xe7d(%rip),%xmm1
cvttsd2si %xmm1,%ebx
mov    %rcx,0x50(%rsp)
mov    %rdx,0x8(%rsp)
mov    %rsi,0x20(%rsp)
mov    %rdi,0x48(%rsp)
lea    (%rbx,%rbx,1),%ebp
add    $0x1,%ebp
mov    %ebp,%edi
imul   %edi,%edi
shl    $0x2,%rdi
call   1050 <malloc@plt>
mov    %rax,0x58(%rsp)
mov    %ebp,0x4(%rsp)
test   %ebp,%ebp
jle    1299 <marr_aux+0x139>
xorps  %xmm0,%xmm0
cvtsi2ss %ebx,%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0x18(%rsp),%xmm0
cvtsd2ss %xmm0,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x28(%rsp)
mov    0x4(%rsp),%ebp
lea    0x0(,%rbp,4),%rbx
xor    %r13d,%r13d
mov    0x58(%rsp),%r12
movsd  %xmm2,0x10(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
xorps  %xmm0,%xmm0
cvtsi2ss %r13d,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x18(%rsp)
mov    %r12,%r14
xor    %r15d,%r15d
nopl   0x0(%rax,%rax,1)
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm0,%xmm1
movsd  0x18(%rsp),%xmm0
movsd  0x10(%rsp),%xmm3
mov    $0x4,%al
call   1080 <distance@plt>
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x28(%rsp),%xmm1
mov    $0x2,%al
call   1070 <LoG@plt>
movsd  0x10(%rsp),%xmm2
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  %xmm0,(%r14)
add    $0x1,%r15
add    %rbx,%r14
cmp    %r15,%rbp
jne    1230 <marr_aux+0xd0>
add    $0x1,%r13
add    $0x4,%r12
cmp    %rbp,%r13
jne    1210 <marr_aux+0xb0>
mov    0x8(%rsp),%r15
mov    %r15d,%eax
mov    0x20(%rsp),%r14
imul   %r14d,%eax
mov    %eax,0x28(%rsp)
mov    0x50(%rsp),%r12
imul   %r12d,%eax
movslq %eax,%rdi
shl    $0x2,%rdi
call   1050 <malloc@plt>
mov    %rax,%rbx
mov    0x48(%rsp),%rbp
mov    %rbp,%rdi
mov    0x58(%rsp),%rsi
mov    0x4(%rsp),%ecx
mov    %ecx,%edx
mov    %rax,%r8
mov    %r15d,%r9d
xor    %eax,%eax
push   %r12
push   %r14
call   1040 <marr_convolution@plt>
add    $0x10,%rsp
mov    %rbx,0xb0(%rsp)
mov    %rbx,%rdi
mov    %rbp,%rsi
mov    %r14d,%edx
mov    %r15d,%ecx
mov    %r12d,%r8d
xor    %eax,%eax
call   1060 <zero_cross@plt>
test   %r12d,%r12d
jle    1986 <marr_aux+0x826>
mov    %rbp,%rbx
mov    0x20(%rsp),%r8
lea    -0x1(%r8),%r13d
mov    0x8(%rsp),%r10
imul   %r10d,%r13d
mov    %r12d,%edx
mov    %rdx,0x130(%rsp)
mov    %r10d,%r9d
mov    %r8d,%edi
mov    %r9d,%edx
and    $0xfffffff8,%edx
mov    %rdx,0xe0(%rsp)
add    $0xfffffffffffffff8,%rdx
mov    %rdx,0xd8(%rsp)
mov    %rdx,%rbp
shr    $0x3,%rbp
add    $0x1,%rbp
mov    %edi,%edx
and    $0xfffffff8,%edx
mov    %rdx,0xc8(%rsp)
add    $0xfffffffffffffff8,%rdx
mov    %rdx,0xc0(%rsp)
mov    %rdx,%rax
shr    $0x3,%rax
add    $0x1,%rax
mov    %rbp,%rdx
mov    %rbp,0xd0(%rsp)
and    $0xfffffffffffffffe,%rbp
mov    %rbp,0xa8(%rsp)
mov    %r9,%r14
neg    %r14
mov    %rax,%rbp
mov    %rax,0xb8(%rsp)
and    $0xfffffffffffffffe,%rax
mov    %rax,0xa0(%rsp)
mov    %rdi,%rax
neg    %rax
mov    %rax,0x118(%rsp)
mov    %r10d,%r11d
shl    $0x4,%r11d
movslq %r10d,%rcx
mov    %rcx,%rdx
shl    $0x5,%rdx
mov    %rcx,%rsi
shl    $0x6,%rsi
xorpd  %xmm0,%xmm0
movslq 0x28(%rsp),%rax
lea    -0x1(%rdi),%rbp
mov    %rbp,0x100(%rsp)
movslq %r8d,%rbp
mov    %rbp,0xf8(%rsp)
mov    %rdi,0x40(%rsp)
lea    (%rbx,%rdi,4),%rdi
mov    %rdi,0xf0(%rsp)
lea    -0x1(%r9),%rdi
mov    %r9,0x70(%rsp)
lea    (%rbx,%r9,4),%rbp
mov    %rbp,0xe8(%rsp)
mov    %rax,%r9
lea    0x30(%rbx),%r12
lea    0x0(,%rax,4),%rax
mov    %rax,0x128(%rsp)
mov    %r9d,%eax
mov    %rax,0x120(%rsp)
lea    -0x1(%r10,%r10,8),%eax
mov    %eax,0x34(%rsp)
lea    0x10(%rbx),%rax
mov    %rax,0x80(%rsp)
lea    (%r10,%r10,1),%r8d
lea    0x0(,%rcx,8),%r15
mov    %rcx,0x60(%rsp)
lea    0x0(,%rcx,4),%rax
mov    %rax,0x108(%rsp)
movl   $0xffffffff,0x4(%rsp)
ff
xor    %eax,%eax
mov    %rax,0x50(%rsp)
xor    %eax,%eax
mov    %rax,0x88(%rsp)
mov    %rdi,0x110(%rsp)
mov    %edi,%eax
mov    %edi,0x30(%rsp)
mov    %r13,0x68(%rsp)
mov    %rbx,%r10
xor    %ebp,%ebp
mov    %r11d,0x7c(%rsp)
mov    %rdx,0x98(%rsp)
mov    %rsi,0x90(%rsp)
mov    %r9,0x38(%rsp)
jmp    1522 <marr_aux+0x3c2>
nopl   0x0(%rax)
mov    0x18(%rsp),%rbp
add    $0x1,%rbp
add    0x120(%rsp),%r13
mov    0x128(%rsp),%rcx
add    %rcx,%r12
add    %rcx,%r10
mov    0x28(%rsp),%eax
add    %eax,0x34(%rsp)
add    %rcx,0x80(%rsp)
add    %eax,0x30(%rsp)
add    %eax,0x4(%rsp)
add    %r9,0x88(%rsp)
add    %rcx,0x50(%rsp)
cmp    0x130(%rsp),%rbp
je     1986 <marr_aux+0x826>
mov    %rbp,%rax
imul   %r9,%rax
mov    %rax,0x10(%rsp)
cmpl   $0x0,0x8(%rsp)
mov    %rbp,0x18(%rsp)
jle    15cd <marr_aux+0x46d>
cmpl   $0x8,0x8(%rsp)
jae    16d0 <marr_aux+0x570>
xor    %ecx,%ecx
mov    %rcx,%rax
testb  $0x1,0x70(%rsp)
je     1578 <marr_aux+0x418>
mov    0x10(%rsp),%rax
add    %rcx,%rax
movl   $0x0,(%rbx,%rax,4)
add    0x68(%rsp),%eax
cltq
movl   $0x0,(%rbx,%rax,4)
mov    %rcx,%rax
or     $0x1,%rax
not    %rcx
cmp    %r14,%rcx
je     15cd <marr_aux+0x46d>
lea    0x1(%rax),%rcx
add    %r13d,%eax
nopw   0x0(%rax,%rax,1)
movl   $0x0,-0x4(%r10,%rcx,4)
cltq
movl   $0x0,(%rbx,%rax,4)
movl   $0x0,(%r10,%rcx,4)
lea    (%rcx,%r13,1),%edi
movslq %edi,%rdi
movl   $0x0,(%rbx,%rdi,4)
lea    (%r14,%rcx,1),%rdi
add    $0x2,%rdi
add    $0x2,%rcx
add    $0x2,%eax
cmp    $0x1,%rdi
jne    1590 <marr_aux+0x430>
cmpl   $0x0,0x20(%rsp)
mov    0x10(%rsp),%rdi
jle    14d0 <marr_aux+0x370>
cmpl   $0x8,0x20(%rsp)
jae    1750 <marr_aux+0x5f0>
xor    %ecx,%ecx
mov    %rcx,%rax
testb  $0x1,0x40(%rsp)
je     1626 <marr_aux+0x4c6>
mov    %rcx,%rax
imul   0x60(%rsp),%rax
add    %rdi,%rax
mov    0x48(%rsp),%rsi
movl   $0x0,(%rsi,%rax,4)
mov    0x8(%rsp),%rdi
add    %edi,%eax
add    $0xffffffff,%eax
cltq
movl   $0x0,(%rsi,%rax,4)
mov    %rcx,%rax
or     $0x1,%rax
not    %rcx
cmp    0x118(%rsp),%rcx
mov    0x48(%rsp),%rbx
je     14d0 <marr_aux+0x370>
mov    0x40(%rsp),%rdi
sub    %rax,%rdi
lea    0x1(%rax),%ecx
mov    0x8(%rsp),%rbp
imul   %ebp,%ecx
mov    0x4(%rsp),%edx
add    %edx,%ecx
mov    0x60(%rsp),%rsi
imul   %rax,%rsi
add    0x88(%rsp),%rsi
lea    0x2(%rax),%r11d
imul   %ebp,%r11d
add    %edx,%r11d
add    $0x1,%rax
imul   0x108(%rsp),%rax
add    0x50(%rsp),%rax
mov    %rbx,%rbp
cs nopw 0x0(%rax,%rax,1)
movl   $0x0,0x0(%rbp,%rsi,4)
movslq %ecx,%rcx
movl   $0x0,(%rbx,%rcx,4)
movl   $0x0,0x0(%rbp,%rax,1)
movslq %r11d,%r11
movl   $0x0,(%rbx,%r11,4)
add    %r8d,%ecx
add    %r15,%rbp
add    %r8d,%r11d
add    $0xfffffffffffffffe,%rdi
jne    1690 <marr_aux+0x530>
jmp    14d0 <marr_aux+0x370>
nopl   0x0(%rax)
mov    0x28(%rsp),%eax
imul   %ebp,%eax
add    0x68(%rsp),%eax
mov    0x110(%rsp),%rdi
lea    (%rax,%rdi,1),%ecx
cmp    %eax,%ecx
jl     1549 <marr_aux+0x3e9>
mov    %rdi,%rcx
shr    $0x20,%rcx
mov    $0x0,%ecx
jne    154b <marr_aux+0x3eb>
mov    0x10(%rsp),%r9
lea    (%rbx,%r9,4),%rcx
cltq
mov    0xe8(%rsp),%rdi
lea    (%rdi,%rax,4),%rdi
cmp    %rdi,%rcx
jae    1858 <marr_aux+0x6f8>
mov    0x70(%rsp),%rcx
add    %r9,%rcx
lea    (%rbx,%rcx,4),%rcx
lea    (%rbx,%rax,4),%rax
cmp    %rcx,%rax
jae    1858 <marr_aux+0x6f8>
xor    %ecx,%ecx
mov    0x38(%rsp),%r9
jmp    154b <marr_aux+0x3eb>
cs nopw 0x0(%rax,%rax,1)
nop
cmpl   $0x1,0x8(%rsp)
jne    15e8 <marr_aux+0x488>
mov    0x18(%rsp),%rax
imul   0x20(%rsp),%eax
mov    0x100(%rsp),%rdx
lea    (%rax,%rdx,1),%ecx
cmp    %eax,%ecx
jl     15e8 <marr_aux+0x488>
mov    %rdx,%rcx
shr    $0x20,%rcx
mov    $0x0,%ecx
mov    0x48(%rsp),%rsi
jne    15ea <marr_aux+0x48a>
mov    0x18(%rsp),%rcx
imul   0xf8(%rsp),%rcx
lea    (%rsi,%rcx,4),%rbx
cltq
mov    0xf0(%rsp),%rdx
lea    (%rdx,%rax,4),%rbp
cmp    %rbp,%rbx
jae    17ca <marr_aux+0x66a>
add    0x40(%rsp),%rcx
lea    (%rsi,%rcx,4),%rcx
lea    (%rsi,%rax,4),%rax
cmp    %rcx,%rax
jb     15e8 <marr_aux+0x488>
cmpq   $0x0,0xc0(%rsp)
je     190d <marr_aux+0x7ad>
mov    0xa0(%rsp),%rcx
mov    0x30(%rsp),%eax
mov    %eax,%edi
mov    0x80(%rsp),%rbx
mov    0x34(%rsp),%eax
mov    %eax,%ebp
xor    %eax,%eax
mov    0x7c(%rsp),%edx
mov    0x98(%rsp),%r11
mov    0x90(%rsp),%r9
nopl   0x0(%rax,%rax,1)
movupd %xmm0,-0x10(%rbx)
movupd %xmm0,(%rbx)
movslq %edi,%rdi
movupd %xmm0,(%rsi,%rdi,4)
movupd %xmm0,0x10(%rsi,%rdi,4)
movupd %xmm0,-0x10(%rbx,%r11,1)
movupd %xmm0,(%rbx,%r11,1)
movslq %ebp,%rbp
movupd %xmm0,(%rsi,%rbp,4)
movupd %xmm0,0x10(%rsi,%rbp,4)
add    $0x10,%rax
add    %edx,%ebp
add    %r9,%rbx
add    %edx,%edi
add    $0xfffffffffffffffe,%rcx
jne    1810 <marr_aux+0x6b0>
jmp    190f <marr_aux+0x7af>
cmpq   $0x0,0xd8(%rsp)
je     196c <marr_aux+0x80c>
mov    0xa8(%rsp),%rcx
mov    %r13d,%edi
xor    %eax,%eax
mov    0x38(%rsp),%r9
nopl   0x0(%rax)
movupd %xmm0,-0x30(%r12,%rax,4)
movupd %xmm0,-0x20(%r12,%rax,4)
movslq %edi,%rdi
movupd %xmm0,(%rbx,%rdi,4)
movupd %xmm0,0x10(%rbx,%rdi,4)
movupd %xmm0,-0x10(%r12,%rax,4)
movupd %xmm0,(%r12,%rax,4)
lea    0x8(%rdi),%ebp
movslq %ebp,%rbp
movupd %xmm0,(%rbx,%rbp,4)
movupd %xmm0,0x10(%rbx,%rbp,4)
add    $0x10,%rax
add    $0x10,%edi
add    $0xfffffffffffffffe,%rcx
jne    1880 <marr_aux+0x720>
testb  $0x1,0xd0(%rsp)
01
je     18f2 <marr_aux+0x792>
add    0x10(%rsp),%rax
movupd %xmm0,(%rbx,%rax,4)
movupd %xmm0,0x10(%rbx,%rax,4)
add    0x68(%rsp),%eax
cltq
movupd %xmm0,(%rbx,%rax,4)
movupd %xmm0,0x10(%rbx,%rax,4)
mov    0xe0(%rsp),%rax
mov    %rax,%rcx
cmp    0x70(%rsp),%rax
jne    154b <marr_aux+0x3eb>
jmp    15cd <marr_aux+0x46d>
xor    %eax,%eax
testb  $0x1,0xb8(%rsp)
01
mov    0x10(%rsp),%rdi
je     1949 <marr_aux+0x7e9>
imul   0x60(%rsp),%rax
add    %rdi,%rax
movupd %xmm0,(%rsi,%rax,4)
movupd %xmm0,0x10(%rsi,%rax,4)
mov    0x8(%rsp),%rcx
add    %ecx,%eax
add    $0xffffffff,%eax
cltq
movupd %xmm0,(%rsi,%rax,4)
movupd %xmm0,0x10(%rsi,%rax,4)
mov    0xc8(%rsp),%rax
mov    %rax,%rcx
cmp    0x40(%rsp),%rax
mov    %rsi,%rbx
mov    0x38(%rsp),%r9
je     14d0 <marr_aux+0x370>
jmp    15ea <marr_aux+0x48a>
xor    %eax,%eax
mov    0x38(%rsp),%r9
testb  $0x1,0xd0(%rsp)
01
jne    18d1 <marr_aux+0x771>
jmp    18f2 <marr_aux+0x792>
mov    0xb0(%rsp),%rdi
call   1030 <free@plt>
mov    0x58(%rsp),%rdi
add    $0x138,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <free@plt>

LLVM IR (-O0):
define void @marr_aux(double %0, i32* %1, i32 %2, i32 %3, i32 %4) {
%6 = alloca double
%7 = alloca i32*
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca float*
%17 = alloca float*
%18 = alloca float
store double %0, double* %6
store i32* %1, i32** %7
store i32 %2, i32* %8
store i32 %3, i32* %9
store i32 %4, i32* %10
%19 = load double, double* %6
%20 = call double @llvm.fmuladd.f64(double 3.350000e+00, double %19, double 3.300000e-01)
%21 = fptosi double %20 to i32
store i32 %21, i32* %11
%22 = load i32, i32* %11
%23 = load i32, i32* %11
%24 = add nsw i32 %22, %23
%25 = add nsw i32 %24, 1
store i32 %25, i32* %15
%26 = load i32, i32* %15
%27 = load i32, i32* %15
%28 = mul nsw i32 %26, %27
%29 = sext i32 %28 to i64
%30 = mul i64 %29, 4
%31 = call i8* @malloc(i64 %30)
%32 = bitcast i8* %31 to float*
store float* %32, float** %16
store i32 0, i32* %12
br label %33
33: ; preds = %81, %5
%34 = load i32, i32* %12
%35 = load i32, i32* %15
%36 = icmp slt i32 %34, %35
br i1 %36, label %37, label %84
37: ; preds = %33
store i32 0, i32* %13
br label %38
38: ; preds = %77, %37
%39 = load i32, i32* %13
%40 = load i32, i32* %15
%41 = icmp slt i32 %39, %40
br i1 %41, label %42, label %80
42: ; preds = %38
%43 = load i32, i32* %12
%44 = sitofp i32 %43 to float
%45 = fpext float %44 to double
%46 = load i32, i32* %13
%47 = sitofp i32 %46 to float
%48 = fpext float %47 to double
%49 = load i32, i32* %11
%50 = sitofp i32 %49 to float
%51 = fpext float %50 to double
%52 = load i32, i32* %11
%53 = sitofp i32 %52 to float
%54 = fpext float %53 to double
%55 = call i32 (double, double, double, double, ...) bitcast (i32 (...)* @distance to i32 (double, double, double, double, ...)*)(double %45, double %48, double %51, double %54)
%56 = sitofp i32 %55 to float
store float %56, float* %18
%57 = load float, float* %18
%58 = fpext float %57 to double
%59 = load double, double* %6
%60 = fptrunc double %59 to float
%61 = fpext float %60 to double
%62 = call i32 (double, double, ...) bitcast (i32 (...)* @LoG to i32 (double, double, ...)*)(double %58, double %61)
%63 = sitofp i32 %62 to float
%64 = load float*, float** %16
%65 = load i32, i32* %15
%66 = load i32, i32* %13
%67 = mul nsw i32 %65, %66
%68 = load i32, i32* %12
%69 = add nsw i32 %67, %68
%70 = load i32, i32* %15
%71 = load i32, i32* %15
%72 = mul nsw i32 %70, %71
%73 = mul nsw i32 %72, 0
%74 = add nsw i32 %69, %73
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds float, float* %64, i64 %75
store float %63, float* %76
br label %77
77: ; preds = %42
%78 = load i32, i32* %13
%79 = add nsw i32 %78, 1
store i32 %79, i32* %13
br label %38
80: ; preds = %38
br label %81
81: ; preds = %80
%82 = load i32, i32* %12
%83 = add nsw i32 %82, 1
store i32 %83, i32* %12
br label %33
84: ; preds = %33
%85 = load i32, i32* %9
%86 = load i32, i32* %8
%87 = mul nsw i32 %85, %86
%88 = load i32, i32* %10
%89 = mul nsw i32 %87, %88
%90 = sext i32 %89 to i64
%91 = mul i64 %90, 4
%92 = call i8* @malloc(i64 %91)
%93 = bitcast i8* %92 to float*
store float* %93, float** %17
%94 = load i32*, i32** %7
%95 = load float*, float** %16
%96 = load i32, i32* %15
%97 = load i32, i32* %15
%98 = load float*, float** %17
%99 = load i32, i32* %9
%100 = load i32, i32* %8
%101 = load i32, i32* %10
%102 = call i32 (i32*, float*, i32, i32, float*, i32, i32, i32, ...) bitcast (i32 (...)* @marr_convolution to i32 (i32*, float*, i32, i32, float*, i32, i32, i32, ...)*)(i32* %94, float* %95, i32 %96, i32 %97, float* %98, i32 %99, i32 %100, i32 %101)
%103 = load float*, float** %17
%104 = load i32*, i32** %7
%105 = load i32, i32* %8
%106 = load i32, i32* %9
%107 = load i32, i32* %10
%108 = call i32 (float*, i32*, i32, i32, i32, ...) bitcast (i32 (...)* @zero_cross to i32 (float*, i32*, i32, i32, i32, ...)*)(float* %103, i32* %104, i32 %105, i32 %106, i32 %107)
store i32 0, i32* %14
br label %109
109: ; preds = %188, %84
%110 = load i32, i32* %14
%111 = load i32, i32* %10
%112 = icmp slt i32 %110, %111
br i1 %112, label %113, label %191
113: ; preds = %109
store i32 0, i32* %12
br label %114
114: ; preds = %147, %113
%115 = load i32, i32* %12
%116 = load i32, i32* %9
%117 = icmp slt i32 %115, %116
br i1 %117, label %118, label %150
118: ; preds = %114
%119 = load i32*, i32** %7
%120 = load i32, i32* %9
%121 = mul nsw i32 %120, 0
%122 = load i32, i32* %12
%123 = add nsw i32 %121, %122
%124 = load i32, i32* %8
%125 = load i32, i32* %9
%126 = mul nsw i32 %124, %125
%127 = load i32, i32* %14
%128 = mul nsw i32 %126, %127
%129 = add nsw i32 %123, %128
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds i32, i32* %119, i64 %130
store i32 0, i32* %131
%132 = load i32*, i32** %7
%133 = load i32, i32* %9
%134 = load i32, i32* %8
%135 = sub nsw i32 %134, 1
%136 = mul nsw i32 %133, %135
%137 = load i32, i32* %12
%138 = add nsw i32 %136, %137
%139 = load i32, i32* %8
%140 = load i32, i32* %9
%141 = mul nsw i32 %139, %140
%142 = load i32, i32* %14
%143 = mul nsw i32 %141, %142
%144 = add nsw i32 %138, %143
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds i32, i32* %132, i64 %145
store i32 0, i32* %146
br label %147
147: ; preds = %118
%148 = load i32, i32* %12
%149 = add nsw i32 %148, 1
store i32 %149, i32* %12
br label %114
150: ; preds = %114
store i32 0, i32* %12
br label %151
151: ; preds = %184, %150
%152 = load i32, i32* %12
%153 = load i32, i32* %8
%154 = icmp slt i32 %152, %153
br i1 %154, label %155, label %187
155: ; preds = %151
%156 = load i32*, i32** %7
%157 = load i32, i32* %9
%158 = load i32, i32* %12
%159 = mul nsw i32 %157, %158
%160 = add nsw i32 %159, 0
%161 = load i32, i32* %8
%162 = load i32, i32* %9
%163 = mul nsw i32 %161, %162
%164 = load i32, i32* %14
%165 = mul nsw i32 %163, %164
%166 = add nsw i32 %160, %165
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds i32, i32* %156, i64 %167
store i32 0, i32* %168
%169 = load i32*, i32** %7
%170 = load i32, i32* %9
%171 = load i32, i32* %12
%172 = mul nsw i32 %170, %171
%173 = load i32, i32* %9
%174 = sub nsw i32 %173, 1
%175 = add nsw i32 %172, %174
%176 = load i32, i32* %8
%177 = load i32, i32* %9
%178 = mul nsw i32 %176, %177
%179 = load i32, i32* %14
%180 = mul nsw i32 %178, %179
%181 = add nsw i32 %175, %180
%182 = sext i32 %181 to i64
%183 = getelementptr inbounds i32, i32* %169, i64 %182
store i32 0, i32* %183
br label %184
184: ; preds = %155
%185 = load i32, i32* %12
%186 = add nsw i32 %185, 1
store i32 %186, i32* %12
br label %151
187: ; preds = %151
br label %188
188: ; preds = %187
%189 = load i32, i32* %14
%190 = add nsw i32 %189, 1
store i32 %190, i32* %14
br label %109
191: ; preds = %109
%192 = load float*, float** %17
%193 = bitcast float* %192 to i8*
%194 = load float*, float** %16
%195 = bitcast float* %194 to i8*
ret void
}

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