#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
void draw(int size, int sand) {
  char a[(size * 2)][((size * 2) + 1)], i, j;
  int flag = 0;
  for (i = 0; i < (size * 2); i++) {
    for (j = 0; j < ((size * 2) + 1); j++) {
      a[i][j] = ' ';
    }
  }
  for (i = 0; i < (size * 2); i++) {
    for (j = 0; j < ((size * 2) + 1); j++) {
      a[i][0] = '*';
      a[i][((size * 2) + 1) - 1] = '*';
      if ((i == 0) || (i == (size * 2) - 1)) {
        if (((j % 2) == 0) && (j != ((size * 2) + 1) - 1)) {
          a[i][j] = ' ';
        } else {
          a[i][j] = '*';
        }
      } else {
        if (i < ((size * 2) + 1) / 2) {
          a[i][i + 1] = '*';
          a[i][(((size * 2) + 1) - 2) - i] = '*';
        } else {
          a[i][i] = '*';
          a[i][(((size * 2) + 1) - 2) - (i - 1)] = '*';
        }
      }
    }
  }
  for (i = 0; i < (size * 2); i++) {
    flag = 0;
    for (j = 0; j < ((size * 2) + 1); j++) {
      if ((i != 0) && (i != ((size * 2) - 1)) && (i != ((size * 2) / 2)) &&
          (i != ((size * 2) / 2) - 1)) {
        if (((!(i <= sand)) && (i < (size * 2) / 2)) ||
            (i >= ((size * 2) - 1) - sand)) {
          if (a[i][j] == '*') {
            flag++;
          }
          if ((flag == 2) && (a[i][j] != '*') && (a[i][j] == ' ')) {
            a[i][j] = '.';
          }
        }
      }
    }
  }
  for (i = 0; i < (size * 2); i++) {
    for (j = 0; j < ((size * 2) + 1); j++) {
      printf("%c", a[i][j]);
    }
    printf("\n");
  }
}


