#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*/ gpio_write(int, int);
int /*<<< orphan*/ usleep(int);
void lcd_reset() {
  gpio_write(((('B' == 'A'   ? 0x000
                : 'B' == 'B' ? 0x100
                : 'B' == 'C' ? 0x200
                : 'B' == 'D' ? 0x300
                : 'B' == 'E' ? 0x400
                : 'B' == 'F' ? 0x500
                : 'B' == 'G' ? 0x600
                : 'B' == 'H' ? 0x700
                : 'B' == 'J' ? 0x800
                             : 0x900)
               << 16) |
              (1 << 8)),
             1);
  usleep(100000);
  gpio_write(((('B' == 'A'   ? 0x000
                : 'B' == 'B' ? 0x100
                : 'B' == 'C' ? 0x200
                : 'B' == 'D' ? 0x300
                : 'B' == 'E' ? 0x400
                : 'B' == 'F' ? 0x500
                : 'B' == 'G' ? 0x600
                : 'B' == 'H' ? 0x700
                : 'B' == 'J' ? 0x800
                             : 0x900)
               << 16) |
              (1 << 8)),
             0);
  usleep(100000);
  gpio_write(((('B' == 'A'   ? 0x000
                : 'B' == 'B' ? 0x100
                : 'B' == 'C' ? 0x200
                : 'B' == 'D' ? 0x300
                : 'B' == 'E' ? 0x400
                : 'B' == 'F' ? 0x500
                : 'B' == 'G' ? 0x600
                : 'B' == 'H' ? 0x700
                : 'B' == 'J' ? 0x800
                             : 0x900)
               << 16) |
              (1 << 8)),
             1);
  usleep(100000);
}


x86 assembly (clang, -O0):
<lcd_reset>:
push   %rbp
mov    %rsp,%rbp
mov    $0x1000100,%edi
mov    $0x1,%esi
call   1030 <gpio_write@plt>
mov    $0x186a0,%edi
call   1040 <usleep@plt>
mov    $0x1000100,%edi
xor    %esi,%esi
call   1030 <gpio_write@plt>
mov    $0x186a0,%edi
call   1040 <usleep@plt>
mov    $0x1000100,%edi
mov    $0x1,%esi
call   1030 <gpio_write@plt>
mov    $0x186a0,%edi
call   1040 <usleep@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<lcd_reset>:
push   %rax
mov    $0x1000100,%edi
mov    $0x1,%esi
call   1030 <gpio_write@plt>
mov    $0x186a0,%edi
call   1040 <usleep@plt>
mov    $0x1000100,%edi
xor    %esi,%esi
call   1030 <gpio_write@plt>
mov    $0x186a0,%edi
call   1040 <usleep@plt>
mov    $0x1000100,%edi
mov    $0x1,%esi
call   1030 <gpio_write@plt>
mov    $0x186a0,%edi
pop    %rax
jmp    1040 <usleep@plt>

LLVM IR (-O0):
define void @lcd_reset() {
%1 = call i32 @gpio_write(i32 16777472, i32 1)
%2 = call i32 @usleep(i32 100000)
%3 = call i32 @gpio_write(i32 16777472, i32 0)
%4 = call i32 @usleep(i32 100000)
%5 = call i32 @gpio_write(i32 16777472, i32 1)
%6 = call i32 @usleep(i32 100000)
ret void
}

LLVM IR (-O2):
define void @lcd_reset() {
%1 = tail call i32 @gpio_write(i32 16777472, i32 1)
%2 = tail call i32 @usleep(i32 100000)
%3 = tail call i32 @gpio_write(i32 16777472, i32 0)
%4 = tail call i32 @usleep(i32 100000)
%5 = tail call i32 @gpio_write(i32 16777472, i32 1)
%6 = tail call i32 @usleep(i32 100000)
ret void
}