void configure_pio() {
  int flag;
  *(volatile unsigned long *)((void *)0xfffff400 + 0x00) =
      ~(((1 << 5) | (1 << 6) | (1 << 10) | (1 << 9) |
         ((1 << 12) | (1 << 13) | (1 << 14)) | (1 << 15) | (1 << 16) |
         (1 << 17) | (1 << 21) | (1 << 22)) |
        ((1 << 18)));
  *(volatile unsigned long *)((void *)0xfffff400 + 0x04) =
      ((1 << 5) | (1 << 6) | (1 << 10) | (1 << 9) |
       ((1 << 12) | (1 << 13) | (1 << 14)) | (1 << 15) | (1 << 16) | (1 << 17) |
       (1 << 21) | (1 << 22)) |
      ((1 << 18));
  *(volatile unsigned long *)((void *)0xfffff400 + 0x14) =
      ~((((1 << 0) | (1 << 1) | (1 << 2)) |
         ((1 << 3) | (1 << 4) | (1 << 7) | (1 << 8) | (1 << 11) | (1 << 19) |
          (1 << 23))));
  *(volatile unsigned long *)((void *)0xfffff400 + 0x10) =
      (((1 << 0) | (1 << 1) | (1 << 2)) |
       ((1 << 3) | (1 << 4) | (1 << 7) | (1 << 8) | (1 << 11) | (1 << 19) |
        (1 << 23)));
  *(volatile unsigned long *)((void *)0xfffff400 + 0x54) =
      ((1 << 3) | (1 << 4) | (1 << 7) | (1 << 8) | (1 << 11) | (1 << 19) |
       (1 << 23));
  *(volatile unsigned long *)((void *)0xfffff400 + 0x50) =
      ((1 << 0) | (1 << 1) | (1 << 2));
  *(volatile unsigned long *)((void *)0xfffff400 + 0x70) =
      ((1 << 5) | (1 << 6) | (1 << 10) | (1 << 9) |
       ((1 << 12) | (1 << 13) | (1 << 14)) | (1 << 15) | (1 << 16) | (1 << 17) |
       (1 << 21) | (1 << 22));
  *(volatile unsigned long *)((void *)0xfffff400 + 0x74) = ((1 << 18));
  *(volatile unsigned long *)((void *)0xfffff400 + 0x60) =
      ((((1 << 0) | (1 << 1) | (1 << 2)) |
        ((1 << 3) | (1 << 4) | (1 << 7) | (1 << 8) | (1 << 11) | (1 << 19) |
         (1 << 23))) |
       ((1 << 20) | 0xff000000)) |
      ((1 << 5) | (1 << 6) | (1 << 10) | (1 << 9) |
       ((1 << 12) | (1 << 13) | (1 << 14)) | (1 << 15) | (1 << 16) | (1 << 17) |
       (1 << 21) | (1 << 22)) |
      ((1 << 18));
  *(volatile unsigned long *)((void *)0xfffff400 + 0x64) = 0;
}


x86 assembly (clang, -O0):
<configure_pio>:
push   %rbp
mov    %rsp,%rbp
mov    $0xfffff400,%eax
movq   $0xffffffffff98099f,(%rax)
mov    $0xfffff400,%eax
movq   $0x67f660,0x4(%rax)
mov    $0xfffff400,%eax
movq   $0xffffffffff77f660,0x14(%rax)
ff
mov    $0xfffff400,%eax
movq   $0x88099f,0x10(%rax)
mov    $0xfffff400,%eax
movq   $0x880998,0x54(%rax)
mov    $0xfffff400,%eax
movq   $0x7,0x50(%rax)
mov    $0xfffff400,%eax
movq   $0x63f660,0x70(%rax)
mov    $0xfffff400,%eax
movq   $0x40000,0x74(%rax)
mov    $0xfffff400,%eax
mov    $0xffffffff,%ecx
mov    %rcx,0x60(%rax)
mov    $0xfffff400,%eax
movq   $0x0,0x64(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<configure_pio>:
mov    $0xfffff400,%eax
movq   $0xffffffffff98099f,(%rax)
movq   $0x67f660,0x4(%rax)
movq   $0xffffffffff77f660,0x14(%rax)
ff
movq   $0x88099f,0x10(%rax)
movq   $0x880998,0x54(%rax)
movq   $0x7,0x50(%rax)
movq   $0x63f660,0x70(%rax)
movq   $0x40000,0x74(%rax)
lea    0xbff(%rax),%rcx
mov    %rcx,0x60(%rax)
movq   $0x0,0x64(%rax)
ret

LLVM IR (-O0):
define void @configure_pio() {
%1 = alloca i32
store volatile i64 -6813281, i64* inttoptr (i64 4294964224 to i64*)
store volatile i64 6813280, i64* bitcast (i8* getelementptr (i8, i8* inttoptr (i64 4294964224 to i8*), i64 4) to i64*)
store volatile i64 -8915360, i64* bitcast (i8* getelementptr (i8, i8* inttoptr (i64 4294964224 to i8*), i64 20) to i64*)
store volatile i64 8915359, i64* bitcast (i8* getelementptr (i8, i8* inttoptr (i64 4294964224 to i8*), i64 16) to i64*)
store volatile i64 8915352, i64* bitcast (i8* getelementptr (i8, i8* inttoptr (i64 4294964224 to i8*), i64 84) to i64*)
store volatile i64 7, i64* bitcast (i8* getelementptr (i8, i8* inttoptr (i64 4294964224 to i8*), i64 80) to i64*)
store volatile i64 6551136, i64* bitcast (i8* getelementptr (i8, i8* inttoptr (i64 4294964224 to i8*), i64 112) to i64*)
store volatile i64 262144, i64* bitcast (i8* getelementptr (i8, i8* inttoptr (i64 4294964224 to i8*), i64 116) to i64*)
store volatile i64 4294967295, i64* bitcast (i8* getelementptr (i8, i8* inttoptr (i64 4294964224 to i8*), i64 96) to i64*)
store volatile i64 0, i64* bitcast (i8* getelementptr (i8, i8* inttoptr (i64 4294964224 to i8*), i64 100) to i64*)
ret void
}

LLVM IR (-O2):
define void @configure_pio() {
store volatile i64 -6813281, i64* inttoptr (i64 4294964224 to i64*)
store volatile i64 6813280, i64* inttoptr (i64 4294964228 to i64*)
store volatile i64 -8915360, i64* inttoptr (i64 4294964244 to i64*)
store volatile i64 8915359, i64* inttoptr (i64 4294964240 to i64*)
store volatile i64 8915352, i64* inttoptr (i64 4294964308 to i64*)
store volatile i64 7, i64* inttoptr (i64 4294964304 to i64*)
store volatile i64 6551136, i64* inttoptr (i64 4294964336 to i64*)
store volatile i64 262144, i64* inttoptr (i64 4294964340 to i64*)
store volatile i64 4294967295, i64* inttoptr (i64 4294964320 to i64*)
store volatile i64 0, i64* inttoptr (i64 4294964324 to i64*)
ret void
}