void InitPortsIO() {
  (*(char *)0x5002) = 0x00;
  (*(char *)0x5003) = 0x00;
  (*(char *)0x5000) = 0x00;
  (*(char *)0x5007) = 0x00;
  (*(char *)0x5008) = 0x80;
  (*(char *)0x5005) = 0x00;
  (*(char *)0x500C) = 0x64;
  (*(char *)0x500D) = 0x64;
  (*(char *)0x500E) = 0x64;
  (*(char *)0x500A) = 0x00;
  (*(char *)0x5011) = 0x01;
  (*(char *)0x5012) = 0x01;
  (*(char *)0x5013) = 0x01;
  (*(char *)0x500F) = 0x00;
  (*(char *)0x5016) = 0x20;
  (*(char *)0x5017) = 0x20;
  (*(char *)0x5014) = 0x20;
  (*(char *)0x5020) = 0x00;
  (*(char *)0x5021) = 0x00;
  (*(char *)0x501E) = 0x00;
}


x86 assembly (clang, -O0):
<InitPortsIO>:
push   %rbp
mov    %rsp,%rbp
mov    $0x5002,%eax
movb   $0x0,(%rax)
mov    $0x5003,%eax
movb   $0x0,(%rax)
mov    $0x5000,%eax
movb   $0x0,(%rax)
mov    $0x5007,%eax
movb   $0x0,(%rax)
mov    $0x5008,%eax
movb   $0x80,(%rax)
mov    $0x5005,%eax
movb   $0x0,(%rax)
mov    $0x500c,%eax
movb   $0x64,(%rax)
mov    $0x500d,%eax
movb   $0x64,(%rax)
mov    $0x500e,%eax
movb   $0x64,(%rax)
mov    $0x500a,%eax
movb   $0x0,(%rax)
mov    $0x5011,%eax
movb   $0x1,(%rax)
mov    $0x5012,%eax
movb   $0x1,(%rax)
mov    $0x5013,%eax
movb   $0x1,(%rax)
mov    $0x500f,%eax
movb   $0x0,(%rax)
mov    $0x5016,%eax
movb   $0x20,(%rax)
mov    $0x5017,%eax
movb   $0x20,(%rax)
mov    $0x5014,%eax
movb   $0x20,(%rax)
mov    $0x5020,%eax
movb   $0x0,(%rax)
mov    $0x5021,%eax
movb   $0x0,(%rax)
mov    $0x501e,%eax
movb   $0x0,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<InitPortsIO>:
movb   $0x0,0x5002
movb   $0x0,0x5003
movb   $0x0,0x5000
movb   $0x0,0x5007
movb   $0x80,0x5008
80
movb   $0x0,0x5005
movb   $0x64,0x500c
64
movb   $0x64,0x500d
64
movb   $0x64,0x500e
64
movb   $0x0,0x500a
movb   $0x1,0x5011
01
movb   $0x1,0x5012
01
movb   $0x1,0x5013
01
movb   $0x0,0x500f
movb   $0x20,0x5016
20
movb   $0x20,0x5017
20
movb   $0x20,0x5014
20
movb   $0x0,0x5020
movb   $0x0,0x5021
movb   $0x0,0x501e
ret

LLVM IR (-O0):
define void @InitPortsIO() {
store i8 0, i8* inttoptr (i64 20482 to i8*)
store i8 0, i8* inttoptr (i64 20483 to i8*)
store i8 0, i8* inttoptr (i64 20480 to i8*)
store i8 0, i8* inttoptr (i64 20487 to i8*)
store i8 -128, i8* inttoptr (i64 20488 to i8*)
store i8 0, i8* inttoptr (i64 20485 to i8*)
store i8 100, i8* inttoptr (i64 20492 to i8*)
store i8 100, i8* inttoptr (i64 20493 to i8*)
store i8 100, i8* inttoptr (i64 20494 to i8*)
store i8 0, i8* inttoptr (i64 20490 to i8*)
store i8 1, i8* inttoptr (i64 20497 to i8*)
store i8 1, i8* inttoptr (i64 20498 to i8*)
store i8 1, i8* inttoptr (i64 20499 to i8*)
store i8 0, i8* inttoptr (i64 20495 to i8*)
store i8 32, i8* inttoptr (i64 20502 to i8*)
store i8 32, i8* inttoptr (i64 20503 to i8*)
store i8 32, i8* inttoptr (i64 20500 to i8*)
store i8 0, i8* inttoptr (i64 20512 to i8*)
store i8 0, i8* inttoptr (i64 20513 to i8*)
store i8 0, i8* inttoptr (i64 20510 to i8*)
ret void
}

LLVM IR (-O2):
define void @InitPortsIO() {
store i8 0, i8* inttoptr (i64 20482 to i8*)
store i8 0, i8* inttoptr (i64 20483 to i8*)
store i8 0, i8* inttoptr (i64 20480 to i8*)
store i8 0, i8* inttoptr (i64 20487 to i8*)
store i8 -128, i8* inttoptr (i64 20488 to i8*)
store i8 0, i8* inttoptr (i64 20485 to i8*)
store i8 100, i8* inttoptr (i64 20492 to i8*)
store i8 100, i8* inttoptr (i64 20493 to i8*)
store i8 100, i8* inttoptr (i64 20494 to i8*)
store i8 0, i8* inttoptr (i64 20490 to i8*)
store i8 1, i8* inttoptr (i64 20497 to i8*)
store i8 1, i8* inttoptr (i64 20498 to i8*)
store i8 1, i8* inttoptr (i64 20499 to i8*)
store i8 0, i8* inttoptr (i64 20495 to i8*)
store i8 32, i8* inttoptr (i64 20502 to i8*)
store i8 32, i8* inttoptr (i64 20503 to i8*)
store i8 32, i8* inttoptr (i64 20500 to i8*)
store i8 0, i8* inttoptr (i64 20512 to i8*)
store i8 0, i8* inttoptr (i64 20513 to i8*)
store i8 0, i8* inttoptr (i64 20510 to i8*)
ret void
}