#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 */
void *atoi(char *);
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ free(char *);
char *malloc(size_t);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ sleep(int);
int main(int argc, char **argv) {
  if (argc < 3) {
    printf("usage: %s [bytes_to_malloc] [approx_time_to_hold]\n", argv[0]);
    exit(1);
  }
  size_t bytes_to_malloc = atoi(argv[1]);
  int time_to_hold = atoi(argv[2]);
  printf("allocating %d bytes and sleeping for %d seconds\n", bytes_to_malloc,
         time_to_hold);
  printf("note: do NOT press Ctrl+C or you'll leak the memory!\n");
  char *data = malloc(bytes_to_malloc);
  int i, j;
  for (i = 0; i < time_to_hold; i++) {
    for (j = 0; j < bytes_to_malloc; j++) {
      data[j] = j % 255;
    }
    sleep(1);
  }
  free(data);
  printf("all done.\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x3,-0x8(%rbp)
jge    119f <main+0x3f>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0xe72(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    $0x1,%edi
call   1070 <exit@plt>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1060 <atoi@plt>
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1060 <atoi@plt>
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%rsi
mov    -0x1c(%rbp),%edx
lea    0xe65(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xe88(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x18(%rbp),%rdi
call   1050 <malloc@plt>
mov    %rax,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1254 <main+0xf4>
movl   $0x0,-0x30(%rbp)
movslq -0x30(%rbp),%rax
cmp    -0x18(%rbp),%rax
jae    123c <main+0xdc>
mov    -0x30(%rbp),%eax
mov    $0xff,%ecx
cltd
idiv   %ecx
mov    -0x28(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    120a <main+0xaa>
mov    $0x1,%edi
call   1080 <sleep@plt>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    11f7 <main+0x97>
mov    -0x28(%rbp),%rdi
call   1030 <free@plt>
lea    0xe36(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %rsi,%rbx
cmp    $0x2,%edi
jle    1677 <main+0x507>
mov    0x8(%rbx),%rdi
call   1070 <atoi@plt>
mov    %rax,%r15
mov    0x10(%rbx),%rdi
call   1070 <atoi@plt>
mov    %rax,%r14
lea    0xefa(%rip),%rdi
xor    %r12d,%r12d
mov    %r15,%rsi
mov    %r14d,%edx
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xf14(%rip),%rdi
call   1040 <puts@plt>
mov    %r15,%rdi
call   1060 <malloc@plt>
mov    %rax,%rbx
test   %r14d,%r14d
jle    1652 <main+0x4e2>
cmp    $0x2,%r15
mov    $0x1,%r13d
cmovae %r15,%r13
lea    -0x10(%r13),%rax
mov    %rax,0x20(%rsp)
mov    %rax,%rcx
shr    $0x4,%rcx
add    $0x1,%rcx
mov    %r13,%rax
and    $0xfffffffffffffff0,%rax
mov    %rax,0x10(%rsp)
mov    %rcx,%rax
mov    %rcx,0x18(%rsp)
and    $0xfffffffffffffffe,%rcx
mov    %rcx,0x8(%rsp)
mov    $0x80808081,%ebp
movdqa 0xe1a(%rip),%xmm10
jmp    1250 <main+0xe0>
nopl   0x0(%rax,%rax,1)
mov    $0x1,%edi
call   1090 <sleep@plt>
movdqa 0xdfd(%rip),%xmm10
add    $0x1,%r12d
cmp    %r14d,%r12d
je     1652 <main+0x4e2>
test   %r15,%r15
je     1230 <main+0xc0>
cmp    $0x10,%r13
jae    1270 <main+0x100>
xor    %eax,%eax
jmp    1618 <main+0x4a8>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmpq   $0x10,0x20(%rsp)
jae    12a1 <main+0x131>
xor    %eax,%eax
movdqa 0xdad(%rip),%xmm9
movdqa 0xd94(%rip),%xmm8
movdqa 0xd7c(%rip),%xmm0
movdqa 0xd64(%rip),%xmm2
jmp    1509 <main+0x399>
mov    0x8(%rsp),%rcx
xor    %eax,%eax
movdqa 0xd7f(%rip),%xmm9
movdqa 0xd66(%rip),%xmm8
movdqa 0xd4e(%rip),%xmm0
movdqa 0xd36(%rip),%xmm2
movdqa 0xd7d(%rip),%xmm11
movdqa 0xd84(%rip),%xmm12
nopl   0x0(%rax)
movdqa %xmm0,%xmm4
pmuludq %xmm10,%xmm4
pshufd $0xed,%xmm4,%xmm4
pshufd $0xf5,%xmm0,%xmm5
pmuludq %xmm10,%xmm5
pshufd $0xed,%xmm5,%xmm5
punpckldq %xmm5,%xmm4
psrld  $0x7,%xmm4
movdqa %xmm4,%xmm5
pslld  $0x8,%xmm5
psubd  %xmm5,%xmm4
paddd  %xmm0,%xmm4
movdqa %xmm2,%xmm5
pmuludq %xmm10,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm2,%xmm6
pmuludq %xmm10,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psrld  $0x7,%xmm5
movdqa %xmm5,%xmm6
pslld  $0x8,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm2,%xmm5
packuswb %xmm5,%xmm4
movdqa %xmm9,%xmm5
pmuludq %xmm10,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm9,%xmm6
pmuludq %xmm10,%xmm6
pshufd $0xed,%xmm6,%xmm6
punpckldq %xmm6,%xmm5
psrld  $0x7,%xmm5
movdqa %xmm5,%xmm6
pslld  $0x8,%xmm6
psubd  %xmm6,%xmm5
paddd  %xmm9,%xmm5
movdqa %xmm8,%xmm6
pmuludq %xmm10,%xmm6
pshufd $0xed,%xmm6,%xmm6
pshufd $0xf5,%xmm8,%xmm7
pmuludq %xmm10,%xmm7
pshufd $0xed,%xmm7,%xmm7
punpckldq %xmm7,%xmm6
psrld  $0x7,%xmm6
movdqa %xmm6,%xmm7
pslld  $0x8,%xmm7
psubd  %xmm7,%xmm6
paddd  %xmm8,%xmm6
packuswb %xmm6,%xmm5
packuswb %xmm4,%xmm5
movdqu %xmm5,(%rbx,%rax,1)
movdqa %xmm8,%xmm4
paddd  %xmm11,%xmm4
movdqa %xmm9,%xmm6
paddd  %xmm11,%xmm6
movdqa %xmm2,%xmm7
paddd  %xmm11,%xmm7
movdqa %xmm0,%xmm3
paddd  %xmm11,%xmm3
movdqa %xmm3,%xmm5
pmuludq %xmm10,%xmm5
pshufd $0xed,%xmm5,%xmm5
pshufd $0xf5,%xmm3,%xmm1
pmuludq %xmm10,%xmm1
pshufd $0xed,%xmm1,%xmm1
punpckldq %xmm1,%xmm5
psrld  $0x7,%xmm5
movdqa %xmm5,%xmm1
pslld  $0x8,%xmm1
psubd  %xmm1,%xmm5
paddd  %xmm3,%xmm5
movdqa %xmm7,%xmm1
pmuludq %xmm10,%xmm1
pshufd $0xed,%xmm1,%xmm1
pshufd $0xf5,%xmm7,%xmm3
pmuludq %xmm10,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm1
psrld  $0x7,%xmm1
movdqa %xmm1,%xmm3
pslld  $0x8,%xmm3
psubd  %xmm3,%xmm1
paddd  %xmm7,%xmm1
packuswb %xmm1,%xmm5
movdqa %xmm6,%xmm1
pmuludq %xmm10,%xmm1
pshufd $0xed,%xmm1,%xmm7
pshufd $0xf5,%xmm6,%xmm1
pmuludq %xmm10,%xmm1
pshufd $0xed,%xmm1,%xmm1
punpckldq %xmm1,%xmm7
psrld  $0x7,%xmm7
movdqa %xmm7,%xmm1
pslld  $0x8,%xmm1
psubd  %xmm1,%xmm7
paddd  %xmm6,%xmm7
movdqa %xmm4,%xmm1
pmuludq %xmm10,%xmm1
pshufd $0xed,%xmm1,%xmm1
pshufd $0xf5,%xmm4,%xmm3
pmuludq %xmm10,%xmm3
pshufd $0xed,%xmm3,%xmm3
punpckldq %xmm3,%xmm1
psrld  $0x7,%xmm1
movdqa %xmm1,%xmm3
pslld  $0x8,%xmm3
psubd  %xmm3,%xmm1
paddd  %xmm4,%xmm1
packuswb %xmm1,%xmm7
packuswb %xmm5,%xmm7
movdqu %xmm7,0x10(%rbx,%rax,1)
add    $0x20,%rax
paddd  %xmm12,%xmm9
paddd  %xmm12,%xmm8
paddd  %xmm12,%xmm0
paddd  %xmm12,%xmm2
add    $0xfffffffffffffffe,%rcx
jne    12e0 <main+0x170>
testb  $0x1,0x18(%rsp)
je     1607 <main+0x497>
movdqa %xmm0,%xmm1
pmuludq %xmm10,%xmm1
pshufd $0xed,%xmm1,%xmm4
pshufd $0xf5,%xmm0,%xmm1
pmuludq %xmm10,%xmm1
pshufd $0xed,%xmm1,%xmm1
punpckldq %xmm1,%xmm4
psrld  $0x7,%xmm4
movdqa %xmm4,%xmm1
pslld  $0x8,%xmm1
psubd  %xmm1,%xmm4
paddd  %xmm0,%xmm4
movdqa %xmm2,%xmm0
pmuludq %xmm10,%xmm0
pshufd $0xed,%xmm0,%xmm0
pshufd $0xf5,%xmm2,%xmm1
pmuludq %xmm10,%xmm1
pshufd $0xed,%xmm1,%xmm1
punpckldq %xmm1,%xmm0
psrld  $0x7,%xmm0
movdqa %xmm0,%xmm1
pslld  $0x8,%xmm1
psubd  %xmm1,%xmm0
paddd  %xmm2,%xmm0
packuswb %xmm0,%xmm4
movdqa %xmm9,%xmm0
pmuludq %xmm10,%xmm0
pshufd $0xed,%xmm0,%xmm2
pshufd $0xf5,%xmm9,%xmm0
pmuludq %xmm10,%xmm0
pshufd $0xed,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
psrld  $0x7,%xmm2
movdqa %xmm2,%xmm0
pslld  $0x8,%xmm0
psubd  %xmm0,%xmm2
paddd  %xmm9,%xmm2
movdqa %xmm8,%xmm0
pmuludq %xmm10,%xmm0
pshufd $0xed,%xmm0,%xmm0
pshufd $0xf5,%xmm8,%xmm1
pmuludq %xmm10,%xmm1
pshufd $0xed,%xmm1,%xmm1
punpckldq %xmm1,%xmm0
psrld  $0x7,%xmm0
movdqa %xmm0,%xmm1
pslld  $0x8,%xmm1
psubd  %xmm1,%xmm0
paddd  %xmm8,%xmm0
packuswb %xmm0,%xmm2
packuswb %xmm4,%xmm2
movdqu %xmm2,(%rbx,%rax,1)
mov    0x10(%rsp),%rcx
mov    %rcx,%rax
cmp    %rcx,%r13
je     1230 <main+0xc0>
lea    (%rbx,%rax,1),%rcx
mov    %r13,%rdx
sub    %rax,%rdx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %eax,%esi
imul   %rbp,%rsi
shr    $0x27,%rsi
add    %al,%sil
mov    %sil,(%rcx)
add    $0x1,%rcx
add    $0x1,%eax
add    $0xffffffffffffffff,%rdx
jne    1630 <main+0x4c0>
jmp    1230 <main+0xc0>
mov    %rbx,%rdi
call   1030 <free@plt>
lea    0xaa8(%rip),%rdi
call   1040 <puts@plt>
xor    %eax,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    (%rbx),%rsi
lea    0x9ef(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%edi
call   1080 <exit@plt>

LLVM IR (-O0):
@.str = [51 x i8] c"usage: %s [bytes_to_malloc] [approx_time_to_hold]\0A\00"
@.str.1 = [49 x i8] c"allocating %d bytes and sleeping for %d seconds\0A\00"
@.str.2 = [54 x i8] c"note: do NOT press Ctrl+C or you'll leak the memory!\0A\00"
@.str.3 = [11 x i8] c"all done.\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i64
%7 = alloca i32
%8 = alloca i8*
%9 = alloca i32
%10 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%11 = load i32, i32* %4
%12 = icmp slt i32 %11, 3
br i1 %12, label %13, label %19
13: ; preds = %2
%14 = load i8**, i8*** %5
%15 = getelementptr inbounds i8*, i8** %14, i64 0
%16 = load i8*, i8** %15
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str, i64 0, i64 0), i8* %16)
%18 = call i32 @exit(i32 1)
unreachable
19: ; preds = %2
%20 = load i8**, i8*** %5
%21 = getelementptr inbounds i8*, i8** %20, i64 1
%22 = load i8*, i8** %21
%23 = call i8* @atoi(i8* %22)
%24 = ptrtoint i8* %23 to i64
store i64 %24, i64* %6
%25 = load i8**, i8*** %5
%26 = getelementptr inbounds i8*, i8** %25, i64 2
%27 = load i8*, i8** %26
%28 = call i8* @atoi(i8* %27)
%29 = ptrtoint i8* %28 to i32
store i32 %29, i32* %7
%30 = load i64, i64* %6
%31 = load i32, i32* %7
%32 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.1, i64 0, i64 0), i64 %30, i32 %31)
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.2, i64 0, i64 0))
%34 = load i64, i64* %6
%35 = call i8* @malloc(i64 %34)
store i8* %35, i8** %8
store i32 0, i32* %9
br label %36
36: ; preds = %59, %19
%37 = load i32, i32* %9
%38 = load i32, i32* %7
%39 = icmp slt i32 %37, %38
br i1 %39, label %40, label %62
40: ; preds = %36
store i32 0, i32* %10
br label %41
41: ; preds = %54, %40
%42 = load i32, i32* %10
%43 = sext i32 %42 to i64
%44 = load i64, i64* %6
%45 = icmp ult i64 %43, %44
br i1 %45, label %46, label %57
46: ; preds = %41
%47 = load i32, i32* %10
%48 = srem i32 %47, 255
%49 = trunc i32 %48 to i8
%50 = load i8*, i8** %8
%51 = load i32, i32* %10
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds i8, i8* %50, i64 %52
store i8 %49, i8* %53
br label %54
54: ; preds = %46
%55 = load i32, i32* %10
%56 = add nsw i32 %55, 1
store i32 %56, i32* %10
br label %41
57: ; preds = %41
%58 = call i32 @sleep(i32 1)
br label %59
59: ; preds = %57
%60 = load i32, i32* %9
%61 = add nsw i32 %60, 1
store i32 %61, i32* %9
br label %36
62: ; preds = %36
%63 = load i8*, i8** %8
%64 = call i32 @free(i8* %63)
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.3, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str = [51 x i8] c"usage: %s [bytes_to_malloc] [approx_time_to_hold]\0A\00"
@.str.1 = [49 x i8] c"allocating %d bytes and sleeping for %d seconds\0A\00"
@str = [53 x i8] c"note: do NOT press Ctrl+C or you'll leak the memory!\00"
@str.4 = [10 x i8] c"all done.\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = icmp slt i32 %0, 3
br i1 %3, label %4, label %8
4: ; preds = %2
%5 = load i8*, i8** %1
%6 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @.str, i64 0, i64 0), i8* %5)
%7 = tail call i32 @exit(i32 1)
unreachable
8: ; preds = %2
%9 = getelementptr inbounds i8*, i8** %1, i64 1
%10 = load i8*, i8** %9
%11 = tail call i8* @atoi(i8* %10)
%12 = ptrtoint i8* %11 to i64
%13 = getelementptr inbounds i8*, i8** %1, i64 2
%14 = load i8*, i8** %13
%15 = tail call i8* @atoi(i8* %14)
%16 = ptrtoint i8* %15 to i64
%17 = trunc i64 %16 to i32
%18 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([49 x i8], [49 x i8]* @.str.1, i64 0, i64 0), i64 %12, i32 %17)
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @str, i64 0, i64 0))
%20 = tail call i8* @malloc(i64 %12)
%21 = icmp sgt i32 %17, 0
br i1 %21, label %22, label %80
22: ; preds = %8
%23 = icmp eq i8* %11, null
%24 = call i64 @llvm.umax.i64(i64 %12, i64 1)
%25 = add i64 %24, -16
%26 = lshr i64 %25, 4
%27 = add nuw nsw i64 %26, 1
%28 = icmp ult i64 %24, 16
%29 = and i64 %24, -16
%30 = and i64 %27, 1
%31 = icmp ult i64 %25, 16
%32 = and i64 %27, 2305843009213693950
%33 = icmp eq i64 %30, 0
%34 = icmp eq i64 %24, %29
br label %35
35: ; preds = %22, %76
%36 = phi i32 [ 0, %22 ], [ %78, %76 ]
br i1 %23, label %76, label %37
37: ; preds = %35
br i1 %28, label %66, label %38
38: ; preds = %37
br i1 %31, label %57, label %39
39: ; preds = %38, %39
%40 = phi i64 [ %53, %39 ], [ 0, %38 ]
%41 = phi <16 x i32> [ %54, %39 ], [ <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>, %38 ]
%42 = phi i64 [ %55, %39 ], [ 0, %38 ]
%43 = urem <16 x i32> %41, <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255>
%44 = trunc <16 x i32> %43 to <16 x i8>
%45 = getelementptr inbounds i8, i8* %20, i64 %40
%46 = bitcast i8* %45 to <16 x i8>*
store <16 x i8> %44, <16 x i8>* %46
%47 = or i64 %40, 16
%48 = add <16 x i32> %41, <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>
%49 = urem <16 x i32> %48, <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255>
%50 = trunc <16 x i32> %49 to <16 x i8>
%51 = getelementptr inbounds i8, i8* %20, i64 %47
%52 = bitcast i8* %51 to <16 x i8>*
store <16 x i8> %50, <16 x i8>* %52
%53 = add nuw i64 %40, 32
%54 = add <16 x i32> %41, <i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32>
%55 = add i64 %42, 2
%56 = icmp eq i64 %55, %32
br i1 %56, label %57, label %39
57: ; preds = %39, %38
%58 = phi i64 [ 0, %38 ], [ %53, %39 ]
%59 = phi <16 x i32> [ <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>, %38 ], [ %54, %39 ]
br i1 %33, label %65, label %60
60: ; preds = %57
%61 = urem <16 x i32> %59, <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255>
%62 = trunc <16 x i32> %61 to <16 x i8>
%63 = getelementptr inbounds i8, i8* %20, i64 %58
%64 = bitcast i8* %63 to <16 x i8>*
store <16 x i8> %62, <16 x i8>* %64
br label %65
65: ; preds = %57, %60
br i1 %34, label %76, label %66
66: ; preds = %37, %65
%67 = phi i64 [ 0, %37 ], [ %29, %65 ]
br label %68
68: ; preds = %66, %68
%69 = phi i64 [ %74, %68 ], [ %67, %66 ]
%70 = trunc i64 %69 to i32
%71 = urem i32 %70, 255
%72 = trunc i32 %71 to i8
%73 = getelementptr inbounds i8, i8* %20, i64 %69
store i8 %72, i8* %73
%74 = add nuw nsw i64 %69, 1
%75 = icmp eq i64 %74, %24
br i1 %75, label %76, label %68
76: ; preds = %68, %65, %35
%77 = tail call i32 @sleep(i32 1)
%78 = add nuw nsw i32 %36, 1
%79 = icmp eq i32 %78, %17
br i1 %79, label %80, label %35
80: ; preds = %76, %8
%81 = tail call i32 @free(i8* %20)
%82 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @str.4, i64 0, i64 0))
ret i32 0
}