void init_io() {
  *(int *)0xd4051024 = 0xffffffff;
  *(int *)0xD4015064 = 0x7;
  *(int *)0xD4015064 = 0x3;
  *(int *)0xD401502c = 0x13;
  *(int *)0xD4015034 = 0x13;
  *(int *)0xd401e260 = 0xc4;
  *(int *)0xd401e264 = 0xc4;
  *(int *)0xd401e0c8 = 0xc1;
  *(int *)0xd401e0cc = 0xc1;
  ((unsigned int volatile *)0xd4018000)[1] = 0x40;
  ((unsigned int volatile *)0xd4018000)[3] = 0x83;
  ((unsigned int volatile *)0xd4018000)[0] = 42;
  ((unsigned int volatile *)0xd4018000)[1] = 00;
  ((unsigned int volatile *)0xd4018000)[3] = 0x03;
  ((unsigned int volatile *)0xd4018000)[2] = 0x07;
  *(int *)0xd4015050 = 7;
  *(int *)0xd4015050 = 3;
  *(int *)0xd401e100 = 0x5003;
  *(int *)0xd401e104 = 0x5003;
  *(int *)0xd401e108 = 0x5003;
  *(int *)0xd401e10c = 0x5003;
}


x86 assembly (clang, -O0):
<init_io>:
push   %rbp
mov    %rsp,%rbp
mov    $0xd4051024,%eax
movl   $0xffffffff,(%rax)
mov    $0xd4015064,%eax
movl   $0x7,(%rax)
mov    $0xd4015064,%eax
movl   $0x3,(%rax)
mov    $0xd401502c,%eax
movl   $0x13,(%rax)
mov    $0xd4015034,%eax
movl   $0x13,(%rax)
mov    $0xd401e260,%eax
movl   $0xc4,(%rax)
mov    $0xd401e264,%eax
movl   $0xc4,(%rax)
mov    $0xd401e0c8,%eax
movl   $0xc1,(%rax)
mov    $0xd401e0cc,%eax
movl   $0xc1,(%rax)
mov    $0xd4018000,%eax
movl   $0x40,0x4(%rax)
mov    $0xd4018000,%eax
movl   $0x83,0xc(%rax)
mov    $0xd4018000,%eax
movl   $0x2a,(%rax)
mov    $0xd4018000,%eax
movl   $0x0,0x4(%rax)
mov    $0xd4018000,%eax
movl   $0x3,0xc(%rax)
mov    $0xd4018000,%eax
movl   $0x7,0x8(%rax)
mov    $0xd4015050,%eax
movl   $0x7,(%rax)
mov    $0xd4015050,%eax
movl   $0x3,(%rax)
mov    $0xd401e100,%eax
movl   $0x5003,(%rax)
mov    $0xd401e104,%eax
movl   $0x5003,(%rax)
mov    $0xd401e108,%eax
movl   $0x5003,(%rax)
mov    $0xd401e10c,%eax
movl   $0x5003,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<init_io>:
mov    $0xd4018004,%eax
movl   $0xffffffff,0x39020(%rax)
ff ff ff
movl   $0x3,-0x2fa0(%rax)
movl   $0x13,-0x2fd8(%rax)
movl   $0x13,-0x2fd0(%rax)
movabs $0xc4000000c4,%rcx
mov    %rcx,0x625c(%rax)
movabs $0xc1000000c1,%rcx
mov    %rcx,0x60c4(%rax)
movl   $0x40,(%rax)
movl   $0x83,0x8(%rax)
movl   $0x2a,-0x4(%rax)
movl   $0x0,(%rax)
movl   $0x3,0x8(%rax)
movl   $0x7,0x4(%rax)
movl   $0x3,-0x2fb4(%rax)
movaps 0xe78(%rip),%xmm0
movaps %xmm0,0x60fc(%rax)
ret

LLVM IR (-O0):
define void @init_io() {
store i32 -1, i32* inttoptr (i64 3557101604 to i32*)
store i32 7, i32* inttoptr (i64 3556855908 to i32*)
store i32 3, i32* inttoptr (i64 3556855908 to i32*)
store i32 19, i32* inttoptr (i64 3556855852 to i32*)
store i32 19, i32* inttoptr (i64 3556855860 to i32*)
store i32 196, i32* inttoptr (i64 3556893280 to i32*)
store i32 196, i32* inttoptr (i64 3556893284 to i32*)
store i32 193, i32* inttoptr (i64 3556892872 to i32*)
store i32 193, i32* inttoptr (i64 3556892876 to i32*)
store volatile i32 64, i32* getelementptr inbounds (i32, i32* inttoptr (i64 3556868096 to i32*), i64 1)
store volatile i32 131, i32* getelementptr inbounds (i32, i32* inttoptr (i64 3556868096 to i32*), i64 3)
store volatile i32 42, i32* inttoptr (i64 3556868096 to i32*)
store volatile i32 0, i32* getelementptr inbounds (i32, i32* inttoptr (i64 3556868096 to i32*), i64 1)
store volatile i32 3, i32* getelementptr inbounds (i32, i32* inttoptr (i64 3556868096 to i32*), i64 3)
store volatile i32 7, i32* getelementptr inbounds (i32, i32* inttoptr (i64 3556868096 to i32*), i64 2)
store i32 7, i32* inttoptr (i64 3556855888 to i32*)
store i32 3, i32* inttoptr (i64 3556855888 to i32*)
store i32 20483, i32* inttoptr (i64 3556892928 to i32*)
store i32 20483, i32* inttoptr (i64 3556892932 to i32*)
store i32 20483, i32* inttoptr (i64 3556892936 to i32*)
store i32 20483, i32* inttoptr (i64 3556892940 to i32*)
ret void
}

LLVM IR (-O2):
define void @init_io() {
store i32 -1, i32* inttoptr (i64 3557101604 to i32*)
store i32 3, i32* inttoptr (i64 3556855908 to i32*)
store i32 19, i32* inttoptr (i64 3556855852 to i32*)
store i32 19, i32* inttoptr (i64 3556855860 to i32*)
store i32 196, i32* inttoptr (i64 3556893280 to i32*)
store i32 196, i32* inttoptr (i64 3556893284 to i32*)
store i32 193, i32* inttoptr (i64 3556892872 to i32*)
store i32 193, i32* inttoptr (i64 3556892876 to i32*)
store volatile i32 64, i32* inttoptr (i64 3556868100 to i32*)
store volatile i32 131, i32* inttoptr (i64 3556868108 to i32*)
store volatile i32 42, i32* inttoptr (i64 3556868096 to i32*)
store volatile i32 0, i32* inttoptr (i64 3556868100 to i32*)
store volatile i32 3, i32* inttoptr (i64 3556868108 to i32*)
store volatile i32 7, i32* inttoptr (i64 3556868104 to i32*)
store i32 3, i32* inttoptr (i64 3556855888 to i32*)
store i32 20483, i32* inttoptr (i64 3556892928 to i32*)
store i32 20483, i32* inttoptr (i64 3556892932 to i32*)
store i32 20483, i32* inttoptr (i64 3556892936 to i32*)
store i32 20483, i32* inttoptr (i64 3556892940 to i32*)
ret void
}