void initLCD(void) {
  (*(volatile unsigned int *)(0x7F008100)) = 0xAAAAAAAA;
  (*(volatile unsigned int *)(0x7F008120)) = 0xAAAAAA;
  (*(volatile unsigned int *)(0x7F0080A0)) &= ~(3 << 28);
  (*(volatile unsigned int *)(0x7F0080A0)) |= (1 << 28);
  (*(volatile unsigned int *)(0x7F008080)) &= ~(0xF);
  (*(volatile unsigned int *)(0x7F008080)) |= 1;
  (*(volatile unsigned int *)(0x7410800C)) &= ~(1 << 3);
  (*(volatile unsigned int *)(0x7F0081A0)) =
      ((*(volatile unsigned int *)(0x7F0081A0)) & (~3)) | 1;
  (*(volatile unsigned int *)(0x77100000)) &=
      ~((3 << 26) | (3 << 17) | (0xFF << 6) | 0x1F);
  (*(volatile unsigned int *)(0x77100000)) |= ((13 << 6) | (1 << 4));
  (*(volatile unsigned int *)(0x77100004)) &= ~(0xF << 4);
  (*(volatile unsigned int *)(0x77100004)) |= (0x7 << 4);
  (*(volatile unsigned int *)(0x77100010)) = (1 << 16) | (1 << 8) | 9;
  (*(volatile unsigned int *)(0x77100014)) = (1 << 16) | (1 << 8) | 40;
  (*(volatile unsigned int *)(0x77100018)) = (271 << 11) | 479;
  (*(volatile unsigned int *)(0x77100020)) &= ~(0xF << 2);
  (*(volatile unsigned int *)(0x77100020)) |= (0xB << 2);
  (*(volatile unsigned int *)(0x77100040)) = 0;
  (*(volatile unsigned int *)(0x77100044)) = (479 << 11) | 271;
  (*(volatile unsigned int *)(0x77100048)) = (479 + 1) * (271 + 1);
  (*(volatile unsigned int *)(0x771000A0)) = 0x55000000;
  (*(volatile unsigned int *)(0x771000D0)) = (479 + 1) * 4 * (271 + 1);
  return;
}


x86 assembly (clang, -O0):
<initLCD>:
push   %rbp
mov    %rsp,%rbp
mov    $0x7f008100,%eax
movl   $0xaaaaaaaa,(%rax)
mov    $0x7f008120,%eax
movl   $0xaaaaaa,(%rax)
mov    $0x7f0080a0,%eax
mov    (%rax),%ecx
and    $0xcfffffff,%ecx
mov    $0x7f0080a0,%eax
mov    %ecx,(%rax)
mov    $0x7f0080a0,%eax
mov    (%rax),%ecx
or     $0x10000000,%ecx
mov    $0x7f0080a0,%eax
mov    %ecx,(%rax)
mov    $0x7f008080,%eax
mov    (%rax),%ecx
and    $0xfffffff0,%ecx
mov    $0x7f008080,%eax
mov    %ecx,(%rax)
mov    $0x7f008080,%eax
mov    (%rax),%ecx
or     $0x1,%ecx
mov    $0x7f008080,%eax
mov    %ecx,(%rax)
mov    $0x7410800c,%eax
mov    (%rax),%ecx
and    $0xfffffff7,%ecx
mov    $0x7410800c,%eax
mov    %ecx,(%rax)
mov    $0x7f0081a0,%eax
mov    (%rax),%ecx
and    $0xfffffffc,%ecx
or     $0x1,%ecx
mov    $0x7f0081a0,%eax
mov    %ecx,(%rax)
mov    $0x77100000,%eax
mov    (%rax),%ecx
and    $0xf3f9c020,%ecx
mov    $0x77100000,%eax
mov    %ecx,(%rax)
mov    $0x77100000,%eax
mov    (%rax),%ecx
or     $0x350,%ecx
mov    $0x77100000,%eax
mov    %ecx,(%rax)
mov    $0x77100004,%eax
mov    (%rax),%ecx
and    $0xffffff0f,%ecx
mov    $0x77100004,%eax
mov    %ecx,(%rax)
mov    $0x77100004,%eax
mov    (%rax),%ecx
or     $0x70,%ecx
mov    $0x77100004,%eax
mov    %ecx,(%rax)
mov    $0x77100010,%eax
movl   $0x10109,(%rax)
mov    $0x77100014,%eax
movl   $0x10128,(%rax)
mov    $0x77100018,%eax
movl   $0x879df,(%rax)
mov    $0x77100020,%eax
mov    (%rax),%ecx
and    $0xffffffc3,%ecx
mov    $0x77100020,%eax
mov    %ecx,(%rax)
mov    $0x77100020,%eax
mov    (%rax),%ecx
or     $0x2c,%ecx
mov    $0x77100020,%eax
mov    %ecx,(%rax)
mov    $0x77100040,%eax
movl   $0x0,(%rax)
mov    $0x77100044,%eax
movl   $0xef90f,(%rax)
mov    $0x77100048,%eax
movl   $0x1fe00,(%rax)
mov    $0x771000a0,%eax
movl   $0x55000000,(%rax)
mov    $0x771000d0,%eax
movl   $0x7f800,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<initLCD>:
movl   $0xaaaaaaaa,0x7f008100
aa aa aa aa
movl   $0xaaaaaa,0x7f008120
andl   $0xcfffffff,0x7f0080a0
ff ff ff cf
orl    $0x10000000,0x7f0080a0
andl   $0xfffffff0,0x7f008080
f0
orl    $0x1,0x7f008080
01
andl   $0xfffffff7,0x7410800c
f7
mov    0x7f0081a0,%eax
and    $0xfffffffc,%eax
or     $0x1,%eax
mov    %eax,0x7f0081a0
andl   $0xf3f9c020,0x77100000
20 c0 f9 f3
orl    $0x350,0x77100000
andl   $0xffffff0f,0x77100004
0f ff ff ff
orl    $0x70,0x77100004
70
movl   $0x10109,0x77100010
movl   $0x10128,0x77100014
movl   $0x879df,0x77100018
andl   $0xffffffc3,0x77100020
c3
orl    $0x2c,0x77100020
2c
movl   $0x0,0x77100040
movl   $0xef90f,0x77100044
movl   $0x1fe00,0x77100048
movl   $0x55000000,0x771000a0
movl   $0x7f800,0x771000d0
ret

