void print_graph(int *A, int A_lengt, char graph[][8]) {
  int i, j, temp;
  for (i = 0; i < 8; i++) {
    temp = A[i];
    if (temp == 0)
      continue;
    for (j = 0; j < 8; j++) {
      graph[j][i] = (temp--) ? ('|') : (' ');
      if (temp == 0)
        break;
    }
  }
}


x86 assembly (clang, -O0):
<print_graph>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x8,-0x1c(%rbp)
jge    11b6 <print_graph+0xb6>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
jne    113d <print_graph+0x3d>
jmp    11a8 <print_graph+0xa8>
movl   $0x0,-0x20(%rbp)
cmpl   $0x8,-0x20(%rbp)
jge    11a3 <print_graph+0xa3>
mov    -0x24(%rbp),%edx
mov    %edx,%eax
add    $0xffffffff,%eax
mov    %eax,-0x24(%rbp)
mov    $0x20,%eax
mov    $0x7c,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
mov    %al,%dl
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
movslq -0x1c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
cmpl   $0x0,-0x24(%rbp)
jne    1190 <print_graph+0x90>
jmp    11a3 <print_graph+0xa3>
jmp    1195 <print_graph+0x95>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1144 <print_graph+0x44>
jmp    11a8 <print_graph+0xa8>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1116 <print_graph+0x16>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_graph>:
mov    (%rdi),%eax
test   %eax,%eax
je     129e <print_graph+0x19e>
add    $0xffffffff,%eax
cmp    $0x7,%eax
mov    $0x7,%ecx
cmovb  %eax,%ecx
movq   %rcx,%xmm0
pshufd $0x44,%xmm0,%xmm0
movdqa 0xed6(%rip),%xmm2
por    %xmm0,%xmm2
movdqa 0xeda(%rip),%xmm1
movdqa %xmm1,%xmm3
pcmpgtd %xmm2,%xmm3
pcmpeqd %xmm1,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm3
por    %xmm2,%xmm3
movd   %xmm3,%eax
not    %eax
test   $0x1,%al
je     1161 <print_graph+0x61>
movb   $0x7c,(%rdx)
pxor   0xe97(%rip),%xmm0
movdqa %xmm1,%xmm2
pcmpgtd %xmm0,%xmm2
pcmpeqd %xmm0,%xmm1
pshufd $0xf5,%xmm1,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
psrldq $0x6,%xmm2
movd   %xmm2,%eax
shr    $0x10,%eax
test   $0x1,%al
je     11a3 <print_graph+0xa3>
movb   $0x7c,0x8(%rdx)
movdqa 0xe75(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm4
pand   %xmm3,%xmm4
pshufd $0xf5,%xmm3,%xmm2
por    %xmm4,%xmm2
pxor   %xmm2,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     11da <print_graph+0xda>
movb   $0x7c,0x10(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     11ef <print_graph+0xef>
movb   $0x7c,0x18(%rdx)
movdqa 0xe39(%rip),%xmm3
movdqa %xmm3,%xmm2
pcmpgtd %xmm0,%xmm2
pshufd $0x44,%xmm2,%xmm4
pcmpeqd %xmm0,%xmm3
pshufd $0x55,%xmm3,%xmm5
pand   %xmm4,%xmm5
pshufd $0x55,%xmm2,%xmm4
por    %xmm5,%xmm4
pxor   %xmm1,%xmm4
pextrw $0x4,%xmm4,%eax
test   $0x1,%al
je     122b <print_graph+0x12b>
movb   $0x7c,0x20(%rdx)
pshufd $0xf5,%xmm3,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     1252 <print_graph+0x152>
movb   $0x7c,0x28(%rdx)
movdqa 0xde6(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm0
por    %xmm2,%xmm0
pxor   %xmm0,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     1289 <print_graph+0x189>
movb   $0x7c,0x30(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm0
pextrw $0x4,%xmm0,%eax
test   $0x1,%al
je     129e <print_graph+0x19e>
movb   $0x7c,0x38(%rdx)
mov    0x4(%rdi),%eax
test   %eax,%eax
je     143e <print_graph+0x33e>
add    $0xffffffff,%eax
cmp    $0x7,%eax
mov    $0x7,%ecx
cmovb  %eax,%ecx
movq   %rcx,%xmm0
pshufd $0x44,%xmm0,%xmm0
movdqa 0xd37(%rip),%xmm2
por    %xmm0,%xmm2
movdqa 0xd3b(%rip),%xmm1
movdqa %xmm1,%xmm3
pcmpgtd %xmm2,%xmm3
pcmpeqd %xmm1,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm3
por    %xmm2,%xmm3
movd   %xmm3,%eax
not    %eax
test   $0x1,%al
je     1301 <print_graph+0x201>
movb   $0x7c,0x1(%rdx)
pxor   0xcf7(%rip),%xmm0
movdqa %xmm1,%xmm2
pcmpgtd %xmm0,%xmm2
pcmpeqd %xmm0,%xmm1
pshufd $0xf5,%xmm1,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
psrldq $0x6,%xmm2
movd   %xmm2,%eax
shr    $0x10,%eax
test   $0x1,%al
je     1343 <print_graph+0x243>
movb   $0x7c,0x9(%rdx)
movdqa 0xcd5(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm4
pand   %xmm3,%xmm4
pshufd $0xf5,%xmm3,%xmm2
por    %xmm4,%xmm2
pxor   %xmm2,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     137a <print_graph+0x27a>
movb   $0x7c,0x11(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     138f <print_graph+0x28f>
movb   $0x7c,0x19(%rdx)
movdqa 0xc99(%rip),%xmm3
movdqa %xmm3,%xmm2
pcmpgtd %xmm0,%xmm2
pshufd $0x44,%xmm2,%xmm4
pcmpeqd %xmm0,%xmm3
pshufd $0x55,%xmm3,%xmm5
pand   %xmm4,%xmm5
pshufd $0x55,%xmm2,%xmm4
por    %xmm5,%xmm4
pxor   %xmm1,%xmm4
pextrw $0x4,%xmm4,%eax
test   $0x1,%al
je     13cb <print_graph+0x2cb>
movb   $0x7c,0x21(%rdx)
pshufd $0xf5,%xmm3,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     13f2 <print_graph+0x2f2>
movb   $0x7c,0x29(%rdx)
movdqa 0xc46(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm0
por    %xmm2,%xmm0
pxor   %xmm0,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     1429 <print_graph+0x329>
movb   $0x7c,0x31(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm0
pextrw $0x4,%xmm0,%eax
test   $0x1,%al
je     143e <print_graph+0x33e>
movb   $0x7c,0x39(%rdx)
mov    0x8(%rdi),%eax
test   %eax,%eax
je     15de <print_graph+0x4de>
add    $0xffffffff,%eax
cmp    $0x7,%eax
mov    $0x7,%ecx
cmovb  %eax,%ecx
movq   %rcx,%xmm0
pshufd $0x44,%xmm0,%xmm0
movdqa 0xb97(%rip),%xmm2
por    %xmm0,%xmm2
movdqa 0xb9b(%rip),%xmm1
movdqa %xmm1,%xmm3
pcmpgtd %xmm2,%xmm3
pcmpeqd %xmm1,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm3
por    %xmm2,%xmm3
movd   %xmm3,%eax
not    %eax
test   $0x1,%al
je     14a1 <print_graph+0x3a1>
movb   $0x7c,0x2(%rdx)
pxor   0xb57(%rip),%xmm0
movdqa %xmm1,%xmm2
pcmpgtd %xmm0,%xmm2
pcmpeqd %xmm0,%xmm1
pshufd $0xf5,%xmm1,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
psrldq $0x6,%xmm2
movd   %xmm2,%eax
shr    $0x10,%eax
test   $0x1,%al
je     14e3 <print_graph+0x3e3>
movb   $0x7c,0xa(%rdx)
movdqa 0xb35(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm4
pand   %xmm3,%xmm4
pshufd $0xf5,%xmm3,%xmm2
por    %xmm4,%xmm2
pxor   %xmm2,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     151a <print_graph+0x41a>
movb   $0x7c,0x12(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     152f <print_graph+0x42f>
movb   $0x7c,0x1a(%rdx)
movdqa 0xaf9(%rip),%xmm3
movdqa %xmm3,%xmm2
pcmpgtd %xmm0,%xmm2
pshufd $0x44,%xmm2,%xmm4
pcmpeqd %xmm0,%xmm3
pshufd $0x55,%xmm3,%xmm5
pand   %xmm4,%xmm5
pshufd $0x55,%xmm2,%xmm4
por    %xmm5,%xmm4
pxor   %xmm1,%xmm4
pextrw $0x4,%xmm4,%eax
test   $0x1,%al
je     156b <print_graph+0x46b>
movb   $0x7c,0x22(%rdx)
pshufd $0xf5,%xmm3,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     1592 <print_graph+0x492>
movb   $0x7c,0x2a(%rdx)
movdqa 0xaa6(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm0
por    %xmm2,%xmm0
pxor   %xmm0,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     15c9 <print_graph+0x4c9>
movb   $0x7c,0x32(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm0
pextrw $0x4,%xmm0,%eax
test   $0x1,%al
je     15de <print_graph+0x4de>
movb   $0x7c,0x3a(%rdx)
mov    0xc(%rdi),%eax
test   %eax,%eax
je     177e <print_graph+0x67e>
add    $0xffffffff,%eax
cmp    $0x7,%eax
mov    $0x7,%ecx
cmovb  %eax,%ecx
movq   %rcx,%xmm0
pshufd $0x44,%xmm0,%xmm0
movdqa 0x9f7(%rip),%xmm2
por    %xmm0,%xmm2
movdqa 0x9fb(%rip),%xmm1
movdqa %xmm1,%xmm3
pcmpgtd %xmm2,%xmm3
pcmpeqd %xmm1,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm3
por    %xmm2,%xmm3
movd   %xmm3,%eax
not    %eax
test   $0x1,%al
je     1641 <print_graph+0x541>
movb   $0x7c,0x3(%rdx)
pxor   0x9b7(%rip),%xmm0
movdqa %xmm1,%xmm2
pcmpgtd %xmm0,%xmm2
pcmpeqd %xmm0,%xmm1
pshufd $0xf5,%xmm1,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
psrldq $0x6,%xmm2
movd   %xmm2,%eax
shr    $0x10,%eax
test   $0x1,%al
je     1683 <print_graph+0x583>
movb   $0x7c,0xb(%rdx)
movdqa 0x995(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm4
pand   %xmm3,%xmm4
pshufd $0xf5,%xmm3,%xmm2
por    %xmm4,%xmm2
pxor   %xmm2,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     16ba <print_graph+0x5ba>
movb   $0x7c,0x13(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     16cf <print_graph+0x5cf>
movb   $0x7c,0x1b(%rdx)
movdqa 0x959(%rip),%xmm3
movdqa %xmm3,%xmm2
pcmpgtd %xmm0,%xmm2
pshufd $0x44,%xmm2,%xmm4
pcmpeqd %xmm0,%xmm3
pshufd $0x55,%xmm3,%xmm5
pand   %xmm4,%xmm5
pshufd $0x55,%xmm2,%xmm4
por    %xmm5,%xmm4
pxor   %xmm1,%xmm4
pextrw $0x4,%xmm4,%eax
test   $0x1,%al
je     170b <print_graph+0x60b>
movb   $0x7c,0x23(%rdx)
pshufd $0xf5,%xmm3,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     1732 <print_graph+0x632>
movb   $0x7c,0x2b(%rdx)
movdqa 0x906(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm0
por    %xmm2,%xmm0
pxor   %xmm0,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     1769 <print_graph+0x669>
movb   $0x7c,0x33(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm0
pextrw $0x4,%xmm0,%eax
test   $0x1,%al
je     177e <print_graph+0x67e>
movb   $0x7c,0x3b(%rdx)
mov    0x10(%rdi),%eax
test   %eax,%eax
je     191e <print_graph+0x81e>
add    $0xffffffff,%eax
cmp    $0x7,%eax
mov    $0x7,%ecx
cmovb  %eax,%ecx
movq   %rcx,%xmm0
pshufd $0x44,%xmm0,%xmm0
movdqa 0x857(%rip),%xmm2
por    %xmm0,%xmm2
movdqa 0x85b(%rip),%xmm1
movdqa %xmm1,%xmm3
pcmpgtd %xmm2,%xmm3
pcmpeqd %xmm1,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm3
por    %xmm2,%xmm3
movd   %xmm3,%eax
not    %eax
test   $0x1,%al
je     17e1 <print_graph+0x6e1>
movb   $0x7c,0x4(%rdx)
pxor   0x817(%rip),%xmm0
movdqa %xmm1,%xmm2
pcmpgtd %xmm0,%xmm2
pcmpeqd %xmm0,%xmm1
pshufd $0xf5,%xmm1,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
psrldq $0x6,%xmm2
movd   %xmm2,%eax
shr    $0x10,%eax
test   $0x1,%al
je     1823 <print_graph+0x723>
movb   $0x7c,0xc(%rdx)
movdqa 0x7f5(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm4
pand   %xmm3,%xmm4
pshufd $0xf5,%xmm3,%xmm2
por    %xmm4,%xmm2
pxor   %xmm2,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     185a <print_graph+0x75a>
movb   $0x7c,0x14(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     186f <print_graph+0x76f>
movb   $0x7c,0x1c(%rdx)
movdqa 0x7b9(%rip),%xmm3
movdqa %xmm3,%xmm2
pcmpgtd %xmm0,%xmm2
pshufd $0x44,%xmm2,%xmm4
pcmpeqd %xmm0,%xmm3
pshufd $0x55,%xmm3,%xmm5
pand   %xmm4,%xmm5
pshufd $0x55,%xmm2,%xmm4
por    %xmm5,%xmm4
pxor   %xmm1,%xmm4
pextrw $0x4,%xmm4,%eax
test   $0x1,%al
je     18ab <print_graph+0x7ab>
movb   $0x7c,0x24(%rdx)
pshufd $0xf5,%xmm3,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     18d2 <print_graph+0x7d2>
movb   $0x7c,0x2c(%rdx)
movdqa 0x766(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm0
por    %xmm2,%xmm0
pxor   %xmm0,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     1909 <print_graph+0x809>
movb   $0x7c,0x34(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm0
pextrw $0x4,%xmm0,%eax
test   $0x1,%al
je     191e <print_graph+0x81e>
movb   $0x7c,0x3c(%rdx)
mov    0x14(%rdi),%eax
test   %eax,%eax
je     1abe <print_graph+0x9be>
add    $0xffffffff,%eax
cmp    $0x7,%eax
mov    $0x7,%ecx
cmovb  %eax,%ecx
movq   %rcx,%xmm0
pshufd $0x44,%xmm0,%xmm0
movdqa 0x6b7(%rip),%xmm2
por    %xmm0,%xmm2
movdqa 0x6bb(%rip),%xmm1
movdqa %xmm1,%xmm3
pcmpgtd %xmm2,%xmm3
pcmpeqd %xmm1,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm3
por    %xmm2,%xmm3
movd   %xmm3,%eax
not    %eax
test   $0x1,%al
je     1981 <print_graph+0x881>
movb   $0x7c,0x5(%rdx)
pxor   0x677(%rip),%xmm0
movdqa %xmm1,%xmm2
pcmpgtd %xmm0,%xmm2
pcmpeqd %xmm0,%xmm1
pshufd $0xf5,%xmm1,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
psrldq $0x6,%xmm2
movd   %xmm2,%eax
shr    $0x10,%eax
test   $0x1,%al
je     19c3 <print_graph+0x8c3>
movb   $0x7c,0xd(%rdx)
movdqa 0x655(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm4
pand   %xmm3,%xmm4
pshufd $0xf5,%xmm3,%xmm2
por    %xmm4,%xmm2
pxor   %xmm2,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     19fa <print_graph+0x8fa>
movb   $0x7c,0x15(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     1a0f <print_graph+0x90f>
movb   $0x7c,0x1d(%rdx)
movdqa 0x619(%rip),%xmm3
movdqa %xmm3,%xmm2
pcmpgtd %xmm0,%xmm2
pshufd $0x44,%xmm2,%xmm4
pcmpeqd %xmm0,%xmm3
pshufd $0x55,%xmm3,%xmm5
pand   %xmm4,%xmm5
pshufd $0x55,%xmm2,%xmm4
por    %xmm5,%xmm4
pxor   %xmm1,%xmm4
pextrw $0x4,%xmm4,%eax
test   $0x1,%al
je     1a4b <print_graph+0x94b>
movb   $0x7c,0x25(%rdx)
pshufd $0xf5,%xmm3,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     1a72 <print_graph+0x972>
movb   $0x7c,0x2d(%rdx)
movdqa 0x5c6(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm0
por    %xmm2,%xmm0
pxor   %xmm0,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     1aa9 <print_graph+0x9a9>
movb   $0x7c,0x35(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm0
pextrw $0x4,%xmm0,%eax
test   $0x1,%al
je     1abe <print_graph+0x9be>
movb   $0x7c,0x3d(%rdx)
mov    0x18(%rdi),%eax
test   %eax,%eax
je     1c5e <print_graph+0xb5e>
add    $0xffffffff,%eax
cmp    $0x7,%eax
mov    $0x7,%ecx
cmovb  %eax,%ecx
movq   %rcx,%xmm0
pshufd $0x44,%xmm0,%xmm0
movdqa 0x517(%rip),%xmm2
por    %xmm0,%xmm2
movdqa 0x51b(%rip),%xmm1
movdqa %xmm1,%xmm3
pcmpgtd %xmm2,%xmm3
pcmpeqd %xmm1,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm3
por    %xmm2,%xmm3
movd   %xmm3,%eax
not    %eax
test   $0x1,%al
je     1b21 <print_graph+0xa21>
movb   $0x7c,0x6(%rdx)
pxor   0x4d7(%rip),%xmm0
movdqa %xmm1,%xmm2
pcmpgtd %xmm0,%xmm2
pcmpeqd %xmm0,%xmm1
pshufd $0xf5,%xmm1,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
psrldq $0x6,%xmm2
movd   %xmm2,%eax
shr    $0x10,%eax
test   $0x1,%al
je     1b63 <print_graph+0xa63>
movb   $0x7c,0xe(%rdx)
movdqa 0x4b5(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm4
pand   %xmm3,%xmm4
pshufd $0xf5,%xmm3,%xmm2
por    %xmm4,%xmm2
pxor   %xmm2,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     1b9a <print_graph+0xa9a>
movb   $0x7c,0x16(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     1baf <print_graph+0xaaf>
movb   $0x7c,0x1e(%rdx)
movdqa 0x479(%rip),%xmm3
movdqa %xmm3,%xmm2
pcmpgtd %xmm0,%xmm2
pshufd $0x44,%xmm2,%xmm4
pcmpeqd %xmm0,%xmm3
pshufd $0x55,%xmm3,%xmm5
pand   %xmm4,%xmm5
pshufd $0x55,%xmm2,%xmm4
por    %xmm5,%xmm4
pxor   %xmm1,%xmm4
pextrw $0x4,%xmm4,%eax
test   $0x1,%al
je     1beb <print_graph+0xaeb>
movb   $0x7c,0x26(%rdx)
pshufd $0xf5,%xmm3,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     1c12 <print_graph+0xb12>
movb   $0x7c,0x2e(%rdx)
movdqa 0x426(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm0
por    %xmm2,%xmm0
pxor   %xmm0,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     1c49 <print_graph+0xb49>
movb   $0x7c,0x36(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm0
pextrw $0x4,%xmm0,%eax
test   $0x1,%al
je     1c5e <print_graph+0xb5e>
movb   $0x7c,0x3e(%rdx)
mov    0x1c(%rdi),%eax
test   %eax,%eax
je     1dfe <print_graph+0xcfe>
add    $0xffffffff,%eax
cmp    $0x7,%eax
mov    $0x7,%ecx
cmovb  %eax,%ecx
movq   %rcx,%xmm0
pshufd $0x44,%xmm0,%xmm0
movdqa 0x377(%rip),%xmm2
por    %xmm0,%xmm2
movdqa 0x37b(%rip),%xmm1
movdqa %xmm1,%xmm3
pcmpgtd %xmm2,%xmm3
pcmpeqd %xmm1,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm3
por    %xmm2,%xmm3
movd   %xmm3,%eax
not    %eax
test   $0x1,%al
je     1cc1 <print_graph+0xbc1>
movb   $0x7c,0x7(%rdx)
pxor   0x337(%rip),%xmm0
movdqa %xmm1,%xmm2
pcmpgtd %xmm0,%xmm2
pcmpeqd %xmm0,%xmm1
pshufd $0xf5,%xmm1,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
psrldq $0x6,%xmm2
movd   %xmm2,%eax
shr    $0x10,%eax
test   $0x1,%al
je     1d03 <print_graph+0xc03>
movb   $0x7c,0xf(%rdx)
movdqa 0x315(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm4
pand   %xmm3,%xmm4
pshufd $0xf5,%xmm3,%xmm2
por    %xmm4,%xmm2
pxor   %xmm2,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     1d3a <print_graph+0xc3a>
movb   $0x7c,0x17(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     1d4f <print_graph+0xc4f>
movb   $0x7c,0x1f(%rdx)
movdqa 0x2d9(%rip),%xmm3
movdqa %xmm3,%xmm2
pcmpgtd %xmm0,%xmm2
pshufd $0x44,%xmm2,%xmm4
pcmpeqd %xmm0,%xmm3
pshufd $0x55,%xmm3,%xmm5
pand   %xmm4,%xmm5
pshufd $0x55,%xmm2,%xmm4
por    %xmm5,%xmm4
pxor   %xmm1,%xmm4
pextrw $0x4,%xmm4,%eax
test   $0x1,%al
je     1d8b <print_graph+0xc8b>
movb   $0x7c,0x27(%rdx)
pshufd $0xf5,%xmm3,%xmm1
pand   %xmm2,%xmm1
pshufd $0xf5,%xmm2,%xmm2
por    %xmm1,%xmm2
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm2
pextrw $0x4,%xmm2,%eax
test   $0x1,%al
je     1db2 <print_graph+0xcb2>
movb   $0x7c,0x2f(%rdx)
movdqa 0x286(%rip),%xmm2
movdqa %xmm2,%xmm3
pcmpgtd %xmm0,%xmm3
pcmpeqd %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm2
pand   %xmm3,%xmm2
pshufd $0xf5,%xmm3,%xmm0
por    %xmm2,%xmm0
pxor   %xmm0,%xmm1
pextrw $0x0,%xmm1,%eax
test   $0x1,%al
je     1de9 <print_graph+0xce9>
movb   $0x7c,0x37(%rdx)
pcmpeqd %xmm1,%xmm1
pxor   %xmm1,%xmm0
pextrw $0x4,%xmm0,%eax
test   $0x1,%al
je     1dfe <print_graph+0xcfe>
movb   $0x7c,0x3f(%rdx)
ret

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

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