int *simple_update(int *profa, int *profb, int *newp, int *path) {
  int i, c;
  for (i = 64; i--;) {
    newp[i] = profa[i] + profb[i];
  }
  profa += 64;
  profb += 64;
  newp += 64;
  c = 1;
  while (path[c] != 3) {
    if (!path[c]) {
      for (i = 64; i--;) {
        newp[i] = profa[i] + profb[i];
      }
      profa += 64;
      profb += 64;
    }
    if (path[c] & 1) {
      for (i = 64; i--;) {
        newp[i] = profb[i];
      }
      profb += 64;
    }
    if (path[c] & 2) {
      for (i = 64; i--;) {
        newp[i] = profa[i];
      }
      profa += 64;
    }
    newp += 64;
    c++;
  }
  for (i = 64; i--;) {
    newp[i] = profa[i] + profb[i];
  }
  newp -= (path[0] + 1) * 64;
  return newp;
}


x86 assembly (clang, -O0):
<simple_update>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
movl   $0x40,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x24(%rbp)
cmp    $0x0,%eax
je     1155 <simple_update+0x55>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    111b <simple_update+0x1b>
mov    -0x8(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x8(%rbp)
mov    -0x10(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x18(%rbp)
movl   $0x1,-0x28(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x3,(%rax,%rcx,4)
je     12d9 <simple_update+0x1d9>
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1207 <simple_update+0x107>
movl   $0x40,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x24(%rbp)
cmp    $0x0,%eax
je     11eb <simple_update+0xeb>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    11b1 <simple_update+0xb1>
mov    -0x8(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x8(%rbp)
mov    -0x10(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1262 <simple_update+0x162>
movl   $0x40,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x24(%rbp)
cmp    $0x0,%eax
je     1254 <simple_update+0x154>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1225 <simple_update+0x125>
mov    -0x10(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     12bd <simple_update+0x1bd>
movl   $0x40,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x24(%rbp)
cmp    $0x0,%eax
je     12af <simple_update+0x1af>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1280 <simple_update+0x180>
mov    -0x8(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x8(%rbp)
mov    -0x18(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1186 <simple_update+0x86>
movl   $0x40,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x24(%rbp)
cmp    $0x0,%eax
je     131a <simple_update+0x21a>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    12e0 <simple_update+0x1e0>
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
shl    $0x6,%ecx
mov    -0x18(%rbp),%rax
movslq %ecx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<simple_update>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rcx,%r12
lea    0x100(%rdi),%r9
cmp    %rdx,%r9
seta   %r11b
lea    0x100(%rdx),%rbp
cmp    %rdi,%rbp
seta   %bl
lea    0x100(%rsi),%r8
cmp    %rdx,%r8
seta   %al
cmp    %rsi,%rbp
seta   %r10b
test   %bl,%r11b
jne    12c5 <simple_update+0x1c5>
and    %r10b,%al
jne    12c5 <simple_update+0x1c5>
movdqu 0xf0(%rdi),%xmm0
movdqu 0xf0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xf0(%rdx)
movdqu 0xe0(%rdi),%xmm0
movdqu 0xe0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xe0(%rdx)
movdqu 0xd0(%rdi),%xmm0
movdqu 0xd0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xd0(%rdx)
movdqu 0xc0(%rdi),%xmm0
movdqu 0xc0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xc0(%rdx)
movdqu 0xb0(%rdi),%xmm0
movdqu 0xb0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xb0(%rdx)
movdqu 0xa0(%rdi),%xmm0
movdqu 0xa0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xa0(%rdx)
movdqu 0x90(%rdi),%xmm0
movdqu 0x90(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x90(%rdx)
movdqu 0x80(%rdi),%xmm0
movdqu 0x80(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x80(%rdx)
movdqu 0x70(%rdi),%xmm0
movdqu 0x70(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x70(%rdx)
movdqu 0x60(%rdi),%xmm0
movdqu 0x60(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x60(%rdx)
movdqu 0x50(%rdi),%xmm0
movdqu 0x50(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x50(%rdx)
movdqu 0x40(%rdi),%xmm0
movdqu 0x40(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x40(%rdx)
movdqu 0x30(%rdi),%xmm0
movdqu 0x30(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x30(%rdx)
movdqu 0x20(%rdi),%xmm0
movdqu 0x20(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x20(%rdx)
movdqu 0x10(%rdi),%xmm0
movdqu 0x10(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x10(%rdx)
movdqu (%rdi),%xmm0
movdqu (%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,(%rdx)
jmp    132e <simple_update+0x22e>
xor    %eax,%eax
nopw   0x0(%rax,%rax,1)
mov    0xfc(%rsi,%rax,4),%ebp
add    0xfc(%rdi,%rax,4),%ebp
mov    %ebp,0xfc(%rdx,%rax,4)
mov    0xf8(%rsi,%rax,4),%ebp
add    0xf8(%rdi,%rax,4),%ebp
mov    %ebp,0xf8(%rdx,%rax,4)
mov    0xf4(%rsi,%rax,4),%ebp
add    0xf4(%rdi,%rax,4),%ebp
mov    %ebp,0xf4(%rdx,%rax,4)
mov    0xf0(%rsi,%rax,4),%ebp
add    0xf0(%rdi,%rax,4),%ebp
mov    %ebp,0xf0(%rdx,%rax,4)
add    $0xfffffffffffffffc,%rax
cmp    $0xffffffffffffffc0,%rax
jne    12d0 <simple_update+0x1d0>
mov    $0x1,%r11d
xor    %r10d,%r10d
mov    %rdx,%rsi
jmp    134e <simple_update+0x24e>
nopl   0x0(%rax)
mov    %rdi,%r9
add    $0x1,%r11
add    $0x1,%r10
mov    %rax,%rsi
mov    %r10,%rax
shl    $0x8,%rax
lea    (%rax,%rdx,1),%r15
add    $0x100,%r15
lea    (%rax,%rdx,1),%r14
add    $0x200,%r14
lea    0x100(%rsi),%rax
mov    (%r12,%r11,4),%ebp
test   %ebp,%ebp
je     1400 <simple_update+0x300>
cmp    $0x3,%ebp
je     188e <simple_update+0x78e>
mov    %r8,%rbx
mov    %r9,%rdi
test   $0x1,%bpl
je     1757 <simple_update+0x657>
lea    0x100(%rbx),%r8
cmp    %r8,%r15
jae    1600 <simple_update+0x500>
cmp    %r14,%rbx
jae    1600 <simple_update+0x500>
mov    $0x3f,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
mov    (%rbx,%rbp,4),%ecx
mov    %ecx,0x100(%rsi,%rbp,4)
mov    -0x4(%rbx,%rbp,4),%ecx
mov    %ecx,0xfc(%rsi,%rbp,4)
mov    -0x8(%rbx,%rbp,4),%ecx
mov    %ecx,0xf8(%rsi,%rbp,4)
mov    -0xc(%rbx,%rbp,4),%ecx
mov    %ecx,0xf4(%rsi,%rbp,4)
add    $0xfffffffffffffffc,%rbp
cmp    $0xffffffffffffffff,%rbp
jne    13c0 <simple_update+0x2c0>
jmp    16c9 <simple_update+0x5c9>
nopw   0x0(%rax,%rax,1)
mov    %r10,-0x10(%rsp)
mov    %rax,-0x8(%rsp)
mov    %r12,%rax
lea    0x100(%r9),%rdi
lea    0x100(%r8),%rbx
cmp    %rdi,%r15
setb   %r13b
cmp    %r14,%r9
setb   %r10b
cmp    %rbx,%r15
setb   %bpl
cmp    %r14,%r8
setb   %r12b
test   %r10b,%r13b
jne    16e0 <simple_update+0x5e0>
and    %r12b,%bpl
jne    16e0 <simple_update+0x5e0>
movdqu 0xf0(%r9),%xmm0
movdqu 0xf0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1f0(%rsi)
movdqu 0xe0(%r9),%xmm0
movdqu 0xe0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1e0(%rsi)
movdqu 0xd0(%r9),%xmm0
movdqu 0xd0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1d0(%rsi)
movdqu 0xc0(%r9),%xmm0
movdqu 0xc0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1c0(%rsi)
movdqu 0xb0(%r9),%xmm0
movdqu 0xb0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1b0(%rsi)
movdqu 0xa0(%r9),%xmm0
movdqu 0xa0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1a0(%rsi)
movdqu 0x90(%r9),%xmm0
movdqu 0x90(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x190(%rsi)
movdqu 0x80(%r9),%xmm0
movdqu 0x80(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x180(%rsi)
movdqu 0x70(%r9),%xmm0
movdqu 0x70(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x170(%rsi)
movdqu 0x60(%r9),%xmm0
movdqu 0x60(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x160(%rsi)
movdqu 0x50(%r9),%xmm0
movdqu 0x50(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x150(%rsi)
movdqu 0x40(%r9),%xmm0
movdqu 0x40(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x140(%rsi)
movdqu 0x30(%r9),%xmm0
movdqu 0x30(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x130(%rsi)
movdqu 0x20(%r9),%xmm0
movdqu 0x20(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x120(%rsi)
movdqu 0x10(%r9),%xmm0
movdqu 0x10(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x110(%rsi)
movdqu (%r9),%xmm0
movdqu (%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x100(%rsi)
jmp    173c <simple_update+0x63c>
nopl   0x0(%rax)
movups 0xf0(%rbx),%xmm0
movups %xmm0,0x1f0(%rsi)
movups 0xe0(%rbx),%xmm0
movups %xmm0,0x1e0(%rsi)
movups 0xd0(%rbx),%xmm0
movups %xmm0,0x1d0(%rsi)
movups 0xc0(%rbx),%xmm0
movups %xmm0,0x1c0(%rsi)
movups 0xb0(%rbx),%xmm0
movups %xmm0,0x1b0(%rsi)
movups 0xa0(%rbx),%xmm0
movups %xmm0,0x1a0(%rsi)
movups 0x90(%rbx),%xmm0
movups %xmm0,0x190(%rsi)
movups 0x80(%rbx),%xmm0
movups %xmm0,0x180(%rsi)
movups 0x70(%rbx),%xmm0
movups %xmm0,0x170(%rsi)
movups 0x60(%rbx),%xmm0
movups %xmm0,0x160(%rsi)
movups 0x50(%rbx),%xmm0
movups %xmm0,0x150(%rsi)
movups 0x40(%rbx),%xmm0
movups %xmm0,0x140(%rsi)
movups 0x30(%rbx),%xmm0
movups %xmm0,0x130(%rsi)
movups 0x20(%rbx),%xmm0
movups %xmm0,0x120(%rsi)
movups 0x10(%rbx),%xmm0
movups %xmm0,0x110(%rsi)
movdqu (%rbx),%xmm0
movdqu %xmm0,0x100(%rsi)
mov    (%r12,%r11,4),%ebp
test   $0x2,%bpl
je     1340 <simple_update+0x240>
jmp    1764 <simple_update+0x664>
nopl   0x0(%rax)
mov    $0x3f,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
mov    (%r8,%rbp,4),%ecx
add    (%r9,%rbp,4),%ecx
mov    %ecx,0x100(%rsi,%rbp,4)
mov    -0x4(%r8,%rbp,4),%ecx
add    -0x4(%r9,%rbp,4),%ecx
mov    %ecx,0xfc(%rsi,%rbp,4)
mov    -0x8(%r8,%rbp,4),%ecx
add    -0x8(%r9,%rbp,4),%ecx
mov    %ecx,0xf8(%rsi,%rbp,4)
mov    -0xc(%r8,%rbp,4),%ecx
add    -0xc(%r9,%rbp,4),%ecx
mov    %ecx,0xf4(%rsi,%rbp,4)
add    $0xfffffffffffffffc,%rbp
cmp    $0xffffffffffffffff,%rbp
jne    16f0 <simple_update+0x5f0>
mov    %rax,%r12
mov    (%rax,%r11,4),%ebp
mov    -0x8(%rsp),%rax
mov    -0x10(%rsp),%r10
test   $0x1,%bpl
jne    1397 <simple_update+0x297>
mov    %rbx,%r8
test   $0x2,%bpl
je     1340 <simple_update+0x240>
lea    0x100(%rdi),%r9
cmp    %r9,%r15
jae    17c0 <simple_update+0x6c0>
cmp    %r14,%rdi
jae    17c0 <simple_update+0x6c0>
mov    $0x3f,%ebx
nopw   0x0(%rax,%rax,1)
mov    (%rdi,%rbx,4),%ecx
mov    %ecx,0x100(%rsi,%rbx,4)
mov    -0x4(%rdi,%rbx,4),%ecx
mov    %ecx,0xfc(%rsi,%rbx,4)
mov    -0x8(%rdi,%rbx,4),%ecx
mov    %ecx,0xf8(%rsi,%rbx,4)
mov    -0xc(%rdi,%rbx,4),%ecx
mov    %ecx,0xf4(%rsi,%rbx,4)
add    $0xfffffffffffffffc,%rbx
cmp    $0xffffffffffffffff,%rbx
jne    1780 <simple_update+0x680>
jmp    1343 <simple_update+0x243>
nopw   0x0(%rax,%rax,1)
movups 0xf0(%rdi),%xmm0
movups %xmm0,0x1f0(%rsi)
movups 0xe0(%rdi),%xmm0
movups %xmm0,0x1e0(%rsi)
movups 0xd0(%rdi),%xmm0
movups %xmm0,0x1d0(%rsi)
movups 0xc0(%rdi),%xmm0
movups %xmm0,0x1c0(%rsi)
movups 0xb0(%rdi),%xmm0
movups %xmm0,0x1b0(%rsi)
movups 0xa0(%rdi),%xmm0
movups %xmm0,0x1a0(%rsi)
movups 0x90(%rdi),%xmm0
movups %xmm0,0x190(%rsi)
movups 0x80(%rdi),%xmm0
movups %xmm0,0x180(%rsi)
movups 0x70(%rdi),%xmm0
movups %xmm0,0x170(%rsi)
movups 0x60(%rdi),%xmm0
movups %xmm0,0x160(%rsi)
movups 0x50(%rdi),%xmm0
movups %xmm0,0x150(%rsi)
movups 0x40(%rdi),%xmm0
movups %xmm0,0x140(%rsi)
movups 0x30(%rdi),%xmm0
movups %xmm0,0x130(%rsi)
movups 0x20(%rdi),%xmm0
movups %xmm0,0x120(%rsi)
movups 0x10(%rdi),%xmm0
movups %xmm0,0x110(%rsi)
movdqu (%rdi),%xmm0
movdqu %xmm0,0x100(%rsi)
jmp    1343 <simple_update+0x243>
lea    0x200(%rsi),%rcx
cmp    %r9,%rsi
setb   %dil
cmp    %rcx,%r9
setb   %bl
cmp    %r8,%rsi
setb   %dl
cmp    %rcx,%r8
setb   %cl
test   %bl,%dil
jne    1a6f <simple_update+0x96f>
and    %cl,%dl
jne    1a6f <simple_update+0x96f>
movdqu 0xf0(%r9),%xmm0
movdqu 0xf0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1f0(%rsi)
movdqu 0xe0(%r9),%xmm0
movdqu 0xe0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1e0(%rsi)
movdqu 0xd0(%r9),%xmm0
movdqu 0xd0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1d0(%rsi)
movdqu 0xc0(%r9),%xmm0
movdqu 0xc0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1c0(%rsi)
movdqu 0xb0(%r9),%xmm0
movdqu 0xb0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1b0(%rsi)
movdqu 0xa0(%r9),%xmm0
movdqu 0xa0(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x1a0(%rsi)
movdqu 0x90(%r9),%xmm0
movdqu 0x90(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x190(%rsi)
movdqu 0x80(%r9),%xmm0
movdqu 0x80(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x180(%rsi)
movdqu 0x70(%r9),%xmm0
movdqu 0x70(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x170(%rsi)
movdqu 0x60(%r9),%xmm0
movdqu 0x60(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x160(%rsi)
movdqu 0x50(%r9),%xmm0
movdqu 0x50(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x150(%rsi)
movdqu 0x40(%r9),%xmm0
movdqu 0x40(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x140(%rsi)
movdqu 0x30(%r9),%xmm0
movdqu 0x30(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x130(%rsi)
movdqu 0x20(%r9),%xmm0
movdqu 0x20(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x120(%rsi)
movdqu 0x10(%r9),%xmm0
movdqu 0x10(%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x110(%rsi)
movdqu (%r9),%xmm0
movdqu (%r8),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x100(%rsi)
jmp    1acc <simple_update+0x9cc>
mov    $0x3f,%edx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    (%r8,%rdx,4),%ecx
add    (%r9,%rdx,4),%ecx
mov    %ecx,0x100(%rsi,%rdx,4)
mov    -0x4(%r8,%rdx,4),%ecx
add    -0x4(%r9,%rdx,4),%ecx
mov    %ecx,0xfc(%rsi,%rdx,4)
mov    -0x8(%r8,%rdx,4),%ecx
add    -0x8(%r9,%rdx,4),%ecx
mov    %ecx,0xf8(%rsi,%rdx,4)
mov    -0xc(%r8,%rdx,4),%ecx
add    -0xc(%r9,%rdx,4),%ecx
mov    %ecx,0xf4(%rsi,%rdx,4)
add    $0xfffffffffffffffc,%rdx
cmp    $0xffffffffffffffff,%rdx
jne    1a80 <simple_update+0x980>
mov    (%r12),%ecx
shl    $0x6,%ecx
add    $0x40,%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
sub    %rcx,%rax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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