#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 */
typedef scalar_t__ clock_t;

/* Variables and functions */
float CLOCKS_PER_SEC;
int /*<<< orphan*/ binsearch(int, int *, int);
int /*<<< orphan*/ binsearch2(int, int *, int);
scalar_t__ clock();
int /*<<< orphan*/ printf(char *, ...);
main() {
  int i, n = -1;
  int v[10000];
  clock_t time_begin, time_end;
  for (i = 0; i < 10000; ++i)
    v[i] = i;
  time_begin = clock();
  if (time_begin == (clock_t)-1) {
    printf("clock() failed in file %s at line # %d\n",
           "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
           "2022-01-22/02-19-57/repos/metaliciouz/kandrtcpl/refs/heads/master/"
           "chapter_3/3_1.c",
           25 - 3);
    return 1;
  }
  for (i = 0; i < 1000000; ++i)
    binsearch(n, v, 10000);
  time_end = clock();
  if (time_end == (clock_t)-1) {
    printf("clock() failed in file %s at line # %d\n",
           "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
           "2022-01-22/02-19-57/repos/metaliciouz/kandrtcpl/refs/heads/master/"
           "chapter_3/3_1.c",
           34 - 3);
    return 1;
  }
  printf("binsearch time used: %f seconds\n",
         ((float)(time_end - time_begin)) / CLOCKS_PER_SEC);
  time_begin = clock();
  if (time_begin == (clock_t)-1) {
    printf("clock() failed in file %s at line # %d\n",
           "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
           "2022-01-22/02-19-57/repos/metaliciouz/kandrtcpl/refs/heads/master/"
           "chapter_3/3_1.c",
           42 - 3);
    return 1;
  }
  for (i = 0; i < 1000000; ++i)
    binsearch2(n, v, 10000);
  time_end = clock();
  if (time_end == (clock_t)-1) {
    printf("clock() failed in file %s at line # %d\n",
           "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
           "2022-01-22/02-19-57/repos/metaliciouz/kandrtcpl/refs/heads/master/"
           "chapter_3/3_1.c",
           51 - 3);
    return 1;
  }
  printf("binsearch2 time used: %f seconds\n",
         ((float)(time_end - time_begin)) / CLOCKS_PER_SEC);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x9c60,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0xffffffff,-0xc(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x2710,-0x8(%rbp)
jge    1189 <main+0x49>
mov    -0x8(%rbp),%ecx
movslq -0x8(%rbp),%rax
mov    %ecx,-0x9c50(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1160 <main+0x20>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %rax,-0x9c58(%rbp)
cmpq   $0xffffffffffffffff,-0x9c58(%rbp)
ff
jne    11cb <main+0x8b>
lea    0xe54(%rip),%rdi
lea    0xe75(%rip),%rsi
mov    $0x16,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    1364 <main+0x224>
movl   $0x0,-0x8(%rbp)
cmpl   $0xf4240,-0x8(%rbp)
jge    1201 <main+0xc1>
mov    -0xc(%rbp),%edi
lea    -0x9c50(%rbp),%rsi
mov    $0x2710,%edx
call   1030 <binsearch@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11d2 <main+0x92>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %rax,-0x9c60(%rbp)
cmpq   $0xffffffffffffffff,-0x9c60(%rbp)
ff
jne    1243 <main+0x103>
lea    0xddc(%rip),%rdi
lea    0xdfd(%rip),%rsi
mov    $0x1f,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    1364 <main+0x224>
mov    -0x9c60(%rbp),%rax
sub    -0x9c58(%rbp),%rax
cvtsi2ss %rax,%xmm0
mov    0x2d8b(%rip),%rax
divss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe4e(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %rax,-0x9c58(%rbp)
cmpq   $0xffffffffffffffff,-0x9c58(%rbp)
ff
jne    12b5 <main+0x175>
lea    0xd6a(%rip),%rdi
lea    0xd8b(%rip),%rsi
mov    $0x27,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    1364 <main+0x224>
movl   $0x0,-0x8(%rbp)
cmpl   $0xf4240,-0x8(%rbp)
jge    12eb <main+0x1ab>
mov    -0xc(%rbp),%edi
lea    -0x9c50(%rbp),%rsi
mov    $0x2710,%edx
call   1060 <binsearch2@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12bc <main+0x17c>
mov    $0x0,%al
call   1040 <clock@plt>
mov    %rax,-0x9c60(%rbp)
cmpq   $0xffffffffffffffff,-0x9c60(%rbp)
jne    132d <main+0x1ed>
lea    0xcf2(%rip),%rdi
lea    0xd13(%rip),%rsi
mov    $0x30,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    1364 <main+0x224>
mov    -0x9c60(%rbp),%rax
sub    -0x9c58(%rbp),%rax
cvtsi2ss %rax,%xmm0
mov    0x2ca1(%rip),%rax
divss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xd85(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x9c60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0x9c48,%rsp
movdqa 0xeab(%rip),%xmm0
mov    $0x24,%eax
movdqa 0xead(%rip),%xmm8
movdqa 0xeb4(%rip),%xmm9
movdqa 0xebb(%rip),%xmm10
movdqa 0xec2(%rip),%xmm11
movdqa 0xec9(%rip),%xmm12
movdqa 0xed1(%rip),%xmm6
movdqa 0xed9(%rip),%xmm7
movdqa 0xee1(%rip),%xmm1
movdqa 0xee9(%rip),%xmm2
movdqa 0xef1(%rip),%xmm3
nop
movdqa %xmm0,%xmm4
paddd  %xmm8,%xmm4
movdqa %xmm0,-0x90(%rsp,%rax,4)
ff ff
movdqa %xmm4,-0x80(%rsp,%rax,4)
movdqa %xmm0,%xmm4
paddd  %xmm9,%xmm4
movdqa %xmm0,%xmm5
paddd  %xmm10,%xmm5
movdqa %xmm4,-0x70(%rsp,%rax,4)
movdqa %xmm5,-0x60(%rsp,%rax,4)
movdqa %xmm0,%xmm4
paddd  %xmm11,%xmm4
movdqa %xmm0,%xmm5
paddd  %xmm12,%xmm5
movdqa %xmm4,-0x50(%rsp,%rax,4)
movdqa %xmm5,-0x40(%rsp,%rax,4)
movdqa %xmm0,%xmm4
paddd  %xmm6,%xmm4
movdqa %xmm0,%xmm5
paddd  %xmm7,%xmm5
movdqa %xmm4,-0x30(%rsp,%rax,4)
movdqa %xmm5,-0x20(%rsp,%rax,4)
movdqa %xmm0,%xmm4
paddd  %xmm1,%xmm4
movdqa %xmm0,%xmm5
paddd  %xmm2,%xmm5
movdqa %xmm4,-0x10(%rsp,%rax,4)
movdqa %xmm5,(%rsp,%rax,4)
paddd  %xmm3,%xmm0
add    $0x28,%rax
cmp    $0x2734,%rax
jne    11b0 <main+0x70>
xor    %eax,%eax
call   1040 <clock@plt>
cmp    $0xffffffffffffffff,%rax
je     132a <main+0x1ea>
mov    %rax,%r14
mov    $0xf4240,%ebp
mov    %rsp,%rbx
nopl   0x0(%rax,%rax,1)
mov    $0xffffffff,%edi
mov    %rbx,%rsi
mov    $0x2710,%edx
call   1030 <binsearch@plt>
add    $0xffffffff,%ebp
jne    1270 <main+0x130>
xor    %eax,%eax
call   1040 <clock@plt>
cmp    $0xffffffffffffffff,%rax
je     133f <main+0x1ff>
sub    %r14,%rax
xorps  %xmm0,%xmm0
cvtsi2ss %rax,%xmm0
mov    0x2d3e(%rip),%r15
divss  (%r15),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xeb0(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
xor    %eax,%eax
call   1040 <clock@plt>
cmp    $0xffffffffffffffff,%rax
je     1354 <main+0x214>
mov    %rax,%r14
mov    $0xf4240,%ebp
mov    %rsp,%rbx
nopl   (%rax)
mov    $0xffffffff,%edi
mov    %rbx,%rsi
mov    $0x2710,%edx
call   1060 <binsearch2@plt>
add    $0xffffffff,%ebp
jne    12e0 <main+0x1a0>
xor    %ebx,%ebx
xor    %eax,%eax
call   1040 <clock@plt>
cmp    $0xffffffffffffffff,%rax
je     1369 <main+0x229>
sub    %r14,%rax
xorps  %xmm0,%xmm0
cvtsi2ss %rax,%xmm0
divss  (%r15),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe6a(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
jmp    1388 <main+0x248>
lea    0xd7f(%rip),%rdi
lea    0xda0(%rip),%rsi
mov    $0x16,%edx
jmp    137c <main+0x23c>
lea    0xd6a(%rip),%rdi
lea    0xd8b(%rip),%rsi
mov    $0x1f,%edx
jmp    137c <main+0x23c>
lea    0xd55(%rip),%rdi
lea    0xd76(%rip),%rsi
mov    $0x27,%edx
jmp    137c <main+0x23c>
lea    0xd40(%rip),%rdi
lea    0xd61(%rip),%rsi
mov    $0x30,%edx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%ebx
mov    %ebx,%eax
add    $0x9c48,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [40 x i8] c"clock() failed in file %s at line # %d\0A\00"
@.str.1 = [146 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/metaliciouz/kandrtcpl/refs/heads/master/chapter_3/3_1.c\00"
@.str.2 = [33 x i8] c"binsearch time used: %f seconds\0A\00"
@CLOCKS_PER_SEC = global float 0.000000e+00
@.str.3 = [34 x i8] c"binsearch2 time used: %f seconds\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca [10000 x i32]
%5 = alloca i64
%6 = alloca i64
store i32 0, i32* %1
store i32 -1, i32* %3
store i32 0, i32* %2
br label %7
7: ; preds = %15, %0
%8 = load i32, i32* %2
%9 = icmp slt i32 %8, 10000
br i1 %9, label %10, label %18
10: ; preds = %7
%11 = load i32, i32* %2
%12 = load i32, i32* %2
%13 = sext i32 %12 to i64
%14 = getelementptr inbounds [10000 x i32], [10000 x i32]* %4, i64 0, i64 %13
store i32 %11, i32* %14
br label %15
15: ; preds = %10
%16 = load i32, i32* %2
%17 = add nsw i32 %16, 1
store i32 %17, i32* %2
br label %7
18: ; preds = %7
%19 = call i64 (...) @clock()
store i64 %19, i64* %5
%20 = load i64, i64* %5
%21 = icmp eq i64 %20, -1
br i1 %21, label %22, label %24
22: ; preds = %18
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([146 x i8], [146 x i8]* @.str.1, i64 0, i64 0), i32 22)
store i32 1, i32* %1
br label %81
24: ; preds = %18
store i32 0, i32* %2
br label %25
25: ; preds = %32, %24
%26 = load i32, i32* %2
%27 = icmp slt i32 %26, 1000000
br i1 %27, label %28, label %35
28: ; preds = %25
%29 = load i32, i32* %3
%30 = getelementptr inbounds [10000 x i32], [10000 x i32]* %4, i64 0, i64 0
%31 = call i32 @binsearch(i32 %29, i32* %30, i32 10000)
br label %32
32: ; preds = %28
%33 = load i32, i32* %2
%34 = add nsw i32 %33, 1
store i32 %34, i32* %2
br label %25
35: ; preds = %25
%36 = call i64 (...) @clock()
store i64 %36, i64* %6
%37 = load i64, i64* %6
%38 = icmp eq i64 %37, -1
br i1 %38, label %39, label %41
39: ; preds = %35
%40 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([146 x i8], [146 x i8]* @.str.1, i64 0, i64 0), i32 31)
store i32 1, i32* %1
br label %81
41: ; preds = %35
%42 = load i64, i64* %6
%43 = load i64, i64* %5
%44 = sub nsw i64 %42, %43
%45 = sitofp i64 %44 to float
%46 = load float, float* @CLOCKS_PER_SEC
%47 = fdiv float %45, %46
%48 = fpext float %47 to double
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0), double %48)
%50 = call i64 (...) @clock()
store i64 %50, i64* %5
%51 = load i64, i64* %5
%52 = icmp eq i64 %51, -1
br i1 %52, label %53, label %55
53: ; preds = %41
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([146 x i8], [146 x i8]* @.str.1, i64 0, i64 0), i32 39)
store i32 1, i32* %1
br label %81
55: ; preds = %41
store i32 0, i32* %2
br label %56
56: ; preds = %63, %55
%57 = load i32, i32* %2
%58 = icmp slt i32 %57, 1000000
br i1 %58, label %59, label %66
59: ; preds = %56
%60 = load i32, i32* %3
%61 = getelementptr inbounds [10000 x i32], [10000 x i32]* %4, i64 0, i64 0
%62 = call i32 @binsearch2(i32 %60, i32* %61, i32 10000)
br label %63
63: ; preds = %59
%64 = load i32, i32* %2
%65 = add nsw i32 %64, 1
store i32 %65, i32* %2
br label %56
66: ; preds = %56
%67 = call i64 (...) @clock()
store i64 %67, i64* %6
%68 = load i64, i64* %6
%69 = icmp eq i64 %68, -1
br i1 %69, label %70, label %72
70: ; preds = %66
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([146 x i8], [146 x i8]* @.str.1, i64 0, i64 0), i32 48)
store i32 1, i32* %1
br label %81
72: ; preds = %66
%73 = load i64, i64* %6
%74 = load i64, i64* %5
%75 = sub nsw i64 %73, %74
%76 = sitofp i64 %75 to float
%77 = load float, float* @CLOCKS_PER_SEC
%78 = fdiv float %76, %77
%79 = fpext float %78 to double
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.3, i64 0, i64 0), double %79)
store i32 0, i32* %1
br label %81
81: ; preds = %72, %70, %53, %39, %22
%82 = load i32, i32* %1
ret i32 %82
}