x86 assembly (clang, -O0):
<draw>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    -0x4(%rbp),%edx
mov    %edx,%eax
add    %eax,%eax
mov    %eax,%ecx
mov    %edx,%eax
lea    0x1(%rax,%rax,1),%eax
mov    %rax,-0x38(%rbp)
mov    %rsp,%rdx
mov    %rdx,-0x10(%rbp)
mov    %rcx,%rsi
imul   %rax,%rsi
add    $0xf,%rsi
and    $0xfffffffffffffff0,%rsi
mov    %rsp,%rdx
sub    %rsi,%rdx
mov    %rdx,-0x30(%rbp)
mov    %rdx,%rsp
mov    %rcx,-0x18(%rbp)
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x28(%rbp)
movb   $0x0,-0x21(%rbp)
movsbl -0x21(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
jge    11ce <draw+0xbe>
movb   $0x0,-0x22(%rbp)
movsbl -0x22(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    11bc <draw+0xac>
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rdx
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
add    %rcx,%rax
movsbq -0x22(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x22(%rbp),%al
add    $0x1,%al
mov    %al,-0x22(%rbp)
jmp    117d <draw+0x6d>
jmp    11c1 <draw+0xb1>
mov    -0x21(%rbp),%al
add    $0x1,%al
mov    %al,-0x21(%rbp)
jmp    1167 <draw+0x57>
movb   $0x0,-0x21(%rbp)
movsbl -0x21(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
jge    13a9 <draw+0x299>
movb   $0x0,-0x22(%rbp)
movsbl -0x22(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    1397 <draw+0x287>
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rdx
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
movb   $0x2a,(%rax,%rcx,1)
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x2a,(%rax,%rcx,1)
movsbl -0x21(%rbp),%eax
cmp    $0x0,%eax
je     1253 <draw+0x143>
movsbl -0x21(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    12c4 <draw+0x1b4>
movsbl -0x22(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    12a2 <draw+0x192>
movsbl -0x22(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
je     12a2 <draw+0x192>
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rdx
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
add    %rcx,%rax
movsbq -0x22(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
jmp    12bf <draw+0x1af>
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rdx
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
add    %rcx,%rax
movsbq -0x22(%rbp),%rcx
movb   $0x2a,(%rax,%rcx,1)
jmp    1385 <draw+0x275>
movsbl -0x21(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x4(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x3c(%rbp),%eax
cmp    %ecx,%eax
jge    1338 <draw+0x228>
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rdx
movsbq -0x21(%rbp),%rsi
imul   %rdx,%rsi
mov    %rax,%rcx
add    %rsi,%rcx
movsbl -0x21(%rbp),%esi
add    $0x1,%esi
movslq %esi,%rsi
movb   $0x2a,(%rcx,%rsi,1)
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
sub    $0x2,%ecx
movsbl -0x21(%rbp),%edx
sub    %edx,%ecx
movslq %ecx,%rcx
movb   $0x2a,(%rax,%rcx,1)
jmp    1380 <draw+0x270>
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rdx
movsbq -0x21(%rbp),%rsi
imul   %rdx,%rsi
mov    %rax,%rcx
add    %rsi,%rcx
movsbq -0x21(%rbp),%rsi
movb   $0x2a,(%rcx,%rsi,1)
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
sub    $0x2,%ecx
movsbl -0x21(%rbp),%edx
sub    $0x1,%edx
sub    %edx,%ecx
movslq %ecx,%rcx
movb   $0x2a,(%rax,%rcx,1)
jmp    1385 <draw+0x275>
jmp    138a <draw+0x27a>
mov    -0x22(%rbp),%al
add    $0x1,%al
mov    %al,-0x22(%rbp)
jmp    11e8 <draw+0xd8>
jmp    139c <draw+0x28c>
mov    -0x21(%rbp),%al
add    $0x1,%al
mov    %al,-0x21(%rbp)
jmp    11d2 <draw+0xc2>
movb   $0x0,-0x21(%rbp)
movsbl -0x21(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
jge    155f <draw+0x44f>
movl   $0x0,-0x28(%rbp)
movb   $0x0,-0x22(%rbp)
movsbl -0x22(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    154d <draw+0x43d>
movsbl -0x21(%rbp),%eax
cmp    $0x0,%eax
je     153b <draw+0x42b>
movsbl -0x21(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
je     153b <draw+0x42b>
movsbl -0x21(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x4(%rbp),%eax
shl    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x40(%rbp),%eax
cmp    %ecx,%eax
je     153b <draw+0x42b>
movsbl -0x21(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x4(%rbp),%eax
shl    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x44(%rbp),%eax
sub    $0x1,%ecx
cmp    %ecx,%eax
je     153b <draw+0x42b>
movsbl -0x21(%rbp),%eax
cmp    -0x8(%rbp),%eax
jle    1477 <draw+0x367>
movsbl -0x21(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x4(%rbp),%eax
shl    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x48(%rbp),%eax
cmp    %ecx,%eax
jl     148f <draw+0x37f>
movsbl -0x21(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
sub    $0x1,%ecx
sub    -0x8(%rbp),%ecx
cmp    %ecx,%eax
jl     1536 <draw+0x426>
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rdx
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
add    %rcx,%rax
movsbq -0x22(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
jne    14be <draw+0x3ae>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x2,-0x28(%rbp)
jne    1531 <draw+0x421>
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rdx
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
add    %rcx,%rax
movsbq -0x22(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
je     1531 <draw+0x421>
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rdx
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
add    %rcx,%rax
movsbq -0x22(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
jne    1531 <draw+0x421>
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rdx
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
add    %rcx,%rax
movsbq -0x22(%rbp),%rcx
movb   $0x2e,(%rax,%rcx,1)
jmp    1536 <draw+0x426>
jmp    153b <draw+0x42b>
jmp    1540 <draw+0x430>
mov    -0x22(%rbp),%al
add    $0x1,%al
mov    %al,-0x22(%rbp)
jmp    13ca <draw+0x2ba>
jmp    1552 <draw+0x442>
mov    -0x21(%rbp),%al
add    $0x1,%al
mov    %al,-0x21(%rbp)
jmp    13ad <draw+0x29d>
movb   $0x0,-0x21(%rbp)
movsbl -0x21(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
jge    15e1 <draw+0x4d1>
movb   $0x0,-0x22(%rbp)
movsbl -0x22(%rbp),%eax
mov    -0x4(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    15c6 <draw+0x4b6>
mov    -0x30(%rbp),%rax
mov    -0x38(%rbp),%rdx
movsbq -0x21(%rbp),%rcx
imul   %rdx,%rcx
add    %rcx,%rax
movsbq -0x22(%rbp),%rcx
movsbl (%rax,%rcx,1),%esi
lea    0xa4e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x22(%rbp),%al
add    $0x1,%al
mov    %al,-0x22(%rbp)
jmp    1579 <draw+0x469>
lea    0xa36(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x21(%rbp),%al
add    $0x1,%al
mov    %al,-0x21(%rbp)
jmp    1563 <draw+0x453>
mov    -0x10(%rbp),%rax
mov    %rax,%rsp
mov    %rbp,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<draw>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %esi,-0x30(%rbp)
mov    %edi,%ebx
lea    (%rbx,%rbx,1),%r15d
lea    (%rbx,%rbx,1),%r14d
add    $0x1,%r14d
mov    %r14,%rax
imul   %r15,%rax
add    $0xf,%rax
and    $0xfffffffffffffff0,%rax
mov    %rsp,%rcx
sub    %rax,%rcx
mov    %rcx,%rsp
test   %edi,%edi
jle    157b <draw+0x46b>
mov    %rcx,-0x68(%rbp)
movabs $0x2000000000000000,%rdi
lea    (%rbx,%rbx,1),%ecx
add    $0xffffffe0,%ecx
mov    %ecx,-0x5c(%rbp)
mov    %ecx,%esi
shr    $0x5,%esi
add    $0x1,%esi
mov    %r15d,%ecx
or     $0x1,%cl
setle  %cl
cmp    $0x100,%r15d
setae  %dl
or     %dl,%cl
mov    %rbx,-0x38(%rbp)
mov    %ebx,%eax
and    $0x40,%eax
shr    $0x6,%eax
or     %dl,%al
or     %cl,%al
mov    %r15d,%ecx
and    $0xffffffe0,%ecx
mov    %esi,%edx
and    $0x3,%edx
and    $0xfffffffc,%esi
mov    %esi,-0x44(%rbp)
mov    %r14d,%esi
mov    %ecx,-0x58(%rbp)
sub    %ecx,%esi
mov    %esi,-0x50(%rbp)
mov    %r15d,%ecx
and    $0xf8,%cl
mov    %cl,-0x29(%rbp)
mov    %edx,-0x54(%rbp)
neg    %edx
mov    %edx,-0x48(%rbp)
mov    %r15d,%ecx
and    $0xfffffff8,%ecx
neg    %ecx
mov    %ecx,-0x60(%rbp)
xor    %esi,%esi
movabs $0x2020202020202020,%r13
20 20 20
movabs $0x800000000000000,%r11
movaps 0xe15(%rip),%xmm0
movabs $0x4000000000000000,%r10
movabs $0x6000000000000000,%r8
movabs $0x8000000000000000,%r9
mov    %r15,-0x40(%rbp)
mov    %eax,-0x4c(%rbp)
jmp    1231 <draw+0x121>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%sil
movsbl %sil,%ecx
cmp    %ecx,%r15d
jle    1379 <draw+0x269>
test   %r14d,%r14d
jle    1220 <draw+0x110>
cmp    $0x8,%r14d
setb   %cl
movsbq %sil,%r12
imul   %r14,%r12
add    -0x68(%rbp),%r12
xor    %ebx,%ebx
or     %al,%cl
mov    $0x0,%ecx
jne    1360 <draw+0x250>
cmp    $0x20,%r14d
jb     132a <draw+0x21a>
mov    %r9,%rax
mov    %r8,%r9
xor    %r8d,%r8d
cmpl   $0x60,-0x5c(%rbp)
jb     12d8 <draw+0x1c8>
mov    %r10,%rbx
xor    %edx,%edx
mov    -0x44(%rbp),%r15d
xor    %r8d,%r8d
nopl   (%rax)
mov    %rdx,%rcx
sar    $0x38,%rcx
movups %xmm0,(%r12,%rcx,1)
movups %xmm0,0x10(%r12,%rcx,1)
lea    (%rdx,%rdi,1),%rcx
sar    $0x38,%rcx
movups %xmm0,(%r12,%rcx,1)
movups %xmm0,0x10(%r12,%rcx,1)
lea    (%rdx,%rbx,1),%rcx
sar    $0x38,%rcx
movups %xmm0,(%r12,%rcx,1)
movups %xmm0,0x10(%r12,%rcx,1)
lea    (%rdx,%r9,1),%rcx
sar    $0x38,%rcx
movups %xmm0,(%r12,%rcx,1)
movups %xmm0,0x10(%r12,%rcx,1)
sub    $0xffffff80,%r8d
add    %rax,%rdx
add    $0xfffffffc,%r15d
jne    1280 <draw+0x170>
cmpl   $0x0,-0x54(%rbp)
je     1309 <draw+0x1f9>
shl    $0x38,%r8
mov    -0x48(%rbp),%ecx
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r8,%rdx
sar    $0x38,%rdx
movups %xmm0,(%r12,%rdx,1)
movups %xmm0,0x10(%r12,%rdx,1)
add    %rdi,%r8
inc    %ecx
jne    12f0 <draw+0x1e0>
mov    -0x58(%rbp),%edx
mov    %edx,%ecx
mov    %edx,%ebx
cmpl   $0x7,-0x50(%rbp)
mov    -0x40(%rbp),%r15
mov    -0x4c(%rbp),%eax
mov    %r9,%r8
movabs $0x8000000000000000,%r9
jbe    1360 <draw+0x250>
mov    %rbx,%rdx
shl    $0x38,%rdx
add    -0x60(%rbp),%ebx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %rdx,%rcx
sar    $0x38,%rcx
mov    %r13,(%r12,%rcx,1)
add    %r11,%rdx
add    $0x8,%ebx
jne    1340 <draw+0x230>
mov    -0x29(%rbp),%cl
cs nopw 0x0(%rax,%rax,1)
movsbq %cl,%rcx
movb   $0x20,(%r12,%rcx,1)
add    $0x1,%cl
movsbl %cl,%edx
cmp    %edx,%r14d
jg     1360 <draw+0x250>
jmp    1220 <draw+0x110>
cmpl   $0x0,-0x38(%rbp)
mov    -0x68(%rbp),%r13
jle    157b <draw+0x46b>
movslq %r15d,%rcx
lea    -0x1(%r15),%r8d
mov    %r14d,%r9d
shr    $0x1f,%r9d
add    %r14d,%r9d
sar    %r9d
xor    %esi,%esi
jmp    13b1 <draw+0x2a1>
nop
add    $0x1,%sil
movsbl %sil,%esi
cmp    %esi,%r15d
jle    145a <draw+0x34a>
test   %r14d,%r14d
jle    13a0 <draw+0x290>
movslq %esi,%r12
mov    %r12,%rdi
imul   %r14,%rdi
add    %r13,%rdi
test   %sil,%sil
sete   %al
cmp    %r12d,%r8d
sete   %dl
or     %al,%dl
mov    %r15d,%eax
sub    %r12d,%eax
movslq %eax,%r10
mov    %r12d,%eax
not    %eax
add    %r15d,%eax
movslq %eax,%r11
xor    %eax,%eax
jmp    1404 <draw+0x2f4>
nopl   0x0(%rax)
movb   $0x2a,(%rdi,%r12,1)
movb   $0x2a,(%rdi,%r10,1)
add    $0x1,%al
movsbl %al,%eax
cmp    %eax,%r14d
jle    13a0 <draw+0x290>
mov    %eax,%eax
movb   $0x2a,(%rdi)
movb   $0x2a,(%rdi,%rcx,1)
test   %dl,%dl
je     1430 <draw+0x320>
test   $0x1,%al
jne    1450 <draw+0x340>
cmp    %eax,%r15d
je     1450 <draw+0x340>
movslq %eax,%rbx
movb   $0x20,(%rdi,%rbx,1)
jmp    13fa <draw+0x2ea>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmp    %esi,%r9d
jle    13f0 <draw+0x2e0>
movb   $0x2a,0x1(%rdi,%r12,1)
movb   $0x2a,(%rdi,%r11,1)
jmp    13fa <draw+0x2ea>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsbq %al,%rbx
movb   $0x2a,(%rdi,%rbx,1)
jmp    13fa <draw+0x2ea>
mov    -0x38(%rbp),%rax
test   %eax,%eax
jle    157b <draw+0x46b>
lea    -0x1(%rax),%r9d
mov    %r8d,%r10d
sub    -0x30(%rbp),%r10d
xor    %r15d,%r15d
mov    $0x2e,%r11d
jmp    1492 <draw+0x382>
nopl   0x0(%rax)
add    $0x1,%r15b
movsbl %r15b,%r15d
cmp    %r15d,-0x40(%rbp)
jle    151d <draw+0x40d>
test   %r14d,%r14d
jle    1480 <draw+0x370>
test   %r15b,%r15b
sete   %dil
cmp    %r15d,%r8d
sete   %al
cmp    -0x38(%rbp),%r15d
sete   %dl
setge  %bl
or     %al,%dl
cmp    %r15d,%r9d
sete   %al
cmp    -0x30(%rbp),%r15d
setle  %cl
or     %bl,%cl
cmp    %r15d,%r10d
setg   %bl
and    %cl,%bl
movslq %r15d,%r12
imul   %r14,%r12
add    %r13,%r12
or     %dil,%al
or     %dl,%al
or     %bl,%al
xor    %edi,%edi
xor    %edx,%edx
jmp    14eb <draw+0x3db>
xchg   %ax,%ax
add    $0x1,%dl
movsbl %dl,%ecx
cmp    %ecx,%r14d
jle    1480 <draw+0x370>
test   %al,%al
jne    14e0 <draw+0x3d0>
movsbq %dl,%rbx
movzbl (%r12,%rbx,1),%ecx
xor    %esi,%esi
cmp    $0x2a,%cl
sete   %sil
add    %esi,%edi
cmp    $0x2,%edi
jne    14e0 <draw+0x3d0>
cmp    $0x20,%cl
movzbl %cl,%ecx
cmove  %r11d,%ecx
mov    %cl,(%r12,%rbx,1)
mov    $0x2,%edi
jmp    14e0 <draw+0x3d0>
cmpl   $0x0,-0x38(%rbp)
jle    157b <draw+0x46b>
xor    %r12d,%r12d
jmp    1547 <draw+0x437>
nopl   0x0(%rax,%rax,1)
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%r12b
movsbl %r12b,%eax
cmp    %eax,-0x40(%rbp)
jle    157b <draw+0x46b>
test   %r14d,%r14d
jle    1530 <draw+0x420>
movsbq %r12b,%r15
imul   %r14,%r15
add    %r13,%r15
xor    %ebx,%ebx
nopl   0x0(%rax)
movsbq %bl,%rbx
movsbl (%r15,%rbx,1),%edi
call   1030 <putchar@plt>
add    $0x1,%bl
movsbl %bl,%eax
cmp    %eax,%r14d
jg     1560 <draw+0x450>
jmp    1530 <draw+0x420>
lea    -0x28(%rbp),%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @draw(i32 %0, i32 %1) {
%3 = shl i32 %0, 1
%4 = zext i32 %3 to i64
%5 = or i32 %3, 1
%6 = zext i32 %5 to i64
%7 = mul nuw i64 %6, %4
%8 = alloca i8, i64 %7
%9 = icmp sgt i32 %0, 0
br i1 %9, label %10, label %255
10: ; preds = %2
%11 = icmp sgt i32 %5, 0
%12 = shl i32 %0, 1
%13 = add i32 %12, -32
%14 = lshr i32 %13, 5
%15 = add nuw nsw i32 %14, 1
%16 = icmp ult i32 %5, 8
%17 = trunc i32 %3 to i8
%18 = or i8 %17, 1
%19 = icmp slt i8 %18, 1
%20 = icmp ugt i32 %3, 255
%21 = or i1 %19, %20
%22 = and i32 %0, 64
%23 = icmp ne i32 %22, 0
%24 = icmp ugt i32 %3, 255
%25 = or i1 %23, %24
%26 = or i1 %21, %25
%27 = icmp ult i32 %5, 32
%28 = and i32 %3, -32
%29 = and i32 %15, 3
%30 = icmp ult i32 %13, 96
%31 = and i32 %15, 268435452
%32 = icmp eq i32 %29, 0
%33 = trunc i32 %28 to i8
%34 = sub i32 %5, %28
%35 = icmp ult i32 %34, 8
%36 = and i32 %3, -8
%37 = trunc i32 %36 to i8
br label %38
38: ; preds = %10, %126
%39 = phi i8 [ 0, %10 ], [ %127, %126 ]
br i1 %11, label %40, label %126
40: ; preds = %38
%41 = sext i8 %39 to i64
%42 = mul nsw i64 %41, %6
%43 = getelementptr inbounds i8, i8* %8, i64 %42
%44 = or i1 %16, %26
br i1 %44, label %100, label %45
45: ; preds = %40
br i1 %27, label %102, label %46
46: ; preds = %45
br i1 %30, label %84, label %47
47: ; preds = %46, %47
%48 = phi i32 [ %81, %47 ], [ 0, %46 ]
%49 = phi i32 [ %82, %47 ], [ 0, %46 ]
%50 = zext i32 %48 to i64
%51 = shl i64 %50, 56
%52 = ashr exact i64 %51, 56
%53 = getelementptr inbounds i8, i8* %43, i64 %52
%54 = bitcast i8* %53 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %54
%55 = getelementptr inbounds i8, i8* %53, i64 16
%56 = bitcast i8* %55 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %56
%57 = or i32 %48, 32
%58 = zext i32 %57 to i64
%59 = shl i64 %58, 56
%60 = ashr exact i64 %59, 56
%61 = getelementptr inbounds i8, i8* %43, i64 %60
%62 = bitcast i8* %61 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %62
%63 = getelementptr inbounds i8, i8* %61, i64 16
%64 = bitcast i8* %63 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %64
%65 = or i32 %48, 64
%66 = zext i32 %65 to i64
%67 = shl i64 %66, 56
%68 = ashr exact i64 %67, 56
%69 = getelementptr inbounds i8, i8* %43, i64 %68
%70 = bitcast i8* %69 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %70
%71 = getelementptr inbounds i8, i8* %69, i64 16
%72 = bitcast i8* %71 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %72
%73 = or i32 %48, 96
%74 = zext i32 %73 to i64
%75 = shl i64 %74, 56
%76 = ashr exact i64 %75, 56
%77 = getelementptr inbounds i8, i8* %43, i64 %76
%78 = bitcast i8* %77 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %78
%79 = getelementptr inbounds i8, i8* %77, i64 16
%80 = bitcast i8* %79 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %80
%81 = add nuw i32 %48, 128
%82 = add i32 %49, 4
%83 = icmp eq i32 %82, %31
br i1 %83, label %84, label %47
84: ; preds = %47, %46
%85 = phi i32 [ 0, %46 ], [ %81, %47 ]
br i1 %32, label %99, label %86
86: ; preds = %84, %86
%87 = phi i32 [ %96, %86 ], [ %85, %84 ]
%88 = phi i32 [ %97, %86 ], [ 0, %84 ]
%89 = zext i32 %87 to i64
%90 = shl i64 %89, 56
%91 = ashr exact i64 %90, 56
%92 = getelementptr inbounds i8, i8* %43, i64 %91
%93 = bitcast i8* %92 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %93
%94 = getelementptr inbounds i8, i8* %92, i64 16
%95 = bitcast i8* %94 to <16 x i8>*
store <16 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <16 x i8>* %95
%96 = add nuw i32 %87, 32
%97 = add i32 %88, 1
%98 = icmp eq i32 %97, %29
br i1 %98, label %99, label %86
99: ; preds = %86, %84
br i1 %35, label %100, label %102
100: ; preds = %104, %40, %99
%101 = phi i8 [ 0, %40 ], [ %33, %99 ], [ %37, %104 ]
br label %119
102: ; preds = %45, %99
%103 = phi i32 [ %28, %99 ], [ 0, %45 ]
br label %104
104: ; preds = %104, %102
%105 = phi i32 [ %103, %102 ], [ %111, %104 ]
%106 = zext i32 %105 to i64
%107 = shl i64 %106, 56
%108 = ashr exact i64 %107, 56
%109 = getelementptr inbounds i8, i8* %43, i64 %108
%110 = bitcast i8* %109 to <8 x i8>*
store <8 x i8> <i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32, i8 32>, <8 x i8>* %110
%111 = add nuw i32 %105, 8
%112 = icmp eq i32 %111, %36
br i1 %112, label %100, label %104
113: ; preds = %126
br i1 %9, label %114, label %255
114: ; preds = %113
%115 = icmp sgt i32 %5, 0
%116 = sext i32 %3 to i64
%117 = add nsw i32 %3, -1
%118 = sdiv i32 %5, 2
br label %130
119: ; preds = %100, %119
%120 = phi i8 [ %123, %119 ], [ %101, %100 ]
%121 = sext i8 %120 to i64
%122 = getelementptr inbounds i8, i8* %43, i64 %121
store i8 32, i8* %122
%123 = add i8 %120, 1
%124 = sext i8 %123 to i32
%125 = icmp sgt i32 %5, %124
br i1 %125, label %119, label %126
126: ; preds = %119, %38
%127 = add i8 %39, 1
%128 = sext i8 %127 to i32
%129 = icmp sgt i32 %3, %128
br i1 %129, label %38, label %113
130: ; preds = %114, %182
%131 = phi i32 [ 0, %114 ], [ %185, %182 ]
br i1 %115, label %132, label %182
132: ; preds = %130
%133 = trunc i32 %131 to i8
%134 = sext i32 %131 to i64
%135 = mul nsw i64 %134, %6
%136 = getelementptr inbounds i8, i8* %8, i64 %135
%137 = getelementptr inbounds i8, i8* %136, i64 %116
%138 = icmp eq i8 %133, 0
%139 = icmp eq i32 %117, %131
%140 = select i1 %138, i1 true, i1 %139
%141 = icmp sgt i32 %118, %131
%142 = getelementptr inbounds i8, i8* %136, i64 %134
%143 = sub i32 %3, %131
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds i8, i8* %136, i64 %144
%146 = add nsw i32 %131, 1
%147 = sext i32 %146 to i64
%148 = getelementptr inbounds i8, i8* %136, i64 %147
%149 = xor i32 %131, -1
%150 = add i32 %3, %149
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds i8, i8* %136, i64 %151
br label %159
153: ; preds = %182
br i1 %9, label %154, label %255
154: ; preds = %153
%155 = icmp sgt i32 %5, 0
%156 = add nsw i32 %3, -1
%157 = add nsw i32 %0, -1
%158 = sub nsw i32 %156, %1
br label %187
159: ; preds = %132, %177
%160 = phi i32 [ 0, %132 ], [ %180, %177 ]
%161 = zext i32 %160 to i64
store i8 42, i8* %136
store i8 42, i8* %137
br i1 %140, label %162, label %174
162: ; preds = %159
%163 = and i32 %160, 1
%164 = icmp ne i32 %163, 0
%165 = icmp eq i32 %3, %160
%166 = or i1 %164, %165
br i1 %166, label %170, label %167
167: ; preds = %162
%168 = sext i32 %160 to i64
%169 = getelementptr inbounds i8, i8* %136, i64 %168
store i8 32, i8* %169
br label %177
170: ; preds = %162
%171 = shl i64 %161, 56
%172 = ashr exact i64 %171, 56
%173 = getelementptr inbounds i8, i8* %136, i64 %172
store i8 42, i8* %173
br label %177
174: ; preds = %159
br i1 %141, label %175, label %176
175: ; preds = %174
store i8 42, i8* %148
store i8 42, i8* %152
br label %177
176: ; preds = %174
store i8 42, i8* %142
store i8 42, i8* %145
br label %177
177: ; preds = %170, %167, %176, %175
%178 = shl nsw i32 %160, 24
%179 = add i32 %178, 16777216
%180 = ashr exact i32 %179, 24
%181 = icmp sgt i32 %5, %180
br i1 %181, label %159, label %182
182: ; preds = %177, %130
%183 = shl nsw i32 %131, 24
%184 = add i32 %183, 16777216
%185 = ashr exact i32 %184, 24
%186 = icmp sgt i32 %3, %185
br i1 %186, label %130, label %153
187: ; preds = %154, %229
%188 = phi i32 [ 0, %154 ], [ %232, %229 ]
br i1 %155, label %189, label %229
189: ; preds = %187
%190 = trunc i32 %188 to i8
%191 = icmp eq i8 %190, 0
%192 = icmp eq i32 %156, %188
%193 = icmp eq i32 %188, %0
%194 = or i1 %192, %193
%195 = icmp eq i32 %157, %188
%196 = icmp sle i32 %188, %1
%197 = icmp sge i32 %188, %0
%198 = or i1 %196, %197
%199 = icmp sgt i32 %158, %188
%200 = select i1 %198, i1 %199, i1 false
%201 = sext i32 %188 to i64
%202 = mul nsw i64 %201, %6
%203 = getelementptr inbounds i8, i8* %8, i64 %202
%204 = select i1 %191, i1 true, i1 %194
%205 = select i1 %204, i1 true, i1 %195
%206 = select i1 %205, i1 true, i1 %200
br label %210
207: ; preds = %229
br i1 %9, label %208, label %255
208: ; preds = %207
%209 = icmp sgt i32 %5, 0
br label %234
210: ; preds = %189, %224
%211 = phi i32 [ 0, %189 ], [ %225, %224 ]
%212 = phi i8 [ 0, %189 ], [ %226, %224 ]
br i1 %206, label %224, label %213
213: ; preds = %210
%214 = sext i8 %212 to i64
%215 = getelementptr inbounds i8, i8* %203, i64 %214
%216 = load i8, i8* %215
%217 = icmp eq i8 %216, 42
%218 = zext i1 %217 to i32
%219 = add nsw i32 %211, %218
%220 = icmp eq i32 %219, 2
br i1 %220, label %221, label %224
221: ; preds = %213
%222 = icmp eq i8 %216, 32
%223 = select i1 %222, i8 46, i8 %216
store i8 %223, i8* %215
br label %224
224: ; preds = %210, %221, %213
%225 = phi i32 [ %219, %213 ], [ %211, %210 ], [ 2, %221 ]
%226 = add i8 %212, 1
%227 = sext i8 %226 to i32
%228 = icmp sgt i32 %5, %227
br i1 %228, label %210, label %229
229: ; preds = %224, %187
%230 = shl nsw i32 %188, 24
%231 = add i32 %230, 16777216
%232 = ashr exact i32 %231, 24
%233 = icmp sgt i32 %3, %232
br i1 %233, label %187, label %207
234: ; preds = %208, %250
%235 = phi i8 [ 0, %208 ], [ %252, %250 ]
br i1 %209, label %236, label %250
236: ; preds = %234
%237 = sext i8 %235 to i64
%238 = mul nsw i64 %237, %6
%239 = getelementptr inbounds i8, i8* %8, i64 %238
br label %240
240: ; preds = %236, %240
%241 = phi i8 [ 0, %236 ], [ %247, %240 ]
%242 = sext i8 %241 to i64
%243 = getelementptr inbounds i8, i8* %239, i64 %242
%244 = load i8, i8* %243
%245 = sext i8 %244 to i32
%246 = tail call i32 @putchar(i32 %245)
%247 = add i8 %241, 1
%248 = sext i8 %247 to i32
%249 = icmp sgt i32 %5, %248
br i1 %249, label %240, label %250
250: ; preds = %240, %234
%251 = tail call i32 @putchar(i32 10)
%252 = add i8 %235, 1
%253 = sext i8 %252 to i32
%254 = icmp sgt i32 %3, %253
br i1 %254, label %234, label %255
255: ; preds = %250, %2, %113, %153, %207
ret void
}