#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 */

/* Variables and functions */
int /*<<< orphan*/ I2C_SLAVE_FORCE;
int /*<<< orphan*/ bin(int);
int /*<<< orphan*/ ioctl(int, int /*<<< orphan*/, int);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ read(int, char *, int);
int /*<<< orphan*/ write(int, char *, int);
void getStatus(int fd, int adr) {
  ioctl(fd, I2C_SLAVE_FORCE, adr);
  char regSTBY[1] = {0x02};
  char regMUTE[1] = {0x03};
  char regPLL[1] = {0x04};
  char regSRC[1] = {0x0D};
  char regMISS[1] = {0x25};
  char regI2S[1] = {0x28};
  char regDSP[1] = {0x2B};
  char regSAMR[1] = {0x5B};
  char bufSTBY[1] = {0};
  char bufMUTE[1] = {0};
  char bufPLL[1] = {0};
  char bufSRC[1] = {0};
  char bufMISS[1] = {0};
  char bufI2S[1] = {0};
  char bufDSP[1] = {0};
  char bufSAMR[1] = {0};
  write(fd, regSTBY, 1);
  read(fd, bufSTBY, 1);
  write(fd, regMUTE, 1);
  read(fd, bufMUTE, 1);
  write(fd, regPLL, 1);
  read(fd, bufPLL, 1);
  write(fd, regSRC, 1);
  read(fd, bufSRC, 1);
  write(fd, regMISS, 1);
  read(fd, bufMISS, 1);
  write(fd, regI2S, 1);
  read(fd, bufI2S, 1);
  write(fd, regDSP, 1);
  read(fd, bufDSP, 1);
  write(fd, regSAMR, 1);
  read(fd, bufSAMR, 1);
  printf("\n---------------------------------------------------------------");
  printf("\nNow printing out some register values of the DAC+/DSP on 0x%02x.",
         adr);
  printf("\nPlease refer to the datasheet for how to interpret them.\n");
  printf("---------------------------------------------------------------\n\n");
  printf("STANDBY\t\t(REG 02):\t");
  bin((int)bufSTBY[0]);
  printf("MUTE\t\t(REG 03):\t");
  bin((int)bufMUTE[0]);
  printf("PLL\t\t(REG 04):\t");
  bin((int)bufPLL[0]);
  printf("PLL SRC\t\t(REG 13):\t");
  bin((int)bufSRC[0]);
  printf("IGNORE M\t(REG 37):\t");
  bin((int)bufMISS[0]);
  printf("FMT + WORD\t(REG 40):\t");
  bin((int)bufI2S[0]);
  printf("DSP MODE\t(REG 43):\t");
  bin((int)bufDSP[0]);
  printf("S RATE\t\t(REG 91):\t");
  bin((int)bufSAMR[0]);
  printf("\n");
}


