#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*/ lcd_area(int /*<<< orphan*/, int /*<<< orphan*/, int, int);
int /*<<< orphan*/ lcd_cmd(int, int);
int /*<<< orphan*/ lcd_reset();
int /*<<< orphan*/ usleep(int);
void lcd_init(void) {
  lcd_reset();
  lcd_cmd(0xEA, 0x00);
  lcd_cmd(0xEB, 0x20);
  lcd_cmd(0xEC, 0x0C);
  lcd_cmd(0xED, 0xC4);
  lcd_cmd(0xE8, 0x40);
  lcd_cmd(0xE9, 0x38);
  lcd_cmd(0xF1, 0x01);
  lcd_cmd(0xF2, 0x10);
  lcd_cmd(0x27, 0xA3);
  lcd_cmd(0x1B, 0x1B);
  lcd_cmd(0x1A, 0x01);
  lcd_cmd(0x24, 0x2F);
  lcd_cmd(0x25, 0x57);
  lcd_cmd(0x23, 0x8D);
  lcd_cmd(0x18, 0x36);
  lcd_cmd(0x19, 0x01);
  lcd_cmd(0x01, 0x00);
  lcd_cmd(0x1F, 0x88);
  usleep(5 * 1000);
  lcd_cmd(0x1F, 0x80);
  usleep(5 * 1000);
  lcd_cmd(0x1F, 0x90);
  usleep(5 * 1000);
  lcd_cmd(0x1F, 0xD0);
  usleep(5 * 1000);
  lcd_cmd(0x17, 5);
  lcd_cmd(0x36, 0x00);
  lcd_cmd(0x28, 0x38);
  usleep(40 * 1000);
  lcd_cmd(0x28, 0x3C);
  lcd_cmd(0x16, 0xA8);
  lcd_area(0, 0, ((320) - 1), ((240) - 1));
  return;
}


