#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 */
typedef int uint32_t;

/* Variables and functions */
void setFramebuffers(void) {
  *(volatile uint32_t *)0x80FFFC0 = 0x18300000;
  *(volatile uint32_t *)0x80FFFC4 = 0x18300000;
  *(volatile uint32_t *)0x80FFFC8 = 0x18300000;
  *(volatile uint32_t *)0x80FFFCC = 0x18300000;
  *(volatile uint32_t *)0x80FFFD0 = 0x18346500;
  *(volatile uint32_t *)0x80FFFD4 = 0x18346500;
  *(volatile uint32_t *)0x80FFFD8 = 1;
  *(volatile uint32_t *)0x80FFFDC = 1;
  *(volatile uint32_t *)0x23FFFE00 = 0x18300000;
  *(volatile uint32_t *)0x23FFFE04 = 0x18300000;
  *(volatile uint32_t *)0x23FFFE08 = 0x18346500;
}


x86 assembly (clang, -O0):
<setFramebuffers>:
push   %rbp
mov    %rsp,%rbp
mov    $0x80fffc0,%eax
movl   $0x18300000,(%rax)
mov    $0x80fffc4,%eax
movl   $0x18300000,(%rax)
mov    $0x80fffc8,%eax
movl   $0x18300000,(%rax)
mov    $0x80fffcc,%eax
movl   $0x18300000,(%rax)
mov    $0x80fffd0,%eax
movl   $0x18346500,(%rax)
mov    $0x80fffd4,%eax
movl   $0x18346500,(%rax)
mov    $0x80fffd8,%eax
movl   $0x1,(%rax)
mov    $0x80fffdc,%eax
movl   $0x1,(%rax)
mov    $0x23fffe00,%eax
movl   $0x18300000,(%rax)
mov    $0x23fffe04,%eax
movl   $0x18300000,(%rax)
mov    $0x23fffe08,%eax
movl   $0x18346500,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<setFramebuffers>:
movl   $0x18300000,0x80fffc0
movl   $0x18300000,0x80fffc4
movl   $0x18300000,0x80fffc8
movl   $0x18300000,0x80fffcc
movl   $0x18346500,0x80fffd0
movl   $0x18346500,0x80fffd4
movl   $0x1,0x80fffd8
movl   $0x1,0x80fffdc
movl   $0x18300000,0x23fffe00
movl   $0x18300000,0x23fffe04
movl   $0x18346500,0x23fffe08
ret

LLVM IR (-O0):
define void @setFramebuffers() {
store volatile i32 405798912, i32* inttoptr (i64 135266240 to i32*)
store volatile i32 405798912, i32* inttoptr (i64 135266244 to i32*)
store volatile i32 405798912, i32* inttoptr (i64 135266248 to i32*)
store volatile i32 405798912, i32* inttoptr (i64 135266252 to i32*)
store volatile i32 406086912, i32* inttoptr (i64 135266256 to i32*)
store volatile i32 406086912, i32* inttoptr (i64 135266260 to i32*)
store volatile i32 1, i32* inttoptr (i64 135266264 to i32*)
store volatile i32 1, i32* inttoptr (i64 135266268 to i32*)
store volatile i32 405798912, i32* inttoptr (i64 603979264 to i32*)
store volatile i32 405798912, i32* inttoptr (i64 603979268 to i32*)
store volatile i32 406086912, i32* inttoptr (i64 603979272 to i32*)
ret void
}

LLVM IR (-O2):
define void @setFramebuffers() {
store volatile i32 405798912, i32* inttoptr (i64 135266240 to i32*)
store volatile i32 405798912, i32* inttoptr (i64 135266244 to i32*)
store volatile i32 405798912, i32* inttoptr (i64 135266248 to i32*)
store volatile i32 405798912, i32* inttoptr (i64 135266252 to i32*)
store volatile i32 406086912, i32* inttoptr (i64 135266256 to i32*)
store volatile i32 406086912, i32* inttoptr (i64 135266260 to i32*)
store volatile i32 1, i32* inttoptr (i64 135266264 to i32*)
store volatile i32 1, i32* inttoptr (i64 135266268 to i32*)
store volatile i32 405798912, i32* inttoptr (i64 603979264 to i32*)
store volatile i32 405798912, i32* inttoptr (i64 603979268 to i32*)
store volatile i32 406086912, i32* inttoptr (i64 603979272 to i32*)
ret void
}