LLVM IR (-O2):
@.str = [40 x i8] c"clock() failed in file %s at line # %d\0A\00"
@.str.1 = [146 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/metaliciouz/kandrtcpl/refs/heads/master/chapter_3/3_1.c\00"
@.str.2 = [33 x i8] c"binsearch time used: %f seconds\0A\00"
@CLOCKS_PER_SEC = global float 0.000000e+00
@.str.3 = [34 x i8] c"binsearch2 time used: %f seconds\0A\00"
define i32 @main() {
%1 = alloca [10000 x i32]
%2 = bitcast [10000 x i32]* %1 to i8*
br label %3
3: ; preds = %3, %0
%4 = phi i64 [ 0, %0 ], [ %39, %3 ]
%5 = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %0 ], [ %40, %3 ]
%6 = add <4 x i32> %5, <i32 4, i32 4, i32 4, i32 4>
%7 = getelementptr inbounds [10000 x i32], [10000 x i32]* %1, i64 0, i64 %4
%8 = bitcast i32* %7 to <4 x i32>*
store <4 x i32> %5, <4 x i32>* %8
%9 = getelementptr inbounds i32, i32* %7, i64 4
%10 = bitcast i32* %9 to <4 x i32>*
store <4 x i32> %6, <4 x i32>* %10
%11 = add nuw nsw i64 %4, 8
%12 = add <4 x i32> %5, <i32 8, i32 8, i32 8, i32 8>
%13 = add <4 x i32> %5, <i32 12, i32 12, i32 12, i32 12>
%14 = getelementptr inbounds [10000 x i32], [10000 x i32]* %1, i64 0, i64 %11
%15 = bitcast i32* %14 to <4 x i32>*
store <4 x i32> %12, <4 x i32>* %15
%16 = getelementptr inbounds i32, i32* %14, i64 4
%17 = bitcast i32* %16 to <4 x i32>*
store <4 x i32> %13, <4 x i32>* %17
%18 = add nuw nsw i64 %4, 16
%19 = add <4 x i32> %5, <i32 16, i32 16, i32 16, i32 16>
%20 = add <4 x i32> %5, <i32 20, i32 20, i32 20, i32 20>
%21 = getelementptr inbounds [10000 x i32], [10000 x i32]* %1, i64 0, i64 %18
%22 = bitcast i32* %21 to <4 x i32>*
store <4 x i32> %19, <4 x i32>* %22
%23 = getelementptr inbounds i32, i32* %21, i64 4
%24 = bitcast i32* %23 to <4 x i32>*
store <4 x i32> %20, <4 x i32>* %24
%25 = add nuw nsw i64 %4, 24
%26 = add <4 x i32> %5, <i32 24, i32 24, i32 24, i32 24>
%27 = add <4 x i32> %5, <i32 28, i32 28, i32 28, i32 28>
%28 = getelementptr inbounds [10000 x i32], [10000 x i32]* %1, i64 0, i64 %25
%29 = bitcast i32* %28 to <4 x i32>*
store <4 x i32> %26, <4 x i32>* %29
%30 = getelementptr inbounds i32, i32* %28, i64 4
%31 = bitcast i32* %30 to <4 x i32>*
store <4 x i32> %27, <4 x i32>* %31
%32 = add nuw nsw i64 %4, 32
%33 = add <4 x i32> %5, <i32 32, i32 32, i32 32, i32 32>
%34 = add <4 x i32> %5, <i32 36, i32 36, i32 36, i32 36>
%35 = getelementptr inbounds [10000 x i32], [10000 x i32]* %1, i64 0, i64 %32
%36 = bitcast i32* %35 to <4 x i32>*
store <4 x i32> %33, <4 x i32>* %36
%37 = getelementptr inbounds i32, i32* %35, i64 4
%38 = bitcast i32* %37 to <4 x i32>*
store <4 x i32> %34, <4 x i32>* %38
%39 = add nuw nsw i64 %4, 40
%40 = add <4 x i32> %5, <i32 40, i32 40, i32 40, i32 40>
%41 = icmp eq i64 %39, 10000
br i1 %41, label %42, label %3
42: ; preds = %3
%43 = tail call i64 (...) @clock()
%44 = icmp eq i64 %43, -1
br i1 %44, label %47, label %45
45: ; preds = %42
%46 = getelementptr inbounds [10000 x i32], [10000 x i32]* %1, i64 0, i64 0
br label %49
47: ; preds = %42
%48 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([146 x i8], [146 x i8]* @.str.1, i64 0, i64 0), i32 22)
br label %87
49: ; preds = %45, %49
%50 = phi i32 [ 0, %45 ], [ %52, %49 ]
%51 = call i32 @binsearch(i32 -1, i32* %46, i32 10000)
%52 = add nuw nsw i32 %50, 1
%53 = icmp eq i32 %52, 1000000
br i1 %53, label %54, label %49
54: ; preds = %49
%55 = call i64 (...) @clock()
%56 = icmp eq i64 %55, -1
br i1 %56, label %57, label %59
57: ; preds = %54
%58 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([146 x i8], [146 x i8]* @.str.1, i64 0, i64 0), i32 31)
br label %87
59: ; preds = %54
%60 = sub nsw i64 %55, %43
%61 = sitofp i64 %60 to float
%62 = load float, float* @CLOCKS_PER_SEC
%63 = fdiv float %61, %62
%64 = fpext float %63 to double
%65 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @.str.2, i64 0, i64 0), double %64)
%66 = call i64 (...) @clock()
%67 = icmp eq i64 %66, -1
br i1 %67, label %68, label %70
68: ; preds = %59
%69 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([146 x i8], [146 x i8]* @.str.1, i64 0, i64 0), i32 39)
br label %87
70: ; preds = %59, %70
%71 = phi i32 [ %73, %70 ], [ 0, %59 ]
%72 = call i32 @binsearch2(i32 -1, i32* %46, i32 10000)
%73 = add nuw nsw i32 %71, 1
%74 = icmp eq i32 %73, 1000000
br i1 %74, label %75, label %70
75: ; preds = %70
%76 = call i64 (...) @clock()
%77 = icmp eq i64 %76, -1
br i1 %77, label %78, label %80
78: ; preds = %75
%79 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([146 x i8], [146 x i8]* @.str.1, i64 0, i64 0), i32 48)
br label %87
80: ; preds = %75
%81 = sub nsw i64 %76, %66
%82 = sitofp i64 %81 to float
%83 = load float, float* @CLOCKS_PER_SEC
%84 = fdiv float %82, %83
%85 = fpext float %84 to double
%86 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.3, i64 0, i64 0), double %85)
br label %87
87: ; preds = %80, %78, %68, %57, %47
%88 = phi i32 [ 1, %47 ], [ 1, %57 ], [ 1, %68 ], [ 1, %78 ], [ 0, %80 ]
ret i32 %88
}