void audiohw_init(void) {
  (*(volatile unsigned short *)(0x38)) = (0x00),
                             (*(volatile unsigned short *)(0x39)) = 0;
  (*(volatile unsigned short *)(0x38)) = (0x01),
                             (*(volatile unsigned short *)(0x39)) = 0x0200;
  (*(volatile unsigned short *)(0x38)) = (0x02),
                             (*(volatile unsigned short *)(0x39)) = 0x00A0;
  (*(volatile unsigned short *)(0x38)) = (0x03),
                             (*(volatile unsigned short *)(0x39)) = 0x00A1;
  (*(volatile unsigned short *)(0x38)) = (0x04),
                             (*(volatile unsigned short *)(0x39)) = 0x00A0;
  (*(volatile unsigned short *)(0x38)) = (0x05),
                             (*(volatile unsigned short *)(0x39)) = 0x00A0;
  (*(volatile unsigned short *)(0x38)) = (0x06),
                             (*(volatile unsigned short *)(0x39)) = 0;
  (*(volatile unsigned short *)(0x38)) = (0x07),
                             (*(volatile unsigned short *)(0x39)) = 0x3000;
  (*(volatile unsigned short *)(0x38)) = (0x0e),
                             (*(volatile unsigned short *)(0x39)) = 0x000E - 8;
}


x86 assembly (clang, -O0):
<audiohw_init>:
push   %rbp
mov    %rsp,%rbp
mov    $0x38,%eax
movw   $0x0,(%rax)
mov    $0x39,%eax
movw   $0x0,(%rax)
mov    $0x38,%eax
movw   $0x1,(%rax)
mov    $0x39,%eax
movw   $0x200,(%rax)
mov    $0x38,%eax
movw   $0x2,(%rax)
mov    $0x39,%eax
movw   $0xa0,(%rax)
mov    $0x38,%eax
movw   $0x3,(%rax)
mov    $0x39,%eax
movw   $0xa1,(%rax)
mov    $0x38,%eax
movw   $0x4,(%rax)
mov    $0x39,%eax
movw   $0xa0,(%rax)
mov    $0x38,%eax
movw   $0x5,(%rax)
mov    $0x39,%eax
movw   $0xa0,(%rax)
mov    $0x38,%eax
movw   $0x6,(%rax)
mov    $0x39,%eax
movw   $0x0,(%rax)
mov    $0x38,%eax
movw   $0x7,(%rax)
mov    $0x39,%eax
movw   $0x3000,(%rax)
mov    $0x38,%eax
movw   $0xe,(%rax)
mov    $0x39,%eax
movw   $0x6,(%rax)
pop    %rbp
ret

x86 assembly (clang, -O2):
<audiohw_init>:
movw   $0x0,0x38
movw   $0x0,0x39
movw   $0x1,0x38
movw   $0x200,0x39
movw   $0x2,0x38
movw   $0xa0,0x39
movw   $0x3,0x38
movw   $0xa1,0x39
movw   $0x4,0x38
movw   $0xa0,0x39
movw   $0x5,0x38
movw   $0xa0,0x39
movw   $0x6,0x38
movw   $0x0,0x39
movw   $0x7,0x38
movw   $0x3000,0x39
movw   $0xe,0x38
movw   $0x6,0x39
ret

LLVM IR (-O0):
define void @audiohw_init() {
store volatile i16 0, i16* inttoptr (i64 56 to i16*)
store volatile i16 0, i16* inttoptr (i64 57 to i16*)
store volatile i16 1, i16* inttoptr (i64 56 to i16*)
store volatile i16 512, i16* inttoptr (i64 57 to i16*)
store volatile i16 2, i16* inttoptr (i64 56 to i16*)
store volatile i16 160, i16* inttoptr (i64 57 to i16*)
store volatile i16 3, i16* inttoptr (i64 56 to i16*)
store volatile i16 161, i16* inttoptr (i64 57 to i16*)
store volatile i16 4, i16* inttoptr (i64 56 to i16*)
store volatile i16 160, i16* inttoptr (i64 57 to i16*)
store volatile i16 5, i16* inttoptr (i64 56 to i16*)
store volatile i16 160, i16* inttoptr (i64 57 to i16*)
store volatile i16 6, i16* inttoptr (i64 56 to i16*)
store volatile i16 0, i16* inttoptr (i64 57 to i16*)
store volatile i16 7, i16* inttoptr (i64 56 to i16*)
store volatile i16 12288, i16* inttoptr (i64 57 to i16*)
store volatile i16 14, i16* inttoptr (i64 56 to i16*)
store volatile i16 6, i16* inttoptr (i64 57 to i16*)
ret void
}

LLVM IR (-O2):
define void @audiohw_init() {
store volatile i16 0, i16* inttoptr (i64 56 to i16*)
store volatile i16 0, i16* inttoptr (i64 57 to i16*)
store volatile i16 1, i16* inttoptr (i64 56 to i16*)
store volatile i16 512, i16* inttoptr (i64 57 to i16*)
store volatile i16 2, i16* inttoptr (i64 56 to i16*)
store volatile i16 160, i16* inttoptr (i64 57 to i16*)
store volatile i16 3, i16* inttoptr (i64 56 to i16*)
store volatile i16 161, i16* inttoptr (i64 57 to i16*)
store volatile i16 4, i16* inttoptr (i64 56 to i16*)
store volatile i16 160, i16* inttoptr (i64 57 to i16*)
store volatile i16 5, i16* inttoptr (i64 56 to i16*)
store volatile i16 160, i16* inttoptr (i64 57 to i16*)
store volatile i16 6, i16* inttoptr (i64 56 to i16*)
store volatile i16 0, i16* inttoptr (i64 57 to i16*)
store volatile i16 7, i16* inttoptr (i64 56 to i16*)
store volatile i16 12288, i16* inttoptr (i64 57 to i16*)
store volatile i16 14, i16* inttoptr (i64 56 to i16*)
store volatile i16 6, i16* inttoptr (i64 57 to i16*)
ret void
}