LLVM IR (-O0):
define void @initLCD() {
store volatile i32 -1431655766, i32* inttoptr (i64 2130739456 to i32*)
store volatile i32 11184810, i32* inttoptr (i64 2130739488 to i32*)
%1 = load volatile i32, i32* inttoptr (i64 2130739360 to i32*)
%2 = and i32 %1, -805306369
store volatile i32 %2, i32* inttoptr (i64 2130739360 to i32*)
%3 = load volatile i32, i32* inttoptr (i64 2130739360 to i32*)
%4 = or i32 %3, 268435456
store volatile i32 %4, i32* inttoptr (i64 2130739360 to i32*)
%5 = load volatile i32, i32* inttoptr (i64 2130739328 to i32*)
%6 = and i32 %5, -16
store volatile i32 %6, i32* inttoptr (i64 2130739328 to i32*)
%7 = load volatile i32, i32* inttoptr (i64 2130739328 to i32*)
%8 = or i32 %7, 1
store volatile i32 %8, i32* inttoptr (i64 2130739328 to i32*)
%9 = load volatile i32, i32* inttoptr (i64 1947238412 to i32*)
%10 = and i32 %9, -9
store volatile i32 %10, i32* inttoptr (i64 1947238412 to i32*)
%11 = load volatile i32, i32* inttoptr (i64 2130739616 to i32*)
%12 = and i32 %11, -4
%13 = or i32 %12, 1
store volatile i32 %13, i32* inttoptr (i64 2130739616 to i32*)
%14 = load volatile i32, i32* inttoptr (i64 1997537280 to i32*)
%15 = and i32 %14, -201736160
store volatile i32 %15, i32* inttoptr (i64 1997537280 to i32*)
%16 = load volatile i32, i32* inttoptr (i64 1997537280 to i32*)
%17 = or i32 %16, 848
store volatile i32 %17, i32* inttoptr (i64 1997537280 to i32*)
%18 = load volatile i32, i32* inttoptr (i64 1997537284 to i32*)
%19 = and i32 %18, -241
store volatile i32 %19, i32* inttoptr (i64 1997537284 to i32*)
%20 = load volatile i32, i32* inttoptr (i64 1997537284 to i32*)
%21 = or i32 %20, 112
store volatile i32 %21, i32* inttoptr (i64 1997537284 to i32*)
store volatile i32 65801, i32* inttoptr (i64 1997537296 to i32*)
store volatile i32 65832, i32* inttoptr (i64 1997537300 to i32*)
store volatile i32 555487, i32* inttoptr (i64 1997537304 to i32*)
%22 = load volatile i32, i32* inttoptr (i64 1997537312 to i32*)
%23 = and i32 %22, -61
store volatile i32 %23, i32* inttoptr (i64 1997537312 to i32*)
%24 = load volatile i32, i32* inttoptr (i64 1997537312 to i32*)
%25 = or i32 %24, 44
store volatile i32 %25, i32* inttoptr (i64 1997537312 to i32*)
store volatile i32 0, i32* inttoptr (i64 1997537344 to i32*)
store volatile i32 981263, i32* inttoptr (i64 1997537348 to i32*)
store volatile i32 130560, i32* inttoptr (i64 1997537352 to i32*)
store volatile i32 1426063360, i32* inttoptr (i64 1997537440 to i32*)
store volatile i32 522240, i32* inttoptr (i64 1997537488 to i32*)
ret void
}

