void lcd_device_init(void) {
  lcd_write((sizeof((int[]){0x11}) / sizeof(int)), 0x11);
  lcd_write((sizeof((int[]){0x50}) / sizeof(int)), 0x50);
  lcd_write((sizeof((int[]){0xD0, 0x07, 0x42, 0x18}) / sizeof(int)), 0xD0, 0x07,
            0x42, 0x18);
  lcd_write((sizeof((int[]){0xD1, 0x00, 0x07, 0x10}) / sizeof(int)), 0xD1, 0x00,
            0x07, 0x10);
  lcd_write((sizeof((int[]){0xD2, 0x01, 0x02}) / sizeof(int)), 0xD2, 0x01,
            0x02);
  lcd_write((sizeof((int[]){0xC0, 0x10, 0x3B, 0x00, 0x02, 0x11}) / sizeof(int)),
            0xC0, 0x10, 0x3B, 0x00, 0x02, 0x11);
  lcd_write((sizeof((int[]){0xC5, 0x03}) / sizeof(int)), 0xC5, 0x03);
  lcd_write((sizeof((int[]){0x3A, 0x55}) / sizeof(int)), 0x3A, 0x55);
  lcd_write((sizeof((int[]){0x36, 0x09}) / sizeof(int)), 0x36, 0x09);
  lcd_write((sizeof((int[]){0x29}) / sizeof(int)), 0x29);
  lcd_set_scroll_start(UINT16_C(0));
}


x86 assembly (clang, -O0):
<lcd_device_init>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    $0x1,%edi
mov    $0x11,%esi
mov    $0x0,%al
call   1030 <lcd_write@plt>
mov    $0x1,%edi
mov    $0x50,%esi
mov    $0x0,%al
call   1030 <lcd_write@plt>
mov    $0x4,%edi
mov    $0xd0,%esi
mov    $0x7,%edx
mov    $0x42,%ecx
mov    $0x18,%r8d
mov    $0x0,%al
call   1030 <lcd_write@plt>
mov    $0x4,%edi
mov    $0xd1,%esi
xor    %edx,%edx
mov    $0x7,%ecx
mov    $0x10,%r8d
mov    $0x0,%al
call   1030 <lcd_write@plt>
mov    $0x3,%edi
mov    $0xd2,%esi
mov    $0x1,%edx
mov    $0x2,%ecx
mov    $0x0,%al
call   1030 <lcd_write@plt>
mov    $0x6,%edi
mov    $0xc0,%esi
mov    $0x10,%edx
mov    $0x3b,%ecx
xor    %r8d,%r8d
mov    $0x2,%r9d
movl   $0x11,(%rsp)
mov    $0x0,%al
call   1030 <lcd_write@plt>
mov    $0x2,%edi
mov    $0xc5,%esi
mov    $0x3,%edx
mov    $0x0,%al
call   1030 <lcd_write@plt>
mov    $0x2,%edi
mov    $0x3a,%esi
mov    $0x55,%edx
mov    $0x0,%al
call   1030 <lcd_write@plt>
mov    $0x2,%edi
mov    $0x36,%esi
mov    $0x9,%edx
mov    $0x0,%al
call   1030 <lcd_write@plt>
mov    $0x1,%edi
mov    $0x29,%esi
mov    $0x0,%al
call   1030 <lcd_write@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1050 <UINT16_C@plt>
mov    %eax,%edi
mov    $0x0,%al
call   1040 <lcd_set_scroll_start@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<lcd_device_init>:
push   %rax
mov    $0x1,%edi
mov    $0x11,%esi
xor    %eax,%eax
call   1030 <lcd_write@plt>
mov    $0x1,%edi
mov    $0x50,%esi
xor    %eax,%eax
call   1030 <lcd_write@plt>
mov    $0x4,%edi
mov    $0xd0,%esi
mov    $0x7,%edx
mov    $0x42,%ecx
mov    $0x18,%r8d
xor    %eax,%eax
call   1030 <lcd_write@plt>
mov    $0x4,%edi
mov    $0xd1,%esi
xor    %edx,%edx
mov    $0x7,%ecx
mov    $0x10,%r8d
xor    %eax,%eax
call   1030 <lcd_write@plt>
mov    $0x3,%edi
mov    $0xd2,%esi
mov    $0x1,%edx
mov    $0x2,%ecx
xor    %eax,%eax
call   1030 <lcd_write@plt>
movl   $0x11,(%rsp)
mov    $0x6,%edi
mov    $0xc0,%esi
mov    $0x10,%edx
mov    $0x3b,%ecx
xor    %r8d,%r8d
mov    $0x2,%r9d
xor    %eax,%eax
call   1030 <lcd_write@plt>
mov    $0x2,%edi
mov    $0xc5,%esi
mov    $0x3,%edx
xor    %eax,%eax
call   1030 <lcd_write@plt>
mov    $0x2,%edi
mov    $0x3a,%esi
mov    $0x55,%edx
xor    %eax,%eax
call   1030 <lcd_write@plt>
mov    $0x2,%edi
mov    $0x36,%esi
mov    $0x9,%edx
xor    %eax,%eax
call   1030 <lcd_write@plt>
mov    $0x1,%edi
mov    $0x29,%esi
xor    %eax,%eax
call   1030 <lcd_write@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1050 <UINT16_C@plt>
mov    %eax,%edi
xor    %eax,%eax
pop    %rcx
jmp    1040 <lcd_set_scroll_start@plt>

