#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*/ nokia_lcd_data(int);
void nokia_lcd_clear() {
  char temp_row;
  char temp_column;
  for (temp_row = 0; temp_row < 6; temp_row++) {
    for (temp_column = 0; temp_column < 84; temp_column++) {
      nokia_lcd_data(0x00);
    }
  }
}


x86 assembly (clang, -O0):
<nokia_lcd_clear>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movb   $0x0,-0x1(%rbp)
movsbl -0x1(%rbp),%eax
cmp    $0x6,%eax
jge    1160 <nokia_lcd_clear+0x50>
movb   $0x0,-0x2(%rbp)
movsbl -0x2(%rbp),%eax
cmp    $0x54,%eax
jge    114e <nokia_lcd_clear+0x3e>
xor    %edi,%edi
call   1030 <nokia_lcd_data@plt>
mov    -0x2(%rbp),%al
add    $0x1,%al
mov    %al,-0x2(%rbp)
jmp    112d <nokia_lcd_clear+0x1d>
jmp    1153 <nokia_lcd_clear+0x43>
mov    -0x1(%rbp),%al
add    $0x1,%al
mov    %al,-0x1(%rbp)
jmp    111c <nokia_lcd_clear+0xc>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<nokia_lcd_clear>:
push   %rbx
mov    $0x54,%bl
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xor    %edi,%edi
call   1030 <nokia_lcd_data@plt>
add    $0xff,%bl
jne    1120 <nokia_lcd_clear+0x10>
mov    $0x54,%bl
xchg   %ax,%ax
xor    %edi,%edi
call   1030 <nokia_lcd_data@plt>
add    $0xff,%bl
jne    1130 <nokia_lcd_clear+0x20>
mov    $0x54,%bl
xchg   %ax,%ax
xor    %edi,%edi
call   1030 <nokia_lcd_data@plt>
add    $0xff,%bl
jne    1140 <nokia_lcd_clear+0x30>
mov    $0x54,%bl
xchg   %ax,%ax
xor    %edi,%edi
call   1030 <nokia_lcd_data@plt>
add    $0xff,%bl
jne    1150 <nokia_lcd_clear+0x40>
mov    $0x54,%bl
xchg   %ax,%ax
xor    %edi,%edi
call   1030 <nokia_lcd_data@plt>
add    $0xff,%bl
jne    1160 <nokia_lcd_clear+0x50>
mov    $0x54,%bl
xchg   %ax,%ax
xor    %edi,%edi
call   1030 <nokia_lcd_data@plt>
add    $0xff,%bl
jne    1170 <nokia_lcd_clear+0x60>
pop    %rbx
ret

LLVM IR (-O0):
define void @nokia_lcd_clear() {
%1 = alloca i8
%2 = alloca i8
store i8 0, i8* %1
br label %3
3: ; preds = %18, %0
%4 = load i8, i8* %1
%5 = sext i8 %4 to i32
%6 = icmp slt i32 %5, 6
br i1 %6, label %7, label %21
7: ; preds = %3
store i8 0, i8* %2
br label %8
8: ; preds = %14, %7
%9 = load i8, i8* %2
%10 = sext i8 %9 to i32
%11 = icmp slt i32 %10, 84
br i1 %11, label %12, label %17
12: ; preds = %8
%13 = call i32 @nokia_lcd_data(i32 0)
br label %14
14: ; preds = %12
%15 = load i8, i8* %2
%16 = add i8 %15, 1
store i8 %16, i8* %2
br label %8
17: ; preds = %8
br label %18
18: ; preds = %17
%19 = load i8, i8* %1
%20 = add i8 %19, 1
store i8 %20, i8* %1
br label %3
21: ; preds = %3
ret void
}

LLVM IR (-O2):
define void @nokia_lcd_clear() {
br label %1
1: ; preds = %0, %1
%2 = phi i8 [ 0, %0 ], [ %4, %1 ]
%3 = tail call i32 @nokia_lcd_data(i32 0)
%4 = add nuw nsw i8 %2, 1
%5 = icmp eq i8 %4, 84
br i1 %5, label %6, label %1
6: ; preds = %1, %6
%7 = phi i8 [ %9, %6 ], [ 0, %1 ]
%8 = tail call i32 @nokia_lcd_data(i32 0)
%9 = add nuw nsw i8 %7, 1
%10 = icmp eq i8 %9, 84
br i1 %10, label %11, label %6
11: ; preds = %6, %11
%12 = phi i8 [ %14, %11 ], [ 0, %6 ]
%13 = tail call i32 @nokia_lcd_data(i32 0)
%14 = add nuw nsw i8 %12, 1
%15 = icmp eq i8 %14, 84
br i1 %15, label %16, label %11
16: ; preds = %11, %16
%17 = phi i8 [ %19, %16 ], [ 0, %11 ]
%18 = tail call i32 @nokia_lcd_data(i32 0)
%19 = add nuw nsw i8 %17, 1
%20 = icmp eq i8 %19, 84
br i1 %20, label %21, label %16
21: ; preds = %16, %21
%22 = phi i8 [ %24, %21 ], [ 0, %16 ]
%23 = tail call i32 @nokia_lcd_data(i32 0)
%24 = add nuw nsw i8 %22, 1
%25 = icmp eq i8 %24, 84
br i1 %25, label %26, label %21
26: ; preds = %21, %26
%27 = phi i8 [ %29, %26 ], [ 0, %21 ]
%28 = tail call i32 @nokia_lcd_data(i32 0)
%29 = add nuw nsw i8 %27, 1
%30 = icmp eq i8 %29, 84
br i1 %30, label %31, label %26
31: ; preds = %26
ret void
}