#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*/ colInLow();
int /*<<< orphan*/ colclk();
int /*<<< orphan*/ rowInLow();
int /*<<< orphan*/ rowclk();
void flush(void) {
  int row, col;
  rowInLow();
  colInLow();
  for (row = 0; row < 8; row++) {
    rowclk();
  }
  for (col = 0; col < 76; col++) {
    colclk();
  }
  return;
}


x86 assembly (clang, -O0):
<flush>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    $0x0,%al
call   1030 <rowInLow@plt>
mov    $0x0,%al
call   1050 <colInLow@plt>
movl   $0x0,-0x4(%rbp)
cmpl   $0x8,-0x4(%rbp)
jge    117c <flush+0x3c>
mov    $0x0,%al
call   1040 <rowclk@plt>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    115d <flush+0x1d>
movl   $0x0,-0x8(%rbp)
cmpl   $0x4c,-0x8(%rbp)
jge    11a2 <flush+0x62>
mov    $0x0,%al
call   1060 <colclk@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1183 <flush+0x43>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<flush>:
push   %rbx
xor    %eax,%eax
call   1030 <rowInLow@plt>
xor    %eax,%eax
call   1050 <colInLow@plt>
xor    %eax,%eax
call   1040 <rowclk@plt>
xor    %eax,%eax
call   1040 <rowclk@plt>
xor    %eax,%eax
call   1040 <rowclk@plt>
xor    %eax,%eax
call   1040 <rowclk@plt>
xor    %eax,%eax
call   1040 <rowclk@plt>
xor    %eax,%eax
call   1040 <rowclk@plt>
xor    %eax,%eax
call   1040 <rowclk@plt>
xor    %eax,%eax
call   1040 <rowclk@plt>
mov    $0x4c,%ebx
nopl   0x0(%rax)
xor    %eax,%eax
call   1060 <colclk@plt>
add    $0xffffffff,%ebx
jne    1190 <flush+0x50>
pop    %rbx
ret

LLVM IR (-O0):
define void @flush() {
%1 = alloca i32
%2 = alloca i32
%3 = call i32 (...) @rowInLow()
%4 = call i32 (...) @colInLow()
store i32 0, i32* %1
br label %5
5: ; preds = %10, %0
%6 = load i32, i32* %1
%7 = icmp slt i32 %6, 8
br i1 %7, label %8, label %13
8: ; preds = %5
%9 = call i32 (...) @rowclk()
br label %10
10: ; preds = %8
%11 = load i32, i32* %1
%12 = add nsw i32 %11, 1
store i32 %12, i32* %1
br label %5
13: ; preds = %5
store i32 0, i32* %2
br label %14
14: ; preds = %19, %13
%15 = load i32, i32* %2
%16 = icmp slt i32 %15, 76
br i1 %16, label %17, label %22
17: ; preds = %14
%18 = call i32 (...) @colclk()
br label %19
19: ; preds = %17
%20 = load i32, i32* %2
%21 = add nsw i32 %20, 1
store i32 %21, i32* %2
br label %14
22: ; preds = %14
ret void
}

LLVM IR (-O2):
define void @flush() {
%1 = tail call i32 (...) @rowInLow()
%2 = tail call i32 (...) @colInLow()
%3 = tail call i32 (...) @rowclk()
%4 = tail call i32 (...) @rowclk()
%5 = tail call i32 (...) @rowclk()
%6 = tail call i32 (...) @rowclk()
%7 = tail call i32 (...) @rowclk()
%8 = tail call i32 (...) @rowclk()
%9 = tail call i32 (...) @rowclk()
%10 = tail call i32 (...) @rowclk()
br label %11
11: ; preds = %0, %11
%12 = phi i32 [ %14, %11 ], [ 0, %0 ]
%13 = tail call i32 (...) @colclk()
%14 = add nuw nsw i32 %12, 1
%15 = icmp eq i32 %14, 76
br i1 %15, label %16, label %11
16: ; preds = %11
ret void
}