x86 assembly (clang, -O0):
<lcd_init>:
push   %rbp
mov    %rsp,%rbp
mov    $0x0,%al
call   1030 <lcd_reset@plt>
mov    $0xea,%edi
xor    %esi,%esi
call   1050 <lcd_cmd@plt>
mov    $0xeb,%edi
mov    $0x20,%esi
call   1050 <lcd_cmd@plt>
mov    $0xec,%edi
mov    $0xc,%esi
call   1050 <lcd_cmd@plt>
mov    $0xed,%edi
mov    $0xc4,%esi
call   1050 <lcd_cmd@plt>
mov    $0xe8,%edi
mov    $0x40,%esi
call   1050 <lcd_cmd@plt>
mov    $0xe9,%edi
mov    $0x38,%esi
call   1050 <lcd_cmd@plt>
mov    $0xf1,%edi
mov    $0x1,%esi
call   1050 <lcd_cmd@plt>
mov    $0xf2,%edi
mov    $0x10,%esi
call   1050 <lcd_cmd@plt>
mov    $0x27,%edi
mov    $0xa3,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1b,%esi
mov    %esi,%edi
call   1050 <lcd_cmd@plt>
mov    $0x1a,%edi
mov    $0x1,%esi
call   1050 <lcd_cmd@plt>
mov    $0x24,%edi
mov    $0x2f,%esi
call   1050 <lcd_cmd@plt>
mov    $0x25,%edi
mov    $0x57,%esi
call   1050 <lcd_cmd@plt>
mov    $0x23,%edi
mov    $0x8d,%esi
call   1050 <lcd_cmd@plt>
mov    $0x18,%edi
mov    $0x36,%esi
call   1050 <lcd_cmd@plt>
mov    $0x19,%edi
mov    $0x1,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1,%edi
xor    %esi,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1f,%edi
mov    $0x88,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1388,%edi
call   1060 <usleep@plt>
mov    $0x1f,%edi
mov    $0x80,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1388,%edi
call   1060 <usleep@plt>
mov    $0x1f,%edi
mov    $0x90,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1388,%edi
call   1060 <usleep@plt>
mov    $0x1f,%edi
mov    $0xd0,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1388,%edi
call   1060 <usleep@plt>
mov    $0x17,%edi
mov    $0x5,%esi
call   1050 <lcd_cmd@plt>
mov    $0x36,%edi
xor    %esi,%esi
call   1050 <lcd_cmd@plt>
mov    $0x28,%edi
mov    $0x38,%esi
call   1050 <lcd_cmd@plt>
mov    $0x9c40,%edi
call   1060 <usleep@plt>
mov    $0x28,%edi
mov    $0x3c,%esi
call   1050 <lcd_cmd@plt>
mov    $0x16,%edi
mov    $0xa8,%esi
call   1050 <lcd_cmd@plt>
xor    %esi,%esi
mov    $0x13f,%edx
mov    $0xef,%ecx
mov    %esi,%edi
call   1040 <lcd_area@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<lcd_init>:
push   %rax
xor    %eax,%eax
call   1030 <lcd_reset@plt>
mov    $0xea,%edi
xor    %esi,%esi
call   1050 <lcd_cmd@plt>
mov    $0xeb,%edi
mov    $0x20,%esi
call   1050 <lcd_cmd@plt>
mov    $0xec,%edi
mov    $0xc,%esi
call   1050 <lcd_cmd@plt>
mov    $0xed,%edi
mov    $0xc4,%esi
call   1050 <lcd_cmd@plt>
mov    $0xe8,%edi
mov    $0x40,%esi
call   1050 <lcd_cmd@plt>
mov    $0xe9,%edi
mov    $0x38,%esi
call   1050 <lcd_cmd@plt>
mov    $0xf1,%edi
mov    $0x1,%esi
call   1050 <lcd_cmd@plt>
mov    $0xf2,%edi
mov    $0x10,%esi
call   1050 <lcd_cmd@plt>
mov    $0x27,%edi
mov    $0xa3,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1b,%edi
mov    $0x1b,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1a,%edi
mov    $0x1,%esi
call   1050 <lcd_cmd@plt>
mov    $0x24,%edi
mov    $0x2f,%esi
call   1050 <lcd_cmd@plt>
mov    $0x25,%edi
mov    $0x57,%esi
call   1050 <lcd_cmd@plt>
mov    $0x23,%edi
mov    $0x8d,%esi
call   1050 <lcd_cmd@plt>
mov    $0x18,%edi
mov    $0x36,%esi
call   1050 <lcd_cmd@plt>
mov    $0x19,%edi
mov    $0x1,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1,%edi
xor    %esi,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1f,%edi
mov    $0x88,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1388,%edi
call   1060 <usleep@plt>
mov    $0x1f,%edi
mov    $0x80,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1388,%edi
call   1060 <usleep@plt>
mov    $0x1f,%edi
mov    $0x90,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1388,%edi
call   1060 <usleep@plt>
mov    $0x1f,%edi
mov    $0xd0,%esi
call   1050 <lcd_cmd@plt>
mov    $0x1388,%edi
call   1060 <usleep@plt>
mov    $0x17,%edi
mov    $0x5,%esi
call   1050 <lcd_cmd@plt>
mov    $0x36,%edi
xor    %esi,%esi
call   1050 <lcd_cmd@plt>
mov    $0x28,%edi
mov    $0x38,%esi
call   1050 <lcd_cmd@plt>
mov    $0x9c40,%edi
call   1060 <usleep@plt>
mov    $0x28,%edi
mov    $0x3c,%esi
call   1050 <lcd_cmd@plt>
mov    $0x16,%edi
mov    $0xa8,%esi
call   1050 <lcd_cmd@plt>
xor    %edi,%edi
xor    %esi,%esi
mov    $0x13f,%edx
mov    $0xef,%ecx
pop    %rax
jmp    1040 <lcd_area@plt>