LLVM IR (-O2):
define void @initLCD() {
store volatile i32 -1431655766, i32* inttoptr (i64 2130739456 to i32*)
store volatile i32 11184810, i32* inttoptr (i64 2130739488 to i32*)
%1 = load volatile i32, i32* inttoptr (i64 2130739360 to i32*)
%2 = and i32 %1, -805306369
store volatile i32 %2, i32* inttoptr (i64 2130739360 to i32*)
%3 = load volatile i32, i32* inttoptr (i64 2130739360 to i32*)
%4 = or i32 %3, 268435456
store volatile i32 %4, i32* inttoptr (i64 2130739360 to i32*)
%5 = load volatile i32, i32* inttoptr (i64 2130739328 to i32*)
%6 = and i32 %5, -16
store volatile i32 %6, i32* inttoptr (i64 2130739328 to i32*)
%7 = load volatile i32, i32* inttoptr (i64 2130739328 to i32*)
%8 = or i32 %7, 1
store volatile i32 %8, i32* inttoptr (i64 2130739328 to i32*)
%9 = load volatile i32, i32* inttoptr (i64 1947238412 to i32*)
%10 = and i32 %9, -9
store volatile i32 %10, i32* inttoptr (i64 1947238412 to i32*)
%11 = load volatile i32, i32* inttoptr (i64 2130739616 to i32*)
%12 = and i32 %11, -4
%13 = or i32 %12, 1
store volatile i32 %13, i32* inttoptr (i64 2130739616 to i32*)
%14 = load volatile i32, i32* inttoptr (i64 1997537280 to i32*)
%15 = and i32 %14, -201736160
store volatile i32 %15, i32* inttoptr (i64 1997537280 to i32*)
%16 = load volatile i32, i32* inttoptr (i64 1997537280 to i32*)
%17 = or i32 %16, 848
store volatile i32 %17, i32* inttoptr (i64 1997537280 to i32*)
%18 = load volatile i32, i32* inttoptr (i64 1997537284 to i32*)
%19 = and i32 %18, -241
store volatile i32 %19, i32* inttoptr (i64 1997537284 to i32*)
%20 = load volatile i32, i32* inttoptr (i64 1997537284 to i32*)
%21 = or i32 %20, 112
store volatile i32 %21, i32* inttoptr (i64 1997537284 to i32*)
store volatile i32 65801, i32* inttoptr (i64 1997537296 to i32*)
store volatile i32 65832, i32* inttoptr (i64 1997537300 to i32*)
store volatile i32 555487, i32* inttoptr (i64 1997537304 to i32*)
%22 = load volatile i32, i32* inttoptr (i64 1997537312 to i32*)
%23 = and i32 %22, -61
store volatile i32 %23, i32* inttoptr (i64 1997537312 to i32*)
%24 = load volatile i32, i32* inttoptr (i64 1997537312 to i32*)
%25 = or i32 %24, 44
store volatile i32 %25, i32* inttoptr (i64 1997537312 to i32*)
store volatile i32 0, i32* inttoptr (i64 1997537344 to i32*)
store volatile i32 981263, i32* inttoptr (i64 1997537348 to i32*)
store volatile i32 130560, i32* inttoptr (i64 1997537352 to i32*)
store volatile i32 1426063360, i32* inttoptr (i64 1997537440 to i32*)
store volatile i32 522240, i32* inttoptr (i64 1997537488 to i32*)
ret void
}