void bucketSort(int a[], int n) {
  int i, j, k, buckets[10];
  for (i = 0; i < 10; ++i)
    buckets[i] = 0;
  for (i = 0; i < n; ++i)
    ++buckets[a[i]];
  for (i = 0, j = 0; j < 10; ++j)
    for (k = buckets[j]; k > 0; --k)
      a[i++] = j;
}


x86 assembly (clang, -O0):
<bucketSort>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
cmpl   $0xa,-0x10(%rbp)
jge    1136 <bucketSort+0x36>
movslq -0x10(%rbp),%rax
movl   $0x0,-0x40(%rbp,%rax,4)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1112 <bucketSort+0x12>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    116e <bucketSort+0x6e>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movslq (%rax,%rcx,4),%rax
mov    -0x40(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x40(%rbp,%rax,4)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    113d <bucketSort+0x3d>
movl   $0x0,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0xa,-0x14(%rbp)
jge    11d4 <bucketSort+0xd4>
movslq -0x14(%rbp),%rax
mov    -0x40(%rbp,%rax,4),%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x18(%rbp)
jle    11c1 <bucketSort+0xc1>
mov    -0x14(%rbp),%edx
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x10(%rbp)
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    1191 <bucketSort+0x91>
jmp    11c6 <bucketSort+0xc6>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    117c <bucketSort+0x7c>
pop    %rbp
ret

x86 assembly (clang, -O2):
<bucketSort>:
push   %r14
push   %rbx
sub    $0x28,%rsp
mov    %rdi,%r14
xorps  %xmm0,%xmm0
movaps %xmm0,0x10(%rsp)
movaps %xmm0,(%rsp)
movq   $0x0,0x20(%rsp)
test   %esi,%esi
jle    11cc <bucketSort+0xbc>
mov    %esi,%ecx
lea    -0x1(%rcx),%rdx
mov    %ecx,%eax
and    $0x3,%eax
cmp    $0x3,%rdx
jae    114c <bucketSort+0x3c>
xor    %edx,%edx
jmp    118c <bucketSort+0x7c>
and    $0xfffffffc,%ecx
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movslq (%r14,%rdx,4),%rsi
addl   $0x1,(%rsp,%rsi,4)
movslq 0x4(%r14,%rdx,4),%rsi
addl   $0x1,(%rsp,%rsi,4)
movslq 0x8(%r14,%rdx,4),%rsi
addl   $0x1,(%rsp,%rsi,4)
movslq 0xc(%r14,%rdx,4),%rsi
addl   $0x1,(%rsp,%rsi,4)
add    $0x4,%rdx
cmp    %rdx,%rcx
jne    1160 <bucketSort+0x50>
test   %rax,%rax
je     11b1 <bucketSort+0xa1>
lea    (%r14,%rdx,4),%rcx
xor    %edx,%edx
nopw   0x0(%rax,%rax,1)
movslq (%rcx,%rdx,4),%rsi
addl   $0x1,(%rsp,%rsi,4)
add    $0x1,%rdx
cmp    %rdx,%rax
jne    11a0 <bucketSort+0x90>
mov    (%rsp),%ebx
test   %ebx,%ebx
jle    11cc <bucketSort+0xbc>
lea    0x0(,%rbx,4),%rdx
mov    %r14,%rdi
xor    %esi,%esi
call   1030 <memset@plt>
jmp    11ce <bucketSort+0xbe>
xor    %ebx,%ebx
movabs $0x3ffffffffffffffc,%r8
ff ff 3f
movabs $0x1fffffff8,%r9
mov    0x4(%rsp),%edx
test   %edx,%edx
jle    12c4 <bucketSort+0x1b4>
mov    %ebx,%ebx
lea    -0x1(%rdx),%r11d
cmp    $0x7,%r11d
jb     12ad <bucketSort+0x19d>
add    $0x1,%r11
mov    %r11,%r10
and    %r9,%r10
lea    -0x8(%r10),%rsi
mov    %rsi,%rcx
shr    $0x3,%rcx
add    $0x1,%rcx
mov    %ecx,%eax
and    $0x3,%eax
cmp    $0x18,%rsi
jae    1226 <bucketSort+0x116>
xor    %edi,%edi
jmp    1271 <bucketSort+0x161>
and    %r8,%rcx
lea    (%r14,%rbx,4),%rsi
add    $0x70,%rsi
xor    %edi,%edi
movaps 0xdc6(%rip),%xmm0
nopw   0x0(%rax,%rax,1)
movups %xmm0,-0x70(%rsi,%rdi,4)
movups %xmm0,-0x60(%rsi,%rdi,4)
movups %xmm0,-0x50(%rsi,%rdi,4)
movups %xmm0,-0x40(%rsi,%rdi,4)
movups %xmm0,-0x30(%rsi,%rdi,4)
movups %xmm0,-0x20(%rsi,%rdi,4)
movups %xmm0,-0x10(%rsi,%rdi,4)
movups %xmm0,(%rsi,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rcx
jne    1240 <bucketSort+0x130>
test   %rax,%rax
je     12a2 <bucketSort+0x192>
add    %rbx,%rdi
lea    (%r14,%rdi,4),%rcx
add    $0x10,%rcx
shl    $0x5,%rax
xor    %esi,%esi
movaps 0xd72(%rip),%xmm0
xchg   %ax,%ax
movups %xmm0,-0x10(%rcx,%rsi,1)
movups %xmm0,(%rcx,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rax
jne    1290 <bucketSort+0x180>
add    %r10,%rbx
cmp    %r10,%r11
je     12c4 <bucketSort+0x1b4>
sub    %r10d,%edx
add    $0x1,%edx
movl   $0x1,(%r14,%rbx,4)
add    $0x1,%rbx
add    $0xffffffff,%edx
cmp    $0x1,%edx
ja     12b0 <bucketSort+0x1a0>
mov    0x8(%rsp),%edx
test   %edx,%edx
jle    13a4 <bucketSort+0x294>
movslq %ebx,%rbx
lea    -0x1(%rdx),%r11d
cmp    $0x7,%r11d
jb     138d <bucketSort+0x27d>
add    $0x1,%r11
mov    %r11,%r10
and    %r9,%r10
lea    -0x8(%r10),%rsi
mov    %rsi,%rax
shr    $0x3,%rax
add    $0x1,%rax
mov    %eax,%ecx
and    $0x3,%ecx
cmp    $0x18,%rsi
jae    1309 <bucketSort+0x1f9>
xor    %edi,%edi
jmp    1351 <bucketSort+0x241>
and    %r8,%rax
lea    (%r14,%rbx,4),%rsi
add    $0x70,%rsi
xor    %edi,%edi
movaps 0xcf3(%rip),%xmm0
nopl   (%rax)
movups %xmm0,-0x70(%rsi,%rdi,4)
movups %xmm0,-0x60(%rsi,%rdi,4)
movups %xmm0,-0x50(%rsi,%rdi,4)
movups %xmm0,-0x40(%rsi,%rdi,4)
movups %xmm0,-0x30(%rsi,%rdi,4)
movups %xmm0,-0x20(%rsi,%rdi,4)
movups %xmm0,-0x10(%rsi,%rdi,4)
movups %xmm0,(%rsi,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rax
jne    1320 <bucketSort+0x210>
test   %rcx,%rcx
je     1382 <bucketSort+0x272>
add    %rbx,%rdi
lea    (%r14,%rdi,4),%rax
add    $0x10,%rax
shl    $0x5,%rcx
xor    %esi,%esi
movaps 0xca2(%rip),%xmm0
xchg   %ax,%ax
movups %xmm0,-0x10(%rax,%rsi,1)
movups %xmm0,(%rax,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rcx
jne    1370 <bucketSort+0x260>
add    %r10,%rbx
cmp    %r10,%r11
je     13a4 <bucketSort+0x294>
sub    %r10d,%edx
add    $0x1,%edx
movl   $0x2,(%r14,%rbx,4)
add    $0x1,%rbx
add    $0xffffffff,%edx
cmp    $0x1,%edx
ja     1390 <bucketSort+0x280>
mov    0xc(%rsp),%edx
test   %edx,%edx
jle    1484 <bucketSort+0x374>
movslq %ebx,%rbx
lea    -0x1(%rdx),%r11d
cmp    $0x7,%r11d
jb     146d <bucketSort+0x35d>
add    $0x1,%r11
mov    %r11,%r10
and    %r9,%r10
lea    -0x8(%r10),%rsi
mov    %rsi,%rax
shr    $0x3,%rax
add    $0x1,%rax
mov    %eax,%ecx
and    $0x3,%ecx
cmp    $0x18,%rsi
jae    13e9 <bucketSort+0x2d9>
xor    %edi,%edi
jmp    1431 <bucketSort+0x321>
and    %r8,%rax
lea    (%r14,%rbx,4),%rsi
add    $0x70,%rsi
xor    %edi,%edi
movaps 0xc23(%rip),%xmm0
nopl   (%rax)
movups %xmm0,-0x70(%rsi,%rdi,4)
movups %xmm0,-0x60(%rsi,%rdi,4)
movups %xmm0,-0x50(%rsi,%rdi,4)
movups %xmm0,-0x40(%rsi,%rdi,4)
movups %xmm0,-0x30(%rsi,%rdi,4)
movups %xmm0,-0x20(%rsi,%rdi,4)
movups %xmm0,-0x10(%rsi,%rdi,4)
movups %xmm0,(%rsi,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rax
jne    1400 <bucketSort+0x2f0>
test   %rcx,%rcx
je     1462 <bucketSort+0x352>
add    %rbx,%rdi
lea    (%r14,%rdi,4),%rax
add    $0x10,%rax
shl    $0x5,%rcx
xor    %esi,%esi
movaps 0xbd2(%rip),%xmm0
xchg   %ax,%ax
movups %xmm0,-0x10(%rax,%rsi,1)
movups %xmm0,(%rax,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rcx
jne    1450 <bucketSort+0x340>
add    %r10,%rbx
cmp    %r10,%r11
je     1484 <bucketSort+0x374>
sub    %r10d,%edx
add    $0x1,%edx
movl   $0x3,(%r14,%rbx,4)
add    $0x1,%rbx
add    $0xffffffff,%edx
cmp    $0x1,%edx
ja     1470 <bucketSort+0x360>
mov    0x10(%rsp),%edx
test   %edx,%edx
jle    1564 <bucketSort+0x454>
movslq %ebx,%rbx
lea    -0x1(%rdx),%r11d
cmp    $0x7,%r11d
jb     154d <bucketSort+0x43d>
add    $0x1,%r11
mov    %r11,%r10
and    %r9,%r10
lea    -0x8(%r10),%rsi
mov    %rsi,%rax
shr    $0x3,%rax
add    $0x1,%rax
mov    %eax,%ecx
and    $0x3,%ecx
cmp    $0x18,%rsi
jae    14c9 <bucketSort+0x3b9>
xor    %edi,%edi
jmp    1511 <bucketSort+0x401>
and    %r8,%rax
lea    (%r14,%rbx,4),%rsi
add    $0x70,%rsi
xor    %edi,%edi
movaps 0xb53(%rip),%xmm0
nopl   (%rax)
movups %xmm0,-0x70(%rsi,%rdi,4)
movups %xmm0,-0x60(%rsi,%rdi,4)
movups %xmm0,-0x50(%rsi,%rdi,4)
movups %xmm0,-0x40(%rsi,%rdi,4)
movups %xmm0,-0x30(%rsi,%rdi,4)
movups %xmm0,-0x20(%rsi,%rdi,4)
movups %xmm0,-0x10(%rsi,%rdi,4)
movups %xmm0,(%rsi,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rax
jne    14e0 <bucketSort+0x3d0>
test   %rcx,%rcx
je     1542 <bucketSort+0x432>
add    %rbx,%rdi
lea    (%r14,%rdi,4),%rax
add    $0x10,%rax
shl    $0x5,%rcx
xor    %esi,%esi
movaps 0xb02(%rip),%xmm0
xchg   %ax,%ax
movups %xmm0,-0x10(%rax,%rsi,1)
movups %xmm0,(%rax,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rcx
jne    1530 <bucketSort+0x420>
add    %r10,%rbx
cmp    %r10,%r11
je     1564 <bucketSort+0x454>
sub    %r10d,%edx
add    $0x1,%edx
movl   $0x4,(%r14,%rbx,4)
add    $0x1,%rbx
add    $0xffffffff,%edx
cmp    $0x1,%edx
ja     1550 <bucketSort+0x440>
mov    0x14(%rsp),%edx
test   %edx,%edx
jle    1644 <bucketSort+0x534>
movslq %ebx,%rbx
lea    -0x1(%rdx),%r11d
cmp    $0x7,%r11d
jb     162d <bucketSort+0x51d>
add    $0x1,%r11
mov    %r11,%r10
and    %r9,%r10
lea    -0x8(%r10),%rsi
mov    %rsi,%rax
shr    $0x3,%rax
add    $0x1,%rax
mov    %eax,%ecx
and    $0x3,%ecx
cmp    $0x18,%rsi
jae    15a9 <bucketSort+0x499>
xor    %edi,%edi
jmp    15f1 <bucketSort+0x4e1>
and    %r8,%rax
lea    (%r14,%rbx,4),%rsi
add    $0x70,%rsi
xor    %edi,%edi
movaps 0xa83(%rip),%xmm0
nopl   (%rax)
movups %xmm0,-0x70(%rsi,%rdi,4)
movups %xmm0,-0x60(%rsi,%rdi,4)
movups %xmm0,-0x50(%rsi,%rdi,4)
movups %xmm0,-0x40(%rsi,%rdi,4)
movups %xmm0,-0x30(%rsi,%rdi,4)
movups %xmm0,-0x20(%rsi,%rdi,4)
movups %xmm0,-0x10(%rsi,%rdi,4)
movups %xmm0,(%rsi,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rax
jne    15c0 <bucketSort+0x4b0>
test   %rcx,%rcx
je     1622 <bucketSort+0x512>
add    %rbx,%rdi
lea    (%r14,%rdi,4),%rax
add    $0x10,%rax
shl    $0x5,%rcx
xor    %esi,%esi
movaps 0xa32(%rip),%xmm0
xchg   %ax,%ax
movups %xmm0,-0x10(%rax,%rsi,1)
movups %xmm0,(%rax,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rcx
jne    1610 <bucketSort+0x500>
add    %r10,%rbx
cmp    %r10,%r11
je     1644 <bucketSort+0x534>
sub    %r10d,%edx
add    $0x1,%edx
movl   $0x5,(%r14,%rbx,4)
add    $0x1,%rbx
add    $0xffffffff,%edx
cmp    $0x1,%edx
ja     1630 <bucketSort+0x520>
mov    0x18(%rsp),%edx
test   %edx,%edx
jle    1724 <bucketSort+0x614>
movslq %ebx,%rbx
lea    -0x1(%rdx),%r11d
cmp    $0x7,%r11d
jb     170d <bucketSort+0x5fd>
add    $0x1,%r11
mov    %r11,%r10
and    %r9,%r10
lea    -0x8(%r10),%rsi
mov    %rsi,%rax
shr    $0x3,%rax
add    $0x1,%rax
mov    %eax,%ecx
and    $0x3,%ecx
cmp    $0x18,%rsi
jae    1689 <bucketSort+0x579>
xor    %edi,%edi
jmp    16d1 <bucketSort+0x5c1>
and    %r8,%rax
lea    (%r14,%rbx,4),%rsi
add    $0x70,%rsi
xor    %edi,%edi
movaps 0x9b3(%rip),%xmm0
nopl   (%rax)
movups %xmm0,-0x70(%rsi,%rdi,4)
movups %xmm0,-0x60(%rsi,%rdi,4)
movups %xmm0,-0x50(%rsi,%rdi,4)
movups %xmm0,-0x40(%rsi,%rdi,4)
movups %xmm0,-0x30(%rsi,%rdi,4)
movups %xmm0,-0x20(%rsi,%rdi,4)
movups %xmm0,-0x10(%rsi,%rdi,4)
movups %xmm0,(%rsi,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rax
jne    16a0 <bucketSort+0x590>
test   %rcx,%rcx
je     1702 <bucketSort+0x5f2>
add    %rbx,%rdi
lea    (%r14,%rdi,4),%rax
add    $0x10,%rax
shl    $0x5,%rcx
xor    %esi,%esi
movaps 0x962(%rip),%xmm0
xchg   %ax,%ax
movups %xmm0,-0x10(%rax,%rsi,1)
movups %xmm0,(%rax,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rcx
jne    16f0 <bucketSort+0x5e0>
add    %r10,%rbx
cmp    %r10,%r11
je     1724 <bucketSort+0x614>
sub    %r10d,%edx
add    $0x1,%edx
movl   $0x6,(%r14,%rbx,4)
add    $0x1,%rbx
add    $0xffffffff,%edx
cmp    $0x1,%edx
ja     1710 <bucketSort+0x600>
mov    0x1c(%rsp),%edx
test   %edx,%edx
jle    1804 <bucketSort+0x6f4>
movslq %ebx,%rbx
lea    -0x1(%rdx),%r11d
cmp    $0x7,%r11d
jb     17ed <bucketSort+0x6dd>
add    $0x1,%r11
mov    %r11,%r10
and    %r9,%r10
lea    -0x8(%r10),%rsi
mov    %rsi,%rax
shr    $0x3,%rax
add    $0x1,%rax
mov    %eax,%ecx
and    $0x3,%ecx
cmp    $0x18,%rsi
jae    1769 <bucketSort+0x659>
xor    %edi,%edi
jmp    17b1 <bucketSort+0x6a1>
and    %r8,%rax
lea    (%r14,%rbx,4),%rsi
add    $0x70,%rsi
xor    %edi,%edi
movaps 0x8e3(%rip),%xmm0
nopl   (%rax)
movups %xmm0,-0x70(%rsi,%rdi,4)
movups %xmm0,-0x60(%rsi,%rdi,4)
movups %xmm0,-0x50(%rsi,%rdi,4)
movups %xmm0,-0x40(%rsi,%rdi,4)
movups %xmm0,-0x30(%rsi,%rdi,4)
movups %xmm0,-0x20(%rsi,%rdi,4)
movups %xmm0,-0x10(%rsi,%rdi,4)
movups %xmm0,(%rsi,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rax
jne    1780 <bucketSort+0x670>
test   %rcx,%rcx
je     17e2 <bucketSort+0x6d2>
add    %rbx,%rdi
lea    (%r14,%rdi,4),%rax
add    $0x10,%rax
shl    $0x5,%rcx
xor    %esi,%esi
movaps 0x892(%rip),%xmm0
xchg   %ax,%ax
movups %xmm0,-0x10(%rax,%rsi,1)
movups %xmm0,(%rax,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rcx
jne    17d0 <bucketSort+0x6c0>
add    %r10,%rbx
cmp    %r10,%r11
je     1804 <bucketSort+0x6f4>
sub    %r10d,%edx
add    $0x1,%edx
movl   $0x7,(%r14,%rbx,4)
add    $0x1,%rbx
add    $0xffffffff,%edx
cmp    $0x1,%edx
ja     17f0 <bucketSort+0x6e0>
mov    0x20(%rsp),%edx
test   %edx,%edx
jle    18e4 <bucketSort+0x7d4>
movslq %ebx,%rbx
lea    -0x1(%rdx),%r11d
cmp    $0x7,%r11d
jb     18cd <bucketSort+0x7bd>
add    $0x1,%r11
mov    %r11,%r10
and    %r9,%r10
lea    -0x8(%r10),%rsi
mov    %rsi,%rax
shr    $0x3,%rax
add    $0x1,%rax
mov    %eax,%ecx
and    $0x3,%ecx
cmp    $0x18,%rsi
jae    1849 <bucketSort+0x739>
xor    %edi,%edi
jmp    1891 <bucketSort+0x781>
and    %r8,%rax
lea    (%r14,%rbx,4),%rsi
add    $0x70,%rsi
xor    %edi,%edi
movaps 0x813(%rip),%xmm0
nopl   (%rax)
movups %xmm0,-0x70(%rsi,%rdi,4)
movups %xmm0,-0x60(%rsi,%rdi,4)
movups %xmm0,-0x50(%rsi,%rdi,4)
movups %xmm0,-0x40(%rsi,%rdi,4)
movups %xmm0,-0x30(%rsi,%rdi,4)
movups %xmm0,-0x20(%rsi,%rdi,4)
movups %xmm0,-0x10(%rsi,%rdi,4)
movups %xmm0,(%rsi,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rax
jne    1860 <bucketSort+0x750>
test   %rcx,%rcx
je     18c2 <bucketSort+0x7b2>
add    %rbx,%rdi
lea    (%r14,%rdi,4),%rax
add    $0x10,%rax
shl    $0x5,%rcx
xor    %esi,%esi
movaps 0x7c2(%rip),%xmm0
xchg   %ax,%ax
movups %xmm0,-0x10(%rax,%rsi,1)
movups %xmm0,(%rax,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rcx
jne    18b0 <bucketSort+0x7a0>
add    %r10,%rbx
cmp    %r10,%r11
je     18e4 <bucketSort+0x7d4>
sub    %r10d,%edx
add    $0x1,%edx
movl   $0x8,(%r14,%rbx,4)
add    $0x1,%rbx
add    $0xffffffff,%edx
cmp    $0x1,%edx
ja     18d0 <bucketSort+0x7c0>
mov    0x24(%rsp),%edx
test   %edx,%edx
jle    19d2 <bucketSort+0x8c2>
movslq %ebx,%r10
lea    -0x1(%rdx),%edi
cmp    $0x7,%edi
jb     19ad <bucketSort+0x89d>
add    $0x1,%rdi
and    %rdi,%r9
lea    -0x8(%r9),%rsi
mov    %rsi,%rax
shr    $0x3,%rax
add    $0x1,%rax
mov    %eax,%ecx
and    $0x3,%ecx
cmp    $0x18,%rsi
jae    1924 <bucketSort+0x814>
xor    %ebx,%ebx
jmp    1971 <bucketSort+0x861>
and    %r8,%rax
lea    (%r14,%r10,4),%rsi
add    $0x70,%rsi
xor    %ebx,%ebx
movaps 0x748(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movups %xmm0,-0x70(%rsi,%rbx,4)
movups %xmm0,-0x60(%rsi,%rbx,4)
movups %xmm0,-0x50(%rsi,%rbx,4)
movups %xmm0,-0x40(%rsi,%rbx,4)
movups %xmm0,-0x30(%rsi,%rbx,4)
movups %xmm0,-0x20(%rsi,%rbx,4)
movups %xmm0,-0x10(%rsi,%rbx,4)
movups %xmm0,(%rsi,%rbx,4)
add    $0x20,%rbx
add    $0xfffffffffffffffc,%rax
jne    1940 <bucketSort+0x830>
test   %rcx,%rcx
je     19a2 <bucketSort+0x892>
add    %r10,%rbx
lea    (%r14,%rbx,4),%rax
add    $0x10,%rax
shl    $0x5,%rcx
xor    %esi,%esi
movaps 0x6f2(%rip),%xmm0
xchg   %ax,%ax
movups %xmm0,-0x10(%rax,%rsi,1)
movups %xmm0,(%rax,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%rcx
jne    1990 <bucketSort+0x880>
cmp    %r9,%rdi
je     19d2 <bucketSort+0x8c2>
add    %r9,%r10
sub    %r9d,%edx
lea    (%r14,%r10,4),%rax
add    $0x1,%edx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movl   $0x9,(%rax)
add    $0x4,%rax
add    $0xffffffff,%edx
cmp    $0x1,%edx
ja     19c0 <bucketSort+0x8b0>
add    $0x28,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define void @bucketSort(i32* %0, i32 %1) {
%3 = alloca i32*
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca [10 x i32]
store i32* %0, i32** %3
store i32 %1, i32* %4
store i32 0, i32* %5
br label %9
9: ; preds = %16, %2
%10 = load i32, i32* %5
%11 = icmp slt i32 %10, 10
br i1 %11, label %12, label %19
12: ; preds = %9
%13 = load i32, i32* %5
%14 = sext i32 %13 to i64
%15 = getelementptr inbounds [10 x i32], [10 x i32]* %8, i64 0, i64 %14
store i32 0, i32* %15
br label %16
16: ; preds = %12
%17 = load i32, i32* %5
%18 = add nsw i32 %17, 1
store i32 %18, i32* %5
br label %9
19: ; preds = %9
store i32 0, i32* %5
br label %20
20: ; preds = %34, %19
%21 = load i32, i32* %5
%22 = load i32, i32* %4
%23 = icmp slt i32 %21, %22
br i1 %23, label %24, label %37
24: ; preds = %20
%25 = load i32*, i32** %3
%26 = load i32, i32* %5
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i32, i32* %25, i64 %27
%29 = load i32, i32* %28
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds [10 x i32], [10 x i32]* %8, i64 0, i64 %30
%32 = load i32, i32* %31
%33 = add nsw i32 %32, 1
store i32 %33, i32* %31
br label %34
34: ; preds = %24
%35 = load i32, i32* %5
%36 = add nsw i32 %35, 1
store i32 %36, i32* %5
br label %20
37: ; preds = %20
store i32 0, i32* %5
store i32 0, i32* %6
br label %38
38: ; preds = %60, %37
%39 = load i32, i32* %6
%40 = icmp slt i32 %39, 10
br i1 %40, label %41, label %63
41: ; preds = %38
%42 = load i32, i32* %6
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds [10 x i32], [10 x i32]* %8, i64 0, i64 %43
%45 = load i32, i32* %44
store i32 %45, i32* %7
br label %46
46: ; preds = %56, %41
%47 = load i32, i32* %7
%48 = icmp sgt i32 %47, 0
br i1 %48, label %49, label %59
49: ; preds = %46
%50 = load i32, i32* %6
%51 = load i32*, i32** %3
%52 = load i32, i32* %5
%53 = add nsw i32 %52, 1
store i32 %53, i32* %5
%54 = sext i32 %52 to i64
%55 = getelementptr inbounds i32, i32* %51, i64 %54
store i32 %50, i32* %55
br label %56
56: ; preds = %49
%57 = load i32, i32* %7
%58 = add nsw i32 %57, -1
store i32 %58, i32* %7
br label %46
59: ; preds = %46
br label %60
60: ; preds = %59
%61 = load i32, i32* %6
%62 = add nsw i32 %61, 1
store i32 %62, i32* %6
br label %38
63: ; preds = %38
ret void
}

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