#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*/ aitc_init();
int /*<<< orphan*/ display_init();
int /*<<< orphan*/ exception_init();
int /*<<< orphan*/ gpio_init();
int /*<<< orphan*/ gpt_init();
int /*<<< orphan*/ i2c_init();
int /*<<< orphan*/ i2c_set_bus_speed(int);
int /*<<< orphan*/ interrupt_init();
int /*<<< orphan*/ serial_init();
int /*<<< orphan*/ serial_set_baudrate(int);
int /*<<< orphan*/ tsc2101_init();
void hardware_init() {
  interrupt_init();
  aitc_init();
  exception_init();
  gpio_init();
  serial_init();
  gpt_init();
  i2c_init();
  display_init();
  tsc2101_init();
  i2c_set_bus_speed(100000);
  serial_set_baudrate(9600);
}


x86 assembly (clang, -O0):
<hardware_init>:
push   %rbp
mov    %rsp,%rbp
mov    $0x0,%al
call   10b0 <interrupt_init@plt>
mov    $0x0,%al
call   1080 <aitc_init@plt>
mov    $0x0,%al
call   10a0 <exception_init@plt>
mov    $0x0,%al
call   10c0 <gpio_init@plt>
mov    $0x0,%al
call   10d0 <serial_init@plt>
mov    $0x0,%al
call   1060 <gpt_init@plt>
mov    $0x0,%al
call   1030 <i2c_init@plt>
mov    $0x0,%al
call   1050 <display_init@plt>
mov    $0x0,%al
call   1040 <tsc2101_init@plt>
mov    $0x186a0,%edi
call   1090 <i2c_set_bus_speed@plt>
mov    $0x2580,%edi
call   1070 <serial_set_baudrate@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<hardware_init>:
push   %rax
xor    %eax,%eax
call   10b0 <interrupt_init@plt>
xor    %eax,%eax
call   1080 <aitc_init@plt>
xor    %eax,%eax
call   10a0 <exception_init@plt>
xor    %eax,%eax
call   10c0 <gpio_init@plt>
xor    %eax,%eax
call   10d0 <serial_init@plt>
xor    %eax,%eax
call   1060 <gpt_init@plt>
xor    %eax,%eax
call   1030 <i2c_init@plt>
xor    %eax,%eax
call   1050 <display_init@plt>
xor    %eax,%eax
call   1040 <tsc2101_init@plt>
mov    $0x186a0,%edi
call   1090 <i2c_set_bus_speed@plt>
mov    $0x2580,%edi
pop    %rax
jmp    1070 <serial_set_baudrate@plt>

LLVM IR (-O0):
define void @hardware_init() {
%1 = call i32 (...) @interrupt_init()
%2 = call i32 (...) @aitc_init()
%3 = call i32 (...) @exception_init()
%4 = call i32 (...) @gpio_init()
%5 = call i32 (...) @serial_init()
%6 = call i32 (...) @gpt_init()
%7 = call i32 (...) @i2c_init()
%8 = call i32 (...) @display_init()
%9 = call i32 (...) @tsc2101_init()
%10 = call i32 @i2c_set_bus_speed(i32 100000)
%11 = call i32 @serial_set_baudrate(i32 9600)
ret void
}

LLVM IR (-O2):
define void @hardware_init() {
%1 = tail call i32 (...) @interrupt_init()
%2 = tail call i32 (...) @aitc_init()
%3 = tail call i32 (...) @exception_init()
%4 = tail call i32 (...) @gpio_init()
%5 = tail call i32 (...) @serial_init()
%6 = tail call i32 (...) @gpt_init()
%7 = tail call i32 (...) @i2c_init()
%8 = tail call i32 (...) @display_init()
%9 = tail call i32 (...) @tsc2101_init()
%10 = tail call i32 @i2c_set_bus_speed(i32 100000)
%11 = tail call i32 @serial_set_baudrate(i32 9600)
ret void
}