LLVM IR (-O0):
define void @lcd_init() {
%1 = call i32 (...) @lcd_reset()
%2 = call i32 @lcd_cmd(i32 234, i32 0)
%3 = call i32 @lcd_cmd(i32 235, i32 32)
%4 = call i32 @lcd_cmd(i32 236, i32 12)
%5 = call i32 @lcd_cmd(i32 237, i32 196)
%6 = call i32 @lcd_cmd(i32 232, i32 64)
%7 = call i32 @lcd_cmd(i32 233, i32 56)
%8 = call i32 @lcd_cmd(i32 241, i32 1)
%9 = call i32 @lcd_cmd(i32 242, i32 16)
%10 = call i32 @lcd_cmd(i32 39, i32 163)
%11 = call i32 @lcd_cmd(i32 27, i32 27)
%12 = call i32 @lcd_cmd(i32 26, i32 1)
%13 = call i32 @lcd_cmd(i32 36, i32 47)
%14 = call i32 @lcd_cmd(i32 37, i32 87)
%15 = call i32 @lcd_cmd(i32 35, i32 141)
%16 = call i32 @lcd_cmd(i32 24, i32 54)
%17 = call i32 @lcd_cmd(i32 25, i32 1)
%18 = call i32 @lcd_cmd(i32 1, i32 0)
%19 = call i32 @lcd_cmd(i32 31, i32 136)
%20 = call i32 @usleep(i32 5000)
%21 = call i32 @lcd_cmd(i32 31, i32 128)
%22 = call i32 @usleep(i32 5000)
%23 = call i32 @lcd_cmd(i32 31, i32 144)
%24 = call i32 @usleep(i32 5000)
%25 = call i32 @lcd_cmd(i32 31, i32 208)
%26 = call i32 @usleep(i32 5000)
%27 = call i32 @lcd_cmd(i32 23, i32 5)
%28 = call i32 @lcd_cmd(i32 54, i32 0)
%29 = call i32 @lcd_cmd(i32 40, i32 56)
%30 = call i32 @usleep(i32 40000)
%31 = call i32 @lcd_cmd(i32 40, i32 60)
%32 = call i32 @lcd_cmd(i32 22, i32 168)
%33 = call i32 @lcd_area(i32 0, i32 0, i32 319, i32 239)
ret void
}

LLVM IR (-O2):
define void @lcd_init() {
%1 = tail call i32 (...) @lcd_reset()
%2 = tail call i32 @lcd_cmd(i32 234, i32 0)
%3 = tail call i32 @lcd_cmd(i32 235, i32 32)
%4 = tail call i32 @lcd_cmd(i32 236, i32 12)
%5 = tail call i32 @lcd_cmd(i32 237, i32 196)
%6 = tail call i32 @lcd_cmd(i32 232, i32 64)
%7 = tail call i32 @lcd_cmd(i32 233, i32 56)
%8 = tail call i32 @lcd_cmd(i32 241, i32 1)
%9 = tail call i32 @lcd_cmd(i32 242, i32 16)
%10 = tail call i32 @lcd_cmd(i32 39, i32 163)
%11 = tail call i32 @lcd_cmd(i32 27, i32 27)
%12 = tail call i32 @lcd_cmd(i32 26, i32 1)
%13 = tail call i32 @lcd_cmd(i32 36, i32 47)
%14 = tail call i32 @lcd_cmd(i32 37, i32 87)
%15 = tail call i32 @lcd_cmd(i32 35, i32 141)
%16 = tail call i32 @lcd_cmd(i32 24, i32 54)
%17 = tail call i32 @lcd_cmd(i32 25, i32 1)
%18 = tail call i32 @lcd_cmd(i32 1, i32 0)
%19 = tail call i32 @lcd_cmd(i32 31, i32 136)
%20 = tail call i32 @usleep(i32 5000)
%21 = tail call i32 @lcd_cmd(i32 31, i32 128)
%22 = tail call i32 @usleep(i32 5000)
%23 = tail call i32 @lcd_cmd(i32 31, i32 144)
%24 = tail call i32 @usleep(i32 5000)
%25 = tail call i32 @lcd_cmd(i32 31, i32 208)
%26 = tail call i32 @usleep(i32 5000)
%27 = tail call i32 @lcd_cmd(i32 23, i32 5)
%28 = tail call i32 @lcd_cmd(i32 54, i32 0)
%29 = tail call i32 @lcd_cmd(i32 40, i32 56)
%30 = tail call i32 @usleep(i32 40000)
%31 = tail call i32 @lcd_cmd(i32 40, i32 60)
%32 = tail call i32 @lcd_cmd(i32 22, i32 168)
%33 = tail call i32 @lcd_area(i32 0, i32 0, i32 319, i32 239)
ret void
}