x86 assembly (clang, -O0):
<getStatus>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    -0x4(%rbp),%edi
mov    0x2e70(%rip),%rax
mov    (%rax),%esi
mov    -0x8(%rbp),%edx
call   1070 <ioctl@plt>
mov    0xe78(%rip),%al
mov    %al,-0x9(%rbp)
mov    0xe70(%rip),%al
mov    %al,-0xa(%rbp)
mov    0xe68(%rip),%al
mov    %al,-0xb(%rbp)
mov    0xe60(%rip),%al
mov    %al,-0xc(%rbp)
mov    0xe58(%rip),%al
mov    %al,-0xd(%rbp)
mov    0xe50(%rip),%al
mov    %al,-0xe(%rbp)
mov    0xe48(%rip),%al
mov    %al,-0xf(%rbp)
mov    0xe40(%rip),%al
mov    %al,-0x10(%rbp)
lea    -0x11(%rbp),%rdi
xor    %esi,%esi
mov    $0x1,%edx
call   1060 <memset@plt>
lea    -0x12(%rbp),%rdi
xor    %esi,%esi
mov    $0x1,%edx
call   1060 <memset@plt>
lea    -0x13(%rbp),%rdi
xor    %esi,%esi
mov    $0x1,%edx
call   1060 <memset@plt>
lea    -0x14(%rbp),%rdi
xor    %esi,%esi
mov    $0x1,%edx
call   1060 <memset@plt>
lea    -0x15(%rbp),%rdi
xor    %esi,%esi
mov    $0x1,%edx
call   1060 <memset@plt>
lea    -0x16(%rbp),%rdi
xor    %esi,%esi
mov    $0x1,%edx
call   1060 <memset@plt>
lea    -0x17(%rbp),%rdi
xor    %esi,%esi
mov    $0x1,%edx
call   1060 <memset@plt>
lea    -0x18(%rbp),%rdi
xor    %esi,%esi
mov    $0x1,%edx
call   1060 <memset@plt>
mov    -0x4(%rbp),%edi
lea    -0x9(%rbp),%rsi
mov    $0x1,%edx
call   1030 <write@plt>
mov    -0x4(%rbp),%edi
lea    -0x11(%rbp),%rsi
mov    $0x1,%edx
call   1080 <read@plt>
mov    -0x4(%rbp),%edi
lea    -0xa(%rbp),%rsi
mov    $0x1,%edx
call   1030 <write@plt>
mov    -0x4(%rbp),%edi
lea    -0x12(%rbp),%rsi
mov    $0x1,%edx
call   1080 <read@plt>
mov    -0x4(%rbp),%edi
lea    -0xb(%rbp),%rsi
mov    $0x1,%edx
call   1030 <write@plt>
mov    -0x4(%rbp),%edi
lea    -0x13(%rbp),%rsi
mov    $0x1,%edx
call   1080 <read@plt>
mov    -0x4(%rbp),%edi
lea    -0xc(%rbp),%rsi
mov    $0x1,%edx
call   1030 <write@plt>
mov    -0x4(%rbp),%edi
lea    -0x14(%rbp),%rsi
mov    $0x1,%edx
call   1080 <read@plt>
mov    -0x4(%rbp),%edi
lea    -0xd(%rbp),%rsi
mov    $0x1,%edx
call   1030 <write@plt>
mov    -0x4(%rbp),%edi
lea    -0x15(%rbp),%rsi
mov    $0x1,%edx
call   1080 <read@plt>
mov    -0x4(%rbp),%edi
lea    -0xe(%rbp),%rsi
mov    $0x1,%edx
call   1030 <write@plt>
mov    -0x4(%rbp),%edi
lea    -0x16(%rbp),%rsi
mov    $0x1,%edx
call   1080 <read@plt>
mov    -0x4(%rbp),%edi
lea    -0xf(%rbp),%rsi
mov    $0x1,%edx
call   1030 <write@plt>
mov    -0x4(%rbp),%edi
lea    -0x17(%rbp),%rsi
mov    $0x1,%edx
call   1080 <read@plt>
mov    -0x4(%rbp),%edi
lea    -0x10(%rbp),%rsi
mov    $0x1,%edx
call   1030 <write@plt>
mov    -0x4(%rbp),%edi
lea    -0x18(%rbp),%rsi
mov    $0x1,%edx
call   1080 <read@plt>
lea    0xca7(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x8(%rbp),%esi
lea    0xcd7(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xd0b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xd38(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xd6c(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movsbl -0x11(%rbp),%edi
call   1040 <bin@plt>
lea    0xd69(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movsbl -0x12(%rbp),%edi
call   1040 <bin@plt>
lea    0xd63(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movsbl -0x13(%rbp),%edi
call   1040 <bin@plt>
lea    0xd5c(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movsbl -0x14(%rbp),%edi
call   1040 <bin@plt>
lea    0xd59(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movsbl -0x15(%rbp),%edi
call   1040 <bin@plt>
lea    0xd56(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movsbl -0x16(%rbp),%edi
call   1040 <bin@plt>
lea    0xd55(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movsbl -0x17(%rbp),%edi
call   1040 <bin@plt>
lea    0xd52(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movsbl -0x18(%rbp),%edi
call   1040 <bin@plt>
lea    0xcb2(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<getStatus>:
push   %rbp
push   %rbx
sub    $0x18,%rsp
mov    %esi,%ebx
mov    %edi,%ebp
mov    0x2e67(%rip),%rax
mov    (%rax),%esi
mov    %ebx,%edx
call   1080 <ioctl@plt>
movb   $0x2,0x17(%rsp)
movb   $0x3,0x16(%rsp)
movb   $0x4,0x15(%rsp)
movb   $0xd,0x14(%rsp)
movb   $0x25,0x13(%rsp)
movb   $0x28,0x12(%rsp)
movb   $0x2b,0x11(%rsp)
movb   $0x5b,0x10(%rsp)
movb   $0x0,0xf(%rsp)
movb   $0x0,0xe(%rsp)
movb   $0x0,0xd(%rsp)
movb   $0x0,0xc(%rsp)
movb   $0x0,0xb(%rsp)
movb   $0x0,0xa(%rsp)
movb   $0x0,0x9(%rsp)
movb   $0x0,0x8(%rsp)
lea    0x17(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1050 <write@plt>
lea    0xf(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1090 <read@plt>
lea    0x16(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1050 <write@plt>
lea    0xe(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1090 <read@plt>
lea    0x15(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1050 <write@plt>
lea    0xd(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1090 <read@plt>
lea    0x14(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1050 <write@plt>
lea    0xc(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1090 <read@plt>
lea    0x13(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1050 <write@plt>
lea    0xb(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1090 <read@plt>
lea    0x12(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1050 <write@plt>
lea    0xa(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1090 <read@plt>
lea    0x11(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1050 <write@plt>
lea    0x9(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1090 <read@plt>
lea    0x10(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1050 <write@plt>
lea    0x8(%rsp),%rsi
mov    %ebp,%edi
mov    $0x1,%edx
call   1090 <read@plt>
lea    0xd0f(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xd42(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xe0e(%rip),%rdi
call   1040 <puts@plt>
lea    0xe3c(%rip),%rdi
call   1040 <puts@plt>
lea    0xd5c(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
movsbl 0xf(%rsp),%edi
call   1060 <bin@plt>
lea    0xd58(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
movsbl 0xe(%rsp),%edi
call   1060 <bin@plt>
lea    0xd51(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
movsbl 0xd(%rsp),%edi
call   1060 <bin@plt>
lea    0xd49(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
movsbl 0xc(%rsp),%edi
call   1060 <bin@plt>
lea    0xd45(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
movsbl 0xb(%rsp),%edi
call   1060 <bin@plt>
lea    0xd41(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
movsbl 0xa(%rsp),%edi
call   1060 <bin@plt>
lea    0xd3f(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
movsbl 0x9(%rsp),%edi
call   1060 <bin@plt>
lea    0xd3b(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
movsbl 0x8(%rsp),%edi
call   1060 <bin@plt>
mov    $0xa,%edi
add    $0x18,%rsp
pop    %rbx
pop    %rbp
jmp    1030 <putchar@plt>

LLVM IR (-O0):
@I2C_SLAVE_FORCE = global i32 0
@__const.getStatus.regSTBY = [1 x i8] c"\02"
@__const.getStatus.regMUTE = [1 x i8] c"\03"
@__const.getStatus.regPLL = [1 x i8] c"\04"
@__const.getStatus.regSRC = [1 x i8] c"\0D"
@__const.getStatus.regMISS = [1 x i8] c"%"
@__const.getStatus.regI2S = [1 x i8] c"("
@__const.getStatus.regDSP = [1 x i8] c"+"
@__const.getStatus.regSAMR = [1 x i8] c"["
@.str = [65 x i8] c"\0A---------------------------------------------------------------\00"
@.str.1 = [66 x i8] c"\0ANow printing out some register values of the DAC+/DSP on 0x%02x.\00"
@.str.2 = [59 x i8] c"\0APlease refer to the datasheet for how to interpret them.\0A\00"
@.str.3 = [66 x i8] c"---------------------------------------------------------------\0A\0A\00"
@.str.4 = [20 x i8] c"STANDBY\09\09(REG 02):\09\00"
@.str.5 = [17 x i8] c"MUTE\09\09(REG 03):\09\00"
@.str.6 = [16 x i8] c"PLL\09\09(REG 04):\09\00"
@.str.7 = [20 x i8] c"PLL SRC\09\09(REG 13):\09\00"
@.str.8 = [20 x i8] c"IGNORE M\09(REG 37):\09\00"
@.str.9 = [22 x i8] c"FMT + WORD\09(REG 40):\09\00"
@.str.10 = [20 x i8] c"DSP MODE\09(REG 43):\09\00"
@.str.11 = [19 x i8] c"S RATE\09\09(REG 91):\09\00"
@.str.12 = [2 x i8] c"\0A\00"
define void @getStatus(i32 %0, i32 %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca [1 x i8]
%6 = alloca [1 x i8]
%7 = alloca [1 x i8]
%8 = alloca [1 x i8]
%9 = alloca [1 x i8]
%10 = alloca [1 x i8]
%11 = alloca [1 x i8]
%12 = alloca [1 x i8]
%13 = alloca [1 x i8]
%14 = alloca [1 x i8]
%15 = alloca [1 x i8]
%16 = alloca [1 x i8]
%17 = alloca [1 x i8]
%18 = alloca [1 x i8]
%19 = alloca [1 x i8]
%20 = alloca [1 x i8]
store i32 %0, i32* %3
store i32 %1, i32* %4
%21 = load i32, i32* %3
%22 = load i32, i32* @I2C_SLAVE_FORCE
%23 = load i32, i32* %4
%24 = call i32 @ioctl(i32 %21, i32 %22, i32 %23)
%25 = bitcast [1 x i8]* %5 to i8*
%26 = bitcast [1 x i8]* %6 to i8*
%27 = bitcast [1 x i8]* %7 to i8*
%28 = bitcast [1 x i8]* %8 to i8*
%29 = bitcast [1 x i8]* %9 to i8*
%30 = bitcast [1 x i8]* %10 to i8*
%31 = bitcast [1 x i8]* %11 to i8*
%32 = bitcast [1 x i8]* %12 to i8*
%33 = bitcast [1 x i8]* %13 to i8*
%34 = bitcast [1 x i8]* %14 to i8*
%35 = bitcast [1 x i8]* %15 to i8*
%36 = bitcast [1 x i8]* %16 to i8*
%37 = bitcast [1 x i8]* %17 to i8*
%38 = bitcast [1 x i8]* %18 to i8*
%39 = bitcast [1 x i8]* %19 to i8*
%40 = bitcast [1 x i8]* %20 to i8*
%41 = load i32, i32* %3
%42 = getelementptr inbounds [1 x i8], [1 x i8]* %5, i64 0, i64 0
%43 = call i32 @write(i32 %41, i8* %42, i32 1)
%44 = load i32, i32* %3
%45 = getelementptr inbounds [1 x i8], [1 x i8]* %13, i64 0, i64 0
%46 = call i32 @read(i32 %44, i8* %45, i32 1)
%47 = load i32, i32* %3
%48 = getelementptr inbounds [1 x i8], [1 x i8]* %6, i64 0, i64 0
%49 = call i32 @write(i32 %47, i8* %48, i32 1)
%50 = load i32, i32* %3
%51 = getelementptr inbounds [1 x i8], [1 x i8]* %14, i64 0, i64 0
%52 = call i32 @read(i32 %50, i8* %51, i32 1)
%53 = load i32, i32* %3
%54 = getelementptr inbounds [1 x i8], [1 x i8]* %7, i64 0, i64 0
%55 = call i32 @write(i32 %53, i8* %54, i32 1)
%56 = load i32, i32* %3
%57 = getelementptr inbounds [1 x i8], [1 x i8]* %15, i64 0, i64 0
%58 = call i32 @read(i32 %56, i8* %57, i32 1)
%59 = load i32, i32* %3
%60 = getelementptr inbounds [1 x i8], [1 x i8]* %8, i64 0, i64 0
%61 = call i32 @write(i32 %59, i8* %60, i32 1)
%62 = load i32, i32* %3
%63 = getelementptr inbounds [1 x i8], [1 x i8]* %16, i64 0, i64 0
%64 = call i32 @read(i32 %62, i8* %63, i32 1)
%65 = load i32, i32* %3
%66 = getelementptr inbounds [1 x i8], [1 x i8]* %9, i64 0, i64 0
%67 = call i32 @write(i32 %65, i8* %66, i32 1)
%68 = load i32, i32* %3
%69 = getelementptr inbounds [1 x i8], [1 x i8]* %17, i64 0, i64 0
%70 = call i32 @read(i32 %68, i8* %69, i32 1)
%71 = load i32, i32* %3
%72 = getelementptr inbounds [1 x i8], [1 x i8]* %10, i64 0, i64 0
%73 = call i32 @write(i32 %71, i8* %72, i32 1)
%74 = load i32, i32* %3
%75 = getelementptr inbounds [1 x i8], [1 x i8]* %18, i64 0, i64 0
%76 = call i32 @read(i32 %74, i8* %75, i32 1)
%77 = load i32, i32* %3
%78 = getelementptr inbounds [1 x i8], [1 x i8]* %11, i64 0, i64 0
%79 = call i32 @write(i32 %77, i8* %78, i32 1)
%80 = load i32, i32* %3
%81 = getelementptr inbounds [1 x i8], [1 x i8]* %19, i64 0, i64 0
%82 = call i32 @read(i32 %80, i8* %81, i32 1)
%83 = load i32, i32* %3
%84 = getelementptr inbounds [1 x i8], [1 x i8]* %12, i64 0, i64 0
%85 = call i32 @write(i32 %83, i8* %84, i32 1)
%86 = load i32, i32* %3
%87 = getelementptr inbounds [1 x i8], [1 x i8]* %20, i64 0, i64 0
%88 = call i32 @read(i32 %86, i8* %87, i32 1)
%89 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str, i64 0, i64 0))
%90 = load i32, i32* %4
%91 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.1, i64 0, i64 0), i32 %90)
%92 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.2, i64 0, i64 0))
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([66 x i8], [66 x i8]* @.str.3, i64 0, i64 0))
%94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.4, i64 0, i64 0))
%95 = getelementptr inbounds [1 x i8], [1 x i8]* %13, i64 0, i64 0
%96 = load i8, i8* %95
%97 = sext i8 %96 to i32
%98 = call i32 @bin(i32 %97)
%99 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i64 0, i64 0))
%100 = getelementptr inbounds [1 x i8], [1 x i8]* %14, i64 0, i64 0
%101 = load i8, i8* %100
%102 = sext i8 %101 to i32
%103 = call i32 @bin(i32 %102)
%104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.6, i64 0, i64 0))
%105 = getelementptr inbounds [1 x i8], [1 x i8]* %15, i64 0, i64 0
%106 = load i8, i8* %105
%107 = sext i8 %106 to i32
%108 = call i32 @bin(i32 %107)
%109 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.7, i64 0, i64 0))
%110 = getelementptr inbounds [1 x i8], [1 x i8]* %16, i64 0, i64 0
%111 = load i8, i8* %110
%112 = sext i8 %111 to i32
%113 = call i32 @bin(i32 %112)
%114 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.8, i64 0, i64 0))
%115 = getelementptr inbounds [1 x i8], [1 x i8]* %17, i64 0, i64 0
%116 = load i8, i8* %115
%117 = sext i8 %116 to i32
%118 = call i32 @bin(i32 %117)
%119 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.9, i64 0, i64 0))
%120 = getelementptr inbounds [1 x i8], [1 x i8]* %18, i64 0, i64 0
%121 = load i8, i8* %120
%122 = sext i8 %121 to i32
%123 = call i32 @bin(i32 %122)
%124 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.10, i64 0, i64 0))
%125 = getelementptr inbounds [1 x i8], [1 x i8]* %19, i64 0, i64 0
%126 = load i8, i8* %125
%127 = sext i8 %126 to i32
%128 = call i32 @bin(i32 %127)
%129 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.11, i64 0, i64 0))
%130 = getelementptr inbounds [1 x i8], [1 x i8]* %20, i64 0, i64 0
%131 = load i8, i8* %130
%132 = sext i8 %131 to i32
%133 = call i32 @bin(i32 %132)
%134 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@I2C_SLAVE_FORCE = global i32 0
@.str = [65 x i8] c"\0A---------------------------------------------------------------\00"
@.str.1 = [66 x i8] c"\0ANow printing out some register values of the DAC+/DSP on 0x%02x.\00"
@.str.4 = [20 x i8] c"STANDBY\09\09(REG 02):\09\00"
@.str.5 = [17 x i8] c"MUTE\09\09(REG 03):\09\00"
@.str.6 = [16 x i8] c"PLL\09\09(REG 04):\09\00"
@.str.7 = [20 x i8] c"PLL SRC\09\09(REG 13):\09\00"
@.str.8 = [20 x i8] c"IGNORE M\09(REG 37):\09\00"
@.str.9 = [22 x i8] c"FMT + WORD\09(REG 40):\09\00"
@.str.10 = [20 x i8] c"DSP MODE\09(REG 43):\09\00"
@.str.11 = [19 x i8] c"S RATE\09\09(REG 91):\09\00"
@str = [58 x i8] c"\0APlease refer to the datasheet for how to interpret them.\00"
@str.13 = [65 x i8] c"---------------------------------------------------------------\0A\00"
define void @getStatus(i32 %0, i32 %1) {
%3 = alloca [1 x i8]
%4 = alloca [1 x i8]
%5 = alloca [1 x i8]
%6 = alloca [1 x i8]
%7 = alloca [1 x i8]
%8 = alloca [1 x i8]
%9 = alloca [1 x i8]
%10 = alloca [1 x i8]
%11 = alloca [1 x i8]
%12 = alloca [1 x i8]
%13 = alloca [1 x i8]
%14 = alloca [1 x i8]
%15 = alloca [1 x i8]
%16 = alloca [1 x i8]
%17 = alloca [1 x i8]
%18 = alloca [1 x i8]
%19 = load i32, i32* @I2C_SLAVE_FORCE
%20 = tail call i32 @ioctl(i32 %0, i32 %19, i32 %1)
%21 = getelementptr inbounds [1 x i8], [1 x i8]* %3, i64 0, i64 0
store i8 2, i8* %21
%22 = getelementptr inbounds [1 x i8], [1 x i8]* %4, i64 0, i64 0
store i8 3, i8* %22
%23 = getelementptr inbounds [1 x i8], [1 x i8]* %5, i64 0, i64 0
store i8 4, i8* %23
%24 = getelementptr inbounds [1 x i8], [1 x i8]* %6, i64 0, i64 0
store i8 13, i8* %24
%25 = getelementptr inbounds [1 x i8], [1 x i8]* %7, i64 0, i64 0
store i8 37, i8* %25
%26 = getelementptr inbounds [1 x i8], [1 x i8]* %8, i64 0, i64 0
store i8 40, i8* %26
%27 = getelementptr inbounds [1 x i8], [1 x i8]* %9, i64 0, i64 0
store i8 43, i8* %27
%28 = getelementptr inbounds [1 x i8], [1 x i8]* %10, i64 0, i64 0
store i8 91, i8* %28
%29 = getelementptr inbounds [1 x i8], [1 x i8]* %11, i64 0, i64 0
store i8 0, i8* %29
%30 = getelementptr inbounds [1 x i8], [1 x i8]* %12, i64 0, i64 0
store i8 0, i8* %30
%31 = getelementptr inbounds [1 x i8], [1 x i8]* %13, i64 0, i64 0
store i8 0, i8* %31
%32 = getelementptr inbounds [1 x i8], [1 x i8]* %14, i64 0, i64 0
store i8 0, i8* %32
%33 = getelementptr inbounds [1 x i8], [1 x i8]* %15, i64 0, i64 0
store i8 0, i8* %33
%34 = getelementptr inbounds [1 x i8], [1 x i8]* %16, i64 0, i64 0
store i8 0, i8* %34
%35 = getelementptr inbounds [1 x i8], [1 x i8]* %17, i64 0, i64 0
store i8 0, i8* %35
%36 = getelementptr inbounds [1 x i8], [1 x i8]* %18, i64 0, i64 0
store i8 0, i8* %36
%37 = call i32 @write(i32 %0, i8* %21, i32 1)
%38 = call i32 @read(i32 %0, i8* %29, i32 1)
%39 = call i32 @write(i32 %0, i8* %22, i32 1)
%40 = call i32 @read(i32 %0, i8* %30, i32 1)
%41 = call i32 @write(i32 %0, i8* %23, i32 1)
%42 = call i32 @read(i32 %0, i8* %31, i32 1)
%43 = call i32 @write(i32 %0, i8* %24, i32 1)
%44 = call i32 @read(i32 %0, i8* %32, i32 1)
%45 = call i32 @write(i32 %0, i8* %25, i32 1)
%46 = call i32 @read(i32 %0, i8* %33, i32 1)
%47 = call i32 @write(i32 %0, i8* %26, i32 1)
%48 = call i32 @read(i32 %0, i8* %34, i32 1)
%49 = call i32 @write(i32 %0, i8* %27, i32 1)
%50 = call i32 @read(i32 %0, i8* %35, i32 1)
%51 = call i32 @write(i32 %0, i8* %28, i32 1)
%52 = call i32 @read(i32 %0, i8* %36, i32 1)
%53 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([65 x i8], [65 x i8]* @.str, i64 0, i64 0))
%54 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @.str.1, i64 0, i64 0), i32 %1)
%55 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @str, i64 0, i64 0))
%56 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([65 x i8], [65 x i8]* @str.13, i64 0, i64 0))
%57 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.4, i64 0, i64 0))
%58 = load i8, i8* %29
%59 = sext i8 %58 to i32
%60 = tail call i32 @bin(i32 %59)
%61 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.5, i64 0, i64 0))
%62 = load i8, i8* %30
%63 = sext i8 %62 to i32
%64 = tail call i32 @bin(i32 %63)
%65 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.6, i64 0, i64 0))
%66 = load i8, i8* %31
%67 = sext i8 %66 to i32
%68 = tail call i32 @bin(i32 %67)
%69 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.7, i64 0, i64 0))
%70 = load i8, i8* %32
%71 = sext i8 %70 to i32
%72 = tail call i32 @bin(i32 %71)
%73 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.8, i64 0, i64 0))
%74 = load i8, i8* %33
%75 = sext i8 %74 to i32
%76 = tail call i32 @bin(i32 %75)
%77 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.9, i64 0, i64 0))
%78 = load i8, i8* %34
%79 = sext i8 %78 to i32
%80 = tail call i32 @bin(i32 %79)
%81 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.10, i64 0, i64 0))
%82 = load i8, i8* %35
%83 = sext i8 %82 to i32
%84 = tail call i32 @bin(i32 %83)
%85 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.11, i64 0, i64 0))
%86 = load i8, i8* %36
%87 = sext i8 %86 to i32
%88 = tail call i32 @bin(i32 %87)
%89 = tail call i32 @putchar(i32 10)
ret void
}