LLVM IR (-O0):
define void @lcd_device_init() {
%1 = call i32 (i64, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, ...)*)(i64 1, i32 17)
%2 = call i32 (i64, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, ...)*)(i64 1, i32 80)
%3 = call i32 (i64, i32, i32, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, i32, i32, ...)*)(i64 4, i32 208, i32 7, i32 66, i32 24)
%4 = call i32 (i64, i32, i32, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, i32, i32, ...)*)(i64 4, i32 209, i32 0, i32 7, i32 16)
%5 = call i32 (i64, i32, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, i32, ...)*)(i64 3, i32 210, i32 1, i32 2)
%6 = call i32 (i64, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, i32, i32, i32, i32, ...)*)(i64 6, i32 192, i32 16, i32 59, i32 0, i32 2, i32 17)
%7 = call i32 (i64, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, ...)*)(i64 2, i32 197, i32 3)
%8 = call i32 (i64, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, ...)*)(i64 2, i32 58, i32 85)
%9 = call i32 (i64, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, ...)*)(i64 2, i32 54, i32 9)
%10 = call i32 (i64, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, ...)*)(i64 1, i32 41)
%11 = call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 0)
%12 = call i32 (i32, ...) bitcast (i32 (...)* @lcd_set_scroll_start to i32 (i32, ...)*)(i32 %11)
ret void
}

LLVM IR (-O2):
define void @lcd_device_init() {
%1 = tail call i32 (i64, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, ...)*)(i64 1, i32 17)
%2 = tail call i32 (i64, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, ...)*)(i64 1, i32 80)
%3 = tail call i32 (i64, i32, i32, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, i32, i32, ...)*)(i64 4, i32 208, i32 7, i32 66, i32 24)
%4 = tail call i32 (i64, i32, i32, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, i32, i32, ...)*)(i64 4, i32 209, i32 0, i32 7, i32 16)
%5 = tail call i32 (i64, i32, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, i32, ...)*)(i64 3, i32 210, i32 1, i32 2)
%6 = tail call i32 (i64, i32, i32, i32, i32, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, i32, i32, i32, i32, ...)*)(i64 6, i32 192, i32 16, i32 59, i32 0, i32 2, i32 17)
%7 = tail call i32 (i64, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, ...)*)(i64 2, i32 197, i32 3)
%8 = tail call i32 (i64, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, ...)*)(i64 2, i32 58, i32 85)
%9 = tail call i32 (i64, i32, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, i32, ...)*)(i64 2, i32 54, i32 9)
%10 = tail call i32 (i64, i32, ...) bitcast (i32 (...)* @lcd_write to i32 (i64, i32, ...)*)(i64 1, i32 41)
%11 = tail call i32 (i32, ...) bitcast (i32 (...)* @UINT16_C to i32 (i32, ...)*)(i32 0)
%12 = tail call i32 (i32, ...) bitcast (i32 (...)* @lcd_set_scroll_start to i32 (i32, ...)*)(i32 %11)
ret void
}